| 
									
										
										
										
											2017-08-26 18:53:49 +02:00
										 |  |  | import sys | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if sys.version_info < (3,): | 
					
						
							|  |  |  |     def isbasestring(s): | 
					
						
							|  |  |  |         return isinstance(s, basestring) | 
					
						
							|  |  |  |     def open_utf8(filename, mode): | 
					
						
							|  |  |  |         return open(filename, mode) | 
					
						
							|  |  |  |     def byte_to_str(x): | 
					
						
							|  |  |  |         return str(ord(x)) | 
					
						
							|  |  |  |     import cStringIO | 
					
						
							|  |  |  |     def StringIO(): | 
					
						
							|  |  |  |         return cStringIO.StringIO() | 
					
						
							|  |  |  |     def encode_utf8(x): | 
					
						
							|  |  |  |         return x | 
					
						
							| 
									
										
										
										
											2017-10-29 17:55:05 +01:00
										 |  |  |     def decode_utf8(x): | 
					
						
							|  |  |  |         return x | 
					
						
							| 
									
										
										
										
											2017-08-26 18:53:49 +02:00
										 |  |  |     def iteritems(d): | 
					
						
							|  |  |  |         return d.iteritems() | 
					
						
							| 
									
										
										
										
											2018-05-28 18:41:16 +01:00
										 |  |  |     def itervalues(d): | 
					
						
							|  |  |  |         return d.itervalues() | 
					
						
							| 
									
										
										
										
											2017-10-04 23:21:32 +02:00
										 |  |  |     def escape_string(s): | 
					
						
							|  |  |  |         if isinstance(s, unicode): | 
					
						
							|  |  |  |             s = s.encode('ascii') | 
					
						
							|  |  |  |         result = '' | 
					
						
							|  |  |  |         for c in s: | 
					
						
							|  |  |  |             if not (32 <= ord(c) < 127) or c in ('\\', '"'): | 
					
						
							|  |  |  |                 result += '\\%03o' % ord(c) | 
					
						
							|  |  |  |             else: | 
					
						
							|  |  |  |                 result += c | 
					
						
							|  |  |  |         return result | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-26 18:53:49 +02:00
										 |  |  | else: | 
					
						
							|  |  |  |     def isbasestring(s): | 
					
						
							|  |  |  |         return isinstance(s, (str, bytes)) | 
					
						
							|  |  |  |     def open_utf8(filename, mode): | 
					
						
							|  |  |  |         return open(filename, mode, encoding="utf-8") | 
					
						
							|  |  |  |     def byte_to_str(x): | 
					
						
							|  |  |  |         return str(x) | 
					
						
							|  |  |  |     import io | 
					
						
							|  |  |  |     def StringIO(): | 
					
						
							|  |  |  |         return io.StringIO() | 
					
						
							|  |  |  |     import codecs | 
					
						
							|  |  |  |     def encode_utf8(x): | 
					
						
							|  |  |  |         return codecs.utf_8_encode(x)[0] | 
					
						
							| 
									
										
										
										
											2017-10-29 17:55:05 +01:00
										 |  |  |     def decode_utf8(x): | 
					
						
							|  |  |  |         return codecs.utf_8_decode(x)[0] | 
					
						
							| 
									
										
										
										
											2017-08-26 18:53:49 +02:00
										 |  |  |     def iteritems(d): | 
					
						
							|  |  |  |         return iter(d.items()) | 
					
						
							| 
									
										
										
										
											2018-05-28 18:41:16 +01:00
										 |  |  |     def itervalues(d): | 
					
						
							|  |  |  |         return iter(d.values()) | 
					
						
							| 
									
										
										
										
											2017-10-04 23:21:32 +02:00
										 |  |  |     def charcode_to_c_escapes(c): | 
					
						
							|  |  |  |         rev_result = [] | 
					
						
							|  |  |  |         while c >= 256: | 
					
						
							|  |  |  |             c, low = (c // 256, c % 256) | 
					
						
							|  |  |  |             rev_result.append('\\%03o' % low) | 
					
						
							|  |  |  |         rev_result.append('\\%03o' % c) | 
					
						
							|  |  |  |         return ''.join(reversed(rev_result)) | 
					
						
							|  |  |  |     def escape_string(s): | 
					
						
							|  |  |  |         result = '' | 
					
						
							|  |  |  |         if isinstance(s, str): | 
					
						
							|  |  |  |             s = s.encode('utf-8') | 
					
						
							|  |  |  |         for c in s: | 
					
						
							|  |  |  |             if not(32 <= c < 127) or c in (ord('\\'), ord('"')): | 
					
						
							|  |  |  |                 result += charcode_to_c_escapes(c) | 
					
						
							|  |  |  |             else: | 
					
						
							|  |  |  |                 result += chr(c) | 
					
						
							|  |  |  |         return result | 
					
						
							|  |  |  | 
 |