]> git.madduck.net Git - etc/vim.git/blob - tests/function.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:

Automatic management of parentheses in `elif`, too
[etc/vim.git] / tests / function.py
1 #!/usr/bin/env python3
2 import asyncio
3 import sys
4
5 from third_party import X, Y, Z
6
7 from library import some_connection, \
8                     some_decorator
9 f'trigger 3.6 mode'
10 def func_no_args():
11   a; b; c
12   if True: raise RuntimeError
13   if False: ...
14   for i in range(10):
15     print(i)
16     continue
17   exec("new-style exec", {}, {})
18   return None
19 async def coroutine(arg, exec=False):
20  "Single-line docstring. Multiline is harder to reformat."
21  async with some_connection() as conn:
22      await conn.do_what_i_mean('SELECT bobby, tables FROM xkcd', timeout=2)
23  await asyncio.sleep(1)
24 @asyncio.coroutine
25 @some_decorator(
26 with_args=True,
27 many_args=[1,2,3]
28 )
29 def function_signature_stress_test(number:int,no_annotation=None,text:str="default",* ,debug:bool=False,**kwargs) -> str:
30  return text[number:-1]
31 def spaces(a=1, b=(), c=[], d={}, e=True, f=-1, g=1 if False else 2, h="", i=r''):
32  offset = attr.ib(default=attr.Factory( lambda: _r.uniform(10000, 200000)))
33  assert task._cancel_stack[:len(old_stack)] == old_stack
34 def spaces_types(a: int = 1, b: tuple = (), c: list = [], d: dict = {}, e: bool = True, f: int = -1, g: int = 1 if False else 2, h: str = "", i: str = r''): ...
35 def spaces2(result= _core.Value(None)):
36  assert fut is self._read_fut, (fut, self._read_fut)
37     # EMPTY LINE WITH WHITESPACE (this comment will be removed)
38 def example(session):
39     result = session.query(models.Customer.id).filter(
40         models.Customer.account_id == account_id,
41         models.Customer.email == email_address,
42     ).order_by(
43         models.Customer.id.asc()
44     ).all()
45 def long_lines():
46     if True:
47         typedargslist.extend(
48             gen_annotated_params(ast_args.kwonlyargs, ast_args.kw_defaults, parameters, implicit_default=True)
49         )
50         typedargslist.extend(
51             gen_annotated_params(
52                 ast_args.kwonlyargs, ast_args.kw_defaults, parameters, implicit_default=True,
53                 # trailing standalone comment
54             )
55         )
56     _type_comment_re = re.compile(
57         r"""
58         ^
59         [\t ]*
60         \#[ ]type:[ ]*
61         (?P<type>
62             [^#\t\n]+?
63         )
64         (?<!ignore)     # note: this will force the non-greedy + in <type> to match
65                         # a trailing space which is why we need the silliness below
66         (?<!ignore[ ]{1})(?<!ignore[ ]{2})(?<!ignore[ ]{3})(?<!ignore[ ]{4})
67         (?<!ignore[ ]{5})(?<!ignore[ ]{6})(?<!ignore[ ]{7})(?<!ignore[ ]{8})
68         (?<!ignore[ ]{9})(?<!ignore[ ]{10})
69         [\t ]*
70         (?P<nl>
71             (?:\#[^\n]*)?
72             \n?
73         )
74         $
75         """, re.MULTILINE | re.VERBOSE
76     )
77 def trailing_comma():
78     mapping = {
79     A: 0.25 * (10.0 / 12),
80     B: 0.1 * (10.0 / 12),
81     C: 0.1 * (10.0 / 12),
82     D: 0.1 * (10.0 / 12),
83 }
84 def f(
85   a,
86   **kwargs,
87 ) -> A:
88     return A(
89         very_long_argument_name1=very_long_value_for_the_argument,
90         very_long_argument_name2=very_long_value_for_the_argument,
91         **kwargs,
92     )
93
94 # output
95
96
97 #!/usr/bin/env python3
98 import asyncio
99 import sys
100
101 from third_party import X, Y, Z
102
103 from library import some_connection, some_decorator
104
105 f"trigger 3.6 mode"
106
107
108 def func_no_args():
109     a
110     b
111     c
112     if True:
113         raise RuntimeError
114     if False:
115         ...
116     for i in range(10):
117         print(i)
118         continue
119     exec("new-style exec", {}, {})
120     return None
121
122
123 async def coroutine(arg, exec=False):
124     "Single-line docstring. Multiline is harder to reformat."
125     async with some_connection() as conn:
126         await conn.do_what_i_mean("SELECT bobby, tables FROM xkcd", timeout=2)
127     await asyncio.sleep(1)
128
129
130 @asyncio.coroutine
131 @some_decorator(with_args=True, many_args=[1, 2, 3])
132 def function_signature_stress_test(
133     number: int,
134     no_annotation=None,
135     text: str = "default",
136     *,
137     debug: bool = False,
138     **kwargs,
139 ) -> str:
140     return text[number:-1]
141
142
143 def spaces(a=1, b=(), c=[], d={}, e=True, f=-1, g=1 if False else 2, h="", i=r""):
144     offset = attr.ib(default=attr.Factory(lambda: _r.uniform(10000, 200000)))
145     assert task._cancel_stack[: len(old_stack)] == old_stack
146
147
148 def spaces_types(
149     a: int = 1,
150     b: tuple = (),
151     c: list = [],
152     d: dict = {},
153     e: bool = True,
154     f: int = -1,
155     g: int = 1 if False else 2,
156     h: str = "",
157     i: str = r"",
158 ):
159     ...
160
161
162 def spaces2(result=_core.Value(None)):
163     assert fut is self._read_fut, (fut, self._read_fut)
164
165
166 def example(session):
167     result = session.query(models.Customer.id).filter(
168         models.Customer.account_id == account_id, models.Customer.email == email_address
169     ).order_by(
170         models.Customer.id.asc()
171     ).all()
172
173
174 def long_lines():
175     if True:
176         typedargslist.extend(
177             gen_annotated_params(
178                 ast_args.kwonlyargs,
179                 ast_args.kw_defaults,
180                 parameters,
181                 implicit_default=True,
182             )
183         )
184         typedargslist.extend(
185             gen_annotated_params(
186                 ast_args.kwonlyargs,
187                 ast_args.kw_defaults,
188                 parameters,
189                 implicit_default=True,
190                 # trailing standalone comment
191             )
192         )
193     _type_comment_re = re.compile(
194         r"""
195         ^
196         [\t ]*
197         \#[ ]type:[ ]*
198         (?P<type>
199             [^#\t\n]+?
200         )
201         (?<!ignore)     # note: this will force the non-greedy + in <type> to match
202                         # a trailing space which is why we need the silliness below
203         (?<!ignore[ ]{1})(?<!ignore[ ]{2})(?<!ignore[ ]{3})(?<!ignore[ ]{4})
204         (?<!ignore[ ]{5})(?<!ignore[ ]{6})(?<!ignore[ ]{7})(?<!ignore[ ]{8})
205         (?<!ignore[ ]{9})(?<!ignore[ ]{10})
206         [\t ]*
207         (?P<nl>
208             (?:\#[^\n]*)?
209             \n?
210         )
211         $
212         """,
213         re.MULTILINE | re.VERBOSE,
214     )
215
216
217 def trailing_comma():
218     mapping = {
219         A: 0.25 * (10.0 / 12),
220         B: 0.1 * (10.0 / 12),
221         C: 0.1 * (10.0 / 12),
222         D: 0.1 * (10.0 / 12),
223     }
224
225
226 def f(a, **kwargs) -> A:
227     return A(
228         very_long_argument_name1=very_long_value_for_the_argument,
229         very_long_argument_name2=very_long_value_for_the_argument,
230         **kwargs,
231     )