jaclang 0.6.1__py3-none-any.whl → 0.7.0__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.

Potentially problematic release.


This version of jaclang might be problematic. Click here for more details.

Files changed (1337) hide show
  1. jaclang/__init__.py +1 -9
  2. jaclang/cli/.gitignore +3 -0
  3. jaclang/cli/cli.md +190 -0
  4. jaclang/cli/cli.py +25 -4
  5. jaclang/compiler/.gitignore +1 -0
  6. jaclang/compiler/__init__.py +1 -0
  7. jaclang/compiler/absyntree.py +9 -7
  8. jaclang/compiler/compile.py +4 -4
  9. jaclang/compiler/jac.lark +1 -0
  10. jaclang/compiler/parser.py +28 -6
  11. jaclang/compiler/passes/main/def_impl_match_pass.py +4 -0
  12. jaclang/compiler/passes/main/fuse_typeinfo_pass.py +10 -1
  13. jaclang/compiler/passes/main/import_pass.py +47 -33
  14. jaclang/compiler/passes/main/pyast_load_pass.py +33 -6
  15. jaclang/compiler/passes/main/tests/fixtures/autoimpl.impl/getme.impl.jac +3 -0
  16. jaclang/compiler/passes/main/tests/fixtures/autoimpl.impl.jac +3 -0
  17. jaclang/compiler/passes/main/tests/fixtures/autoimpl.jac +9 -0
  18. jaclang/compiler/passes/main/tests/fixtures/autoimpl.something.else.impl.jac +3 -0
  19. jaclang/compiler/passes/main/tests/fixtures/base.jac +13 -0
  20. jaclang/compiler/passes/main/tests/fixtures/base2.jac +14 -0
  21. jaclang/compiler/passes/main/tests/fixtures/blip.jac +2 -0
  22. jaclang/compiler/passes/main/tests/fixtures/codegentext.jac +31 -0
  23. jaclang/compiler/passes/main/tests/fixtures/decls.jac +10 -0
  24. jaclang/compiler/passes/main/tests/fixtures/defs_and_uses.jac +44 -0
  25. jaclang/compiler/passes/main/tests/fixtures/fstrings.jac +4 -0
  26. jaclang/compiler/passes/main/tests/fixtures/func.jac +18 -0
  27. jaclang/compiler/passes/main/tests/fixtures/func2.jac +8 -0
  28. jaclang/compiler/passes/main/tests/fixtures/game1.jac +15 -0
  29. jaclang/compiler/passes/main/tests/fixtures/impl/defs1.jac +8 -0
  30. jaclang/compiler/passes/main/tests/fixtures/impl/defs2.jac +8 -0
  31. jaclang/compiler/passes/main/tests/fixtures/impl/imps.jac +11 -0
  32. jaclang/compiler/passes/main/tests/fixtures/multi_def_err.jac +7 -0
  33. jaclang/compiler/passes/main/tests/fixtures/registry.jac +36 -0
  34. jaclang/compiler/passes/main/tests/fixtures/type_info.jac +31 -0
  35. jaclang/compiler/passes/main/tests/test_type_check_pass.py +15 -0
  36. jaclang/compiler/passes/tool/jac_formatter_pass.py +2 -2
  37. jaclang/compiler/passes/tool/tests/fixtures/corelib.jac +480 -0
  38. jaclang/compiler/passes/tool/tests/fixtures/corelib_fmt.jac +480 -0
  39. jaclang/compiler/passes/tool/tests/fixtures/genai/essay_review.jac +36 -0
  40. jaclang/compiler/passes/tool/tests/fixtures/genai/expert_answer.jac +17 -0
  41. jaclang/compiler/passes/tool/tests/fixtures/genai/joke_gen.jac +32 -0
  42. jaclang/compiler/passes/tool/tests/fixtures/genai/odd_word_out.jac +27 -0
  43. jaclang/compiler/passes/tool/tests/fixtures/genai/personality_finder.jac +35 -0
  44. jaclang/compiler/passes/tool/tests/fixtures/genai/text_to_type.jac +25 -0
  45. jaclang/compiler/passes/tool/tests/fixtures/genai/translator.jac +13 -0
  46. jaclang/compiler/passes/tool/tests/fixtures/genai/wikipedia.jac +63 -0
  47. jaclang/compiler/passes/tool/tests/fixtures/multi_def_err.dot +39 -0
  48. jaclang/compiler/passes/tool/tests/fixtures/multi_def_err.jac +7 -0
  49. jaclang/compiler/passes/tool/tests/fixtures/multi_def_err.txt +20 -0
  50. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/ability_impl_long_comprehension.jac +15 -0
  51. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/call_with_many_parameters.jac +24 -0
  52. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/entry_main.jac +4 -0
  53. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/long_line_nested_dict_access.jac +10 -0
  54. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/multiline_fstrings.jac +16 -0
  55. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/nested_dict.jac +15 -0
  56. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/nested_loop_and_incrementer.jac +13 -0
  57. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/simple_walker.jac +25 -0
  58. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/try_block_and_walker_spawn_and_fstrings.jac +26 -0
  59. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/tuple_iteration_and_not_negation.jac +20 -0
  60. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/type_annotation.jac +3 -0
  61. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/walker_decl_only.jac +12 -0
  62. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/walker_with_default_values_types_and_docstrings.jac +18 -0
  63. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/walker_with_inline_ability_impl.jac +8 -0
  64. jaclang/compiler/passes/tool/tests/fixtures/simple_walk.jac +47 -0
  65. jaclang/compiler/passes/tool/tests/fixtures/simple_walk_fmt.jac +47 -0
  66. jaclang/compiler/passes/transform.py +13 -4
  67. jaclang/compiler/passes/utils/mypy_ast_build.py +8 -0
  68. jaclang/compiler/tests/fixtures/fam.jac +67 -0
  69. jaclang/compiler/tests/fixtures/hello_world.jac +5 -0
  70. jaclang/compiler/tests/fixtures/kwesc.jac +5 -0
  71. jaclang/compiler/tests/fixtures/mod_doc_test.jac +3 -0
  72. jaclang/compiler/tests/fixtures/staticcheck.jac +20 -0
  73. jaclang/compiler/tests/fixtures/stuff.jac +6 -0
  74. jaclang/langserve/__init__.py +1 -0
  75. jaclang/langserve/engine.py +287 -0
  76. jaclang/langserve/server.py +139 -0
  77. jaclang/langserve/tests/__init__.py +1 -0
  78. jaclang/langserve/tests/defaults.py +226 -0
  79. jaclang/langserve/tests/fixtures/hello.jac +1 -0
  80. jaclang/langserve/tests/pylsp_jsonrpc/__init__.py +2 -0
  81. jaclang/langserve/tests/pylsp_jsonrpc/dispatchers.py +37 -0
  82. jaclang/langserve/tests/pylsp_jsonrpc/endpoint.py +294 -0
  83. jaclang/langserve/tests/pylsp_jsonrpc/exceptions.py +114 -0
  84. jaclang/langserve/tests/pylsp_jsonrpc/streams.py +113 -0
  85. jaclang/langserve/tests/session.py +255 -0
  86. jaclang/langserve/tests/test_server.py +36 -0
  87. jaclang/langserve/utils.py +55 -0
  88. jaclang/plugin/default.py +1 -1
  89. jaclang/plugin/tests/fixtures/impl_match.jac +9 -0
  90. jaclang/plugin/tests/fixtures/impl_match_impl.jac +3 -0
  91. jaclang/plugin/tests/fixtures/simple_node_connection.jac +55 -0
  92. jaclang/plugin/tests/fixtures/simple_persistent.jac +41 -0
  93. jaclang/settings.py +5 -0
  94. jaclang/tests/fixtures/abc.jac +73 -0
  95. jaclang/tests/fixtures/access_checker.jac +19 -0
  96. jaclang/tests/fixtures/access_modifier.jac +49 -0
  97. jaclang/tests/fixtures/aott_raise.jac +25 -0
  98. jaclang/tests/fixtures/arithmetic_bug.jac +13 -0
  99. jaclang/tests/fixtures/assign_compr.jac +15 -0
  100. jaclang/tests/fixtures/assign_compr_dup.jac +15 -0
  101. jaclang/tests/fixtures/builtin_dotgen.jac +41 -0
  102. jaclang/tests/fixtures/chandra_bugs.jac +11 -0
  103. jaclang/tests/fixtures/chandra_bugs2.jac +26 -0
  104. jaclang/tests/fixtures/circle_pysolo.py +91 -0
  105. jaclang/tests/fixtures/deep/deeper/deep_outer_import.jac +9 -0
  106. jaclang/tests/fixtures/deep/deeper/deep_outer_import2.jac +9 -0
  107. jaclang/tests/fixtures/deep/deeper/snd_lev.jac +6 -0
  108. jaclang/tests/fixtures/deep/mycode.jac +4 -0
  109. jaclang/tests/fixtures/deep/one_lev.jac +6 -0
  110. jaclang/tests/fixtures/deep/one_lev_dup.jac +6 -0
  111. jaclang/tests/fixtures/deep/one_lev_dup_py.py +6 -0
  112. jaclang/tests/fixtures/deep_convert.jac +5 -0
  113. jaclang/tests/fixtures/deep_convo.py +6 -0
  114. jaclang/tests/fixtures/deep_import.jac +7 -0
  115. jaclang/tests/fixtures/deferred_field.jac +13 -0
  116. jaclang/tests/fixtures/disconn.jac +29 -0
  117. jaclang/tests/fixtures/edge_node_walk.jac +46 -0
  118. jaclang/tests/fixtures/edge_ops.jac +45 -0
  119. jaclang/tests/fixtures/edges_walk.jac +38 -0
  120. jaclang/tests/fixtures/enum_inside_archtype.jac +20 -0
  121. jaclang/tests/fixtures/err.jac +5 -0
  122. jaclang/tests/fixtures/err2.jac +5 -0
  123. jaclang/tests/fixtures/game1.jac +15 -0
  124. jaclang/tests/fixtures/gendot_bubble_sort.jac +77 -0
  125. jaclang/tests/fixtures/guess_game.jac +47 -0
  126. jaclang/tests/fixtures/has_goodness.jac +15 -0
  127. jaclang/tests/fixtures/hashcheck.jac +12 -0
  128. jaclang/tests/fixtures/hashcheck_dup.jac +12 -0
  129. jaclang/tests/fixtures/hello.jac +5 -0
  130. jaclang/tests/fixtures/hello_nc.jac +5 -0
  131. jaclang/tests/fixtures/ignore.jac +43 -0
  132. jaclang/tests/fixtures/ignore_dup.jac +43 -0
  133. jaclang/tests/fixtures/impl_grab.impl.jac +4 -0
  134. jaclang/tests/fixtures/impl_grab.jac +2 -0
  135. jaclang/tests/fixtures/inherit_check.jac +33 -0
  136. jaclang/tests/fixtures/jacsamp.jac +6 -0
  137. jaclang/tests/fixtures/jp_importer.jac +17 -0
  138. jaclang/tests/fixtures/lambda.jac +6 -0
  139. jaclang/tests/fixtures/maxfail_run_test.jac +5 -0
  140. jaclang/tests/fixtures/mtest.impl.jac +6 -0
  141. jaclang/tests/fixtures/mtest.jac +6 -0
  142. jaclang/tests/fixtures/needs_import.jac +18 -0
  143. jaclang/tests/fixtures/needs_import_1.jac +6 -0
  144. jaclang/tests/fixtures/needs_import_2.jac +6 -0
  145. jaclang/tests/fixtures/needs_import_3.jac +6 -0
  146. jaclang/tests/fixtures/needs_import_dup.jac +18 -0
  147. jaclang/tests/fixtures/package_import.jac +6 -0
  148. jaclang/tests/fixtures/pyfunc.py +11 -0
  149. jaclang/tests/fixtures/pyfunc_1.py +311 -0
  150. jaclang/tests/fixtures/pyfunc_2.py +279 -0
  151. jaclang/tests/fixtures/pyfunc_3.py +310 -0
  152. jaclang/tests/fixtures/random_check.jac +62 -0
  153. jaclang/tests/fixtures/raw_byte_string.jac +18 -0
  154. jaclang/tests/fixtures/registry.jac +37 -0
  155. jaclang/tests/fixtures/run_test.jac +5 -0
  156. jaclang/tests/fixtures/semstr.jac +33 -0
  157. jaclang/tests/fixtures/simple_archs.jac +26 -0
  158. jaclang/tests/fixtures/slice_vals.jac +7 -0
  159. jaclang/tests/fixtures/sub_abil_sep.jac +15 -0
  160. jaclang/tests/fixtures/sub_abil_sep_multilev.jac +17 -0
  161. jaclang/tests/fixtures/try_finally.jac +34 -0
  162. jaclang/tests/fixtures/tupleunpack.jac +6 -0
  163. jaclang/tests/fixtures/tuplytuples.jac +8 -0
  164. jaclang/tests/fixtures/type_info.jac +15 -0
  165. jaclang/tests/fixtures/with_context.jac +30 -0
  166. jaclang/tests/fixtures/with_llm_function.jac +33 -0
  167. jaclang/tests/fixtures/with_llm_lower.jac +45 -0
  168. jaclang/tests/fixtures/with_llm_method.jac +51 -0
  169. jaclang/tests/fixtures/with_llm_type.jac +52 -0
  170. jaclang/tests/test_cli.py +239 -0
  171. jaclang/tests/test_language.py +831 -0
  172. jaclang/tests/test_man_code.py +148 -0
  173. jaclang/tests/test_reference.py +95 -0
  174. jaclang/tests/test_settings.py +46 -0
  175. jaclang/utils/helpers.py +11 -0
  176. jaclang/utils/tests/test_lang_tools.py +17 -0
  177. jaclang/utils/treeprinter.py +12 -4
  178. jaclang/vendor/__init__.py +12 -1
  179. jaclang/vendor/attr/__init__.py +134 -0
  180. jaclang/vendor/attr/__init__.pyi +555 -0
  181. jaclang/vendor/attr/_cmp.py +150 -0
  182. jaclang/vendor/attr/_cmp.pyi +13 -0
  183. jaclang/vendor/attr/_compat.py +87 -0
  184. jaclang/vendor/attr/_config.py +31 -0
  185. jaclang/vendor/attr/_funcs.py +483 -0
  186. jaclang/vendor/attr/_make.py +3119 -0
  187. jaclang/vendor/attr/_next_gen.py +229 -0
  188. jaclang/vendor/attr/_typing_compat.pyi +15 -0
  189. jaclang/vendor/attr/_version_info.py +86 -0
  190. jaclang/vendor/attr/_version_info.pyi +9 -0
  191. jaclang/vendor/attr/converters.py +144 -0
  192. jaclang/vendor/attr/converters.pyi +13 -0
  193. jaclang/vendor/attr/exceptions.py +95 -0
  194. jaclang/vendor/attr/exceptions.pyi +17 -0
  195. jaclang/vendor/attr/filters.py +66 -0
  196. jaclang/vendor/attr/filters.pyi +6 -0
  197. jaclang/vendor/attr/setters.py +73 -0
  198. jaclang/vendor/attr/setters.pyi +19 -0
  199. jaclang/vendor/attr/validators.py +681 -0
  200. jaclang/vendor/attr/validators.pyi +88 -0
  201. jaclang/vendor/attrs/__init__.py +65 -0
  202. jaclang/vendor/attrs/__init__.pyi +67 -0
  203. jaclang/vendor/attrs/converters.py +3 -0
  204. jaclang/vendor/attrs/exceptions.py +3 -0
  205. jaclang/vendor/attrs/filters.py +3 -0
  206. jaclang/vendor/attrs/py.typed +0 -0
  207. jaclang/vendor/attrs/setters.py +3 -0
  208. jaclang/vendor/attrs/validators.py +3 -0
  209. jaclang/vendor/attrs-23.2.0.dist-info/METADATA +202 -0
  210. jaclang/vendor/attrs-23.2.0.dist-info/RECORD +35 -0
  211. jaclang/vendor/attrs-23.2.0.dist-info/WHEEL +4 -0
  212. jaclang/vendor/attrs-23.2.0.dist-info/licenses/LICENSE +21 -0
  213. jaclang/vendor/cattr/__init__.py +25 -0
  214. jaclang/vendor/cattr/converters.py +8 -0
  215. jaclang/vendor/cattr/disambiguators.py +3 -0
  216. jaclang/vendor/cattr/dispatch.py +3 -0
  217. jaclang/vendor/cattr/errors.py +15 -0
  218. jaclang/vendor/cattr/gen.py +21 -0
  219. jaclang/vendor/cattr/preconf/__init__.py +3 -0
  220. jaclang/vendor/cattr/preconf/bson.py +4 -0
  221. jaclang/vendor/cattr/preconf/json.py +4 -0
  222. jaclang/vendor/cattr/preconf/msgpack.py +4 -0
  223. jaclang/vendor/cattr/preconf/orjson.py +4 -0
  224. jaclang/vendor/cattr/preconf/pyyaml.py +4 -0
  225. jaclang/vendor/cattr/preconf/tomlkit.py +4 -0
  226. jaclang/vendor/cattr/preconf/ujson.py +4 -0
  227. jaclang/vendor/cattr/py.typed +0 -0
  228. jaclang/vendor/cattrs/__init__.py +55 -0
  229. jaclang/vendor/cattrs/_compat.py +465 -0
  230. jaclang/vendor/cattrs/_generics.py +22 -0
  231. jaclang/vendor/cattrs/converters.py +1101 -0
  232. jaclang/vendor/cattrs/disambiguators.py +132 -0
  233. jaclang/vendor/cattrs/dispatch.py +164 -0
  234. jaclang/vendor/cattrs/errors.py +129 -0
  235. jaclang/vendor/cattrs/fns.py +17 -0
  236. jaclang/vendor/cattrs/gen/__init__.py +890 -0
  237. jaclang/vendor/cattrs/gen/_consts.py +19 -0
  238. jaclang/vendor/cattrs/gen/_generics.py +43 -0
  239. jaclang/vendor/cattrs/gen/_lc.py +28 -0
  240. jaclang/vendor/cattrs/gen/_shared.py +51 -0
  241. jaclang/vendor/cattrs/gen/typeddicts.py +624 -0
  242. jaclang/vendor/cattrs/preconf/__init__.py +7 -0
  243. jaclang/vendor/cattrs/preconf/bson.py +107 -0
  244. jaclang/vendor/cattrs/preconf/cbor2.py +47 -0
  245. jaclang/vendor/cattrs/preconf/json.py +52 -0
  246. jaclang/vendor/cattrs/preconf/msgpack.py +51 -0
  247. jaclang/vendor/cattrs/preconf/orjson.py +82 -0
  248. jaclang/vendor/cattrs/preconf/pyyaml.py +60 -0
  249. jaclang/vendor/cattrs/preconf/tomlkit.py +85 -0
  250. jaclang/vendor/cattrs/preconf/ujson.py +52 -0
  251. jaclang/vendor/cattrs/py.typed +0 -0
  252. jaclang/vendor/cattrs/strategies/__init__.py +11 -0
  253. jaclang/vendor/cattrs/strategies/_class_methods.py +64 -0
  254. jaclang/vendor/cattrs/strategies/_subclasses.py +224 -0
  255. jaclang/vendor/cattrs/strategies/_unions.py +235 -0
  256. jaclang/vendor/cattrs/v.py +111 -0
  257. jaclang/vendor/cattrs-23.2.3.dist-info/METADATA +221 -0
  258. jaclang/vendor/cattrs-23.2.3.dist-info/RECORD +48 -0
  259. jaclang/vendor/cattrs-23.2.3.dist-info/WHEEL +4 -0
  260. jaclang/vendor/cattrs-23.2.3.dist-info/licenses/LICENSE +11 -0
  261. jaclang/vendor/lark/__init__.py +38 -38
  262. jaclang/vendor/lark/__pyinstaller/__init__.py +6 -7
  263. jaclang/vendor/lark/__pyinstaller/hook-lark.py +14 -14
  264. jaclang/vendor/lark/ast_utils.py +59 -70
  265. jaclang/vendor/lark/common.py +89 -113
  266. jaclang/vendor/lark/exceptions.py +292 -352
  267. jaclang/vendor/lark/grammar.py +130 -158
  268. jaclang/vendor/lark/grammars/common.lark +59 -59
  269. jaclang/vendor/lark/grammars/lark.lark +62 -62
  270. jaclang/vendor/lark/grammars/python.lark +302 -302
  271. jaclang/vendor/lark/grammars/unicode.lark +7 -7
  272. jaclang/vendor/lark/indenter.py +112 -118
  273. jaclang/vendor/lark/lark.py +661 -800
  274. jaclang/vendor/lark/lexer.py +678 -829
  275. jaclang/vendor/lark/load_grammar.py +1428 -1673
  276. jaclang/vendor/lark/parse_tree_builder.py +391 -466
  277. jaclang/vendor/lark/parser_frontends.py +257 -305
  278. jaclang/vendor/lark/parsers/cyk.py +340 -391
  279. jaclang/vendor/lark/parsers/earley.py +308 -385
  280. jaclang/vendor/lark/parsers/earley_common.py +42 -59
  281. jaclang/vendor/lark/parsers/earley_forest.py +810 -923
  282. jaclang/vendor/lark/parsers/grammar_analysis.py +203 -239
  283. jaclang/vendor/lark/parsers/lalr_analysis.py +332 -378
  284. jaclang/vendor/lark/parsers/lalr_interactive_parser.py +157 -171
  285. jaclang/vendor/lark/parsers/lalr_parser.py +122 -145
  286. jaclang/vendor/lark/parsers/lalr_parser_state.py +110 -141
  287. jaclang/vendor/lark/parsers/xearley.py +165 -209
  288. jaclang/vendor/lark/reconstruct.py +107 -131
  289. jaclang/vendor/lark/tools/__init__.py +71 -93
  290. jaclang/vendor/lark/tools/nearley.py +202 -240
  291. jaclang/vendor/lark/tools/serialize.py +32 -35
  292. jaclang/vendor/lark/tools/standalone.py +196 -225
  293. jaclang/vendor/lark/tree.py +272 -302
  294. jaclang/vendor/lark/tree_matcher.py +186 -194
  295. jaclang/vendor/lark/tree_templates.py +18 -26
  296. jaclang/vendor/lark/utils.py +361 -393
  297. jaclang/vendor/lark/visitors.py +593 -645
  298. jaclang/vendor/lark-1.1.9.dist-info/LICENSE +18 -0
  299. jaclang/vendor/lark-1.1.9.dist-info/METADATA +47 -0
  300. jaclang/vendor/lark-1.1.9.dist-info/RECORD +46 -0
  301. jaclang/vendor/lark-1.1.9.dist-info/WHEEL +5 -0
  302. jaclang/vendor/lark-1.1.9.dist-info/entry_points.txt +2 -0
  303. jaclang/vendor/lark-1.1.9.dist-info/top_level.txt +1 -0
  304. jaclang/vendor/lsprotocol/__init__.py +2 -0
  305. jaclang/vendor/lsprotocol/_hooks.py +1237 -0
  306. jaclang/vendor/lsprotocol/converters.py +17 -0
  307. jaclang/vendor/lsprotocol/py.typed +0 -0
  308. jaclang/vendor/lsprotocol/types.py +12898 -0
  309. jaclang/vendor/lsprotocol/validators.py +47 -0
  310. jaclang/vendor/lsprotocol-2023.0.1.dist-info/LICENSE +21 -0
  311. jaclang/vendor/lsprotocol-2023.0.1.dist-info/METADATA +65 -0
  312. jaclang/vendor/lsprotocol-2023.0.1.dist-info/RECORD +10 -0
  313. jaclang/vendor/lsprotocol-2023.0.1.dist-info/WHEEL +4 -0
  314. jaclang/vendor/mypy/api.py +1 -3
  315. jaclang/vendor/mypy/applytype.py +24 -24
  316. jaclang/vendor/mypy/argmap.py +5 -9
  317. jaclang/vendor/mypy/binder.py +11 -42
  318. jaclang/vendor/mypy/build.py +78 -260
  319. jaclang/vendor/mypy/checker.py +394 -930
  320. jaclang/vendor/mypy/checkexpr.py +210 -640
  321. jaclang/vendor/mypy/checkmember.py +44 -94
  322. jaclang/vendor/mypy/checkpattern.py +32 -104
  323. jaclang/vendor/mypy/checkstrformat.py +38 -131
  324. jaclang/vendor/mypy/config_parser.py +8 -31
  325. jaclang/vendor/mypy/constant_fold.py +1 -3
  326. jaclang/vendor/mypy/constraints.py +94 -253
  327. jaclang/vendor/mypy/copytype.py +3 -13
  328. jaclang/vendor/mypy/defaults.py +2 -4
  329. jaclang/vendor/mypy/dmypy/client.py +30 -102
  330. jaclang/vendor/mypy/dmypy_server.py +31 -118
  331. jaclang/vendor/mypy/erasetype.py +6 -18
  332. jaclang/vendor/mypy/errorcodes.py +26 -64
  333. jaclang/vendor/mypy/errors.py +23 -117
  334. jaclang/vendor/mypy/evalexpr.py +1 -3
  335. jaclang/vendor/mypy/expandtype.py +37 -40
  336. jaclang/vendor/mypy/exprtotype.py +14 -27
  337. jaclang/vendor/mypy/fastparse.py +66 -215
  338. jaclang/vendor/mypy/find_sources.py +4 -14
  339. jaclang/vendor/mypy/fixup.py +5 -10
  340. jaclang/vendor/mypy/indirection.py +1 -3
  341. jaclang/vendor/mypy/infer.py +2 -6
  342. jaclang/vendor/mypy/inspections.py +3 -13
  343. jaclang/vendor/mypy/ipc.py +7 -28
  344. jaclang/vendor/mypy/join.py +20 -39
  345. jaclang/vendor/mypy/literals.py +2 -10
  346. jaclang/vendor/mypy/main.py +39 -138
  347. jaclang/vendor/mypy/maptype.py +2 -6
  348. jaclang/vendor/mypy/meet.py +23 -77
  349. jaclang/vendor/mypy/message_registry.py +33 -88
  350. jaclang/vendor/mypy/messages.py +146 -447
  351. jaclang/vendor/mypy/metastore.py +2 -6
  352. jaclang/vendor/mypy/modulefinder.py +29 -76
  353. jaclang/vendor/mypy/moduleinspect.py +5 -17
  354. jaclang/vendor/mypy/mro.py +1 -3
  355. jaclang/vendor/mypy/nodes.py +35 -119
  356. jaclang/vendor/mypy/operators.py +2 -11
  357. jaclang/vendor/mypy/options.py +3 -9
  358. jaclang/vendor/mypy/parse.py +1 -3
  359. jaclang/vendor/mypy/plugin.py +25 -75
  360. jaclang/vendor/mypy/plugins/attrs.py +53 -119
  361. jaclang/vendor/mypy/plugins/common.py +9 -29
  362. jaclang/vendor/mypy/plugins/ctypes.py +5 -15
  363. jaclang/vendor/mypy/plugins/dataclasses.py +42 -107
  364. jaclang/vendor/mypy/plugins/default.py +26 -45
  365. jaclang/vendor/mypy/plugins/enums.py +4 -17
  366. jaclang/vendor/mypy/plugins/functools.py +2 -11
  367. jaclang/vendor/mypy/plugins/proper_plugin.py +2 -6
  368. jaclang/vendor/mypy/plugins/singledispatch.py +7 -33
  369. jaclang/vendor/mypy/reachability.py +2 -8
  370. jaclang/vendor/mypy/refinfo.py +1 -3
  371. jaclang/vendor/mypy/report.py +23 -52
  372. jaclang/vendor/mypy/semanal.py +385 -693
  373. jaclang/vendor/mypy/semanal_classprop.py +9 -34
  374. jaclang/vendor/mypy/semanal_enum.py +7 -19
  375. jaclang/vendor/mypy/semanal_infer.py +1 -3
  376. jaclang/vendor/mypy/semanal_main.py +5 -25
  377. jaclang/vendor/mypy/semanal_namedtuple.py +17 -56
  378. jaclang/vendor/mypy/semanal_newtype.py +8 -27
  379. jaclang/vendor/mypy/semanal_pass1.py +2 -6
  380. jaclang/vendor/mypy/semanal_shared.py +9 -27
  381. jaclang/vendor/mypy/semanal_typeargs.py +12 -41
  382. jaclang/vendor/mypy/semanal_typeddict.py +18 -59
  383. jaclang/vendor/mypy/server/astdiff.py +9 -34
  384. jaclang/vendor/mypy/server/astmerge.py +2 -6
  385. jaclang/vendor/mypy/server/deps.py +22 -71
  386. jaclang/vendor/mypy/server/mergecheck.py +1 -3
  387. jaclang/vendor/mypy/server/objgraph.py +2 -8
  388. jaclang/vendor/mypy/server/update.py +18 -54
  389. jaclang/vendor/mypy/solve.py +4 -17
  390. jaclang/vendor/mypy/split_namespace.py +1 -3
  391. jaclang/vendor/mypy/stats.py +6 -24
  392. jaclang/vendor/mypy/strconv.py +8 -31
  393. jaclang/vendor/mypy/stubdoc.py +8 -38
  394. jaclang/vendor/mypy/stubgen.py +79 -144
  395. jaclang/vendor/mypy/stubgenc.py +22 -69
  396. jaclang/vendor/mypy/stubtest.py +62 -167
  397. jaclang/vendor/mypy/stubutil.py +45 -61
  398. jaclang/vendor/mypy/subtypes.py +57 -133
  399. jaclang/vendor/mypy/suggestions.py +19 -53
  400. jaclang/vendor/mypy/test/data.py +13 -40
  401. jaclang/vendor/mypy/test/helpers.py +18 -43
  402. jaclang/vendor/mypy/test/meta/_pytest.py +2 -13
  403. jaclang/vendor/mypy/test/meta/test_parse_data.py +5 -9
  404. jaclang/vendor/mypy/test/meta/test_update_data.py +1 -3
  405. jaclang/vendor/mypy/test/test_find_sources.py +14 -32
  406. jaclang/vendor/mypy/test/test_ref_info.py +3 -9
  407. jaclang/vendor/mypy/test/testargs.py +1 -4
  408. jaclang/vendor/mypy/test/testcheck.py +14 -47
  409. jaclang/vendor/mypy/test/testcmdline.py +3 -14
  410. jaclang/vendor/mypy/test/testconstraints.py +8 -26
  411. jaclang/vendor/mypy/test/testdaemon.py +2 -9
  412. jaclang/vendor/mypy/test/testdeps.py +4 -12
  413. jaclang/vendor/mypy/test/testdiff.py +2 -6
  414. jaclang/vendor/mypy/test/testerrorstream.py +1 -3
  415. jaclang/vendor/mypy/test/testfinegrained.py +18 -56
  416. jaclang/vendor/mypy/test/testgraph.py +3 -18
  417. jaclang/vendor/mypy/test/testinfer.py +13 -55
  418. jaclang/vendor/mypy/test/testipc.py +3 -9
  419. jaclang/vendor/mypy/test/testmerge.py +5 -17
  420. jaclang/vendor/mypy/test/testmodulefinder.py +8 -30
  421. jaclang/vendor/mypy/test/testmypyc.py +1 -3
  422. jaclang/vendor/mypy/test/testparse.py +1 -3
  423. jaclang/vendor/mypy/test/testpep561.py +4 -13
  424. jaclang/vendor/mypy/test/testpythoneval.py +2 -6
  425. jaclang/vendor/mypy/test/testreports.py +1 -2
  426. jaclang/vendor/mypy/test/testsemanal.py +3 -10
  427. jaclang/vendor/mypy/test/testsolve.py +5 -15
  428. jaclang/vendor/mypy/test/teststubgen.py +69 -210
  429. jaclang/vendor/mypy/test/teststubtest.py +123 -163
  430. jaclang/vendor/mypy/test/testsubtypes.py +14 -34
  431. jaclang/vendor/mypy/test/testtransform.py +2 -8
  432. jaclang/vendor/mypy/test/testtypegen.py +2 -8
  433. jaclang/vendor/mypy/test/testtypes.py +77 -253
  434. jaclang/vendor/mypy/test/testutil.py +1 -3
  435. jaclang/vendor/mypy/test/typefixture.py +11 -38
  436. jaclang/vendor/mypy/test/update_data.py +4 -15
  437. jaclang/vendor/mypy/test/visitors.py +1 -9
  438. jaclang/vendor/mypy/treetransform.py +8 -25
  439. jaclang/vendor/mypy/tvar_scope.py +23 -3
  440. jaclang/vendor/mypy/type_visitor.py +3 -10
  441. jaclang/vendor/mypy/typeanal.py +183 -309
  442. jaclang/vendor/mypy/typeops.py +27 -73
  443. jaclang/vendor/mypy/types.py +77 -185
  444. jaclang/vendor/mypy/types_utils.py +7 -20
  445. jaclang/vendor/mypy/typeshed/LICENSE +237 -0
  446. jaclang/vendor/mypy/typeshed/stdlib/VERSIONS +309 -0
  447. jaclang/vendor/mypy/typeshed/stdlib/__future__.pyi +36 -0
  448. jaclang/vendor/mypy/typeshed/stdlib/__main__.pyi +3 -0
  449. jaclang/vendor/mypy/typeshed/stdlib/_ast.pyi +591 -0
  450. jaclang/vendor/mypy/typeshed/stdlib/_bisect.pyi +84 -0
  451. jaclang/vendor/mypy/typeshed/stdlib/_bootlocale.pyi +1 -0
  452. jaclang/vendor/mypy/typeshed/stdlib/_codecs.pyi +133 -0
  453. jaclang/vendor/mypy/typeshed/stdlib/_collections_abc.pyi +94 -0
  454. jaclang/vendor/mypy/typeshed/stdlib/_compat_pickle.pyi +8 -0
  455. jaclang/vendor/mypy/typeshed/stdlib/_compression.pyi +25 -0
  456. jaclang/vendor/mypy/typeshed/stdlib/_csv.pyi +90 -0
  457. jaclang/vendor/mypy/typeshed/stdlib/_ctypes.pyi +207 -0
  458. jaclang/vendor/mypy/typeshed/stdlib/_curses.pyi +566 -0
  459. jaclang/vendor/mypy/typeshed/stdlib/_decimal.pyi +281 -0
  460. jaclang/vendor/mypy/typeshed/stdlib/_dummy_thread.pyi +33 -0
  461. jaclang/vendor/mypy/typeshed/stdlib/_dummy_threading.pyi +164 -0
  462. jaclang/vendor/mypy/typeshed/stdlib/_heapq.pyi +11 -0
  463. jaclang/vendor/mypy/typeshed/stdlib/_imp.pyi +28 -0
  464. jaclang/vendor/mypy/typeshed/stdlib/_json.pyi +49 -0
  465. jaclang/vendor/mypy/typeshed/stdlib/_locale.pyi +100 -0
  466. jaclang/vendor/mypy/typeshed/stdlib/_lsprof.pyi +35 -0
  467. jaclang/vendor/mypy/typeshed/stdlib/_markupbase.pyi +16 -0
  468. jaclang/vendor/mypy/typeshed/stdlib/_msi.pyi +92 -0
  469. jaclang/vendor/mypy/typeshed/stdlib/_operator.pyi +147 -0
  470. jaclang/vendor/mypy/typeshed/stdlib/_osx_support.pyi +34 -0
  471. jaclang/vendor/mypy/typeshed/stdlib/_posixsubprocess.pyi +33 -0
  472. jaclang/vendor/mypy/typeshed/stdlib/_py_abc.pyi +14 -0
  473. jaclang/vendor/mypy/typeshed/stdlib/_pydecimal.pyi +43 -0
  474. jaclang/vendor/mypy/typeshed/stdlib/_random.pyi +12 -0
  475. jaclang/vendor/mypy/typeshed/stdlib/_sitebuiltins.pyi +16 -0
  476. jaclang/vendor/mypy/typeshed/stdlib/_socket.pyi +803 -0
  477. jaclang/vendor/mypy/typeshed/stdlib/_stat.pyi +103 -0
  478. jaclang/vendor/mypy/typeshed/stdlib/_thread.pyi +59 -0
  479. jaclang/vendor/mypy/typeshed/stdlib/_threading_local.pyi +17 -0
  480. jaclang/vendor/mypy/typeshed/stdlib/_tkinter.pyi +121 -0
  481. jaclang/vendor/mypy/typeshed/stdlib/_tracemalloc.pyi +17 -0
  482. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/__init__.pyi +347 -0
  483. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/dbapi.pyi +37 -0
  484. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/wsgi.pyi +44 -0
  485. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/xml.pyi +9 -0
  486. jaclang/vendor/mypy/typeshed/stdlib/_warnings.pyi +55 -0
  487. jaclang/vendor/mypy/typeshed/stdlib/_weakref.pyi +41 -0
  488. jaclang/vendor/mypy/typeshed/stdlib/_weakrefset.pyi +51 -0
  489. jaclang/vendor/mypy/typeshed/stdlib/_winapi.pyi +255 -0
  490. jaclang/vendor/mypy/typeshed/stdlib/abc.pyi +51 -0
  491. jaclang/vendor/mypy/typeshed/stdlib/aifc.pyi +91 -0
  492. jaclang/vendor/mypy/typeshed/stdlib/antigravity.pyi +3 -0
  493. jaclang/vendor/mypy/typeshed/stdlib/argparse.pyi +595 -0
  494. jaclang/vendor/mypy/typeshed/stdlib/array.pyi +92 -0
  495. jaclang/vendor/mypy/typeshed/stdlib/ast.pyi +277 -0
  496. jaclang/vendor/mypy/typeshed/stdlib/asynchat.pyi +21 -0
  497. jaclang/vendor/mypy/typeshed/stdlib/asyncio/__init__.pyi +41 -0
  498. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_events.pyi +440 -0
  499. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_futures.pyi +19 -0
  500. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_subprocess.pyi +63 -0
  501. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_tasks.pyi +9 -0
  502. jaclang/vendor/mypy/typeshed/stdlib/asyncio/constants.pyi +20 -0
  503. jaclang/vendor/mypy/typeshed/stdlib/asyncio/coroutines.pyi +26 -0
  504. jaclang/vendor/mypy/typeshed/stdlib/asyncio/events.pyi +580 -0
  505. jaclang/vendor/mypy/typeshed/stdlib/asyncio/exceptions.pyi +43 -0
  506. jaclang/vendor/mypy/typeshed/stdlib/asyncio/format_helpers.pyi +20 -0
  507. jaclang/vendor/mypy/typeshed/stdlib/asyncio/futures.pyi +57 -0
  508. jaclang/vendor/mypy/typeshed/stdlib/asyncio/locks.pyi +121 -0
  509. jaclang/vendor/mypy/typeshed/stdlib/asyncio/log.pyi +3 -0
  510. jaclang/vendor/mypy/typeshed/stdlib/asyncio/mixins.pyi +9 -0
  511. jaclang/vendor/mypy/typeshed/stdlib/asyncio/proactor_events.pyi +64 -0
  512. jaclang/vendor/mypy/typeshed/stdlib/asyncio/protocols.pyi +34 -0
  513. jaclang/vendor/mypy/typeshed/stdlib/asyncio/queues.pyi +47 -0
  514. jaclang/vendor/mypy/typeshed/stdlib/asyncio/runners.pyi +32 -0
  515. jaclang/vendor/mypy/typeshed/stdlib/asyncio/selector_events.pyi +8 -0
  516. jaclang/vendor/mypy/typeshed/stdlib/asyncio/sslproto.pyi +165 -0
  517. jaclang/vendor/mypy/typeshed/stdlib/asyncio/staggered.pyi +10 -0
  518. jaclang/vendor/mypy/typeshed/stdlib/asyncio/streams.pyi +153 -0
  519. jaclang/vendor/mypy/typeshed/stdlib/asyncio/subprocess.pyi +229 -0
  520. jaclang/vendor/mypy/typeshed/stdlib/asyncio/taskgroups.pyi +25 -0
  521. jaclang/vendor/mypy/typeshed/stdlib/asyncio/tasks.pyi +497 -0
  522. jaclang/vendor/mypy/typeshed/stdlib/asyncio/threads.pyi +9 -0
  523. jaclang/vendor/mypy/typeshed/stdlib/asyncio/timeouts.pyi +19 -0
  524. jaclang/vendor/mypy/typeshed/stdlib/asyncio/transports.pyi +47 -0
  525. jaclang/vendor/mypy/typeshed/stdlib/asyncio/trsock.pyi +94 -0
  526. jaclang/vendor/mypy/typeshed/stdlib/asyncio/unix_events.pyi +196 -0
  527. jaclang/vendor/mypy/typeshed/stdlib/asyncio/windows_events.pyi +85 -0
  528. jaclang/vendor/mypy/typeshed/stdlib/asyncio/windows_utils.pyi +49 -0
  529. jaclang/vendor/mypy/typeshed/stdlib/asyncore.pyi +90 -0
  530. jaclang/vendor/mypy/typeshed/stdlib/atexit.pyi +12 -0
  531. jaclang/vendor/mypy/typeshed/stdlib/audioop.pyi +43 -0
  532. jaclang/vendor/mypy/typeshed/stdlib/base64.pyi +59 -0
  533. jaclang/vendor/mypy/typeshed/stdlib/bdb.pyi +102 -0
  534. jaclang/vendor/mypy/typeshed/stdlib/binascii.pyi +36 -0
  535. jaclang/vendor/mypy/typeshed/stdlib/binhex.pyi +45 -0
  536. jaclang/vendor/mypy/typeshed/stdlib/bisect.pyi +4 -0
  537. jaclang/vendor/mypy/typeshed/stdlib/builtins.pyi +1936 -0
  538. jaclang/vendor/mypy/typeshed/stdlib/bz2.pyi +146 -0
  539. jaclang/vendor/mypy/typeshed/stdlib/cProfile.pyi +31 -0
  540. jaclang/vendor/mypy/typeshed/stdlib/calendar.pyi +208 -0
  541. jaclang/vendor/mypy/typeshed/stdlib/cgi.pyi +118 -0
  542. jaclang/vendor/mypy/typeshed/stdlib/cgitb.pyi +32 -0
  543. jaclang/vendor/mypy/typeshed/stdlib/chunk.pyi +20 -0
  544. jaclang/vendor/mypy/typeshed/stdlib/cmath.pyi +36 -0
  545. jaclang/vendor/mypy/typeshed/stdlib/cmd.pyi +45 -0
  546. jaclang/vendor/mypy/typeshed/stdlib/code.pyi +33 -0
  547. jaclang/vendor/mypy/typeshed/stdlib/codecs.pyi +285 -0
  548. jaclang/vendor/mypy/typeshed/stdlib/codeop.pyi +13 -0
  549. jaclang/vendor/mypy/typeshed/stdlib/collections/__init__.pyi +485 -0
  550. jaclang/vendor/mypy/typeshed/stdlib/collections/abc.pyi +2 -0
  551. jaclang/vendor/mypy/typeshed/stdlib/colorsys.pyi +13 -0
  552. jaclang/vendor/mypy/typeshed/stdlib/compileall.pyi +111 -0
  553. jaclang/vendor/mypy/typeshed/stdlib/concurrent/__init__.pyi +0 -0
  554. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/__init__.pyi +32 -0
  555. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/_base.pyi +126 -0
  556. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/process.pyi +233 -0
  557. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/thread.pyi +80 -0
  558. jaclang/vendor/mypy/typeshed/stdlib/configparser.pyi +313 -0
  559. jaclang/vendor/mypy/typeshed/stdlib/contextlib.pyi +208 -0
  560. jaclang/vendor/mypy/typeshed/stdlib/contextvars.pyi +63 -0
  561. jaclang/vendor/mypy/typeshed/stdlib/copy.pyi +16 -0
  562. jaclang/vendor/mypy/typeshed/stdlib/copyreg.pyi +21 -0
  563. jaclang/vendor/mypy/typeshed/stdlib/crypt.pyi +12 -0
  564. jaclang/vendor/mypy/typeshed/stdlib/csv.pyi +147 -0
  565. jaclang/vendor/mypy/typeshed/stdlib/ctypes/__init__.pyi +187 -0
  566. jaclang/vendor/mypy/typeshed/stdlib/ctypes/_endian.pyi +19 -0
  567. jaclang/vendor/mypy/typeshed/stdlib/ctypes/util.pyi +6 -0
  568. jaclang/vendor/mypy/typeshed/stdlib/ctypes/wintypes.pyi +298 -0
  569. jaclang/vendor/mypy/typeshed/stdlib/curses/__init__.pyi +22 -0
  570. jaclang/vendor/mypy/typeshed/stdlib/curses/ascii.pyi +62 -0
  571. jaclang/vendor/mypy/typeshed/stdlib/curses/has_key.pyi +1 -0
  572. jaclang/vendor/mypy/typeshed/stdlib/curses/panel.pyi +22 -0
  573. jaclang/vendor/mypy/typeshed/stdlib/curses/textpad.pyi +11 -0
  574. jaclang/vendor/mypy/typeshed/stdlib/dataclasses.pyi +315 -0
  575. jaclang/vendor/mypy/typeshed/stdlib/datetime.pyi +295 -0
  576. jaclang/vendor/mypy/typeshed/stdlib/dbm/__init__.pyi +95 -0
  577. jaclang/vendor/mypy/typeshed/stdlib/dbm/dumb.pyi +31 -0
  578. jaclang/vendor/mypy/typeshed/stdlib/dbm/gnu.pyi +41 -0
  579. jaclang/vendor/mypy/typeshed/stdlib/dbm/ndbm.pyi +37 -0
  580. jaclang/vendor/mypy/typeshed/stdlib/decimal.pyi +2 -0
  581. jaclang/vendor/mypy/typeshed/stdlib/difflib.pyi +140 -0
  582. jaclang/vendor/mypy/typeshed/stdlib/dis.pyi +144 -0
  583. jaclang/vendor/mypy/typeshed/stdlib/distutils/__init__.pyi +5 -0
  584. jaclang/vendor/mypy/typeshed/stdlib/distutils/archive_util.pyi +20 -0
  585. jaclang/vendor/mypy/typeshed/stdlib/distutils/bcppcompiler.pyi +3 -0
  586. jaclang/vendor/mypy/typeshed/stdlib/distutils/ccompiler.pyi +152 -0
  587. jaclang/vendor/mypy/typeshed/stdlib/distutils/cmd.pyi +66 -0
  588. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/__init__.pyi +0 -0
  589. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist.pyi +25 -0
  590. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_dumb.pyi +21 -0
  591. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_msi.pyi +45 -0
  592. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_packager.pyi +0 -0
  593. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_rpm.pyi +52 -0
  594. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_wininst.pyi +16 -0
  595. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build.pyi +31 -0
  596. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_clib.pyi +27 -0
  597. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_ext.pyi +50 -0
  598. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_py.pyi +44 -0
  599. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_scripts.pyi +24 -0
  600. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/check.pyi +39 -0
  601. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/clean.pyi +17 -0
  602. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/config.pyi +83 -0
  603. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install.pyi +63 -0
  604. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_data.pyi +19 -0
  605. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_egg_info.pyi +18 -0
  606. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_headers.pyi +16 -0
  607. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_lib.pyi +25 -0
  608. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_scripts.pyi +18 -0
  609. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/register.pyi +18 -0
  610. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/sdist.pyi +42 -0
  611. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/upload.pyi +17 -0
  612. jaclang/vendor/mypy/typeshed/stdlib/distutils/config.pyi +17 -0
  613. jaclang/vendor/mypy/typeshed/stdlib/distutils/core.pyi +57 -0
  614. jaclang/vendor/mypy/typeshed/stdlib/distutils/cygwinccompiler.pyi +20 -0
  615. jaclang/vendor/mypy/typeshed/stdlib/distutils/debug.pyi +1 -0
  616. jaclang/vendor/mypy/typeshed/stdlib/distutils/dep_util.pyi +3 -0
  617. jaclang/vendor/mypy/typeshed/stdlib/distutils/dir_util.pyi +13 -0
  618. jaclang/vendor/mypy/typeshed/stdlib/distutils/dist.pyi +146 -0
  619. jaclang/vendor/mypy/typeshed/stdlib/distutils/errors.pyi +19 -0
  620. jaclang/vendor/mypy/typeshed/stdlib/distutils/extension.pyi +36 -0
  621. jaclang/vendor/mypy/typeshed/stdlib/distutils/fancy_getopt.pyi +34 -0
  622. jaclang/vendor/mypy/typeshed/stdlib/distutils/file_util.pyi +14 -0
  623. jaclang/vendor/mypy/typeshed/stdlib/distutils/filelist.pyi +50 -0
  624. jaclang/vendor/mypy/typeshed/stdlib/distutils/log.pyi +25 -0
  625. jaclang/vendor/mypy/typeshed/stdlib/distutils/msvccompiler.pyi +3 -0
  626. jaclang/vendor/mypy/typeshed/stdlib/distutils/spawn.pyi +2 -0
  627. jaclang/vendor/mypy/typeshed/stdlib/distutils/sysconfig.pyi +31 -0
  628. jaclang/vendor/mypy/typeshed/stdlib/distutils/text_file.pyi +21 -0
  629. jaclang/vendor/mypy/typeshed/stdlib/distutils/unixccompiler.pyi +3 -0
  630. jaclang/vendor/mypy/typeshed/stdlib/distutils/util.pyi +46 -0
  631. jaclang/vendor/mypy/typeshed/stdlib/distutils/version.pyi +36 -0
  632. jaclang/vendor/mypy/typeshed/stdlib/doctest.pyi +248 -0
  633. jaclang/vendor/mypy/typeshed/stdlib/dummy_threading.pyi +2 -0
  634. jaclang/vendor/mypy/typeshed/stdlib/email/__init__.pyi +29 -0
  635. jaclang/vendor/mypy/typeshed/stdlib/email/_header_value_parser.pyi +392 -0
  636. jaclang/vendor/mypy/typeshed/stdlib/email/_policybase.pyi +51 -0
  637. jaclang/vendor/mypy/typeshed/stdlib/email/base64mime.pyi +13 -0
  638. jaclang/vendor/mypy/typeshed/stdlib/email/charset.pyi +34 -0
  639. jaclang/vendor/mypy/typeshed/stdlib/email/contentmanager.pyi +11 -0
  640. jaclang/vendor/mypy/typeshed/stdlib/email/encoders.pyi +8 -0
  641. jaclang/vendor/mypy/typeshed/stdlib/email/errors.pyi +39 -0
  642. jaclang/vendor/mypy/typeshed/stdlib/email/feedparser.pyi +23 -0
  643. jaclang/vendor/mypy/typeshed/stdlib/email/generator.pyi +40 -0
  644. jaclang/vendor/mypy/typeshed/stdlib/email/header.pyi +31 -0
  645. jaclang/vendor/mypy/typeshed/stdlib/email/headerregistry.pyi +178 -0
  646. jaclang/vendor/mypy/typeshed/stdlib/email/iterators.pyi +12 -0
  647. jaclang/vendor/mypy/typeshed/stdlib/email/message.pyi +165 -0
  648. jaclang/vendor/mypy/typeshed/stdlib/email/mime/__init__.pyi +0 -0
  649. jaclang/vendor/mypy/typeshed/stdlib/email/mime/application.pyi +17 -0
  650. jaclang/vendor/mypy/typeshed/stdlib/email/mime/audio.pyi +17 -0
  651. jaclang/vendor/mypy/typeshed/stdlib/email/mime/base.pyi +8 -0
  652. jaclang/vendor/mypy/typeshed/stdlib/email/mime/image.pyi +17 -0
  653. jaclang/vendor/mypy/typeshed/stdlib/email/mime/message.pyi +8 -0
  654. jaclang/vendor/mypy/typeshed/stdlib/email/mime/multipart.pyi +18 -0
  655. jaclang/vendor/mypy/typeshed/stdlib/email/mime/nonmultipart.pyi +5 -0
  656. jaclang/vendor/mypy/typeshed/stdlib/email/mime/text.pyi +9 -0
  657. jaclang/vendor/mypy/typeshed/stdlib/email/parser.pyi +26 -0
  658. jaclang/vendor/mypy/typeshed/stdlib/email/policy.pyi +38 -0
  659. jaclang/vendor/mypy/typeshed/stdlib/email/quoprimime.pyi +28 -0
  660. jaclang/vendor/mypy/typeshed/stdlib/email/utils.pyi +70 -0
  661. jaclang/vendor/mypy/typeshed/stdlib/encodings/__init__.pyi +10 -0
  662. jaclang/vendor/mypy/typeshed/stdlib/encodings/utf_8.pyi +21 -0
  663. jaclang/vendor/mypy/typeshed/stdlib/encodings/utf_8_sig.pyi +22 -0
  664. jaclang/vendor/mypy/typeshed/stdlib/ensurepip/__init__.pyi +12 -0
  665. jaclang/vendor/mypy/typeshed/stdlib/enum.pyi +320 -0
  666. jaclang/vendor/mypy/typeshed/stdlib/errno.pyi +222 -0
  667. jaclang/vendor/mypy/typeshed/stdlib/faulthandler.pyi +13 -0
  668. jaclang/vendor/mypy/typeshed/stdlib/fcntl.pyi +127 -0
  669. jaclang/vendor/mypy/typeshed/stdlib/filecmp.pyi +57 -0
  670. jaclang/vendor/mypy/typeshed/stdlib/fileinput.pyi +213 -0
  671. jaclang/vendor/mypy/typeshed/stdlib/fnmatch.pyi +9 -0
  672. jaclang/vendor/mypy/typeshed/stdlib/formatter.pyi +88 -0
  673. jaclang/vendor/mypy/typeshed/stdlib/fractions.pyi +150 -0
  674. jaclang/vendor/mypy/typeshed/stdlib/ftplib.pyi +178 -0
  675. jaclang/vendor/mypy/typeshed/stdlib/functools.pyi +213 -0
  676. jaclang/vendor/mypy/typeshed/stdlib/gc.pyi +37 -0
  677. jaclang/vendor/mypy/typeshed/stdlib/genericpath.pyi +52 -0
  678. jaclang/vendor/mypy/typeshed/stdlib/getopt.pyi +11 -0
  679. jaclang/vendor/mypy/typeshed/stdlib/getpass.pyi +8 -0
  680. jaclang/vendor/mypy/typeshed/stdlib/gettext.pyi +169 -0
  681. jaclang/vendor/mypy/typeshed/stdlib/glob.pyi +42 -0
  682. jaclang/vendor/mypy/typeshed/stdlib/graphlib.pyi +28 -0
  683. jaclang/vendor/mypy/typeshed/stdlib/grp.pyi +22 -0
  684. jaclang/vendor/mypy/typeshed/stdlib/gzip.pyi +160 -0
  685. jaclang/vendor/mypy/typeshed/stdlib/hashlib.pyi +167 -0
  686. jaclang/vendor/mypy/typeshed/stdlib/heapq.pyi +17 -0
  687. jaclang/vendor/mypy/typeshed/stdlib/hmac.pyi +38 -0
  688. jaclang/vendor/mypy/typeshed/stdlib/html/__init__.pyi +6 -0
  689. jaclang/vendor/mypy/typeshed/stdlib/html/entities.pyi +6 -0
  690. jaclang/vendor/mypy/typeshed/stdlib/html/parser.pyi +34 -0
  691. jaclang/vendor/mypy/typeshed/stdlib/http/__init__.pyi +105 -0
  692. jaclang/vendor/mypy/typeshed/stdlib/http/client.pyi +259 -0
  693. jaclang/vendor/mypy/typeshed/stdlib/http/cookiejar.pyi +159 -0
  694. jaclang/vendor/mypy/typeshed/stdlib/http/cookies.pyi +60 -0
  695. jaclang/vendor/mypy/typeshed/stdlib/http/server.pyi +83 -0
  696. jaclang/vendor/mypy/typeshed/stdlib/imaplib.pyi +168 -0
  697. jaclang/vendor/mypy/typeshed/stdlib/imghdr.pyi +17 -0
  698. jaclang/vendor/mypy/typeshed/stdlib/imp.pyi +62 -0
  699. jaclang/vendor/mypy/typeshed/stdlib/importlib/__init__.pyi +24 -0
  700. jaclang/vendor/mypy/typeshed/stdlib/importlib/_abc.pyi +15 -0
  701. jaclang/vendor/mypy/typeshed/stdlib/importlib/abc.pyi +172 -0
  702. jaclang/vendor/mypy/typeshed/stdlib/importlib/machinery.pyi +179 -0
  703. jaclang/vendor/mypy/typeshed/stdlib/importlib/metadata/__init__.pyi +285 -0
  704. jaclang/vendor/mypy/typeshed/stdlib/importlib/metadata/_meta.pyi +49 -0
  705. jaclang/vendor/mypy/typeshed/stdlib/importlib/readers.pyi +68 -0
  706. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/__init__.pyi +46 -0
  707. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/abc.pyi +12 -0
  708. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/readers.pyi +14 -0
  709. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/simple.pyi +56 -0
  710. jaclang/vendor/mypy/typeshed/stdlib/importlib/simple.pyi +11 -0
  711. jaclang/vendor/mypy/typeshed/stdlib/importlib/util.pyi +43 -0
  712. jaclang/vendor/mypy/typeshed/stdlib/inspect.pyi +632 -0
  713. jaclang/vendor/mypy/typeshed/stdlib/io.pyi +238 -0
  714. jaclang/vendor/mypy/typeshed/stdlib/ipaddress.pyi +208 -0
  715. jaclang/vendor/mypy/typeshed/stdlib/itertools.pyi +273 -0
  716. jaclang/vendor/mypy/typeshed/stdlib/json/__init__.pyi +61 -0
  717. jaclang/vendor/mypy/typeshed/stdlib/json/decoder.pyi +32 -0
  718. jaclang/vendor/mypy/typeshed/stdlib/json/encoder.pyi +40 -0
  719. jaclang/vendor/mypy/typeshed/stdlib/json/tool.pyi +1 -0
  720. jaclang/vendor/mypy/typeshed/stdlib/keyword.pyi +21 -0
  721. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/__init__.pyi +0 -0
  722. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/btm_matcher.pyi +28 -0
  723. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixer_base.pyi +42 -0
  724. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/__init__.pyi +0 -0
  725. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_apply.pyi +8 -0
  726. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_asserts.pyi +10 -0
  727. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_basestring.pyi +8 -0
  728. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_buffer.pyi +8 -0
  729. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_dict.pyi +16 -0
  730. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_except.pyi +14 -0
  731. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_exec.pyi +8 -0
  732. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_execfile.pyi +8 -0
  733. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_exitfunc.pyi +13 -0
  734. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_filter.pyi +9 -0
  735. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_funcattrs.pyi +8 -0
  736. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_future.pyi +8 -0
  737. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_getcwdu.pyi +8 -0
  738. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_has_key.pyi +8 -0
  739. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_idioms.pyi +15 -0
  740. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_import.pyi +16 -0
  741. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_imports.pyi +21 -0
  742. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_imports2.pyi +6 -0
  743. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_input.pyi +11 -0
  744. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_intern.pyi +9 -0
  745. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_isinstance.pyi +8 -0
  746. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_itertools.pyi +9 -0
  747. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_itertools_imports.pyi +7 -0
  748. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_long.pyi +7 -0
  749. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_map.pyi +9 -0
  750. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_metaclass.pyi +17 -0
  751. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_methodattrs.pyi +10 -0
  752. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_ne.pyi +8 -0
  753. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_next.pyi +19 -0
  754. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_nonzero.pyi +8 -0
  755. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_numliterals.pyi +8 -0
  756. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_operator.pyi +12 -0
  757. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_paren.pyi +8 -0
  758. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_print.pyi +12 -0
  759. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_raise.pyi +8 -0
  760. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_raw_input.pyi +8 -0
  761. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_reduce.pyi +8 -0
  762. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_reload.pyi +9 -0
  763. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_renames.pyi +17 -0
  764. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_repr.pyi +8 -0
  765. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_set_literal.pyi +7 -0
  766. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_standarderror.pyi +8 -0
  767. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_sys_exc.pyi +9 -0
  768. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_throw.pyi +8 -0
  769. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_tuple_params.pyi +17 -0
  770. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_types.pyi +8 -0
  771. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_unicode.pyi +12 -0
  772. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_urllib.pyi +15 -0
  773. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_ws_comma.pyi +12 -0
  774. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_xrange.pyi +20 -0
  775. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_xreadlines.pyi +8 -0
  776. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_zip.pyi +9 -0
  777. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/main.pyi +42 -0
  778. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/__init__.pyi +9 -0
  779. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/driver.pyi +27 -0
  780. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/grammar.pyi +24 -0
  781. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/literals.pyi +7 -0
  782. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/parse.pyi +30 -0
  783. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/pgen.pyi +50 -0
  784. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/token.pyi +67 -0
  785. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/tokenize.pyi +96 -0
  786. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pygram.pyi +114 -0
  787. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pytree.pyi +117 -0
  788. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/refactor.pyi +82 -0
  789. jaclang/vendor/mypy/typeshed/stdlib/linecache.pyi +23 -0
  790. jaclang/vendor/mypy/typeshed/stdlib/locale.pyi +152 -0
  791. jaclang/vendor/mypy/typeshed/stdlib/logging/__init__.pyi +658 -0
  792. jaclang/vendor/mypy/typeshed/stdlib/logging/config.pyi +134 -0
  793. jaclang/vendor/mypy/typeshed/stdlib/logging/handlers.pyi +275 -0
  794. jaclang/vendor/mypy/typeshed/stdlib/lzma.pyi +197 -0
  795. jaclang/vendor/mypy/typeshed/stdlib/mailbox.pyi +256 -0
  796. jaclang/vendor/mypy/typeshed/stdlib/mailcap.pyi +11 -0
  797. jaclang/vendor/mypy/typeshed/stdlib/marshal.pyi +33 -0
  798. jaclang/vendor/mypy/typeshed/stdlib/math.pyi +125 -0
  799. jaclang/vendor/mypy/typeshed/stdlib/mimetypes.pyi +46 -0
  800. jaclang/vendor/mypy/typeshed/stdlib/mmap.pyi +113 -0
  801. jaclang/vendor/mypy/typeshed/stdlib/modulefinder.pyi +66 -0
  802. jaclang/vendor/mypy/typeshed/stdlib/msilib/__init__.pyi +177 -0
  803. jaclang/vendor/mypy/typeshed/stdlib/msilib/schema.pyi +94 -0
  804. jaclang/vendor/mypy/typeshed/stdlib/msilib/sequence.pyi +13 -0
  805. jaclang/vendor/mypy/typeshed/stdlib/msilib/text.pyi +7 -0
  806. jaclang/vendor/mypy/typeshed/stdlib/msvcrt.pyi +32 -0
  807. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/__init__.pyi +90 -0
  808. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/connection.pyi +75 -0
  809. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/context.pyi +189 -0
  810. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/dummy/__init__.pyi +77 -0
  811. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/dummy/connection.pyi +39 -0
  812. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/forkserver.pyi +31 -0
  813. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/heap.pyi +36 -0
  814. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/managers.pyi +212 -0
  815. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/pool.pyi +103 -0
  816. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_fork.pyi +23 -0
  817. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_forkserver.pyi +16 -0
  818. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_spawn_posix.pyi +20 -0
  819. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_spawn_win32.pyi +30 -0
  820. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/process.pyi +39 -0
  821. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/queues.pyi +41 -0
  822. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/reduction.pyi +90 -0
  823. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/resource_sharer.pyi +20 -0
  824. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/resource_tracker.pyi +18 -0
  825. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/shared_memory.pyi +40 -0
  826. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/sharedctypes.pyi +107 -0
  827. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/spawn.pyi +32 -0
  828. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/synchronize.pyi +54 -0
  829. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/util.pyi +98 -0
  830. jaclang/vendor/mypy/typeshed/stdlib/netrc.pyi +23 -0
  831. jaclang/vendor/mypy/typeshed/stdlib/nis.pyi +9 -0
  832. jaclang/vendor/mypy/typeshed/stdlib/nntplib.pyi +125 -0
  833. jaclang/vendor/mypy/typeshed/stdlib/nt.pyi +111 -0
  834. jaclang/vendor/mypy/typeshed/stdlib/ntpath.pyi +119 -0
  835. jaclang/vendor/mypy/typeshed/stdlib/nturl2path.pyi +2 -0
  836. jaclang/vendor/mypy/typeshed/stdlib/numbers.pyi +209 -0
  837. jaclang/vendor/mypy/typeshed/stdlib/opcode.pyi +59 -0
  838. jaclang/vendor/mypy/typeshed/stdlib/operator.pyi +110 -0
  839. jaclang/vendor/mypy/typeshed/stdlib/optparse.pyi +255 -0
  840. jaclang/vendor/mypy/typeshed/stdlib/os/__init__.pyi +1157 -0
  841. jaclang/vendor/mypy/typeshed/stdlib/os/path.pyi +8 -0
  842. jaclang/vendor/mypy/typeshed/stdlib/ossaudiodev.pyi +131 -0
  843. jaclang/vendor/mypy/typeshed/stdlib/parser.pyi +24 -0
  844. jaclang/vendor/mypy/typeshed/stdlib/pathlib.pyi +232 -0
  845. jaclang/vendor/mypy/typeshed/stdlib/pdb.pyi +181 -0
  846. jaclang/vendor/mypy/typeshed/stdlib/pickle.pyi +271 -0
  847. jaclang/vendor/mypy/typeshed/stdlib/pickletools.pyi +167 -0
  848. jaclang/vendor/mypy/typeshed/stdlib/pipes.pyi +16 -0
  849. jaclang/vendor/mypy/typeshed/stdlib/pkgutil.pyi +53 -0
  850. jaclang/vendor/mypy/typeshed/stdlib/platform.pyi +42 -0
  851. jaclang/vendor/mypy/typeshed/stdlib/plistlib.pyi +113 -0
  852. jaclang/vendor/mypy/typeshed/stdlib/poplib.pyi +71 -0
  853. jaclang/vendor/mypy/typeshed/stdlib/posix.pyi +361 -0
  854. jaclang/vendor/mypy/typeshed/stdlib/posixpath.pyi +161 -0
  855. jaclang/vendor/mypy/typeshed/stdlib/pprint.pyi +112 -0
  856. jaclang/vendor/mypy/typeshed/stdlib/profile.pyi +31 -0
  857. jaclang/vendor/mypy/typeshed/stdlib/pstats.pyi +80 -0
  858. jaclang/vendor/mypy/typeshed/stdlib/pty.pyi +19 -0
  859. jaclang/vendor/mypy/typeshed/stdlib/pwd.pyi +28 -0
  860. jaclang/vendor/mypy/typeshed/stdlib/py_compile.pyi +34 -0
  861. jaclang/vendor/mypy/typeshed/stdlib/pyclbr.pyi +74 -0
  862. jaclang/vendor/mypy/typeshed/stdlib/pydoc.pyi +261 -0
  863. jaclang/vendor/mypy/typeshed/stdlib/pydoc_data/__init__.pyi +0 -0
  864. jaclang/vendor/mypy/typeshed/stdlib/pydoc_data/topics.pyi +1 -0
  865. jaclang/vendor/mypy/typeshed/stdlib/pyexpat/__init__.pyi +85 -0
  866. jaclang/vendor/mypy/typeshed/stdlib/pyexpat/errors.pyi +49 -0
  867. jaclang/vendor/mypy/typeshed/stdlib/pyexpat/model.pyi +11 -0
  868. jaclang/vendor/mypy/typeshed/stdlib/queue.pyi +66 -0
  869. jaclang/vendor/mypy/typeshed/stdlib/quopri.pyi +11 -0
  870. jaclang/vendor/mypy/typeshed/stdlib/random.pyi +138 -0
  871. jaclang/vendor/mypy/typeshed/stdlib/re.pyi +290 -0
  872. jaclang/vendor/mypy/typeshed/stdlib/readline.pyi +36 -0
  873. jaclang/vendor/mypy/typeshed/stdlib/reprlib.pyi +65 -0
  874. jaclang/vendor/mypy/typeshed/stdlib/resource.pyi +94 -0
  875. jaclang/vendor/mypy/typeshed/stdlib/rlcompleter.pyi +9 -0
  876. jaclang/vendor/mypy/typeshed/stdlib/runpy.pyi +24 -0
  877. jaclang/vendor/mypy/typeshed/stdlib/sched.pyi +42 -0
  878. jaclang/vendor/mypy/typeshed/stdlib/secrets.pyi +15 -0
  879. jaclang/vendor/mypy/typeshed/stdlib/select.pyi +155 -0
  880. jaclang/vendor/mypy/typeshed/stdlib/selectors.pyi +67 -0
  881. jaclang/vendor/mypy/typeshed/stdlib/shelve.pyi +46 -0
  882. jaclang/vendor/mypy/typeshed/stdlib/shlex.pyi +63 -0
  883. jaclang/vendor/mypy/typeshed/stdlib/shutil.pyi +185 -0
  884. jaclang/vendor/mypy/typeshed/stdlib/signal.pyi +188 -0
  885. jaclang/vendor/mypy/typeshed/stdlib/site.pyi +27 -0
  886. jaclang/vendor/mypy/typeshed/stdlib/smtpd.pyi +91 -0
  887. jaclang/vendor/mypy/typeshed/stdlib/smtplib.pyi +204 -0
  888. jaclang/vendor/mypy/typeshed/stdlib/sndhdr.pyi +14 -0
  889. jaclang/vendor/mypy/typeshed/stdlib/socket.pyi +825 -0
  890. jaclang/vendor/mypy/typeshed/stdlib/socketserver.pyi +168 -0
  891. jaclang/vendor/mypy/typeshed/stdlib/spwd.pyi +41 -0
  892. jaclang/vendor/mypy/typeshed/stdlib/sqlite3/__init__.pyi +1 -0
  893. jaclang/vendor/mypy/typeshed/stdlib/sqlite3/dbapi2.pyi +551 -0
  894. jaclang/vendor/mypy/typeshed/stdlib/sre_compile.pyi +11 -0
  895. jaclang/vendor/mypy/typeshed/stdlib/sre_constants.pyi +130 -0
  896. jaclang/vendor/mypy/typeshed/stdlib/sre_parse.pyi +104 -0
  897. jaclang/vendor/mypy/typeshed/stdlib/ssl.pyi +537 -0
  898. jaclang/vendor/mypy/typeshed/stdlib/stat.pyi +1 -0
  899. jaclang/vendor/mypy/typeshed/stdlib/statistics.pyi +132 -0
  900. jaclang/vendor/mypy/typeshed/stdlib/string.pyi +83 -0
  901. jaclang/vendor/mypy/typeshed/stdlib/stringprep.pyi +27 -0
  902. jaclang/vendor/mypy/typeshed/stdlib/struct.pyi +26 -0
  903. jaclang/vendor/mypy/typeshed/stdlib/subprocess.pyi +2615 -0
  904. jaclang/vendor/mypy/typeshed/stdlib/sunau.pyi +86 -0
  905. jaclang/vendor/mypy/typeshed/stdlib/symbol.pyi +93 -0
  906. jaclang/vendor/mypy/typeshed/stdlib/symtable.pyi +58 -0
  907. jaclang/vendor/mypy/typeshed/stdlib/sys/__init__.pyi +373 -0
  908. jaclang/vendor/mypy/typeshed/stdlib/sys/_monitoring.pyi +52 -0
  909. jaclang/vendor/mypy/typeshed/stdlib/sysconfig.pyi +48 -0
  910. jaclang/vendor/mypy/typeshed/stdlib/syslog.pyi +46 -0
  911. jaclang/vendor/mypy/typeshed/stdlib/tabnanny.pyi +16 -0
  912. jaclang/vendor/mypy/typeshed/stdlib/tarfile.pyi +441 -0
  913. jaclang/vendor/mypy/typeshed/stdlib/telnetlib.pyi +122 -0
  914. jaclang/vendor/mypy/typeshed/stdlib/tempfile.pyi +477 -0
  915. jaclang/vendor/mypy/typeshed/stdlib/termios.pyi +267 -0
  916. jaclang/vendor/mypy/typeshed/stdlib/textwrap.pyi +103 -0
  917. jaclang/vendor/mypy/typeshed/stdlib/this.pyi +2 -0
  918. jaclang/vendor/mypy/typeshed/stdlib/threading.pyi +187 -0
  919. jaclang/vendor/mypy/typeshed/stdlib/time.pyi +108 -0
  920. jaclang/vendor/mypy/typeshed/stdlib/timeit.pyi +32 -0
  921. jaclang/vendor/mypy/typeshed/stdlib/tkinter/__init__.pyi +3654 -0
  922. jaclang/vendor/mypy/typeshed/stdlib/tkinter/colorchooser.pyi +20 -0
  923. jaclang/vendor/mypy/typeshed/stdlib/tkinter/commondialog.pyi +14 -0
  924. jaclang/vendor/mypy/typeshed/stdlib/tkinter/constants.pyi +80 -0
  925. jaclang/vendor/mypy/typeshed/stdlib/tkinter/dialog.pyi +16 -0
  926. jaclang/vendor/mypy/typeshed/stdlib/tkinter/dnd.pyi +20 -0
  927. jaclang/vendor/mypy/typeshed/stdlib/tkinter/filedialog.pyi +151 -0
  928. jaclang/vendor/mypy/typeshed/stdlib/tkinter/font.pyi +116 -0
  929. jaclang/vendor/mypy/typeshed/stdlib/tkinter/messagebox.pyi +44 -0
  930. jaclang/vendor/mypy/typeshed/stdlib/tkinter/scrolledtext.pyi +9 -0
  931. jaclang/vendor/mypy/typeshed/stdlib/tkinter/simpledialog.pyi +54 -0
  932. jaclang/vendor/mypy/typeshed/stdlib/tkinter/tix.pyi +299 -0
  933. jaclang/vendor/mypy/typeshed/stdlib/tkinter/ttk.pyi +1204 -0
  934. jaclang/vendor/mypy/typeshed/stdlib/token.pyi +159 -0
  935. jaclang/vendor/mypy/typeshed/stdlib/tokenize.pyi +177 -0
  936. jaclang/vendor/mypy/typeshed/stdlib/tomllib.pyi +10 -0
  937. jaclang/vendor/mypy/typeshed/stdlib/trace.pyi +79 -0
  938. jaclang/vendor/mypy/typeshed/stdlib/traceback.pyi +262 -0
  939. jaclang/vendor/mypy/typeshed/stdlib/tracemalloc.pyi +124 -0
  940. jaclang/vendor/mypy/typeshed/stdlib/tty.pyi +30 -0
  941. jaclang/vendor/mypy/typeshed/stdlib/turtle.pyi +713 -0
  942. jaclang/vendor/mypy/typeshed/stdlib/types.pyi +614 -0
  943. jaclang/vendor/mypy/typeshed/stdlib/typing.pyi +976 -0
  944. jaclang/vendor/mypy/typeshed/stdlib/typing_extensions.pyi +509 -0
  945. jaclang/vendor/mypy/typeshed/stdlib/unicodedata.pyi +73 -0
  946. jaclang/vendor/mypy/typeshed/stdlib/unittest/__init__.pyi +67 -0
  947. jaclang/vendor/mypy/typeshed/stdlib/unittest/_log.pyi +27 -0
  948. jaclang/vendor/mypy/typeshed/stdlib/unittest/async_case.pyi +21 -0
  949. jaclang/vendor/mypy/typeshed/stdlib/unittest/case.pyi +342 -0
  950. jaclang/vendor/mypy/typeshed/stdlib/unittest/loader.pyi +51 -0
  951. jaclang/vendor/mypy/typeshed/stdlib/unittest/main.pyi +69 -0
  952. jaclang/vendor/mypy/typeshed/stdlib/unittest/mock.pyi +430 -0
  953. jaclang/vendor/mypy/typeshed/stdlib/unittest/result.pyi +47 -0
  954. jaclang/vendor/mypy/typeshed/stdlib/unittest/runner.pyi +72 -0
  955. jaclang/vendor/mypy/typeshed/stdlib/unittest/signals.pyi +15 -0
  956. jaclang/vendor/mypy/typeshed/stdlib/unittest/suite.pyi +22 -0
  957. jaclang/vendor/mypy/typeshed/stdlib/unittest/util.pyi +23 -0
  958. jaclang/vendor/mypy/typeshed/stdlib/urllib/__init__.pyi +0 -0
  959. jaclang/vendor/mypy/typeshed/stdlib/urllib/error.pyi +23 -0
  960. jaclang/vendor/mypy/typeshed/stdlib/urllib/parse.pyi +210 -0
  961. jaclang/vendor/mypy/typeshed/stdlib/urllib/request.pyi +400 -0
  962. jaclang/vendor/mypy/typeshed/stdlib/urllib/response.pyi +43 -0
  963. jaclang/vendor/mypy/typeshed/stdlib/urllib/robotparser.pyi +20 -0
  964. jaclang/vendor/mypy/typeshed/stdlib/uu.pyi +13 -0
  965. jaclang/vendor/mypy/typeshed/stdlib/uuid.pyi +100 -0
  966. jaclang/vendor/mypy/typeshed/stdlib/warnings.pyi +112 -0
  967. jaclang/vendor/mypy/typeshed/stdlib/wave.pyi +85 -0
  968. jaclang/vendor/mypy/typeshed/stdlib/weakref.pyi +149 -0
  969. jaclang/vendor/mypy/typeshed/stdlib/webbrowser.pyi +74 -0
  970. jaclang/vendor/mypy/typeshed/stdlib/winreg.pyi +132 -0
  971. jaclang/vendor/mypy/typeshed/stdlib/winsound.pyi +28 -0
  972. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/__init__.pyi +0 -0
  973. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/handlers.pyi +91 -0
  974. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/headers.pyi +26 -0
  975. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/simple_server.pyi +37 -0
  976. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/types.pyi +32 -0
  977. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/util.pyi +24 -0
  978. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/validate.pyi +50 -0
  979. jaclang/vendor/mypy/typeshed/stdlib/xdrlib.pyi +57 -0
  980. jaclang/vendor/mypy/typeshed/stdlib/xml/__init__.pyi +1 -0
  981. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/NodeFilter.pyi +19 -0
  982. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/__init__.pyi +69 -0
  983. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/domreg.pyi +8 -0
  984. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/expatbuilder.pyi +100 -0
  985. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/minicompat.pyi +22 -0
  986. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/minidom.pyi +404 -0
  987. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/pulldom.pyi +94 -0
  988. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/xmlbuilder.pyi +108 -0
  989. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/ElementInclude.pyi +28 -0
  990. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/ElementPath.pyi +34 -0
  991. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/ElementTree.pyi +327 -0
  992. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/__init__.pyi +0 -0
  993. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/cElementTree.pyi +1 -0
  994. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/__init__.pyi +1 -0
  995. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/expat/__init__.pyi +1 -0
  996. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/expat/errors.pyi +1 -0
  997. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/expat/model.pyi +1 -0
  998. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/__init__.pyi +25 -0
  999. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/_exceptions.pyi +19 -0
  1000. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/handler.pyi +55 -0
  1001. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/saxutils.pyi +60 -0
  1002. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/xmlreader.pyi +87 -0
  1003. jaclang/vendor/mypy/typeshed/stdlib/xmlrpc/__init__.pyi +0 -0
  1004. jaclang/vendor/mypy/typeshed/stdlib/xmlrpc/client.pyi +296 -0
  1005. jaclang/vendor/mypy/typeshed/stdlib/xmlrpc/server.pyi +143 -0
  1006. jaclang/vendor/mypy/typeshed/stdlib/xxlimited.pyi +22 -0
  1007. jaclang/vendor/mypy/typeshed/stdlib/zipapp.pyi +20 -0
  1008. jaclang/vendor/mypy/typeshed/stdlib/zipfile/__init__.pyi +306 -0
  1009. jaclang/vendor/mypy/typeshed/stdlib/zipfile/_path.pyi +95 -0
  1010. jaclang/vendor/mypy/typeshed/stdlib/zipimport.pyi +32 -0
  1011. jaclang/vendor/mypy/typeshed/stdlib/zlib.pyi +56 -0
  1012. jaclang/vendor/mypy/typeshed/stdlib/zoneinfo/__init__.pyi +38 -0
  1013. jaclang/vendor/mypy/typeshed/stubs/mypy-extensions/mypy_extensions.pyi +218 -0
  1014. jaclang/vendor/mypy/typestate.py +5 -15
  1015. jaclang/vendor/mypy/typetraverser.py +9 -3
  1016. jaclang/vendor/mypy/typevars.py +2 -8
  1017. jaclang/vendor/mypy/util.py +14 -45
  1018. jaclang/vendor/mypy/version.py +1 -19
  1019. jaclang/vendor/mypy/visitor.py +3 -9
  1020. jaclang/vendor/mypy/xml/mypy-html.css +104 -0
  1021. jaclang/vendor/mypy/xml/mypy-html.xslt +81 -0
  1022. jaclang/vendor/mypy/xml/mypy-txt.xslt +100 -0
  1023. jaclang/vendor/mypy/xml/mypy.xsd +50 -0
  1024. jaclang/vendor/mypy-1.10.0.dist-info/LICENSE +229 -0
  1025. jaclang/vendor/mypy-1.10.0.dist-info/METADATA +48 -0
  1026. jaclang/vendor/mypy-1.10.0.dist-info/RECORD +1241 -0
  1027. jaclang/vendor/mypy-1.10.0.dist-info/WHEEL +6 -0
  1028. jaclang/vendor/mypy-1.10.0.dist-info/entry_points.txt +6 -0
  1029. jaclang/vendor/mypy-1.10.0.dist-info/top_level.txt +3 -0
  1030. jaclang/vendor/mypy_extensions-1.0.0.dist-info/LICENSE +27 -0
  1031. jaclang/vendor/mypy_extensions-1.0.0.dist-info/METADATA +29 -0
  1032. jaclang/vendor/mypy_extensions-1.0.0.dist-info/RECORD +6 -0
  1033. jaclang/vendor/mypy_extensions-1.0.0.dist-info/WHEEL +5 -0
  1034. jaclang/vendor/mypy_extensions-1.0.0.dist-info/top_level.txt +1 -0
  1035. jaclang/vendor/mypy_extensions.py +21 -40
  1036. jaclang/vendor/mypyc/README.md +133 -0
  1037. jaclang/vendor/mypyc/__main__.py +1 -3
  1038. jaclang/vendor/mypyc/analysis/attrdefined.py +6 -22
  1039. jaclang/vendor/mypyc/analysis/dataflow.py +5 -3
  1040. jaclang/vendor/mypyc/analysis/ircheck.py +13 -26
  1041. jaclang/vendor/mypyc/analysis/selfleaks.py +4 -0
  1042. jaclang/vendor/mypyc/build.py +6 -19
  1043. jaclang/vendor/mypyc/codegen/emit.py +20 -73
  1044. jaclang/vendor/mypyc/codegen/emitclass.py +22 -72
  1045. jaclang/vendor/mypyc/codegen/emitfunc.py +20 -62
  1046. jaclang/vendor/mypyc/codegen/emitmodule.py +50 -117
  1047. jaclang/vendor/mypyc/codegen/emitwrapper.py +22 -78
  1048. jaclang/vendor/mypyc/codegen/literals.py +1 -3
  1049. jaclang/vendor/mypyc/common.py +1 -3
  1050. jaclang/vendor/mypyc/doc/Makefile +20 -0
  1051. jaclang/vendor/mypyc/doc/bool_operations.rst +27 -0
  1052. jaclang/vendor/mypyc/doc/compilation_units.rst +20 -0
  1053. jaclang/vendor/mypyc/doc/conf.py +59 -0
  1054. jaclang/vendor/mypyc/doc/cpython-timings.md +25 -0
  1055. jaclang/vendor/mypyc/doc/dev-intro.md +548 -0
  1056. jaclang/vendor/mypyc/doc/dict_operations.rst +59 -0
  1057. jaclang/vendor/mypyc/doc/differences_from_python.rst +332 -0
  1058. jaclang/vendor/mypyc/doc/float_operations.rst +50 -0
  1059. jaclang/vendor/mypyc/doc/future.md +42 -0
  1060. jaclang/vendor/mypyc/doc/getting_started.rst +240 -0
  1061. jaclang/vendor/mypyc/doc/index.rst +61 -0
  1062. jaclang/vendor/mypyc/doc/int_operations.rst +162 -0
  1063. jaclang/vendor/mypyc/doc/introduction.rst +150 -0
  1064. jaclang/vendor/mypyc/doc/list_operations.rst +65 -0
  1065. jaclang/vendor/mypyc/doc/make.bat +35 -0
  1066. jaclang/vendor/mypyc/doc/native_classes.rst +206 -0
  1067. jaclang/vendor/mypyc/doc/native_operations.rst +55 -0
  1068. jaclang/vendor/mypyc/doc/performance_tips_and_tricks.rst +244 -0
  1069. jaclang/vendor/mypyc/doc/set_operations.rst +47 -0
  1070. jaclang/vendor/mypyc/doc/str_operations.rst +35 -0
  1071. jaclang/vendor/mypyc/doc/tuple_operations.rst +33 -0
  1072. jaclang/vendor/mypyc/doc/using_type_annotations.rst +398 -0
  1073. jaclang/vendor/mypyc/external/googletest/LICENSE +28 -0
  1074. jaclang/vendor/mypyc/external/googletest/README.md +280 -0
  1075. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-death-test.h +294 -0
  1076. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-message.h +250 -0
  1077. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-param-test.h +1444 -0
  1078. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-param-test.h.pump +510 -0
  1079. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-printers.h +993 -0
  1080. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-spi.h +232 -0
  1081. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-test-part.h +179 -0
  1082. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-typed-test.h +263 -0
  1083. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest.h +2236 -0
  1084. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest_pred_impl.h +358 -0
  1085. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest_prod.h +58 -0
  1086. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/custom/gtest-port.h +69 -0
  1087. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/custom/gtest-printers.h +42 -0
  1088. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/custom/gtest.h +41 -0
  1089. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-death-test-internal.h +319 -0
  1090. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-filepath.h +206 -0
  1091. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-internal.h +1238 -0
  1092. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-linked_ptr.h +243 -0
  1093. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-param-util-generated.h +5146 -0
  1094. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-param-util-generated.h.pump +286 -0
  1095. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-param-util.h +731 -0
  1096. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-port-arch.h +93 -0
  1097. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-port.h +2560 -0
  1098. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-string.h +167 -0
  1099. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-tuple.h +1020 -0
  1100. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-tuple.h.pump +347 -0
  1101. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-type-util.h +3331 -0
  1102. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-type-util.h.pump +297 -0
  1103. jaclang/vendor/mypyc/external/googletest/make/Makefile +61 -0
  1104. jaclang/vendor/mypyc/external/googletest/src/gtest-all.cc +48 -0
  1105. jaclang/vendor/mypyc/external/googletest/src/gtest-death-test.cc +1342 -0
  1106. jaclang/vendor/mypyc/external/googletest/src/gtest-filepath.cc +387 -0
  1107. jaclang/vendor/mypyc/external/googletest/src/gtest-internal-inl.h +1183 -0
  1108. jaclang/vendor/mypyc/external/googletest/src/gtest-port.cc +1259 -0
  1109. jaclang/vendor/mypyc/external/googletest/src/gtest-printers.cc +373 -0
  1110. jaclang/vendor/mypyc/external/googletest/src/gtest-test-part.cc +110 -0
  1111. jaclang/vendor/mypyc/external/googletest/src/gtest-typed-test.cc +118 -0
  1112. jaclang/vendor/mypyc/external/googletest/src/gtest.cc +5388 -0
  1113. jaclang/vendor/mypyc/external/googletest/src/gtest_main.cc +38 -0
  1114. jaclang/vendor/mypyc/ir/class_ir.py +8 -24
  1115. jaclang/vendor/mypyc/ir/func_ir.py +3 -16
  1116. jaclang/vendor/mypyc/ir/module_ir.py +2 -6
  1117. jaclang/vendor/mypyc/ir/ops.py +103 -66
  1118. jaclang/vendor/mypyc/ir/pprint.py +35 -55
  1119. jaclang/vendor/mypyc/ir/rtypes.py +16 -48
  1120. jaclang/vendor/mypyc/irbuild/ast_helpers.py +4 -1
  1121. jaclang/vendor/mypyc/irbuild/builder.py +46 -148
  1122. jaclang/vendor/mypyc/irbuild/callable_class.py +5 -19
  1123. jaclang/vendor/mypyc/irbuild/classdef.py +27 -83
  1124. jaclang/vendor/mypyc/irbuild/env_class.py +3 -9
  1125. jaclang/vendor/mypyc/irbuild/expression.py +42 -100
  1126. jaclang/vendor/mypyc/irbuild/for_helpers.py +56 -105
  1127. jaclang/vendor/mypyc/irbuild/format_str_tokenizer.py +1 -4
  1128. jaclang/vendor/mypyc/irbuild/function.py +40 -132
  1129. jaclang/vendor/mypyc/irbuild/generator.py +14 -49
  1130. jaclang/vendor/mypyc/irbuild/ll_builder.py +197 -426
  1131. jaclang/vendor/mypyc/irbuild/mapper.py +2 -13
  1132. jaclang/vendor/mypyc/irbuild/match.py +11 -36
  1133. jaclang/vendor/mypyc/irbuild/nonlocalcontrol.py +2 -7
  1134. jaclang/vendor/mypyc/irbuild/prebuildvisitor.py +1 -4
  1135. jaclang/vendor/mypyc/irbuild/prepare.py +25 -83
  1136. jaclang/vendor/mypyc/irbuild/specialize.py +22 -72
  1137. jaclang/vendor/mypyc/irbuild/statement.py +30 -96
  1138. jaclang/vendor/mypyc/irbuild/targets.py +1 -3
  1139. jaclang/vendor/mypyc/irbuild/util.py +2 -8
  1140. jaclang/vendor/mypyc/irbuild/vtable.py +1 -3
  1141. jaclang/vendor/mypyc/lib-rt/CPy.h +638 -0
  1142. jaclang/vendor/mypyc/lib-rt/bytes_ops.c +143 -0
  1143. jaclang/vendor/mypyc/lib-rt/dict_ops.c +446 -0
  1144. jaclang/vendor/mypyc/lib-rt/exc_ops.c +259 -0
  1145. jaclang/vendor/mypyc/lib-rt/float_ops.c +192 -0
  1146. jaclang/vendor/mypyc/lib-rt/generic_ops.c +64 -0
  1147. jaclang/vendor/mypyc/lib-rt/getargs.c +450 -0
  1148. jaclang/vendor/mypyc/lib-rt/getargsfast.c +569 -0
  1149. jaclang/vendor/mypyc/lib-rt/init.c +13 -0
  1150. jaclang/vendor/mypyc/lib-rt/int_ops.c +803 -0
  1151. jaclang/vendor/mypyc/lib-rt/list_ops.c +335 -0
  1152. jaclang/vendor/mypyc/lib-rt/misc_ops.c +942 -0
  1153. jaclang/vendor/mypyc/lib-rt/module_shim.tmpl +18 -0
  1154. jaclang/vendor/mypyc/lib-rt/mypyc_util.h +118 -0
  1155. jaclang/vendor/mypyc/lib-rt/pythoncapi_compat.h +497 -0
  1156. jaclang/vendor/mypyc/lib-rt/pythonsupport.h +533 -0
  1157. jaclang/vendor/mypyc/lib-rt/set_ops.c +17 -0
  1158. jaclang/vendor/mypyc/lib-rt/setup.py +70 -0
  1159. jaclang/vendor/mypyc/lib-rt/str_ops.c +241 -0
  1160. jaclang/vendor/mypyc/lib-rt/test_capi.cc +585 -0
  1161. jaclang/vendor/mypyc/lib-rt/tuple_ops.c +61 -0
  1162. jaclang/vendor/mypyc/lower/__init__.py +0 -0
  1163. jaclang/vendor/mypyc/lower/int_ops.py +113 -0
  1164. jaclang/vendor/mypyc/lower/list_ops.py +45 -0
  1165. jaclang/vendor/mypyc/lower/misc_ops.py +12 -0
  1166. jaclang/vendor/mypyc/lower/registry.py +26 -0
  1167. jaclang/vendor/mypyc/options.py +1 -3
  1168. jaclang/vendor/mypyc/primitives/dict_ops.py +1 -4
  1169. jaclang/vendor/mypyc/primitives/exc_ops.py +3 -12
  1170. jaclang/vendor/mypyc/primitives/int_ops.py +22 -32
  1171. jaclang/vendor/mypyc/primitives/list_ops.py +10 -0
  1172. jaclang/vendor/mypyc/primitives/misc_ops.py +28 -22
  1173. jaclang/vendor/mypyc/primitives/registry.py +56 -19
  1174. jaclang/vendor/mypyc/primitives/set_ops.py +1 -3
  1175. jaclang/vendor/mypyc/rt_subtype.py +1 -2
  1176. jaclang/vendor/mypyc/sametype.py +2 -5
  1177. jaclang/vendor/mypyc/subtype.py +3 -12
  1178. jaclang/vendor/mypyc/test/test_alwaysdefined.py +2 -6
  1179. jaclang/vendor/mypyc/test/test_analysis.py +8 -24
  1180. jaclang/vendor/mypyc/test/test_cheader.py +12 -4
  1181. jaclang/vendor/mypyc/test/test_emit.py +4 -14
  1182. jaclang/vendor/mypyc/test/test_emitclass.py +1 -8
  1183. jaclang/vendor/mypyc/test/test_emitfunc.py +30 -77
  1184. jaclang/vendor/mypyc/test/test_emitwrapper.py +1 -3
  1185. jaclang/vendor/mypyc/test/test_exceptions.py +4 -12
  1186. jaclang/vendor/mypyc/test/test_external.py +1 -5
  1187. jaclang/vendor/mypyc/test/test_irbuild.py +2 -6
  1188. jaclang/vendor/mypyc/test/test_ircheck.py +6 -17
  1189. jaclang/vendor/mypyc/test/test_literals.py +1 -4
  1190. jaclang/vendor/mypyc/test/test_lowering.py +56 -0
  1191. jaclang/vendor/mypyc/test/test_namegen.py +1 -4
  1192. jaclang/vendor/mypyc/test/test_optimizations.py +68 -0
  1193. jaclang/vendor/mypyc/test/test_refcount.py +3 -9
  1194. jaclang/vendor/mypyc/test/test_run.py +12 -38
  1195. jaclang/vendor/mypyc/test/test_serialization.py +1 -3
  1196. jaclang/vendor/mypyc/test/test_struct.py +3 -11
  1197. jaclang/vendor/mypyc/test/test_tuplename.py +4 -13
  1198. jaclang/vendor/mypyc/test/test_typeops.py +1 -4
  1199. jaclang/vendor/mypyc/test/testutil.py +2 -6
  1200. jaclang/vendor/mypyc/test-data/alwaysdefined.test +732 -0
  1201. jaclang/vendor/mypyc/test-data/analysis.test +470 -0
  1202. jaclang/vendor/mypyc/test-data/commandline.test +245 -0
  1203. jaclang/vendor/mypyc/test-data/driver/driver.py +48 -0
  1204. jaclang/vendor/mypyc/test-data/exceptions-freq.test +125 -0
  1205. jaclang/vendor/mypyc/test-data/exceptions.test +699 -0
  1206. jaclang/vendor/mypyc/test-data/fixtures/ir.py +373 -0
  1207. jaclang/vendor/mypyc/test-data/fixtures/testutil.py +103 -0
  1208. jaclang/vendor/mypyc/test-data/fixtures/typing-full.pyi +169 -0
  1209. jaclang/vendor/mypyc/test-data/irbuild-any.test +236 -0
  1210. jaclang/vendor/mypyc/test-data/irbuild-basic.test +3399 -0
  1211. jaclang/vendor/mypyc/test-data/irbuild-bool.test +424 -0
  1212. jaclang/vendor/mypyc/test-data/irbuild-bytes.test +181 -0
  1213. jaclang/vendor/mypyc/test-data/irbuild-classes.test +1302 -0
  1214. jaclang/vendor/mypyc/test-data/irbuild-constant-fold.test +480 -0
  1215. jaclang/vendor/mypyc/test-data/irbuild-dict.test +584 -0
  1216. jaclang/vendor/mypyc/test-data/irbuild-dunders.test +215 -0
  1217. jaclang/vendor/mypyc/test-data/irbuild-float.test +497 -0
  1218. jaclang/vendor/mypyc/test-data/irbuild-generics.test +150 -0
  1219. jaclang/vendor/mypyc/test-data/irbuild-glue-methods.test +437 -0
  1220. jaclang/vendor/mypyc/test-data/irbuild-i16.test +526 -0
  1221. jaclang/vendor/mypyc/test-data/irbuild-i32.test +598 -0
  1222. jaclang/vendor/mypyc/test-data/irbuild-i64.test +2144 -0
  1223. jaclang/vendor/mypyc/test-data/irbuild-int.test +194 -0
  1224. jaclang/vendor/mypyc/test-data/irbuild-isinstance.test +109 -0
  1225. jaclang/vendor/mypyc/test-data/irbuild-lists.test +513 -0
  1226. jaclang/vendor/mypyc/test-data/irbuild-match.test +1717 -0
  1227. jaclang/vendor/mypyc/test-data/irbuild-math.test +64 -0
  1228. jaclang/vendor/mypyc/test-data/irbuild-nested.test +807 -0
  1229. jaclang/vendor/mypyc/test-data/irbuild-optional.test +536 -0
  1230. jaclang/vendor/mypyc/test-data/irbuild-set.test +806 -0
  1231. jaclang/vendor/mypyc/test-data/irbuild-singledispatch.test +257 -0
  1232. jaclang/vendor/mypyc/test-data/irbuild-statements.test +1060 -0
  1233. jaclang/vendor/mypyc/test-data/irbuild-str.test +312 -0
  1234. jaclang/vendor/mypyc/test-data/irbuild-strip-asserts.test +12 -0
  1235. jaclang/vendor/mypyc/test-data/irbuild-try.test +523 -0
  1236. jaclang/vendor/mypyc/test-data/irbuild-tuple.test +386 -0
  1237. jaclang/vendor/mypyc/test-data/irbuild-u8.test +543 -0
  1238. jaclang/vendor/mypyc/test-data/irbuild-unreachable.test +241 -0
  1239. jaclang/vendor/mypyc/test-data/irbuild-vectorcall.test +153 -0
  1240. jaclang/vendor/mypyc/test-data/lowering-int.test +377 -0
  1241. jaclang/vendor/mypyc/test-data/lowering-list.test +33 -0
  1242. jaclang/vendor/mypyc/test-data/opt-copy-propagation.test +400 -0
  1243. jaclang/vendor/mypyc/test-data/opt-flag-elimination.test +296 -0
  1244. jaclang/vendor/mypyc/test-data/refcount.test +1482 -0
  1245. jaclang/vendor/mypyc/test-data/run-async.test +173 -0
  1246. jaclang/vendor/mypyc/test-data/run-attrs.test +318 -0
  1247. jaclang/vendor/mypyc/test-data/run-bench.test +196 -0
  1248. jaclang/vendor/mypyc/test-data/run-bools.test +229 -0
  1249. jaclang/vendor/mypyc/test-data/run-bytes.test +302 -0
  1250. jaclang/vendor/mypyc/test-data/run-classes.test +2505 -0
  1251. jaclang/vendor/mypyc/test-data/run-dicts.test +334 -0
  1252. jaclang/vendor/mypyc/test-data/run-dunders.test +945 -0
  1253. jaclang/vendor/mypyc/test-data/run-exceptions.test +448 -0
  1254. jaclang/vendor/mypyc/test-data/run-floats.test +516 -0
  1255. jaclang/vendor/mypyc/test-data/run-functions.test +1310 -0
  1256. jaclang/vendor/mypyc/test-data/run-generators.test +682 -0
  1257. jaclang/vendor/mypyc/test-data/run-i16.test +338 -0
  1258. jaclang/vendor/mypyc/test-data/run-i32.test +336 -0
  1259. jaclang/vendor/mypyc/test-data/run-i64.test +1519 -0
  1260. jaclang/vendor/mypyc/test-data/run-imports.test +265 -0
  1261. jaclang/vendor/mypyc/test-data/run-integers.test +540 -0
  1262. jaclang/vendor/mypyc/test-data/run-lists.test +411 -0
  1263. jaclang/vendor/mypyc/test-data/run-loops.test +485 -0
  1264. jaclang/vendor/mypyc/test-data/run-match.test +283 -0
  1265. jaclang/vendor/mypyc/test-data/run-math.test +106 -0
  1266. jaclang/vendor/mypyc/test-data/run-misc.test +1170 -0
  1267. jaclang/vendor/mypyc/test-data/run-multimodule.test +887 -0
  1268. jaclang/vendor/mypyc/test-data/run-mypy-sim.test +138 -0
  1269. jaclang/vendor/mypyc/test-data/run-primitives.test +375 -0
  1270. jaclang/vendor/mypyc/test-data/run-python37.test +159 -0
  1271. jaclang/vendor/mypyc/test-data/run-python38.test +88 -0
  1272. jaclang/vendor/mypyc/test-data/run-sets.test +150 -0
  1273. jaclang/vendor/mypyc/test-data/run-singledispatch.test +698 -0
  1274. jaclang/vendor/mypyc/test-data/run-strings.test +641 -0
  1275. jaclang/vendor/mypyc/test-data/run-traits.test +411 -0
  1276. jaclang/vendor/mypyc/test-data/run-tuples.test +258 -0
  1277. jaclang/vendor/mypyc/test-data/run-u8.test +303 -0
  1278. jaclang/vendor/mypyc/transform/copy_propagation.py +94 -0
  1279. jaclang/vendor/mypyc/transform/exceptions.py +1 -5
  1280. jaclang/vendor/mypyc/transform/flag_elimination.py +108 -0
  1281. jaclang/vendor/mypyc/transform/ir_transform.py +368 -0
  1282. jaclang/vendor/mypyc/transform/lower.py +33 -0
  1283. jaclang/vendor/mypyc/transform/refcount.py +7 -30
  1284. jaclang/vendor/mypyc/transform/uninit.py +4 -15
  1285. jaclang/vendor/pluggy/__init__.py +15 -11
  1286. jaclang/vendor/pluggy/_callers.py +34 -5
  1287. jaclang/vendor/pluggy/_hooks.py +35 -7
  1288. jaclang/vendor/pluggy/_manager.py +26 -3
  1289. jaclang/vendor/pluggy/_result.py +0 -15
  1290. jaclang/vendor/pluggy/_version.py +16 -0
  1291. jaclang/vendor/pluggy/_warnings.py +27 -0
  1292. jaclang/vendor/pluggy-1.5.0.dist-info/LICENSE +21 -0
  1293. jaclang/vendor/pluggy-1.5.0.dist-info/METADATA +155 -0
  1294. jaclang/vendor/pluggy-1.5.0.dist-info/RECORD +14 -0
  1295. jaclang/vendor/pluggy-1.5.0.dist-info/top_level.txt +1 -0
  1296. jaclang/vendor/pygls/__init__.py +25 -0
  1297. jaclang/vendor/pygls/capabilities.py +460 -0
  1298. jaclang/vendor/pygls/client.py +176 -0
  1299. jaclang/vendor/pygls/constants.py +26 -0
  1300. jaclang/vendor/pygls/exceptions.py +215 -0
  1301. jaclang/vendor/pygls/feature_manager.py +244 -0
  1302. jaclang/vendor/pygls/lsp/__init__.py +139 -0
  1303. jaclang/vendor/pygls/lsp/client.py +1961 -0
  1304. jaclang/vendor/pygls/progress.py +79 -0
  1305. jaclang/vendor/pygls/protocol/__init__.py +78 -0
  1306. jaclang/vendor/pygls/protocol/json_rpc.py +560 -0
  1307. jaclang/vendor/pygls/protocol/language_server.py +569 -0
  1308. jaclang/vendor/pygls/protocol/lsp_meta.py +51 -0
  1309. jaclang/vendor/pygls/py.typed +2 -0
  1310. jaclang/vendor/pygls/server.py +616 -0
  1311. jaclang/vendor/pygls/uris.py +184 -0
  1312. jaclang/vendor/pygls/workspace/__init__.py +97 -0
  1313. jaclang/vendor/pygls/workspace/position_codec.py +206 -0
  1314. jaclang/vendor/pygls/workspace/text_document.py +238 -0
  1315. jaclang/vendor/pygls/workspace/workspace.py +323 -0
  1316. jaclang/vendor/pygls-1.3.1.dist-info/LICENSE.txt +201 -0
  1317. jaclang/vendor/pygls-1.3.1.dist-info/METADATA +105 -0
  1318. jaclang/vendor/pygls-1.3.1.dist-info/RECORD +24 -0
  1319. jaclang/vendor/pygls-1.3.1.dist-info/WHEEL +4 -0
  1320. jaclang/vendor/typing_extensions-4.12.2.dist-info/LICENSE +279 -0
  1321. jaclang/vendor/typing_extensions-4.12.2.dist-info/METADATA +67 -0
  1322. jaclang/vendor/typing_extensions-4.12.2.dist-info/RECORD +5 -0
  1323. jaclang/vendor/typing_extensions-4.12.2.dist-info/WHEEL +4 -0
  1324. jaclang/vendor/typing_extensions.py +1209 -641
  1325. jaclang-0.7.0.dist-info/METADATA +98 -0
  1326. jaclang-0.7.0.dist-info/RECORD +1475 -0
  1327. jaclang-0.7.0.dist-info/WHEEL +4 -0
  1328. jaclang-0.7.0.dist-info/entry_points.txt +3 -0
  1329. jaclang/compiler/generated/jac_parser.py +0 -4069
  1330. jaclang/compiler/tests/test_workspace.py +0 -93
  1331. jaclang/compiler/workspace.py +0 -234
  1332. jaclang-0.6.1.dist-info/METADATA +0 -17
  1333. jaclang-0.6.1.dist-info/RECORD +0 -430
  1334. jaclang-0.6.1.dist-info/entry_points.txt +0 -2
  1335. jaclang-0.6.1.dist-info/top_level.txt +0 -1
  1336. /jaclang/{compiler/generated/__init__.py → vendor/attr/py.typed} +0 -0
  1337. {jaclang-0.6.1.dist-info → jaclang/vendor/pluggy-1.5.0.dist-info}/WHEEL +0 -0
