| 
									
										
										
										
											2005-10-21 13:47:03 +00:00
										 |  |  | """ List all available codec modules.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | (c) Copyright 2005, Marc-Andre Lemburg (mal@lemburg.com). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Licensed to PSF under a Contributor Agreement. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import os, codecs, encodings | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | _debug = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def listcodecs(dir): | 
					
						
							|  |  |  |     names = [] | 
					
						
							|  |  |  |     for filename in os.listdir(dir): | 
					
						
							|  |  |  |         if filename[-3:] != '.py': | 
					
						
							|  |  |  |             continue | 
					
						
							|  |  |  |         name = filename[:-3] | 
					
						
							|  |  |  |         # Check whether we've found a true codec | 
					
						
							|  |  |  |         try: | 
					
						
							|  |  |  |             codecs.lookup(name) | 
					
						
							|  |  |  |         except LookupError: | 
					
						
							|  |  |  |             # Codec not found | 
					
						
							|  |  |  |             continue | 
					
						
							| 
									
										
										
										
											2007-01-10 16:19:56 +00:00
										 |  |  |         except Exception as reason: | 
					
						
							| 
									
										
										
										
											2005-10-21 13:47:03 +00:00
										 |  |  |             # Probably an error from importing the codec; still it's | 
					
						
							|  |  |  |             # a valid code name | 
					
						
							|  |  |  |             if _debug: | 
					
						
							| 
									
										
										
										
											2007-08-03 17:06:41 +00:00
										 |  |  |                 print('* problem importing codec %r: %s' % \ | 
					
						
							|  |  |  |                       (name, reason)) | 
					
						
							| 
									
										
										
										
											2005-10-21 13:47:03 +00:00
										 |  |  |         names.append(name) | 
					
						
							|  |  |  |     return names | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == '__main__': | 
					
						
							|  |  |  |     names = listcodecs(encodings.__path__[0]) | 
					
						
							|  |  |  |     names.sort() | 
					
						
							| 
									
										
										
										
											2007-08-03 17:06:41 +00:00
										 |  |  |     print('all_codecs = [') | 
					
						
							| 
									
										
										
										
											2005-10-21 13:47:03 +00:00
										 |  |  |     for name in names: | 
					
						
							| 
									
										
										
										
											2007-08-03 17:06:41 +00:00
										 |  |  |         print('    %r,' % name) | 
					
						
							|  |  |  |     print(']') |