17db96d56Sopenharmony_ci""" List all available codec modules.
27db96d56Sopenharmony_ci
37db96d56Sopenharmony_ci(c) Copyright 2005, Marc-Andre Lemburg (mal@lemburg.com).
47db96d56Sopenharmony_ci
57db96d56Sopenharmony_ci    Licensed to PSF under a Contributor Agreement.
67db96d56Sopenharmony_ci
77db96d56Sopenharmony_ci"""
87db96d56Sopenharmony_ci
97db96d56Sopenharmony_ciimport os, codecs, encodings
107db96d56Sopenharmony_ci
117db96d56Sopenharmony_ci_debug = 0
127db96d56Sopenharmony_ci
137db96d56Sopenharmony_cidef listcodecs(dir):
147db96d56Sopenharmony_ci    names = []
157db96d56Sopenharmony_ci    for filename in os.listdir(dir):
167db96d56Sopenharmony_ci        if filename[-3:] != '.py':
177db96d56Sopenharmony_ci            continue
187db96d56Sopenharmony_ci        name = filename[:-3]
197db96d56Sopenharmony_ci        # Check whether we've found a true codec
207db96d56Sopenharmony_ci        try:
217db96d56Sopenharmony_ci            codecs.lookup(name)
227db96d56Sopenharmony_ci        except LookupError:
237db96d56Sopenharmony_ci            # Codec not found
247db96d56Sopenharmony_ci            continue
257db96d56Sopenharmony_ci        except Exception as reason:
267db96d56Sopenharmony_ci            # Probably an error from importing the codec; still it's
277db96d56Sopenharmony_ci            # a valid code name
287db96d56Sopenharmony_ci            if _debug:
297db96d56Sopenharmony_ci                print('* problem importing codec %r: %s' % \
307db96d56Sopenharmony_ci                      (name, reason))
317db96d56Sopenharmony_ci        names.append(name)
327db96d56Sopenharmony_ci    return names
337db96d56Sopenharmony_ci
347db96d56Sopenharmony_ci
357db96d56Sopenharmony_ciif __name__ == '__main__':
367db96d56Sopenharmony_ci    names = listcodecs(encodings.__path__[0])
377db96d56Sopenharmony_ci    names.sort()
387db96d56Sopenharmony_ci    print('all_codecs = [')
397db96d56Sopenharmony_ci    for name in names:
407db96d56Sopenharmony_ci        print('    %r,' % name)
417db96d56Sopenharmony_ci    print(']')
42