init
This commit is contained in:
20
backend-django/backend/utils/functions.py
Normal file
20
backend-django/backend/utils/functions.py
Normal file
@@ -0,0 +1,20 @@
|
||||
import inspect
|
||||
import sys
|
||||
from typing import Callable
|
||||
|
||||
|
||||
def find_class(func: Callable):
|
||||
"""
|
||||
basé sur inspect._findclass mais plus robuste et qui prend en compte les fonctions locales
|
||||
note : la fonction doit avoir un module sinon None est renvoyé (ex : str => None)
|
||||
"""
|
||||
|
||||
cls = sys.modules.get(getattr(func, '__module__', None))
|
||||
if cls is None:
|
||||
return None
|
||||
for name in func.__qualname__.split('.')[:-1]:
|
||||
if name != '<locals>':
|
||||
cls = getattr(cls, name, None)
|
||||
if not inspect.isclass(cls):
|
||||
return None
|
||||
return cls
|
||||
Reference in New Issue
Block a user