Files
transcrevezap/.venv/Lib/site-packages/pip_system_certs/bootstrap.py
2024-11-29 13:51:10 -03:00

72 lines
2.5 KiB
Python

import sys
import site
_registered = False
def _register_bootstrap_functions():
# This should in practice only ever be called once, but protect
# outselves just in case it is somehow called a second time.
global _registered
if _registered:
return
try:
_registered = True
# Now discover and register post import hook
#
# It should be safe to import wrapt at this point as this code
# will be executed after all module search path has been setup.
# This will register the patches
from . import wrapt_requests
except Exception as ex:
print("pip_system_certs: ERROR: could not register module:", ex)
def _execsitecustomize_wrapper(wrapped):
def _execsitecustomize(*args, **kwargs):
try:
return wrapped(*args, **kwargs)
finally:
# Check whether 'usercustomize' support is actually disabled.
# In that case we do our work after 'sitecustomize' is loaded.
if not site.ENABLE_USER_SITE:
_register_bootstrap_functions()
return _execsitecustomize
def _execusercustomize_wrapper(wrapped):
def _execusercustomize(*args, **kwargs):
try:
return wrapped(*args, **kwargs)
finally:
_register_bootstrap_functions()
return _execusercustomize
def bootstrap():
# We want to do our real work as the very last thing in the 'site'
# module when it is being imported so that the module search path is
# initialised properly. What is the last thing executed depends on
# whether 'usercustomize' module support is enabled. Such support
# will not be enabled in Python virtual enviromments. We therefore
# wrap the functions for the loading of both the 'sitecustomize' and
# 'usercustomize' modules but detect when 'usercustomize' support is
# disabled and in that case do what we need to after 'sitecustomize'
# is loaded.
#
# In wrapping these functions though, we can't actually use wrapt
# to do so. This is because depending on how wrapt was installed it
# may technically be dependent on '.pth' evaluation for Python to
# know where to import it from. The addition of the directory which
# contains wrapt may not yet have been done. We thus use a simple
# function wrapper instead.
site.execsitecustomize = _execsitecustomize_wrapper(site.execsitecustomize)
site.execusercustomize = _execusercustomize_wrapper(site.execusercustomize)