]> git.madduck.net Git - etc/vim.git/blob - tests/expression.py

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

Only use trailing commas in function signatures when it's safe
[etc/vim.git] / tests / expression.py
1 ...
2 'some_string'
3 b'\\xa3'
4 Name
5 None
6 True
7 False
8 1
9 1.0
10 1j
11 True or False
12 True or False or None
13 True and False
14 True and False and None
15 (Name1 and Name2) or Name3
16 Name1 and Name2 or Name3
17 Name1 or (Name2 and Name3)
18 Name1 or Name2 and Name3
19 (Name1 and Name2) or (Name3 and Name4)
20 Name1 and Name2 or Name3 and Name4
21 Name1 or (Name2 and Name3) or Name4
22 Name1 or Name2 and Name3 or Name4
23 v1 << 2
24 1 >> v2
25 1 % finished
26 1 + v2 - v3 * 4 ^ 5 ** v6 / 7 // 8
27 ((1 + v2) - (v3 * 4)) ^ (((5 ** v6) / 7) // 8)
28 not great
29 ~great
30 +value
31 -1
32 ~int and not v1 ^ 123 + v2 | True
33 (~int) and (not ((v1 ^ (123 + v2)) | True))
34 flags & ~ select.EPOLLIN and waiters.write_task is not None
35 lambda arg: None
36 lambda a=True: a
37 lambda a, b, c=True: a
38 lambda a, b, c=True, *, d=(1 << v2), e='str': a
39 lambda a, b, c=True, *vararg, d=(v1 << 2), e='str', **kwargs: a + b
40 1 if True else 2
41 str or None if True else str or bytes or None
42 (str or None) if True else (str or bytes or None)
43 str or None if (1 if True else 2) else str or bytes or None
44 (str or None) if (1 if True else 2) else (str or bytes or None)
45 {'2.7': dead, '3.7': (long_live or die_hard)}
46 {'2.7': dead, '3.7': (long_live or die_hard), **{'3.6': verygood}}
47 {**a, **b, **c}
48 {'2.7', '3.6', '3.7', '3.8', '3.9', ('4.0' if gilectomy else '3.10')}
49 ({'a': 'b'}, (True or False), (+value), 'string', b'bytes') or None
50 ()
51 (1,)
52 (1, 2)
53 (1, 2, 3)
54 []
55 [1, 2, 3, 4, 5, 6, 7, 8, 9, (10 or A), (11 or B), (12 or C)]
56 {i for i in (1, 2, 3)}
57 {(i ** 2) for i in (1, 2, 3)}
58 {(i ** 2) for i, _ in ((1, 'a'), (2, 'b'), (3, 'c'))}
59 {((i ** 2) + j) for i in (1, 2, 3) for j in (1, 2, 3)}
60 [i for i in (1, 2, 3)]
61 [(i ** 2) for i in (1, 2, 3)]
62 [(i ** 2) for i, _ in ((1, 'a'), (2, 'b'), (3, 'c'))]
63 [((i ** 2) + j) for i in (1, 2, 3) for j in (1, 2, 3)]
64 {i: 0 for i in (1, 2, 3)}
65 {i: j for i, j in ((1, 'a'), (2, 'b'), (3, 'c'))}
66 {k: v for k, v in this_is_a_very_long_variable_which_will_cause_a_trailing_comma_which_breaks_the_comprehension}
67 Python3 > Python2 > COBOL
68 Life is Life
69 call()
70 call(arg)
71 call(kwarg='hey')
72 call(arg, kwarg='hey')
73 call(arg, another, kwarg='hey', **kwargs)
74 call(this_is_a_very_long_variable_which_will_force_a_delimiter_split, arg, another, kwarg='hey', **kwargs)  # note: no trailing comma pre-3.6
75 lukasz.langa.pl
76 call.me(maybe)
77 1 .real
78 1.0 .real
79 ....__class__
80 list[str]
81 dict[str, int]
82 tuple[str, ...]
83 tuple[str, int, float, dict[str, int]]
84 slice[0]
85 slice[0:1]
86 slice[0:1:2]
87 slice[:]
88 slice[:-1]
89 slice[1:]
90 slice[::-1]
91 (str or None) if (sys.version_info[0] > (3,)) else (str or bytes or None)
92 {'2.7': dead, '3.7': long_live or die_hard}
93 {'2.7', '3.6', '3.7', '3.8', '3.9', '4.0' if gilectomy else '3.10'}
94 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10 or A, 11 or B, 12 or C]
95 (SomeName)
96 SomeName
97 (Good, Bad, Ugly)
98 (i for i in (1, 2, 3))
99 ((i ** 2) for i in (1, 2, 3))
100 ((i ** 2) for i, _ in ((1, 'a'), (2, 'b'), (3, 'c')))
101 (((i ** 2) + j) for i in (1, 2, 3) for j in (1, 2, 3))
102 (*starred)
103 a = (1,)
104 b = 1,
105 c = 1
106 d = (1,) + a + (2,)
107 what_is_up_with_those_new_coord_names = (coord_names + set(vars_to_create)) + set(vars_to_remove)
108 what_is_up_with_those_new_coord_names = (coord_names | set(vars_to_create)) - set(vars_to_remove)
109
110
111 def gen():
112     yield from outside_of_generator
113     a = (yield)
114
115
116 async def f():
117     await some.complicated[0].call(with_args=(True or (1 is not 1)))
118
119
120 # output
121
122
123 ...
124 'some_string'
125 b'\\xa3'
126 Name
127 None
128 True
129 False
130 1
131 1.0
132 1j
133 True or False
134 True or False or None
135 True and False
136 True and False and None
137 (Name1 and Name2) or Name3
138 Name1 and Name2 or Name3
139 Name1 or (Name2 and Name3)
140 Name1 or Name2 and Name3
141 (Name1 and Name2) or (Name3 and Name4)
142 Name1 and Name2 or Name3 and Name4
143 Name1 or (Name2 and Name3) or Name4
144 Name1 or Name2 and Name3 or Name4
145 v1 << 2
146 1 >> v2
147 1 % finished
148 1 + v2 - v3 * 4 ^ 5 ** v6 / 7 // 8
149 ((1 + v2) - (v3 * 4)) ^ (((5 ** v6) / 7) // 8)
150 not great
151 ~great
152 +value
153 -1
154 ~int and not v1 ^ 123 + v2 | True
155 (~int) and (not ((v1 ^ (123 + v2)) | True))
156 flags & ~select.EPOLLIN and waiters.write_task is not None
157 lambda arg: None
158 lambda a=True: a
159 lambda a, b, c=True: a
160 lambda a, b, c=True, *, d=(1 << v2), e='str': a
161 lambda a, b, c=True, *vararg, d=(v1 << 2), e='str', **kwargs: a + b
162 1 if True else 2
163 str or None if True else str or bytes or None
164 (str or None) if True else (str or bytes or None)
165 str or None if (1 if True else 2) else str or bytes or None
166 (str or None) if (1 if True else 2) else (str or bytes or None)
167 {'2.7': dead, '3.7': (long_live or die_hard)}
168 {'2.7': dead, '3.7': (long_live or die_hard), **{'3.6': verygood}}
169 {**a, **b, **c}
170 {'2.7', '3.6', '3.7', '3.8', '3.9', ('4.0' if gilectomy else '3.10')}
171 ({'a': 'b'}, (True or False), (+value), 'string', b'bytes') or None
172 ()
173 (1,)
174 (1, 2)
175 (1, 2, 3)
176 []
177 [1, 2, 3, 4, 5, 6, 7, 8, 9, (10 or A), (11 or B), (12 or C)]
178 {i for i in (1, 2, 3)}
179 {(i ** 2) for i in (1, 2, 3)}
180 {(i ** 2) for i, _ in ((1, 'a'), (2, 'b'), (3, 'c'))}
181 {((i ** 2) + j) for i in (1, 2, 3) for j in (1, 2, 3)}
182 [i for i in (1, 2, 3)]
183 [(i ** 2) for i in (1, 2, 3)]
184 [(i ** 2) for i, _ in ((1, 'a'), (2, 'b'), (3, 'c'))]
185 [((i ** 2) + j) for i in (1, 2, 3) for j in (1, 2, 3)]
186 {i: 0 for i in (1, 2, 3)}
187 {i: j for i, j in ((1, 'a'), (2, 'b'), (3, 'c'))}
188 {
189     k: v
190     for k, v in this_is_a_very_long_variable_which_will_cause_a_trailing_comma_which_breaks_the_comprehension
191 }
192 Python3 > Python2 > COBOL
193 Life is Life
194 call()
195 call(arg)
196 call(kwarg='hey')
197 call(arg, kwarg='hey')
198 call(arg, another, kwarg='hey', **kwargs)
199 call(
200     this_is_a_very_long_variable_which_will_force_a_delimiter_split,
201     arg,
202     another,
203     kwarg='hey',
204     **kwargs
205 )  # note: no trailing comma pre-3.6
206 lukasz.langa.pl
207 call.me(maybe)
208 1 .real
209 1.0 .real
210 ....__class__
211 list[str]
212 dict[str, int]
213 tuple[str, ...]
214 tuple[str, int, float, dict[str, int]]
215 slice[0]
216 slice[0:1]
217 slice[0:1:2]
218 slice[:]
219 slice[:-1]
220 slice[1:]
221 slice[::-1]
222 (str or None) if (sys.version_info[0] > (3,)) else (str or bytes or None)
223 {'2.7': dead, '3.7': long_live or die_hard}
224 {'2.7', '3.6', '3.7', '3.8', '3.9', '4.0' if gilectomy else '3.10'}
225 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10 or A, 11 or B, 12 or C]
226 (SomeName)
227 SomeName
228 (Good, Bad, Ugly)
229 (i for i in (1, 2, 3))
230 ((i ** 2) for i in (1, 2, 3))
231 ((i ** 2) for i, _ in ((1, 'a'), (2, 'b'), (3, 'c')))
232 (((i ** 2) + j) for i in (1, 2, 3) for j in (1, 2, 3))
233 (*starred)
234 a = (1,)
235 b = 1,
236 c = 1
237 d = (1,) + a + (2,)
238 what_is_up_with_those_new_coord_names = (coord_names + set(vars_to_create)) + set(
239     vars_to_remove
240 )
241 what_is_up_with_those_new_coord_names = (coord_names | set(vars_to_create)) - set(
242     vars_to_remove
243 )
244
245
246 def gen():
247     yield from outside_of_generator
248
249     a = (yield)
250
251
252 async def f():
253     await some.complicated[0].call(with_args=(True or (1 is not 1)))