Поиск импорта функции глобальноPython

Программы на Python
Anonymous
Поиск импорта функции глобально

Сообщение Anonymous »

Я работаю над тестовым приспособлением для платформы slash, которое должно изменить поведение time.sleep. По причинам я не могу использовать pytest, поэтому пытаюсь внедрить собственную базовую поддержку обезьяньего исправления.
Я могу легко заменить time.sleep достаточно для вещей, которые просто импортируют время, но некоторые вещи делают это из time import Sleep до того, как будет создан экземпляр моего прибора. До сих пор я использую gc.get_referrers для отслеживания любых ссылок на сон перед их заменой:

Код: Выделить всё

self._real_sleep = time.sleep
for ref in gc.get_referrers(time.sleep):
if (isinstance(ref, dict)
and "__name__" in ref
and "sleep" in ref
and ref["sleep"] is self._real_sleep):
self._monkey_patch(ref)
На практике это работает, но выглядит очень некрасиво. У меня есть доступ к достаточно актуальному Python (в настоящее время 3.11), только ограниченная возможность добавлять сторонние зависимости. Есть ли лучший/более безопасный способ найти ссылки на вещь или исправить ее глобально, используя только методы стандартной библиотеки?


Подробнее здесь: https://stackoverflow.com/questions/790 ... n-globally

Вернуться в «Python»