Patchwork [2,of,8] import-checker: fix names of dynamically loaded modules

mail settings
Submitter Mads Kiilerich
Date Jan. 20, 2014, 12:32 a.m.
Message ID <ae7f49d0e3918ba9f899.1390177946@localhost.localdomain>
Download mbox | patch
Permalink /patch/3388/
State Superseded
Commit 4990abb4729d71acedb92bda7ae84909ef98a1ba
Headers show


Mads Kiilerich - Jan. 20, 2014, 12:32 a.m.
# HG changeset patch
# User Mads Kiilerich <>
# Date 1390147816 -3600
#      Sun Jan 19 17:10:16 2014 +0100
# Node ID ae7f49d0e3918ba9f899c8c4d6c976ba9f1fc30d
# Parent  3a963f886a2374b0221c73cdcba4e4bac2981852
import-checker: fix names of dynamically loaded modules

The import checker found standard library modules like lib-dynload/
but saw that as a zlibmodule module, not as the zlib module.

Debian ships Python with most modules built in and the incorrect handling of
dynamic modules did thus not cause problems.

Fedora ships Python with as many modules as possible loaded dynamically. That
made the import checker tests fail with incorrect classification of the
following modules: array fcntl grp itertools time zlib.


diff --git a/contrib/ b/contrib/
--- a/contrib/
+++ b/contrib/
@@ -11,12 +11,15 @@  import zlib
 def dotted_name_of_path(path):
     """Given a relative path to a source file, return its dotted module name.
     >>> dotted_name_of_path('mercurial/')
+    >>> dotted_name_of_path('')
+    'zlib'
     parts = path.split('/')
     parts[-1] = parts[-1][:-3] # remove .py
+    if parts[-1].endswith('module'):
+        parts[-1] = parts[-1][:-6]
     return '.'.join(parts)