google-auth 2.55.2__tar.gz → 2.56.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. {google_auth-2.55.2/google_auth.egg-info → google_auth-2.56.1}/PKG-INFO +21 -15
  2. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/aio/transport/mtls.py +1 -5
  3. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/environment_vars.py +3 -0
  4. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/impersonated_credentials.py +5 -1
  5. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/jwt.py +11 -1
  6. google_auth-2.56.1/google/auth/transport/mtls.py +306 -0
  7. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/transport/requests.py +1 -5
  8. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/transport/urllib3.py +1 -5
  9. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/version.py +1 -1
  10. {google_auth-2.55.2 → google_auth-2.56.1}/google/oauth2/service_account.py +5 -1
  11. {google_auth-2.55.2 → google_auth-2.56.1/google_auth.egg-info}/PKG-INFO +21 -15
  12. {google_auth-2.55.2 → google_auth-2.56.1}/google_auth.egg-info/SOURCES.txt +1 -0
  13. google_auth-2.56.1/google_auth.egg-info/requires.txt +87 -0
  14. {google_auth-2.55.2 → google_auth-2.56.1}/setup.py +13 -6
  15. {google_auth-2.55.2 → google_auth-2.56.1}/tests/oauth2/test_service_account.py +4 -0
  16. {google_auth-2.55.2 → google_auth-2.56.1}/tests/test_impersonated_credentials.py +4 -0
  17. {google_auth-2.55.2 → google_auth-2.56.1}/tests/test_jwt.py +25 -2
  18. google_auth-2.56.1/tests/transport/aio/conftest.py +17 -0
  19. google_auth-2.55.2/tests/transport/aio/conftest.py → google_auth-2.56.1/tests/transport/aioresponses_compat.py +30 -10
  20. {google_auth-2.55.2 → google_auth-2.56.1}/tests/transport/test__mtls_helper.py +97 -0
  21. {google_auth-2.55.2 → google_auth-2.56.1}/tests/transport/test_aio_mtls_helper.py +1 -1
  22. google_auth-2.56.1/tests/transport/test_mtls.py +478 -0
  23. google_auth-2.55.2/google/auth/transport/mtls.py +0 -142
  24. google_auth-2.55.2/google_auth.egg-info/requires.txt +0 -61
  25. google_auth-2.55.2/tests/transport/test_mtls.py +0 -175
  26. {google_auth-2.55.2 → google_auth-2.56.1}/LICENSE +0 -0
  27. {google_auth-2.55.2 → google_auth-2.56.1}/MANIFEST.in +0 -0
  28. {google_auth-2.55.2 → google_auth-2.56.1}/README.rst +0 -0
  29. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/__init__.py +0 -0
  30. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/_agent_identity_utils.py +0 -0
  31. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/_cache.py +0 -0
  32. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/_cloud_sdk.py +0 -0
  33. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/_credentials_async.py +0 -0
  34. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/_credentials_base.py +0 -0
  35. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/_default.py +0 -0
  36. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/_default_async.py +0 -0
  37. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/_exponential_backoff.py +0 -0
  38. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/_helpers.py +0 -0
  39. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/_jwt_async.py +0 -0
  40. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/_oauth2client.py +0 -0
  41. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/_refresh_worker.py +0 -0
  42. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/_regional_access_boundary_utils.py +0 -0
  43. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/_service_account_info.py +0 -0
  44. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/aio/__init__.py +0 -0
  45. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/aio/_helpers.py +0 -0
  46. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/aio/credentials.py +0 -0
  47. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/aio/transport/__init__.py +0 -0
  48. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/aio/transport/aiohttp.py +0 -0
  49. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/aio/transport/sessions.py +0 -0
  50. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/api_key.py +0 -0
  51. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/app_engine.py +0 -0
  52. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/aws.py +0 -0
  53. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/compute_engine/__init__.py +0 -0
  54. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/compute_engine/_metadata.py +0 -0
  55. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/compute_engine/_mtls.py +0 -0
  56. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/compute_engine/credentials.py +0 -0
  57. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/credentials.py +0 -0
  58. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/crypt/__init__.py +0 -0
  59. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/crypt/_cryptography_rsa.py +0 -0
  60. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/crypt/_helpers.py +0 -0
  61. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/crypt/_python_rsa.py +0 -0
  62. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/crypt/base.py +0 -0
  63. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/crypt/es.py +0 -0
  64. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/crypt/es256.py +0 -0
  65. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/crypt/rsa.py +0 -0
  66. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/downscoped.py +0 -0
  67. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/exceptions.py +0 -0
  68. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/external_account.py +0 -0
  69. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/external_account_authorized_user.py +0 -0
  70. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/iam.py +0 -0
  71. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/identity_pool.py +0 -0
  72. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/metrics.py +0 -0
  73. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/pluggable.py +0 -0
  74. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/py.typed +0 -0
  75. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/transport/__init__.py +0 -0
  76. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/transport/_aiohttp_requests.py +0 -0
  77. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/transport/_custom_tls_signer.py +0 -0
  78. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/transport/_http_client.py +0 -0
  79. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/transport/_mtls_helper.py +0 -0
  80. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/transport/_requests_base.py +0 -0
  81. {google_auth-2.55.2 → google_auth-2.56.1}/google/auth/transport/grpc.py +0 -0
  82. {google_auth-2.55.2 → google_auth-2.56.1}/google/oauth2/__init__.py +0 -0
  83. {google_auth-2.55.2 → google_auth-2.56.1}/google/oauth2/_client.py +0 -0
  84. {google_auth-2.55.2 → google_auth-2.56.1}/google/oauth2/_client_async.py +0 -0
  85. {google_auth-2.55.2 → google_auth-2.56.1}/google/oauth2/_credentials_async.py +0 -0
  86. {google_auth-2.55.2 → google_auth-2.56.1}/google/oauth2/_id_token_async.py +0 -0
  87. {google_auth-2.55.2 → google_auth-2.56.1}/google/oauth2/_reauth_async.py +0 -0
  88. {google_auth-2.55.2 → google_auth-2.56.1}/google/oauth2/_service_account_async.py +0 -0
  89. {google_auth-2.55.2 → google_auth-2.56.1}/google/oauth2/challenges.py +0 -0
  90. {google_auth-2.55.2 → google_auth-2.56.1}/google/oauth2/credentials.py +0 -0
  91. {google_auth-2.55.2 → google_auth-2.56.1}/google/oauth2/gdch_credentials.py +0 -0
  92. {google_auth-2.55.2 → google_auth-2.56.1}/google/oauth2/id_token.py +0 -0
  93. {google_auth-2.55.2 → google_auth-2.56.1}/google/oauth2/py.typed +0 -0
  94. {google_auth-2.55.2 → google_auth-2.56.1}/google/oauth2/reauth.py +0 -0
  95. {google_auth-2.55.2 → google_auth-2.56.1}/google/oauth2/sts.py +0 -0
  96. {google_auth-2.55.2 → google_auth-2.56.1}/google/oauth2/utils.py +0 -0
  97. {google_auth-2.55.2 → google_auth-2.56.1}/google/oauth2/webauthn_handler.py +0 -0
  98. {google_auth-2.55.2 → google_auth-2.56.1}/google/oauth2/webauthn_handler_factory.py +0 -0
  99. {google_auth-2.55.2 → google_auth-2.56.1}/google/oauth2/webauthn_types.py +0 -0
  100. {google_auth-2.55.2 → google_auth-2.56.1}/google_auth.egg-info/dependency_links.txt +0 -0
  101. {google_auth-2.55.2 → google_auth-2.56.1}/google_auth.egg-info/top_level.txt +0 -0
  102. {google_auth-2.55.2 → google_auth-2.56.1}/setup.cfg +0 -0
  103. {google_auth-2.55.2 → google_auth-2.56.1}/tests/__init__.py +0 -0
  104. {google_auth-2.55.2 → google_auth-2.56.1}/tests/aio/test__helpers.py +0 -0
  105. {google_auth-2.55.2 → google_auth-2.56.1}/tests/compute_engine/__init__.py +0 -0
  106. {google_auth-2.55.2 → google_auth-2.56.1}/tests/compute_engine/data/smbios_product_name +0 -0
  107. {google_auth-2.55.2 → google_auth-2.56.1}/tests/compute_engine/data/smbios_product_name_non_google +0 -0
  108. {google_auth-2.55.2 → google_auth-2.56.1}/tests/compute_engine/test__metadata.py +0 -0
  109. {google_auth-2.55.2 → google_auth-2.56.1}/tests/compute_engine/test__mtls.py +0 -0
  110. {google_auth-2.55.2 → google_auth-2.56.1}/tests/compute_engine/test_credentials.py +0 -0
  111. {google_auth-2.55.2 → google_auth-2.56.1}/tests/conftest.py +0 -0
  112. {google_auth-2.55.2 → google_auth-2.56.1}/tests/crypt/__init__.py +0 -0
  113. {google_auth-2.55.2 → google_auth-2.56.1}/tests/crypt/test__cryptography_rsa.py +0 -0
  114. {google_auth-2.55.2 → google_auth-2.56.1}/tests/crypt/test__python_rsa.py +0 -0
  115. {google_auth-2.55.2 → google_auth-2.56.1}/tests/crypt/test_crypt.py +0 -0
  116. {google_auth-2.55.2 → google_auth-2.56.1}/tests/crypt/test_es.py +0 -0
  117. {google_auth-2.55.2 → google_auth-2.56.1}/tests/crypt/test_es256.py +0 -0
  118. {google_auth-2.55.2 → google_auth-2.56.1}/tests/crypt/test_rsa.py +0 -0
  119. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/authorized_user.json +0 -0
  120. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/authorized_user_cloud_sdk.json +0 -0
  121. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/authorized_user_cloud_sdk_with_quota_project_id.json +0 -0
  122. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/authorized_user_with_rapt_token.json +0 -0
  123. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/client_secrets.json +0 -0
  124. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/context_aware_metadata.json +0 -0
  125. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/enterprise_cert_invalid.json +0 -0
  126. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/enterprise_cert_valid.json +0 -0
  127. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/enterprise_cert_valid_provider.json +0 -0
  128. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/es256_privatekey.pem +0 -0
  129. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/es256_public_cert.pem +0 -0
  130. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/es256_publickey.pem +0 -0
  131. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/es256_service_account.json +0 -0
  132. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/es384_privatekey.pem +0 -0
  133. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/es384_public_cert.pem +0 -0
  134. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/es384_publickey.pem +0 -0
  135. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/es384_service_account.json +0 -0
  136. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/external_account_authorized_user.json +0 -0
  137. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/external_account_authorized_user_non_gdu.json +0 -0
  138. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/external_subject_token.json +0 -0
  139. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/external_subject_token.txt +0 -0
  140. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/gdch_service_account.json +0 -0
  141. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/impersonated_service_account_authorized_user_source.json +0 -0
  142. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/impersonated_service_account_external_account_authorized_user_source.json +0 -0
  143. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/impersonated_service_account_service_account_source.json +0 -0
  144. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/impersonated_service_account_with_quota_project.json +0 -0
  145. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/old_oauth_credentials_py3.pickle +0 -0
  146. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/other_cert.pem +0 -0
  147. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/pem_from_pkcs12.pem +0 -0
  148. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/privatekey.p12 +0 -0
  149. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/privatekey.pem +0 -0
  150. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/privatekey.pub +0 -0
  151. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/public_cert.pem +0 -0
  152. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/service_account.json +0 -0
  153. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/service_account_non_gdu.json +0 -0
  154. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/trust_chain_with_leaf.pem +0 -0
  155. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/trust_chain_without_leaf.pem +0 -0
  156. {google_auth-2.55.2 → google_auth-2.56.1}/tests/data/trust_chain_wrong_order.pem +0 -0
  157. {google_auth-2.55.2 → google_auth-2.56.1}/tests/oauth2/__init__.py +0 -0
  158. {google_auth-2.55.2 → google_auth-2.56.1}/tests/oauth2/test__client.py +0 -0
  159. {google_auth-2.55.2 → google_auth-2.56.1}/tests/oauth2/test_challenges.py +0 -0
  160. {google_auth-2.55.2 → google_auth-2.56.1}/tests/oauth2/test_credentials.py +0 -0
  161. {google_auth-2.55.2 → google_auth-2.56.1}/tests/oauth2/test_gdch_credentials.py +0 -0
  162. {google_auth-2.55.2 → google_auth-2.56.1}/tests/oauth2/test_id_token.py +0 -0
  163. {google_auth-2.55.2 → google_auth-2.56.1}/tests/oauth2/test_reauth.py +0 -0
  164. {google_auth-2.55.2 → google_auth-2.56.1}/tests/oauth2/test_sts.py +0 -0
  165. {google_auth-2.55.2 → google_auth-2.56.1}/tests/oauth2/test_utils.py +0 -0
  166. {google_auth-2.55.2 → google_auth-2.56.1}/tests/oauth2/test_webauthn_handler.py +0 -0
  167. {google_auth-2.55.2 → google_auth-2.56.1}/tests/oauth2/test_webauthn_handler_factory.py +0 -0
  168. {google_auth-2.55.2 → google_auth-2.56.1}/tests/oauth2/test_webauthn_types.py +0 -0
  169. {google_auth-2.55.2 → google_auth-2.56.1}/tests/test__cache.py +0 -0
  170. {google_auth-2.55.2 → google_auth-2.56.1}/tests/test__cloud_sdk.py +0 -0
  171. {google_auth-2.55.2 → google_auth-2.56.1}/tests/test__default.py +0 -0
  172. {google_auth-2.55.2 → google_auth-2.56.1}/tests/test__exponential_backoff.py +0 -0
  173. {google_auth-2.55.2 → google_auth-2.56.1}/tests/test__helpers.py +0 -0
  174. {google_auth-2.55.2 → google_auth-2.56.1}/tests/test__oauth2client.py +0 -0
  175. {google_auth-2.55.2 → google_auth-2.56.1}/tests/test__refresh_worker.py +0 -0
  176. {google_auth-2.55.2 → google_auth-2.56.1}/tests/test__regional_access_boundary_utils.py +0 -0
  177. {google_auth-2.55.2 → google_auth-2.56.1}/tests/test__service_account_info.py +0 -0
  178. {google_auth-2.55.2 → google_auth-2.56.1}/tests/test_agent_identity_utils.py +0 -0
  179. {google_auth-2.55.2 → google_auth-2.56.1}/tests/test_api_key.py +0 -0
  180. {google_auth-2.55.2 → google_auth-2.56.1}/tests/test_app_engine.py +0 -0
  181. {google_auth-2.55.2 → google_auth-2.56.1}/tests/test_aws.py +0 -0
  182. {google_auth-2.55.2 → google_auth-2.56.1}/tests/test_credentials.py +0 -0
  183. {google_auth-2.55.2 → google_auth-2.56.1}/tests/test_credentials_async.py +0 -0
  184. {google_auth-2.55.2 → google_auth-2.56.1}/tests/test_downscoped.py +0 -0
  185. {google_auth-2.55.2 → google_auth-2.56.1}/tests/test_exceptions.py +0 -0
  186. {google_auth-2.55.2 → google_auth-2.56.1}/tests/test_external_account.py +0 -0
  187. {google_auth-2.55.2 → google_auth-2.56.1}/tests/test_external_account_authorized_user.py +0 -0
  188. {google_auth-2.55.2 → google_auth-2.56.1}/tests/test_iam.py +0 -0
  189. {google_auth-2.55.2 → google_auth-2.56.1}/tests/test_identity_pool.py +0 -0
  190. {google_auth-2.55.2 → google_auth-2.56.1}/tests/test_metrics.py +0 -0
  191. {google_auth-2.55.2 → google_auth-2.56.1}/tests/test_packaging.py +0 -0
  192. {google_auth-2.55.2 → google_auth-2.56.1}/tests/test_pluggable.py +0 -0
  193. {google_auth-2.55.2 → google_auth-2.56.1}/tests/transport/__init__.py +0 -0
  194. {google_auth-2.55.2 → google_auth-2.56.1}/tests/transport/aio/test_aiohttp.py +0 -0
  195. {google_auth-2.55.2 → google_auth-2.56.1}/tests/transport/aio/test_sessions.py +0 -0
  196. {google_auth-2.55.2 → google_auth-2.56.1}/tests/transport/aio/test_sessions_mtls.py +0 -0
  197. {google_auth-2.55.2 → google_auth-2.56.1}/tests/transport/compliance.py +0 -0
  198. {google_auth-2.55.2 → google_auth-2.56.1}/tests/transport/test__custom_tls_signer.py +0 -0
  199. {google_auth-2.55.2 → google_auth-2.56.1}/tests/transport/test__http_client.py +0 -0
  200. {google_auth-2.55.2 → google_auth-2.56.1}/tests/transport/test_grpc.py +0 -0
  201. {google_auth-2.55.2 → google_auth-2.56.1}/tests/transport/test_requests.py +0 -0
  202. {google_auth-2.55.2 → google_auth-2.56.1}/tests/transport/test_urllib3.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: google-auth
