Home | History | Annotate | Download | only in unicode
      1 """ List all available codec modules.
      2 
      3 (c) Copyright 2005, Marc-Andre Lemburg (mal (at] lemburg.com).
      4 
      5     Licensed to PSF under a Contributor Agreement.
      6 
      7 """
      8 
      9 import os, codecs, encodings
     10 
     11 _debug = 0
     12 
     13 def listcodecs(dir):
     14     names = []
     15     for filename in os.listdir(dir):
     16         if filename[-3:] != '.py':
     17             continue
     18         name = filename[:-3]
     19         # Check whether we've found a true codec
     20         try:
     21             codecs.lookup(name)
     22         except LookupError:
     23             # Codec not found
     24             continue
     25         except Exception as reason:
     26             # Probably an error from importing the codec; still it's
     27             # a valid code name
     28             if _debug:
     29                 print('* problem importing codec %r: %s' % \
     30                       (name, reason))
     31         names.append(name)
     32     return names
     33 
     34 
     35 if __name__ == '__main__':
     36     names = listcodecs(encodings.__path__[0])
     37     names.sort()
     38     print('all_codecs = [')
     39     for name in names:
     40         print('    %r,' % name)
     41     print(']')
     42