Mercurial > repos > shellac > guppy_basecaller
comparison env/lib/python3.7/site-packages/jinja2/_compat.py @ 5:9b1c78e6ba9c draft default tip
"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
author | shellac |
---|---|
date | Mon, 01 Jun 2020 08:59:25 -0400 |
parents | 79f47841a781 |
children |
comparison
equal
deleted
inserted
replaced
4:79f47841a781 | 5:9b1c78e6ba9c |
---|---|
1 # -*- coding: utf-8 -*- | |
2 # flake8: noqa | |
3 import marshal | |
4 import sys | |
5 | |
6 PY2 = sys.version_info[0] == 2 | |
7 PYPY = hasattr(sys, "pypy_translation_info") | |
8 _identity = lambda x: x | |
9 | |
10 if not PY2: | |
11 unichr = chr | |
12 range_type = range | |
13 text_type = str | |
14 string_types = (str,) | |
15 integer_types = (int,) | |
16 | |
17 iterkeys = lambda d: iter(d.keys()) | |
18 itervalues = lambda d: iter(d.values()) | |
19 iteritems = lambda d: iter(d.items()) | |
20 | |
21 import pickle | |
22 from io import BytesIO, StringIO | |
23 | |
24 NativeStringIO = StringIO | |
25 | |
26 def reraise(tp, value, tb=None): | |
27 if value.__traceback__ is not tb: | |
28 raise value.with_traceback(tb) | |
29 raise value | |
30 | |
31 ifilter = filter | |
32 imap = map | |
33 izip = zip | |
34 intern = sys.intern | |
35 | |
36 implements_iterator = _identity | |
37 implements_to_string = _identity | |
38 encode_filename = _identity | |
39 | |
40 marshal_dump = marshal.dump | |
41 marshal_load = marshal.load | |
42 | |
43 else: | |
44 unichr = unichr | |
45 text_type = unicode | |
46 range_type = xrange | |
47 string_types = (str, unicode) | |
48 integer_types = (int, long) | |
49 | |
50 iterkeys = lambda d: d.iterkeys() | |
51 itervalues = lambda d: d.itervalues() | |
52 iteritems = lambda d: d.iteritems() | |
53 | |
54 import cPickle as pickle | |
55 from cStringIO import StringIO as BytesIO, StringIO | |
56 | |
57 NativeStringIO = BytesIO | |
58 | |
59 exec("def reraise(tp, value, tb=None):\n raise tp, value, tb") | |
60 | |
61 from itertools import imap, izip, ifilter | |
62 | |
63 intern = intern | |
64 | |
65 def implements_iterator(cls): | |
66 cls.next = cls.__next__ | |
67 del cls.__next__ | |
68 return cls | |
69 | |
70 def implements_to_string(cls): | |
71 cls.__unicode__ = cls.__str__ | |
72 cls.__str__ = lambda x: x.__unicode__().encode("utf-8") | |
73 return cls | |
74 | |
75 def encode_filename(filename): | |
76 if isinstance(filename, unicode): | |
77 return filename.encode("utf-8") | |
78 return filename | |
79 | |
80 def marshal_dump(code, f): | |
81 if isinstance(f, file): | |
82 marshal.dump(code, f) | |
83 else: | |
84 f.write(marshal.dumps(code)) | |
85 | |
86 def marshal_load(f): | |
87 if isinstance(f, file): | |
88 return marshal.load(f) | |
89 return marshal.loads(f.read()) | |
90 | |
91 | |
92 def with_metaclass(meta, *bases): | |
93 """Create a base class with a metaclass.""" | |
94 # This requires a bit of explanation: the basic idea is to make a | |
95 # dummy metaclass for one level of class instantiation that replaces | |
96 # itself with the actual metaclass. | |
97 class metaclass(type): | |
98 def __new__(cls, name, this_bases, d): | |
99 return meta(name, bases, d) | |
100 | |
101 return type.__new__(metaclass, "temporary_class", (), {}) | |
102 | |
103 | |
104 try: | |
105 from urllib.parse import quote_from_bytes as url_quote | |
106 except ImportError: | |
107 from urllib import quote as url_quote | |
108 | |
109 | |
110 try: | |
111 from collections import abc | |
112 except ImportError: | |
113 import collections as abc | |
114 | |
115 | |
116 try: | |
117 from os import fspath | |
118 except ImportError: | |
119 try: | |
120 from pathlib import PurePath | |
121 except ImportError: | |
122 PurePath = None | |
123 | |
124 def fspath(path): | |
125 if hasattr(path, "__fspath__"): | |
126 return path.__fspath__() | |
127 | |
128 # Python 3.5 doesn't have __fspath__ yet, use str. | |
129 if PurePath is not None and isinstance(path, PurePath): | |
130 return str(path) | |
131 | |
132 return path |