NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

_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()