3
- Version: 2.55.2
3
+ Version: 2.56.1
4
4
  Summary: Google Authentication Library
5
5
  Home-page: https://github.com/googleapis/google-cloud-python/tree/main/packages/google-auth
6
6
  Author: Google Cloud Platform
@@ -24,22 +24,27 @@ Classifier: Topic :: Internet :: WWW/HTTP
24
24
  Requires-Python: >=3.10
25
25
  License-File: LICENSE
26
26
  Requires-Dist: pyasn1-modules>=0.2.1
27
- Requires-Dist: cryptography>=38.0.3
27
+ Requires-Dist: cryptography>=38.0.3; python_version < "3.14"
28
+ Requires-Dist: cryptography>=41.0.5; python_version >= "3.14"
28
29
  Provides-Extra: cryptography
29
- Requires-Dist: cryptography>=38.0.3; extra == "cryptography"
30
+ Requires-Dist: cryptography>=38.0.3; python_version < "3.14" and extra == "cryptography"
31
+ Requires-Dist: cryptography>=41.0.5; python_version >= "3.14" and extra == "cryptography"
30
32
  Provides-Extra: pyopenssl
31
- Requires-Dist: cryptography>=38.0.3; extra == "pyopenssl"
33
+ Requires-Dist: cryptography>=38.0.3; python_version < "3.14" and extra == "pyopenssl"
34
+ Requires-Dist: cryptography>=41.0.5; python_version >= "3.14" and extra == "pyopenssl"
32
35
  Provides-Extra: aiohttp
