_cpcompat.py (5910B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\lib\cherrypy\_cpcompat.py 2 import os 3 import sys 4 if sys.version_info >= (3, 0): 5 bytestr = bytes 6 unicodestr = str 7 nativestr = unicodestr 8 basestring = (bytes, str) 9 10 def ntob(n, encoding = 'ISO-8859-1'): 11 return n.encode(encoding) 12 13 14 def ntou(n, encoding = 'ISO-8859-1'): 15 return n 16 17 18 from io import StringIO 19 from io import BytesIO 20 else: 21 bytestr = str 22 unicodestr = unicode 23 nativestr = bytestr 24 basestring = basestring 25 26 def ntob(n, encoding = 'ISO-8859-1'): 27 return n 28 29 30 def ntou(n, encoding = 'ISO-8859-1'): 31 return n.decode(encoding) 32 33 34 try: 35 from cStringIO import StringIO 36 except ImportError: 37 from StringIO import StringIO 38 39 BytesIO = StringIO 40 try: 41 set = set 42 except NameError: 43 from sets import Set as set 44 45 try: 46 from base64 import decodebytes as _base64_decodebytes 47 except ImportError: 48 from base64 import decodestring as _base64_decodebytes 49 50 def base64_decode(n, encoding = 'ISO-8859-1'): 51 if isinstance(n, unicodestr): 52 b = n.encode(encoding) 53 else: 54 b = n 55 b = _base64_decodebytes(b) 56 if nativestr is unicodestr: 57 return b.decode(encoding) 58 else: 59 return b 60 61 62 try: 63 from hashlib import md5 64 except ImportError: 65 from md5 import new as md5 66 67 try: 68 from hashlib import sha1 as sha 69 except ImportError: 70 from sha import new as sha 71 72 try: 73 sorted = sorted 74 except NameError: 75 76 def sorted(i): 77 i = i[:] 78 i.sort() 79 return i 80 81 82 try: 83 reversed = reversed 84 except NameError: 85 86 def reversed(x): 87 i = len(x) 88 while i > 0: 89 i -= 1 90 yield x[i] 91 92 93 try: 94 from urllib.parse import urljoin, urlencode 95 from urllib.parse import quote, quote_plus 96 from urllib.request import unquote, urlopen 97 from urllib.request import parse_http_list, parse_keqv_list 98 except ImportError: 99 from urlparse import urljoin 100 from urllib import urlencode, urlopen 101 from urllib import quote, quote_plus 102 from urllib import unquote 103 from urllib2 import parse_http_list, parse_keqv_list 104 105 try: 106 from threading import local as threadlocal 107 except ImportError: 108 from cherrypy._cpthreadinglocal import local as threadlocal 109 110 try: 111 dict.iteritems 112 iteritems = lambda d: d.iteritems() 113 copyitems = lambda d: d.items() 114 except AttributeError: 115 iteritems = lambda d: d.items() 116 copyitems = lambda d: list(d.items()) 117 118 try: 119 dict.iterkeys 120 iterkeys = lambda d: d.iterkeys() 121 copykeys = lambda d: d.keys() 122 except AttributeError: 123 iterkeys = lambda d: d.keys() 124 copykeys = lambda d: list(d.keys()) 125 126 try: 127 dict.itervalues 128 itervalues = lambda d: d.itervalues() 129 copyvalues = lambda d: d.values() 130 except AttributeError: 131 itervalues = lambda d: d.values() 132 copyvalues = lambda d: list(d.values()) 133 134 try: 135 import builtins 136 except ImportError: 137 import __builtin__ as builtins 138 139 try: 140 from Cookie import SimpleCookie, CookieError 141 from httplib import BadStatusLine, HTTPConnection, IncompleteRead, NotConnected 142 from BaseHTTPServer import BaseHTTPRequestHandler 143 try: 144 from httplib import HTTPSConnection 145 except ImportError: 146 pass 147 148 except ImportError: 149 from http.cookies import SimpleCookie, CookieError 150 from http.client import BadStatusLine, HTTPConnection, IncompleteRead, NotConnected 151 from http.server import BaseHTTPRequestHandler 152 try: 153 from http.client import HTTPSConnection 154 except ImportError: 155 pass 156 157 try: 158 xrange = xrange 159 except NameError: 160 xrange = range 161 162 import threading 163 if hasattr(threading.Thread, 'daemon'): 164 165 def get_daemon(t): 166 return t.daemon 167 168 169 def set_daemon(t, val): 170 t.daemon = val 171 172 173 else: 174 175 def get_daemon(t): 176 return t.isDaemon() 177 178 179 def set_daemon(t, val): 180 t.setDaemon(val) 181 182 183 try: 184 from email.utils import formatdate 185 186 def HTTPDate(timeval = None): 187 return formatdate(timeval, usegmt=True) 188 189 190 except ImportError: 191 from rfc822 import formatdate as HTTPDate 192 193 try: 194 from urllib.parse import unquote as parse_unquote 195 196 def unquote_qs(atom, encoding, errors = 'strict'): 197 return parse_unquote(atom.replace('+', ' '), encoding=encoding, errors=errors) 198 199 200 except ImportError: 201 from urllib import unquote as parse_unquote 202 203 def unquote_qs(atom, encoding, errors = 'strict'): 204 return parse_unquote(atom.replace('+', ' ')).decode(encoding, errors) 205 206 207 try: 208 import simplejson as json 209 json_decode = json.JSONDecoder().decode 210 json_encode = json.JSONEncoder().iterencode 211 except ImportError: 212 if sys.version_info >= (3, 0): 213 import json 214 json_decode = json.JSONDecoder().decode 215 _json_encode = json.JSONEncoder().iterencode 216 217 def json_encode(value): 218 for chunk in _json_encode(value): 219 yield chunk.encode('utf8') 220 221 222 elif sys.version_info >= (2, 6): 223 import json 224 json_decode = json.JSONDecoder().decode 225 json_encode = json.JSONEncoder().iterencode 226 else: 227 json = None 228 229 def json_decode(s): 230 raise ValueError('No JSON library is available') 231 232 233 def json_encode(s): 234 raise ValueError('No JSON library is available') 235 236 237 try: 238 import cPickle as pickle 239 except ImportError: 240 import pickle 241 242 try: 243 os.urandom(20) 244 import binascii 245 246 def random20(): 247 return binascii.hexlify(os.urandom(20)).decode('ascii') 248 249 250 except (AttributeError, NotImplementedError): 251 import random 252 253 def random20(): 254 return sha('%s' % random.random()).hexdigest() 255 256 257 try: 258 from _thread import get_ident as get_thread_ident 259 except ImportError: 260 from thread import get_ident as get_thread_ident 261 262 try: 263 next = next 264 except NameError: 265 266 def next(i): 267 return i.next()