@@ -0,0 +1,2505 @@
1
+ [case testEmptyClass]
2
+ class Empty: pass
3
+
4
+ def f(e: Empty) -> Empty:
5
+ return e
6
+ [file driver.py]
7
+ from native import Empty, f
8
+
9
+ print(isinstance(Empty, type))
10
+ print(Empty)
11
+ print(str(Empty())[:20])
12
+
13
+ e = Empty()
14
+ print(f(e) is e)
15
+ [out]
16
+ True
17
+ <class 'native.Empty'>
18
+ <native.Empty object
19
+ True
20
+
21
+ [case testClassWithFields]
22
+ class C:
23
+ x: int
24
+ y: int
25
+ z: 'D'
26
+ class D:
27
+ pass
28
+ [file driver.py]
29
+ from native import C
30
+ from testutil import assertRaises
31
+
32
+ c = C()
33
+ assert not hasattr(c, 'x')
34
+ assert not hasattr(c, 'y')
35
+ c.x = 1
36
+ c.y = 2
37
+ print(c.x)
38
+ print(c.y)
39
+ c.x = 10**30
40
+ print(c.x)
41
+ c.x = 10**30+1
42
+ print(c.x)
43
+ assert hasattr(c, 'x')
44
+ assert hasattr(c, 'y')
45
+ assert not hasattr(c, 'z')
46
+ with assertRaises(AttributeError, "'C' object attribute 'x' cannot be deleted"):
47
+ del c.x
48
+ assert hasattr(c, 'x')
49
+ assert hasattr(c, 'y')
50
+ with assertRaises(AttributeError, "'C' object attribute 'y' cannot be deleted"):
51
+ del c.y
52
+ assert hasattr(c, 'y')
53
+ c.x = 10**30+2
54
+ print(c.x)
55
+ assert hasattr(c, 'x')
56
+ [out]
57
+ 1
58
+ 2
59
+ 1000000000000000000000000000000
60
+ 1000000000000000000000000000001
61
+ 1000000000000000000000000000002
62
+
63
+ [case testClassWithDeletableAttributes]
64
+ from typing import Any, cast
65
+ from testutil import assertRaises
66
+
67
+ class C:
68
+ __deletable__ = ['x', 'y']
69
+ x: int
70
+ y: int
71
+ z: int
72
+
73
+ def test_delete() -> None:
74
+ c = C()
75
+ c.x = 1
76
+ c.y = 2
77
+ c.z = 3
78
+ del c.x
79
+ del c.y
80
+ assert c.z == 3
81
+ with assertRaises(AttributeError, "attribute 'x' of 'C' undefined"):
82
+ c.x
83
+ with assertRaises(AttributeError, "attribute 'y' of 'C' undefined"):
84
+ c.y
85
+
86
+ def test_delete_any() -> None:
87
+ c: Any = C()
88
+ c.x = 1
89
+ c.y = 2
90
+ c.z = 3
91
+ del c.x
92
+ del c.y
93
+ with assertRaises(AttributeError, "'C' object attribute 'z' cannot be deleted"):
94
+ del c.z
95
+ assert c.z == 3
96
+ with assertRaises(AttributeError):
97
+ c.x
98
+ with assertRaises(AttributeError):
99
+ c.y
100
+
101
+ class Base:
102
+ __deletable__ = ['a']
103
+ a: int
104
+ b: int
105
+
106
+ class Deriv(Base):
107
+ __deletable__ = ('c',)
108
+ c: str
109
+ d: str
110
+
111
+ def test_delete_with_inheritance() -> None:
112
+ d = Deriv()
113
+ d.a = 0
114
+ d.b = 1
115
+ d.c = 'X'
116
+ d.d = 'Y'
117
+ del d.a
118
+ with assertRaises(AttributeError):
119
+ d.a
120
+ del d.c
121
+ with assertRaises(AttributeError):
122
+ d.c
123
+ assert d.b == 1
124
+ assert d.d == 'Y'
125
+
126
+ def test_delete_with_inheritance_any() -> None:
127
+ d: Any = Deriv()
128
+ d.a = 0
129
+ d.b = 1
130
+ d.c = 'X'
131
+ d.d = 'Y'
132
+ del d.a
133
+ with assertRaises(AttributeError):
134
+ d.a
135
+ del d.c
136
+ with assertRaises(AttributeError):
137
+ d.c
138
+ with assertRaises(AttributeError):
139
+ del d.b
140
+ assert d.b == 1
141
+ with assertRaises(AttributeError):
142
+ del d.d
143
+ assert d.d == 'Y'
144
+
145
+ def decorator(cls):
146
+ return cls
147
+
148
+ @decorator
149
+ class NonExt:
150
+ x: int
151
+ y: int
152
+
153
+ # No effect in a non-native class
154
+ __deletable__ = ['x']
155
+
156
+ def test_non_ext() -> None:
157
+ n = NonExt()
158
+ n.x = 2
159
+ n.y = 3
160
+ del n.x
161
+ del n.y
162
+ with assertRaises(AttributeError):
163
+ n.x
164
+ with assertRaises(AttributeError):
165
+ n.y
166
+
167
+ def test_non_ext_any() -> None:
168
+ n: Any = NonExt()
169
+ n.x = 2
170
+ n.y = 3
171
+ del n.x
172
+ del n.y
173
+ with assertRaises(AttributeError):
174
+ n.x
175
+ with assertRaises(AttributeError):
176
+ n.y
177
+
178
+ [case testNonExtMisc]
179
+ from typing import Any, overload
180
+
181
+ def decorator(cls) -> Any:
182
+ return cls
183
+
184
+ @decorator
185
+ class C:
186
+ def __init__(self) -> None:
187
+ self.c = 3
188
+
189
+ def get_c(self) -> int:
190
+ return self.c
191
+
192
+ @decorator
193
+ class B(C):
194
+ def __init__(self) -> None:
195
+ super().__init__()
196
+ self.b = 2
197
+
198
+ def get_b(self) -> int:
199
+ return self.b
200
+
201
+ @decorator
202
+ class A(B):
203
+ def __init__(self) -> None:
204
+ super().__init__()
205
+ self.a = 1
206
+
207
+ @classmethod
208
+ def constant(cls) -> int:
209
+ return 4
210
+
211
+ def get_a(self) -> int:
212
+ return self.a
213
+
214
+ @decorator
215
+ class Overload:
216
+ @overload
217
+ def get(self, index: int) -> int: ...
218
+
219
+ @overload
220
+ def get(self, index: str) -> str: ...
221
+
222
+ def get(self, index: Any) -> Any:
223
+ return index
224
+
225
+ def get(c: Overload, s: str) -> str:
226
+ return c.get(s)
227
+
228
+ @decorator
229
+ class Var:
230
+ x = 'xy'
231
+
232
+ def get_class_var() -> str:
233
+ return Var.x
234
+
235
+ [file driver.py]
236
+ from native import A, Overload, get, get_class_var
237
+ a = A()
238
+ assert a.a == 1
239
+ assert a.b == 2
240
+ assert a.c == 3
241
+ assert a.get_a() == 1
242
+ assert a.get_b() == 2
243
+ assert a.get_c() == 3
244
+ assert A.constant() == 4
245
+
246
+ o = Overload()
247
+ assert get(o, "test") == "test"
248
+ assert o.get(20) == 20
249
+
250
+ assert get_class_var() == 'xy'
251
+
252
+ [case testEnum]
253
+ from enum import Enum
254
+
255
+ class TestEnum(Enum):
256
+ _order_ = "a b"
257
+ a : int = 1
258
+ b : int = 2
259
+
260
+ @classmethod
261
+ def test(cls) -> int:
262
+ return 3
263
+
264
+ assert TestEnum.test() == 3
265
+
266
+ import enum
267
+
268
+ class Pokemon(enum.Enum):
269
+ magikarp = 1
270
+ squirtle = 2
271
+ slowbro = 3
272
+
273
+ assert Pokemon.magikarp.value == 1
274
+ assert Pokemon.squirtle.name == 'squirtle'
275
+
276
+ [file other.py]
277
+ # Force a multi-module test to make sure we can compile multi-file with
278
+ # non-extension classes
279
+
280
+ [file driver.py]
281
+ import sys
282
+ # "_order_" isn't supported in 3.5
283
+ if sys.version_info[:2] > (3, 5):
284
+ from native import TestEnum
285
+ assert TestEnum.a.name == 'a'
286
+ assert TestEnum.a.value == 1
287
+ assert TestEnum.b.name == 'b'
288
+ assert TestEnum.b.value == 2
289
+
290
+ [case testGetAttribute]
291
+ class C:
292
+ x: int
293
+ y: int
294
+
295
+ def getx(c: C) -> int:
296
+ return c.x
297
+
298
+ def gety(c: C) -> int:
299
+ return c.y
300
+ [file driver.py]
301
+ from native import C, getx, gety
302
+ c = C()
303
+ c.x = 10**30
304
+ c.y = 10**30 + 1
305
+ print(getx(c))
306
+ print(gety(c))
307
+ [out]
308
+ 1000000000000000000000000000000
309
+ 1000000000000000000000000000001
310
+
311
+ [case testSetAttribute]
312
+ class C:
313
+ x: int
314
+ y: int
315
+
316
+ def setx(c: C, v: int) -> None:
317
+ c.x = v
318
+
319
+ def sety(c: C, v: int) -> None:
320
+ c.y = v
321
+ [file driver.py]
322
+ from native import C, setx, sety
323
+ c = C()
324
+ setx(c, 10**30)
325
+ sety(c, 10**30 + 1)
326
+ print(c.x)
327
+ print(c.y)
328
+ setx(c, 4)
329
+ sety(c, 5)
330
+ print(c.x, c.y)
331
+ setx(c, 10**30 + 2)
332
+ sety(c, 10**30 + 3)
333
+ print(c.x)
334
+ print(c.y)
335
+ [out]
336
+ 1000000000000000000000000000000
337
+ 1000000000000000000000000000001
338
+ 4 5
339
+ 1000000000000000000000000000002
340
+ 1000000000000000000000000000003
341
+
342
+ [case testAttributeTypes]
343
+ from typing import List, Tuple
344
+ class C:
345
+ a: List[int]
346
+ b: bool
347
+ c: C
348
+ d: object
349
+ e: int
350
+
351
+ def setattrs(o: C, a: List[int], b: bool, c: C) -> None:
352
+ o.a = a
353
+ o.b = b
354
+ o.c = c
355
+
356
+ def getattrs(o: C) -> Tuple[List[int], bool, C]:
357
+ return o.a, o.b, o.c
358
+ [file driver.py]
359
+ from native import C, setattrs, getattrs
360
+ from testutil import assertRaises
361
+
362
+ c1 = C()
363
+ c2 = C()
364
+ aa = [2]
365
+ setattrs(c1, aa, True, c2)
366
+ a, b, c = getattrs(c1)
367
+ assert a is aa
368
+ assert b is True
369
+ assert c is c2
370
+
371
+ o = object()
372
+ c1.d = o
373
+ assert c1.d is o
374
+
375
+ c3 = C()
376
+ with assertRaises(AttributeError, "attribute 'a' of 'C' undefined"):
377
+ c3.a
378
+ with assertRaises(AttributeError, "attribute 'b' of 'C' undefined"):
379
+ c3.b
380
+ with assertRaises(AttributeError, "attribute 'c' of 'C' undefined"):
381
+ c3.c
382
+ with assertRaises(AttributeError, "attribute 'd' of 'C' undefined"):
383
+ c3.d
384
+ with assertRaises(AttributeError, "attribute 'e' of 'C' undefined"):
385
+ c3.e
386
+
387
+ [case testInitMethodWithMissingNoneReturnAnnotation]
388
+ class C:
389
+ def __init__(self):
390
+ self.x = 42
391
+ [file driver.py]
392
+ from native import C
393
+ c = C()
394
+ assert c is not None
395
+ assert c.x == 42
396
+
397
+ [case testConstructClassWithDefaultConstructor]
398
+ class C:
399
+ a: int
400
+ b: int
401
+
402
+ def f() -> C:
403
+ c = C()
404
+ c.a = 13
405
+ return c
406
+ [file driver.py]
407
+ from native import f, C
408
+ c = f()
409
+ assert c.a == 13
410
+ assert type(c) == C
411
+ assert not hasattr(c, 'b')
412
+
413
+ [case testCastUserClass]
414
+ from typing import List
415
+
416
+ class C:
417
+ x: int
418
+
419
+ def f(a: List[C]) -> C:
420
+ return a[0]
421
+ [file driver.py]
422
+ from native import f, C
423
+ c = C()
424
+ assert f([c]) is c
425
+
426
+ [case testClass1]
427
+ class A:
428
+ def __init__(self, x: int) -> None:
429
+ self.x = x
430
+ def foo(self) -> int:
431
+ return self.x+1
432
+ def foo() -> int:
433
+ a = A(20)
434
+ return a.foo()
435
+ [file driver.py]
436
+ from native import A, foo
437
+ a = A(10)
438
+ assert a.foo() == 11
439
+ assert foo() == 21
440
+
441
+ [case testGenericClass]
442
+ from typing import TypeVar, Generic, Sequence
443
+ T = TypeVar('T')
444
+ class C(Generic[T]):
445
+ x: T
446
+ def __init__(self, x: T) -> None:
447
+ self.x = x
448
+ def get(self) -> T:
449
+ return self.x
450
+ def set(self, y: T) -> None:
451
+ self.x = y
452
+
453
+ # Test subclassing generic classes both with and without a generic param
454
+ class A(Sequence[int]):
455
+ pass
456
+ class B(Sequence[T]):
457
+ pass
458
+
459
+ def f(c: C[int]) -> int:
460
+ y = c.get()
461
+ d = C[int](2)
462
+ c.set(c.get() + 1 + d.get())
463
+ c.x = c.x + 2
464
+ return c.x
465
+
466
+ [file driver.py]
467
+ from native import C, f
468
+ c = C(6)
469
+ assert f(c) == 11
470
+ c.x = 'x'
471
+ assert c.x == 'x'
472
+ c.set([1])
473
+ assert c.x == [1]
474
+ assert c.get() == [1]
475
+
476
+ [case testSubclass1]
477
+ from typing import Tuple
478
+
479
+ class A:
480
+ def __init__(self) -> None:
481
+ self.x = 10
482
+ def hi(self, suffix: str) -> str:
483
+ return str(self.x) + suffix
484
+ class B(A):
485
+ def __init__(self) -> None:
486
+ self.x = 20
487
+ self.y = 'world'
488
+ def hi(self, suffix: str) -> str:
489
+ return 'hello ' + str(self.y) + suffix
490
+
491
+ def use_a(x: A) -> Tuple[int, str]:
492
+ return (x.x, x.hi(''))
493
+ def use_b(x: B) -> str:
494
+ return x.hi('')
495
+
496
+ [file driver.py]
497
+ from native import A, B, use_a, use_b
498
+ a = A()
499
+ b = B()
500
+ assert use_a(a) == (10, '10')
501
+ assert use_a(b) == (20, 'hello world')
502
+ assert a.x == 10
503
+ assert b.x == 20
504
+ assert b.y == 'world'
505
+ assert a.hi('!') == '10!'
506
+ assert b.hi('!') == 'hello world!'
507
+ assert use_b(b) == 'hello world'
508
+
509
+ [case testSubclassSpecialize1]
510
+ class A:
511
+ def foo(self, x: int) -> object:
512
+ print('A')
513
+ return str(x)
514
+ def bar(self, x: int) -> None:
515
+ print(x + 1)
516
+ class B(A):
517
+ def foo(self, x: object) -> int:
518
+ print('B')
519
+ return id(x)
520
+ def bar(self, x: object) -> None:
521
+ print(x)
522
+
523
+ def use_a(x: A, y: int) -> object:
524
+ x.bar(10)
525
+ return x.foo(y)
526
+
527
+ def use_b(x: B, y: object) -> int:
528
+ return x.foo(y)
529
+
530
+ [file driver.py]
531
+ from native import A, B, use_a, use_b
532
+ a = A()
533
+ b = B()
534
+ o = object()
535
+ i = 10
536
+ assert a.foo(10) == '10'
537
+ assert b.foo(o) == id(o)
538
+ assert use_a(a, 10) == '10'
539
+ assert use_b(b, o) == id(o)
540
+ assert use_a(b, i) == id(i)
541
+ [out]
542
+ A
543
+ B
544
+ 11
545
+ A
546
+ B
547
+ 10
548
+ B
549
+
550
+ [case testSubclassSpecialize2]
551
+ class A:
552
+ def foo(self, x: int) -> object:
553
+ print('A')
554
+ return str(x)
555
+ class B(A):
556
+ def foo(self, x: object) -> object:
557
+ print('B')
558
+ return x
559
+ class C(B):
560
+ def foo(self, x: object) -> int:
561
+ print('C')
562
+ return id(x)
563
+
564
+ def use_a(x: A, y: int) -> object:
565
+ return x.foo(y)
566
+
567
+ def use_b(x: B, y: object) -> object:
568
+ return x.foo(y)
569
+
570
+ def use_c(x: C, y: object) -> int:
571
+ return x.foo(y)
572
+
573
+ [file driver.py]
574
+ from native import A, B, C, use_a, use_b, use_c
575
+ a = A()
576
+ b = B()
577
+ c = C()
578
+ o = object()
579
+ i = 10
580
+ assert a.foo(10) == '10'
581
+ assert b.foo(o) == o
582
+ assert c.foo(o) == id(o)
583
+ assert use_a(a, 10) == '10'
584
+ assert use_a(b, i) is i
585
+ assert use_a(c, i) == id(i)
586
+ assert use_b(b, o) == o
587
+ assert use_b(c, o) == id(o)
588
+ assert use_c(c, o) == id(o)
589
+ [out]
590
+ A
591
+ B
592
+ C
593
+ A
594
+ B
595
+ C
596
+ B
597
+ C
598
+ C
599
+
600
+ [case testIsInstance]
601
+ from typing import Optional
602
+ class X: pass
603
+ class A(X): pass
604
+ class B(A): pass
605
+
606
+ def isa(x: object) -> bool:
607
+ return isinstance(x, A)
608
+ def isint(x: object) -> bool:
609
+ return isinstance(x, int)
610
+ def isstr(x: object) -> bool:
611
+ return isinstance(x, str)
612
+ def islist(x: object) -> bool:
613
+ return isinstance(x, list)
614
+ def ist(x: object, t: object) -> bool: # TODO: Second argument should be 'type'
615
+ return isinstance(x, t)
616
+ def pointless(x: Optional[X]) -> str:
617
+ if isinstance(x, A):
618
+ return str(x)
619
+ return ''
620
+ [file driver.py]
621
+ from native import X, A, B, isa, isint, isstr, islist, ist
622
+ assert isa(1) == False
623
+ assert isa(A()) == True
624
+ assert isa(B()) == True
625
+ assert isa(X()) == False
626
+
627
+ assert isint(1) == True
628
+ assert isint('') == False
629
+ assert isint(A()) == False
630
+
631
+ assert isstr(1) == False
632
+ assert isstr('') == True
633
+
634
+ assert islist(1) == False
635
+ assert islist([]) == True
636
+
637
+ assert ist(1, int) == True
638
+ assert ist(1, str) == False
639
+ try:
640
+ ist(1, 2)
641
+ except TypeError:
642
+ pass
643
+ else:
644
+ assert False
645
+
646
+ [case testSubclassUninitAttr]
647
+ class X:
648
+ x: int
649
+ class A(X):
650
+ pass
651
+ [file driver.py]
652
+ import traceback
653
+ from native import A
654
+ try:
655
+ A().x
656
+ except AttributeError:
657
+ traceback.print_exc()
658
+ [out]
659
+ Traceback (most recent call last):
660
+ File "driver.py", line 4, in <module>
661
+ A().x
662
+ AttributeError: attribute 'x' of 'X' undefined
663
+
664
+ [case testClassMethods]
665
+ from typing import ClassVar, Any
666
+ from typing_extensions import final
667
+ from mypy_extensions import mypyc_attr
668
+
669
+ from interp import make_interpreted_subclass
670
+
671
+ class C:
672
+ lurr: ClassVar[int] = 9
673
+ @staticmethod
674
+ def foo(x: int) -> int:
675
+ return 10 + x
676
+ @classmethod
677
+ def bar(cls, x: int) -> int:
678
+ return cls.lurr + x
679
+ @staticmethod
680
+ def baz(x: int, y: int = 10) -> int:
681
+ return y - x
682
+ @classmethod
683
+ def quux(cls, x: int, y: int = 10) -> int:
684
+ return y - x
685
+ @classmethod
686
+ def call_other(cls, x: int) -> int:
687
+ return cls.quux(x, 3)
688
+
689
+ class D(C):
690
+ def f(self) -> int:
691
+ return super().foo(1) + super().bar(2) + super().baz(10) + super().quux(10)
692
+
693
+ def ctest1() -> int:
694
+ return C.foo(1) + C.bar(2) + C.baz(10) + C.quux(10) + C.quux(y=10, x=9)
695
+
696
+ def ctest2() -> int:
697
+ c = C()
698
+ return c.foo(1) + c.bar(2) + c.baz(10)
699
+
700
+ CAny: Any = C
701
+
702
+ def test_classmethod_using_any() -> None:
703
+ assert CAny.foo(10) == 20
704
+ assert CAny.bar(10) == 19
705
+
706
+ def test_classmethod_on_instance() -> None:
707
+ c = C()
708
+ assert c.foo(10) == 20
709
+ assert c.bar(10) == 19
710
+ assert c.call_other(1) == 2
711
+
712
+ def test_classmethod_misc() -> None:
713
+ assert ctest1() == 23
714
+ assert ctest2() == 22
715
+ assert C.call_other(2) == 1
716
+
717
+ def test_classmethod_using_super() -> None:
718
+ d = D()
719
+ assert d.f() == 22
720
+
721
+ @final
722
+ class F1:
723
+ @classmethod
724
+ def f(cls, x: int) -> int:
725
+ return cls.g(x)
726
+
727
+ @classmethod
728
+ def g(cls, x: int) -> int:
729
+ return x + 1
730
+
731
+ class F2: # Implicitly final (no subclasses)
732
+ @classmethod
733
+ def f(cls, x: int) -> int:
734
+ return cls.g(x)
735
+
736
+ @classmethod
737
+ def g(cls, x: int) -> int:
738
+ return x + 1
739
+
740
+ def test_classmethod_of_final_class() -> None:
741
+ assert F1.f(5) == 6
742
+ assert F2.f(7) == 8
743
+
744
+ @mypyc_attr(allow_interpreted_subclasses=True)
745
+ class CI:
746
+ @classmethod
747
+ def f(cls, x: int) -> int:
748
+ return cls.g(x)
749
+
750
+ @classmethod
751
+ def g(cls, x: int) -> int:
752
+ return x + 1
753
+
754
+ def test_classmethod_with_allow_interpreted() -> None:
755
+ assert CI.f(4) == 5
756
+ sub = make_interpreted_subclass(CI)
757
+ assert sub.f(4) == 7
758
+
759
+ [file interp.py]
760
+ def make_interpreted_subclass(base):
761
+ class Sub(base):
762
+ @classmethod
763
+ def g(cls, x: int) -> int:
764
+ return x + 3
765
+ return Sub
766
+
767
+ [case testSuper]
768
+ from mypy_extensions import trait
769
+ from typing import List
770
+
771
+ class A:
772
+ def __init__(self, x: int) -> None:
773
+ self.x = x
774
+
775
+ def foo(self, x: int) -> int:
776
+ return x
777
+
778
+ class B(A):
779
+ def __init__(self, x: int, y: int) -> None:
780
+ super().__init__(x)
781
+ self.y = y
782
+
783
+ def foo(self, x: int) -> int:
784
+ return super().foo(x+1)
785
+
786
+ class C(B):
787
+ def __init__(self, x: int, y: int) -> None:
788
+ super(C, self).__init__(x, y + 1)
789
+
790
+ def foo(self, x: int) -> int:
791
+ # should go to A, not B
792
+ return super(B, self).foo(x+1)
793
+
794
+ class X:
795
+ def __init__(self, x: int) -> None:
796
+ self.x = x
797
+ class Y(X):
798
+ pass
799
+ class Z(Y):
800
+ def __init__(self, x: int, y: int) -> None:
801
+ super().__init__(x)
802
+ self.y = y
803
+
804
+ @trait
805
+ class T:
806
+ def v_int(self, x: int) -> None: pass
807
+ def v_list(self, x: List[int]) -> None:
808
+ if x:
809
+ self.v_int(x[0])
810
+ self.v_list(x[1:])
811
+
812
+ class PrintList(T):
813
+ def v_int(self, x: int) -> None:
814
+ print(x)
815
+ def v_list(self, x: List[int]) -> None:
816
+ print('yo!')
817
+ super().v_list(x)
818
+
819
+ [file driver.py]
820
+ import traceback
821
+ from native import *
822
+ b = B(10, 20)
823
+ assert b.x == 10 and b.y == 20
824
+ c = C(10, 20)
825
+ assert c.x == 10 and c.y == 21
826
+ z = Z(10, 20)
827
+ assert z.x == 10 and z.y == 20
828
+
829
+ assert c.foo(10) == 11
830
+
831
+ PrintList().v_list([1,2,3])
832
+ [out]
833
+ yo!
834
+ 1
835
+ yo!
836
+ 2
837
+ yo!
838
+ 3
839
+ yo!
840
+
841
+ [case testSubclassException]
842
+ class Failure(Exception):
843
+ def __init__(self, x: int) -> None:
844
+ self.x = x
845
+
846
+ def foo() -> None:
847
+ raise Failure(10)
848
+
849
+ def heyo() -> int:
850
+ try:
851
+ foo()
852
+ except Failure as e:
853
+ return e.x
854
+ return -1
855
+
856
+ [file driver.py]
857
+ from native import foo, heyo, Failure
858
+ try:
859
+ foo()
860
+ except Failure as e:
861
+ assert str(e) == '10'
862
+ assert e.x == 10
863
+ heyo()
864
+
865
+ [case testSubclassDict]
866
+ from typing import Dict
867
+ class WelpDict(Dict[str, int]):
868
+ def __init__(self) -> None:
869
+ self.emarhavil = 3
870
+ def foo(self) -> int:
871
+ return self.emarhavil
872
+
873
+ def welp() -> int:
874
+ x = WelpDict()
875
+ x['a'] = 10
876
+ x['b'] = 15
877
+ x.emarhavil = 5
878
+ return x['a'] + x['b'] + x.emarhavil + x.foo()
879
+
880
+ [file driver.py]
881
+ from native import welp
882
+ assert welp() == 35
883
+
884
+ [case testSubclassPy]
885
+ from b import B, V
886
+ class A(B):
887
+ def __init__(self, x: int, y: int) -> None:
888
+ super().__init__(y)
889
+ self.x = x
890
+
891
+ def foo(self, x: int) -> int:
892
+ print("hi", x)
893
+ return x+1
894
+
895
+ class C(V[int]):
896
+ def f(self) -> int: return 10
897
+
898
+ assert isinstance(C(), V)
899
+
900
+ def f(x: A) -> None:
901
+ print(x.x)
902
+ print(x.y)
903
+ print(x.foo(20))
904
+
905
+ [file b.py]
906
+ from typing import Generic, TypeVar
907
+ T = TypeVar('T')
908
+
909
+ class B:
910
+ def __init__(self, y: int) -> None:
911
+ self.y = y
912
+ def foo(self, x: int) -> int:
913
+ print("parent!")
914
+ return x + self.y
915
+ def bar(self) -> None:
916
+ print("hello!", self.y)
917
+
918
+ class V(Generic[T]):
919
+ def f(self) -> T:
920
+ raise Exception('unimplemented')
921
+ [file driver.py]
922
+ import native
923
+ a = native.A(10, 20)
924
+ a.foo(10)
925
+ a.bar()
926
+ native.f(a)
927
+ [out]
928
+ hi 10
929
+ hello! 20
930
+ 10
931
+ 20
932
+ hi 20
933
+ 21
934
+
935
+ [case testDisallowSubclassFromPy]
936
+ # We'll want to allow this at some point but right now we need to
937
+ # disallow it because it doesn't work.
938
+ class A:
939
+ pass
940
+ [file b.py]
941
+ from native import A
942
+
943
+ # It would be better if we disallowed it at class decl time but it is
944
+ # really easy to do in __new__
945
+
946
+ class B(A):
947
+ pass
948
+
949
+ [file driver.py]
950
+ from b import B
951
+ try:
952
+ B()
953
+ except TypeError:
954
+ pass
955
+ else:
956
+ assert False, "instantiating was supposed to fail"
957
+
958
+ [case testClassVariable]
959
+ MYPY = False
960
+ if MYPY:
961
+ from typing import ClassVar
962
+ class A:
963
+ x = 10 # type: ClassVar[int]
964
+
965
+ def g(x: int) -> None:
966
+ A.x = 10
967
+ def f() -> int:
968
+ return A.x
969
+ [file driver.py]
970
+ from native import A, f
971
+ assert f() == 10
972
+ A.x = 200
973
+ assert f() == 200
974
+
975
+ [case testDefaultVars]
976
+ from typing import Optional
977
+ class A:
978
+ x = 10
979
+ w: object = 10
980
+ def lol(self) -> None:
981
+ self.x = 100
982
+
983
+ LOL = 'lol'
984
+ class B(A):
985
+ y = LOL
986
+ z = None # type: Optional[str]
987
+ b = True
988
+ bogus = None # type: int
989
+
990
+ def g() -> None:
991
+ a = A()
992
+ assert a.x == 10
993
+ a.x = 20
994
+ assert a.x == 20
995
+ b = B()
996
+ assert b.x == 10
997
+ b.x = 20
998
+ assert b.x == 20
999
+ assert b.y == 'lol'
1000
+ b.y = 'rofl'
1001
+ assert b.y == 'rofl'
1002
+ assert b.z is None
1003
+ [file driver.py]
1004
+ from native import *
1005
+ g()
1006
+
1007
+ a = A()
1008
+ assert a.x == 10
1009
+ a.x = 20
1010
+ assert a.x == 20
1011
+ b = B()
1012
+ assert b.x == 10
1013
+ b.x = 20
1014
+ assert b.x == 20
1015
+ assert b.y == 'lol'
1016
+ b.y = 'rofl'
1017
+ assert b.y == 'rofl'
1018
+ assert b.z is None
1019
+ # N.B: this doesn't match cpython
1020
+ assert not hasattr(b, 'bogus')
1021
+
1022
+ [case testProtocol]
1023
+ from typing_extensions import Protocol
1024
+
1025
+ class Proto(Protocol):
1026
+ def foo(self, x: int) -> None:
1027
+ pass
1028
+
1029
+ def bar(self, x: int) -> None:
1030
+ pass
1031
+
1032
+ class A:
1033
+ def foo(self, x: int) -> None:
1034
+ print("A:", x)
1035
+
1036
+ def bar(self, *args: int, **kwargs: int) -> None:
1037
+ print("A:", args, kwargs)
1038
+
1039
+ class B(A, Proto):
1040
+ def foo(self, x: int) -> None:
1041
+ print("B:", x)
1042
+
1043
+ def bar(self, *args: int, **kwargs: int) -> None:
1044
+ print("B:", args, kwargs)
1045
+
1046
+ def f(x: Proto) -> None:
1047
+ x.foo(20)
1048
+ x.bar(x=20)
1049
+
1050
+ [file driver.py]
1051
+ from native import A, B, f
1052
+
1053
+ f(A())
1054
+ f(B())
1055
+
1056
+ # ... this exploits a bug in glue methods to distinguish whether we
1057
+ # are making a direct call or a pycall...
1058
+ [out]
1059
+ A: 20
1060
+ A: () {'x': 20}
1061
+ B: 20
1062
+ B: (20,) {}
1063
+
1064
+ [case testMethodOverrideDefault1]
1065
+ class A:
1066
+ def foo(self, x: int) -> None:
1067
+ pass
1068
+ class B(A):
1069
+ def foo(self, x: int, y: int = 10) -> None:
1070
+ print(x, y)
1071
+
1072
+ def a(x: A) -> None:
1073
+ x.foo(1)
1074
+ def b(x: B) -> None:
1075
+ x.foo(2)
1076
+ x.foo(2, 3)
1077
+
1078
+ [file driver.py]
1079
+ from native import B, a, b
1080
+ a(B())
1081
+ b(B())
1082
+ [out]
1083
+ 1 10
1084
+ 2 10
1085
+ 2 3
1086
+
1087
+ [case testMethodOverrideDefault2]
1088
+ class A:
1089
+ def foo(self, *, x: int = -1) -> None:
1090
+ pass
1091
+ def bar(self, *, x: int = -1, y: int = -1) -> None:
1092
+ pass
1093
+ def baz(self, x: int = -1) -> None:
1094
+ pass
1095
+ class B(A):
1096
+ def foo(self, *, y: int = 0, x: int = 0) -> None:
1097
+ print(x, y)
1098
+ def bar(self, *, y: int = 0, x: int = 0) -> None:
1099
+ print(x, y)
1100
+ def baz(self, x: int = 0, *, y: int = 0) -> None:
1101
+ print(x, y)
1102
+
1103
+ def a(x: A) -> None:
1104
+ x.foo(x=1)
1105
+ x.bar(x=1, y=2)
1106
+ x.bar(x=2, y=1)
1107
+ x.baz()
1108
+ x.baz(1)
1109
+ x.baz(x=2)
1110
+
1111
+ [file driver.py]
1112
+ from native import B, a
1113
+ a(B())
1114
+ [out]
1115
+ 1 0
1116
+ 1 2
1117
+ 2 1
1118
+ 0 0
1119
+ 1 0
1120
+ 2 0
1121
+
1122
+ [case testMethodOverrideDefault3]
1123
+ class A:
1124
+ @classmethod
1125
+ def foo(cls, *, x: int = 0) -> None:
1126
+ pass
1127
+ @staticmethod
1128
+ def bar(*, x: int = 0) -> None:
1129
+ pass
1130
+ @staticmethod
1131
+ def baz() -> object:
1132
+ pass
1133
+ class B(A):
1134
+ @classmethod
1135
+ def foo(cls, *, y: int = 0, x: int = 0) -> None:
1136
+ print(x, y)
1137
+ print(cls.__name__) # type: ignore
1138
+ @staticmethod
1139
+ def bar(*, y: int = 0, x: int = 0) -> None:
1140
+ print(x, y)
1141
+ @staticmethod
1142
+ def baz() -> int:
1143
+ return 10
1144
+
1145
+ # This is just to make sure that this stuff works even when the
1146
+ # methods might be overridden.
1147
+ class C(B):
1148
+ @classmethod
1149
+ def foo(cls, *, y: int = 0, x: int = 0) -> None:
1150
+ pass
1151
+ @staticmethod
1152
+ def bar(*, y: int = 0, x: int = 0) -> None:
1153
+ pass
1154
+ @staticmethod
1155
+ def baz() -> int:
1156
+ return 10
1157
+
1158
+ def a(x: A) -> None:
1159
+ x.foo(x=1)
1160
+ x.bar(x=1)
1161
+ print(x.baz())
1162
+
1163
+ [file driver.py]
1164
+ from native import B, a
1165
+ a(B())
1166
+ [out]
1167
+ 1 0
1168
+ B
1169
+ 1 0
1170
+ 10
1171
+
1172
+ [case testMethodOverrideDefault4]
1173
+ class Foo:
1174
+ def f(self, x: int=20, *, z: int=10) -> None:
1175
+ pass
1176
+
1177
+ class Bar(Foo):
1178
+ def f(self, *args: int, **kwargs: int) -> None:
1179
+ print("stuff", args, kwargs)
1180
+
1181
+ z: Foo = Bar()
1182
+ z.f(1, z=50)
1183
+ z.f()
1184
+
1185
+ [out]
1186
+ stuff (1,) {'z': 50}
1187
+ stuff () {}
1188
+
1189
+ [case testMethodOverrideDefault5]
1190
+ from testutil import make_python_function
1191
+ from mypy_extensions import mypyc_attr
1192
+ from typing import TypeVar, Any
1193
+
1194
+ @mypyc_attr(allow_interpreted_subclasses=True)
1195
+ class Foo:
1196
+ def f(self, x: int=20, *, z: int=10) -> None:
1197
+ print("Foo", x, z)
1198
+
1199
+ @make_python_function
1200
+ def baz_f(self: Any, *args: int, **kwargs: int) -> None:
1201
+ print("Baz", args, kwargs)
1202
+
1203
+ # Make an "interpreted" subtype of Foo
1204
+ type2: Any = type
1205
+ Bar = type2('Bar', (Foo,), {})
1206
+ Baz = type2('Baz', (Foo,), {'f': baz_f})
1207
+
1208
+ y: Foo = Bar()
1209
+ y.f(1, z=2)
1210
+ y.f()
1211
+
1212
+ z: Foo = Baz()
1213
+ z.f(1, z=2)
1214
+ z.f()
1215
+
1216
+ [out]
1217
+ Foo 1 2
1218
+ Foo 20 10
1219
+ Baz (1,) {'z': 2}
1220
+ Baz () {}
1221
+
1222
+ [case testMethodOverrideDefault6]
1223
+ from typing import Optional
1224
+
1225
+ class Foo:
1226
+ def f(self, x: int=20) -> None:
1227
+ pass
1228
+
1229
+ class Bar(Foo):
1230
+ def f(self, x: Optional[int]=None) -> None:
1231
+ print(x)
1232
+
1233
+ z: Foo = Bar()
1234
+ z.f(1)
1235
+ z.f()
1236
+
1237
+ [out]
1238
+ 1
1239
+ None
1240
+
1241
+ [case testMethodOverrideDefault7]
1242
+ from typing import TypeVar, Any
1243
+
1244
+ class Foo:
1245
+ def f(self, x: int, *args: int, **kwargs: int) -> None:
1246
+ print("Foo", x, args, kwargs)
1247
+
1248
+ class Bar(Foo):
1249
+ def f(self, *args: int, **kwargs: int) -> None:
1250
+ print("Bar", args, kwargs)
1251
+
1252
+ z: Foo = Bar()
1253
+ z.f(1, z=2)
1254
+ z.f(1, 2, 3)
1255
+ # z.f(x=5) # Not tested because we (knowingly) do the wrong thing and pass it as positional
1256
+
1257
+ [out]
1258
+ Bar (1,) {'z': 2}
1259
+ Bar (1, 2, 3) {}
1260
+ --Bar () {'x': 5}
1261
+
1262
+ [case testMethodOverrideDefault8]
1263
+ from typing import TypeVar, Any
1264
+
1265
+ class Foo:
1266
+ def f(self, *args: int, **kwargs: int) -> None:
1267
+ print("Foo", args, kwargs)
1268
+
1269
+ class Bar(Foo):
1270
+ def f(self, x: int = 10, *args: int, **kwargs: int) -> None:
1271
+ print("Bar", x, args, kwargs)
1272
+
1273
+ z: Foo = Bar()
1274
+ z.f(1, z=2)
1275
+ z.f(1, 2, 3)
1276
+ z.f()
1277
+
1278
+ [out]
1279
+ Bar 1 () {'z': 2}
1280
+ Bar 1 (2, 3) {}
1281
+ Bar 10 () {}
1282
+
1283
+ [case testMethodOverrideDefault9]
1284
+ from testutil import make_python_function
1285
+ from mypy_extensions import mypyc_attr
1286
+ from typing import TypeVar, Any
1287
+
1288
+ @mypyc_attr(allow_interpreted_subclasses=True)
1289
+ class Foo:
1290
+ def f(self, x: int=20, y: int=40) -> None:
1291
+ print("Foo", x, y)
1292
+
1293
+ # This sort of argument renaming is dodgy and not really sound but we
1294
+ # shouldn't break it when they aren't actually used by name...
1295
+ # (They *ought* to be positional only!)
1296
+ @make_python_function
1297
+ def baz_f(self, a: int=30, y: int=50) -> None:
1298
+ print("Baz", a, y)
1299
+
1300
+ # Make an "interpreted" subtype of Foo
1301
+ type2: Any = type
1302
+ Baz = type2('Baz', (Foo,), {'f': baz_f})
1303
+
1304
+ z: Foo = Baz()
1305
+ z.f()
1306
+ z.f(y=1)
1307
+ z.f(1, 2)
1308
+ # Not tested because we don't (and probably won't) match cpython here
1309
+ # from testutil import assertRaises
1310
+ # with assertRaises(TypeError):
1311
+ # z.f(x=7)
1312
+
1313
+ [out]
1314
+ Baz 30 50
1315
+ Baz 30 1
1316
+ Baz 1 2
1317
+
1318
+ [case testOverride]
1319
+ class A:
1320
+ def f(self) -> int:
1321
+ return 0
1322
+ def g(self) -> int:
1323
+ return 1
1324
+
1325
+ class B(A):
1326
+ def g(self) -> int:
1327
+ return 2
1328
+
1329
+ class C(B):
1330
+ def f(self) -> int:
1331
+ return 3
1332
+
1333
+ def test() -> None:
1334
+ ba: A = B()
1335
+ ca: A = C()
1336
+ assert ba.f() == 0
1337
+ assert ba.g() == 2
1338
+ assert ca.f() == 3
1339
+ assert ca.g() == 2
1340
+ cc = C()
1341
+ assert cc.f() == 3
1342
+ assert cc.g() == 2
1343
+ print('ok')
1344
+ [file driver.py]
1345
+ import native
1346
+ native.test()
1347
+ [out]
1348
+ ok
1349
+
1350
+ [case testNoMetaclass]
1351
+ from foo import Base
1352
+
1353
+ class Nothing(Base): # type: ignore
1354
+ pass
1355
+
1356
+ [file foo.py]
1357
+ from typing import Any
1358
+ class Meta(type):
1359
+ pass
1360
+
1361
+ class _Base(metaclass=Meta):
1362
+ pass
1363
+ Base = _Base # type: Any
1364
+
1365
+ [file driver.py]
1366
+ try:
1367
+ import native
1368
+ except TypeError as e:
1369
+ assert(str(e) == "mypyc classes can't have a metaclass")
1370
+
1371
+ [case testMetaclass]
1372
+ from meta import Meta
1373
+
1374
+ class Nothing(metaclass=Meta):
1375
+ pass
1376
+
1377
+ def ident(x): return x
1378
+
1379
+ @ident
1380
+ class Test:
1381
+ pass
1382
+
1383
+ [file meta.py]
1384
+ class Meta(type):
1385
+ def __new__(mcs, name, bases, dct):
1386
+ dct['X'] = 10
1387
+ return super().__new__(mcs, name, bases, dct)
1388
+
1389
+
1390
+ [file driver.py]
1391
+ from native import Nothing
1392
+ assert Nothing.X == 10
1393
+
1394
+ [case testPickling]
1395
+ from mypy_extensions import trait, mypyc_attr
1396
+ from typing import Any, TypeVar, Generic
1397
+
1398
+ def dec(x: Any) -> Any:
1399
+ return x
1400
+
1401
+ @mypyc_attr(allow_interpreted_subclasses=True)
1402
+ class A:
1403
+ x: int
1404
+ y: str
1405
+
1406
+ @mypyc_attr(allow_interpreted_subclasses=True)
1407
+ class B(A):
1408
+ z: bool
1409
+
1410
+ def __init__(self, x: int, y: str, z: bool) -> None:
1411
+ self.x = x
1412
+ self.y = y
1413
+ self.z = z
1414
+
1415
+ @trait
1416
+ class T:
1417
+ a: str
1418
+
1419
+ class C(B, T):
1420
+ w: object
1421
+
1422
+ # property shouldn't go in
1423
+ @property
1424
+ def foo(self) -> int:
1425
+ return 0
1426
+
1427
+ @dec
1428
+ class D:
1429
+ x: int
1430
+
1431
+ class E(D):
1432
+ y: int
1433
+
1434
+
1435
+ U = TypeVar('U')
1436
+
1437
+ class F(Generic[U]):
1438
+ y: int
1439
+
1440
+ class G(F[int]):
1441
+ pass
1442
+
1443
+ [file driver.py]
1444
+ from native import A, B, T, C, D, E, F, G
1445
+
1446
+ import copy
1447
+ import pickle
1448
+
1449
+ assert A.__mypyc_attrs__ == ('x', 'y')
1450
+ assert B.__mypyc_attrs__ == ('z', 'x', 'y')
1451
+ assert T.__mypyc_attrs__ == ('a',)
1452
+ assert C.__mypyc_attrs__ == ('w', 'z', 'x', 'y', 'a')
1453
+ assert not hasattr(D, '__mypyc_attrs__')
1454
+ assert E.__mypyc_attrs__ == ('y', '__dict__')
1455
+ assert F.__mypyc_attrs__ == ('y', '__dict__')
1456
+ assert G.__mypyc_attrs__ == ('y', '__dict__')
1457
+
1458
+ b = B(10, '20', False)
1459
+ assert b.__getstate__() == {'z': False, 'x': 10, 'y': '20'}
1460
+ b2 = copy.copy(b)
1461
+ assert b is not b2 and b.y == b2.y
1462
+
1463
+ b3 = pickle.loads(pickle.dumps(b))
1464
+ assert b is not b3 and b.y == b3.y
1465
+
1466
+ e = E()
1467
+ e.x = 10
1468
+ e.y = 20
1469
+
1470
+ assert e.__getstate__() == {'y': 20, '__dict__': {'x': 10}}
1471
+ e2 = pickle.loads(pickle.dumps(e))
1472
+ assert e is not e2 and e.x == e2.x and e.y == e2.y
1473
+
1474
+
1475
+ [case testInterpretedParentInit]
1476
+ from interp import C
1477
+ from typing import TypeVar
1478
+
1479
+ T = TypeVar('T')
1480
+
1481
+ def dec(x: T) -> T:
1482
+ return x
1483
+
1484
+ @dec
1485
+ class A:
1486
+ def __init__(self, x: int) -> None:
1487
+ self.x = x
1488
+
1489
+ class B(A):
1490
+ s = 'test'
1491
+
1492
+ def b(x: int) -> B: return B(x)
1493
+
1494
+ class D(C):
1495
+ s = 'test'
1496
+
1497
+ def d(x: int) -> D: return D(x)
1498
+
1499
+
1500
+ [file interp.py]
1501
+ class C:
1502
+ def __init__(self, x: int) -> None:
1503
+ self.x = x
1504
+
1505
+ [file driver.py]
1506
+ from native import b, d, B, D
1507
+
1508
+ def test(f, v):
1509
+ x = f(v)
1510
+ assert x.x == v
1511
+ assert x.s == 'test'
1512
+
1513
+ test(b, 20)
1514
+ test(d, 30)
1515
+ test(B, -1)
1516
+ test(D, -2)
1517
+
1518
+ [case testInterpretedInherit]
1519
+ from typing import TypeVar, Any, overload
1520
+ from mypy_extensions import mypyc_attr, trait
1521
+
1522
+ T = TypeVar('T')
1523
+ def dec(x: T) -> T: return x
1524
+
1525
+ @mypyc_attr(allow_interpreted_subclasses=True)
1526
+ class Top:
1527
+ def spam(self) -> str:
1528
+ return "grandparent"
1529
+
1530
+ @mypyc_attr(allow_interpreted_subclasses=True)
1531
+ @trait
1532
+ class Trait:
1533
+ def trait_method(self) -> str:
1534
+ return "trait"
1535
+
1536
+ @mypyc_attr(allow_interpreted_subclasses=True)
1537
+ class Foo(Top, Trait):
1538
+ def __init__(self, x: int) -> None:
1539
+ self.x = x
1540
+
1541
+ def foo(self) -> str:
1542
+ return "parent foo: " + self.bar(self.x)
1543
+
1544
+ def bar(self, x: int) -> str:
1545
+ return "parent bar: {}".format(x + self.x)
1546
+
1547
+ @dec
1548
+ def decorated(self) -> str:
1549
+ return "decorated parent"
1550
+
1551
+ @property
1552
+ def read_property(self) -> str:
1553
+ return "parent prop"
1554
+
1555
+ @overload
1556
+ def overloaded(self, index: int) -> int: ...
1557
+
1558
+ @overload
1559
+ def overloaded(self, index: str) -> str: ...
1560
+
1561
+ def overloaded(self, index: Any) -> Any:
1562
+ return index
1563
+
1564
+ def foo(x: Foo) -> str:
1565
+ return x.foo()
1566
+
1567
+ def bar(x: Foo, y: int) -> str:
1568
+ return x.bar(y)
1569
+
1570
+ def spam(x: Top) -> str:
1571
+ return x.spam()
1572
+
1573
+ def decorated(x: Foo) -> str:
1574
+ return x.decorated()
1575
+
1576
+ def prop(x: Foo) -> str:
1577
+ return x.read_property
1578
+
1579
+ def trait_method(x: Trait) -> str:
1580
+ return x.trait_method()
1581
+
1582
+ def overloaded(x: Foo, s: str) -> str:
1583
+ return x.overloaded(s)
1584
+
1585
+ [file interp.py]
1586
+ from typing import Any
1587
+ from native import Foo
1588
+
1589
+ class Bar(Foo):
1590
+ def bar(self, x: int) -> str:
1591
+ return "child bar: {}".format(x + self.x)
1592
+
1593
+ def spam(self) -> str:
1594
+ assert super().spam() == "grandparent"
1595
+ return "child"
1596
+
1597
+ @property
1598
+ def read_property(self) -> str:
1599
+ return "child prop"
1600
+
1601
+ def decorated(self) -> str:
1602
+ return "decorated child"
1603
+
1604
+ def trait_method(self) -> str:
1605
+ return "child"
1606
+
1607
+ def overloaded(self, index: Any) -> Any:
1608
+ return index + index
1609
+
1610
+
1611
+ class InterpBase:
1612
+ def eggs(self) -> str:
1613
+ return "eggs"
1614
+
1615
+ class Baz(InterpBase, Bar):
1616
+ def __init__(self) -> None:
1617
+ super().__init__(1000)
1618
+ self.z = self.read_property
1619
+
1620
+ [file driver.py]
1621
+ from native import Foo, foo, bar, spam, decorated, overloaded, prop, trait_method
1622
+ from interp import Bar, Baz
1623
+ from unittest.mock import patch
1624
+ from testutil import assertRaises
1625
+
1626
+ x = Foo(10)
1627
+ y = Bar(20)
1628
+ z = Baz()
1629
+
1630
+ assert isinstance(y, Bar)
1631
+ assert y.x == 20
1632
+ assert y.bar(10) == "child bar: 30"
1633
+ assert y.foo() == "parent foo: child bar: 40"
1634
+ assert foo(y) == "parent foo: child bar: 40"
1635
+ assert bar(y, 30) == "child bar: 50"
1636
+ y.x = 30
1637
+ assert bar(y, 30) == "child bar: 60"
1638
+
1639
+ assert spam(y) == "child"
1640
+ assert y.read_property == "child prop"
1641
+ assert prop(x) == "parent prop"
1642
+ assert prop(y) == "child prop"
1643
+ assert y.decorated() == "decorated child"
1644
+ assert decorated(y) == "decorated child"
1645
+ assert y.overloaded("test") == "testtest"
1646
+ assert overloaded(y, "test") == "testtest"
1647
+
1648
+ assert y.trait_method() == "child"
1649
+ assert trait_method(y) == "child"
1650
+
1651
+ assert z.bar(10) == "child bar: 1010"
1652
+ assert bar(z, 10) == "child bar: 1010"
1653
+ assert z.z == "child prop"
1654
+ assert z.eggs() == "eggs"
1655
+
1656
+ with patch("interp.Bar.spam", lambda self: "monkey patched"):
1657
+ assert y.spam() == "monkey patched"
1658
+ spam(y) == "monkey patched"
1659
+
1660
+ with patch("interp.Bar.spam", lambda self: 20):
1661
+ assert y.spam() == 20
1662
+ with assertRaises(TypeError, "str object expected; got int"):
1663
+ spam(y)
1664
+
1665
+ with assertRaises(TypeError, "int object expected; got str"):
1666
+ y.x = "test"
1667
+
1668
+ [case testProperty]
1669
+ from typing import Callable
1670
+ from mypy_extensions import trait
1671
+ class Temperature:
1672
+ @property
1673
+ def celsius(self) -> float:
1674
+ return 5.0 * (self.fahrenheit - 32.0) / 9.0
1675
+
1676
+ def __init__(self, fahrenheit: float) -> None:
1677
+ self.fahrenheit = fahrenheit
1678
+
1679
+ def print_temp(self) -> None:
1680
+ print("F:", self.fahrenheit, "C:", self.celsius)
1681
+
1682
+ @property
1683
+ def rankine(self) -> float:
1684
+ raise NotImplementedError
1685
+
1686
+ class Access:
1687
+ @property
1688
+ def number_of_accesses(self) -> int:
1689
+ self._count += 1
1690
+ return self._count
1691
+ def __init__(self) -> None:
1692
+ self._count = 0
1693
+
1694
+ from typing import Callable
1695
+ class BaseProperty:
1696
+ @property
1697
+ def doc(self) -> str:
1698
+ return "Represents a sequence of values. Updates itself by next, which is a new value."
1699
+
1700
+ @property
1701
+ def value(self) -> object:
1702
+ return self._incrementer
1703
+
1704
+ @property
1705
+ def bad_value(self) -> object:
1706
+ return self._incrementer
1707
+
1708
+ @property
1709
+ def next(self) -> BaseProperty:
1710
+ return BaseProperty(self._incrementer + 1)
1711
+
1712
+ def __init__(self, value: int) -> None:
1713
+ self._incrementer = value
1714
+
1715
+ class DerivedProperty(BaseProperty):
1716
+ @property
1717
+ def value(self) -> int:
1718
+ return self._incrementer
1719
+
1720
+ @property
1721
+ def bad_value(self) -> object:
1722
+ return self._incrementer
1723
+
1724
+ def __init__(self, incr_func: Callable[[int], int], value: int) -> None:
1725
+ BaseProperty.__init__(self, value)
1726
+ self._incr_func = incr_func
1727
+
1728
+ @property
1729
+ def next(self) -> DerivedProperty:
1730
+ return DerivedProperty(self._incr_func, self._incr_func(self.value))
1731
+
1732
+ class AgainProperty(DerivedProperty):
1733
+ @property
1734
+ def next(self) -> AgainProperty:
1735
+ return AgainProperty(self._incr_func, self._incr_func(self._incr_func(self.value)))
1736
+
1737
+ @property
1738
+ def bad_value(self) -> int:
1739
+ return self._incrementer
1740
+
1741
+ def print_first_n(n: int, thing: BaseProperty) -> None:
1742
+ vals = []
1743
+ cur_thing = thing
1744
+ for _ in range(n):
1745
+ vals.append(cur_thing.value)
1746
+ cur_thing = cur_thing.next
1747
+ print ('', vals)
1748
+
1749
+ @trait
1750
+ class Trait:
1751
+ @property
1752
+ def value(self) -> int:
1753
+ return 3
1754
+
1755
+ class Printer(Trait):
1756
+ def print_value(self) -> None:
1757
+ print(self.value)
1758
+
1759
+ [file driver.py]
1760
+ from native import Temperature, Access
1761
+ import traceback
1762
+ x = Temperature(32.0)
1763
+ try:
1764
+ print (x.rankine)
1765
+ except NotImplementedError as e:
1766
+ traceback.print_exc()
1767
+ print (x.celsius)
1768
+ x.print_temp()
1769
+
1770
+ y = Temperature(212.0)
1771
+ print (y.celsius)
1772
+ y.print_temp()
1773
+
1774
+ z = Access()
1775
+ print (z.number_of_accesses)
1776
+ print (z.number_of_accesses)
1777
+ print (z.number_of_accesses)
1778
+ print (z.number_of_accesses)
1779
+
1780
+ from native import BaseProperty, DerivedProperty, AgainProperty, print_first_n
1781
+ a = BaseProperty(7)
1782
+ b = DerivedProperty((lambda x: x // 2 if (x % 2 == 0) else 3 * x + 1), 7)
1783
+ c = AgainProperty((lambda x: x // 2 if (x % 2 == 0) else 3 * x + 1), 7)
1784
+
1785
+ def py_print_first_n(n: int, thing: BaseProperty) -> None:
1786
+ vals = []
1787
+ cur_thing = thing
1788
+ for _ in range(n):
1789
+ vals.append(cur_thing.value)
1790
+ cur_thing = cur_thing.next
1791
+ print ('', vals)
1792
+
1793
+ py_print_first_n(20, a)
1794
+ py_print_first_n(20, b)
1795
+ py_print_first_n(20, c)
1796
+
1797
+ print(a.next.next.next.bad_value)
1798
+ print(b.next.next.next.bad_value)
1799
+ print(c.next.next.next.bad_value)
1800
+
1801
+ print_first_n(20, a)
1802
+ print_first_n(20, b)
1803
+ print_first_n(20, c)
1804
+
1805
+ print (a.doc)
1806
+ print (b.doc)
1807
+ print (c.doc)
1808
+
1809
+ from native import Printer
1810
+ Printer().print_value()
1811
+ print (Printer().value)
1812
+ [out]
1813
+ Traceback (most recent call last):
1814
+ File "driver.py", line 5, in <module>
1815
+ print (x.rankine)
1816
+ File "native.py", line 16, in rankine
1817
+ raise NotImplementedError
1818
+ NotImplementedError
1819
+ 0.0
1820
+ F: 32.0 C: 0.0
1821
+ 100.0
1822
+ F: 212.0 C: 100.0
1823
+ 1
1824
+ 2
1825
+ 3
1826
+ 4
1827
+ [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]
1828
+ [7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1]
1829
+ [7, 11, 17, 26, 40, 10, 16, 4, 1, 2, 4, 1, 2, 4, 1, 2, 4, 1, 2, 4]
1830
+ 10
1831
+ 34
1832
+ 26
1833
+ [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]
1834
+ [7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1]
1835
+ [7, 11, 17, 26, 40, 10, 16, 4, 1, 2, 4, 1, 2, 4, 1, 2, 4, 1, 2, 4]
1836
+ Represents a sequence of values. Updates itself by next, which is a new value.
1837
+ Represents a sequence of values. Updates itself by next, which is a new value.
1838
+ Represents a sequence of values. Updates itself by next, which is a new value.
1839
+ 3
1840
+ 3
1841
+ [out version>=3.11]
1842
+ Traceback (most recent call last):
1843
+ File "driver.py", line 5, in <module>
1844
+ print (x.rankine)
1845
+ ^^^^^^^^^
1846
+ File "native.py", line 16, in rankine
1847
+ raise NotImplementedError
1848
+ NotImplementedError
1849
+ 0.0
1850
+ F: 32.0 C: 0.0
1851
+ 100.0
1852
+ F: 212.0 C: 100.0
1853
+ 1
1854
+ 2
1855
+ 3
1856
+ 4
1857
+ [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]
1858
+ [7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1]
1859
+ [7, 11, 17, 26, 40, 10, 16, 4, 1, 2, 4, 1, 2, 4, 1, 2, 4, 1, 2, 4]
1860
+ 10
1861
+ 34
1862
+ 26
1863
+ [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]
1864
+ [7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1]
1865
+ [7, 11, 17, 26, 40, 10, 16, 4, 1, 2, 4, 1, 2, 4, 1, 2, 4, 1, 2, 4]
1866
+ Represents a sequence of values. Updates itself by next, which is a new value.
1867
+ Represents a sequence of values. Updates itself by next, which is a new value.
1868
+ Represents a sequence of values. Updates itself by next, which is a new value.
1869
+ 3
1870
+ 3
1871
+
1872
+ [case testPropertySetters]
1873
+
1874
+ from mypy_extensions import trait
1875
+
1876
+ class Foo():
1877
+ def __init__(self) -> None:
1878
+ self.attr = "unmodified"
1879
+
1880
+ class A:
1881
+ def __init__(self) -> None:
1882
+ self._x = 0
1883
+ self._foo = Foo()
1884
+
1885
+ @property
1886
+ def x(self) -> int:
1887
+ return self._x
1888
+
1889
+ @x.setter
1890
+ def x(self, val : int) -> None:
1891
+ self._x = val
1892
+
1893
+ @property
1894
+ def foo(self) -> Foo:
1895
+ return self._foo
1896
+
1897
+ @foo.setter
1898
+ def foo(self, val : Foo) -> None:
1899
+ self._foo = val
1900
+
1901
+ # Overrides base property setters and getters
1902
+ class B(A):
1903
+ def __init__(self) -> None:
1904
+ self._x = 10
1905
+
1906
+ @property
1907
+ def x(self) -> int:
1908
+ return self._x + 1
1909
+
1910
+ @x.setter
1911
+ def x(self, val : int) -> None:
1912
+ self._x = val + 1
1913
+
1914
+ # Inherits base property setters and getters
1915
+ class C(A):
1916
+ def __init__(self) -> None:
1917
+ A.__init__(self)
1918
+
1919
+ @trait
1920
+ class D():
1921
+ def __init__(self) -> None:
1922
+ self._x = 0
1923
+
1924
+ @property
1925
+ def x(self) -> int:
1926
+ return self._x
1927
+
1928
+ @x.setter
1929
+ def x(self, val : int) -> None:
1930
+ self._x = val
1931
+
1932
+ #Inherits trait property setters and getters
1933
+ class E(D):
1934
+ def __init__(self) -> None:
1935
+ D.__init__(self)
1936
+
1937
+ #Overrides trait property setters and getters
1938
+ class F(D):
1939
+ def __init__(self) -> None:
1940
+ self._x = 10
1941
+
1942
+ @property
1943
+ def x(self) -> int:
1944
+ return self._x + 10
1945
+
1946
+ @x.setter
1947
+ def x(self, val : int) -> None:
1948
+ self._x = val + 10
1949
+
1950
+ # # Property setter and getter are subtypes of base property setters and getters
1951
+ # # class G(A):
1952
+ # # def __init__(self) -> None:
1953
+ # # A.__init__(self)
1954
+
1955
+ # # @property
1956
+ # # def y(self) -> int:
1957
+ # # return self._y
1958
+
1959
+ # # @y.setter
1960
+ # # def y(self, val : object) -> None:
1961
+ # # self._y = val
1962
+
1963
+ # No inheritance, just plain setter/getter
1964
+ class G:
1965
+ def __init__(self, x: int) -> None:
1966
+ self._x = x
1967
+
1968
+ @property
1969
+ def x(self) -> int:
1970
+ return self._x
1971
+
1972
+ @x.setter
1973
+ def x(self, x: int) -> None:
1974
+ self._x = x
1975
+
1976
+ class H:
1977
+ def __init__(self, g: G) -> None:
1978
+ self.g = g
1979
+ self.g.x = 5 # Should not be treated as initialization
1980
+
1981
+ [file other.py]
1982
+ # Run in both interpreted and compiled mode
1983
+
1984
+ from native import A, B, C, D, E, F, G
1985
+
1986
+ a = A()
1987
+ assert a.x == 0
1988
+ assert a._x == 0
1989
+ a.x = 1
1990
+ assert a.x == 1
1991
+ assert a._x == 1
1992
+ a._x = 0
1993
+ assert a.x == 0
1994
+ assert a._x == 0
1995
+ b = B()
1996
+ assert b.x == 11
1997
+ assert b._x == 10
1998
+ b.x = 11
1999
+ assert b.x == 13
2000
+ b._x = 11
2001
+ assert b.x == 12
2002
+ c = C()
2003
+ assert c.x == 0
2004
+ c.x = 1000
2005
+ assert c.x == 1000
2006
+ e = E()
2007
+ assert e.x == 0
2008
+ e.x = 1000
2009
+ assert e.x == 1000
2010
+ f = F()
2011
+ assert f.x == 20
2012
+ f.x = 30
2013
+ assert f.x == 50
2014
+ g = G(4)
2015
+ g.x = 20
2016
+ assert g.x == 20
2017
+
2018
+ [file driver.py]
2019
+ # Run the tests in both interpreted and compiled mode
2020
+ import other
2021
+ import other_interpreted
2022
+
2023
+ [out]
2024
+
2025
+ [case testAttributeOverridesProperty]
2026
+ from typing import Any
2027
+ from mypy_extensions import trait
2028
+
2029
+ @trait
2030
+ class T1:
2031
+ @property
2032
+ def x(self) -> int: ...
2033
+ @property
2034
+ def y(self) -> int: ...
2035
+
2036
+ class C1(T1):
2037
+ x: int = 1
2038
+ y: int = 4
2039
+
2040
+ def test_read_only_property_in_trait_implemented_as_attribute() -> None:
2041
+ c = C1()
2042
+ c.x = 5
2043
+ assert c.x == 5
2044
+ assert c.y == 4
2045
+ c.y = 6
2046
+ assert c.y == 6
2047
+ t: T1 = C1()
2048
+ assert t.y == 4
2049
+ t = c
2050
+ assert t.x == 5
2051
+ assert t.y == 6
2052
+ a: Any = c
2053
+ assert a.x == 5
2054
+ assert a.y == 6
2055
+ a.x = 7
2056
+ a.y = 8
2057
+ assert a.x == 7
2058
+ assert a.y == 8
2059
+
2060
+ class B2:
2061
+ @property
2062
+ def x(self) -> int:
2063
+ return 11
2064
+
2065
+ @property
2066
+ def y(self) -> int:
2067
+ return 25
2068
+
2069
+ class C2(B2):
2070
+ x: int = 1
2071
+ y: int = 4
2072
+
2073
+ def test_read_only_property_in_class_implemented_as_attribute() -> None:
2074
+ c = C2()
2075
+ c.x = 5
2076
+ assert c.x == 5
2077
+ assert c.y == 4
2078
+ c.y = 6
2079
+ assert c.y == 6
2080
+ b: B2 = C2()
2081
+ assert b.y == 4
2082
+ b = c
2083
+ assert b.x == 5
2084
+ assert b.y == 6
2085
+ a: Any = c
2086
+ assert a.x == 5
2087
+ assert a.y == 6
2088
+ a.x = 7
2089
+ a.y = 8
2090
+ assert a.x == 7
2091
+ assert a.y == 8
2092
+
2093
+ @trait
2094
+ class T3:
2095
+ @property
2096
+ def x(self) -> int: ...
2097
+ @property
2098
+ def y(self) -> int: ...
2099
+
2100
+ class B3:
2101
+ x: int = 1
2102
+ y: int = 4
2103
+
2104
+ class C3(B3, T3):
2105
+ pass
2106
+
2107
+ def test_read_only_property_implemented_as_attribute_indirectly() -> None:
2108
+ c = C3()
2109
+ c.x = 5
2110
+ assert c.x == 5
2111
+ assert c.y == 4
2112
+ c.y = 6
2113
+ assert c.y == 6
2114
+ t: T3 = C3()
2115
+ assert t.y == 4
2116
+ t = c
2117
+ assert t.x == 5
2118
+ assert t.y == 6
2119
+ a: Any = c
2120
+ assert a.x == 5
2121
+ assert a.y == 6
2122
+ a.x = 7
2123
+ a.y = 8
2124
+ assert a.x == 7
2125
+ assert a.y == 8
2126
+
2127
+ @trait
2128
+ class T4:
2129
+ @property
2130
+ def x(self) -> int: ...
2131
+ @x.setter
2132
+ def x(self, v1: int) -> None: ...
2133
+
2134
+ @property
2135
+ def y(self) -> int: ...
2136
+ @y.setter
2137
+ def y(self, v2: int) -> None: ...
2138
+
2139
+ class C4(T4):
2140
+ x: int = 1
2141
+ y: int = 4
2142
+
2143
+ def test_read_write_property_implemented_as_attribute() -> None:
2144
+ c = C4()
2145
+ c.x = 5
2146
+ assert c.x == 5
2147
+ assert c.y == 4
2148
+ c.y = 6
2149
+ assert c.y == 6
2150
+ t: T4 = C4()
2151
+ assert t.y == 4
2152
+ t.x = 5
2153
+ assert t.x == 5
2154
+ t.y = 6
2155
+ assert t.y == 6
2156
+ a: Any = c
2157
+ assert a.x == 5
2158
+ assert a.y == 6
2159
+ a.x = 7
2160
+ a.y = 8
2161
+ assert a.x == 7
2162
+ assert a.y == 8
2163
+
2164
+ @trait
2165
+ class T5:
2166
+ @property
2167
+ def x(self) -> int: ...
2168
+ @x.setter
2169
+ def x(self, v1: int) -> None: ...
2170
+
2171
+ @property
2172
+ def y(self) -> int: ...
2173
+ @y.setter
2174
+ def y(self, v2: int) -> None: ...
2175
+
2176
+ class B5:
2177
+ x: int = 1
2178
+ y: int = 4
2179
+
2180
+ class BB5(B5):
2181
+ pass
2182
+
2183
+ class C5(BB5, T5):
2184
+ pass
2185
+
2186
+ def test_read_write_property_indirectly_implemented_as_attribute() -> None:
2187
+ c = C5()
2188
+ c.x = 5
2189
+ assert c.x == 5
2190
+ assert c.y == 4
2191
+ c.y = 6
2192
+ assert c.y == 6
2193
+ t: T5 = C5()
2194
+ assert t.y == 4
2195
+ t.x = 5
2196
+ assert t.x == 5
2197
+ t.y = 6
2198
+ assert t.y == 6
2199
+ a: Any = c
2200
+ assert a.x == 5
2201
+ assert a.y == 6
2202
+ a.x = 7
2203
+ a.y = 8
2204
+ assert a.x == 7
2205
+ assert a.y == 8
2206
+
2207
+ [case testSubclassAttributeAccess]
2208
+ from mypy_extensions import trait
2209
+
2210
+ class A:
2211
+ v = 0
2212
+
2213
+ class B(A):
2214
+ v = 1
2215
+
2216
+ class C(B):
2217
+ v = 2
2218
+
2219
+ [file driver.py]
2220
+ from native import A, B, C
2221
+
2222
+ a = A()
2223
+ b = B()
2224
+ c = C()
2225
+
2226
+ [case testCopyAlwaysDefinedAttributes]
2227
+ import copy
2228
+ from typing import Union
2229
+
2230
+ class A: pass
2231
+
2232
+ class C:
2233
+ def __init__(self, n: int = 0) -> None:
2234
+ self.n = n
2235
+ self.s = ""
2236
+ self.t = ("", 0)
2237
+ self.u: Union[str, bytes] = ''
2238
+ self.a = A()
2239
+
2240
+ def test_copy() -> None:
2241
+ c1 = C()
2242
+ c1.n = 1
2243
+ c1.s = "x"
2244
+ c2 = copy.copy(c1)
2245
+ assert c2.n == 1
2246
+ assert c2.s == "x"
2247
+ assert c2.t == ("", 0)
2248
+ assert c2.u == ''
2249
+ assert c2.a is c1.a
2250
+
2251
+ [case testNonNativeCallsToDunderNewAndInit]
2252
+ from typing import Any
2253
+ from testutil import assertRaises
2254
+
2255
+ count_c = 0
2256
+
2257
+ class C:
2258
+ def __init__(self) -> None:
2259
+ self.x = 'a' # Always defined attribute
2260
+ global count_c
2261
+ count_c += 1
2262
+
2263
+ def get(self) -> str:
2264
+ return self.x
2265
+
2266
+ def test_no_init_args() -> None:
2267
+ global count_c
2268
+ count_c = 0
2269
+
2270
+ # Use Any to get non-native semantics
2271
+ cls: Any = C
2272
+ # __new__ implicitly calls __init__ for native classes
2273
+ obj = cls.__new__(cls)
2274
+ assert obj.get() == 'a'
2275
+ assert count_c == 1
2276
+ # Make sure we don't call __init__ twice
2277
+ obj2 = cls()
2278
+ assert obj2.get() == 'a'
2279
+ assert count_c == 2
2280
+
2281
+ count_d = 0
2282
+
2283
+ class D:
2284
+ def __init__(self, x: str) -> None:
2285
+ self.x = x # Always defined attribute
2286
+ global count_d
2287
+ count_d += 1
2288
+
2289
+ def get(self) -> str:
2290
+ return self.x
2291
+
2292
+ def test_init_arg() -> None:
2293
+ global count_d
2294
+ count_d = 0
2295
+
2296
+ # Use Any to get non-native semantics
2297
+ cls: Any = D
2298
+ # __new__ implicitly calls __init__ for native classes
2299
+ obj = cls.__new__(cls, 'abc')
2300
+ assert obj.get() == 'abc'
2301
+ assert count_d == 1
2302
+ # Make sure we don't call __init__ twice
2303
+ obj2 = cls('x')
2304
+ assert obj2.get() == 'x'
2305
+ assert count_d == 2
2306
+ # Keyword args should work
2307
+ obj = cls.__new__(cls, x='abc')
2308
+ assert obj.get() == 'abc'
2309
+ assert count_d == 3
2310
+
2311
+ def test_invalid_init_args() -> None:
2312
+ # Use Any to get non-native semantics
2313
+ cls: Any = D
2314
+ with assertRaises(TypeError):
2315
+ cls()
2316
+ with assertRaises(TypeError):
2317
+ cls(y='x')
2318
+ with assertRaises(TypeError):
2319
+ cls(1)
2320
+
2321
+ [case testTryDeletingAlwaysDefinedAttribute]
2322
+ from typing import Any
2323
+ from testutil import assertRaises
2324
+
2325
+ class C:
2326
+ def __init__(self) -> None:
2327
+ self.x = 0
2328
+
2329
+ class D(C):
2330
+ pass
2331
+
2332
+ def test_try_deleting_always_defined_attr() -> None:
2333
+ c: Any = C()
2334
+ with assertRaises(AttributeError):
2335
+ del c.x
2336
+ d: Any = D()
2337
+ with assertRaises(AttributeError):
2338
+ del d.x
2339
+
2340
+ [case testAlwaysDefinedAttributeAndAllowInterpretedSubclasses]
2341
+ from mypy_extensions import mypyc_attr
2342
+
2343
+ from m import define_interpreted_subclass
2344
+
2345
+ @mypyc_attr(allow_interpreted_subclasses=True)
2346
+ class Base:
2347
+ x = 5
2348
+ y: int
2349
+ def __init__(self, s: str) -> None:
2350
+ self.s = s
2351
+
2352
+ class DerivedNative(Base):
2353
+ def __init__(self) -> None:
2354
+ super().__init__('x')
2355
+ self.z = 3
2356
+
2357
+ def test_native_subclass() -> None:
2358
+ o = DerivedNative()
2359
+ assert o.x == 5
2360
+ assert o.s == 'x'
2361
+ assert o.z == 3
2362
+
2363
+ def test_interpreted_subclass() -> None:
2364
+ define_interpreted_subclass(Base)
2365
+
2366
+ [file m.py]
2367
+ from testutil import assertRaises
2368
+
2369
+ def define_interpreted_subclass(b):
2370
+ class DerivedInterpreted1(b):
2371
+ def __init__(self):
2372
+ # Don't call base class __init__
2373
+ pass
2374
+ d1 = DerivedInterpreted1()
2375
+ assert d1.x == 5
2376
+ with assertRaises(AttributeError):
2377
+ d1.y
2378
+ with assertRaises(AttributeError):
2379
+ d1.s
2380
+ with assertRaises(AttributeError):
2381
+ del d1.x
2382
+
2383
+ class DerivedInterpreted1(b):
2384
+ def __init__(self):
2385
+ super().__init__('y')
2386
+ d2 = DerivedInterpreted1()
2387
+ assert d2.x == 5
2388
+ assert d2.s == 'y'
2389
+ with assertRaises(AttributeError):
2390
+ d2.y
2391
+ with assertRaises(AttributeError):
2392
+ del d2.x
2393
+
2394
+ [case testBaseClassSometimesDefinesAttribute]
2395
+ class C:
2396
+ def __init__(self, b: bool) -> None:
2397
+ if b:
2398
+ self.x = [1]
2399
+
2400
+ class D(C):
2401
+ def __init__(self, b: bool) -> None:
2402
+ super().__init__(b)
2403
+ self.x = [2]
2404
+
2405
+ def test_base_class() -> None:
2406
+ c = C(True)
2407
+ assert c.x == [1]
2408
+ c = C(False)
2409
+ try:
2410
+ c.x
2411
+ except AttributeError:
2412
+ return
2413
+ assert False
2414
+
2415
+ def test_subclass() -> None:
2416
+ d = D(True)
2417
+ assert d.x == [2]
2418
+ d = D(False)
2419
+ assert d.x == [2]
2420
+
2421
+ [case testSerializableClass]
2422
+ from mypy_extensions import mypyc_attr
2423
+ from typing import Any
2424
+ import copy
2425
+ from testutil import assertRaises
2426
+
2427
+ @mypyc_attr(serializable=True)
2428
+ class Base:
2429
+ def __init__(self, s: str) -> None:
2430
+ self.s = s
2431
+
2432
+ class Derived(Base):
2433
+ def __init__(self, s: str, n: int) -> None:
2434
+ super().__init__(s)
2435
+ self.n = n
2436
+
2437
+ def test_copy_base() -> None:
2438
+ o = Base('xyz')
2439
+ o2 = copy.copy(o)
2440
+ assert isinstance(o2, Base)
2441
+ assert o2 is not o
2442
+ assert o2.s == 'xyz'
2443
+
2444
+ def test_copy_derived() -> None:
2445
+ d = Derived('xyz', 5)
2446
+ d2 = copy.copy(d)
2447
+ assert isinstance(d2, Derived)
2448
+ assert d2 is not d
2449
+ assert d2.s == 'xyz'
2450
+ assert d2.n == 5
2451
+
2452
+ class NonSerializable:
2453
+ def __init__(self, s: str) -> None:
2454
+ self.s = s
2455
+
2456
+ @mypyc_attr(serializable=True)
2457
+ class SerializableSub(NonSerializable):
2458
+ def __init__(self, s: str, n: int) -> None:
2459
+ super().__init__(s)
2460
+ self.n = n
2461
+
2462
+ def test_serializable_sub_class() -> None:
2463
+ n = NonSerializable('xyz')
2464
+ assert n.s == 'xyz'
2465
+
2466
+ with assertRaises(TypeError):
2467
+ copy.copy(n)
2468
+
2469
+ s = SerializableSub('foo', 6)
2470
+ s2 = copy.copy(s)
2471
+ assert s2 is not s
2472
+ assert s2.s == 'foo'
2473
+ assert s2.n == 6
2474
+
2475
+ def test_serializable_sub_class_call_new() -> None:
2476
+ t: Any = SerializableSub
2477
+ sub: SerializableSub = t.__new__(t)
2478
+ with assertRaises(AttributeError):
2479
+ sub.s
2480
+ with assertRaises(AttributeError):
2481
+ sub.n
2482
+ base: NonSerializable = sub
2483
+ with assertRaises(AttributeError):
2484
+ base.s
2485
+
2486
+ [case testClassWithInherited__call__]
2487
+ class Base:
2488
+ def __call__(self) -> int:
2489
+ return 1
2490
+
2491
+ class Derived(Base):
2492
+ pass
2493
+
2494
+ assert Derived()() == 1
2495
+
2496
+ [case testClassWithFinalAttribute]
2497
+ from typing_extensions import Final
2498
+
2499
+ class C:
2500
+ A: Final = -1
2501
+ a: Final = [A]
2502
+
2503
+ def test_final_attribute() -> None:
2504
+ assert C.A == -1
2505
+ assert C.a == [-1]