33
- Requires-Dist: aiohttp<4.0.0,>=3.8.0; extra == "aiohttp"
34
- Requires-Dist: requests<3.0.0,>=2.20.0; extra == "aiohttp"
36
+ Requires-Dist: aiohttp<4.0.0,>=3.8.0; python_version < "3.14" and extra == "aiohttp"
37
+ Requires-Dist: aiohttp<4.0.0,>=3.9.0; python_version >= "3.14" and extra == "aiohttp"
38
+ Requires-Dist: requests<3.0.0,>=2.30.0; extra == "aiohttp"
35
39
  Provides-Extra: enterprise-cert
36
- Requires-Dist: cryptography>=38.0.3; extra == "enterprise-cert"
40
+ Requires-Dist: cryptography>=38.0.3; python_version < "3.14" and extra == "enterprise-cert"
41
+ Requires-Dist: cryptography>=41.0.5; python_version >= "3.14" and extra == "enterprise-cert"
37
42
  Provides-Extra: pyjwt
38
43
  Requires-Dist: pyjwt>=2.0; extra == "pyjwt"
39
44
  Provides-Extra: reauth
40
45
  Requires-Dist: pyu2f>=0.1.5; extra == "reauth"
41
46
  Provides-Extra: requests
42
- Requires-Dist: requests<3.0.0,>=2.20.0; extra == "requests"
47
+ Requires-Dist: requests<3.0.0,>=2.30.0; extra == "requests"
43
48
  Provides-Extra: testing
