Source code

Revision control

Copy as Markdown

Other Tools

import inspect
def _bridge_build_meta():
import functools
import sys
from setuptools import build_meta
self_module = sys.modules[__name__]
for attr_name in build_meta.__all__:
attr_value = getattr(build_meta, attr_name)
if callable(attr_value):
setattr(self_module, attr_name, functools.partial(_expose_config_settings, attr_value))
class ActiveConfigSettings:
_current = {}
def __init__(self, config_settings):
self._config = config_settings
def __enter__(self):
type(self)._current = self._config
def __exit__(self, exc_type, exc_val, exc_tb):
type(self)._current = {}
@classmethod
def current(cls):
return cls._current
def _expose_config_settings(real_method, *args, **kwargs):
from contextlib import nullcontext
import inspect
sig = inspect.signature(real_method)
boundargs = sig.bind(*args, **kwargs)
config = boundargs.arguments.get('config_settings')
ctx = ActiveConfigSettings(config) if config else nullcontext()
with ctx:
return real_method(*args, **kwargs)
_bridge_build_meta()