jaclang 0.6.1__py3-none-any.whl → 0.6.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (889) hide show
  1. jaclang/cli/.gitignore +3 -0
  2. jaclang/cli/cli.md +190 -0
  3. jaclang/compiler/.gitignore +1 -0
  4. jaclang/compiler/passes/main/tests/fixtures/autoimpl.impl/getme.impl.jac +3 -0
  5. jaclang/compiler/passes/main/tests/fixtures/autoimpl.impl.jac +3 -0
  6. jaclang/compiler/passes/main/tests/fixtures/autoimpl.jac +9 -0
  7. jaclang/compiler/passes/main/tests/fixtures/autoimpl.something.else.impl.jac +3 -0
  8. jaclang/compiler/passes/main/tests/fixtures/base.jac +13 -0
  9. jaclang/compiler/passes/main/tests/fixtures/base2.jac +14 -0
  10. jaclang/compiler/passes/main/tests/fixtures/blip.jac +2 -0
  11. jaclang/compiler/passes/main/tests/fixtures/codegentext.jac +31 -0
  12. jaclang/compiler/passes/main/tests/fixtures/decls.jac +10 -0
  13. jaclang/compiler/passes/main/tests/fixtures/defs_and_uses.jac +44 -0
  14. jaclang/compiler/passes/main/tests/fixtures/fstrings.jac +4 -0
  15. jaclang/compiler/passes/main/tests/fixtures/func.jac +18 -0
  16. jaclang/compiler/passes/main/tests/fixtures/func2.jac +8 -0
  17. jaclang/compiler/passes/main/tests/fixtures/game1.jac +15 -0
  18. jaclang/compiler/passes/main/tests/fixtures/impl/defs1.jac +8 -0
  19. jaclang/compiler/passes/main/tests/fixtures/impl/defs2.jac +8 -0
  20. jaclang/compiler/passes/main/tests/fixtures/impl/imps.jac +11 -0
  21. jaclang/compiler/passes/main/tests/fixtures/multi_def_err.jac +7 -0
  22. jaclang/compiler/passes/main/tests/fixtures/registry.jac +36 -0
  23. jaclang/compiler/passes/tool/tests/fixtures/corelib.jac +480 -0
  24. jaclang/compiler/passes/tool/tests/fixtures/corelib_fmt.jac +480 -0
  25. jaclang/compiler/passes/tool/tests/fixtures/genai/essay_review.jac +36 -0
  26. jaclang/compiler/passes/tool/tests/fixtures/genai/expert_answer.jac +17 -0
  27. jaclang/compiler/passes/tool/tests/fixtures/genai/joke_gen.jac +32 -0
  28. jaclang/compiler/passes/tool/tests/fixtures/genai/odd_word_out.jac +27 -0
  29. jaclang/compiler/passes/tool/tests/fixtures/genai/personality_finder.jac +35 -0
  30. jaclang/compiler/passes/tool/tests/fixtures/genai/text_to_type.jac +25 -0
  31. jaclang/compiler/passes/tool/tests/fixtures/genai/translator.jac +13 -0
  32. jaclang/compiler/passes/tool/tests/fixtures/genai/wikipedia.jac +63 -0
  33. jaclang/compiler/passes/tool/tests/fixtures/multi_def_err.dot +39 -0
  34. jaclang/compiler/passes/tool/tests/fixtures/multi_def_err.jac +7 -0
  35. jaclang/compiler/passes/tool/tests/fixtures/multi_def_err.txt +20 -0
  36. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/ability_impl_long_comprehension.jac +15 -0
  37. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/call_with_many_parameters.jac +24 -0
  38. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/entry_main.jac +4 -0
  39. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/long_line_nested_dict_access.jac +10 -0
  40. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/multiline_fstrings.jac +16 -0
  41. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/nested_dict.jac +15 -0
  42. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/nested_loop_and_incrementer.jac +13 -0
  43. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/simple_walker.jac +25 -0
  44. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/try_block_and_walker_spawn_and_fstrings.jac +26 -0
  45. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/tuple_iteration_and_not_negation.jac +20 -0
  46. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/type_annotation.jac +3 -0
  47. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/walker_decl_only.jac +12 -0
  48. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/walker_with_default_values_types_and_docstrings.jac +18 -0
  49. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/walker_with_inline_ability_impl.jac +8 -0
  50. jaclang/compiler/passes/tool/tests/fixtures/simple_walk.jac +47 -0
  51. jaclang/compiler/passes/tool/tests/fixtures/simple_walk_fmt.jac +47 -0
  52. jaclang/compiler/tests/fixtures/fam.jac +67 -0
  53. jaclang/compiler/tests/fixtures/hello_world.jac +5 -0
  54. jaclang/compiler/tests/fixtures/kwesc.jac +5 -0
  55. jaclang/compiler/tests/fixtures/mod_doc_test.jac +1 -0
  56. jaclang/compiler/tests/fixtures/staticcheck.jac +20 -0
  57. jaclang/compiler/tests/fixtures/stuff.jac +6 -0
  58. jaclang/plugin/tests/fixtures/impl_match.jac +9 -0
  59. jaclang/plugin/tests/fixtures/impl_match_impl.jac +3 -0
  60. jaclang/plugin/tests/fixtures/simple_node_connection.jac +55 -0
  61. jaclang/plugin/tests/fixtures/simple_persistent.jac +41 -0
  62. jaclang/tests/fixtures/abc.jac +73 -0
  63. jaclang/tests/fixtures/access_checker.jac +19 -0
  64. jaclang/tests/fixtures/access_modifier.jac +49 -0
  65. jaclang/tests/fixtures/aott_raise.jac +25 -0
  66. jaclang/tests/fixtures/arithmetic_bug.jac +13 -0
  67. jaclang/tests/fixtures/assign_compr.jac +15 -0
  68. jaclang/tests/fixtures/assign_compr_dup.jac +15 -0
  69. jaclang/tests/fixtures/builtin_dotgen.jac +41 -0
  70. jaclang/tests/fixtures/chandra_bugs.jac +11 -0
  71. jaclang/tests/fixtures/chandra_bugs2.jac +26 -0
  72. jaclang/tests/fixtures/circle_pysolo.py +91 -0
  73. jaclang/tests/fixtures/deep/deeper/deep_outer_import.jac +9 -0
  74. jaclang/tests/fixtures/deep/deeper/deep_outer_import2.jac +9 -0
  75. jaclang/tests/fixtures/deep/deeper/snd_lev.jac +6 -0
  76. jaclang/tests/fixtures/deep/mycode.jac +4 -0
  77. jaclang/tests/fixtures/deep/one_lev.jac +6 -0
  78. jaclang/tests/fixtures/deep/one_lev_dup.jac +6 -0
  79. jaclang/tests/fixtures/deep/one_lev_dup_py.py +6 -0
  80. jaclang/tests/fixtures/deep_import.jac +7 -0
  81. jaclang/tests/fixtures/deferred_field.jac +13 -0
  82. jaclang/tests/fixtures/disconn.jac +29 -0
  83. jaclang/tests/fixtures/edge_node_walk.jac +46 -0
  84. jaclang/tests/fixtures/edge_ops.jac +45 -0
  85. jaclang/tests/fixtures/edges_walk.jac +38 -0
  86. jaclang/tests/fixtures/enum_inside_archtype.jac +20 -0
  87. jaclang/tests/fixtures/err.jac +5 -0
  88. jaclang/tests/fixtures/err2.jac +5 -0
  89. jaclang/tests/fixtures/game1.jac +15 -0
  90. jaclang/tests/fixtures/gendot_bubble_sort.jac +77 -0
  91. jaclang/tests/fixtures/guess_game.jac +47 -0
  92. jaclang/tests/fixtures/has_goodness.jac +15 -0
  93. jaclang/tests/fixtures/hashcheck.jac +12 -0
  94. jaclang/tests/fixtures/hashcheck_dup.jac +12 -0
  95. jaclang/tests/fixtures/hello.jac +5 -0
  96. jaclang/tests/fixtures/hello_nc.jac +5 -0
  97. jaclang/tests/fixtures/ignore.jac +43 -0
  98. jaclang/tests/fixtures/ignore_dup.jac +43 -0
  99. jaclang/tests/fixtures/impl_grab.impl.jac +4 -0
  100. jaclang/tests/fixtures/impl_grab.jac +2 -0
  101. jaclang/tests/fixtures/inherit_check.jac +33 -0
  102. jaclang/tests/fixtures/jacsamp.jac +6 -0
  103. jaclang/tests/fixtures/jp_importer.jac +17 -0
  104. jaclang/tests/fixtures/lambda.jac +6 -0
  105. jaclang/tests/fixtures/maxfail_run_test.jac +5 -0
  106. jaclang/tests/fixtures/mtest.impl.jac +6 -0
  107. jaclang/tests/fixtures/mtest.jac +6 -0
  108. jaclang/tests/fixtures/needs_import.jac +18 -0
  109. jaclang/tests/fixtures/needs_import_1.jac +6 -0
  110. jaclang/tests/fixtures/needs_import_2.jac +6 -0
  111. jaclang/tests/fixtures/needs_import_3.jac +6 -0
  112. jaclang/tests/fixtures/needs_import_dup.jac +18 -0
  113. jaclang/tests/fixtures/package_import.jac +6 -0
  114. jaclang/tests/fixtures/pyfunc.py +11 -0
  115. jaclang/tests/fixtures/pyfunc_1.py +311 -0
  116. jaclang/tests/fixtures/pyfunc_2.py +279 -0
  117. jaclang/tests/fixtures/pyfunc_3.py +310 -0
  118. jaclang/tests/fixtures/random_check.jac +70 -0
  119. jaclang/tests/fixtures/raw_byte_string.jac +18 -0
  120. jaclang/tests/fixtures/registry.jac +37 -0
  121. jaclang/tests/fixtures/run_test.jac +5 -0
  122. jaclang/tests/fixtures/semstr.jac +33 -0
  123. jaclang/tests/fixtures/simple_archs.jac +26 -0
  124. jaclang/tests/fixtures/slice_vals.jac +7 -0
  125. jaclang/tests/fixtures/sub_abil_sep.jac +15 -0
  126. jaclang/tests/fixtures/sub_abil_sep_multilev.jac +17 -0
  127. jaclang/tests/fixtures/try_finally.jac +34 -0
  128. jaclang/tests/fixtures/tupleunpack.jac +6 -0
  129. jaclang/tests/fixtures/tuplytuples.jac +8 -0
  130. jaclang/tests/fixtures/type_info.jac +19 -0
  131. jaclang/tests/fixtures/with_context.jac +30 -0
  132. jaclang/tests/fixtures/with_llm_function.jac +33 -0
  133. jaclang/tests/fixtures/with_llm_lower.jac +45 -0
  134. jaclang/tests/fixtures/with_llm_method.jac +51 -0
  135. jaclang/tests/fixtures/with_llm_type.jac +52 -0
  136. jaclang/tests/test_cli.py +239 -0
  137. jaclang/tests/test_language.py +807 -0
  138. jaclang/tests/test_man_code.py +148 -0
  139. jaclang/tests/test_reference.py +95 -0
  140. jaclang/tests/test_settings.py +46 -0
  141. jaclang/vendor/LICENSE +18 -0
  142. jaclang/vendor/mypy/stubgen.py +0 -0
  143. jaclang/vendor/mypy/stubgenc.py +0 -0
  144. jaclang/vendor/mypy/typeshed/LICENSE +237 -0
  145. jaclang/vendor/mypy/typeshed/stdlib/VERSIONS +308 -0
  146. jaclang/vendor/mypy/typeshed/stdlib/__future__.pyi +41 -0
  147. jaclang/vendor/mypy/typeshed/stdlib/__main__.pyi +3 -0
  148. jaclang/vendor/mypy/typeshed/stdlib/_ast.pyi +632 -0
  149. jaclang/vendor/mypy/typeshed/stdlib/_bisect.pyi +106 -0
  150. jaclang/vendor/mypy/typeshed/stdlib/_bootlocale.pyi +1 -0
  151. jaclang/vendor/mypy/typeshed/stdlib/_codecs.pyi +198 -0
  152. jaclang/vendor/mypy/typeshed/stdlib/_collections_abc.pyi +94 -0
  153. jaclang/vendor/mypy/typeshed/stdlib/_compat_pickle.pyi +8 -0
  154. jaclang/vendor/mypy/typeshed/stdlib/_compression.pyi +25 -0
  155. jaclang/vendor/mypy/typeshed/stdlib/_csv.pyi +90 -0
  156. jaclang/vendor/mypy/typeshed/stdlib/_ctypes.pyi +219 -0
  157. jaclang/vendor/mypy/typeshed/stdlib/_curses.pyi +600 -0
  158. jaclang/vendor/mypy/typeshed/stdlib/_decimal.pyi +316 -0
  159. jaclang/vendor/mypy/typeshed/stdlib/_dummy_thread.pyi +43 -0
  160. jaclang/vendor/mypy/typeshed/stdlib/_dummy_threading.pyi +185 -0
  161. jaclang/vendor/mypy/typeshed/stdlib/_heapq.pyi +11 -0
  162. jaclang/vendor/mypy/typeshed/stdlib/_imp.pyi +32 -0
  163. jaclang/vendor/mypy/typeshed/stdlib/_json.pyi +49 -0
  164. jaclang/vendor/mypy/typeshed/stdlib/_locale.pyi +100 -0
  165. jaclang/vendor/mypy/typeshed/stdlib/_markupbase.pyi +16 -0
  166. jaclang/vendor/mypy/typeshed/stdlib/_msi.pyi +92 -0
  167. jaclang/vendor/mypy/typeshed/stdlib/_operator.pyi +172 -0
  168. jaclang/vendor/mypy/typeshed/stdlib/_osx_support.pyi +55 -0
  169. jaclang/vendor/mypy/typeshed/stdlib/_posixsubprocess.pyi +32 -0
  170. jaclang/vendor/mypy/typeshed/stdlib/_py_abc.pyi +17 -0
  171. jaclang/vendor/mypy/typeshed/stdlib/_pydecimal.pyi +43 -0
  172. jaclang/vendor/mypy/typeshed/stdlib/_random.pyi +12 -0
  173. jaclang/vendor/mypy/typeshed/stdlib/_sitebuiltins.pyi +18 -0
  174. jaclang/vendor/mypy/typeshed/stdlib/_socket.pyi +851 -0
  175. jaclang/vendor/mypy/typeshed/stdlib/_stat.pyi +103 -0
  176. jaclang/vendor/mypy/typeshed/stdlib/_thread.pyi +63 -0
  177. jaclang/vendor/mypy/typeshed/stdlib/_threading_local.pyi +17 -0
  178. jaclang/vendor/mypy/typeshed/stdlib/_tkinter.pyi +120 -0
  179. jaclang/vendor/mypy/typeshed/stdlib/_tracemalloc.pyi +17 -0
  180. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/README.md +34 -0
  181. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/__init__.pyi +374 -0
  182. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/dbapi.pyi +45 -0
  183. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/wsgi.pyi +51 -0
  184. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/xml.pyi +13 -0
  185. jaclang/vendor/mypy/typeshed/stdlib/_warnings.pyi +65 -0
  186. jaclang/vendor/mypy/typeshed/stdlib/_weakref.pyi +45 -0
  187. jaclang/vendor/mypy/typeshed/stdlib/_weakrefset.pyi +51 -0
  188. jaclang/vendor/mypy/typeshed/stdlib/_winapi.pyi +275 -0
  189. jaclang/vendor/mypy/typeshed/stdlib/abc.pyi +61 -0
  190. jaclang/vendor/mypy/typeshed/stdlib/aifc.pyi +99 -0
  191. jaclang/vendor/mypy/typeshed/stdlib/antigravity.pyi +3 -0
  192. jaclang/vendor/mypy/typeshed/stdlib/argparse.pyi +675 -0
  193. jaclang/vendor/mypy/typeshed/stdlib/array.pyi +111 -0
  194. jaclang/vendor/mypy/typeshed/stdlib/ast.pyi +287 -0
  195. jaclang/vendor/mypy/typeshed/stdlib/asynchat.pyi +21 -0
  196. jaclang/vendor/mypy/typeshed/stdlib/asyncio/__init__.pyi +41 -0
  197. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_events.pyi +519 -0
  198. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_futures.pyi +21 -0
  199. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_subprocess.pyi +71 -0
  200. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_tasks.pyi +13 -0
  201. jaclang/vendor/mypy/typeshed/stdlib/asyncio/constants.pyi +20 -0
  202. jaclang/vendor/mypy/typeshed/stdlib/asyncio/coroutines.pyi +32 -0
  203. jaclang/vendor/mypy/typeshed/stdlib/asyncio/events.pyi +669 -0
  204. jaclang/vendor/mypy/typeshed/stdlib/asyncio/exceptions.pyi +43 -0
  205. jaclang/vendor/mypy/typeshed/stdlib/asyncio/format_helpers.pyi +26 -0
  206. jaclang/vendor/mypy/typeshed/stdlib/asyncio/futures.pyi +61 -0
  207. jaclang/vendor/mypy/typeshed/stdlib/asyncio/locks.pyi +131 -0
  208. jaclang/vendor/mypy/typeshed/stdlib/asyncio/log.pyi +3 -0
  209. jaclang/vendor/mypy/typeshed/stdlib/asyncio/mixins.pyi +9 -0
  210. jaclang/vendor/mypy/typeshed/stdlib/asyncio/proactor_events.pyi +72 -0
  211. jaclang/vendor/mypy/typeshed/stdlib/asyncio/protocols.pyi +40 -0
  212. jaclang/vendor/mypy/typeshed/stdlib/asyncio/queues.pyi +49 -0
  213. jaclang/vendor/mypy/typeshed/stdlib/asyncio/runners.pyi +44 -0
  214. jaclang/vendor/mypy/typeshed/stdlib/asyncio/selector_events.pyi +8 -0
  215. jaclang/vendor/mypy/typeshed/stdlib/asyncio/sslproto.pyi +189 -0
  216. jaclang/vendor/mypy/typeshed/stdlib/asyncio/staggered.pyi +13 -0
  217. jaclang/vendor/mypy/typeshed/stdlib/asyncio/streams.pyi +172 -0
  218. jaclang/vendor/mypy/typeshed/stdlib/asyncio/subprocess.pyi +234 -0
  219. jaclang/vendor/mypy/typeshed/stdlib/asyncio/taskgroups.pyi +36 -0
  220. jaclang/vendor/mypy/typeshed/stdlib/asyncio/tasks.pyi +566 -0
  221. jaclang/vendor/mypy/typeshed/stdlib/asyncio/threads.pyi +11 -0
  222. jaclang/vendor/mypy/typeshed/stdlib/asyncio/timeouts.pyi +22 -0
  223. jaclang/vendor/mypy/typeshed/stdlib/asyncio/transports.pyi +64 -0
  224. jaclang/vendor/mypy/typeshed/stdlib/asyncio/trsock.pyi +140 -0
  225. jaclang/vendor/mypy/typeshed/stdlib/asyncio/unix_events.pyi +268 -0
  226. jaclang/vendor/mypy/typeshed/stdlib/asyncio/windows_events.pyi +108 -0
  227. jaclang/vendor/mypy/typeshed/stdlib/asyncio/windows_utils.pyi +59 -0
  228. jaclang/vendor/mypy/typeshed/stdlib/asyncore.pyi +99 -0
  229. jaclang/vendor/mypy/typeshed/stdlib/atexit.pyi +14 -0
  230. jaclang/vendor/mypy/typeshed/stdlib/audioop.pyi +50 -0
  231. jaclang/vendor/mypy/typeshed/stdlib/base64.pyi +76 -0
  232. jaclang/vendor/mypy/typeshed/stdlib/bdb.pyi +133 -0
  233. jaclang/vendor/mypy/typeshed/stdlib/binascii.pyi +45 -0
  234. jaclang/vendor/mypy/typeshed/stdlib/binhex.pyi +47 -0
  235. jaclang/vendor/mypy/typeshed/stdlib/bisect.pyi +4 -0
  236. jaclang/vendor/mypy/typeshed/stdlib/builtins.pyi +2310 -0
  237. jaclang/vendor/mypy/typeshed/stdlib/bz2.pyi +177 -0
  238. jaclang/vendor/mypy/typeshed/stdlib/cProfile.pyi +49 -0
  239. jaclang/vendor/mypy/typeshed/stdlib/calendar.pyi +248 -0
  240. jaclang/vendor/mypy/typeshed/stdlib/cgi.pyi +122 -0
  241. jaclang/vendor/mypy/typeshed/stdlib/cgitb.pyi +44 -0
  242. jaclang/vendor/mypy/typeshed/stdlib/chunk.pyi +26 -0
  243. jaclang/vendor/mypy/typeshed/stdlib/cmath.pyi +38 -0
  244. jaclang/vendor/mypy/typeshed/stdlib/cmd.pyi +52 -0
  245. jaclang/vendor/mypy/typeshed/stdlib/code.pyi +46 -0
  246. jaclang/vendor/mypy/typeshed/stdlib/codecs.pyi +344 -0
  247. jaclang/vendor/mypy/typeshed/stdlib/codeop.pyi +17 -0
  248. jaclang/vendor/mypy/typeshed/stdlib/collections/__init__.pyi +571 -0
  249. jaclang/vendor/mypy/typeshed/stdlib/collections/abc.pyi +2 -0
  250. jaclang/vendor/mypy/typeshed/stdlib/colorsys.pyi +20 -0
  251. jaclang/vendor/mypy/typeshed/stdlib/compileall.pyi +111 -0
  252. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/__init__.pyi +32 -0
  253. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/_base.pyi +137 -0
  254. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/process.pyi +272 -0
  255. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/thread.pyi +86 -0
  256. jaclang/vendor/mypy/typeshed/stdlib/configparser.pyi +449 -0
  257. jaclang/vendor/mypy/typeshed/stdlib/contextlib.pyi +274 -0
  258. jaclang/vendor/mypy/typeshed/stdlib/contextvars.pyi +67 -0
  259. jaclang/vendor/mypy/typeshed/stdlib/copy.pyi +16 -0
  260. jaclang/vendor/mypy/typeshed/stdlib/copyreg.pyi +32 -0
  261. jaclang/vendor/mypy/typeshed/stdlib/crypt.pyi +12 -0
  262. jaclang/vendor/mypy/typeshed/stdlib/csv.pyi +147 -0
  263. jaclang/vendor/mypy/typeshed/stdlib/ctypes/__init__.pyi +211 -0
  264. jaclang/vendor/mypy/typeshed/stdlib/ctypes/_endian.pyi +29 -0
  265. jaclang/vendor/mypy/typeshed/stdlib/ctypes/util.pyi +6 -0
  266. jaclang/vendor/mypy/typeshed/stdlib/ctypes/wintypes.pyi +298 -0
  267. jaclang/vendor/mypy/typeshed/stdlib/curses/__init__.pyi +25 -0
  268. jaclang/vendor/mypy/typeshed/stdlib/curses/ascii.pyi +63 -0
  269. jaclang/vendor/mypy/typeshed/stdlib/curses/has_key.pyi +4 -0
  270. jaclang/vendor/mypy/typeshed/stdlib/curses/panel.pyi +25 -0
  271. jaclang/vendor/mypy/typeshed/stdlib/curses/textpad.pyi +15 -0
  272. jaclang/vendor/mypy/typeshed/stdlib/dataclasses.pyi +323 -0
  273. jaclang/vendor/mypy/typeshed/stdlib/datetime.pyi +334 -0
  274. jaclang/vendor/mypy/typeshed/stdlib/dbm/__init__.pyi +98 -0
  275. jaclang/vendor/mypy/typeshed/stdlib/dbm/dumb.pyi +34 -0
  276. jaclang/vendor/mypy/typeshed/stdlib/dbm/gnu.pyi +44 -0
  277. jaclang/vendor/mypy/typeshed/stdlib/dbm/ndbm.pyi +40 -0
  278. jaclang/vendor/mypy/typeshed/stdlib/decimal.pyi +5 -0
  279. jaclang/vendor/mypy/typeshed/stdlib/difflib.pyi +169 -0
  280. jaclang/vendor/mypy/typeshed/stdlib/dis.pyi +190 -0
  281. jaclang/vendor/mypy/typeshed/stdlib/distutils/__init__.pyi +5 -0
  282. jaclang/vendor/mypy/typeshed/stdlib/distutils/archive_util.pyi +22 -0
  283. jaclang/vendor/mypy/typeshed/stdlib/distutils/bcppcompiler.pyi +3 -0
  284. jaclang/vendor/mypy/typeshed/stdlib/distutils/ccompiler.pyi +183 -0
  285. jaclang/vendor/mypy/typeshed/stdlib/distutils/cmd.pyi +88 -0
  286. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/__init__.pyi +0 -0
  287. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist.pyi +25 -0
  288. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_dumb.pyi +21 -0
  289. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_msi.pyi +45 -0
  290. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_packager.pyi +0 -0
  291. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_rpm.pyi +52 -0
  292. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_wininst.pyi +21 -0
  293. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build.pyi +31 -0
  294. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_clib.pyi +27 -0
  295. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_ext.pyi +50 -0
  296. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_py.pyi +44 -0
  297. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_scripts.pyi +24 -0
  298. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/check.pyi +39 -0
  299. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/clean.pyi +17 -0
  300. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/config.pyi +91 -0
  301. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install.pyi +63 -0
  302. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_data.pyi +19 -0
  303. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_egg_info.pyi +18 -0
  304. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_headers.pyi +16 -0
  305. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_lib.pyi +25 -0
  306. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_scripts.pyi +18 -0
  307. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/register.pyi +18 -0
  308. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/sdist.pyi +42 -0
  309. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/upload.pyi +17 -0
  310. jaclang/vendor/mypy/typeshed/stdlib/distutils/config.pyi +17 -0
  311. jaclang/vendor/mypy/typeshed/stdlib/distutils/core.pyi +59 -0
  312. jaclang/vendor/mypy/typeshed/stdlib/distutils/cygwinccompiler.pyi +20 -0
  313. jaclang/vendor/mypy/typeshed/stdlib/distutils/debug.pyi +1 -0
  314. jaclang/vendor/mypy/typeshed/stdlib/distutils/dep_util.pyi +3 -0
  315. jaclang/vendor/mypy/typeshed/stdlib/distutils/dir_util.pyi +21 -0
  316. jaclang/vendor/mypy/typeshed/stdlib/distutils/dist.pyi +155 -0
  317. jaclang/vendor/mypy/typeshed/stdlib/distutils/errors.pyi +19 -0
  318. jaclang/vendor/mypy/typeshed/stdlib/distutils/extension.pyi +36 -0
  319. jaclang/vendor/mypy/typeshed/stdlib/distutils/fancy_getopt.pyi +37 -0
  320. jaclang/vendor/mypy/typeshed/stdlib/distutils/file_util.pyi +14 -0
  321. jaclang/vendor/mypy/typeshed/stdlib/distutils/filelist.pyi +78 -0
  322. jaclang/vendor/mypy/typeshed/stdlib/distutils/log.pyi +25 -0
  323. jaclang/vendor/mypy/typeshed/stdlib/distutils/msvccompiler.pyi +3 -0
  324. jaclang/vendor/mypy/typeshed/stdlib/distutils/spawn.pyi +4 -0
  325. jaclang/vendor/mypy/typeshed/stdlib/distutils/sysconfig.pyi +24 -0
  326. jaclang/vendor/mypy/typeshed/stdlib/distutils/text_file.pyi +23 -0
  327. jaclang/vendor/mypy/typeshed/stdlib/distutils/unixccompiler.pyi +3 -0
  328. jaclang/vendor/mypy/typeshed/stdlib/distutils/util.pyi +50 -0
  329. jaclang/vendor/mypy/typeshed/stdlib/distutils/version.pyi +36 -0
  330. jaclang/vendor/mypy/typeshed/stdlib/doctest.pyi +282 -0
  331. jaclang/vendor/mypy/typeshed/stdlib/dummy_threading.pyi +2 -0
  332. jaclang/vendor/mypy/typeshed/stdlib/email/__init__.pyi +37 -0
  333. jaclang/vendor/mypy/typeshed/stdlib/email/_header_value_parser.pyi +392 -0
  334. jaclang/vendor/mypy/typeshed/stdlib/email/_policybase.pyi +51 -0
  335. jaclang/vendor/mypy/typeshed/stdlib/email/base64mime.pyi +22 -0
  336. jaclang/vendor/mypy/typeshed/stdlib/email/charset.pyi +39 -0
  337. jaclang/vendor/mypy/typeshed/stdlib/email/contentmanager.pyi +11 -0
  338. jaclang/vendor/mypy/typeshed/stdlib/email/encoders.pyi +8 -0
  339. jaclang/vendor/mypy/typeshed/stdlib/email/errors.pyi +39 -0
  340. jaclang/vendor/mypy/typeshed/stdlib/email/feedparser.pyi +31 -0
  341. jaclang/vendor/mypy/typeshed/stdlib/email/generator.pyi +42 -0
  342. jaclang/vendor/mypy/typeshed/stdlib/email/header.pyi +41 -0
  343. jaclang/vendor/mypy/typeshed/stdlib/email/headerregistry.pyi +214 -0
  344. jaclang/vendor/mypy/typeshed/stdlib/email/iterators.pyi +19 -0
  345. jaclang/vendor/mypy/typeshed/stdlib/email/message.pyi +220 -0
  346. jaclang/vendor/mypy/typeshed/stdlib/email/mime/__init__.pyi +0 -0
  347. jaclang/vendor/mypy/typeshed/stdlib/email/mime/application.pyi +17 -0
  348. jaclang/vendor/mypy/typeshed/stdlib/email/mime/audio.pyi +17 -0
  349. jaclang/vendor/mypy/typeshed/stdlib/email/mime/base.pyi +15 -0
  350. jaclang/vendor/mypy/typeshed/stdlib/email/mime/image.pyi +17 -0
  351. jaclang/vendor/mypy/typeshed/stdlib/email/mime/message.pyi +10 -0
  352. jaclang/vendor/mypy/typeshed/stdlib/email/mime/multipart.pyi +18 -0
  353. jaclang/vendor/mypy/typeshed/stdlib/email/mime/nonmultipart.pyi +5 -0
  354. jaclang/vendor/mypy/typeshed/stdlib/email/mime/text.pyi +14 -0
  355. jaclang/vendor/mypy/typeshed/stdlib/email/parser.pyi +44 -0
  356. jaclang/vendor/mypy/typeshed/stdlib/email/policy.pyi +51 -0
  357. jaclang/vendor/mypy/typeshed/stdlib/email/quoprimime.pyi +30 -0
  358. jaclang/vendor/mypy/typeshed/stdlib/email/utils.pyi +84 -0
  359. jaclang/vendor/mypy/typeshed/stdlib/encodings/__init__.pyi +10 -0
  360. jaclang/vendor/mypy/typeshed/stdlib/encodings/utf_8.pyi +25 -0
  361. jaclang/vendor/mypy/typeshed/stdlib/encodings/utf_8_sig.pyi +28 -0
  362. jaclang/vendor/mypy/typeshed/stdlib/ensurepip/__init__.pyi +12 -0
  363. jaclang/vendor/mypy/typeshed/stdlib/enum.pyi +347 -0
  364. jaclang/vendor/mypy/typeshed/stdlib/errno.pyi +222 -0
  365. jaclang/vendor/mypy/typeshed/stdlib/faulthandler.pyi +20 -0
  366. jaclang/vendor/mypy/typeshed/stdlib/fcntl.pyi +155 -0
  367. jaclang/vendor/mypy/typeshed/stdlib/filecmp.pyi +62 -0
  368. jaclang/vendor/mypy/typeshed/stdlib/fileinput.pyi +246 -0
  369. jaclang/vendor/mypy/typeshed/stdlib/fnmatch.pyi +9 -0
  370. jaclang/vendor/mypy/typeshed/stdlib/formatter.pyi +92 -0
  371. jaclang/vendor/mypy/typeshed/stdlib/fractions.pyi +152 -0
  372. jaclang/vendor/mypy/typeshed/stdlib/ftplib.pyi +214 -0
  373. jaclang/vendor/mypy/typeshed/stdlib/functools.pyi +261 -0
  374. jaclang/vendor/mypy/typeshed/stdlib/gc.pyi +39 -0
  375. jaclang/vendor/mypy/typeshed/stdlib/genericpath.pyi +62 -0
  376. jaclang/vendor/mypy/typeshed/stdlib/getopt.pyi +15 -0
  377. jaclang/vendor/mypy/typeshed/stdlib/getpass.pyi +8 -0
  378. jaclang/vendor/mypy/typeshed/stdlib/gettext.pyi +200 -0
  379. jaclang/vendor/mypy/typeshed/stdlib/glob.pyi +50 -0
  380. jaclang/vendor/mypy/typeshed/stdlib/graphlib.pyi +28 -0
  381. jaclang/vendor/mypy/typeshed/stdlib/grp.pyi +22 -0
  382. jaclang/vendor/mypy/typeshed/stdlib/gzip.pyi +162 -0
  383. jaclang/vendor/mypy/typeshed/stdlib/hashlib.pyi +191 -0
  384. jaclang/vendor/mypy/typeshed/stdlib/heapq.pyi +36 -0
  385. jaclang/vendor/mypy/typeshed/stdlib/hmac.pyi +45 -0
  386. jaclang/vendor/mypy/typeshed/stdlib/html/__init__.pyi +6 -0
  387. jaclang/vendor/mypy/typeshed/stdlib/html/entities.pyi +6 -0
  388. jaclang/vendor/mypy/typeshed/stdlib/html/parser.pyi +40 -0
  389. jaclang/vendor/mypy/typeshed/stdlib/http/__init__.pyi +105 -0
  390. jaclang/vendor/mypy/typeshed/stdlib/http/client.pyi +283 -0
  391. jaclang/vendor/mypy/typeshed/stdlib/http/cookiejar.pyi +206 -0
  392. jaclang/vendor/mypy/typeshed/stdlib/http/cookies.pyi +67 -0
  393. jaclang/vendor/mypy/typeshed/stdlib/http/server.pyi +93 -0
  394. jaclang/vendor/mypy/typeshed/stdlib/imaplib.pyi +221 -0
  395. jaclang/vendor/mypy/typeshed/stdlib/imghdr.pyi +17 -0
  396. jaclang/vendor/mypy/typeshed/stdlib/imp.pyi +75 -0
  397. jaclang/vendor/mypy/typeshed/stdlib/importlib/__init__.pyi +24 -0
  398. jaclang/vendor/mypy/typeshed/stdlib/importlib/_abc.pyi +15 -0
  399. jaclang/vendor/mypy/typeshed/stdlib/importlib/abc.pyi +195 -0
  400. jaclang/vendor/mypy/typeshed/stdlib/importlib/machinery.pyi +214 -0
  401. jaclang/vendor/mypy/typeshed/stdlib/importlib/metadata/__init__.pyi +310 -0
  402. jaclang/vendor/mypy/typeshed/stdlib/importlib/metadata/_meta.pyi +40 -0
  403. jaclang/vendor/mypy/typeshed/stdlib/importlib/readers.pyi +68 -0
  404. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/__init__.pyi +66 -0
  405. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/abc.pyi +12 -0
  406. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/readers.pyi +14 -0
  407. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/simple.pyi +55 -0
  408. jaclang/vendor/mypy/typeshed/stdlib/importlib/simple.pyi +16 -0
  409. jaclang/vendor/mypy/typeshed/stdlib/importlib/util.pyi +57 -0
  410. jaclang/vendor/mypy/typeshed/stdlib/inspect.pyi +709 -0
  411. jaclang/vendor/mypy/typeshed/stdlib/io.pyi +222 -0
  412. jaclang/vendor/mypy/typeshed/stdlib/ipaddress.pyi +229 -0
  413. jaclang/vendor/mypy/typeshed/stdlib/itertools.pyi +394 -0
  414. jaclang/vendor/mypy/typeshed/stdlib/json/__init__.pyi +69 -0
  415. jaclang/vendor/mypy/typeshed/stdlib/json/decoder.pyi +34 -0
  416. jaclang/vendor/mypy/typeshed/stdlib/json/encoder.pyi +38 -0
  417. jaclang/vendor/mypy/typeshed/stdlib/json/tool.pyi +1 -0
  418. jaclang/vendor/mypy/typeshed/stdlib/keyword.pyi +21 -0
  419. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/__init__.pyi +0 -0
  420. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/btm_matcher.pyi +32 -0
  421. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixer_base.pyi +44 -0
  422. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/__init__.pyi +0 -0
  423. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_apply.pyi +8 -0
  424. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_asserts.pyi +10 -0
  425. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_basestring.pyi +8 -0
  426. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_buffer.pyi +8 -0
  427. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_dict.pyi +16 -0
  428. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_except.pyi +14 -0
  429. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_exec.pyi +8 -0
  430. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_execfile.pyi +8 -0
  431. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_exitfunc.pyi +13 -0
  432. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_filter.pyi +9 -0
  433. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_funcattrs.pyi +8 -0
  434. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_future.pyi +8 -0
  435. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_getcwdu.pyi +8 -0
  436. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_has_key.pyi +8 -0
  437. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_idioms.pyi +15 -0
  438. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_import.pyi +16 -0
  439. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_imports.pyi +21 -0
  440. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_imports2.pyi +6 -0
  441. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_input.pyi +11 -0
  442. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_intern.pyi +9 -0
  443. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_isinstance.pyi +8 -0
  444. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_itertools.pyi +9 -0
  445. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_itertools_imports.pyi +7 -0
  446. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_long.pyi +7 -0
  447. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_map.pyi +9 -0
  448. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_metaclass.pyi +17 -0
  449. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_methodattrs.pyi +10 -0
  450. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_ne.pyi +8 -0
  451. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_next.pyi +19 -0
  452. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_nonzero.pyi +8 -0
  453. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_numliterals.pyi +8 -0
  454. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_operator.pyi +12 -0
  455. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_paren.pyi +8 -0
  456. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_print.pyi +12 -0
  457. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_raise.pyi +8 -0
  458. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_raw_input.pyi +8 -0
  459. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_reduce.pyi +8 -0
  460. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_reload.pyi +9 -0
  461. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_renames.pyi +17 -0
  462. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_repr.pyi +8 -0
  463. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_set_literal.pyi +7 -0
  464. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_standarderror.pyi +8 -0
  465. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_sys_exc.pyi +9 -0
  466. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_throw.pyi +8 -0
  467. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_tuple_params.pyi +17 -0
  468. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_types.pyi +8 -0
  469. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_unicode.pyi +12 -0
  470. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_urllib.pyi +18 -0
  471. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_ws_comma.pyi +12 -0
  472. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_xrange.pyi +20 -0
  473. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_xreadlines.pyi +8 -0
  474. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_zip.pyi +9 -0
  475. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/main.pyi +46 -0
  476. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/__init__.pyi +9 -0
  477. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/driver.pyi +40 -0
  478. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/grammar.pyi +24 -0
  479. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/literals.pyi +7 -0
  480. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/parse.pyi +36 -0
  481. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/pgen.pyi +52 -0
  482. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/token.pyi +67 -0
  483. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/tokenize.pyi +98 -0
  484. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pygram.pyi +114 -0
  485. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pytree.pyi +142 -0
  486. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/refactor.pyi +122 -0
  487. jaclang/vendor/mypy/typeshed/stdlib/linecache.pyi +29 -0
  488. jaclang/vendor/mypy/typeshed/stdlib/locale.pyi +165 -0
  489. jaclang/vendor/mypy/typeshed/stdlib/logging/__init__.pyi +685 -0
  490. jaclang/vendor/mypy/typeshed/stdlib/logging/config.pyi +161 -0
  491. jaclang/vendor/mypy/typeshed/stdlib/logging/handlers.pyi +315 -0
  492. jaclang/vendor/mypy/typeshed/stdlib/lzma.pyi +213 -0
  493. jaclang/vendor/mypy/typeshed/stdlib/mailbox.pyi +306 -0
  494. jaclang/vendor/mypy/typeshed/stdlib/mailcap.pyi +15 -0
  495. jaclang/vendor/mypy/typeshed/stdlib/marshal.pyi +35 -0
  496. jaclang/vendor/mypy/typeshed/stdlib/math.pyi +134 -0
  497. jaclang/vendor/mypy/typeshed/stdlib/mimetypes.pyi +50 -0
  498. jaclang/vendor/mypy/typeshed/stdlib/mmap.pyi +126 -0
  499. jaclang/vendor/mypy/typeshed/stdlib/modulefinder.pyi +84 -0
  500. jaclang/vendor/mypy/typeshed/stdlib/msilib/__init__.pyi +237 -0
  501. jaclang/vendor/mypy/typeshed/stdlib/msilib/schema.pyi +107 -0
  502. jaclang/vendor/mypy/typeshed/stdlib/msilib/sequence.pyi +13 -0
  503. jaclang/vendor/mypy/typeshed/stdlib/msilib/text.pyi +7 -0
  504. jaclang/vendor/mypy/typeshed/stdlib/msvcrt.pyi +32 -0
  505. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/__init__.pyi +94 -0
  506. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/connection.pyi +94 -0
  507. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/context.pyi +235 -0
  508. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/dummy/__init__.pyi +83 -0
  509. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/dummy/connection.pyi +50 -0
  510. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/forkserver.pyi +36 -0
  511. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/heap.pyi +38 -0
  512. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/managers.pyi +270 -0
  513. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/pool.pyi +137 -0
  514. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_fork.pyi +23 -0
  515. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_forkserver.pyi +16 -0
  516. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_spawn_posix.pyi +20 -0
  517. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_spawn_win32.pyi +30 -0
  518. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/process.pyi +39 -0
  519. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/queues.pyi +43 -0
  520. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/reduction.pyi +118 -0
  521. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/resource_sharer.pyi +20 -0
  522. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/resource_tracker.pyi +18 -0
  523. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/shared_memory.pyi +44 -0
  524. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/sharedctypes.pyi +140 -0
  525. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/spawn.pyi +34 -0
  526. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/synchronize.pyi +66 -0
  527. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/util.pyi +83 -0
  528. jaclang/vendor/mypy/typeshed/stdlib/netrc.pyi +28 -0
  529. jaclang/vendor/mypy/typeshed/stdlib/nis.pyi +9 -0
  530. jaclang/vendor/mypy/typeshed/stdlib/nntplib.pyi +151 -0
  531. jaclang/vendor/mypy/typeshed/stdlib/nt.pyi +114 -0
  532. jaclang/vendor/mypy/typeshed/stdlib/ntpath.pyi +119 -0
  533. jaclang/vendor/mypy/typeshed/stdlib/nturl2path.pyi +2 -0
  534. jaclang/vendor/mypy/typeshed/stdlib/numbers.pyi +154 -0
  535. jaclang/vendor/mypy/typeshed/stdlib/opcode.pyi +68 -0
  536. jaclang/vendor/mypy/typeshed/stdlib/operator.pyi +110 -0
  537. jaclang/vendor/mypy/typeshed/stdlib/optparse.pyi +290 -0
  538. jaclang/vendor/mypy/typeshed/stdlib/os/__init__.pyi +1317 -0
  539. jaclang/vendor/mypy/typeshed/stdlib/os/path.pyi +8 -0
  540. jaclang/vendor/mypy/typeshed/stdlib/ossaudiodev.pyi +131 -0
  541. jaclang/vendor/mypy/typeshed/stdlib/parser.pyi +28 -0
  542. jaclang/vendor/mypy/typeshed/stdlib/pathlib.pyi +282 -0
  543. jaclang/vendor/mypy/typeshed/stdlib/pdb.pyi +223 -0
  544. jaclang/vendor/mypy/typeshed/stdlib/pickle.pyi +286 -0
  545. jaclang/vendor/mypy/typeshed/stdlib/pickletools.pyi +173 -0
  546. jaclang/vendor/mypy/typeshed/stdlib/pipes.pyi +16 -0
  547. jaclang/vendor/mypy/typeshed/stdlib/pkgutil.pyi +61 -0
  548. jaclang/vendor/mypy/typeshed/stdlib/platform.pyi +56 -0
  549. jaclang/vendor/mypy/typeshed/stdlib/plistlib.pyi +176 -0
  550. jaclang/vendor/mypy/typeshed/stdlib/poplib.pyi +78 -0
  551. jaclang/vendor/mypy/typeshed/stdlib/posix.pyi +363 -0
  552. jaclang/vendor/mypy/typeshed/stdlib/posixpath.pyi +171 -0
  553. jaclang/vendor/mypy/typeshed/stdlib/pprint.pyi +122 -0
  554. jaclang/vendor/mypy/typeshed/stdlib/profile.pyi +43 -0
  555. jaclang/vendor/mypy/typeshed/stdlib/pstats.pyi +85 -0
  556. jaclang/vendor/mypy/typeshed/stdlib/pty.pyi +21 -0
  557. jaclang/vendor/mypy/typeshed/stdlib/pwd.pyi +36 -0
  558. jaclang/vendor/mypy/typeshed/stdlib/py_compile.pyi +40 -0
  559. jaclang/vendor/mypy/typeshed/stdlib/pyclbr.pyi +97 -0
  560. jaclang/vendor/mypy/typeshed/stdlib/pydoc.pyi +309 -0
  561. jaclang/vendor/mypy/typeshed/stdlib/pydoc_data/__init__.pyi +0 -0
  562. jaclang/vendor/mypy/typeshed/stdlib/pydoc_data/topics.pyi +1 -0
  563. jaclang/vendor/mypy/typeshed/stdlib/pyexpat/__init__.pyi +94 -0
  564. jaclang/vendor/mypy/typeshed/stdlib/pyexpat/errors.pyi +49 -0
  565. jaclang/vendor/mypy/typeshed/stdlib/pyexpat/model.pyi +11 -0
  566. jaclang/vendor/mypy/typeshed/stdlib/queue.pyi +62 -0
  567. jaclang/vendor/mypy/typeshed/stdlib/quopri.pyi +17 -0
  568. jaclang/vendor/mypy/typeshed/stdlib/random.pyi +160 -0
  569. jaclang/vendor/mypy/typeshed/stdlib/re.pyi +376 -0
  570. jaclang/vendor/mypy/typeshed/stdlib/readline.pyi +40 -0
  571. jaclang/vendor/mypy/typeshed/stdlib/reprlib.pyi +65 -0
  572. jaclang/vendor/mypy/typeshed/stdlib/resource.pyi +116 -0
  573. jaclang/vendor/mypy/typeshed/stdlib/rlcompleter.pyi +9 -0
  574. jaclang/vendor/mypy/typeshed/stdlib/runpy.pyi +31 -0
  575. jaclang/vendor/mypy/typeshed/stdlib/sched.pyi +56 -0
  576. jaclang/vendor/mypy/typeshed/stdlib/secrets.pyi +24 -0
  577. jaclang/vendor/mypy/typeshed/stdlib/select.pyi +162 -0
  578. jaclang/vendor/mypy/typeshed/stdlib/selectors.pyi +85 -0
  579. jaclang/vendor/mypy/typeshed/stdlib/shelve.pyi +64 -0
  580. jaclang/vendor/mypy/typeshed/stdlib/shlex.pyi +47 -0
  581. jaclang/vendor/mypy/typeshed/stdlib/shutil.pyi +239 -0
  582. jaclang/vendor/mypy/typeshed/stdlib/signal.pyi +208 -0
  583. jaclang/vendor/mypy/typeshed/stdlib/site.pyi +33 -0
  584. jaclang/vendor/mypy/typeshed/stdlib/smtpd.pyi +102 -0
  585. jaclang/vendor/mypy/typeshed/stdlib/smtplib.pyi +223 -0
  586. jaclang/vendor/mypy/typeshed/stdlib/sndhdr.pyi +14 -0
  587. jaclang/vendor/mypy/typeshed/stdlib/socket.pyi +881 -0
  588. jaclang/vendor/mypy/typeshed/stdlib/socketserver.pyi +195 -0
  589. jaclang/vendor/mypy/typeshed/stdlib/spwd.pyi +43 -0
  590. jaclang/vendor/mypy/typeshed/stdlib/sqlite3/__init__.pyi +1 -0
  591. jaclang/vendor/mypy/typeshed/stdlib/sqlite3/dbapi2.pyi +519 -0
  592. jaclang/vendor/mypy/typeshed/stdlib/sre_compile.pyi +11 -0
  593. jaclang/vendor/mypy/typeshed/stdlib/sre_constants.pyi +132 -0
  594. jaclang/vendor/mypy/typeshed/stdlib/sre_parse.pyi +110 -0
  595. jaclang/vendor/mypy/typeshed/stdlib/ssl.pyi +559 -0
  596. jaclang/vendor/mypy/typeshed/stdlib/stat.pyi +1 -0
  597. jaclang/vendor/mypy/typeshed/stdlib/statistics.pyi +151 -0
  598. jaclang/vendor/mypy/typeshed/stdlib/string.pyi +112 -0
  599. jaclang/vendor/mypy/typeshed/stdlib/stringprep.pyi +27 -0
  600. jaclang/vendor/mypy/typeshed/stdlib/struct.pyi +43 -0
  601. jaclang/vendor/mypy/typeshed/stdlib/subprocess.pyi +2638 -0
  602. jaclang/vendor/mypy/typeshed/stdlib/sunau.pyi +86 -0
  603. jaclang/vendor/mypy/typeshed/stdlib/symbol.pyi +93 -0
  604. jaclang/vendor/mypy/typeshed/stdlib/symtable.pyi +63 -0
  605. jaclang/vendor/mypy/typeshed/stdlib/sys/__init__.pyi +396 -0
  606. jaclang/vendor/mypy/typeshed/stdlib/sys/_monitoring.pyi +54 -0
  607. jaclang/vendor/mypy/typeshed/stdlib/sysconfig.pyi +52 -0
  608. jaclang/vendor/mypy/typeshed/stdlib/syslog.pyi +48 -0
  609. jaclang/vendor/mypy/typeshed/stdlib/tabnanny.pyi +18 -0
  610. jaclang/vendor/mypy/typeshed/stdlib/tarfile.pyi +486 -0
  611. jaclang/vendor/mypy/typeshed/stdlib/telnetlib.pyi +129 -0
  612. jaclang/vendor/mypy/typeshed/stdlib/tempfile.pyi +521 -0
  613. jaclang/vendor/mypy/typeshed/stdlib/termios.pyi +273 -0
  614. jaclang/vendor/mypy/typeshed/stdlib/textwrap.pyi +107 -0
  615. jaclang/vendor/mypy/typeshed/stdlib/this.pyi +2 -0
  616. jaclang/vendor/mypy/typeshed/stdlib/threading.pyi +212 -0
  617. jaclang/vendor/mypy/typeshed/stdlib/time.pyi +122 -0
  618. jaclang/vendor/mypy/typeshed/stdlib/timeit.pyi +46 -0
  619. jaclang/vendor/mypy/typeshed/stdlib/tkinter/__init__.pyi +3950 -0
  620. jaclang/vendor/mypy/typeshed/stdlib/tkinter/colorchooser.pyi +28 -0
  621. jaclang/vendor/mypy/typeshed/stdlib/tkinter/commondialog.pyi +16 -0
  622. jaclang/vendor/mypy/typeshed/stdlib/tkinter/constants.pyi +80 -0
  623. jaclang/vendor/mypy/typeshed/stdlib/tkinter/dialog.pyi +21 -0
  624. jaclang/vendor/mypy/typeshed/stdlib/tkinter/dnd.pyi +20 -0
  625. jaclang/vendor/mypy/typeshed/stdlib/tkinter/filedialog.pyi +173 -0
  626. jaclang/vendor/mypy/typeshed/stdlib/tkinter/font.pyi +148 -0
  627. jaclang/vendor/mypy/typeshed/stdlib/tkinter/messagebox.pyi +60 -0
  628. jaclang/vendor/mypy/typeshed/stdlib/tkinter/scrolledtext.pyi +10 -0
  629. jaclang/vendor/mypy/typeshed/stdlib/tkinter/simpledialog.pyi +54 -0
  630. jaclang/vendor/mypy/typeshed/stdlib/tkinter/tix.pyi +395 -0
  631. jaclang/vendor/mypy/typeshed/stdlib/tkinter/ttk.pyi +1276 -0
  632. jaclang/vendor/mypy/typeshed/stdlib/token.pyi +159 -0
  633. jaclang/vendor/mypy/typeshed/stdlib/tokenize.pyi +185 -0
  634. jaclang/vendor/mypy/typeshed/stdlib/tomllib.pyi +12 -0
  635. jaclang/vendor/mypy/typeshed/stdlib/trace.pyi +114 -0
  636. jaclang/vendor/mypy/typeshed/stdlib/traceback.pyi +297 -0
  637. jaclang/vendor/mypy/typeshed/stdlib/tracemalloc.pyi +142 -0
  638. jaclang/vendor/mypy/typeshed/stdlib/tty.pyi +30 -0
  639. jaclang/vendor/mypy/typeshed/stdlib/turtle.pyi +830 -0
  640. jaclang/vendor/mypy/typeshed/stdlib/types.pyi +647 -0
  641. jaclang/vendor/mypy/typeshed/stdlib/typing.pyi +1059 -0
  642. jaclang/vendor/mypy/typeshed/stdlib/typing_extensions.pyi +524 -0
  643. jaclang/vendor/mypy/typeshed/stdlib/unicodedata.pyi +71 -0
  644. jaclang/vendor/mypy/typeshed/stdlib/unittest/__init__.pyi +72 -0
  645. jaclang/vendor/mypy/typeshed/stdlib/unittest/_log.pyi +34 -0
  646. jaclang/vendor/mypy/typeshed/stdlib/unittest/async_case.pyi +28 -0
  647. jaclang/vendor/mypy/typeshed/stdlib/unittest/case.pyi +481 -0
  648. jaclang/vendor/mypy/typeshed/stdlib/unittest/loader.pyi +71 -0
  649. jaclang/vendor/mypy/typeshed/stdlib/unittest/main.pyi +75 -0
  650. jaclang/vendor/mypy/typeshed/stdlib/unittest/mock.pyi +468 -0
  651. jaclang/vendor/mypy/typeshed/stdlib/unittest/result.pyi +59 -0
  652. jaclang/vendor/mypy/typeshed/stdlib/unittest/runner.pyi +83 -0
  653. jaclang/vendor/mypy/typeshed/stdlib/unittest/signals.pyi +15 -0
  654. jaclang/vendor/mypy/typeshed/stdlib/unittest/suite.pyi +26 -0
  655. jaclang/vendor/mypy/typeshed/stdlib/unittest/util.pyi +31 -0
  656. jaclang/vendor/mypy/typeshed/stdlib/urllib/__init__.pyi +0 -0
  657. jaclang/vendor/mypy/typeshed/stdlib/urllib/error.pyi +27 -0
  658. jaclang/vendor/mypy/typeshed/stdlib/urllib/parse.pyi +245 -0
  659. jaclang/vendor/mypy/typeshed/stdlib/urllib/request.pyi +544 -0
  660. jaclang/vendor/mypy/typeshed/stdlib/urllib/response.pyi +50 -0
  661. jaclang/vendor/mypy/typeshed/stdlib/urllib/robotparser.pyi +20 -0
  662. jaclang/vendor/mypy/typeshed/stdlib/uu.pyi +23 -0
  663. jaclang/vendor/mypy/typeshed/stdlib/uuid.pyi +100 -0
  664. jaclang/vendor/mypy/typeshed/stdlib/warnings.pyi +144 -0
  665. jaclang/vendor/mypy/typeshed/stdlib/wave.pyi +87 -0
  666. jaclang/vendor/mypy/typeshed/stdlib/weakref.pyi +173 -0
  667. jaclang/vendor/mypy/typeshed/stdlib/webbrowser.pyi +80 -0
  668. jaclang/vendor/mypy/typeshed/stdlib/winreg.pyi +120 -0
  669. jaclang/vendor/mypy/typeshed/stdlib/winsound.pyi +28 -0
  670. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/__init__.pyi +0 -0
  671. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/handlers.pyi +109 -0
  672. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/headers.pyi +28 -0
  673. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/simple_server.pyi +49 -0
  674. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/types.pyi +44 -0
  675. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/util.pyi +31 -0
  676. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/validate.pyi +52 -0
  677. jaclang/vendor/mypy/typeshed/stdlib/xdrlib.pyi +63 -0
  678. jaclang/vendor/mypy/typeshed/stdlib/xml/__init__.pyi +1 -0
  679. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/NodeFilter.pyi +19 -0
  680. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/__init__.pyi +72 -0
  681. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/domreg.pyi +12 -0
  682. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/expatbuilder.pyi +111 -0
  683. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/minicompat.pyi +22 -0
  684. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/minidom.pyi +467 -0
  685. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/pulldom.pyi +101 -0
  686. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/xmlbuilder.pyi +110 -0
  687. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/ElementInclude.pyi +35 -0
  688. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/ElementPath.pyi +49 -0
  689. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/ElementTree.pyi +367 -0
  690. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/__init__.pyi +0 -0
  691. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/cElementTree.pyi +1 -0
  692. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/__init__.pyi +1 -0
  693. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/expat/__init__.pyi +1 -0
  694. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/expat/errors.pyi +1 -0
  695. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/expat/model.pyi +1 -0
  696. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/__init__.pyi +34 -0
  697. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/_exceptions.pyi +21 -0
  698. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/handler.pyi +59 -0
  699. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/saxutils.pyi +71 -0
  700. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/xmlreader.pyi +89 -0
  701. jaclang/vendor/mypy/typeshed/stdlib/xmlrpc/__init__.pyi +0 -0
  702. jaclang/vendor/mypy/typeshed/stdlib/xmlrpc/client.pyi +348 -0
  703. jaclang/vendor/mypy/typeshed/stdlib/xmlrpc/server.pyi +186 -0
  704. jaclang/vendor/mypy/typeshed/stdlib/xxlimited.pyi +22 -0
  705. jaclang/vendor/mypy/typeshed/stdlib/zipapp.pyi +20 -0
  706. jaclang/vendor/mypy/typeshed/stdlib/zipfile/__init__.pyi +355 -0
  707. jaclang/vendor/mypy/typeshed/stdlib/zipfile/_path.pyi +105 -0
  708. jaclang/vendor/mypy/typeshed/stdlib/zipimport.pyi +40 -0
  709. jaclang/vendor/mypy/typeshed/stdlib/zlib.pyi +63 -0
  710. jaclang/vendor/mypy/typeshed/stdlib/zoneinfo/__init__.pyi +45 -0
  711. jaclang/vendor/mypy/typeshed/stubs/mypy-extensions/@tests/stubtest_allowlist.txt +2 -0
  712. jaclang/vendor/mypy/typeshed/stubs/mypy-extensions/METADATA.toml +4 -0
  713. jaclang/vendor/mypy/typeshed/stubs/mypy-extensions/mypy_extensions.pyi +238 -0
  714. jaclang/vendor/mypy/xml/mypy-html.css +104 -0
  715. jaclang/vendor/mypy/xml/mypy-html.xslt +81 -0
  716. jaclang/vendor/mypy/xml/mypy-txt.xslt +100 -0
  717. jaclang/vendor/mypy/xml/mypy.xsd +50 -0
  718. jaclang/vendor/mypyc/.readthedocs.yaml +18 -0
  719. jaclang/vendor/mypyc/README.md +133 -0
  720. jaclang/vendor/mypyc/doc/Makefile +20 -0
  721. jaclang/vendor/mypyc/doc/bool_operations.rst +27 -0
  722. jaclang/vendor/mypyc/doc/compilation_units.rst +20 -0
  723. jaclang/vendor/mypyc/doc/conf.py +59 -0
  724. jaclang/vendor/mypyc/doc/cpython-timings.md +25 -0
  725. jaclang/vendor/mypyc/doc/dev-intro.md +548 -0
  726. jaclang/vendor/mypyc/doc/dict_operations.rst +59 -0
  727. jaclang/vendor/mypyc/doc/differences_from_python.rst +332 -0
  728. jaclang/vendor/mypyc/doc/float_operations.rst +50 -0
  729. jaclang/vendor/mypyc/doc/future.md +42 -0
  730. jaclang/vendor/mypyc/doc/getting_started.rst +240 -0
  731. jaclang/vendor/mypyc/doc/index.rst +61 -0
  732. jaclang/vendor/mypyc/doc/int_operations.rst +162 -0
  733. jaclang/vendor/mypyc/doc/introduction.rst +150 -0
  734. jaclang/vendor/mypyc/doc/list_operations.rst +65 -0
  735. jaclang/vendor/mypyc/doc/make.bat +35 -0
  736. jaclang/vendor/mypyc/doc/native_classes.rst +206 -0
  737. jaclang/vendor/mypyc/doc/native_operations.rst +55 -0
  738. jaclang/vendor/mypyc/doc/performance_tips_and_tricks.rst +244 -0
  739. jaclang/vendor/mypyc/doc/set_operations.rst +47 -0
  740. jaclang/vendor/mypyc/doc/str_operations.rst +35 -0
  741. jaclang/vendor/mypyc/doc/tuple_operations.rst +33 -0
  742. jaclang/vendor/mypyc/doc/using_type_annotations.rst +398 -0
  743. jaclang/vendor/mypyc/external/googletest/LICENSE +28 -0
  744. jaclang/vendor/mypyc/external/googletest/README.md +280 -0
  745. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-death-test.h +294 -0
  746. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-message.h +250 -0
  747. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-param-test.h +1444 -0
  748. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-param-test.h.pump +510 -0
  749. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-printers.h +993 -0
  750. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-spi.h +232 -0
  751. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-test-part.h +179 -0
  752. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-typed-test.h +263 -0
  753. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest.h +2236 -0
  754. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest_pred_impl.h +358 -0
  755. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest_prod.h +58 -0
  756. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/custom/gtest-port.h +69 -0
  757. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/custom/gtest-printers.h +42 -0
  758. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/custom/gtest.h +41 -0
  759. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-death-test-internal.h +319 -0
  760. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-filepath.h +206 -0
  761. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-internal.h +1238 -0
  762. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-linked_ptr.h +243 -0
  763. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-param-util-generated.h +5146 -0
  764. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-param-util-generated.h.pump +286 -0
  765. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-param-util.h +731 -0
  766. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-port-arch.h +93 -0
  767. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-port.h +2560 -0
  768. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-string.h +167 -0
  769. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-tuple.h +1020 -0
  770. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-tuple.h.pump +347 -0
  771. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-type-util.h +3331 -0
  772. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-type-util.h.pump +297 -0
  773. jaclang/vendor/mypyc/external/googletest/make/Makefile +61 -0
  774. jaclang/vendor/mypyc/external/googletest/src/gtest-all.cc +48 -0
  775. jaclang/vendor/mypyc/external/googletest/src/gtest-death-test.cc +1342 -0
  776. jaclang/vendor/mypyc/external/googletest/src/gtest-filepath.cc +387 -0
  777. jaclang/vendor/mypyc/external/googletest/src/gtest-internal-inl.h +1183 -0
  778. jaclang/vendor/mypyc/external/googletest/src/gtest-port.cc +1259 -0
  779. jaclang/vendor/mypyc/external/googletest/src/gtest-printers.cc +373 -0
  780. jaclang/vendor/mypyc/external/googletest/src/gtest-test-part.cc +110 -0
  781. jaclang/vendor/mypyc/external/googletest/src/gtest-typed-test.cc +118 -0
  782. jaclang/vendor/mypyc/external/googletest/src/gtest.cc +5388 -0
  783. jaclang/vendor/mypyc/external/googletest/src/gtest_main.cc +38 -0
  784. jaclang/vendor/mypyc/lib-rt/CPy.h +643 -0
  785. jaclang/vendor/mypyc/lib-rt/bytes_ops.c +143 -0
  786. jaclang/vendor/mypyc/lib-rt/dict_ops.c +446 -0
  787. jaclang/vendor/mypyc/lib-rt/exc_ops.c +259 -0
  788. jaclang/vendor/mypyc/lib-rt/float_ops.c +192 -0
  789. jaclang/vendor/mypyc/lib-rt/generic_ops.c +64 -0
  790. jaclang/vendor/mypyc/lib-rt/getargs.c +450 -0
  791. jaclang/vendor/mypyc/lib-rt/getargsfast.c +569 -0
  792. jaclang/vendor/mypyc/lib-rt/init.c +13 -0
  793. jaclang/vendor/mypyc/lib-rt/int_ops.c +803 -0
  794. jaclang/vendor/mypyc/lib-rt/list_ops.c +335 -0
  795. jaclang/vendor/mypyc/lib-rt/misc_ops.c +942 -0
  796. jaclang/vendor/mypyc/lib-rt/module_shim.tmpl +18 -0
  797. jaclang/vendor/mypyc/lib-rt/mypyc_util.h +118 -0
  798. jaclang/vendor/mypyc/lib-rt/pythoncapi_compat.h +497 -0
  799. jaclang/vendor/mypyc/lib-rt/pythonsupport.h +548 -0
  800. jaclang/vendor/mypyc/lib-rt/set_ops.c +17 -0
  801. jaclang/vendor/mypyc/lib-rt/setup.py +76 -0
  802. jaclang/vendor/mypyc/lib-rt/str_ops.c +241 -0
  803. jaclang/vendor/mypyc/lib-rt/test_capi.cc +585 -0
  804. jaclang/vendor/mypyc/lib-rt/tuple_ops.c +61 -0
  805. jaclang/vendor/mypyc/test-data/alwaysdefined.test +732 -0
  806. jaclang/vendor/mypyc/test-data/analysis.test +603 -0
  807. jaclang/vendor/mypyc/test-data/commandline.test +245 -0
  808. jaclang/vendor/mypyc/test-data/driver/driver.py +50 -0
  809. jaclang/vendor/mypyc/test-data/exceptions-freq.test +125 -0
  810. jaclang/vendor/mypyc/test-data/exceptions.test +713 -0
  811. jaclang/vendor/mypyc/test-data/fixtures/ir.py +850 -0
  812. jaclang/vendor/mypyc/test-data/fixtures/testutil.py +117 -0
  813. jaclang/vendor/mypyc/test-data/fixtures/typing-full.pyi +212 -0
  814. jaclang/vendor/mypyc/test-data/irbuild-any.test +238 -0
  815. jaclang/vendor/mypyc/test-data/irbuild-basic.test +3690 -0
  816. jaclang/vendor/mypyc/test-data/irbuild-bool.test +463 -0
  817. jaclang/vendor/mypyc/test-data/irbuild-bytes.test +184 -0
  818. jaclang/vendor/mypyc/test-data/irbuild-classes.test +1303 -0
  819. jaclang/vendor/mypyc/test-data/irbuild-constant-fold.test +480 -0
  820. jaclang/vendor/mypyc/test-data/irbuild-dict.test +585 -0
  821. jaclang/vendor/mypyc/test-data/irbuild-dunders.test +223 -0
  822. jaclang/vendor/mypyc/test-data/irbuild-float.test +497 -0
  823. jaclang/vendor/mypyc/test-data/irbuild-generics.test +151 -0
  824. jaclang/vendor/mypyc/test-data/irbuild-glue-methods.test +437 -0
  825. jaclang/vendor/mypyc/test-data/irbuild-i16.test +526 -0
  826. jaclang/vendor/mypyc/test-data/irbuild-i32.test +598 -0
  827. jaclang/vendor/mypyc/test-data/irbuild-i64.test +2164 -0
  828. jaclang/vendor/mypyc/test-data/irbuild-int.test +235 -0
  829. jaclang/vendor/mypyc/test-data/irbuild-isinstance.test +109 -0
  830. jaclang/vendor/mypyc/test-data/irbuild-lists.test +547 -0
  831. jaclang/vendor/mypyc/test-data/irbuild-match.test +1708 -0
  832. jaclang/vendor/mypyc/test-data/irbuild-math.test +64 -0
  833. jaclang/vendor/mypyc/test-data/irbuild-nested.test +807 -0
  834. jaclang/vendor/mypyc/test-data/irbuild-optional.test +536 -0
  835. jaclang/vendor/mypyc/test-data/irbuild-set.test +838 -0
  836. jaclang/vendor/mypyc/test-data/irbuild-singledispatch.test +257 -0
  837. jaclang/vendor/mypyc/test-data/irbuild-statements.test +1149 -0
  838. jaclang/vendor/mypyc/test-data/irbuild-str.test +314 -0
  839. jaclang/vendor/mypyc/test-data/irbuild-strip-asserts.test +12 -0
  840. jaclang/vendor/mypyc/test-data/irbuild-try.test +523 -0
  841. jaclang/vendor/mypyc/test-data/irbuild-tuple.test +462 -0
  842. jaclang/vendor/mypyc/test-data/irbuild-u8.test +543 -0
  843. jaclang/vendor/mypyc/test-data/irbuild-unreachable.test +241 -0
  844. jaclang/vendor/mypyc/test-data/irbuild-vectorcall.test +153 -0
  845. jaclang/vendor/mypyc/test-data/refcount.test +1588 -0
  846. jaclang/vendor/mypyc/test-data/run-async.test +145 -0
  847. jaclang/vendor/mypyc/test-data/run-attrs.test +318 -0
  848. jaclang/vendor/mypyc/test-data/run-bench.test +196 -0
  849. jaclang/vendor/mypyc/test-data/run-bools.test +229 -0
  850. jaclang/vendor/mypyc/test-data/run-bytes.test +302 -0
  851. jaclang/vendor/mypyc/test-data/run-classes.test +2505 -0
  852. jaclang/vendor/mypyc/test-data/run-dicts.test +334 -0
  853. jaclang/vendor/mypyc/test-data/run-dunders.test +945 -0
  854. jaclang/vendor/mypyc/test-data/run-exceptions.test +448 -0
  855. jaclang/vendor/mypyc/test-data/run-floats.test +516 -0
  856. jaclang/vendor/mypyc/test-data/run-functions.test +1310 -0
  857. jaclang/vendor/mypyc/test-data/run-generators.test +681 -0
  858. jaclang/vendor/mypyc/test-data/run-i16.test +338 -0
  859. jaclang/vendor/mypyc/test-data/run-i32.test +336 -0
  860. jaclang/vendor/mypyc/test-data/run-i64.test +1519 -0
  861. jaclang/vendor/mypyc/test-data/run-imports.test +265 -0
  862. jaclang/vendor/mypyc/test-data/run-integers.test +540 -0
  863. jaclang/vendor/mypyc/test-data/run-lists.test +411 -0
  864. jaclang/vendor/mypyc/test-data/run-loops.test +485 -0
  865. jaclang/vendor/mypyc/test-data/run-match.test +283 -0
  866. jaclang/vendor/mypyc/test-data/run-math.test +106 -0
  867. jaclang/vendor/mypyc/test-data/run-misc.test +1168 -0
  868. jaclang/vendor/mypyc/test-data/run-multimodule.test +887 -0
  869. jaclang/vendor/mypyc/test-data/run-mypy-sim.test +138 -0
  870. jaclang/vendor/mypyc/test-data/run-primitives.test +375 -0
  871. jaclang/vendor/mypyc/test-data/run-python37.test +159 -0
  872. jaclang/vendor/mypyc/test-data/run-python38.test +88 -0
  873. jaclang/vendor/mypyc/test-data/run-sets.test +150 -0
  874. jaclang/vendor/mypyc/test-data/run-singledispatch.test +698 -0
  875. jaclang/vendor/mypyc/test-data/run-strings.test +641 -0
  876. jaclang/vendor/mypyc/test-data/run-traits.test +411 -0
  877. jaclang/vendor/mypyc/test-data/run-tuples.test +258 -0
  878. jaclang/vendor/mypyc/test-data/run-u8.test +303 -0
  879. jaclang/vendor/pluggy/LICENSE +21 -0
  880. jaclang-0.6.2.dist-info/METADATA +110 -0
  881. jaclang-0.6.2.dist-info/RECORD +1305 -0
  882. {jaclang-0.6.1.dist-info → jaclang-0.6.2.dist-info}/WHEEL +1 -2
  883. jaclang-0.6.2.dist-info/entry_points.txt +3 -0
  884. jaclang/compiler/generated/jac_parser.py +0 -4069
  885. jaclang-0.6.1.dist-info/METADATA +0 -17
  886. jaclang-0.6.1.dist-info/RECORD +0 -430
  887. jaclang-0.6.1.dist-info/entry_points.txt +0 -2
  888. jaclang-0.6.1.dist-info/top_level.txt +0 -1
  889. /jaclang/{compiler/generated/__init__.py → vendor/mypy/typeshed/stdlib/concurrent/__init__.pyi} +0 -0
