Skip to content

Commit

Permalink
Rewrite hy.macros._same_modules
Browse files Browse the repository at this point in the history
To avoid use of the deprecated `pkgutil.get_loader`, and to be more concise.
  • Loading branch information
Kodiologist committed May 27, 2023
1 parent d9a40dc commit 3467352
Showing 1 changed file with 14 additions and 24 deletions.
38 changes: 14 additions & 24 deletions hy/macros.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,33 +110,23 @@ def _same_modules(source_module, target_module):
if not (source_module or target_module):
return False

if target_module == source_module:
if target_module is source_module:
return True

def _get_filename(module):
filename = None
try:
if not inspect.ismodule(module):
loader = pkgutil.get_loader(module)
if isinstance(loader, importlib.machinery.SourceFileLoader):
filename = loader.get_filename()
else:
filename = inspect.getfile(module)
except (TypeError, ImportError):
pass

return filename

source_filename = _get_filename(source_module)
target_filename = _get_filename(target_module)
def get_filename(module):
if inspect.ismodule(module):
return inspect.getfile(module)
elif (
(spec := importlib.util.find_spec(module)) and
isinstance(spec.loader, importlib.machinery.SourceFileLoader)):
return spec.loader.get_filename()

return (
source_filename
and target_filename
and os.path.exists(source_filename)
and os.path.exists(target_filename)
and os.path.samefile(source_filename, target_filename)
)
try:
return os.path.samefile(
get_filename(source_module),
get_filename(target_module))
except (ValueError, TypeError, ImportError, FileNotFoundError):
return False


def derive_target_module(target_module, parent_frame):
Expand Down

0 comments on commit 3467352

Please sign in to comment.