3 C\$ @sndZddlZejddkZeedZddZeseZe Z e Z e fZ efZddZddZd dZddlZdd lmZmZeZdd d ZeZeZeZejZeZ eZ!eZ"neZe#Z e$Z e e#fZ ee%fZd dZddZddZddl&Zddl'mZmZeZe(dddl)mZmZmZeZddZ ddZ!ddZ"ddZ*yddl+m,Z-Wn"e.k rhddl/m0Z-YnXdS)a# jinja2._compat ~~~~~~~~~~~~~~ Some py2/py3 compatibility support based on a stripped down version of six so we don't have to depend on a specific version of it. :copyright: Copyright 2013 by the Jinja team, see AUTHORS. :license: BSD, see LICENSE for details. NZpypy_translation_infocCs|S)N)xrrf/private/var/folders/pf/wv4htv3x0qs2c2mp0dnn0kchsvlck3/T/pip-install-emcbgzcf/jinja2/jinja2/_compat.pysrcCs t|jS)N)iterkeys)drrrrscCs t|jS)N)rvalues)r rrrrscCs t|jS)N)ritems)r rrrrs)BytesIOStringIOcCs|j|k r|j||dS)N) __traceback__with_traceback)tpvaluetbrrrreraise#s  rcCs|jS)N)iterkeys)r rrrr8scCs|jS)N) itervalues)r rrrr9scCs|jS)N) iteritems)r rrrr:s)r r z5def reraise(tp, value, tb=None): raise tp, value, tb)imapizipifiltercCs|j|_|`|S)N)__next__next)clsrrrimplements_iteratorEsrcCs|j|_dd|_|S)NcSs|jjdS)Nzutf-8) __unicode__encode)rrrrrLsz&implements_to_string..)__str__r)rrrrimplements_to_stringJs r!cCst|tr|jdS|S)Nzutf-8) isinstanceunicoder)filenamerrrencode_filenameOs  r%cs&Gfdddt}tj|dfiS)z%Create a base class with a metaclass.cseZdZfddZdS)z!with_metaclass..metaclasscs ||S)Nr)rname this_basesr )basesmetarr__new__[sz)with_metaclass..metaclass.__new__N)__name__ __module__ __qualname__r*r)r(r)rr metaclassZsr.temporary_class)typer*)r)r(r.r)r(r)rwith_metaclassUsr1)quote_from_bytes)quote)N)1__doc__sys version_infoPY2hasattrZPYPY _identitychrunichrrangeZ range_typestr text_type string_typesint integer_typesrrrpickleior r ZNativeStringIOrfilterrmaprziprinternrr!r%r#xrangelongcPickle cStringIOexec itertoolsr1 urllib.parser2Z url_quote ImportErrorurllibr3rrrr s\