File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ #!/usr/bin/env python
2+
3+ """ Compare the output of two codecs.
4+
5+ (c) Copyright 2005, Marc-Andre Lemburg ([email protected] ). 6+
7+ Licensed to PSF under a Contributor Agreement.
8+
9+ """
10+ import sys
11+
12+ def compare_codecs (encoding1 , encoding2 ):
13+
14+ print 'Comparing encoding/decoding of %r and %r' % (encoding1 , encoding2 )
15+ mismatch = 0
16+ # Check encoding
17+ for i in range (sys .maxunicode ):
18+ u = unichr (i )
19+ try :
20+ c1 = u .encode (encoding1 )
21+ except UnicodeError , reason :
22+ c1 = '<undefined>'
23+ try :
24+ c2 = u .encode (encoding2 )
25+ except UnicodeError , reason :
26+ c2 = '<undefined>'
27+ if c1 != c2 :
28+ print ' * encoding mismatch for 0x%04X: %-14r != %r' % \
29+ (i , c1 , c2 )
30+ mismatch += 1
31+ # Check decoding
32+ for i in range (256 ):
33+ c = chr (i )
34+ try :
35+ u1 = c .decode (encoding1 )
36+ except UnicodeError :
37+ u1 = u'<undefined>'
38+ try :
39+ u2 = c .decode (encoding2 )
40+ except UnicodeError :
41+ u2 = u'<undefined>'
42+ if u1 != u2 :
43+ print ' * decoding mismatch for 0x%04X: %-14r != %r' % \
44+ (i , u1 , u2 )
45+ mismatch += 1
46+ if mismatch :
47+ print
48+ print 'Found %i mismatches' % mismatch
49+ else :
50+ print '-> Codecs are identical.'
51+
52+ if __name__ == '__main__' :
53+ compare_codecs (sys .argv [1 ], sys .argv [2 ])
Original file line number Diff line number Diff line change 1+ """ List all available codec modules.
2+
3+ (c) Copyright 2005, Marc-Andre Lemburg ([email protected] ). 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 , 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 ']'
You can’t perform that action at this time.
0 commit comments