compat.py
Go to the documentation of this file.
00001 # -*- coding: utf-8 -*-
00002 import sys
00003 import six
00004 from six import PY3
00005 from six import text_type
00006 from six.moves import http_cookies
00007 
00008 SimpleCookie = http_cookies.SimpleCookie
00009 CookieError = http_cookies.CookieError
00010 
00011 
00012 def to_bytes(value, charset='latin1'):
00013     if isinstance(value, text_type):
00014         return value.encode(charset)
00015     return value
00016 
00017 
00018 if PY3:  # pragma: no cover
00019     from html.entities import name2codepoint
00020     from urllib.parse import urlencode
00021     from urllib.parse import splittype
00022     from urllib.parse import splithost
00023     import urllib.parse as urlparse
00024 else:  # pragma: no cover
00025     from htmlentitydefs import name2codepoint  # noqa
00026     from urllib import splittype  # noqa
00027     from urllib import splithost  # noqa
00028     from urllib import urlencode  # noqa
00029     import urlparse  # noqa
00030 
00031 
00032 def print_stderr(value):
00033     if not PY3:
00034         if isinstance(value, text_type):
00035             value = value.encode('utf8')
00036     six.print_(value, file=sys.stderr)
00037 
00038 try:
00039     from collections import OrderedDict
00040 except ImportError:  # pragma: no cover
00041     from ordereddict import OrderedDict  # noqa
00042 
00043 
00044 def escape_cookie_value(value):
00045     """
00046     Escapes a value so that it can be safely stored in a cookie.
00047 
00048     """
00049     return '"' + ''.join(
00050         COOKIE_ESCAPE_CHAR_MAP.get(x, x) for x in value
00051     ) + '"'
00052 
00053 
00054 # A list of illegal characters in a cookie and the escaped equivalent.
00055 # Taken from Python's cookie module.
00056 COOKIE_ESCAPE_CHAR_MAP = {
00057     '\000' : '\\000',  '\001' : '\\001',  '\002' : '\\002',
00058     '\003' : '\\003',  '\004' : '\\004',  '\005' : '\\005',
00059     '\006' : '\\006',  '\007' : '\\007',  '\010' : '\\010',
00060     '\011' : '\\011',  '\012' : '\\012',  '\013' : '\\013',
00061     '\014' : '\\014',  '\015' : '\\015',  '\016' : '\\016',
00062     '\017' : '\\017',  '\020' : '\\020',  '\021' : '\\021',
00063     '\022' : '\\022',  '\023' : '\\023',  '\024' : '\\024',
00064     '\025' : '\\025',  '\026' : '\\026',  '\027' : '\\027',
00065     '\030' : '\\030',  '\031' : '\\031',  '\032' : '\\032',
00066     '\033' : '\\033',  '\034' : '\\034',  '\035' : '\\035',
00067     '\036' : '\\036',  '\037' : '\\037',
00068 
00069     # Because of the way browsers really handle cookies (as opposed
00070     # to what the RFC says) we also encode , and ;
00071 
00072     ',' : '\\054', ';' : '\\073',
00073 
00074     '"' : '\\"',       '\\' : '\\\\',
00075 
00076     '\177' : '\\177',  '\200' : '\\200',  '\201' : '\\201',
00077     '\202' : '\\202',  '\203' : '\\203',  '\204' : '\\204',
00078     '\205' : '\\205',  '\206' : '\\206',  '\207' : '\\207',
00079     '\210' : '\\210',  '\211' : '\\211',  '\212' : '\\212',
00080     '\213' : '\\213',  '\214' : '\\214',  '\215' : '\\215',
00081     '\216' : '\\216',  '\217' : '\\217',  '\220' : '\\220',
00082     '\221' : '\\221',  '\222' : '\\222',  '\223' : '\\223',
00083     '\224' : '\\224',  '\225' : '\\225',  '\226' : '\\226',
00084     '\227' : '\\227',  '\230' : '\\230',  '\231' : '\\231',
00085     '\232' : '\\232',  '\233' : '\\233',  '\234' : '\\234',
00086     '\235' : '\\235',  '\236' : '\\236',  '\237' : '\\237',
00087     '\240' : '\\240',  '\241' : '\\241',  '\242' : '\\242',
00088     '\243' : '\\243',  '\244' : '\\244',  '\245' : '\\245',
00089     '\246' : '\\246',  '\247' : '\\247',  '\250' : '\\250',
00090     '\251' : '\\251',  '\252' : '\\252',  '\253' : '\\253',
00091     '\254' : '\\254',  '\255' : '\\255',  '\256' : '\\256',
00092     '\257' : '\\257',  '\260' : '\\260',  '\261' : '\\261',
00093     '\262' : '\\262',  '\263' : '\\263',  '\264' : '\\264',
00094     '\265' : '\\265',  '\266' : '\\266',  '\267' : '\\267',
00095     '\270' : '\\270',  '\271' : '\\271',  '\272' : '\\272',
00096     '\273' : '\\273',  '\274' : '\\274',  '\275' : '\\275',
00097     '\276' : '\\276',  '\277' : '\\277',  '\300' : '\\300',
00098     '\301' : '\\301',  '\302' : '\\302',  '\303' : '\\303',
00099     '\304' : '\\304',  '\305' : '\\305',  '\306' : '\\306',
00100     '\307' : '\\307',  '\310' : '\\310',  '\311' : '\\311',
00101     '\312' : '\\312',  '\313' : '\\313',  '\314' : '\\314',
00102     '\315' : '\\315',  '\316' : '\\316',  '\317' : '\\317',
00103     '\320' : '\\320',  '\321' : '\\321',  '\322' : '\\322',
00104     '\323' : '\\323',  '\324' : '\\324',  '\325' : '\\325',
00105     '\326' : '\\326',  '\327' : '\\327',  '\330' : '\\330',
00106     '\331' : '\\331',  '\332' : '\\332',  '\333' : '\\333',
00107     '\334' : '\\334',  '\335' : '\\335',  '\336' : '\\336',
00108     '\337' : '\\337',  '\340' : '\\340',  '\341' : '\\341',
00109     '\342' : '\\342',  '\343' : '\\343',  '\344' : '\\344',
00110     '\345' : '\\345',  '\346' : '\\346',  '\347' : '\\347',
00111     '\350' : '\\350',  '\351' : '\\351',  '\352' : '\\352',
00112     '\353' : '\\353',  '\354' : '\\354',  '\355' : '\\355',
00113     '\356' : '\\356',  '\357' : '\\357',  '\360' : '\\360',
00114     '\361' : '\\361',  '\362' : '\\362',  '\363' : '\\363',
00115     '\364' : '\\364',  '\365' : '\\365',  '\366' : '\\366',
00116     '\367' : '\\367',  '\370' : '\\370',  '\371' : '\\371',
00117     '\372' : '\\372',  '\373' : '\\373',  '\374' : '\\374',
00118     '\375' : '\\375',  '\376' : '\\376',  '\377' : '\\377'
00119     }


webtest
Author(s): AlexV
autogenerated on Sat Mar 25 2017 03:32:05