| """A helper module that injects SecureTransport, on import. |
| |
| The import should be done as early as possible, to ensure all requests and |
| sessions (or whatever) are created after injecting SecureTransport. |
| |
| Note that we only do the injection on macOS, when the linked OpenSSL is too |
| old to handle TLSv1.2. |
| """ |
| |
| import sys |
| |
| |
| def inject_securetransport() -> None: |
| # Only relevant on macOS |
| if sys.platform != "darwin": |
| return |
| |
| try: |
| import ssl |
| except ImportError: |
| return |
| |
| # Checks for OpenSSL 1.0.1 |
| if ssl.OPENSSL_VERSION_NUMBER >= 0x1000100F: |
| return |
| |
| try: |
| from pip._vendor.urllib3.contrib import securetransport |
| except (ImportError, OSError): |
| return |
| |
| securetransport.inject_into_urllib3() |
| |
| |
| inject_securetransport() |