@@ -0,0 +1,3690 @@
1
+ [case testTrivialFunction]
2
+ def f() -> int:
3
+ return 1
4
+ [out]
5
+ def f():
6
+ L0:
7
+ return 2
8
+ [case testFunctionArgument]
9
+ def f(x: int) -> int:
10
+ return x
11
+ [out]
12
+ def f(x):
13
+ x :: int
14
+ L0:
15
+ return x
16
+
17
+
18
+ [case testExplicitNoneReturn]
19
+ def f() -> None:
20
+ return
21
+ [out]
22
+ def f():
23
+ L0:
24
+ return 1
25
+
26
+ [case testExplicitNoneReturn2]
27
+ def f() -> None:
28
+ return None
29
+ [out]
30
+ def f():
31
+ L0:
32
+ return 1
33
+
34
+ [case testAssignment]
35
+ def f() -> int:
36
+ x = 1
37
+ y = x
38
+ return y
39
+ [out]
40
+ def f():
41
+ x, y :: int
42
+ L0:
43
+ x = 2
44
+ y = x
45
+ return y
46
+
47
+ [case testAssignmentTwice]
48
+ def f(x: int) -> None:
49
+ y = 1
50
+ y = x
51
+ return
52
+ [out]
53
+ def f(x):
54
+ x, y :: int
55
+ L0:
56
+ y = 2
57
+ y = x
58
+ return 1
59
+
60
+ [case testIntArithmetic]
61
+ def f(x: int, y: int) -> int:
62
+ return x * (y + 1)
63
+ [out]
64
+ def f(x, y):
65
+ x, y, r0, r1 :: int
66
+ L0:
67
+ r0 = CPyTagged_Add(y, 2)
68
+ r1 = CPyTagged_Multiply(x, r0)
69
+ return r1
70
+
71
+ [case testIf]
72
+ def f(x: int, y: int) -> int:
73
+ if x < y:
74
+ x = 1
75
+ return x
76
+ [out]
77
+ def f(x, y):
78
+ x, y :: int
79
+ r0 :: native_int
80
+ r1 :: bit
81
+ r2 :: native_int
82
+ r3, r4, r5 :: bit
83
+ L0:
84
+ r0 = x & 1
85
+ r1 = r0 != 0
86
+ if r1 goto L2 else goto L1 :: bool
87
+ L1:
88
+ r2 = y & 1
89
+ r3 = r2 != 0
90
+ if r3 goto L2 else goto L3 :: bool
91
+ L2:
92
+ r4 = CPyTagged_IsLt_(x, y)
93
+ if r4 goto L4 else goto L5 :: bool
94
+ L3:
95
+ r5 = x < y :: signed
96
+ if r5 goto L4 else goto L5 :: bool
97
+ L4:
98
+ x = 2
99
+ L5:
100
+ return x
101
+
102
+ [case testIfElse]
103
+ def f(x: int, y: int) -> int:
104
+ if x < y:
105
+ x = 1
106
+ else:
107
+ x = 2
108
+ return x
109
+ [out]
110
+ def f(x, y):
111
+ x, y :: int
112
+ r0 :: native_int
113
+ r1 :: bit
114
+ r2 :: native_int
115
+ r3, r4, r5 :: bit
116
+ L0:
117
+ r0 = x & 1
118
+ r1 = r0 != 0
119
+ if r1 goto L2 else goto L1 :: bool
120
+ L1:
121
+ r2 = y & 1
122
+ r3 = r2 != 0
123
+ if r3 goto L2 else goto L3 :: bool
124
+ L2:
125
+ r4 = CPyTagged_IsLt_(x, y)
126
+ if r4 goto L4 else goto L5 :: bool
127
+ L3:
128
+ r5 = x < y :: signed
129
+ if r5 goto L4 else goto L5 :: bool
130
+ L4:
131
+ x = 2
132
+ goto L6
133
+ L5:
134
+ x = 4
135
+ L6:
136
+ return x
137
+
138
+ [case testAnd1]
139
+ def f(x: int, y: int) -> int:
140
+ if x < y and x > y:
141
+ x = 1
142
+ else:
143
+ x = 2
144
+ return x
145
+ [out]
146
+ def f(x, y):
147
+ x, y :: int
148
+ r0 :: native_int
149
+ r1 :: bit
150
+ r2 :: native_int
151
+ r3, r4, r5 :: bit
152
+ r6 :: native_int
153
+ r7 :: bit
154
+ r8 :: native_int
155
+ r9, r10, r11 :: bit
156
+ L0:
157
+ r0 = x & 1
158
+ r1 = r0 != 0
159
+ if r1 goto L2 else goto L1 :: bool
160
+ L1:
161
+ r2 = y & 1
162
+ r3 = r2 != 0
163
+ if r3 goto L2 else goto L3 :: bool
164
+ L2:
165
+ r4 = CPyTagged_IsLt_(x, y)
166
+ if r4 goto L4 else goto L9 :: bool
167
+ L3:
168
+ r5 = x < y :: signed
169
+ if r5 goto L4 else goto L9 :: bool
170
+ L4:
171
+ r6 = x & 1
172
+ r7 = r6 != 0
173
+ if r7 goto L6 else goto L5 :: bool
174
+ L5:
175
+ r8 = y & 1
176
+ r9 = r8 != 0
177
+ if r9 goto L6 else goto L7 :: bool
178
+ L6:
179
+ r10 = CPyTagged_IsLt_(y, x)
180
+ if r10 goto L8 else goto L9 :: bool
181
+ L7:
182
+ r11 = x > y :: signed
183
+ if r11 goto L8 else goto L9 :: bool
184
+ L8:
185
+ x = 2
186
+ goto L10
187
+ L9:
188
+ x = 4
189
+ L10:
190
+ return x
191
+
192
+ [case testAnd2]
193
+ def f(x: object, y: object) -> str:
194
+ return str(x) or str(y)
195
+ [out]
196
+ def f(x, y):
197
+ x, y :: object
198
+ r0 :: str
199
+ r1 :: bit
200
+ r2, r3 :: str
201
+ L0:
202
+ r0 = PyObject_Str(x)
203
+ r1 = CPyStr_IsTrue(r0)
204
+ if r1 goto L1 else goto L2 :: bool
205
+ L1:
206
+ r2 = r0
207
+ goto L3
208
+ L2:
209
+ r3 = PyObject_Str(y)
210
+ r2 = r3
211
+ L3:
212
+ return r2
213
+
214
+ [case testOr]
215
+ def f(x: int, y: int) -> int:
216
+ if x < y or x > y:
217
+ x = 1
218
+ else:
219
+ x = 2
220
+ return x
221
+ [out]
222
+ def f(x, y):
223
+ x, y :: int
224
+ r0 :: native_int
225
+ r1 :: bit
226
+ r2 :: native_int
227
+ r3, r4, r5 :: bit
228
+ r6 :: native_int
229
+ r7 :: bit
230
+ r8 :: native_int
231
+ r9, r10, r11 :: bit
232
+ L0:
233
+ r0 = x & 1
234
+ r1 = r0 != 0
235
+ if r1 goto L2 else goto L1 :: bool
236
+ L1:
237
+ r2 = y & 1
238
+ r3 = r2 != 0
239
+ if r3 goto L2 else goto L3 :: bool
240
+ L2:
241
+ r4 = CPyTagged_IsLt_(x, y)
242
+ if r4 goto L8 else goto L4 :: bool
243
+ L3:
244
+ r5 = x < y :: signed
245
+ if r5 goto L8 else goto L4 :: bool
246
+ L4:
247
+ r6 = x & 1
248
+ r7 = r6 != 0
249
+ if r7 goto L6 else goto L5 :: bool
250
+ L5:
251
+ r8 = y & 1
252
+ r9 = r8 != 0
253
+ if r9 goto L6 else goto L7 :: bool
254
+ L6:
255
+ r10 = CPyTagged_IsLt_(y, x)
256
+ if r10 goto L8 else goto L9 :: bool
257
+ L7:
258
+ r11 = x > y :: signed
259
+ if r11 goto L8 else goto L9 :: bool
260
+ L8:
261
+ x = 2
262
+ goto L10
263
+ L9:
264
+ x = 4
265
+ L10:
266
+ return x
267
+
268
+ [case testOr2]
269
+ def f(x: object, y: object) -> str:
270
+ return str(x) and str(y)
271
+ [out]
272
+ def f(x, y):
273
+ x, y :: object
274
+ r0 :: str
275
+ r1 :: bit
276
+ r2, r3 :: str
277
+ L0:
278
+ r0 = PyObject_Str(x)
279
+ r1 = CPyStr_IsTrue(r0)
280
+ if r1 goto L2 else goto L1 :: bool
281
+ L1:
282
+ r2 = r0
283
+ goto L3
284
+ L2:
285
+ r3 = PyObject_Str(y)
286
+ r2 = r3
287
+ L3:
288
+ return r2
289
+
290
+ [case testSimpleNot]
291
+ def f(x: int, y: int) -> int:
292
+ if not (x < y):
293
+ x = 1
294
+ return x
295
+ [out]
296
+ def f(x, y):
297
+ x, y :: int
298
+ r0 :: native_int
299
+ r1 :: bit
300
+ r2 :: native_int
301
+ r3, r4, r5 :: bit
302
+ L0:
303
+ r0 = x & 1
304
+ r1 = r0 != 0
305
+ if r1 goto L2 else goto L1 :: bool
306
+ L1:
307
+ r2 = y & 1
308
+ r3 = r2 != 0
309
+ if r3 goto L2 else goto L3 :: bool
310
+ L2:
311
+ r4 = CPyTagged_IsLt_(x, y)
312
+ if r4 goto L5 else goto L4 :: bool
313
+ L3:
314
+ r5 = x < y :: signed
315
+ if r5 goto L5 else goto L4 :: bool
316
+ L4:
317
+ x = 2
318
+ L5:
319
+ return x
320
+
321
+ [case testNotAnd]
322
+ def f(x: int, y: int) -> int:
323
+ if not (x < y and x > y):
324
+ x = 1
325
+ return x
326
+ [out]
327
+ def f(x, y):
328
+ x, y :: int
329
+ r0 :: native_int
330
+ r1 :: bit
331
+ r2 :: native_int
332
+ r3, r4, r5 :: bit
333
+ r6 :: native_int
334
+ r7 :: bit
335
+ r8 :: native_int
336
+ r9, r10, r11 :: bit
337
+ L0:
338
+ r0 = x & 1
339
+ r1 = r0 != 0
340
+ if r1 goto L2 else goto L1 :: bool
341
+ L1:
342
+ r2 = y & 1
343
+ r3 = r2 != 0
344
+ if r3 goto L2 else goto L3 :: bool
345
+ L2:
346
+ r4 = CPyTagged_IsLt_(x, y)
347
+ if r4 goto L4 else goto L8 :: bool
348
+ L3:
349
+ r5 = x < y :: signed
350
+ if r5 goto L4 else goto L8 :: bool
351
+ L4:
352
+ r6 = x & 1
353
+ r7 = r6 != 0
354
+ if r7 goto L6 else goto L5 :: bool
355
+ L5:
356
+ r8 = y & 1
357
+ r9 = r8 != 0
358
+ if r9 goto L6 else goto L7 :: bool
359
+ L6:
360
+ r10 = CPyTagged_IsLt_(y, x)
361
+ if r10 goto L9 else goto L8 :: bool
362
+ L7:
363
+ r11 = x > y :: signed
364
+ if r11 goto L9 else goto L8 :: bool
365
+ L8:
366
+ x = 2
367
+ L9:
368
+ return x
369
+
370
+ [case testWhile]
371
+ def f(x: int, y: int) -> int:
372
+ while x > y:
373
+ x = x - y
374
+ return x
375
+ [out]
376
+ def f(x, y):
377
+ x, y :: int
378
+ r0 :: native_int
379
+ r1 :: bit
380
+ r2 :: native_int
381
+ r3, r4, r5 :: bit
382
+ r6 :: int
383
+ L0:
384
+ L1:
385
+ r0 = x & 1
386
+ r1 = r0 != 0
387
+ if r1 goto L3 else goto L2 :: bool
388
+ L2:
389
+ r2 = y & 1
390
+ r3 = r2 != 0
391
+ if r3 goto L3 else goto L4 :: bool
392
+ L3:
393
+ r4 = CPyTagged_IsLt_(y, x)
394
+ if r4 goto L5 else goto L6 :: bool
395
+ L4:
396
+ r5 = x > y :: signed
397
+ if r5 goto L5 else goto L6 :: bool
398
+ L5:
399
+ r6 = CPyTagged_Subtract(x, y)
400
+ x = r6
401
+ goto L1
402
+ L6:
403
+ return x
404
+
405
+ [case testWhile2]
406
+ def f(x: int, y: int) -> int:
407
+ x = 1
408
+ while x > y:
409
+ x = x - y
410
+ return x
411
+ [out]
412
+ def f(x, y):
413
+ x, y :: int
414
+ r0 :: native_int
415
+ r1 :: bit
416
+ r2 :: native_int
417
+ r3, r4, r5 :: bit
418
+ r6 :: int
419
+ L0:
420
+ x = 2
421
+ L1:
422
+ r0 = x & 1
423
+ r1 = r0 != 0
424
+ if r1 goto L3 else goto L2 :: bool
425
+ L2:
426
+ r2 = y & 1
427
+ r3 = r2 != 0
428
+ if r3 goto L3 else goto L4 :: bool
429
+ L3:
430
+ r4 = CPyTagged_IsLt_(y, x)
431
+ if r4 goto L5 else goto L6 :: bool
432
+ L4:
433
+ r5 = x > y :: signed
434
+ if r5 goto L5 else goto L6 :: bool
435
+ L5:
436
+ r6 = CPyTagged_Subtract(x, y)
437
+ x = r6
438
+ goto L1
439
+ L6:
440
+ return x
441
+
442
+ [case testImplicitNoneReturn]
443
+ def f() -> None:
444
+ pass
445
+ [out]
446
+ def f():
447
+ L0:
448
+ return 1
449
+
450
+ [case testImplicitNoneReturn2]
451
+ def f() -> None:
452
+ x = 1
453
+ [out]
454
+ def f():
455
+ x :: int
456
+ L0:
457
+ x = 2
458
+ return 1
459
+
460
+ [case testImplicitNoneReturnAndIf]
461
+ def f(x: int, y: int) -> None:
462
+ if x < y:
463
+ x = 1
464
+ else:
465
+ y = 2
466
+ [out]
467
+ def f(x, y):
468
+ x, y :: int
469
+ r0 :: native_int
470
+ r1 :: bit
471
+ r2 :: native_int
472
+ r3, r4, r5 :: bit
473
+ L0:
474
+ r0 = x & 1
475
+ r1 = r0 != 0
476
+ if r1 goto L2 else goto L1 :: bool
477
+ L1:
478
+ r2 = y & 1
479
+ r3 = r2 != 0
480
+ if r3 goto L2 else goto L3 :: bool
481
+ L2:
482
+ r4 = CPyTagged_IsLt_(x, y)
483
+ if r4 goto L4 else goto L5 :: bool
484
+ L3:
485
+ r5 = x < y :: signed
486
+ if r5 goto L4 else goto L5 :: bool
487
+ L4:
488
+ x = 2
489
+ goto L6
490
+ L5:
491
+ y = 4
492
+ L6:
493
+ return 1
494
+
495
+ [case testRecursion]
496
+ def f(n: int) -> int:
497
+ if n <= 1:
498
+ return 1
499
+ else:
500
+ return f(n - 1) + f(n - 2)
501
+ [out]
502
+ def f(n):
503
+ n :: int
504
+ r0 :: native_int
505
+ r1, r2, r3 :: bit
506
+ r4, r5, r6, r7, r8 :: int
507
+ L0:
508
+ r0 = n & 1
509
+ r1 = r0 != 0
510
+ if r1 goto L1 else goto L2 :: bool
511
+ L1:
512
+ r2 = CPyTagged_IsLt_(2, n)
513
+ if r2 goto L4 else goto L3 :: bool
514
+ L2:
515
+ r3 = n <= 2 :: signed
516
+ if r3 goto L3 else goto L4 :: bool
517
+ L3:
518
+ return 2
519
+ L4:
520
+ r4 = CPyTagged_Subtract(n, 2)
521
+ r5 = f(r4)
522
+ r6 = CPyTagged_Subtract(n, 4)
523
+ r7 = f(r6)
524
+ r8 = CPyTagged_Add(r5, r7)
525
+ return r8
526
+ L5:
527
+ unreachable
528
+
529
+ [case testReportTypeCheckError]
530
+ def f() -> None:
531
+ return 1 # E: No return value expected
532
+
533
+ [case testReportSemanticaAnalysisError1]
534
+ def f(x: List[int]) -> None: pass # E: Name "List" is not defined \
535
+ # N: Did you forget to import it from "typing"? (Suggestion: "from typing import List")
536
+
537
+ [case testReportSemanticaAnalysisError2]
538
+ def f() -> None:
539
+ x # E: Name "x" is not defined
540
+
541
+ [case testElif]
542
+ def f(n: int) -> int:
543
+ if n < 0:
544
+ x = 1
545
+ elif n == 0:
546
+ x = 1
547
+ else:
548
+ x = 2
549
+ return x
550
+ [out]
551
+ def f(n):
552
+ n :: int
553
+ r0 :: native_int
554
+ r1, r2, r3 :: bit
555
+ x :: int
556
+ r4 :: bit
557
+ L0:
558
+ r0 = n & 1
559
+ r1 = r0 != 0
560
+ if r1 goto L1 else goto L2 :: bool
561
+ L1:
562
+ r2 = CPyTagged_IsLt_(n, 0)
563
+ if r2 goto L3 else goto L4 :: bool
564
+ L2:
565
+ r3 = n < 0 :: signed
566
+ if r3 goto L3 else goto L4 :: bool
567
+ L3:
568
+ x = 2
569
+ goto L8
570
+ L4:
571
+ r4 = n == 0
572
+ if r4 goto L5 else goto L6 :: bool
573
+ L5:
574
+ x = 2
575
+ goto L7
576
+ L6:
577
+ x = 4
578
+ L7:
579
+ L8:
580
+ return x
581
+
582
+ [case testUnaryMinus]
583
+ def f(n: int) -> int:
584
+ return -n
585
+ [out]
586
+ def f(n):
587
+ n, r0 :: int
588
+ L0:
589
+ r0 = CPyTagged_Negate(n)
590
+ return r0
591
+
592
+ [case testConditionalExpr]
593
+ def f(n: int) -> int:
594
+ return 0 if n == 0 else 1
595
+ [out]
596
+ def f(n):
597
+ n :: int
598
+ r0 :: bit
599
+ r1 :: int
600
+ L0:
601
+ r0 = n == 0
602
+ if r0 goto L1 else goto L2 :: bool
603
+ L1:
604
+ r1 = 0
605
+ goto L3
606
+ L2:
607
+ r1 = 2
608
+ L3:
609
+ return r1
610
+
611
+ [case testOperatorAssignment]
612
+ def f() -> int:
613
+ x = 0
614
+ x += 1
615
+ return x
616
+ [out]
617
+ def f():
618
+ x, r0 :: int
619
+ L0:
620
+ x = 0
621
+ r0 = CPyTagged_Add(x, 2)
622
+ x = r0
623
+ return x
624
+
625
+ [case testTrue]
626
+ def f() -> bool:
627
+ return True
628
+ [out]
629
+ def f():
630
+ L0:
631
+ return 1
632
+
633
+ [case testFalse]
634
+ def f() -> bool:
635
+ return False
636
+ [out]
637
+ def f():
638
+ L0:
639
+ return 0
640
+ [case testBoolCond]
641
+ def f(x: bool) -> bool:
642
+ if x:
643
+ return False
644
+ else:
645
+ return True
646
+ [out]
647
+ def f(x):
648
+ x :: bool
649
+ L0:
650
+ if x goto L1 else goto L2 :: bool
651
+ L1:
652
+ return 0
653
+ L2:
654
+ return 1
655
+ L3:
656
+ unreachable
657
+
658
+ [case testPycall]
659
+ import testmodule
660
+
661
+ def f(x: int) -> int:
662
+ return testmodule.factorial(x)
663
+ [file testmodule.py]
664
+ def factorial(x: int) -> int:
665
+ if x == 0:
666
+ return 1
667
+ else:
668
+ return x * factorial(x-1)
669
+ [out]
670
+ def f(x):
671
+ x :: int
672
+ r0 :: object
673
+ r1 :: str
674
+ r2, r3, r4 :: object
675
+ r5 :: int
676
+ L0:
677
+ r0 = testmodule :: module
678
+ r1 = 'factorial'
679
+ r2 = CPyObject_GetAttr(r0, r1)
680
+ r3 = box(int, x)
681
+ r4 = PyObject_CallFunctionObjArgs(r2, r3, 0)
682
+ r5 = unbox(int, r4)
683
+ return r5
684
+
685
+ [case testImport_toplevel]
686
+ import sys
687
+ import enum as enum2
688
+ import collections.abc
689
+ import collections.abc as abc2
690
+ _ = "filler"
691
+ import single
692
+ single.hello()
693
+
694
+ [file single.py]
695
+ def hello() -> None:
696
+ print("hello, world")
697
+
698
+ [out]
699
+ def __top_level__():
700
+ r0, r1 :: object
701
+ r2 :: bit
702
+ r3 :: str
703
+ r4 :: object
704
+ r5, r6, r7, r8 :: object_ptr
705
+ r9 :: object_ptr[4]
706
+ r10 :: c_ptr
707
+ r11 :: native_int[4]
708
+ r12 :: c_ptr
709
+ r13 :: object
710
+ r14 :: dict
711
+ r15, r16 :: str
712
+ r17 :: bit
713
+ r18 :: str
714
+ r19 :: dict
715
+ r20 :: str
716
+ r21 :: i32
717
+ r22 :: bit
718
+ r23 :: object_ptr
719
+ r24 :: object_ptr[1]
720
+ r25 :: c_ptr
721
+ r26 :: native_int[1]
722
+ r27 :: c_ptr
723
+ r28 :: object
724
+ r29 :: dict
725
+ r30, r31 :: str
726
+ r32 :: bit
727
+ r33 :: object
728
+ r34 :: str
729
+ r35, r36 :: object
730
+ L0:
731
+ r0 = builtins :: module
732
+ r1 = load_address _Py_NoneStruct
733
+ r2 = r0 != r1
734
+ if r2 goto L2 else goto L1 :: bool
735
+ L1:
736
+ r3 = 'builtins'
737
+ r4 = PyImport_Import(r3)
738
+ builtins = r4 :: module
739
+ L2:
740
+ r5 = load_address sys :: module
741
+ r6 = load_address enum :: module
742
+ r7 = load_address collections.abc :: module
743
+ r8 = load_address collections.abc :: module
744
+ r9 = [r5, r6, r7, r8]
745
+ r10 = load_address r9
746
+ r11 = [1, 2, 3, 4]
747
+ r12 = load_address r11
748
+ r13 = (('sys', 'sys', 'sys'), ('enum', 'enum', 'enum2'), ('collections.abc', 'collections', 'collections'), ('collections.abc', 'collections.abc', 'abc2'))
749
+ r14 = __main__.globals :: static
750
+ r15 = 'main'
751
+ r16 = '<module>'
752
+ r17 = CPyImport_ImportMany(r13, r10, r14, r15, r16, r12)
753
+ r18 = 'filler'
754
+ r19 = __main__.globals :: static
755
+ r20 = '_'
756
+ r21 = CPyDict_SetItem(r19, r20, r18)
757
+ r22 = r21 >= 0 :: signed
758
+ r23 = load_address single :: module
759
+ r24 = [r23]
760
+ r25 = load_address r24
761
+ r26 = [6]
762
+ r27 = load_address r26
763
+ r28 = (('single', 'single', 'single'),)
764
+ r29 = __main__.globals :: static
765
+ r30 = 'main'
766
+ r31 = '<module>'
767
+ r32 = CPyImport_ImportMany(r28, r25, r29, r30, r31, r27)
768
+ r33 = single :: module
769
+ r34 = 'hello'
770
+ r35 = CPyObject_GetAttr(r33, r34)
771
+ r36 = PyObject_CallFunctionObjArgs(r35, 0)
772
+ return 1
773
+
774
+ [case testFromImport_toplevel]
775
+ from testmodule import g, h
776
+ from testmodule import h as two
777
+
778
+ def f(x: int) -> int:
779
+ return g(x) + h() + two()
780
+ [file testmodule.py]
781
+ def g(x: int) -> int:
782
+ return x + 1
783
+ def h() -> int:
784
+ return 2
785
+ [out]
786
+ def f(x):
787
+ x :: int
788
+ r0 :: dict
789
+ r1 :: str
790
+ r2, r3, r4 :: object
791
+ r5 :: int
792
+ r6 :: dict
793
+ r7 :: str
794
+ r8, r9 :: object
795
+ r10, r11 :: int
796
+ r12 :: dict
797
+ r13 :: str
798
+ r14, r15 :: object
799
+ r16, r17 :: int
800
+ L0:
801
+ r0 = __main__.globals :: static
802
+ r1 = 'g'
803
+ r2 = CPyDict_GetItem(r0, r1)
804
+ r3 = box(int, x)
805
+ r4 = PyObject_CallFunctionObjArgs(r2, r3, 0)
806
+ r5 = unbox(int, r4)
807
+ r6 = __main__.globals :: static
808
+ r7 = 'h'
809
+ r8 = CPyDict_GetItem(r6, r7)
810
+ r9 = PyObject_CallFunctionObjArgs(r8, 0)
811
+ r10 = unbox(int, r9)
812
+ r11 = CPyTagged_Add(r5, r10)
813
+ r12 = __main__.globals :: static
814
+ r13 = 'two'
815
+ r14 = CPyDict_GetItem(r12, r13)
816
+ r15 = PyObject_CallFunctionObjArgs(r14, 0)
817
+ r16 = unbox(int, r15)
818
+ r17 = CPyTagged_Add(r11, r16)
819
+ return r17
820
+ def __top_level__():
821
+ r0, r1 :: object
822
+ r2 :: bit
823
+ r3 :: str
824
+ r4, r5 :: object
825
+ r6 :: str
826
+ r7 :: dict
827
+ r8, r9, r10 :: object
828
+ r11 :: str
829
+ r12 :: dict
830
+ r13 :: object
831
+ L0:
832
+ r0 = builtins :: module
833
+ r1 = load_address _Py_NoneStruct
834
+ r2 = r0 != r1
835
+ if r2 goto L2 else goto L1 :: bool
836
+ L1:
837
+ r3 = 'builtins'
838
+ r4 = PyImport_Import(r3)
839
+ builtins = r4 :: module
840
+ L2:
841
+ r5 = ('g', 'h')
842
+ r6 = 'testmodule'
843
+ r7 = __main__.globals :: static
844
+ r8 = CPyImport_ImportFromMany(r6, r5, r5, r7)
845
+ testmodule = r8 :: module
846
+ r9 = ('h',)
847
+ r10 = ('two',)
848
+ r11 = 'testmodule'
849
+ r12 = __main__.globals :: static
850
+ r13 = CPyImport_ImportFromMany(r11, r9, r10, r12)
851
+ testmodule = r13 :: module
852
+ return 1
853
+
854
+ [case testPrintFullname]
855
+ import builtins
856
+ def f(x: int) -> None:
857
+ builtins.print(5)
858
+ [out]
859
+ def f(x):
860
+ x :: int
861
+ r0 :: object
862
+ r1 :: str
863
+ r2, r3, r4 :: object
864
+ L0:
865
+ r0 = builtins :: module
866
+ r1 = 'print'
867
+ r2 = CPyObject_GetAttr(r0, r1)
868
+ r3 = object 5
869
+ r4 = PyObject_CallFunctionObjArgs(r2, r3, 0)
870
+ return 1
871
+
872
+ [case testPrint]
873
+ import builtins
874
+ def f(x: int) -> None:
875
+ print(5)
876
+ [out]
877
+ def f(x):
878
+ x :: int
879
+ r0 :: object
880
+ r1 :: str
881
+ r2, r3, r4 :: object
882
+ L0:
883
+ r0 = builtins :: module
884
+ r1 = 'print'
885
+ r2 = CPyObject_GetAttr(r0, r1)
886
+ r3 = object 5
887
+ r4 = PyObject_CallFunctionObjArgs(r2, r3, 0)
888
+ return 1
889
+
890
+ [case testUnicodeLiteral]
891
+ def f() -> str:
892
+ x = "some string"
893
+ return "some other string"
894
+ [out]
895
+ def f():
896
+ r0, x, r1 :: str
897
+ L0:
898
+ r0 = 'some string'
899
+ x = r0
900
+ r1 = 'some other string'
901
+ return r1
902
+
903
+ [case testBytesLiteral]
904
+ def f() -> bytes:
905
+ x = b'\xf0'
906
+ return b'1234'
907
+ [out]
908
+ def f():
909
+ r0, x, r1 :: bytes
910
+ L0:
911
+ r0 = b'\xf0'
912
+ x = r0
913
+ r1 = b'1234'
914
+ return r1
915
+
916
+ [case testPyMethodCall1]
917
+ from typing import Any
918
+ def f(x: Any) -> int:
919
+ y: int = x.pop()
920
+ return x.pop()
921
+ [out]
922
+ def f(x):
923
+ x :: object
924
+ r0 :: str
925
+ r1 :: object
926
+ r2, y :: int
927
+ r3 :: str
928
+ r4 :: object
929
+ r5 :: int
930
+ L0:
931
+ r0 = 'pop'
932
+ r1 = CPyObject_CallMethodObjArgs(x, r0, 0)
933
+ r2 = unbox(int, r1)
934
+ y = r2
935
+ r3 = 'pop'
936
+ r4 = CPyObject_CallMethodObjArgs(x, r3, 0)
937
+ r5 = unbox(int, r4)
938
+ return r5
939
+
940
+ [case testObjectType]
941
+ def g(y: object) -> None:
942
+ g(y)
943
+ g([1])
944
+ g(None)
945
+ [out]
946
+ def g(y):
947
+ y :: object
948
+ r0 :: None
949
+ r1 :: list
950
+ r2 :: object
951
+ r3, r4 :: ptr
952
+ r5 :: None
953
+ r6 :: object
954
+ r7 :: None
955
+ L0:
956
+ r0 = g(y)
957
+ r1 = PyList_New(1)
958
+ r2 = object 1
959
+ r3 = get_element_ptr r1 ob_item :: PyListObject
960
+ r4 = load_mem r3 :: ptr*
961
+ set_mem r4, r2 :: builtins.object*
962
+ keep_alive r1
963
+ r5 = g(r1)
964
+ r6 = box(None, 1)
965
+ r7 = g(r6)
966
+ return 1
967
+
968
+ [case testCoerceToObject1]
969
+ def g(y: object) -> object:
970
+ g(1)
971
+ a = [y]
972
+ a[0] = (1, 2)
973
+ y = True
974
+ return 3
975
+ [out]
976
+ def g(y):
977
+ y, r0, r1 :: object
978
+ r2 :: list
979
+ r3, r4 :: ptr
980
+ a :: list
981
+ r5 :: tuple[int, int]
982
+ r6 :: object
983
+ r7 :: bit
984
+ r8, r9 :: object
985
+ L0:
986
+ r0 = object 1
987
+ r1 = g(r0)
988
+ r2 = PyList_New(1)
989
+ r3 = get_element_ptr r2 ob_item :: PyListObject
990
+ r4 = load_mem r3 :: ptr*
991
+ set_mem r4, y :: builtins.object*
992
+ keep_alive r2
993
+ a = r2
994
+ r5 = (2, 4)
995
+ r6 = box(tuple[int, int], r5)
996
+ r7 = CPyList_SetItem(a, 0, r6)
997
+ r8 = box(bool, 1)
998
+ y = r8
999
+ r9 = object 3
1000
+ return r9
1001
+
1002
+ [case testCoerceToObject2]
1003
+ class A:
1004
+ x: object
1005
+ n: int
1006
+ def f(a: A, o: object) -> None:
1007
+ a.x = 1
1008
+ o = a.n
1009
+ [out]
1010
+ def f(a, o):
1011
+ a :: __main__.A
1012
+ o, r0 :: object
1013
+ r1 :: bool
1014
+ r2 :: int
1015
+ r3 :: object
1016
+ L0:
1017
+ r0 = object 1
1018
+ a.x = r0; r1 = is_error
1019
+ r2 = a.n
1020
+ r3 = box(int, r2)
1021
+ o = r3
1022
+ return 1
1023
+
1024
+ [case testAssertType]
1025
+ from typing import assert_type
1026
+ def f(x: int) -> None:
1027
+ y = assert_type(x, int)
1028
+ [out]
1029
+ def f(x):
1030
+ x, y :: int
1031
+ L0:
1032
+ y = x
1033
+ return 1
1034
+
1035
+ [case testDownCast]
1036
+ from typing import cast, List, Tuple
1037
+ class A: pass
1038
+ def f(x: object) -> None:
1039
+ n = cast(int, x)
1040
+ b = cast(bool, x)
1041
+ a = cast(A, x)
1042
+ l = cast(List[int], x)
1043
+ t = cast(Tuple[int, A], x)
1044
+ [out]
1045
+ def f(x):
1046
+ x :: object
1047
+ r0, n :: int
1048
+ r1, b :: bool
1049
+ r2, a :: __main__.A
1050
+ r3, l :: list
1051
+ r4, t :: tuple[int, __main__.A]
1052
+ L0:
1053
+ r0 = unbox(int, x)
1054
+ n = r0
1055
+ r1 = unbox(bool, x)
1056
+ b = r1
1057
+ r2 = cast(__main__.A, x)
1058
+ a = r2
1059
+ r3 = cast(list, x)
1060
+ l = r3
1061
+ r4 = unbox(tuple[int, __main__.A], x)
1062
+ t = r4
1063
+ return 1
1064
+
1065
+ [case testDownCastSpecialCases]
1066
+ from typing import cast, Optional, Tuple
1067
+ class A: pass
1068
+ def f(o: Optional[A], n: int, t: Tuple[int, ...], tt: Tuple[int, int]) -> None:
1069
+ a = cast(A, o)
1070
+ m = cast(bool, n)
1071
+ t = tt
1072
+ [out]
1073
+ def f(o, n, t, tt):
1074
+ o :: union[__main__.A, None]
1075
+ n :: int
1076
+ t :: tuple
1077
+ tt :: tuple[int, int]
1078
+ r0, a :: __main__.A
1079
+ r1 :: object
1080
+ r2, m :: bool
1081
+ r3 :: object
1082
+ L0:
1083
+ r0 = cast(__main__.A, o)
1084
+ a = r0
1085
+ r1 = box(int, n)
1086
+ r2 = unbox(bool, r1)
1087
+ m = r2
1088
+ r3 = box(tuple[int, int], tt)
1089
+ t = r3
1090
+ return 1
1091
+
1092
+ [case testSuccessfulCast]
1093
+ from typing import cast, Optional, Tuple, List, Dict
1094
+ class A: pass
1095
+ def f(o: object,
1096
+ p: Optional[A],
1097
+ n: int,
1098
+ b: bool,
1099
+ t: Tuple[int, ...],
1100
+ s: Tuple[int, int],
1101
+ a: A,
1102
+ l: List[A],
1103
+ d: Dict[int, str]) -> None:
1104
+ o = cast(object, o)
1105
+ p = cast(Optional[A], p)
1106
+ n = cast(int, n)
1107
+ b = cast(bool, b)
1108
+ t = cast(Tuple[int, ...], t)
1109
+ s = cast(Tuple[int, int], s)
1110
+ o = cast(object, n)
1111
+ a = cast(A, a)
1112
+ l2 = cast(List[object], l)
1113
+ d2 = cast(Dict[object, str], d)
1114
+ [out]
1115
+ def f(o, p, n, b, t, s, a, l, d):
1116
+ o :: object
1117
+ p :: union[__main__.A, None]
1118
+ n :: int
1119
+ b :: bool
1120
+ t :: tuple
1121
+ s :: tuple[int, int]
1122
+ a :: __main__.A
1123
+ l :: list
1124
+ d :: dict
1125
+ r0 :: object
1126
+ l2 :: list
1127
+ d2 :: dict
1128
+ L0:
1129
+ o = o
1130
+ p = p
1131
+ n = n
1132
+ b = b
1133
+ t = t
1134
+ s = s
1135
+ r0 = box(int, n)
1136
+ o = r0
1137
+ a = a
1138
+ l2 = l
1139
+ d2 = d
1140
+ return 1
1141
+
1142
+ [case testGenericSetItem]
1143
+ from typing import Any
1144
+ def f(x: Any, y: Any, z: Any) -> None:
1145
+ x[y] = z
1146
+ [out]
1147
+ def f(x, y, z):
1148
+ x, y, z :: object
1149
+ r0 :: i32
1150
+ r1 :: bit
1151
+ L0:
1152
+ r0 = PyObject_SetItem(x, y, z)
1153
+ r1 = r0 >= 0 :: signed
1154
+ return 1
1155
+
1156
+ [case testLoadFloatSum]
1157
+ def assign_and_return_float_sum() -> float:
1158
+ f1 = 1.0
1159
+ f2 = 2.0
1160
+ f3 = 3.0
1161
+ return f1 * f2 + f3
1162
+ [out]
1163
+ def assign_and_return_float_sum():
1164
+ f1, f2, f3, r0, r1 :: float
1165
+ L0:
1166
+ f1 = 1.0
1167
+ f2 = 2.0
1168
+ f3 = 3.0
1169
+ r0 = f1 * f2
1170
+ r1 = r0 + f3
1171
+ return r1
1172
+
1173
+ [case testLoadComplex]
1174
+ def load() -> complex:
1175
+ real = 1
1176
+ return 5j+real
1177
+ [out]
1178
+ def load():
1179
+ real :: int
1180
+ r0, r1, r2 :: object
1181
+ L0:
1182
+ real = 2
1183
+ r0 = 5j
1184
+ r1 = box(int, real)
1185
+ r2 = PyNumber_Add(r0, r1)
1186
+ return r2
1187
+
1188
+ [case testBigIntLiteral_64bit]
1189
+ def big_int() -> None:
1190
+ a_62_bit = 4611686018427387902
1191
+ max_62_bit = 4611686018427387903
1192
+ b_63_bit = 4611686018427387904
1193
+ c_63_bit = 9223372036854775806
1194
+ max_63_bit = 9223372036854775807
1195
+ d_64_bit = 9223372036854775808
1196
+ max_32_bit = 2147483647
1197
+ max_31_bit = 1073741823
1198
+ [out]
1199
+ def big_int():
1200
+ a_62_bit, max_62_bit, r0, b_63_bit, r1, c_63_bit, r2, max_63_bit, r3, d_64_bit, max_32_bit, max_31_bit :: int
1201
+ L0:
1202
+ a_62_bit = 9223372036854775804
1203
+ max_62_bit = 9223372036854775806
1204
+ r0 = object 4611686018427387904
1205
+ b_63_bit = r0
1206
+ r1 = object 9223372036854775806
1207
+ c_63_bit = r1
1208
+ r2 = object 9223372036854775807
1209
+ max_63_bit = r2
1210
+ r3 = object 9223372036854775808
1211
+ d_64_bit = r3
1212
+ max_32_bit = 4294967294
1213
+ max_31_bit = 2147483646
1214
+ return 1
1215
+
1216
+ [case testBigIntLiteral_32bit]
1217
+ def big_int() -> None:
1218
+ a_62_bit = 4611686018427387902
1219
+ max_62_bit = 4611686018427387903
1220
+ b_63_bit = 4611686018427387904
1221
+ c_63_bit = 9223372036854775806
1222
+ max_63_bit = 9223372036854775807
1223
+ d_64_bit = 9223372036854775808
1224
+ max_32_bit = 2147483647
1225
+ max_31_bit = 1073741823
1226
+ [out]
1227
+ def big_int():
1228
+ r0, a_62_bit, r1, max_62_bit, r2, b_63_bit, r3, c_63_bit, r4, max_63_bit, r5, d_64_bit, r6, max_32_bit, max_31_bit :: int
1229
+ L0:
1230
+ r0 = object 4611686018427387902
1231
+ a_62_bit = r0
1232
+ r1 = object 4611686018427387903
1233
+ max_62_bit = r1
1234
+ r2 = object 4611686018427387904
1235
+ b_63_bit = r2
1236
+ r3 = object 9223372036854775806
1237
+ c_63_bit = r3
1238
+ r4 = object 9223372036854775807
1239
+ max_63_bit = r4
1240
+ r5 = object 9223372036854775808
1241
+ d_64_bit = r5
1242
+ r6 = object 2147483647
1243
+ max_32_bit = r6
1244
+ max_31_bit = 2147483646
1245
+ return 1
1246
+
1247
+ [case testCallableTypes]
1248
+ from typing import Callable, Any
1249
+ from m import f
1250
+
1251
+ def absolute_value(x: int) -> int:
1252
+ return x if x > 0 else -x
1253
+
1254
+ def call_native_function(x: int) -> int:
1255
+ return absolute_value(x)
1256
+
1257
+ def call_python_function(x: int) -> int:
1258
+ return f(x)
1259
+
1260
+ def return_float() -> float:
1261
+ return 5.0
1262
+
1263
+ def return_callable_type() -> Callable[[], float]:
1264
+ return return_float
1265
+
1266
+ def call_callable_type() -> float:
1267
+ f = return_callable_type()
1268
+ return f()
1269
+ [file m.py]
1270
+ def f(x: int) -> int:
1271
+ return x
1272
+ [out]
1273
+ def absolute_value(x):
1274
+ x :: int
1275
+ r0 :: native_int
1276
+ r1, r2, r3 :: bit
1277
+ r4, r5 :: int
1278
+ L0:
1279
+ r0 = x & 1
1280
+ r1 = r0 != 0
1281
+ if r1 goto L1 else goto L2 :: bool
1282
+ L1:
1283
+ r2 = CPyTagged_IsLt_(0, x)
1284
+ if r2 goto L3 else goto L4 :: bool
1285
+ L2:
1286
+ r3 = x > 0 :: signed
1287
+ if r3 goto L3 else goto L4 :: bool
1288
+ L3:
1289
+ r4 = x
1290
+ goto L5
1291
+ L4:
1292
+ r5 = CPyTagged_Negate(x)
1293
+ r4 = r5
1294
+ L5:
1295
+ return r4
1296
+ def call_native_function(x):
1297
+ x, r0 :: int
1298
+ L0:
1299
+ r0 = absolute_value(x)
1300
+ return r0
1301
+ def call_python_function(x):
1302
+ x :: int
1303
+ r0 :: dict
1304
+ r1 :: str
1305
+ r2, r3, r4 :: object
1306
+ r5 :: int
1307
+ L0:
1308
+ r0 = __main__.globals :: static
1309
+ r1 = 'f'
1310
+ r2 = CPyDict_GetItem(r0, r1)
1311
+ r3 = box(int, x)
1312
+ r4 = PyObject_CallFunctionObjArgs(r2, r3, 0)
1313
+ r5 = unbox(int, r4)
1314
+ return r5
1315
+ def return_float():
1316
+ L0:
1317
+ return 5.0
1318
+ def return_callable_type():
1319
+ r0 :: dict
1320
+ r1 :: str
1321
+ r2 :: object
1322
+ L0:
1323
+ r0 = __main__.globals :: static
1324
+ r1 = 'return_float'
1325
+ r2 = CPyDict_GetItem(r0, r1)
1326
+ return r2
1327
+ def call_callable_type():
1328
+ r0, f, r1 :: object
1329
+ r2 :: float
1330
+ L0:
1331
+ r0 = return_callable_type()
1332
+ f = r0
1333
+ r1 = PyObject_CallFunctionObjArgs(f, 0)
1334
+ r2 = unbox(float, r1)
1335
+ return r2
1336
+
1337
+ [case testCallableTypesWithKeywordArgs]
1338
+ from typing import List
1339
+
1340
+ def call_python_function_with_keyword_arg(x: str) -> int:
1341
+ return int(x, base=2)
1342
+
1343
+ def call_python_method_with_keyword_args(xs: List[int], first: int, second: int) -> List[int]:
1344
+ xs.insert(0, x=first)
1345
+ xs.insert(x=second, i=1)
1346
+ return xs
1347
+
1348
+ [out]
1349
+ def call_python_function_with_keyword_arg(x):
1350
+ x :: str
1351
+ r0 :: object
1352
+ r1 :: str
1353
+ r2 :: tuple
1354
+ r3 :: object
1355
+ r4 :: dict
1356
+ r5 :: object
1357
+ r6 :: int
1358
+ L0:
1359
+ r0 = load_address PyLong_Type
1360
+ r1 = 'base'
1361
+ r2 = PyTuple_Pack(1, x)
1362
+ r3 = object 2
1363
+ r4 = CPyDict_Build(1, r1, r3)
1364
+ r5 = PyObject_Call(r0, r2, r4)
1365
+ r6 = unbox(int, r5)
1366
+ return r6
1367
+ def call_python_method_with_keyword_args(xs, first, second):
1368
+ xs :: list
1369
+ first, second :: int
1370
+ r0 :: str
1371
+ r1 :: object
1372
+ r2 :: str
1373
+ r3 :: object
1374
+ r4 :: tuple
1375
+ r5 :: object
1376
+ r6 :: dict
1377
+ r7 :: object
1378
+ r8 :: str
1379
+ r9 :: object
1380
+ r10, r11 :: str
1381
+ r12 :: tuple
1382
+ r13, r14 :: object
1383
+ r15 :: dict
1384
+ r16 :: object
1385
+ L0:
1386
+ r0 = 'insert'
1387
+ r1 = CPyObject_GetAttr(xs, r0)
1388
+ r2 = 'x'
1389
+ r3 = object 0
1390
+ r4 = PyTuple_Pack(1, r3)
1391
+ r5 = box(int, first)
1392
+ r6 = CPyDict_Build(1, r2, r5)
1393
+ r7 = PyObject_Call(r1, r4, r6)
1394
+ r8 = 'insert'
1395
+ r9 = CPyObject_GetAttr(xs, r8)
1396
+ r10 = 'x'
1397
+ r11 = 'i'
1398
+ r12 = PyTuple_Pack(0)
1399
+ r13 = box(int, second)
1400
+ r14 = object 1
1401
+ r15 = CPyDict_Build(2, r10, r13, r11, r14)
1402
+ r16 = PyObject_Call(r9, r12, r15)
1403
+ return xs
1404
+
1405
+ [case testObjectAsBoolean]
1406
+ from typing import List
1407
+
1408
+ def obj(x: object) -> int:
1409
+ if x:
1410
+ return 1
1411
+ else:
1412
+ return 0
1413
+
1414
+ def num(x: int) -> int:
1415
+ if x:
1416
+ return 1
1417
+ else:
1418
+ return 0
1419
+
1420
+ def lst(x: List[int]) -> int:
1421
+ if x:
1422
+ return 1
1423
+ else:
1424
+ return 0
1425
+ [out]
1426
+ def obj(x):
1427
+ x :: object
1428
+ r0 :: i32
1429
+ r1 :: bit
1430
+ r2 :: bool
1431
+ L0:
1432
+ r0 = PyObject_IsTrue(x)
1433
+ r1 = r0 >= 0 :: signed
1434
+ r2 = truncate r0: i32 to builtins.bool
1435
+ if r2 goto L1 else goto L2 :: bool
1436
+ L1:
1437
+ return 2
1438
+ L2:
1439
+ return 0
1440
+ L3:
1441
+ unreachable
1442
+ def num(x):
1443
+ x :: int
1444
+ r0 :: bit
1445
+ L0:
1446
+ r0 = x != 0
1447
+ if r0 goto L1 else goto L2 :: bool
1448
+ L1:
1449
+ return 2
1450
+ L2:
1451
+ return 0
1452
+ L3:
1453
+ unreachable
1454
+ def lst(x):
1455
+ x :: list
1456
+ r0 :: ptr
1457
+ r1 :: native_int
1458
+ r2 :: short_int
1459
+ r3 :: bit
1460
+ L0:
1461
+ r0 = get_element_ptr x ob_size :: PyVarObject
1462
+ r1 = load_mem r0 :: native_int*
1463
+ keep_alive x
1464
+ r2 = r1 << 1
1465
+ r3 = r2 != 0
1466
+ if r3 goto L1 else goto L2 :: bool
1467
+ L1:
1468
+ return 2
1469
+ L2:
1470
+ return 0
1471
+ L3:
1472
+ unreachable
1473
+
1474
+ [case testOptionalAsBoolean]
1475
+ from typing import Optional
1476
+
1477
+ class A: pass
1478
+
1479
+ def opt_int(x: Optional[int]) -> int:
1480
+ if x:
1481
+ return 1
1482
+ else:
1483
+ return 0
1484
+
1485
+ def opt_a(x: Optional[A]) -> int:
1486
+ if x:
1487
+ return 1
1488
+ else:
1489
+ return 0
1490
+
1491
+ def opt_o(x: Optional[object]) -> int:
1492
+ if x:
1493
+ return 1
1494
+ else:
1495
+ return 0
1496
+ [out]
1497
+ def opt_int(x):
1498
+ x :: union[int, None]
1499
+ r0 :: object
1500
+ r1 :: bit
1501
+ r2 :: int
1502
+ r3 :: bit
1503
+ L0:
1504
+ r0 = load_address _Py_NoneStruct
1505
+ r1 = x != r0
1506
+ if r1 goto L1 else goto L3 :: bool
1507
+ L1:
1508
+ r2 = unbox(int, x)
1509
+ r3 = r2 != 0
1510
+ if r3 goto L2 else goto L3 :: bool
1511
+ L2:
1512
+ return 2
1513
+ L3:
1514
+ return 0
1515
+ L4:
1516
+ unreachable
1517
+ def opt_a(x):
1518
+ x :: union[__main__.A, None]
1519
+ r0 :: object
1520
+ r1 :: bit
1521
+ L0:
1522
+ r0 = load_address _Py_NoneStruct
1523
+ r1 = x != r0
1524
+ if r1 goto L1 else goto L2 :: bool
1525
+ L1:
1526
+ return 2
1527
+ L2:
1528
+ return 0
1529
+ L3:
1530
+ unreachable
1531
+ def opt_o(x):
1532
+ x :: union[object, None]
1533
+ r0 :: object
1534
+ r1 :: bit
1535
+ r2 :: object
1536
+ r3 :: i32
1537
+ r4 :: bit
1538
+ r5 :: bool
1539
+ L0:
1540
+ r0 = load_address _Py_NoneStruct
1541
+ r1 = x != r0
1542
+ if r1 goto L1 else goto L3 :: bool
1543
+ L1:
1544
+ r2 = cast(object, x)
1545
+ r3 = PyObject_IsTrue(r2)
1546
+ r4 = r3 >= 0 :: signed
1547
+ r5 = truncate r3: i32 to builtins.bool
1548
+ if r5 goto L2 else goto L3 :: bool
1549
+ L2:
1550
+ return 2
1551
+ L3:
1552
+ return 0
1553
+ L4:
1554
+ unreachable
1555
+
1556
+ [case testRaise]
1557
+ def foo() -> None:
1558
+ raise Exception()
1559
+
1560
+ def bar() -> None:
1561
+ raise Exception
1562
+ [out]
1563
+ def foo():
1564
+ r0 :: object
1565
+ r1 :: str
1566
+ r2, r3 :: object
1567
+ L0:
1568
+ r0 = builtins :: module
1569
+ r1 = 'Exception'
1570
+ r2 = CPyObject_GetAttr(r0, r1)
1571
+ r3 = PyObject_CallFunctionObjArgs(r2, 0)
1572
+ CPy_Raise(r3)
1573
+ unreachable
1574
+ def bar():
1575
+ r0 :: object
1576
+ r1 :: str
1577
+ r2 :: object
1578
+ L0:
1579
+ r0 = builtins :: module
1580
+ r1 = 'Exception'
1581
+ r2 = CPyObject_GetAttr(r0, r1)
1582
+ CPy_Raise(r2)
1583
+ unreachable
1584
+
1585
+ [case testModuleTopLevel_toplevel]
1586
+ x = 1
1587
+ print(x)
1588
+
1589
+ def f() -> None:
1590
+ print(x)
1591
+ [out]
1592
+ def f():
1593
+ r0 :: dict
1594
+ r1 :: str
1595
+ r2 :: object
1596
+ r3 :: int
1597
+ r4 :: object
1598
+ r5 :: str
1599
+ r6, r7, r8 :: object
1600
+ L0:
1601
+ r0 = __main__.globals :: static
1602
+ r1 = 'x'
1603
+ r2 = CPyDict_GetItem(r0, r1)
1604
+ r3 = unbox(int, r2)
1605
+ r4 = builtins :: module
1606
+ r5 = 'print'
1607
+ r6 = CPyObject_GetAttr(r4, r5)
1608
+ r7 = box(int, r3)
1609
+ r8 = PyObject_CallFunctionObjArgs(r6, r7, 0)
1610
+ return 1
1611
+ def __top_level__():
1612
+ r0, r1 :: object
1613
+ r2 :: bit
1614
+ r3 :: str
1615
+ r4 :: object
1616
+ r5 :: dict
1617
+ r6 :: str
1618
+ r7 :: object
1619
+ r8 :: i32
1620
+ r9 :: bit
1621
+ r10 :: dict
1622
+ r11 :: str
1623
+ r12 :: object
1624
+ r13 :: int
1625
+ r14 :: object
1626
+ r15 :: str
1627
+ r16, r17, r18 :: object
1628
+ L0:
1629
+ r0 = builtins :: module
1630
+ r1 = load_address _Py_NoneStruct
1631
+ r2 = r0 != r1
1632
+ if r2 goto L2 else goto L1 :: bool
1633
+ L1:
1634
+ r3 = 'builtins'
1635
+ r4 = PyImport_Import(r3)
1636
+ builtins = r4 :: module
1637
+ L2:
1638
+ r5 = __main__.globals :: static
1639
+ r6 = 'x'
1640
+ r7 = object 1
1641
+ r8 = CPyDict_SetItem(r5, r6, r7)
1642
+ r9 = r8 >= 0 :: signed
1643
+ r10 = __main__.globals :: static
1644
+ r11 = 'x'
1645
+ r12 = CPyDict_GetItem(r10, r11)
1646
+ r13 = unbox(int, r12)
1647
+ r14 = builtins :: module
1648
+ r15 = 'print'
1649
+ r16 = CPyObject_GetAttr(r14, r15)
1650
+ r17 = box(int, r13)
1651
+ r18 = PyObject_CallFunctionObjArgs(r16, r17, 0)
1652
+ return 1
1653
+
1654
+ [case testCallOverloaded]
1655
+ import m
1656
+ def f() -> str:
1657
+ return m.f(1)
1658
+ [file m.pyi]
1659
+ from typing import overload
1660
+ @overload
1661
+ def f(x: int) -> str: ...
1662
+ @overload
1663
+ def f(x: str) -> int: ...
1664
+ [out]
1665
+ def f():
1666
+ r0 :: object
1667
+ r1 :: str
1668
+ r2, r3, r4 :: object
1669
+ r5 :: str
1670
+ L0:
1671
+ r0 = m :: module
1672
+ r1 = 'f'
1673
+ r2 = CPyObject_GetAttr(r0, r1)
1674
+ r3 = object 1
1675
+ r4 = PyObject_CallFunctionObjArgs(r2, r3, 0)
1676
+ r5 = cast(str, r4)
1677
+ return r5
1678
+
1679
+ [case testCallOverloadedNative]
1680
+ from typing import overload, Union
1681
+
1682
+ @overload
1683
+ def foo(x: int) -> int: ...
1684
+
1685
+ @overload
1686
+ def foo(x: str) -> str: ...
1687
+
1688
+ def foo(x: Union[int, str]) -> Union[int, str]:
1689
+ return x
1690
+
1691
+ def main() -> None:
1692
+ x = foo(0)
1693
+ [out]
1694
+ def foo(x):
1695
+ x :: union[int, str]
1696
+ L0:
1697
+ return x
1698
+ def main():
1699
+ r0 :: object
1700
+ r1 :: union[int, str]
1701
+ r2, x :: int
1702
+ L0:
1703
+ r0 = object 0
1704
+ r1 = foo(r0)
1705
+ r2 = unbox(int, r1)
1706
+ x = r2
1707
+ return 1
1708
+
1709
+ [case testCallOverloadedNativeSubclass]
1710
+ from typing import overload, Union
1711
+
1712
+ class A:
1713
+ x: int
1714
+ class B(A):
1715
+ y: int
1716
+
1717
+ @overload
1718
+ def foo(x: int) -> B: ...
1719
+
1720
+ @overload
1721
+ def foo(x: Union[int, str]) -> A: ...
1722
+
1723
+ def foo(x: Union[int, str]) -> A:
1724
+ if isinstance(x, int):
1725
+ return B()
1726
+ return A()
1727
+
1728
+ def main() -> None:
1729
+ x = foo(0)
1730
+ [out]
1731
+ def foo(x):
1732
+ x :: union[int, str]
1733
+ r0 :: object
1734
+ r1 :: i32
1735
+ r2 :: bit
1736
+ r3 :: bool
1737
+ r4 :: __main__.B
1738
+ r5 :: __main__.A
1739
+ L0:
1740
+ r0 = load_address PyLong_Type
1741
+ r1 = PyObject_IsInstance(x, r0)
1742
+ r2 = r1 >= 0 :: signed
1743
+ r3 = truncate r1: i32 to builtins.bool
1744
+ if r3 goto L1 else goto L2 :: bool
1745
+ L1:
1746
+ r4 = B()
1747
+ return r4
1748
+ L2:
1749
+ r5 = A()
1750
+ return r5
1751
+ def main():
1752
+ r0 :: object
1753
+ r1 :: __main__.A
1754
+ r2, x :: __main__.B
1755
+ L0:
1756
+ r0 = object 0
1757
+ r1 = foo(r0)
1758
+ r2 = cast(__main__.B, r1)
1759
+ x = r2
1760
+ return 1
1761
+
1762
+ [case testFunctionCallWithKeywordArgs]
1763
+ def f(x: int, y: str) -> None: pass
1764
+
1765
+ def g() -> None:
1766
+ f(y='a', x=0)
1767
+ f(1, y='b')
1768
+ [out]
1769
+ def f(x, y):
1770
+ x :: int
1771
+ y :: str
1772
+ L0:
1773
+ return 1
1774
+ def g():
1775
+ r0 :: str
1776
+ r1 :: None
1777
+ r2 :: str
1778
+ r3 :: None
1779
+ L0:
1780
+ r0 = 'a'
1781
+ r1 = f(0, r0)
1782
+ r2 = 'b'
1783
+ r3 = f(2, r2)
1784
+ return 1
1785
+
1786
+ [case testMethodCallWithKeywordArgs]
1787
+ class A:
1788
+ def f(self, x: int, y: str) -> None: pass
1789
+
1790
+ def g(a: A) -> None:
1791
+ a.f(y='a', x=0)
1792
+ a.f(1, y='b')
1793
+ [out]
1794
+ def A.f(self, x, y):
1795
+ self :: __main__.A
1796
+ x :: int
1797
+ y :: str
1798
+ L0:
1799
+ return 1
1800
+ def g(a):
1801
+ a :: __main__.A
1802
+ r0 :: str
1803
+ r1 :: None
1804
+ r2 :: str
1805
+ r3 :: None
1806
+ L0:
1807
+ r0 = 'a'
1808
+ r1 = a.f(0, r0)
1809
+ r2 = 'b'
1810
+ r3 = a.f(2, r2)
1811
+ return 1
1812
+
1813
+ [case testStarArgs]
1814
+ from typing import Tuple
1815
+ def f(a: int, b: int, c: int) -> Tuple[int, int, int]:
1816
+ return a, b, c
1817
+ def g() -> Tuple[int, int, int]:
1818
+ return f(*(1, 2, 3))
1819
+ def h() -> Tuple[int, int, int]:
1820
+ return f(1, *(2, 3))
1821
+ [out]
1822
+ def f(a, b, c):
1823
+ a, b, c :: int
1824
+ r0 :: tuple[int, int, int]
1825
+ L0:
1826
+ r0 = (a, b, c)
1827
+ return r0
1828
+ def g():
1829
+ r0 :: tuple[int, int, int]
1830
+ r1 :: dict
1831
+ r2 :: str
1832
+ r3 :: object
1833
+ r4 :: list
1834
+ r5, r6 :: object
1835
+ r7 :: tuple
1836
+ r8 :: dict
1837
+ r9 :: object
1838
+ r10 :: tuple[int, int, int]
1839
+ L0:
1840
+ r0 = (2, 4, 6)
1841
+ r1 = __main__.globals :: static
1842
+ r2 = 'f'
1843
+ r3 = CPyDict_GetItem(r1, r2)
1844
+ r4 = PyList_New(0)
1845
+ r5 = box(tuple[int, int, int], r0)
1846
+ r6 = CPyList_Extend(r4, r5)
1847
+ r7 = PyList_AsTuple(r4)
1848
+ r8 = PyDict_New()
1849
+ r9 = PyObject_Call(r3, r7, r8)
1850
+ r10 = unbox(tuple[int, int, int], r9)
1851
+ return r10
1852
+ def h():
1853
+ r0 :: tuple[int, int]
1854
+ r1 :: dict
1855
+ r2 :: str
1856
+ r3 :: object
1857
+ r4 :: list
1858
+ r5 :: object
1859
+ r6, r7 :: ptr
1860
+ r8, r9 :: object
1861
+ r10 :: tuple
1862
+ r11 :: dict
1863
+ r12 :: object
1864
+ r13 :: tuple[int, int, int]
1865
+ L0:
1866
+ r0 = (4, 6)
1867
+ r1 = __main__.globals :: static
1868
+ r2 = 'f'
1869
+ r3 = CPyDict_GetItem(r1, r2)
1870
+ r4 = PyList_New(1)
1871
+ r5 = object 1
1872
+ r6 = get_element_ptr r4 ob_item :: PyListObject
1873
+ r7 = load_mem r6 :: ptr*
1874
+ set_mem r7, r5 :: builtins.object*
1875
+ keep_alive r4
1876
+ r8 = box(tuple[int, int], r0)
1877
+ r9 = CPyList_Extend(r4, r8)
1878
+ r10 = PyList_AsTuple(r4)
1879
+ r11 = PyDict_New()
1880
+ r12 = PyObject_Call(r3, r10, r11)
1881
+ r13 = unbox(tuple[int, int, int], r12)
1882
+ return r13
1883
+
1884
+ [case testStar2Args]
1885
+ from typing import Tuple
1886
+ def f(a: int, b: int, c: int) -> Tuple[int, int, int]:
1887
+ return a, b, c
1888
+ def g() -> Tuple[int, int, int]:
1889
+ return f(**{'a': 1, 'b': 2, 'c': 3})
1890
+ def h() -> Tuple[int, int, int]:
1891
+ return f(1, **{'b': 2, 'c': 3})
1892
+ [out]
1893
+ def f(a, b, c):
1894
+ a, b, c :: int
1895
+ r0 :: tuple[int, int, int]
1896
+ L0:
1897
+ r0 = (a, b, c)
1898
+ return r0
1899
+ def g():
1900
+ r0, r1, r2 :: str
1901
+ r3, r4, r5 :: object
1902
+ r6, r7 :: dict
1903
+ r8 :: str
1904
+ r9 :: object
1905
+ r10 :: dict
1906
+ r11 :: i32
1907
+ r12 :: bit
1908
+ r13 :: tuple
1909
+ r14 :: object
1910
+ r15 :: tuple[int, int, int]
1911
+ L0:
1912
+ r0 = 'a'
1913
+ r1 = 'b'
1914
+ r2 = 'c'
1915
+ r3 = object 1
1916
+ r4 = object 2
1917
+ r5 = object 3
1918
+ r6 = CPyDict_Build(3, r0, r3, r1, r4, r2, r5)
1919
+ r7 = __main__.globals :: static
1920
+ r8 = 'f'
1921
+ r9 = CPyDict_GetItem(r7, r8)
1922
+ r10 = PyDict_New()
1923
+ r11 = CPyDict_UpdateInDisplay(r10, r6)
1924
+ r12 = r11 >= 0 :: signed
1925
+ r13 = PyTuple_Pack(0)
1926
+ r14 = PyObject_Call(r9, r13, r10)
1927
+ r15 = unbox(tuple[int, int, int], r14)
1928
+ return r15
1929
+ def h():
1930
+ r0, r1 :: str
1931
+ r2, r3 :: object
1932
+ r4, r5 :: dict
1933
+ r6 :: str
1934
+ r7 :: object
1935
+ r8 :: dict
1936
+ r9 :: i32
1937
+ r10 :: bit
1938
+ r11 :: object
1939
+ r12 :: tuple
1940
+ r13 :: object
1941
+ r14 :: tuple[int, int, int]
1942
+ L0:
1943
+ r0 = 'b'
1944
+ r1 = 'c'
1945
+ r2 = object 2
1946
+ r3 = object 3
1947
+ r4 = CPyDict_Build(2, r0, r2, r1, r3)
1948
+ r5 = __main__.globals :: static
1949
+ r6 = 'f'
1950
+ r7 = CPyDict_GetItem(r5, r6)
1951
+ r8 = PyDict_New()
1952
+ r9 = CPyDict_UpdateInDisplay(r8, r4)
1953
+ r10 = r9 >= 0 :: signed
1954
+ r11 = object 1
1955
+ r12 = PyTuple_Pack(1, r11)
1956
+ r13 = PyObject_Call(r7, r12, r8)
1957
+ r14 = unbox(tuple[int, int, int], r13)
1958
+ return r14
1959
+
1960
+ [case testFunctionCallWithDefaultArgs]
1961
+ def f(x: int, y: int = 3, z: str = "test") -> None:
1962
+ return None
1963
+
1964
+ def g() -> None:
1965
+ f(2)
1966
+ f(y = 3, x = 6)
1967
+ [out]
1968
+ def f(x, y, z):
1969
+ x, y :: int
1970
+ z, r0 :: str
1971
+ L0:
1972
+ if is_error(y) goto L1 else goto L2
1973
+ L1:
1974
+ y = 6
1975
+ L2:
1976
+ if is_error(z) goto L3 else goto L4
1977
+ L3:
1978
+ r0 = 'test'
1979
+ z = r0
1980
+ L4:
1981
+ return 1
1982
+ def g():
1983
+ r0 :: int
1984
+ r1 :: str
1985
+ r2 :: None
1986
+ r3 :: str
1987
+ r4 :: None
1988
+ L0:
1989
+ r0 = <error> :: int
1990
+ r1 = <error> :: str
1991
+ r2 = f(4, r0, r1)
1992
+ r3 = <error> :: str
1993
+ r4 = f(12, 6, r3)
1994
+ return 1
1995
+
1996
+ [case testMethodCallWithDefaultArgs]
1997
+ class A:
1998
+ def f(self, x: int, y: int = 3, z: str = "test") -> None:
1999
+ return None
2000
+
2001
+ def g() -> None:
2002
+ a = A()
2003
+ a.f(2)
2004
+ a.f(y = 3, x = 6)
2005
+ [out]
2006
+ def A.f(self, x, y, z):
2007
+ self :: __main__.A
2008
+ x, y :: int
2009
+ z, r0 :: str
2010
+ L0:
2011
+ if is_error(y) goto L1 else goto L2
2012
+ L1:
2013
+ y = 6
2014
+ L2:
2015
+ if is_error(z) goto L3 else goto L4
2016
+ L3:
2017
+ r0 = 'test'
2018
+ z = r0
2019
+ L4:
2020
+ return 1
2021
+ def g():
2022
+ r0, a :: __main__.A
2023
+ r1 :: int
2024
+ r2 :: str
2025
+ r3 :: None
2026
+ r4 :: str
2027
+ r5 :: None
2028
+ L0:
2029
+ r0 = A()
2030
+ a = r0
2031
+ r1 = <error> :: int
2032
+ r2 = <error> :: str
2033
+ r3 = a.f(4, r1, r2)
2034
+ r4 = <error> :: str
2035
+ r5 = a.f(12, 6, r4)
2036
+ return 1
2037
+
2038
+ [case testListComprehension]
2039
+ from typing import List
2040
+
2041
+ def f() -> List[int]:
2042
+ return [x*x for x in [1,2,3] if x != 2 if x != 3]
2043
+ [out]
2044
+ def f():
2045
+ r0, r1 :: list
2046
+ r2, r3, r4 :: object
2047
+ r5, r6, r7, r8 :: ptr
2048
+ r9 :: short_int
2049
+ r10 :: ptr
2050
+ r11 :: native_int
2051
+ r12 :: short_int
2052
+ r13 :: bit
2053
+ r14 :: object
2054
+ r15, x :: int
2055
+ r16 :: native_int
2056
+ r17, r18 :: bit
2057
+ r19 :: bool
2058
+ r20, r21 :: bit
2059
+ r22 :: native_int
2060
+ r23, r24 :: bit
2061
+ r25 :: bool
2062
+ r26, r27 :: bit
2063
+ r28 :: int
2064
+ r29 :: object
2065
+ r30 :: i32
2066
+ r31 :: bit
2067
+ r32 :: short_int
2068
+ L0:
2069
+ r0 = PyList_New(0)
2070
+ r1 = PyList_New(3)
2071
+ r2 = object 1
2072
+ r3 = object 2
2073
+ r4 = object 3
2074
+ r5 = get_element_ptr r1 ob_item :: PyListObject
2075
+ r6 = load_mem r5 :: ptr*
2076
+ set_mem r6, r2 :: builtins.object*
2077
+ r7 = r6 + WORD_SIZE*1
2078
+ set_mem r7, r3 :: builtins.object*
2079
+ r8 = r6 + WORD_SIZE*2
2080
+ set_mem r8, r4 :: builtins.object*
2081
+ keep_alive r1
2082
+ r9 = 0
2083
+ L1:
2084
+ r10 = get_element_ptr r1 ob_size :: PyVarObject
2085
+ r11 = load_mem r10 :: native_int*
2086
+ keep_alive r1
2087
+ r12 = r11 << 1
2088
+ r13 = r9 < r12 :: signed
2089
+ if r13 goto L2 else goto L14 :: bool
2090
+ L2:
2091
+ r14 = CPyList_GetItemUnsafe(r1, r9)
2092
+ r15 = unbox(int, r14)
2093
+ x = r15
2094
+ r16 = x & 1
2095
+ r17 = r16 == 0
2096
+ if r17 goto L3 else goto L4 :: bool
2097
+ L3:
2098
+ r18 = x != 4
2099
+ r19 = r18
2100
+ goto L5
2101
+ L4:
2102
+ r20 = CPyTagged_IsEq_(x, 4)
2103
+ r21 = r20 ^ 1
2104
+ r19 = r21
2105
+ L5:
2106
+ if r19 goto L7 else goto L6 :: bool
2107
+ L6:
2108
+ goto L13
2109
+ L7:
2110
+ r22 = x & 1
2111
+ r23 = r22 == 0
2112
+ if r23 goto L8 else goto L9 :: bool
2113
+ L8:
2114
+ r24 = x != 6
2115
+ r25 = r24
2116
+ goto L10
2117
+ L9:
2118
+ r26 = CPyTagged_IsEq_(x, 6)
2119
+ r27 = r26 ^ 1
2120
+ r25 = r27
2121
+ L10:
2122
+ if r25 goto L12 else goto L11 :: bool
2123
+ L11:
2124
+ goto L13
2125
+ L12:
2126
+ r28 = CPyTagged_Multiply(x, x)
2127
+ r29 = box(int, r28)
2128
+ r30 = PyList_Append(r0, r29)
2129
+ r31 = r30 >= 0 :: signed
2130
+ L13:
2131
+ r32 = r9 + 2
2132
+ r9 = r32
2133
+ goto L1
2134
+ L14:
2135
+ return r0
2136
+
2137
+ [case testDictComprehension]
2138
+ from typing import Dict
2139
+ def f() -> Dict[int, int]:
2140
+ return {x: x*x for x in [1,2,3] if x != 2 if x != 3}
2141
+ [out]
2142
+ def f():
2143
+ r0 :: dict
2144
+ r1 :: list
2145
+ r2, r3, r4 :: object
2146
+ r5, r6, r7, r8 :: ptr
2147
+ r9 :: short_int
2148
+ r10 :: ptr
2149
+ r11 :: native_int
2150
+ r12 :: short_int
2151
+ r13 :: bit
2152
+ r14 :: object
2153
+ r15, x :: int
2154
+ r16 :: native_int
2155
+ r17, r18 :: bit
2156
+ r19 :: bool
2157
+ r20, r21 :: bit
2158
+ r22 :: native_int
2159
+ r23, r24 :: bit
2160
+ r25 :: bool
2161
+ r26, r27 :: bit
2162
+ r28 :: int
2163
+ r29, r30 :: object
2164
+ r31 :: i32
2165
+ r32 :: bit
2166
+ r33 :: short_int
2167
+ L0:
2168
+ r0 = PyDict_New()
2169
+ r1 = PyList_New(3)
2170
+ r2 = object 1
2171
+ r3 = object 2
2172
+ r4 = object 3
2173
+ r5 = get_element_ptr r1 ob_item :: PyListObject
2174
+ r6 = load_mem r5 :: ptr*
2175
+ set_mem r6, r2 :: builtins.object*
2176
+ r7 = r6 + WORD_SIZE*1
2177
+ set_mem r7, r3 :: builtins.object*
2178
+ r8 = r6 + WORD_SIZE*2
2179
+ set_mem r8, r4 :: builtins.object*
2180
+ keep_alive r1
2181
+ r9 = 0
2182
+ L1:
2183
+ r10 = get_element_ptr r1 ob_size :: PyVarObject
2184
+ r11 = load_mem r10 :: native_int*
2185
+ keep_alive r1
2186
+ r12 = r11 << 1
2187
+ r13 = r9 < r12 :: signed
2188
+ if r13 goto L2 else goto L14 :: bool
2189
+ L2:
2190
+ r14 = CPyList_GetItemUnsafe(r1, r9)
2191
+ r15 = unbox(int, r14)
2192
+ x = r15
2193
+ r16 = x & 1
2194
+ r17 = r16 == 0
2195
+ if r17 goto L3 else goto L4 :: bool
2196
+ L3:
2197
+ r18 = x != 4
2198
+ r19 = r18
2199
+ goto L5
2200
+ L4:
2201
+ r20 = CPyTagged_IsEq_(x, 4)
2202
+ r21 = r20 ^ 1
2203
+ r19 = r21
2204
+ L5:
2205
+ if r19 goto L7 else goto L6 :: bool
2206
+ L6:
2207
+ goto L13
2208
+ L7:
2209
+ r22 = x & 1
2210
+ r23 = r22 == 0
2211
+ if r23 goto L8 else goto L9 :: bool
2212
+ L8:
2213
+ r24 = x != 6
2214
+ r25 = r24
2215
+ goto L10
2216
+ L9:
2217
+ r26 = CPyTagged_IsEq_(x, 6)
2218
+ r27 = r26 ^ 1
2219
+ r25 = r27
2220
+ L10:
2221
+ if r25 goto L12 else goto L11 :: bool
2222
+ L11:
2223
+ goto L13
2224
+ L12:
2225
+ r28 = CPyTagged_Multiply(x, x)
2226
+ r29 = box(int, x)
2227
+ r30 = box(int, r28)
2228
+ r31 = CPyDict_SetItem(r0, r29, r30)
2229
+ r32 = r31 >= 0 :: signed
2230
+ L13:
2231
+ r33 = r9 + 2
2232
+ r9 = r33
2233
+ goto L1
2234
+ L14:
2235
+ return r0
2236
+
2237
+ [case testLoopsMultipleAssign]
2238
+ from typing import List, Tuple
2239
+ def f(l: List[Tuple[int, int, int]]) -> List[int]:
2240
+ for x, y, z in l:
2241
+ pass
2242
+ return [x+y+z for x, y, z in l]
2243
+ [out]
2244
+ def f(l):
2245
+ l :: list
2246
+ r0 :: short_int
2247
+ r1 :: ptr
2248
+ r2 :: native_int
2249
+ r3 :: short_int
2250
+ r4 :: bit
2251
+ r5 :: object
2252
+ r6 :: tuple[int, int, int]
2253
+ r7, x, r8, y, r9, z :: int
2254
+ r10 :: short_int
2255
+ r11 :: ptr
2256
+ r12 :: native_int
2257
+ r13 :: list
2258
+ r14 :: short_int
2259
+ r15 :: ptr
2260
+ r16 :: native_int
2261
+ r17 :: short_int
2262
+ r18 :: bit
2263
+ r19 :: object
2264
+ r20 :: tuple[int, int, int]
2265
+ r21, x_2, r22, y_2, r23, z_2, r24, r25 :: int
2266
+ r26 :: object
2267
+ r27 :: bit
2268
+ r28 :: short_int
2269
+ L0:
2270
+ r0 = 0
2271
+ L1:
2272
+ r1 = get_element_ptr l ob_size :: PyVarObject
2273
+ r2 = load_mem r1 :: native_int*
2274
+ keep_alive l
2275
+ r3 = r2 << 1
2276
+ r4 = r0 < r3 :: signed
2277
+ if r4 goto L2 else goto L4 :: bool
2278
+ L2:
2279
+ r5 = CPyList_GetItemUnsafe(l, r0)
2280
+ r6 = unbox(tuple[int, int, int], r5)
2281
+ r7 = r6[0]
2282
+ x = r7
2283
+ r8 = r6[1]
2284
+ y = r8
2285
+ r9 = r6[2]
2286
+ z = r9
2287
+ L3:
2288
+ r10 = r0 + 2
2289
+ r0 = r10
2290
+ goto L1
2291
+ L4:
2292
+ r11 = get_element_ptr l ob_size :: PyVarObject
2293
+ r12 = load_mem r11 :: native_int*
2294
+ keep_alive l
2295
+ r13 = PyList_New(r12)
2296
+ r14 = 0
2297
+ L5:
2298
+ r15 = get_element_ptr l ob_size :: PyVarObject
2299
+ r16 = load_mem r15 :: native_int*
2300
+ keep_alive l
2301
+ r17 = r16 << 1
2302
+ r18 = r14 < r17 :: signed
2303
+ if r18 goto L6 else goto L8 :: bool
2304
+ L6:
2305
+ r19 = CPyList_GetItemUnsafe(l, r14)
2306
+ r20 = unbox(tuple[int, int, int], r19)
2307
+ r21 = r20[0]
2308
+ x_2 = r21
2309
+ r22 = r20[1]
2310
+ y_2 = r22
2311
+ r23 = r20[2]
2312
+ z_2 = r23
2313
+ r24 = CPyTagged_Add(x_2, y_2)
2314
+ r25 = CPyTagged_Add(r24, z_2)
2315
+ r26 = box(int, r25)
2316
+ r27 = CPyList_SetItemUnsafe(r13, r14, r26)
2317
+ L7:
2318
+ r28 = r14 + 2
2319
+ r14 = r28
2320
+ goto L5
2321
+ L8:
2322
+ return r13
2323
+
2324
+ [case testProperty]
2325
+ class PropertyHolder:
2326
+ @property
2327
+ def value(self) -> int:
2328
+ return self.left + self.right if self.is_add else self.left - self.right
2329
+ def __init__(self, left: int, right: int, is_add: bool) -> None:
2330
+ self.left = left
2331
+ self.right = right
2332
+ self.is_add = is_add
2333
+ def twice_value(self) -> int:
2334
+ return 2 * self.value
2335
+ [out]
2336
+ def PropertyHolder.value(self):
2337
+ self :: __main__.PropertyHolder
2338
+ r0 :: bool
2339
+ r1, r2, r3, r4, r5, r6, r7 :: int
2340
+ L0:
2341
+ r0 = self.is_add
2342
+ if r0 goto L1 else goto L2 :: bool
2343
+ L1:
2344
+ r1 = borrow self.left
2345
+ r2 = borrow self.right
2346
+ r3 = CPyTagged_Add(r1, r2)
2347
+ keep_alive self, self
2348
+ r4 = r3
2349
+ goto L3
2350
+ L2:
2351
+ r5 = borrow self.left
2352
+ r6 = borrow self.right
2353
+ r7 = CPyTagged_Subtract(r5, r6)
2354
+ keep_alive self, self
2355
+ r4 = r7
2356
+ L3:
2357
+ return r4
2358
+ def PropertyHolder.__init__(self, left, right, is_add):
2359
+ self :: __main__.PropertyHolder
2360
+ left, right :: int
2361
+ is_add :: bool
2362
+ L0:
2363
+ self.left = left
2364
+ self.right = right
2365
+ self.is_add = is_add
2366
+ return 1
2367
+ def PropertyHolder.twice_value(self):
2368
+ self :: __main__.PropertyHolder
2369
+ r0, r1 :: int
2370
+ L0:
2371
+ r0 = self.value
2372
+ r1 = CPyTagged_Multiply(4, r0)
2373
+ return r1
2374
+
2375
+ [case testNativeIndex]
2376
+ from typing import List
2377
+ class A:
2378
+ def __getitem__(self, index: int) -> int: pass
2379
+
2380
+ def g(a: A, b: List[int], c: int) -> int:
2381
+ return a[c] + b[c]
2382
+ [out]
2383
+ def A.__getitem__(self, index):
2384
+ self :: __main__.A
2385
+ index :: int
2386
+ L0:
2387
+ unreachable
2388
+ def g(a, b, c):
2389
+ a :: __main__.A
2390
+ b :: list
2391
+ c, r0 :: int
2392
+ r1 :: object
2393
+ r2, r3 :: int
2394
+ L0:
2395
+ r0 = a.__getitem__(c)
2396
+ r1 = CPyList_GetItemBorrow(b, c)
2397
+ r2 = unbox(int, r1)
2398
+ r3 = CPyTagged_Add(r0, r2)
2399
+ keep_alive b, c
2400
+ return r3
2401
+
2402
+ [case testTypeAlias_toplevel]
2403
+ from typing import List, NewType, NamedTuple
2404
+ Lol = NamedTuple('Lol', (('a', int), ('b', str)))
2405
+ x = Lol(1, '')
2406
+ Foo = List[int]
2407
+ Bar = NewType('Bar', Foo)
2408
+ y = Bar([1,2,3])
2409
+ [out]
2410
+ def __top_level__():
2411
+ r0, r1 :: object
2412
+ r2 :: bit
2413
+ r3 :: str
2414
+ r4, r5 :: object
2415
+ r6 :: str
2416
+ r7 :: dict
2417
+ r8 :: object
2418
+ r9, r10 :: str
2419
+ r11 :: object
2420
+ r12 :: tuple[str, object]
2421
+ r13 :: object
2422
+ r14 :: str
2423
+ r15 :: object
2424
+ r16 :: tuple[str, object]
2425
+ r17 :: object
2426
+ r18 :: tuple[object, object]
2427
+ r19 :: object
2428
+ r20 :: dict
2429
+ r21 :: str
2430
+ r22, r23 :: object
2431
+ r24 :: dict
2432
+ r25 :: str
2433
+ r26 :: i32
2434
+ r27 :: bit
2435
+ r28 :: str
2436
+ r29 :: dict
2437
+ r30 :: str
2438
+ r31, r32, r33 :: object
2439
+ r34 :: tuple
2440
+ r35 :: dict
2441
+ r36 :: str
2442
+ r37 :: i32
2443
+ r38 :: bit
2444
+ r39 :: dict
2445
+ r40 :: str
2446
+ r41, r42, r43 :: object
2447
+ r44 :: dict
2448
+ r45 :: str
2449
+ r46 :: i32
2450
+ r47 :: bit
2451
+ r48 :: str
2452
+ r49 :: dict
2453
+ r50 :: str
2454
+ r51 :: object
2455
+ r52 :: dict
2456
+ r53 :: str
2457
+ r54, r55 :: object
2458
+ r56 :: dict
2459
+ r57 :: str
2460
+ r58 :: i32
2461
+ r59 :: bit
2462
+ r60 :: list
2463
+ r61, r62, r63 :: object
2464
+ r64, r65, r66, r67 :: ptr
2465
+ r68 :: dict
2466
+ r69 :: str
2467
+ r70 :: i32
2468
+ r71 :: bit
2469
+ L0:
2470
+ r0 = builtins :: module
2471
+ r1 = load_address _Py_NoneStruct
2472
+ r2 = r0 != r1
2473
+ if r2 goto L2 else goto L1 :: bool
2474
+ L1:
2475
+ r3 = 'builtins'
2476
+ r4 = PyImport_Import(r3)
2477
+ builtins = r4 :: module
2478
+ L2:
2479
+ r5 = ('List', 'NewType', 'NamedTuple')
2480
+ r6 = 'typing'
2481
+ r7 = __main__.globals :: static
2482
+ r8 = CPyImport_ImportFromMany(r6, r5, r5, r7)
2483
+ typing = r8 :: module
2484
+ r9 = 'Lol'
2485
+ r10 = 'a'
2486
+ r11 = load_address PyLong_Type
2487
+ r12 = (r10, r11)
2488
+ r13 = box(tuple[str, object], r12)
2489
+ r14 = 'b'
2490
+ r15 = load_address PyUnicode_Type
2491
+ r16 = (r14, r15)
2492
+ r17 = box(tuple[str, object], r16)
2493
+ r18 = (r13, r17)
2494
+ r19 = box(tuple[object, object], r18)
2495
+ r20 = __main__.globals :: static
2496
+ r21 = 'NamedTuple'
2497
+ r22 = CPyDict_GetItem(r20, r21)
2498
+ r23 = PyObject_CallFunctionObjArgs(r22, r9, r19, 0)
2499
+ r24 = __main__.globals :: static
2500
+ r25 = 'Lol'
2501
+ r26 = CPyDict_SetItem(r24, r25, r23)
2502
+ r27 = r26 >= 0 :: signed
2503
+ r28 = ''
2504
+ r29 = __main__.globals :: static
2505
+ r30 = 'Lol'
2506
+ r31 = CPyDict_GetItem(r29, r30)
2507
+ r32 = object 1
2508
+ r33 = PyObject_CallFunctionObjArgs(r31, r32, r28, 0)
2509
+ r34 = cast(tuple, r33)
2510
+ r35 = __main__.globals :: static
2511
+ r36 = 'x'
2512
+ r37 = CPyDict_SetItem(r35, r36, r34)
2513
+ r38 = r37 >= 0 :: signed
2514
+ r39 = __main__.globals :: static
2515
+ r40 = 'List'
2516
+ r41 = CPyDict_GetItem(r39, r40)
2517
+ r42 = load_address PyLong_Type
2518
+ r43 = PyObject_GetItem(r41, r42)
2519
+ r44 = __main__.globals :: static
2520
+ r45 = 'Foo'
2521
+ r46 = CPyDict_SetItem(r44, r45, r43)
2522
+ r47 = r46 >= 0 :: signed
2523
+ r48 = 'Bar'
2524
+ r49 = __main__.globals :: static
2525
+ r50 = 'Foo'
2526
+ r51 = CPyDict_GetItem(r49, r50)
2527
+ r52 = __main__.globals :: static
2528
+ r53 = 'NewType'
2529
+ r54 = CPyDict_GetItem(r52, r53)
2530
+ r55 = PyObject_CallFunctionObjArgs(r54, r48, r51, 0)
2531
+ r56 = __main__.globals :: static
2532
+ r57 = 'Bar'
2533
+ r58 = CPyDict_SetItem(r56, r57, r55)
2534
+ r59 = r58 >= 0 :: signed
2535
+ r60 = PyList_New(3)
2536
+ r61 = object 1
2537
+ r62 = object 2
2538
+ r63 = object 3
2539
+ r64 = get_element_ptr r60 ob_item :: PyListObject
2540
+ r65 = load_mem r64 :: ptr*
2541
+ set_mem r65, r61 :: builtins.object*
2542
+ r66 = r65 + WORD_SIZE*1
2543
+ set_mem r66, r62 :: builtins.object*
2544
+ r67 = r65 + WORD_SIZE*2
2545
+ set_mem r67, r63 :: builtins.object*
2546
+ keep_alive r60
2547
+ r68 = __main__.globals :: static
2548
+ r69 = 'y'
2549
+ r70 = CPyDict_SetItem(r68, r69, r60)
2550
+ r71 = r70 >= 0 :: signed
2551
+ return 1
2552
+
2553
+ [case testChainedConditional]
2554
+ def g(x: int) -> int:
2555
+ return x
2556
+ def f(x: int, y: int, z: int) -> bool:
2557
+ return g(x) < g(y) > g(z)
2558
+ [out]
2559
+ def g(x):
2560
+ x :: int
2561
+ L0:
2562
+ return x
2563
+ def f(x, y, z):
2564
+ x, y, z, r0, r1 :: int
2565
+ r2 :: native_int
2566
+ r3 :: bit
2567
+ r4 :: native_int
2568
+ r5, r6, r7 :: bit
2569
+ r8 :: bool
2570
+ r9 :: bit
2571
+ r10 :: bool
2572
+ r11 :: int
2573
+ r12 :: native_int
2574
+ r13 :: bit
2575
+ r14 :: native_int
2576
+ r15, r16, r17 :: bit
2577
+ r18 :: bool
2578
+ r19 :: bit
2579
+ L0:
2580
+ r0 = g(x)
2581
+ r1 = g(y)
2582
+ r2 = r0 & 1
2583
+ r3 = r2 == 0
2584
+ r4 = r1 & 1
2585
+ r5 = r4 == 0
2586
+ r6 = r3 & r5
2587
+ if r6 goto L1 else goto L2 :: bool
2588
+ L1:
2589
+ r7 = r0 < r1 :: signed
2590
+ r8 = r7
2591
+ goto L3
2592
+ L2:
2593
+ r9 = CPyTagged_IsLt_(r0, r1)
2594
+ r8 = r9
2595
+ L3:
2596
+ if r8 goto L5 else goto L4 :: bool
2597
+ L4:
2598
+ r10 = r8
2599
+ goto L9
2600
+ L5:
2601
+ r11 = g(z)
2602
+ r12 = r1 & 1
2603
+ r13 = r12 == 0
2604
+ r14 = r11 & 1
2605
+ r15 = r14 == 0
2606
+ r16 = r13 & r15
2607
+ if r16 goto L6 else goto L7 :: bool
2608
+ L6:
2609
+ r17 = r1 > r11 :: signed
2610
+ r18 = r17
2611
+ goto L8
2612
+ L7:
2613
+ r19 = CPyTagged_IsLt_(r11, r1)
2614
+ r18 = r19
2615
+ L8:
2616
+ r10 = r18
2617
+ L9:
2618
+ return r10
2619
+
2620
+ [case testEq]
2621
+ class A:
2622
+ def __eq__(self, x: object) -> bool:
2623
+ return NotImplemented
2624
+ [out]
2625
+ def A.__eq__(self, x):
2626
+ self :: __main__.A
2627
+ x, r0 :: object
2628
+ L0:
2629
+ r0 = load_address _Py_NotImplementedStruct
2630
+ return r0
2631
+ def A.__ne__(__mypyc_self__, rhs):
2632
+ __mypyc_self__ :: __main__.A
2633
+ rhs, r0, r1 :: object
2634
+ r2 :: bit
2635
+ r3 :: i32
2636
+ r4 :: bit
2637
+ r5 :: bool
2638
+ r6 :: object
2639
+ L0:
2640
+ r0 = __mypyc_self__.__eq__(rhs)
2641
+ r1 = load_address _Py_NotImplementedStruct
2642
+ r2 = r0 == r1
2643
+ if r2 goto L2 else goto L1 :: bool
2644
+ L1:
2645
+ r3 = PyObject_Not(r0)
2646
+ r4 = r3 >= 0 :: signed
2647
+ r5 = truncate r3: i32 to builtins.bool
2648
+ r6 = box(bool, r5)
2649
+ return r6
2650
+ L2:
2651
+ return r1
2652
+
2653
+ [case testDecorators_toplevel]
2654
+ from typing import Callable
2655
+
2656
+ def a(f: Callable[[], None]) -> Callable[[], None]:
2657
+ def g() -> None:
2658
+ print('Entering')
2659
+ f()
2660
+ print('Exited')
2661
+ return g
2662
+
2663
+ def b(f: Callable[[], None]) -> Callable[[], None]:
2664
+ def g() -> None:
2665
+ print('---')
2666
+ f()
2667
+ print('---')
2668
+ return g
2669
+
2670
+ @a
2671
+ @b
2672
+ def c() -> None:
2673
+ @a
2674
+ @b
2675
+ def d() -> None:
2676
+ print('d')
2677
+ print('c')
2678
+ d()
2679
+
2680
+ [out]
2681
+ def g_a_obj.__get__(__mypyc_self__, instance, owner):
2682
+ __mypyc_self__, instance, owner, r0 :: object
2683
+ r1 :: bit
2684
+ r2 :: object
2685
+ L0:
2686
+ r0 = load_address _Py_NoneStruct
2687
+ r1 = instance == r0
2688
+ if r1 goto L1 else goto L2 :: bool
2689
+ L1:
2690
+ return __mypyc_self__
2691
+ L2:
2692
+ r2 = PyMethod_New(__mypyc_self__, instance)
2693
+ return r2
2694
+ def g_a_obj.__call__(__mypyc_self__):
2695
+ __mypyc_self__ :: __main__.g_a_obj
2696
+ r0 :: __main__.a_env
2697
+ r1 :: str
2698
+ r2 :: object
2699
+ r3 :: str
2700
+ r4, r5, r6, r7 :: object
2701
+ r8 :: str
2702
+ r9 :: object
2703
+ r10 :: str
2704
+ r11, r12 :: object
2705
+ L0:
2706
+ r0 = __mypyc_self__.__mypyc_env__
2707
+ r1 = 'Entering'
2708
+ r2 = builtins :: module
2709
+ r3 = 'print'
2710
+ r4 = CPyObject_GetAttr(r2, r3)
2711
+ r5 = PyObject_CallFunctionObjArgs(r4, r1, 0)
2712
+ r6 = r0.f
2713
+ r7 = PyObject_CallFunctionObjArgs(r6, 0)
2714
+ r8 = 'Exited'
2715
+ r9 = builtins :: module
2716
+ r10 = 'print'
2717
+ r11 = CPyObject_GetAttr(r9, r10)
2718
+ r12 = PyObject_CallFunctionObjArgs(r11, r8, 0)
2719
+ return 1
2720
+ def a(f):
2721
+ f :: object
2722
+ r0 :: __main__.a_env
2723
+ r1 :: bool
2724
+ r2 :: __main__.g_a_obj
2725
+ r3 :: bool
2726
+ g :: object
2727
+ L0:
2728
+ r0 = a_env()
2729
+ r0.f = f; r1 = is_error
2730
+ r2 = g_a_obj()
2731
+ r2.__mypyc_env__ = r0; r3 = is_error
2732
+ g = r2
2733
+ return g
2734
+ def g_b_obj.__get__(__mypyc_self__, instance, owner):
2735
+ __mypyc_self__, instance, owner, r0 :: object
2736
+ r1 :: bit
2737
+ r2 :: object
2738
+ L0:
2739
+ r0 = load_address _Py_NoneStruct
2740
+ r1 = instance == r0
2741
+ if r1 goto L1 else goto L2 :: bool
2742
+ L1:
2743
+ return __mypyc_self__
2744
+ L2:
2745
+ r2 = PyMethod_New(__mypyc_self__, instance)
2746
+ return r2
2747
+ def g_b_obj.__call__(__mypyc_self__):
2748
+ __mypyc_self__ :: __main__.g_b_obj
2749
+ r0 :: __main__.b_env
2750
+ r1 :: str
2751
+ r2 :: object
2752
+ r3 :: str
2753
+ r4, r5, r6, r7 :: object
2754
+ r8 :: str
2755
+ r9 :: object
2756
+ r10 :: str
2757
+ r11, r12 :: object
2758
+ L0:
2759
+ r0 = __mypyc_self__.__mypyc_env__
2760
+ r1 = '---'
2761
+ r2 = builtins :: module
2762
+ r3 = 'print'
2763
+ r4 = CPyObject_GetAttr(r2, r3)
2764
+ r5 = PyObject_CallFunctionObjArgs(r4, r1, 0)
2765
+ r6 = r0.f
2766
+ r7 = PyObject_CallFunctionObjArgs(r6, 0)
2767
+ r8 = '---'
2768
+ r9 = builtins :: module
2769
+ r10 = 'print'
2770
+ r11 = CPyObject_GetAttr(r9, r10)
2771
+ r12 = PyObject_CallFunctionObjArgs(r11, r8, 0)
2772
+ return 1
2773
+ def b(f):
2774
+ f :: object
2775
+ r0 :: __main__.b_env
2776
+ r1 :: bool
2777
+ r2 :: __main__.g_b_obj
2778
+ r3 :: bool
2779
+ g :: object
2780
+ L0:
2781
+ r0 = b_env()
2782
+ r0.f = f; r1 = is_error
2783
+ r2 = g_b_obj()
2784
+ r2.__mypyc_env__ = r0; r3 = is_error
2785
+ g = r2
2786
+ return g
2787
+ def d_c_obj.__get__(__mypyc_self__, instance, owner):
2788
+ __mypyc_self__, instance, owner, r0 :: object
2789
+ r1 :: bit
2790
+ r2 :: object
2791
+ L0:
2792
+ r0 = load_address _Py_NoneStruct
2793
+ r1 = instance == r0
2794
+ if r1 goto L1 else goto L2 :: bool
2795
+ L1:
2796
+ return __mypyc_self__
2797
+ L2:
2798
+ r2 = PyMethod_New(__mypyc_self__, instance)
2799
+ return r2
2800
+ def d_c_obj.__call__(__mypyc_self__):
2801
+ __mypyc_self__ :: __main__.d_c_obj
2802
+ r0 :: __main__.c_env
2803
+ r1 :: str
2804
+ r2 :: object
2805
+ r3 :: str
2806
+ r4, r5 :: object
2807
+ L0:
2808
+ r0 = __mypyc_self__.__mypyc_env__
2809
+ r1 = 'd'
2810
+ r2 = builtins :: module
2811
+ r3 = 'print'
2812
+ r4 = CPyObject_GetAttr(r2, r3)
2813
+ r5 = PyObject_CallFunctionObjArgs(r4, r1, 0)
2814
+ return 1
2815
+ def c():
2816
+ r0 :: __main__.c_env
2817
+ r1 :: __main__.d_c_obj
2818
+ r2 :: bool
2819
+ r3 :: dict
2820
+ r4 :: str
2821
+ r5, r6 :: object
2822
+ r7 :: dict
2823
+ r8 :: str
2824
+ r9, r10, d :: object
2825
+ r11 :: dict
2826
+ r12 :: str
2827
+ r13 :: i32
2828
+ r14 :: bit
2829
+ r15 :: str
2830
+ r16 :: object
2831
+ r17 :: str
2832
+ r18, r19, r20 :: object
2833
+ L0:
2834
+ r0 = c_env()
2835
+ r1 = d_c_obj()
2836
+ r1.__mypyc_env__ = r0; r2 = is_error
2837
+ r3 = __main__.globals :: static
2838
+ r4 = 'b'
2839
+ r5 = CPyDict_GetItem(r3, r4)
2840
+ r6 = PyObject_CallFunctionObjArgs(r5, r1, 0)
2841
+ r7 = __main__.globals :: static
2842
+ r8 = 'a'
2843
+ r9 = CPyDict_GetItem(r7, r8)
2844
+ r10 = PyObject_CallFunctionObjArgs(r9, r6, 0)
2845
+ d = r10
2846
+ r11 = __main__.globals :: static
2847
+ r12 = 'd'
2848
+ r13 = CPyDict_SetItem(r11, r12, r10)
2849
+ r14 = r13 >= 0 :: signed
2850
+ r15 = 'c'
2851
+ r16 = builtins :: module
2852
+ r17 = 'print'
2853
+ r18 = CPyObject_GetAttr(r16, r17)
2854
+ r19 = PyObject_CallFunctionObjArgs(r18, r15, 0)
2855
+ r20 = PyObject_CallFunctionObjArgs(d, 0)
2856
+ return 1
2857
+ def __top_level__():
2858
+ r0, r1 :: object
2859
+ r2 :: bit
2860
+ r3 :: str
2861
+ r4, r5 :: object
2862
+ r6 :: str
2863
+ r7 :: dict
2864
+ r8 :: object
2865
+ r9 :: dict
2866
+ r10 :: str
2867
+ r11 :: object
2868
+ r12 :: dict
2869
+ r13 :: str
2870
+ r14, r15 :: object
2871
+ r16 :: dict
2872
+ r17 :: str
2873
+ r18, r19 :: object
2874
+ r20 :: dict
2875
+ r21 :: str
2876
+ r22 :: i32
2877
+ r23 :: bit
2878
+ L0:
2879
+ r0 = builtins :: module
2880
+ r1 = load_address _Py_NoneStruct
2881
+ r2 = r0 != r1
2882
+ if r2 goto L2 else goto L1 :: bool
2883
+ L1:
2884
+ r3 = 'builtins'
2885
+ r4 = PyImport_Import(r3)
2886
+ builtins = r4 :: module
2887
+ L2:
2888
+ r5 = ('Callable',)
2889
+ r6 = 'typing'
2890
+ r7 = __main__.globals :: static
2891
+ r8 = CPyImport_ImportFromMany(r6, r5, r5, r7)
2892
+ typing = r8 :: module
2893
+ r9 = __main__.globals :: static
2894
+ r10 = 'c'
2895
+ r11 = CPyDict_GetItem(r9, r10)
2896
+ r12 = __main__.globals :: static
2897
+ r13 = 'b'
2898
+ r14 = CPyDict_GetItem(r12, r13)
2899
+ r15 = PyObject_CallFunctionObjArgs(r14, r11, 0)
2900
+ r16 = __main__.globals :: static
2901
+ r17 = 'a'
2902
+ r18 = CPyDict_GetItem(r16, r17)
2903
+ r19 = PyObject_CallFunctionObjArgs(r18, r15, 0)
2904
+ r20 = __main__.globals :: static
2905
+ r21 = 'c'
2906
+ r22 = CPyDict_SetItem(r20, r21, r19)
2907
+ r23 = r22 >= 0 :: signed
2908
+ return 1
2909
+
2910
+ [case testDecoratorsSimple_toplevel]
2911
+ from typing import Callable
2912
+
2913
+ def a(f: Callable[[], None]) -> Callable[[], None]:
2914
+ def g() -> None:
2915
+ print('Entering')
2916
+ f()
2917
+ print('Exited')
2918
+ return g
2919
+
2920
+ [out]
2921
+ def g_a_obj.__get__(__mypyc_self__, instance, owner):
2922
+ __mypyc_self__, instance, owner, r0 :: object
2923
+ r1 :: bit
2924
+ r2 :: object
2925
+ L0:
2926
+ r0 = load_address _Py_NoneStruct
2927
+ r1 = instance == r0
2928
+ if r1 goto L1 else goto L2 :: bool
2929
+ L1:
2930
+ return __mypyc_self__
2931
+ L2:
2932
+ r2 = PyMethod_New(__mypyc_self__, instance)
2933
+ return r2
2934
+ def g_a_obj.__call__(__mypyc_self__):
2935
+ __mypyc_self__ :: __main__.g_a_obj
2936
+ r0 :: __main__.a_env
2937
+ r1 :: str
2938
+ r2 :: object
2939
+ r3 :: str
2940
+ r4, r5, r6, r7 :: object
2941
+ r8 :: str
2942
+ r9 :: object
2943
+ r10 :: str
2944
+ r11, r12 :: object
2945
+ L0:
2946
+ r0 = __mypyc_self__.__mypyc_env__
2947
+ r1 = 'Entering'
2948
+ r2 = builtins :: module
2949
+ r3 = 'print'
2950
+ r4 = CPyObject_GetAttr(r2, r3)
2951
+ r5 = PyObject_CallFunctionObjArgs(r4, r1, 0)
2952
+ r6 = r0.f
2953
+ r7 = PyObject_CallFunctionObjArgs(r6, 0)
2954
+ r8 = 'Exited'
2955
+ r9 = builtins :: module
2956
+ r10 = 'print'
2957
+ r11 = CPyObject_GetAttr(r9, r10)
2958
+ r12 = PyObject_CallFunctionObjArgs(r11, r8, 0)
2959
+ return 1
2960
+ def a(f):
2961
+ f :: object
2962
+ r0 :: __main__.a_env
2963
+ r1 :: bool
2964
+ r2 :: __main__.g_a_obj
2965
+ r3 :: bool
2966
+ g :: object
2967
+ L0:
2968
+ r0 = a_env()
2969
+ r0.f = f; r1 = is_error
2970
+ r2 = g_a_obj()
2971
+ r2.__mypyc_env__ = r0; r3 = is_error
2972
+ g = r2
2973
+ return g
2974
+ def __top_level__():
2975
+ r0, r1 :: object
2976
+ r2 :: bit
2977
+ r3 :: str
2978
+ r4, r5 :: object
2979
+ r6 :: str
2980
+ r7 :: dict
2981
+ r8 :: object
2982
+ L0:
2983
+ r0 = builtins :: module
2984
+ r1 = load_address _Py_NoneStruct
2985
+ r2 = r0 != r1
2986
+ if r2 goto L2 else goto L1 :: bool
2987
+ L1:
2988
+ r3 = 'builtins'
2989
+ r4 = PyImport_Import(r3)
2990
+ builtins = r4 :: module
2991
+ L2:
2992
+ r5 = ('Callable',)
2993
+ r6 = 'typing'
2994
+ r7 = __main__.globals :: static
2995
+ r8 = CPyImport_ImportFromMany(r6, r5, r5, r7)
2996
+ typing = r8 :: module
2997
+ return 1
2998
+
2999
+ [case testAnyAllG]
3000
+ from typing import Iterable
3001
+
3002
+ def call_any(l: Iterable[int]) -> bool:
3003
+ return any(i == 0 for i in l)
3004
+
3005
+ def call_all(l: Iterable[int]) -> bool:
3006
+ return all(i == 0 for i in l)
3007
+
3008
+ [out]
3009
+ def call_any(l):
3010
+ l :: object
3011
+ r0 :: bool
3012
+ r1, r2 :: object
3013
+ r3, i :: int
3014
+ r4 :: native_int
3015
+ r5, r6 :: bit
3016
+ r7 :: bool
3017
+ r8, r9 :: bit
3018
+ L0:
3019
+ r0 = 0
3020
+ r1 = PyObject_GetIter(l)
3021
+ L1:
3022
+ r2 = PyIter_Next(r1)
3023
+ if is_error(r2) goto L9 else goto L2
3024
+ L2:
3025
+ r3 = unbox(int, r2)
3026
+ i = r3
3027
+ r4 = i & 1
3028
+ r5 = r4 == 0
3029
+ if r5 goto L3 else goto L4 :: bool
3030
+ L3:
3031
+ r6 = i == 0
3032
+ r7 = r6
3033
+ goto L5
3034
+ L4:
3035
+ r8 = CPyTagged_IsEq_(i, 0)
3036
+ r7 = r8
3037
+ L5:
3038
+ if r7 goto L6 else goto L7 :: bool
3039
+ L6:
3040
+ r0 = 1
3041
+ goto L11
3042
+ L7:
3043
+ L8:
3044
+ goto L1
3045
+ L9:
3046
+ r9 = CPy_NoErrOccured()
3047
+ L10:
3048
+ L11:
3049
+ return r0
3050
+ def call_all(l):
3051
+ l :: object
3052
+ r0 :: bool
3053
+ r1, r2 :: object
3054
+ r3, i :: int
3055
+ r4 :: native_int
3056
+ r5, r6 :: bit
3057
+ r7 :: bool
3058
+ r8 :: bit
3059
+ r9 :: bool
3060
+ r10 :: bit
3061
+ L0:
3062
+ r0 = 1
3063
+ r1 = PyObject_GetIter(l)
3064
+ L1:
3065
+ r2 = PyIter_Next(r1)
3066
+ if is_error(r2) goto L9 else goto L2
3067
+ L2:
3068
+ r3 = unbox(int, r2)
3069
+ i = r3
3070
+ r4 = i & 1
3071
+ r5 = r4 == 0
3072
+ if r5 goto L3 else goto L4 :: bool
3073
+ L3:
3074
+ r6 = i == 0
3075
+ r7 = r6
3076
+ goto L5
3077
+ L4:
3078
+ r8 = CPyTagged_IsEq_(i, 0)
3079
+ r7 = r8
3080
+ L5:
3081
+ r9 = r7 ^ 1
3082
+ if r9 goto L6 else goto L7 :: bool
3083
+ L6:
3084
+ r0 = 0
3085
+ goto L11
3086
+ L7:
3087
+ L8:
3088
+ goto L1
3089
+ L9:
3090
+ r10 = CPy_NoErrOccured()
3091
+ L10:
3092
+ L11:
3093
+ return r0
3094
+
3095
+ [case testSum]
3096
+ from typing import Callable, Iterable
3097
+
3098
+ def call_sum(l: Iterable[int], comparison: Callable[[int], bool]) -> int:
3099
+ return sum(comparison(x) for x in l)
3100
+
3101
+ [out]
3102
+ def call_sum(l, comparison):
3103
+ l, comparison :: object
3104
+ r0 :: int
3105
+ r1, r2 :: object
3106
+ r3, x :: int
3107
+ r4, r5 :: object
3108
+ r6, r7 :: bool
3109
+ r8, r9 :: int
3110
+ r10 :: bit
3111
+ L0:
3112
+ r0 = 0
3113
+ r1 = PyObject_GetIter(l)
3114
+ L1:
3115
+ r2 = PyIter_Next(r1)
3116
+ if is_error(r2) goto L4 else goto L2
3117
+ L2:
3118
+ r3 = unbox(int, r2)
3119
+ x = r3
3120
+ r4 = box(int, x)
3121
+ r5 = PyObject_CallFunctionObjArgs(comparison, r4, 0)
3122
+ r6 = unbox(bool, r5)
3123
+ r7 = r6 << 1
3124
+ r8 = extend r7: builtins.bool to builtins.int
3125
+ r9 = CPyTagged_Add(r0, r8)
3126
+ r0 = r9
3127
+ L3:
3128
+ goto L1
3129
+ L4:
3130
+ r10 = CPy_NoErrOccured()
3131
+ L5:
3132
+ return r0
3133
+
3134
+ [case testSetAttr1]
3135
+ from typing import Any, Dict, List
3136
+ def lol(x: Any):
3137
+ setattr(x, 'x', '5')
3138
+
3139
+ [out]
3140
+ def lol(x):
3141
+ x :: object
3142
+ r0, r1 :: str
3143
+ r2 :: i32
3144
+ r3 :: bit
3145
+ r4 :: object
3146
+ L0:
3147
+ r0 = 'x'
3148
+ r1 = '5'
3149
+ r2 = PyObject_SetAttr(x, r0, r1)
3150
+ r3 = r2 >= 0 :: signed
3151
+ r4 = box(None, 1)
3152
+ return r4
3153
+
3154
+ [case testFinalModuleInt]
3155
+ from typing import Final
3156
+
3157
+ x: Final = 1
3158
+ y: Final = 2
3159
+
3160
+ def f(a: bool) -> int:
3161
+ if a:
3162
+ return x
3163
+ else:
3164
+ return y
3165
+ [out]
3166
+ def f(a):
3167
+ a :: bool
3168
+ L0:
3169
+ if a goto L1 else goto L2 :: bool
3170
+ L1:
3171
+ return 2
3172
+ L2:
3173
+ return 4
3174
+ L3:
3175
+ unreachable
3176
+
3177
+ [case testFinalModuleStr]
3178
+ from typing import Final
3179
+
3180
+ x: Final = 'x'
3181
+ y: Final = 'y'
3182
+
3183
+ def f(a: bool) -> str:
3184
+ if a:
3185
+ return x
3186
+ else:
3187
+ return y
3188
+ [out]
3189
+ def f(a):
3190
+ a :: bool
3191
+ r0, r1 :: str
3192
+ L0:
3193
+ if a goto L1 else goto L2 :: bool
3194
+ L1:
3195
+ r0 = 'x'
3196
+ return r0
3197
+ L2:
3198
+ r1 = 'y'
3199
+ return r1
3200
+ L3:
3201
+ unreachable
3202
+
3203
+ [case testFinalModuleBool]
3204
+ from typing import Final
3205
+
3206
+ x: Final = True
3207
+ y: Final = False
3208
+
3209
+ def f(a: bool) -> bool:
3210
+ if a:
3211
+ return x
3212
+ else:
3213
+ return y
3214
+ [out]
3215
+ def f(a):
3216
+ a :: bool
3217
+ L0:
3218
+ if a goto L1 else goto L2 :: bool
3219
+ L1:
3220
+ return 1
3221
+ L2:
3222
+ return 0
3223
+ L3:
3224
+ unreachable
3225
+
3226
+ [case testFinalClass]
3227
+ from typing import Final
3228
+
3229
+ class C:
3230
+ x: Final = 1
3231
+ y: Final = 2
3232
+
3233
+ def f(a: bool) -> int:
3234
+ if a:
3235
+ return C.x
3236
+ else:
3237
+ return C.y
3238
+ [out]
3239
+ def C.__mypyc_defaults_setup(__mypyc_self__):
3240
+ __mypyc_self__ :: __main__.C
3241
+ L0:
3242
+ __mypyc_self__.x = 2
3243
+ __mypyc_self__.y = 4
3244
+ return 1
3245
+ def f(a):
3246
+ a :: bool
3247
+ L0:
3248
+ if a goto L1 else goto L2 :: bool
3249
+ L1:
3250
+ return 2
3251
+ L2:
3252
+ return 4
3253
+ L3:
3254
+ unreachable
3255
+
3256
+ [case testFinalStaticList]
3257
+ from typing import Final
3258
+
3259
+ x: Final = [1]
3260
+
3261
+ def f() -> int:
3262
+ return x[0]
3263
+ [out]
3264
+ def f():
3265
+ r0 :: list
3266
+ r1 :: bool
3267
+ r2 :: object
3268
+ r3 :: int
3269
+ L0:
3270
+ r0 = __main__.x :: static
3271
+ if is_error(r0) goto L1 else goto L2
3272
+ L1:
3273
+ r1 = raise NameError('value for final name "x" was not set')
3274
+ unreachable
3275
+ L2:
3276
+ r2 = CPyList_GetItemShort(r0, 0)
3277
+ r3 = unbox(int, r2)
3278
+ return r3
3279
+
3280
+ [case testFinalStaticTuple]
3281
+ from typing import Final
3282
+
3283
+ x: Final = (1, 2)
3284
+
3285
+ def f() -> int:
3286
+ return x[0]
3287
+ [out]
3288
+ def f():
3289
+ r0 :: tuple[int, int]
3290
+ r1 :: bool
3291
+ r2 :: int
3292
+ L0:
3293
+ r0 = __main__.x :: static
3294
+ if is_error(r0) goto L1 else goto L2
3295
+ L1:
3296
+ r1 = raise NameError('value for final name "x" was not set')
3297
+ unreachable
3298
+ L2:
3299
+ r2 = r0[0]
3300
+ return r2
3301
+
3302
+ [case testFinalStaticInt]
3303
+ from typing import Final
3304
+
3305
+ x: Final = 1 + int()
3306
+
3307
+ def f() -> int:
3308
+ return x - 1
3309
+ [out]
3310
+ def f():
3311
+ r0 :: int
3312
+ r1 :: bool
3313
+ r2 :: int
3314
+ L0:
3315
+ r0 = __main__.x :: static
3316
+ if is_error(r0) goto L1 else goto L2
3317
+ L1:
3318
+ r1 = raise NameError('value for final name "x" was not set')
3319
+ unreachable
3320
+ L2:
3321
+ r2 = CPyTagged_Subtract(r0, 2)
3322
+ return r2
3323
+
3324
+ [case testFinalRestrictedTypeVar]
3325
+ from typing import TypeVar
3326
+ if False:
3327
+ from typing import Final
3328
+
3329
+ FOO = 10 # type: Final
3330
+
3331
+ Targ = TypeVar('Targ', int, str)
3332
+ def foo(z: Targ) -> None:
3333
+ FOO
3334
+ [out]
3335
+ def foo(z):
3336
+ z :: object
3337
+ L0:
3338
+ return 1
3339
+
3340
+ [case testDirectlyCall__bool__]
3341
+ class A:
3342
+ def __bool__(self) -> bool:
3343
+ return True
3344
+ class B(A):
3345
+ def __bool__(self) -> bool:
3346
+ return False
3347
+
3348
+ def lol(x: A) -> int:
3349
+ if x:
3350
+ return 1
3351
+ else:
3352
+ return 0
3353
+
3354
+ [out]
3355
+ def A.__bool__(self):
3356
+ self :: __main__.A
3357
+ L0:
3358
+ return 1
3359
+ def B.__bool__(self):
3360
+ self :: __main__.B
3361
+ L0:
3362
+ return 0
3363
+ def lol(x):
3364
+ x :: __main__.A
3365
+ r0 :: bool
3366
+ L0:
3367
+ r0 = x.__bool__()
3368
+ if r0 goto L1 else goto L2 :: bool
3369
+ L1:
3370
+ return 2
3371
+ L2:
3372
+ return 0
3373
+ L3:
3374
+ unreachable
3375
+
3376
+ [case testRevealType]
3377
+ def f(x: int) -> None:
3378
+ reveal_type(x) # type: ignore
3379
+ [out]
3380
+ def f(x):
3381
+ x :: int
3382
+ r0 :: object
3383
+ r1 :: str
3384
+ r2, r3, r4 :: object
3385
+ L0:
3386
+ r0 = builtins :: module
3387
+ r1 = 'reveal_type'
3388
+ r2 = CPyObject_GetAttr(r0, r1)
3389
+ r3 = box(int, x)
3390
+ r4 = PyObject_CallFunctionObjArgs(r2, r3, 0)
3391
+ return 1
3392
+
3393
+ [case testCallCWithStrJoinMethod]
3394
+ from typing import List
3395
+ def f(x: str, y: List[str]) -> str:
3396
+ return x.join(y)
3397
+ [out]
3398
+ def f(x, y):
3399
+ x :: str
3400
+ y :: list
3401
+ r0 :: str
3402
+ L0:
3403
+ r0 = PyUnicode_Join(x, y)
3404
+ return r0
3405
+
3406
+ [case testCallCWithToListFunction]
3407
+ from typing import List, Iterable, Tuple, Dict
3408
+ # generic object
3409
+ def f(x: Iterable[int]) -> List[int]:
3410
+ return list(x)
3411
+
3412
+ # need coercing
3413
+ def g(x: Tuple[int, int, int]) -> List[int]:
3414
+ return list(x)
3415
+
3416
+ # non-list object
3417
+ def h(x: Dict[int, str]) -> List[int]:
3418
+ return list(x)
3419
+
3420
+ [out]
3421
+ def f(x):
3422
+ x :: object
3423
+ r0 :: list
3424
+ L0:
3425
+ r0 = PySequence_List(x)
3426
+ return r0
3427
+ def g(x):
3428
+ x :: tuple[int, int, int]
3429
+ r0 :: object
3430
+ r1 :: list
3431
+ L0:
3432
+ r0 = box(tuple[int, int, int], x)
3433
+ r1 = PySequence_List(r0)
3434
+ return r1
3435
+ def h(x):
3436
+ x :: dict
3437
+ r0 :: list
3438
+ L0:
3439
+ r0 = PySequence_List(x)
3440
+ return r0
3441
+
3442
+ [case testBoolFunction]
3443
+ def f(x: object) -> bool:
3444
+ return bool(x)
3445
+ [out]
3446
+ def f(x):
3447
+ x :: object
3448
+ r0 :: i32
3449
+ r1 :: bit
3450
+ r2 :: bool
3451
+ L0:
3452
+ r0 = PyObject_IsTrue(x)
3453
+ r1 = r0 >= 0 :: signed
3454
+ r2 = truncate r0: i32 to builtins.bool
3455
+ return r2
3456
+
3457
+ [case testLocalImports]
3458
+ def root() -> None:
3459
+ import dataclasses
3460
+ import enum
3461
+
3462
+ def submodule() -> int:
3463
+ import p.m
3464
+ return p.x
3465
+ [file p/__init__.py]
3466
+ x = 1
3467
+ [file p/m.py]
3468
+ [out]
3469
+ def root():
3470
+ r0 :: dict
3471
+ r1, r2 :: object
3472
+ r3 :: bit
3473
+ r4 :: str
3474
+ r5 :: object
3475
+ r6 :: str
3476
+ r7 :: dict
3477
+ r8 :: str
3478
+ r9 :: object
3479
+ r10 :: i32
3480
+ r11 :: bit
3481
+ r12 :: dict
3482
+ r13, r14 :: object
3483
+ r15 :: bit
3484
+ r16 :: str
3485
+ r17 :: object
3486
+ r18 :: str
3487
+ r19 :: dict
3488
+ r20 :: str
3489
+ r21 :: object
3490
+ r22 :: i32
3491
+ r23 :: bit
3492
+ L0:
3493
+ r0 = __main__.globals :: static
3494
+ r1 = dataclasses :: module
3495
+ r2 = load_address _Py_NoneStruct
3496
+ r3 = r1 != r2
3497
+ if r3 goto L2 else goto L1 :: bool
3498
+ L1:
3499
+ r4 = 'dataclasses'
3500
+ r5 = PyImport_Import(r4)
3501
+ dataclasses = r5 :: module
3502
+ L2:
3503
+ r6 = 'dataclasses'
3504
+ r7 = PyImport_GetModuleDict()
3505
+ r8 = 'dataclasses'
3506
+ r9 = CPyDict_GetItem(r7, r8)
3507
+ r10 = CPyDict_SetItem(r0, r6, r9)
3508
+ r11 = r10 >= 0 :: signed
3509
+ r12 = __main__.globals :: static
3510
+ r13 = enum :: module
3511
+ r14 = load_address _Py_NoneStruct
3512
+ r15 = r13 != r14
3513
+ if r15 goto L4 else goto L3 :: bool
3514
+ L3:
3515
+ r16 = 'enum'
3516
+ r17 = PyImport_Import(r16)
3517
+ enum = r17 :: module
3518
+ L4:
3519
+ r18 = 'enum'
3520
+ r19 = PyImport_GetModuleDict()
3521
+ r20 = 'enum'
3522
+ r21 = CPyDict_GetItem(r19, r20)
3523
+ r22 = CPyDict_SetItem(r12, r18, r21)
3524
+ r23 = r22 >= 0 :: signed
3525
+ return 1
3526
+ def submodule():
3527
+ r0 :: dict
3528
+ r1, r2 :: object
3529
+ r3 :: bit
3530
+ r4 :: str
3531
+ r5 :: object
3532
+ r6 :: str
3533
+ r7 :: dict
3534
+ r8 :: str
3535
+ r9 :: object
3536
+ r10 :: i32
3537
+ r11 :: bit
3538
+ r12 :: dict
3539
+ r13 :: str
3540
+ r14 :: object
3541
+ r15 :: str
3542
+ r16 :: object
3543
+ r17 :: int
3544
+ L0:
3545
+ r0 = __main__.globals :: static
3546
+ r1 = p.m :: module
3547
+ r2 = load_address _Py_NoneStruct
3548
+ r3 = r1 != r2
3549
+ if r3 goto L2 else goto L1 :: bool
3550
+ L1:
3551
+ r4 = 'p.m'
3552
+ r5 = PyImport_Import(r4)
3553
+ p.m = r5 :: module
3554
+ L2:
3555
+ r6 = 'p'
3556
+ r7 = PyImport_GetModuleDict()
3557
+ r8 = 'p'
3558
+ r9 = CPyDict_GetItem(r7, r8)
3559
+ r10 = CPyDict_SetItem(r0, r6, r9)
3560
+ r11 = r10 >= 0 :: signed
3561
+ r12 = PyImport_GetModuleDict()
3562
+ r13 = 'p'
3563
+ r14 = CPyDict_GetItem(r12, r13)
3564
+ r15 = 'x'
3565
+ r16 = CPyObject_GetAttr(r14, r15)
3566
+ r17 = unbox(int, r16)
3567
+ return r17
3568
+
3569
+ [case testIsinstanceBool]
3570
+ def f(x: object) -> bool:
3571
+ return isinstance(x, bool)
3572
+ [out]
3573
+ def f(x):
3574
+ x, r0 :: object
3575
+ r1 :: i32
3576
+ r2 :: bit
3577
+ r3 :: bool
3578
+ L0:
3579
+ r0 = load_address PyBool_Type
3580
+ r1 = PyObject_IsInstance(x, r0)
3581
+ r2 = r1 >= 0 :: signed
3582
+ r3 = truncate r1: i32 to builtins.bool
3583
+ return r3
3584
+
3585
+ [case testRangeObject]
3586
+ def range_object() -> None:
3587
+ r = range(4, 12, 2)
3588
+ sum = 0
3589
+ for i in r:
3590
+ sum += i
3591
+
3592
+ def range_in_loop() -> None:
3593
+ sum = 0
3594
+ for i in range(4, 12, 2):
3595
+ sum += i
3596
+ [out]
3597
+ def range_object():
3598
+ r0, r1, r2, r3, r4 :: object
3599
+ r5, r :: range
3600
+ sum :: int
3601
+ r6, r7 :: object
3602
+ r8, i, r9 :: int
3603
+ r10 :: bit
3604
+ L0:
3605
+ r0 = load_address PyRange_Type
3606
+ r1 = object 4
3607
+ r2 = object 12
3608
+ r3 = object 2
3609
+ r4 = PyObject_CallFunctionObjArgs(r0, r1, r2, r3, 0)
3610
+ r5 = cast(range, r4)
3611
+ r = r5
3612
+ sum = 0
3613
+ r6 = PyObject_GetIter(r)
3614
+ L1:
3615
+ r7 = PyIter_Next(r6)
3616
+ if is_error(r7) goto L4 else goto L2
3617
+ L2:
3618
+ r8 = unbox(int, r7)
3619
+ i = r8
3620
+ r9 = CPyTagged_Add(sum, i)
3621
+ sum = r9
3622
+ L3:
3623
+ goto L1
3624
+ L4:
3625
+ r10 = CPy_NoErrOccured()
3626
+ L5:
3627
+ return 1
3628
+ def range_in_loop():
3629
+ sum :: int
3630
+ r0 :: short_int
3631
+ i :: int
3632
+ r1 :: bit
3633
+ r2 :: int
3634
+ r3 :: short_int
3635
+ L0:
3636
+ sum = 0
3637
+ r0 = 8
3638
+ i = r0
3639
+ L1:
3640
+ r1 = r0 < 24 :: signed
3641
+ if r1 goto L2 else goto L4 :: bool
3642
+ L2:
3643
+ r2 = CPyTagged_Add(sum, i)
3644
+ sum = r2
3645
+ L3:
3646
+ r3 = r0 + 4
3647
+ r0 = r3
3648
+ i = r3
3649
+ goto L1
3650
+ L4:
3651
+ return 1
3652
+
3653
+ [case testLocalRedefinition]
3654
+ # mypy: allow-redefinition
3655
+ def f() -> None:
3656
+ i = 0
3657
+ i += 1
3658
+ i = "foo"
3659
+ i += i
3660
+ i = 0.0
3661
+ [out]
3662
+ def f():
3663
+ i, r0 :: int
3664
+ r1, i__redef__, r2 :: str
3665
+ i__redef____redef__ :: float
3666
+ L0:
3667
+ i = 0
3668
+ r0 = CPyTagged_Add(i, 2)
3669
+ i = r0
3670
+ r1 = 'foo'
3671
+ i__redef__ = r1
3672
+ r2 = CPyStr_Append(i__redef__, i__redef__)
3673
+ i__redef__ = r2
3674
+ i__redef____redef__ = 0.0
3675
+ return 1
3676
+
3677
+ [case testNewType]
3678
+ from typing import NewType
3679
+
3680
+ class A: pass
3681
+
3682
+ N = NewType("N", A)
3683
+
3684
+ def f(arg: A) -> N:
3685
+ return N(arg)
3686
+ [out]
3687
+ def f(arg):
3688
+ arg :: __main__.A
3689
+ L0:
3690
+ return arg