]> 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:

Ignore `# fmt: off` as inline comment
[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  ...
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
78 # output
79
80
81 #!/usr/bin/env python3
82 import asyncio
83 import sys
84
85 from third_party import X, Y, Z
86
87 from library import some_connection, some_decorator
88
89 f"trigger 3.6 mode"
90
91
92 def func_no_args():
93     a
94     b
95     c
96     if True:
97         raise RuntimeError
98
99     if False:
100         ...
101     for i in range(10):
102         print(i)
103         continue
104
105     exec("new-style exec", {}, {})
106     return None
107
108
109 async def coroutine(arg, exec=False):
110     "Single-line docstring. Multiline is harder to reformat."
111     async with some_connection() as conn:
112         await conn.do_what_i_mean("SELECT bobby, tables FROM xkcd", timeout=2)
113     await asyncio.sleep(1)
114
115
116 @asyncio.coroutine
117 @some_decorator(with_args=True, many_args=[1, 2, 3])
118 def function_signature_stress_test(
119     number: int,
120     no_annotation=None,
121     text: str = "default",
122     *,
123     debug: bool = False,
124     **kwargs,
125 ) -> str:
126     return text[number:-1]
127
128
129 def spaces(a=1, b=(), c=[], d={}, e=True, f=-1, g=1 if False else 2, h="", i=r""):
130     offset = attr.ib(default=attr.Factory(lambda: _r.uniform(10000, 200000)))
131     assert task._cancel_stack[:len(old_stack)] == old_stack
132
133
134 def spaces_types(
135     a: int = 1,
136     b: tuple = (),
137     c: list = [],
138     d: dict = {},
139     e: bool = True,
140     f: int = -1,
141     g: int = 1 if False else 2,
142     h: str = "",
143     i: str = r"",
144 ):
145     ...
146
147
148 def spaces2(result=_core.Value(None)):
149     ...
150
151
152 def example(session):
153     result = session.query(models.Customer.id).filter(
154         models.Customer.account_id == account_id, models.Customer.email == email_address
155     ).order_by(
156         models.Customer.id.asc()
157     ).all()
158
159
160 def long_lines():
161     if True:
162         typedargslist.extend(
163             gen_annotated_params(
164                 ast_args.kwonlyargs,
165                 ast_args.kw_defaults,
166                 parameters,
167                 implicit_default=True,
168             )
169         )
170         typedargslist.extend(
171             gen_annotated_params(
172                 ast_args.kwonlyargs,
173                 ast_args.kw_defaults,
174                 parameters,
175                 implicit_default=True,
176                 # trailing standalone comment
177             )
178         )
179     _type_comment_re = re.compile(
180         r"""
181         ^
182         [\t ]*
183         \#[ ]type:[ ]*
184         (?P<type>
185             [^#\t\n]+?
186         )
187         (?<!ignore)     # note: this will force the non-greedy + in <type> to match
188                         # a trailing space which is why we need the silliness below
189         (?<!ignore[ ]{1})(?<!ignore[ ]{2})(?<!ignore[ ]{3})(?<!ignore[ ]{4})
190         (?<!ignore[ ]{5})(?<!ignore[ ]{6})(?<!ignore[ ]{7})(?<!ignore[ ]{8})
191         (?<!ignore[ ]{9})(?<!ignore[ ]{10})
192         [\t ]*
193         (?P<nl>
194             (?:\#[^\n]*)?
195             \n?
196         )
197         $
198         """,
199         re.MULTILINE | re.VERBOSE,
200     )