pygame / dll.py

Diff from to
 
 """DLL specifics"""
 
+# Some definitions:
+#   Library name (name): An internal identifier, a string, for a library.
+#       e.g. FONT
+#   Library file root (root): The library root used in linker -l options.
+#       e.g. SDL_mixer
+   
 import re
 
 # Table of dependencies.
-# Name, File root name, File regex, Dependency list of file root names
-dependencies = [
-    ('MIXER', 'SDL_mixer',  r'(lib){0,1}SDL_mixer\.dll$', ['SDL', 'vorbisfile', 'smpeg']),
-    ('VORBISFILE', 'vorbisfile',  r'(lib){0,1}vorbisfile(-3){0,1}\.dll$',  ['vorbis']),
+# name, root, File regex, Dependency list of file root names
+libraries = [
+    ('MIXER', 'SDL_mixer', r'(lib){0,1}SDL_mixer\.dll$',
+     ['SDL', 'vorbisfile', 'smpeg']),
+    ('VORBISFILE', 'vorbisfile',  r'(lib){0,1}vorbisfile(-3){0,1}\.dll$',
+     ['vorbis']),
     ('VORBIS', 'vorbis', r'(lib){0,1}vorbis(-0){0,1}\.dll$', ['ogg']),
     ('OGG', 'ogg', r'(lib){0,1}ogg(-0){0,1}\.dll$', []),
     ('SMPEG', 'smpeg', r'(lib){0,1}smpeg\.dll$', ['SDL']),
-    ('IMAGE', 'SDL_image', r'(lib){0,1}SDL_image\.dll$', ['SDL', 'jpeg', 'png', 'tiff']),
+    ('IMAGE', 'SDL_image', r'(lib){0,1}SDL_image\.dll$',
+     ['SDL', 'jpeg', 'png', 'tiff']),
     ('TIFF', 'tiff', r'(lib){0,1}tiff\.dll$',  ['jpeg', 'z']),
     ('JPEG', 'jpeg', r'(lib){0,1}jpeg\.dll$', []),
     ('PNG', 'png', r'(lib){0,1}png(1[23])\.dll$', ['z']),
     ('SDL', 'SDL', r'(lib){0,1}SDL\.dll$', [])
 ]
 
-# regexs: Maps name to regex.
-# lib_dependencies: Maps file root name to list of dependencies.
-# file_root_name: Maps name to root name.
+# regexs: Maps name to DLL file name regex.
+# lib_dependencies: Maps name to list of dependencies.
+# file_root_names: Maps name to root.
 
 regexs = {}
 lib_dependencies = {}
 file_root_names = {}
-for name, root, regex, deps in dependencies:
+for name, root, regex, deps in libraries:
     regexs[name] = regex
     lib_dependencies[root] = deps
     file_root_names[name] = root
+del name, root, regex, deps
 
 def tester(name):
-    def test(f):
-        return match(f) is not None
+    """For a library name return a function which tests dll file names"""
+    
+    def test(file_name):
+        """Return true if file name f is a valid DLL name"""
+        
+        return match(file_name) is not None
+
     match =  re.compile(regexs[name], re.I).match
+    test.library_name = name  # Available for debugging.
     return test
 
-def dependencies(libs):
-    r = {}
-    for lib in libs:
+def dependencies(roots):
+    """Return a set of dependencies for the list of library file roots
+
+    The return set is a dictionary keyed on library root name with values of 1.
+    """
+
+    root_set = {}
+    for root in roots:
         try:
-            deps = lib_dependencies[lib]
+            deps = lib_dependencies[root]
         except KeyError:
             pass
         else:
-            r[lib] = 1
-            r.update(dependencies(deps))
-    return r
+            root_set[root] = 1
+            root_set.update(dependencies(deps))
+    return root_set
 
 def name_to_root(name):
+    """Return the library file root for the library name"""
+    
     return file_root_names[name]
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.