44
49
  Requires-Dist: grpcio<2.0.0,>=1.59.0; python_version < "3.14" and extra == "testing"
45
50
  Requires-Dist: grpcio<2.0.0,>=1.75.1; python_version >= "3.14" and extra == "testing"
@@ -51,17 +56,18 @@ Requires-Dist: pytest-cov; extra == "testing"
51
56
  Requires-Dist: pytest-localserver; extra == "testing"
52
57
  Requires-Dist: pyu2f>=0.1.5; extra == "testing"
53
58
  Requires-Dist: responses; extra == "testing"
54
- Requires-Dist: urllib3; extra == "testing"
55
- Requires-Dist: packaging; extra == "testing"
56
- Requires-Dist: aiohttp<4.0.0,>=3.8.0; extra == "testing"
57
- Requires-Dist: requests<3.0.0,>=2.20.0; extra == "testing"
59
+ Requires-Dist: urllib3<3.0.0,>=1.26.15; extra == "testing"
60
+ Requires-Dist: packaging>=20.0; extra == "testing"
61
+ Requires-Dist: aiohttp<4.0.0,>=3.8.0; python_version < "3.14" and extra == "testing"
62
+ Requires-Dist: aiohttp<4.0.0,>=3.9.0; python_version >= "3.14" and extra == "testing"
63
+ Requires-Dist: requests<3.0.0,>=2.30.0; extra == "testing"
58
64
  Requires-Dist: aioresponses; extra == "testing"
59
65
  Requires-Dist: pytest-asyncio; extra == "testing"
60
66
  Provides-Extra: urllib3
61
- Requires-Dist: urllib3; extra == "urllib3"
62
- Requires-Dist: packaging; extra == "urllib3"
67
+ Requires-Dist: urllib3<3.0.0,>=1.26.15; extra == "urllib3"
68
+ Requires-Dist: packaging>=20.0; extra == "urllib3"
63
69
  Provides-Extra: rsa
64
- Requires-Dist: rsa<5,>=3.1.4; extra == "rsa"
70
+ Requires-Dist: rsa<5,>=4.0.0; extra == "rsa"
65
71
  Provides-Extra: grpc
66
72
  Requires-Dist: grpcio<2.0.0,>=1.59.0; python_version < "3.14" and extra == "grpc"
67
73
  Requires-Dist: grpcio<2.0.0,>=1.75.1; python_version >= "3.14" and extra == "grpc"
@@ -55,11 +55,7 @@ def make_client_cert_ssl_context(
55
55
  ):
56
56
  context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH)
57
57
  if cert_path:
58
- password = (
59
- passphrase_val.decode("utf-8")
60
- if isinstance(passphrase_val, bytes)
61
- else passphrase_val
62
- )
58
+ password = passphrase_val
63
59
  context.load_cert_chain(
64
60
  certfile=cert_path,
65
61
  keyfile=key_path,
@@ -133,3 +133,6 @@ GOOGLE_API_PREVENT_AGENT_TOKEN_SHARING_FOR_GCP_SERVICES = (
133
133
  "GOOGLE_API_PREVENT_AGENT_TOKEN_SHARING_FOR_GCP_SERVICES"
134
134
  )
135
135
  """Environment variable to prevent agent token sharing for GCP services."""
136
+
137
+ GOOGLE_API_USE_MTLS_ENDPOINT = "GOOGLE_API_USE_MTLS_ENDPOINT"
138
+ """Environment variable controlling whether to use mTLS endpoint or not."""
@@ -362,8 +362,12 @@ class Credentials(
362
362
 
363
363
  Returns:
364
364
  Optional[str]: The URL for the Regional Access Boundary lookup endpoint, or None
365
- if the service account email is missing.
365
+ if the service account email is missing. Returns None if the subject is populated.
366
366
  """
367
+ if self._subject:
368
+ # RAB does not apply to Workspace User Accounts via Domain-wide Delegation.
369
+ return None
370
+
367
371
  if not self.service_account_email:
368
372
  _LOGGER.error(
369
373
  "Service account email is required to build the Regional Access Boundary lookup URL for impersonated credentials."
@@ -585,7 +585,17 @@ class Credentials(
585
585
  self.token, self.expiry = self._make_jwt()
586
586
 
587
587
  def _build_regional_access_boundary_lookup_url(self, request=None):
588
- """Builds the lookup URL using the service account's email address."""
588
+ """Builds the lookup URL using the service account's email address.
589
+
590
+ Returns None if the subject is populated.
591
+ """
592
+ # In jwt.Credentials, subject defaults to client_email (which is the issuer).
593
+ # We must check self._subject != self._issuer to correctly determine if
594
+ # Domain-Wide Delegation is active.
595
+ if self._subject and self._subject != self._issuer:
596
+ # RAB does not apply to Workspace User Accounts via Domain-wide Delegation.
597
+ return None
598
+
589
599
  if not self.signer_email:
590
600
  return None
591
601
 
@@ -0,0 +1,306 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ """Utilites for mutual TLS."""
16
+
17
+ import enum
18
+ import logging
19
+ from os import getenv
20
+ import ssl
21
+ from typing import Optional
22
+
23
+ from google.auth import environment_vars
24
+ from google.auth import exceptions
25
+ from google.auth.transport import _mtls_helper
26
+
27
+
28
+ _LOGGER = logging.getLogger(__name__)
29
+
30
+
31
+ class UseMtlsEndpointMode(enum.Enum):
32
+ ALWAYS = "always"
33
+ NEVER = "never"
34
+ AUTO = "auto"
35
+
36
+
37
+ def has_default_client_cert_source(include_context_aware=True):
38
+ """Check if default client SSL credentials exists on the device.
39
+
40
+ Args:
41
+ include_context_aware (bool): include_context_aware indicates if context_aware
42
+ path location will be checked or should it be skipped.
43
+
44
+ Returns:
45
+ bool: indicating if the default client cert source exists.
46
+ """
47
+ if (
48
+ include_context_aware
49
+ and _mtls_helper._check_config_path(_mtls_helper.CONTEXT_AWARE_METADATA_PATH)
50
+ is not None
51
+ ):
52
+ return True
53
+ if (
54
+ _mtls_helper._check_config_path(
55
+ _mtls_helper.CERTIFICATE_CONFIGURATION_DEFAULT_PATH
56
+ )
57
+ is not None
58
+ ):
59
+ return True
60
+ cert_config_path = getenv("GOOGLE_API_CERTIFICATE_CONFIG")
61
+ if (
62
+ cert_config_path
63
+ and _mtls_helper._check_config_path(cert_config_path) is not None
64
+ ):
65
+ return True
66
+ return False
67
+
68
+
69
+ def default_client_cert_source():
70
+ """Get a callback which returns the default client SSL credentials.
71
+
72
+ Returns:
73
+ Callable[[], [bytes, bytes]]: A callback which returns the default
74
+ client certificate bytes and private key bytes, both in PEM format.
75
+
76
+ Raises:
77
+ google.auth.exceptions.MutualTLSChannelError: If the default
78
+ client SSL credentials don't exist or are malformed.
79
+ """
80
+ if not has_default_client_cert_source(include_context_aware=True):
81
+ raise exceptions.MutualTLSChannelError(
82
+ "Default client cert source doesn't exist"
83
+ )
84
+
85
+ def callback():
86
+ try:
87
+ _, cert_bytes, key_bytes = _mtls_helper.get_client_cert_and_key()
88
+ except (OSError, RuntimeError, ValueError) as caught_exc:
89
+ new_exc = exceptions.MutualTLSChannelError(caught_exc)
90
+ raise new_exc from caught_exc
91
+
92
+ return cert_bytes, key_bytes
93
+
94
+ return callback
95
+
96
+
97
+ def default_client_encrypted_cert_source(cert_path, key_path):
98
+ """Get a callback which returns the default encrpyted client SSL credentials.
99
+
100
+ Args:
101
+ cert_path (str): The cert file path. The default client certificate will
102
+ be written to this file when the returned callback is called.
103
+ key_path (str): The key file path. The default encrypted client key will
104
+ be written to this file when the returned callback is called.
105
+
106
+ Returns:
107
+ Callable[[], [str, str, bytes]]: A callback which generates the default
108
+ client certificate, encrpyted private key and passphrase. It writes
109
+ the certificate and private key into the cert_path and key_path, and
110
+ returns the cert_path, key_path and passphrase bytes.
111
+
112
+ Raises:
113
+ google.auth.exceptions.MutualTLSChannelError: If any problem
114
+ occurs when loading or saving the client certificate and key.
115
+ """
116
+ if not has_default_client_cert_source(include_context_aware=True):
117
+ raise exceptions.MutualTLSChannelError(
118
+ "Default client encrypted cert source doesn't exist"
119
+ )
120
+
121
+ def callback():
122
+ try:
123
+ (
124
+ _,
125
+ cert_bytes,
126
+ key_bytes,
127
+ passphrase_bytes,
128
+ ) = _mtls_helper.get_client_ssl_credentials(generate_encrypted_key=True)
129
+ with open(cert_path, "wb") as cert_file:
130
+ cert_file.write(cert_bytes)
131
+ with open(key_path, "wb") as key_file:
132
+ key_file.write(key_bytes)
133
+ except (exceptions.ClientCertError, OSError) as caught_exc:
134
+ new_exc = exceptions.MutualTLSChannelError(caught_exc)
135
+ raise new_exc from caught_exc
136
+
137
+ return cert_path, key_path, passphrase_bytes
138
+
139
+ return callback
140
+
141
+
142
+ def should_use_client_cert():
143
+ """Returns boolean for whether the client certificate should be used for mTLS.
144
+
145
+ This is a wrapper around _mtls_helper.check_use_client_cert().
146
+ If GOOGLE_API_USE_CLIENT_CERTIFICATE is set to true or false, a corresponding
147
+ bool value will be returned
148
+ If GOOGLE_API_USE_CLIENT_CERTIFICATE is unset, the value will be inferred by
149
+ reading a file pointed at by GOOGLE_API_CERTIFICATE_CONFIG, and verifying it
150
+ contains a "workload" section. If so, the function will return True,
151
+ otherwise False.
152
+
153
+ Returns:
154
+ bool: indicating whether the client certificate should be used for mTLS.
155
+ """
156
+ return _mtls_helper.check_use_client_cert()
157
+
158
+
159
+ def _load_client_cert_into_context(
160
+ ctx: ssl.SSLContext,
161
+ cert_bytes: bytes,
162
+ key_bytes: bytes,
163
+ passphrase: Optional[bytes] = None,
164
+ ) -> None:
165
+ """Load a client certificate and key into an SSL context.
166
+
167
+ Args:
168
+ ctx (ssl.SSLContext): The SSL context to load the certificate and key into.
169
+ cert_bytes (bytes): The client certificate bytes in PEM format.
170
+ key_bytes (bytes): The client private key bytes in PEM format.
171
+ passphrase (Optional[bytes]): The passphrase for the client private key.
172
+
173
+ Raises:
174
+ google.auth.exceptions.MutualTLSChannelError: If the SSL context is invalid,
175
+ or if loading the certificate and key fails.
176
+ """
177
+ if not isinstance(ctx, ssl.SSLContext):
178
+ raise exceptions.MutualTLSChannelError(
179
+ "Failed to load client certificate and key for mTLS. The provided context "
180
+ "object is invalid or does not support loading certificate chains."
181
+ )
182
+
183
+ try:
184
+ with _mtls_helper.secure_cert_key_paths(
185
+ cert_bytes, key_bytes, passphrase=passphrase
186
+ ) as (
187
+ cert_path,
188
+ key_path,
189
+ passphrase_val,
190
+ ):
191
+ if cert_path is None or key_path is None:
192
+ raise exceptions.MutualTLSChannelError(
193
+ "Failed to generate temporary file paths for the client certificate and key."
194
+ )
195
+ ctx.load_cert_chain(
196
+ certfile=cert_path, keyfile=key_path, password=passphrase_val
197
+ )
198
+ except (
199
+ ssl.SSLError,
200
+ OSError,
201
+ ValueError,
202
+ RuntimeError,
203
+ TypeError,
204
+ ) as caught_exc:
205
+ new_exc = exceptions.MutualTLSChannelError(caught_exc)
206
+ raise new_exc from caught_exc
207
+
208
+
209
+ def load_default_client_cert(ctx: ssl.SSLContext) -> bool:
210
+ """Load the default client certificate and key into an SSL context if configured.
211
+
212
+ If client certificates are enabled and a default client certificate source is
213
+ found, the certificate and key are loaded into the SSL context.
214
+
215
+ Args:
216
+ ctx (ssl.SSLContext): The SSL context to load the default client certificate
217
+ and key into.
218
+
219
+ Returns:
220
+ bool: True if client certificates are enabled and the default client
221
+ certificate was successfully loaded. False if client certificates
222
+ are disabled or if no default certificate source is configured.
223
+
224
+ Raises:
225
+ google.auth.exceptions.MutualTLSChannelError: If the default client certificate
226
+ or key is malformed.
227
+ """
228
+ if not should_use_client_cert() or not has_default_client_cert_source():
229
+ return False
230
+ try:
231
+ (
232
+ has_cert,
233
+ cert_bytes,
234
+ key_bytes,
235
+ passphrase,
236
+ ) = _mtls_helper.get_client_ssl_credentials()
237
+ except (
238
+ exceptions.ClientCertError,
239
+ OSError,
240
+ RuntimeError,
241
+ ValueError,
242
+ ) as caught_exc:
243
+ new_exc = exceptions.MutualTLSChannelError(caught_exc)
244
+ raise new_exc from caught_exc
245
+ else:
246
+ if not has_cert:
247
+ return False
248
+ _load_client_cert_into_context(ctx, cert_bytes, key_bytes, passphrase)
249
+ return True
250
+
251
+
252
+ def get_default_ssl_context() -> Optional[ssl.SSLContext]:
253
+ """Get a default SSL context loaded with the default client certificate.
254
+
255
+ Returns:
256
+ ssl.SSLContext: An SSL context loaded with the default client
257
+ certificate, or None if client certificates are not configured
258
+ or available.
259
+
260
+ Raises:
261
+ google.auth.exceptions.MutualTLSChannelError: If the default client certificate
262
+ or key is malformed.
263
+ """
264
+ if not should_use_client_cert() or not has_default_client_cert_source():
265
+ return None
266
+
267
+ ctx = ssl.create_default_context(ssl.Purpose.SERVER_AUTH)
268
+ return ctx if load_default_client_cert(ctx) else None
269
+
270
+
271
+ def should_use_mtls_endpoint(
272
+ client_cert_available: Optional[bool] = None,
273
+ ) -> bool:
274
+ """Determine whether to use an mTLS endpoint.
275
+
276
+ This relies on the GOOGLE_API_USE_MTLS_ENDPOINT environment variable. If set to
277
+ "always", returns True. If set to "never", returns False. If set to "auto"
278
+ or unset, returns whether a client certificate is available.
279
+
280
+ Args:
281
+ client_cert_available (Optional[bool]): indicating if a client certificate
282
+ is available. If None, this is determined by checking if client
283
+ certificates are enabled using :func:`should_use_client_cert`.
284
+
285
+ Returns:
286
+ bool: indicating if an mTLS endpoint should be used.
287
+ """
288
+ if client_cert_available is None:
289
+ client_cert_available = should_use_client_cert()
290
+
291
+ use_mtls_endpoint = getenv(environment_vars.GOOGLE_API_USE_MTLS_ENDPOINT)
292
+ use_mtls_endpoint = (use_mtls_endpoint or "auto").strip().lower()
293
+ try:
294
+ mode = UseMtlsEndpointMode(use_mtls_endpoint)
295
+ except ValueError:
296
+ raise exceptions.MutualTLSChannelError(
297
+ f"Unsupported {environment_vars.GOOGLE_API_USE_MTLS_ENDPOINT} value "
298
+ f"'{use_mtls_endpoint}'. Accepted values: never, auto, always."
299
+ )
300
+
301
+ if mode == UseMtlsEndpointMode.ALWAYS:
302
+ return True
303
+ if mode == UseMtlsEndpointMode.NEVER:
304
+ return False
305
+ if mode == UseMtlsEndpointMode.AUTO:
306
+ return client_cert_available
@@ -224,11 +224,7 @@ class _MutualTlsAdapter(requests.adapters.HTTPAdapter):
224
224
  key_path,
225
225
  passphrase,
226
226
  ):
227
- password = (
228
- passphrase.decode("utf-8")
229
- if isinstance(passphrase, bytes)
230
- else passphrase
231
- )
227
+ password = passphrase
232
228
  ctx_poolmanager.load_cert_chain(
233
229
  certfile=cert_path,
234
230
  keyfile=key_path,
@@ -188,11 +188,7 @@ def _make_mutual_tls_http(cert, key):
188
188
  key_path,
189
189
  passphrase,
190
190
  ):
191
- password = (
192
- passphrase.decode("utf-8")
193
- if isinstance(passphrase, bytes)
194
- else passphrase
195
- )
191
+ password = passphrase
196
192
  ctx.load_cert_chain(
197
193
  certfile=cert_path,
198
194
  keyfile=key_path,
@@ -12,4 +12,4 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- __version__ = "2.55.2"
15
+ __version__ = "2.56.1"
@@ -514,8 +514,12 @@ class Credentials(
514
514
 
515
515
  Returns:
516
516
  Optional[str]: The URL for the Regional Access Boundary lookup endpoint, or None
517
- if the service account email is missing.
517
+ if the service account email is missing. Returns None if the subject is populated.
518
518
  """
519
+ if self._subject:
520
+ # RAB does not apply to Workspace User Accounts via Domain-wide Delegation.
521
+ return None
522
+
519
523
  if not self.service_account_email:
520
524
  _LOGGER.error(
521
525
  "Service account email is required to build the Regional Access Boundary lookup URL for service account credentials."
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: google-auth
3
- Version: 2.55.2
3
+ Version: 2.56.1
4
4
  Summary: Google Authentication Library
5
5
  Home-page: https://github.com/googleapis/google-cloud-python/tree/main/packages/google-auth
6
6
  Author: Google Cloud Platform
@@ -24,22 +24,27 @@ Classifier: Topic :: Internet :: WWW/HTTP
24
24
  Requires-Python: >=3.10
25
25
  License-File: LICENSE
26
26
  Requires-Dist: pyasn1-modules>=0.2.1
27
- Requires-Dist: cryptography>=38.0.3
27
+ Requires-Dist: cryptography>=38.0.3; python_version < "3.14"
28
+ Requires-Dist: cryptography>=41.0.5; python_version >= "3.14"
28
29
  Provides-Extra: cryptography
29
- Requires-Dist: cryptography>=38.0.3; extra == "cryptography"
30
+ Requires-Dist: cryptography>=38.0.3; python_version < "3.14" and extra == "cryptography"
31
+ Requires-Dist: cryptography>=41.0.5; python_version >= "3.14" and extra == "cryptography"
30
32
  Provides-Extra: pyopenssl
31
- Requires-Dist: cryptography>=38.0.3; extra == "pyopenssl"
33
+ Requires-Dist: cryptography>=38.0.3; python_version < "3.14" and extra == "pyopenssl"
34
+ Requires-Dist: cryptography>=41.0.5; python_version >= "3.14" and extra == "pyopenssl"
32
35
  Provides-Extra: aiohttp
33
- Requires-Dist: aiohttp<4.0.0,>=3.8.0; extra == "aiohttp"
34
- Requires-Dist: requests<3.0.0,>=2.20.0; extra == "aiohttp"
36
+ Requires-Dist: aiohttp<4.0.0,>=3.8.0; python_version < "3.14" and extra == "aiohttp"
37
+ Requires-Dist: aiohttp<4.0.0,>=3.9.0; python_version >= "3.14" and extra == "aiohttp"
38
+ Requires-Dist: requests<3.0.0,>=2.30.0; extra == "aiohttp"
35
39
  Provides-Extra: enterprise-cert
36
- Requires-Dist: cryptography>=38.0.3; extra == "enterprise-cert"
40
+ Requires-Dist: cryptography>=38.0.3; python_version < "3.14" and extra == "enterprise-cert"
41
+ Requires-Dist: cryptography>=41.0.5; python_version >= "3.14" and extra == "enterprise-cert"
37
42
  Provides-Extra: pyjwt
38
43
  Requires-Dist: pyjwt>=2.0; extra == "pyjwt"
39
44
  Provides-Extra: reauth
40
45
  Requires-Dist: pyu2f>=0.1.5; extra == "reauth"
41
46
  Provides-Extra: requests
42
- Requires-Dist: requests<3.0.0,>=2.20.0; extra == "requests"
47
+ Requires-Dist: requests<3.0.0,>=2.30.0; extra == "requests"
43
48
  Provides-Extra: testing
44
49
  Requires-Dist: grpcio<2.0.0,>=1.59.0; python_version < "3.14" and extra == "testing"
45
50
  Requires-Dist: grpcio<2.0.0,>=1.75.1; python_version >= "3.14" and extra == "testing"
@@ -51,17 +56,18 @@ Requires-Dist: pytest-cov; extra == "testing"
51
56
  Requires-Dist: pytest-localserver; extra == "testing"
52
57
  Requires-Dist: pyu2f>=0.1.5; extra == "testing"
53
58
  Requires-Dist: responses; extra == "testing"
54
- Requires-Dist: urllib3; extra == "testing"
55
- Requires-Dist: packaging; extra == "testing"
56
- Requires-Dist: aiohttp<4.0.0,>=3.8.0; extra == "testing"
57
- Requires-Dist: requests<3.0.0,>=2.20.0; extra == "testing"
59
+ Requires-Dist: urllib3<3.0.0,>=1.26.15; extra == "testing"
60
+ Requires-Dist: packaging>=20.0; extra == "testing"
61
+ Requires-Dist: aiohttp<4.0.0,>=3.8.0; python_version < "3.14" and extra == "testing"
62
+ Requires-Dist: aiohttp<4.0.0,>=3.9.0; python_version >= "3.14" and extra == "testing"
63
+ Requires-Dist: requests<3.0.0,>=2.30.0; extra == "testing"
58
64
  Requires-Dist: aioresponses; extra == "testing"
59
65
  Requires-Dist: pytest-asyncio; extra == "testing"
60
66
  Provides-Extra: urllib3
61
- Requires-Dist: urllib3; extra == "urllib3"
62
- Requires-Dist: packaging; extra == "urllib3"
67
+ Requires-Dist: urllib3<3.0.0,>=1.26.15; extra == "urllib3"
68
+ Requires-Dist: packaging>=20.0; extra == "urllib3"
63
69
  Provides-Extra: rsa
64
- Requires-Dist: rsa<5,>=3.1.4; extra == "rsa"
70
+ Requires-Dist: rsa<5,>=4.0.0; extra == "rsa"
65
71
  Provides-Extra: grpc
66
72
  Requires-Dist: grpcio<2.0.0,>=1.59.0; python_version < "3.14" and extra == "grpc"
67
73
  Requires-Dist: grpcio<2.0.0,>=1.75.1; python_version >= "3.14" and extra == "grpc"
@@ -181,6 +181,7 @@ tests/oauth2/test_webauthn_handler.py
181
181
  tests/oauth2/test_webauthn_handler_factory.py
182
182
  tests/oauth2/test_webauthn_types.py
183
183
  tests/transport/__init__.py
184
+ tests/transport/aioresponses_compat.py
184
185
  tests/transport/compliance.py
185
186
  tests/transport/test__custom_tls_signer.py
186
187
  tests/transport/test__http_client.py
@@ -0,0 +1,87 @@
1
+ pyasn1-modules>=0.2.1
2
+
3
+ [:python_version < "3.14"]
4
+ cryptography>=38.0.3
5
+
6
+ [:python_version >= "3.14"]
7
+ cryptography>=41.0.5
8
+
9
+ [aiohttp]
10
+ requests<3.0.0,>=2.30.0
11
+
12
+ [aiohttp:python_version < "3.14"]
13
+ aiohttp<4.0.0,>=3.8.0
14
+
15
+ [aiohttp:python_version >= "3.14"]
16
+ aiohttp<4.0.0,>=3.9.0
17
+
18
+ [cryptography]
19
+
20
+ [cryptography:python_version < "3.14"]
21
+ cryptography>=38.0.3
22
+
23
+ [cryptography:python_version >= "3.14"]
24
+ cryptography>=41.0.5
25
+
26
+ [enterprise_cert]
27
+
28
+ [enterprise_cert:python_version < "3.14"]
29
+ cryptography>=38.0.3
30
+
31
+ [enterprise_cert:python_version >= "3.14"]
32
+ cryptography>=41.0.5
33
+
34
+ [grpc]
35
+
36
+ [grpc:python_version < "3.14"]
37
+ grpcio<2.0.0,>=1.59.0
38
+
39
+ [grpc:python_version >= "3.14"]
40
+ grpcio<2.0.0,>=1.75.1
41
+
42
+ [pyjwt]
43
+ pyjwt>=2.0
44
+
45
+ [pyopenssl]
46
+
47
+ [pyopenssl:python_version < "3.14"]
48
+ cryptography>=38.0.3
49
+
50
+ [pyopenssl:python_version >= "3.14"]
51
+ cryptography>=41.0.5
52
+
53
+ [reauth]
54
+ pyu2f>=0.1.5
55
+
56
+ [requests]
57
+ requests<3.0.0,>=2.30.0
58
+
59
+ [rsa]
60
+ rsa<5,>=4.0.0
61
+
62
+ [testing]
63
+ flask
64
+ freezegun
65
+ pyjwt>=2.0
66
+ pytest
67
+ pytest-cov
68
+ pytest-localserver
69
+ pyu2f>=0.1.5
70
+ responses
71
+ urllib3<3.0.0,>=1.26.15
72
+ packaging>=20.0
73
+ requests<3.0.0,>=2.30.0
74
+ aioresponses
75
+ pytest-asyncio
76
+
77
+ [testing:python_version < "3.14"]
78
+ grpcio<2.0.0,>=1.59.0
79
+ aiohttp<4.0.0,>=3.8.0
80
+
81
+ [testing:python_version >= "3.14"]
82
+ grpcio<2.0.0,>=1.75.1
83
+ aiohttp<4.0.0,>=3.9.0
84
+
85
+ [urllib3]
86
+ urllib3<3.0.0,>=1.26.15
87
+ packaging>=20.0