[New-bugs-announce] [issue43037] Importlib reload by module name (String)
Stefan Mosoi
report at bugs.python.org
Wed Jan 27 07:14:36 EST 2021
New submission from Stefan Mosoi <st3f4n2006 at gmail.com>:
Weird behaviour (maybe it's my opinion) in reload from importlib
if i do:
import importlib
import sys
import datetime
importlib.reload(datetime.timedelta.__module__)
I get
Typeerror: reload() argument must be a module
but if i do
import importlib
import sys
import datetime
importlib.reload(sys.modules.get(datetime.timedelta.__module__))
it works.
The sys.modules.get i got from reload() code:
def reload(module)
if not module or not isinstance(module, types.ModuleType):
raise TypeError("reload() argument must be a module")
try:
name = module.__spec__.name
except AttributeError:
name = module.__name__
if sys.modules.get(name) is not module:
It wouldn't be easier to check if string do sys.modules.get ?
And as a bonus a reload_module function that gets a class (or anything with __module__ and reloads that module, no question asked?)
And i know it's easy to implement, but it would be nicer if was better handled in the lib :)
Notes (if it matters):
Python 3.9.1 x64 Windows
I didn't test on other versions.
----------
components: Library (Lib)
messages: 385765
nosy: st3f4n2006
priority: normal
severity: normal
status: open
title: Importlib reload by module name (String)
type: enhancement
versions: Python 3.9
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue43037>
_______________________________________
More information about the New-bugs-announce
mailing list