Created
February 26, 2019 07:44
-
-
Save himaprasoonpt/6f741db3fef12e17f4c39da694568f36 to your computer and use it in GitHub Desktop.
Blocks system import inside function
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from functools import wraps | |
def block_imports(*imports): | |
def real_decorator(func): | |
@wraps(func) | |
def wrapper(*args, **kwargs): | |
saved = {} | |
import sys | |
for i in imports: | |
saved[i] = sys.modules[i] | |
sys.modules[i] = None | |
retval = func(*args, **kwargs) | |
for i in imports: | |
sys.modules[i] = saved[i] | |
return retval | |
return wrapper | |
return real_decorator | |
@block_imports("os") | |
def correct(): | |
try: | |
import os | |
except ModuleNotFoundError: | |
print("os cannot be imported") | |
correct() | |
import os | |
print("import succeded outside function") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment