mypy-dev 1.9.0.dev0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1018) hide show
  1. mypy/__init__.py +1 -0
  2. mypy/__main__.py +37 -0
  3. mypy/api.py +94 -0
  4. mypy/applytype.py +156 -0
  5. mypy/argmap.py +268 -0
  6. mypy/binder.py +538 -0
  7. mypy/bogus_type.py +27 -0
  8. mypy/build.py +3562 -0
  9. mypy/checker.py +8372 -0
  10. mypy/checkexpr.py +6615 -0
  11. mypy/checkmember.py +1356 -0
  12. mypy/checkpattern.py +801 -0
  13. mypy/checkstrformat.py +1109 -0
  14. mypy/config_parser.py +670 -0
  15. mypy/constant_fold.py +187 -0
  16. mypy/constraints.py +1624 -0
  17. mypy/copytype.py +133 -0
  18. mypy/defaults.py +46 -0
  19. mypy/dmypy/__init__.py +0 -0
  20. mypy/dmypy/__main__.py +6 -0
  21. mypy/dmypy/client.py +749 -0
  22. mypy/dmypy_os.py +42 -0
  23. mypy/dmypy_server.py +1107 -0
  24. mypy/dmypy_util.py +117 -0
  25. mypy/erasetype.py +278 -0
  26. mypy/errorcodes.py +285 -0
  27. mypy/errors.py +1280 -0
  28. mypy/evalexpr.py +205 -0
  29. mypy/expandtype.py +510 -0
  30. mypy/exprtotype.py +206 -0
  31. mypy/fastparse.py +2147 -0
  32. mypy/find_sources.py +243 -0
  33. mypy/fixup.py +426 -0
  34. mypy/freetree.py +23 -0
  35. mypy/fscache.py +309 -0
  36. mypy/fswatcher.py +106 -0
  37. mypy/gclogger.py +47 -0
  38. mypy/git.py +34 -0
  39. mypy/graph_utils.py +112 -0
  40. mypy/indirection.py +121 -0
  41. mypy/infer.py +75 -0
  42. mypy/inspections.py +627 -0
  43. mypy/ipc.py +310 -0
  44. mypy/join.py +866 -0
  45. mypy/literals.py +306 -0
  46. mypy/lookup.py +61 -0
  47. mypy/main.py +1574 -0
  48. mypy/maptype.py +106 -0
  49. mypy/meet.py +1140 -0
  50. mypy/memprofile.py +121 -0
  51. mypy/message_registry.py +326 -0
  52. mypy/messages.py +3171 -0
  53. mypy/metastore.py +225 -0
  54. mypy/mixedtraverser.py +112 -0
  55. mypy/modulefinder.py +875 -0
  56. mypy/moduleinspect.py +184 -0
  57. mypy/mro.py +62 -0
  58. mypy/nodes.py +4112 -0
  59. mypy/operators.py +126 -0
  60. mypy/options.py +556 -0
  61. mypy/parse.py +30 -0
  62. mypy/partially_defined.py +675 -0
  63. mypy/patterns.py +150 -0
  64. mypy/plugin.py +901 -0
  65. mypy/plugins/__init__.py +0 -0
  66. mypy/plugins/attrs.py +1152 -0
  67. mypy/plugins/common.py +440 -0
  68. mypy/plugins/ctypes.py +245 -0
  69. mypy/plugins/dataclasses.py +1101 -0
  70. mypy/plugins/default.py +518 -0
  71. mypy/plugins/enums.py +259 -0
  72. mypy/plugins/functools.py +104 -0
  73. mypy/plugins/proper_plugin.py +175 -0
  74. mypy/plugins/singledispatch.py +224 -0
  75. mypy/py.typed +1 -0
  76. mypy/pyinfo.py +78 -0
  77. mypy/reachability.py +362 -0
  78. mypy/refinfo.py +92 -0
  79. mypy/renaming.py +568 -0
  80. mypy/report.py +924 -0
  81. mypy/scope.py +125 -0
  82. mypy/semanal.py +7023 -0
  83. mypy/semanal_classprop.py +187 -0
  84. mypy/semanal_enum.py +253 -0
  85. mypy/semanal_infer.py +128 -0
  86. mypy/semanal_main.py +511 -0
  87. mypy/semanal_namedtuple.py +670 -0
  88. mypy/semanal_newtype.py +273 -0
  89. mypy/semanal_pass1.py +156 -0
  90. mypy/semanal_shared.py +490 -0
  91. mypy/semanal_typeargs.py +265 -0
  92. mypy/semanal_typeddict.py +575 -0
  93. mypy/server/__init__.py +0 -0
  94. mypy/server/astdiff.py +518 -0
  95. mypy/server/astmerge.py +562 -0
  96. mypy/server/aststrip.py +281 -0
  97. mypy/server/deps.py +1137 -0
  98. mypy/server/mergecheck.py +83 -0
  99. mypy/server/objgraph.py +101 -0
  100. mypy/server/subexpr.py +198 -0
  101. mypy/server/target.py +11 -0
  102. mypy/server/trigger.py +26 -0
  103. mypy/server/update.py +1339 -0
  104. mypy/sharedparse.py +112 -0
  105. mypy/solve.py +562 -0
  106. mypy/split_namespace.py +35 -0
  107. mypy/state.py +28 -0
  108. mypy/stats.py +489 -0
  109. mypy/strconv.py +641 -0
  110. mypy/stubdoc.py +491 -0
  111. mypy/stubgen.py +1873 -0
  112. mypy/stubgenc.py +993 -0
  113. mypy/stubinfo.py +173 -0
  114. mypy/stubtest.py +2079 -0
  115. mypy/stubutil.py +807 -0
  116. mypy/subtypes.py +1967 -0
  117. mypy/suggestions.py +1046 -0
  118. mypy/test/__init__.py +0 -0
  119. mypy/test/config.py +28 -0
  120. mypy/test/data.py +823 -0
  121. mypy/test/helpers.py +476 -0
  122. mypy/test/meta/__init__.py +0 -0
  123. mypy/test/meta/_pytest.py +72 -0
  124. mypy/test/meta/test_diff_helper.py +47 -0
  125. mypy/test/meta/test_parse_data.py +73 -0
  126. mypy/test/meta/test_update_data.py +135 -0
  127. mypy/test/test_find_sources.py +376 -0
  128. mypy/test/test_ref_info.py +45 -0
  129. mypy/test/testapi.py +45 -0
  130. mypy/test/testargs.py +77 -0
  131. mypy/test/testcheck.py +322 -0
  132. mypy/test/testcmdline.py +152 -0
  133. mypy/test/testconstraints.py +134 -0
  134. mypy/test/testdaemon.py +132 -0
  135. mypy/test/testdeps.py +77 -0
  136. mypy/test/testdiff.py +67 -0
  137. mypy/test/testerrorstream.py +46 -0
  138. mypy/test/testfinegrained.py +438 -0
  139. mypy/test/testfinegrainedcache.py +18 -0
  140. mypy/test/testformatter.py +85 -0
  141. mypy/test/testfscache.py +101 -0
  142. mypy/test/testgraph.py +83 -0
  143. mypy/test/testinfer.py +373 -0
  144. mypy/test/testipc.py +119 -0
  145. mypy/test/testmerge.py +238 -0
  146. mypy/test/testmodulefinder.py +278 -0
  147. mypy/test/testmypyc.py +14 -0
  148. mypy/test/testparse.py +107 -0
  149. mypy/test/testpep561.py +211 -0
  150. mypy/test/testpythoneval.py +117 -0
  151. mypy/test/testreports.py +55 -0
  152. mypy/test/testsemanal.py +209 -0
  153. mypy/test/testsolve.py +285 -0
  154. mypy/test/teststubgen.py +1412 -0
  155. mypy/test/teststubinfo.py +12 -0
  156. mypy/test/teststubtest.py +2492 -0
  157. mypy/test/testsubtypes.py +303 -0
  158. mypy/test/testtransform.py +64 -0
  159. mypy/test/testtypegen.py +83 -0
  160. mypy/test/testtypes.py +1551 -0
  161. mypy/test/testutil.py +111 -0
  162. mypy/test/typefixture.py +415 -0
  163. mypy/test/update_data.py +87 -0
  164. mypy/test/visitors.py +63 -0
  165. mypy/traverser.py +961 -0
  166. mypy/treetransform.py +800 -0
  167. mypy/tvar_scope.py +147 -0
  168. mypy/type_visitor.py +564 -0
  169. mypy/typeanal.py +2510 -0
  170. mypy/typeops.py +1082 -0
  171. mypy/types.py +3686 -0
  172. mypy/types_utils.py +166 -0
  173. mypy/typeshed/LICENSE +237 -0
  174. mypy/typeshed/stdlib/VERSIONS +308 -0
  175. mypy/typeshed/stdlib/__future__.pyi +36 -0
  176. mypy/typeshed/stdlib/__main__.pyi +3 -0
  177. mypy/typeshed/stdlib/_ast.pyi +587 -0
  178. mypy/typeshed/stdlib/_bisect.pyi +84 -0
  179. mypy/typeshed/stdlib/_bootlocale.pyi +1 -0
  180. mypy/typeshed/stdlib/_codecs.pyi +133 -0
  181. mypy/typeshed/stdlib/_collections_abc.pyi +94 -0
  182. mypy/typeshed/stdlib/_compat_pickle.pyi +8 -0
  183. mypy/typeshed/stdlib/_compression.pyi +25 -0
  184. mypy/typeshed/stdlib/_csv.pyi +90 -0
  185. mypy/typeshed/stdlib/_ctypes.pyi +205 -0
  186. mypy/typeshed/stdlib/_curses.pyi +557 -0
  187. mypy/typeshed/stdlib/_decimal.pyi +281 -0
  188. mypy/typeshed/stdlib/_dummy_thread.pyi +27 -0
  189. mypy/typeshed/stdlib/_dummy_threading.pyi +164 -0
  190. mypy/typeshed/stdlib/_heapq.pyi +11 -0
  191. mypy/typeshed/stdlib/_imp.pyi +28 -0
  192. mypy/typeshed/stdlib/_json.pyi +49 -0
  193. mypy/typeshed/stdlib/_locale.pyi +100 -0
  194. mypy/typeshed/stdlib/_markupbase.pyi +16 -0
  195. mypy/typeshed/stdlib/_msi.pyi +91 -0
  196. mypy/typeshed/stdlib/_operator.pyi +147 -0
  197. mypy/typeshed/stdlib/_osx_support.pyi +34 -0
  198. mypy/typeshed/stdlib/_posixsubprocess.pyi +32 -0
  199. mypy/typeshed/stdlib/_py_abc.pyi +14 -0
  200. mypy/typeshed/stdlib/_pydecimal.pyi +43 -0
  201. mypy/typeshed/stdlib/_random.pyi +12 -0
  202. mypy/typeshed/stdlib/_sitebuiltins.pyi +16 -0
  203. mypy/typeshed/stdlib/_socket.pyi +802 -0
  204. mypy/typeshed/stdlib/_stat.pyi +103 -0
  205. mypy/typeshed/stdlib/_thread.pyi +52 -0
  206. mypy/typeshed/stdlib/_threading_local.pyi +17 -0
  207. mypy/typeshed/stdlib/_tkinter.pyi +120 -0
  208. mypy/typeshed/stdlib/_tracemalloc.pyi +17 -0
  209. mypy/typeshed/stdlib/_typeshed/__init__.pyi +347 -0
  210. mypy/typeshed/stdlib/_typeshed/dbapi.pyi +37 -0
  211. mypy/typeshed/stdlib/_typeshed/wsgi.pyi +44 -0
  212. mypy/typeshed/stdlib/_typeshed/xml.pyi +9 -0
  213. mypy/typeshed/stdlib/_warnings.pyi +55 -0
  214. mypy/typeshed/stdlib/_weakref.pyi +41 -0
  215. mypy/typeshed/stdlib/_weakrefset.pyi +51 -0
  216. mypy/typeshed/stdlib/_winapi.pyi +251 -0
  217. mypy/typeshed/stdlib/abc.pyi +49 -0
  218. mypy/typeshed/stdlib/aifc.pyi +91 -0
  219. mypy/typeshed/stdlib/antigravity.pyi +3 -0
  220. mypy/typeshed/stdlib/argparse.pyi +571 -0
  221. mypy/typeshed/stdlib/array.pyi +92 -0
  222. mypy/typeshed/stdlib/ast.pyi +277 -0
  223. mypy/typeshed/stdlib/asynchat.pyi +21 -0
  224. mypy/typeshed/stdlib/asyncio/__init__.pyi +41 -0
  225. mypy/typeshed/stdlib/asyncio/base_events.pyi +440 -0
  226. mypy/typeshed/stdlib/asyncio/base_futures.pyi +19 -0
  227. mypy/typeshed/stdlib/asyncio/base_subprocess.pyi +63 -0
  228. mypy/typeshed/stdlib/asyncio/base_tasks.pyi +9 -0
  229. mypy/typeshed/stdlib/asyncio/constants.pyi +20 -0
  230. mypy/typeshed/stdlib/asyncio/coroutines.pyi +26 -0
  231. mypy/typeshed/stdlib/asyncio/events.pyi +574 -0
  232. mypy/typeshed/stdlib/asyncio/exceptions.pyi +43 -0
  233. mypy/typeshed/stdlib/asyncio/format_helpers.pyi +20 -0
  234. mypy/typeshed/stdlib/asyncio/futures.pyi +57 -0
  235. mypy/typeshed/stdlib/asyncio/locks.pyi +121 -0
  236. mypy/typeshed/stdlib/asyncio/log.pyi +3 -0
  237. mypy/typeshed/stdlib/asyncio/mixins.pyi +9 -0
  238. mypy/typeshed/stdlib/asyncio/proactor_events.pyi +64 -0
  239. mypy/typeshed/stdlib/asyncio/protocols.pyi +34 -0
  240. mypy/typeshed/stdlib/asyncio/queues.pyi +47 -0
  241. mypy/typeshed/stdlib/asyncio/runners.pyi +32 -0
  242. mypy/typeshed/stdlib/asyncio/selector_events.pyi +8 -0
  243. mypy/typeshed/stdlib/asyncio/sslproto.pyi +163 -0
  244. mypy/typeshed/stdlib/asyncio/staggered.pyi +10 -0
  245. mypy/typeshed/stdlib/asyncio/streams.pyi +148 -0
  246. mypy/typeshed/stdlib/asyncio/subprocess.pyi +229 -0
  247. mypy/typeshed/stdlib/asyncio/taskgroups.pyi +25 -0
  248. mypy/typeshed/stdlib/asyncio/tasks.pyi +477 -0
  249. mypy/typeshed/stdlib/asyncio/threads.pyi +9 -0
  250. mypy/typeshed/stdlib/asyncio/timeouts.pyi +19 -0
  251. mypy/typeshed/stdlib/asyncio/transports.pyi +47 -0
  252. mypy/typeshed/stdlib/asyncio/trsock.pyi +98 -0
  253. mypy/typeshed/stdlib/asyncio/unix_events.pyi +173 -0
  254. mypy/typeshed/stdlib/asyncio/windows_events.pyi +83 -0
  255. mypy/typeshed/stdlib/asyncio/windows_utils.pyi +49 -0
  256. mypy/typeshed/stdlib/asyncore.pyi +90 -0
  257. mypy/typeshed/stdlib/atexit.pyi +12 -0
  258. mypy/typeshed/stdlib/audioop.pyi +42 -0
  259. mypy/typeshed/stdlib/base64.pyi +59 -0
  260. mypy/typeshed/stdlib/bdb.pyi +102 -0
  261. mypy/typeshed/stdlib/binascii.pyi +36 -0
  262. mypy/typeshed/stdlib/binhex.pyi +45 -0
  263. mypy/typeshed/stdlib/bisect.pyi +4 -0
  264. mypy/typeshed/stdlib/builtins.pyi +1937 -0
  265. mypy/typeshed/stdlib/bz2.pyi +146 -0
  266. mypy/typeshed/stdlib/cProfile.pyi +35 -0
  267. mypy/typeshed/stdlib/calendar.pyi +206 -0
  268. mypy/typeshed/stdlib/cgi.pyi +118 -0
  269. mypy/typeshed/stdlib/cgitb.pyi +32 -0
  270. mypy/typeshed/stdlib/chunk.pyi +20 -0
  271. mypy/typeshed/stdlib/cmath.pyi +36 -0
  272. mypy/typeshed/stdlib/cmd.pyi +45 -0
  273. mypy/typeshed/stdlib/code.pyi +33 -0
  274. mypy/typeshed/stdlib/codecs.pyi +285 -0
  275. mypy/typeshed/stdlib/codeop.pyi +13 -0
  276. mypy/typeshed/stdlib/collections/__init__.pyi +477 -0
  277. mypy/typeshed/stdlib/collections/abc.pyi +2 -0
  278. mypy/typeshed/stdlib/colorsys.pyi +13 -0
  279. mypy/typeshed/stdlib/compileall.pyi +111 -0
  280. mypy/typeshed/stdlib/concurrent/__init__.pyi +0 -0
  281. mypy/typeshed/stdlib/concurrent/futures/__init__.pyi +32 -0
  282. mypy/typeshed/stdlib/concurrent/futures/_base.pyi +120 -0
  283. mypy/typeshed/stdlib/concurrent/futures/process.pyi +233 -0
  284. mypy/typeshed/stdlib/concurrent/futures/thread.pyi +80 -0
  285. mypy/typeshed/stdlib/configparser.pyi +313 -0
  286. mypy/typeshed/stdlib/contextlib.pyi +207 -0
  287. mypy/typeshed/stdlib/contextvars.pyi +63 -0
  288. mypy/typeshed/stdlib/copy.pyi +16 -0
  289. mypy/typeshed/stdlib/copyreg.pyi +21 -0
  290. mypy/typeshed/stdlib/crypt.pyi +12 -0
  291. mypy/typeshed/stdlib/csv.pyi +147 -0
  292. mypy/typeshed/stdlib/ctypes/__init__.pyi +187 -0
  293. mypy/typeshed/stdlib/ctypes/_endian.pyi +19 -0
  294. mypy/typeshed/stdlib/ctypes/util.pyi +6 -0
  295. mypy/typeshed/stdlib/ctypes/wintypes.pyi +298 -0
  296. mypy/typeshed/stdlib/curses/__init__.pyi +21 -0
  297. mypy/typeshed/stdlib/curses/ascii.pyi +63 -0
  298. mypy/typeshed/stdlib/curses/has_key.pyi +4 -0
  299. mypy/typeshed/stdlib/curses/panel.pyi +25 -0
  300. mypy/typeshed/stdlib/curses/textpad.pyi +13 -0
  301. mypy/typeshed/stdlib/dataclasses.pyi +313 -0
  302. mypy/typeshed/stdlib/datetime.pyi +295 -0
  303. mypy/typeshed/stdlib/dbm/__init__.pyi +95 -0
  304. mypy/typeshed/stdlib/dbm/dumb.pyi +31 -0
  305. mypy/typeshed/stdlib/dbm/gnu.pyi +40 -0
  306. mypy/typeshed/stdlib/dbm/ndbm.pyi +36 -0
  307. mypy/typeshed/stdlib/decimal.pyi +2 -0
  308. mypy/typeshed/stdlib/difflib.pyi +140 -0
  309. mypy/typeshed/stdlib/dis.pyi +144 -0
  310. mypy/typeshed/stdlib/distutils/__init__.pyi +5 -0
  311. mypy/typeshed/stdlib/distutils/archive_util.pyi +20 -0
  312. mypy/typeshed/stdlib/distutils/bcppcompiler.pyi +3 -0
  313. mypy/typeshed/stdlib/distutils/ccompiler.pyi +152 -0
  314. mypy/typeshed/stdlib/distutils/cmd.pyi +66 -0
  315. mypy/typeshed/stdlib/distutils/command/__init__.pyi +0 -0
  316. mypy/typeshed/stdlib/distutils/command/bdist.pyi +25 -0
  317. mypy/typeshed/stdlib/distutils/command/bdist_dumb.pyi +21 -0
  318. mypy/typeshed/stdlib/distutils/command/bdist_msi.pyi +45 -0
  319. mypy/typeshed/stdlib/distutils/command/bdist_packager.pyi +0 -0
  320. mypy/typeshed/stdlib/distutils/command/bdist_rpm.pyi +52 -0
  321. mypy/typeshed/stdlib/distutils/command/bdist_wininst.pyi +16 -0
  322. mypy/typeshed/stdlib/distutils/command/build.pyi +31 -0
  323. mypy/typeshed/stdlib/distutils/command/build_clib.pyi +27 -0
  324. mypy/typeshed/stdlib/distutils/command/build_ext.pyi +50 -0
  325. mypy/typeshed/stdlib/distutils/command/build_py.pyi +44 -0
  326. mypy/typeshed/stdlib/distutils/command/build_scripts.pyi +24 -0
  327. mypy/typeshed/stdlib/distutils/command/check.pyi +39 -0
  328. mypy/typeshed/stdlib/distutils/command/clean.pyi +17 -0
  329. mypy/typeshed/stdlib/distutils/command/config.pyi +83 -0
  330. mypy/typeshed/stdlib/distutils/command/install.pyi +63 -0
  331. mypy/typeshed/stdlib/distutils/command/install_data.pyi +19 -0
  332. mypy/typeshed/stdlib/distutils/command/install_egg_info.pyi +18 -0
  333. mypy/typeshed/stdlib/distutils/command/install_headers.pyi +16 -0
  334. mypy/typeshed/stdlib/distutils/command/install_lib.pyi +25 -0
  335. mypy/typeshed/stdlib/distutils/command/install_scripts.pyi +18 -0
  336. mypy/typeshed/stdlib/distutils/command/register.pyi +18 -0
  337. mypy/typeshed/stdlib/distutils/command/sdist.pyi +42 -0
  338. mypy/typeshed/stdlib/distutils/command/upload.pyi +17 -0
  339. mypy/typeshed/stdlib/distutils/config.pyi +17 -0
  340. mypy/typeshed/stdlib/distutils/core.pyi +57 -0
  341. mypy/typeshed/stdlib/distutils/cygwinccompiler.pyi +20 -0
  342. mypy/typeshed/stdlib/distutils/debug.pyi +1 -0
  343. mypy/typeshed/stdlib/distutils/dep_util.pyi +3 -0
  344. mypy/typeshed/stdlib/distutils/dir_util.pyi +13 -0
  345. mypy/typeshed/stdlib/distutils/dist.pyi +146 -0
  346. mypy/typeshed/stdlib/distutils/errors.pyi +19 -0
  347. mypy/typeshed/stdlib/distutils/extension.pyi +36 -0
  348. mypy/typeshed/stdlib/distutils/fancy_getopt.pyi +34 -0
  349. mypy/typeshed/stdlib/distutils/file_util.pyi +14 -0
  350. mypy/typeshed/stdlib/distutils/filelist.pyi +50 -0
  351. mypy/typeshed/stdlib/distutils/log.pyi +25 -0
  352. mypy/typeshed/stdlib/distutils/msvccompiler.pyi +3 -0
  353. mypy/typeshed/stdlib/distutils/spawn.pyi +2 -0
  354. mypy/typeshed/stdlib/distutils/sysconfig.pyi +22 -0
  355. mypy/typeshed/stdlib/distutils/text_file.pyi +21 -0
  356. mypy/typeshed/stdlib/distutils/unixccompiler.pyi +3 -0
  357. mypy/typeshed/stdlib/distutils/util.pyi +46 -0
  358. mypy/typeshed/stdlib/distutils/version.pyi +36 -0
  359. mypy/typeshed/stdlib/doctest.pyi +248 -0
  360. mypy/typeshed/stdlib/dummy_threading.pyi +2 -0
  361. mypy/typeshed/stdlib/email/__init__.pyi +29 -0
  362. mypy/typeshed/stdlib/email/_header_value_parser.pyi +392 -0
  363. mypy/typeshed/stdlib/email/_policybase.pyi +51 -0
  364. mypy/typeshed/stdlib/email/base64mime.pyi +13 -0
  365. mypy/typeshed/stdlib/email/charset.pyi +34 -0
  366. mypy/typeshed/stdlib/email/contentmanager.pyi +11 -0
  367. mypy/typeshed/stdlib/email/encoders.pyi +8 -0
  368. mypy/typeshed/stdlib/email/errors.pyi +39 -0
  369. mypy/typeshed/stdlib/email/feedparser.pyi +23 -0
  370. mypy/typeshed/stdlib/email/generator.pyi +40 -0
  371. mypy/typeshed/stdlib/email/header.pyi +31 -0
  372. mypy/typeshed/stdlib/email/headerregistry.pyi +178 -0
  373. mypy/typeshed/stdlib/email/iterators.pyi +12 -0
  374. mypy/typeshed/stdlib/email/message.pyi +161 -0
  375. mypy/typeshed/stdlib/email/mime/__init__.pyi +0 -0
  376. mypy/typeshed/stdlib/email/mime/application.pyi +17 -0
  377. mypy/typeshed/stdlib/email/mime/audio.pyi +17 -0
  378. mypy/typeshed/stdlib/email/mime/base.pyi +8 -0
  379. mypy/typeshed/stdlib/email/mime/image.pyi +17 -0
  380. mypy/typeshed/stdlib/email/mime/message.pyi +8 -0
  381. mypy/typeshed/stdlib/email/mime/multipart.pyi +18 -0
  382. mypy/typeshed/stdlib/email/mime/nonmultipart.pyi +5 -0
  383. mypy/typeshed/stdlib/email/mime/text.pyi +9 -0
  384. mypy/typeshed/stdlib/email/parser.pyi +26 -0
  385. mypy/typeshed/stdlib/email/policy.pyi +38 -0
  386. mypy/typeshed/stdlib/email/quoprimime.pyi +28 -0
  387. mypy/typeshed/stdlib/email/utils.pyi +66 -0
  388. mypy/typeshed/stdlib/encodings/__init__.pyi +10 -0
  389. mypy/typeshed/stdlib/encodings/utf_8.pyi +21 -0
  390. mypy/typeshed/stdlib/encodings/utf_8_sig.pyi +22 -0
  391. mypy/typeshed/stdlib/ensurepip/__init__.pyi +12 -0
  392. mypy/typeshed/stdlib/enum.pyi +317 -0
  393. mypy/typeshed/stdlib/errno.pyi +222 -0
  394. mypy/typeshed/stdlib/faulthandler.pyi +13 -0
  395. mypy/typeshed/stdlib/fcntl.pyi +127 -0
  396. mypy/typeshed/stdlib/filecmp.pyi +57 -0
  397. mypy/typeshed/stdlib/fileinput.pyi +213 -0
  398. mypy/typeshed/stdlib/fnmatch.pyi +9 -0
  399. mypy/typeshed/stdlib/formatter.pyi +88 -0
  400. mypy/typeshed/stdlib/fractions.pyi +150 -0
  401. mypy/typeshed/stdlib/ftplib.pyi +178 -0
  402. mypy/typeshed/stdlib/functools.pyi +200 -0
  403. mypy/typeshed/stdlib/gc.pyi +37 -0
  404. mypy/typeshed/stdlib/genericpath.pyi +52 -0
  405. mypy/typeshed/stdlib/getopt.pyi +11 -0
  406. mypy/typeshed/stdlib/getpass.pyi +8 -0
  407. mypy/typeshed/stdlib/gettext.pyi +169 -0
  408. mypy/typeshed/stdlib/glob.pyi +42 -0
  409. mypy/typeshed/stdlib/graphlib.pyi +28 -0
  410. mypy/typeshed/stdlib/grp.pyi +21 -0
  411. mypy/typeshed/stdlib/gzip.pyi +160 -0
  412. mypy/typeshed/stdlib/hashlib.pyi +165 -0
  413. mypy/typeshed/stdlib/heapq.pyi +17 -0
  414. mypy/typeshed/stdlib/hmac.pyi +38 -0
  415. mypy/typeshed/stdlib/html/__init__.pyi +6 -0
  416. mypy/typeshed/stdlib/html/entities.pyi +6 -0
  417. mypy/typeshed/stdlib/html/parser.pyi +34 -0
  418. mypy/typeshed/stdlib/http/__init__.pyi +105 -0
  419. mypy/typeshed/stdlib/http/client.pyi +259 -0
  420. mypy/typeshed/stdlib/http/cookiejar.pyi +159 -0
  421. mypy/typeshed/stdlib/http/cookies.pyi +60 -0
  422. mypy/typeshed/stdlib/http/server.pyi +83 -0
  423. mypy/typeshed/stdlib/imaplib.pyi +168 -0
  424. mypy/typeshed/stdlib/imghdr.pyi +17 -0
  425. mypy/typeshed/stdlib/imp.pyi +62 -0
  426. mypy/typeshed/stdlib/importlib/__init__.pyi +24 -0
  427. mypy/typeshed/stdlib/importlib/_abc.pyi +15 -0
  428. mypy/typeshed/stdlib/importlib/abc.pyi +172 -0
  429. mypy/typeshed/stdlib/importlib/machinery.pyi +179 -0
  430. mypy/typeshed/stdlib/importlib/metadata/__init__.pyi +276 -0
  431. mypy/typeshed/stdlib/importlib/metadata/_meta.pyi +40 -0
  432. mypy/typeshed/stdlib/importlib/readers.pyi +68 -0
  433. mypy/typeshed/stdlib/importlib/resources/__init__.pyi +46 -0
  434. mypy/typeshed/stdlib/importlib/resources/abc.pyi +12 -0
  435. mypy/typeshed/stdlib/importlib/resources/readers.pyi +14 -0
  436. mypy/typeshed/stdlib/importlib/resources/simple.pyi +49 -0
  437. mypy/typeshed/stdlib/importlib/simple.pyi +11 -0
  438. mypy/typeshed/stdlib/importlib/util.pyi +43 -0
  439. mypy/typeshed/stdlib/inspect.pyi +631 -0
  440. mypy/typeshed/stdlib/io.pyi +204 -0
  441. mypy/typeshed/stdlib/ipaddress.pyi +208 -0
  442. mypy/typeshed/stdlib/itertools.pyi +293 -0
  443. mypy/typeshed/stdlib/json/__init__.pyi +61 -0
  444. mypy/typeshed/stdlib/json/decoder.pyi +32 -0
  445. mypy/typeshed/stdlib/json/encoder.pyi +38 -0
  446. mypy/typeshed/stdlib/json/tool.pyi +1 -0
  447. mypy/typeshed/stdlib/keyword.pyi +21 -0
  448. mypy/typeshed/stdlib/lib2to3/__init__.pyi +0 -0
  449. mypy/typeshed/stdlib/lib2to3/btm_matcher.pyi +28 -0
  450. mypy/typeshed/stdlib/lib2to3/fixer_base.pyi +42 -0
  451. mypy/typeshed/stdlib/lib2to3/fixes/__init__.pyi +0 -0
  452. mypy/typeshed/stdlib/lib2to3/fixes/fix_apply.pyi +8 -0
  453. mypy/typeshed/stdlib/lib2to3/fixes/fix_asserts.pyi +10 -0
  454. mypy/typeshed/stdlib/lib2to3/fixes/fix_basestring.pyi +8 -0
  455. mypy/typeshed/stdlib/lib2to3/fixes/fix_buffer.pyi +8 -0
  456. mypy/typeshed/stdlib/lib2to3/fixes/fix_dict.pyi +16 -0
  457. mypy/typeshed/stdlib/lib2to3/fixes/fix_except.pyi +14 -0
  458. mypy/typeshed/stdlib/lib2to3/fixes/fix_exec.pyi +8 -0
  459. mypy/typeshed/stdlib/lib2to3/fixes/fix_execfile.pyi +8 -0
  460. mypy/typeshed/stdlib/lib2to3/fixes/fix_exitfunc.pyi +13 -0
  461. mypy/typeshed/stdlib/lib2to3/fixes/fix_filter.pyi +9 -0
  462. mypy/typeshed/stdlib/lib2to3/fixes/fix_funcattrs.pyi +8 -0
  463. mypy/typeshed/stdlib/lib2to3/fixes/fix_future.pyi +8 -0
  464. mypy/typeshed/stdlib/lib2to3/fixes/fix_getcwdu.pyi +8 -0
  465. mypy/typeshed/stdlib/lib2to3/fixes/fix_has_key.pyi +8 -0
  466. mypy/typeshed/stdlib/lib2to3/fixes/fix_idioms.pyi +15 -0
  467. mypy/typeshed/stdlib/lib2to3/fixes/fix_import.pyi +16 -0
  468. mypy/typeshed/stdlib/lib2to3/fixes/fix_imports.pyi +21 -0
  469. mypy/typeshed/stdlib/lib2to3/fixes/fix_imports2.pyi +6 -0
  470. mypy/typeshed/stdlib/lib2to3/fixes/fix_input.pyi +11 -0
  471. mypy/typeshed/stdlib/lib2to3/fixes/fix_intern.pyi +9 -0
  472. mypy/typeshed/stdlib/lib2to3/fixes/fix_isinstance.pyi +8 -0
  473. mypy/typeshed/stdlib/lib2to3/fixes/fix_itertools.pyi +9 -0
  474. mypy/typeshed/stdlib/lib2to3/fixes/fix_itertools_imports.pyi +7 -0
  475. mypy/typeshed/stdlib/lib2to3/fixes/fix_long.pyi +7 -0
  476. mypy/typeshed/stdlib/lib2to3/fixes/fix_map.pyi +9 -0
  477. mypy/typeshed/stdlib/lib2to3/fixes/fix_metaclass.pyi +17 -0
  478. mypy/typeshed/stdlib/lib2to3/fixes/fix_methodattrs.pyi +10 -0
  479. mypy/typeshed/stdlib/lib2to3/fixes/fix_ne.pyi +8 -0
  480. mypy/typeshed/stdlib/lib2to3/fixes/fix_next.pyi +19 -0
  481. mypy/typeshed/stdlib/lib2to3/fixes/fix_nonzero.pyi +8 -0
  482. mypy/typeshed/stdlib/lib2to3/fixes/fix_numliterals.pyi +8 -0
  483. mypy/typeshed/stdlib/lib2to3/fixes/fix_operator.pyi +12 -0
  484. mypy/typeshed/stdlib/lib2to3/fixes/fix_paren.pyi +8 -0
  485. mypy/typeshed/stdlib/lib2to3/fixes/fix_print.pyi +12 -0
  486. mypy/typeshed/stdlib/lib2to3/fixes/fix_raise.pyi +8 -0
  487. mypy/typeshed/stdlib/lib2to3/fixes/fix_raw_input.pyi +8 -0
  488. mypy/typeshed/stdlib/lib2to3/fixes/fix_reduce.pyi +8 -0
  489. mypy/typeshed/stdlib/lib2to3/fixes/fix_reload.pyi +9 -0
  490. mypy/typeshed/stdlib/lib2to3/fixes/fix_renames.pyi +17 -0
  491. mypy/typeshed/stdlib/lib2to3/fixes/fix_repr.pyi +8 -0
  492. mypy/typeshed/stdlib/lib2to3/fixes/fix_set_literal.pyi +7 -0
  493. mypy/typeshed/stdlib/lib2to3/fixes/fix_standarderror.pyi +8 -0
  494. mypy/typeshed/stdlib/lib2to3/fixes/fix_sys_exc.pyi +9 -0
  495. mypy/typeshed/stdlib/lib2to3/fixes/fix_throw.pyi +8 -0
  496. mypy/typeshed/stdlib/lib2to3/fixes/fix_tuple_params.pyi +17 -0
  497. mypy/typeshed/stdlib/lib2to3/fixes/fix_types.pyi +8 -0
  498. mypy/typeshed/stdlib/lib2to3/fixes/fix_unicode.pyi +12 -0
  499. mypy/typeshed/stdlib/lib2to3/fixes/fix_urllib.pyi +15 -0
  500. mypy/typeshed/stdlib/lib2to3/fixes/fix_ws_comma.pyi +12 -0
  501. mypy/typeshed/stdlib/lib2to3/fixes/fix_xrange.pyi +20 -0
  502. mypy/typeshed/stdlib/lib2to3/fixes/fix_xreadlines.pyi +8 -0
  503. mypy/typeshed/stdlib/lib2to3/fixes/fix_zip.pyi +9 -0
  504. mypy/typeshed/stdlib/lib2to3/main.pyi +42 -0
  505. mypy/typeshed/stdlib/lib2to3/pgen2/__init__.pyi +9 -0
  506. mypy/typeshed/stdlib/lib2to3/pgen2/driver.pyi +27 -0
  507. mypy/typeshed/stdlib/lib2to3/pgen2/grammar.pyi +24 -0
  508. mypy/typeshed/stdlib/lib2to3/pgen2/literals.pyi +7 -0
  509. mypy/typeshed/stdlib/lib2to3/pgen2/parse.pyi +30 -0
  510. mypy/typeshed/stdlib/lib2to3/pgen2/pgen.pyi +50 -0
  511. mypy/typeshed/stdlib/lib2to3/pgen2/token.pyi +67 -0
  512. mypy/typeshed/stdlib/lib2to3/pgen2/tokenize.pyi +96 -0
  513. mypy/typeshed/stdlib/lib2to3/pygram.pyi +114 -0
  514. mypy/typeshed/stdlib/lib2to3/pytree.pyi +117 -0
  515. mypy/typeshed/stdlib/lib2to3/refactor.pyi +82 -0
  516. mypy/typeshed/stdlib/linecache.pyi +23 -0
  517. mypy/typeshed/stdlib/locale.pyi +152 -0
  518. mypy/typeshed/stdlib/logging/__init__.pyi +655 -0
  519. mypy/typeshed/stdlib/logging/config.pyi +134 -0
  520. mypy/typeshed/stdlib/logging/handlers.pyi +275 -0
  521. mypy/typeshed/stdlib/lzma.pyi +197 -0
  522. mypy/typeshed/stdlib/mailbox.pyi +256 -0
  523. mypy/typeshed/stdlib/mailcap.pyi +11 -0
  524. mypy/typeshed/stdlib/marshal.pyi +33 -0
  525. mypy/typeshed/stdlib/math.pyi +125 -0
  526. mypy/typeshed/stdlib/mimetypes.pyi +46 -0
  527. mypy/typeshed/stdlib/mmap.pyi +113 -0
  528. mypy/typeshed/stdlib/modulefinder.pyi +66 -0
  529. mypy/typeshed/stdlib/msilib/__init__.pyi +176 -0
  530. mypy/typeshed/stdlib/msilib/schema.pyi +94 -0
  531. mypy/typeshed/stdlib/msilib/sequence.pyi +13 -0
  532. mypy/typeshed/stdlib/msilib/text.pyi +7 -0
  533. mypy/typeshed/stdlib/msvcrt.pyi +32 -0
  534. mypy/typeshed/stdlib/multiprocessing/__init__.pyi +90 -0
  535. mypy/typeshed/stdlib/multiprocessing/connection.pyi +75 -0
  536. mypy/typeshed/stdlib/multiprocessing/context.pyi +187 -0
  537. mypy/typeshed/stdlib/multiprocessing/dummy/__init__.pyi +77 -0
  538. mypy/typeshed/stdlib/multiprocessing/dummy/connection.pyi +39 -0
  539. mypy/typeshed/stdlib/multiprocessing/forkserver.pyi +31 -0
  540. mypy/typeshed/stdlib/multiprocessing/heap.pyi +36 -0
  541. mypy/typeshed/stdlib/multiprocessing/managers.pyi +212 -0
  542. mypy/typeshed/stdlib/multiprocessing/pool.pyi +103 -0
  543. mypy/typeshed/stdlib/multiprocessing/popen_fork.pyi +23 -0
  544. mypy/typeshed/stdlib/multiprocessing/popen_forkserver.pyi +16 -0
  545. mypy/typeshed/stdlib/multiprocessing/popen_spawn_posix.pyi +20 -0
  546. mypy/typeshed/stdlib/multiprocessing/popen_spawn_win32.pyi +30 -0
  547. mypy/typeshed/stdlib/multiprocessing/process.pyi +39 -0
  548. mypy/typeshed/stdlib/multiprocessing/queues.pyi +41 -0
  549. mypy/typeshed/stdlib/multiprocessing/reduction.pyi +89 -0
  550. mypy/typeshed/stdlib/multiprocessing/resource_sharer.pyi +20 -0
  551. mypy/typeshed/stdlib/multiprocessing/resource_tracker.pyi +18 -0
  552. mypy/typeshed/stdlib/multiprocessing/shared_memory.pyi +40 -0
  553. mypy/typeshed/stdlib/multiprocessing/sharedctypes.pyi +101 -0
  554. mypy/typeshed/stdlib/multiprocessing/spawn.pyi +32 -0
  555. mypy/typeshed/stdlib/multiprocessing/synchronize.pyi +54 -0
  556. mypy/typeshed/stdlib/multiprocessing/util.pyi +79 -0
  557. mypy/typeshed/stdlib/netrc.pyi +23 -0
  558. mypy/typeshed/stdlib/nis.pyi +9 -0
  559. mypy/typeshed/stdlib/nntplib.pyi +125 -0
  560. mypy/typeshed/stdlib/nt.pyi +111 -0
  561. mypy/typeshed/stdlib/ntpath.pyi +119 -0
  562. mypy/typeshed/stdlib/nturl2path.pyi +2 -0
  563. mypy/typeshed/stdlib/numbers.pyi +154 -0
  564. mypy/typeshed/stdlib/opcode.pyi +59 -0
  565. mypy/typeshed/stdlib/operator.pyi +110 -0
  566. mypy/typeshed/stdlib/optparse.pyi +252 -0
  567. mypy/typeshed/stdlib/os/__init__.pyi +1139 -0
  568. mypy/typeshed/stdlib/os/path.pyi +8 -0
  569. mypy/typeshed/stdlib/ossaudiodev.pyi +131 -0
  570. mypy/typeshed/stdlib/parser.pyi +24 -0
  571. mypy/typeshed/stdlib/pathlib.pyi +232 -0
  572. mypy/typeshed/stdlib/pdb.pyi +181 -0
  573. mypy/typeshed/stdlib/pickle.pyi +270 -0
  574. mypy/typeshed/stdlib/pickletools.pyi +167 -0
  575. mypy/typeshed/stdlib/pipes.pyi +16 -0
  576. mypy/typeshed/stdlib/pkgutil.pyi +53 -0
  577. mypy/typeshed/stdlib/platform.pyi +42 -0
  578. mypy/typeshed/stdlib/plistlib.pyi +113 -0
  579. mypy/typeshed/stdlib/poplib.pyi +71 -0
  580. mypy/typeshed/stdlib/posix.pyi +359 -0
  581. mypy/typeshed/stdlib/posixpath.pyi +161 -0
  582. mypy/typeshed/stdlib/pprint.pyi +112 -0
  583. mypy/typeshed/stdlib/profile.pyi +31 -0
  584. mypy/typeshed/stdlib/pstats.pyi +78 -0
  585. mypy/typeshed/stdlib/pty.pyi +19 -0
  586. mypy/typeshed/stdlib/pwd.pyi +27 -0
  587. mypy/typeshed/stdlib/py_compile.pyi +34 -0
  588. mypy/typeshed/stdlib/pyclbr.pyi +74 -0
  589. mypy/typeshed/stdlib/pydoc.pyi +261 -0
  590. mypy/typeshed/stdlib/pydoc_data/__init__.pyi +0 -0
  591. mypy/typeshed/stdlib/pydoc_data/topics.pyi +1 -0
  592. mypy/typeshed/stdlib/pyexpat/__init__.pyi +80 -0
  593. mypy/typeshed/stdlib/pyexpat/errors.pyi +49 -0
  594. mypy/typeshed/stdlib/pyexpat/model.pyi +11 -0
  595. mypy/typeshed/stdlib/queue.pyi +58 -0
  596. mypy/typeshed/stdlib/quopri.pyi +11 -0
  597. mypy/typeshed/stdlib/random.pyi +138 -0
  598. mypy/typeshed/stdlib/re.pyi +290 -0
  599. mypy/typeshed/stdlib/readline.pyi +36 -0
  600. mypy/typeshed/stdlib/reprlib.pyi +65 -0
  601. mypy/typeshed/stdlib/resource.pyi +92 -0
  602. mypy/typeshed/stdlib/rlcompleter.pyi +9 -0
  603. mypy/typeshed/stdlib/runpy.pyi +24 -0
  604. mypy/typeshed/stdlib/sched.pyi +42 -0
  605. mypy/typeshed/stdlib/secrets.pyi +15 -0
  606. mypy/typeshed/stdlib/select.pyi +151 -0
  607. mypy/typeshed/stdlib/selectors.pyi +67 -0
  608. mypy/typeshed/stdlib/shelve.pyi +46 -0
  609. mypy/typeshed/stdlib/shlex.pyi +43 -0
  610. mypy/typeshed/stdlib/shutil.pyi +189 -0
  611. mypy/typeshed/stdlib/signal.pyi +189 -0
  612. mypy/typeshed/stdlib/site.pyi +27 -0
  613. mypy/typeshed/stdlib/smtpd.pyi +91 -0
  614. mypy/typeshed/stdlib/smtplib.pyi +204 -0
  615. mypy/typeshed/stdlib/sndhdr.pyi +14 -0
  616. mypy/typeshed/stdlib/socket.pyi +825 -0
  617. mypy/typeshed/stdlib/socketserver.pyi +168 -0
  618. mypy/typeshed/stdlib/spwd.pyi +40 -0
  619. mypy/typeshed/stdlib/sqlite3/__init__.pyi +1 -0
  620. mypy/typeshed/stdlib/sqlite3/dbapi2.pyi +469 -0
  621. mypy/typeshed/stdlib/sre_compile.pyi +11 -0
  622. mypy/typeshed/stdlib/sre_constants.pyi +130 -0
  623. mypy/typeshed/stdlib/sre_parse.pyi +104 -0
  624. mypy/typeshed/stdlib/ssl.pyi +529 -0
  625. mypy/typeshed/stdlib/stat.pyi +1 -0
  626. mypy/typeshed/stdlib/statistics.pyi +132 -0
  627. mypy/typeshed/stdlib/string.pyi +83 -0
  628. mypy/typeshed/stdlib/stringprep.pyi +27 -0
  629. mypy/typeshed/stdlib/struct.pyi +26 -0
  630. mypy/typeshed/stdlib/subprocess.pyi +2614 -0
  631. mypy/typeshed/stdlib/sunau.pyi +86 -0
  632. mypy/typeshed/stdlib/symbol.pyi +93 -0
  633. mypy/typeshed/stdlib/symtable.pyi +58 -0
  634. mypy/typeshed/stdlib/sys/__init__.pyi +373 -0
  635. mypy/typeshed/stdlib/sys/_monitoring.pyi +52 -0
  636. mypy/typeshed/stdlib/sysconfig.pyi +43 -0
  637. mypy/typeshed/stdlib/syslog.pyi +46 -0
  638. mypy/typeshed/stdlib/tabnanny.pyi +16 -0
  639. mypy/typeshed/stdlib/tarfile.pyi +438 -0
  640. mypy/typeshed/stdlib/telnetlib.pyi +122 -0
  641. mypy/typeshed/stdlib/tempfile.pyi +477 -0
  642. mypy/typeshed/stdlib/termios.pyi +267 -0
  643. mypy/typeshed/stdlib/textwrap.pyi +103 -0
  644. mypy/typeshed/stdlib/this.pyi +2 -0
  645. mypy/typeshed/stdlib/threading.pyi +187 -0
  646. mypy/typeshed/stdlib/time.pyi +107 -0
  647. mypy/typeshed/stdlib/timeit.pyi +32 -0
  648. mypy/typeshed/stdlib/tkinter/__init__.pyi +3641 -0
  649. mypy/typeshed/stdlib/tkinter/colorchooser.pyi +20 -0
  650. mypy/typeshed/stdlib/tkinter/commondialog.pyi +14 -0
  651. mypy/typeshed/stdlib/tkinter/constants.pyi +80 -0
  652. mypy/typeshed/stdlib/tkinter/dialog.pyi +16 -0
  653. mypy/typeshed/stdlib/tkinter/dnd.pyi +20 -0
  654. mypy/typeshed/stdlib/tkinter/filedialog.pyi +151 -0
  655. mypy/typeshed/stdlib/tkinter/font.pyi +116 -0
  656. mypy/typeshed/stdlib/tkinter/messagebox.pyi +44 -0
  657. mypy/typeshed/stdlib/tkinter/scrolledtext.pyi +10 -0
  658. mypy/typeshed/stdlib/tkinter/simpledialog.pyi +54 -0
  659. mypy/typeshed/stdlib/tkinter/tix.pyi +299 -0
  660. mypy/typeshed/stdlib/tkinter/ttk.pyi +1191 -0
  661. mypy/typeshed/stdlib/token.pyi +159 -0
  662. mypy/typeshed/stdlib/tokenize.pyi +177 -0
  663. mypy/typeshed/stdlib/tomllib.pyi +10 -0
  664. mypy/typeshed/stdlib/trace.pyi +79 -0
  665. mypy/typeshed/stdlib/traceback.pyi +260 -0
  666. mypy/typeshed/stdlib/tracemalloc.pyi +124 -0
  667. mypy/typeshed/stdlib/tty.pyi +30 -0
  668. mypy/typeshed/stdlib/turtle.pyi +713 -0
  669. mypy/typeshed/stdlib/types.pyi +605 -0
  670. mypy/typeshed/stdlib/typing.pyi +968 -0
  671. mypy/typeshed/stdlib/typing_extensions.pyi +503 -0
  672. mypy/typeshed/stdlib/unicodedata.pyi +71 -0
  673. mypy/typeshed/stdlib/unittest/__init__.pyi +67 -0
  674. mypy/typeshed/stdlib/unittest/_log.pyi +27 -0
  675. mypy/typeshed/stdlib/unittest/async_case.pyi +21 -0
  676. mypy/typeshed/stdlib/unittest/case.pyi +342 -0
  677. mypy/typeshed/stdlib/unittest/loader.pyi +51 -0
  678. mypy/typeshed/stdlib/unittest/main.pyi +69 -0
  679. mypy/typeshed/stdlib/unittest/mock.pyi +430 -0
  680. mypy/typeshed/stdlib/unittest/result.pyi +46 -0
  681. mypy/typeshed/stdlib/unittest/runner.pyi +72 -0
  682. mypy/typeshed/stdlib/unittest/signals.pyi +15 -0
  683. mypy/typeshed/stdlib/unittest/suite.pyi +22 -0
  684. mypy/typeshed/stdlib/unittest/util.pyi +23 -0
  685. mypy/typeshed/stdlib/urllib/__init__.pyi +0 -0
  686. mypy/typeshed/stdlib/urllib/error.pyi +23 -0
  687. mypy/typeshed/stdlib/urllib/parse.pyi +210 -0
  688. mypy/typeshed/stdlib/urllib/request.pyi +399 -0
  689. mypy/typeshed/stdlib/urllib/response.pyi +43 -0
  690. mypy/typeshed/stdlib/urllib/robotparser.pyi +20 -0
  691. mypy/typeshed/stdlib/uu.pyi +13 -0
  692. mypy/typeshed/stdlib/uuid.pyi +100 -0
  693. mypy/typeshed/stdlib/venv/__init__.pyi +79 -0
  694. mypy/typeshed/stdlib/warnings.pyi +112 -0
  695. mypy/typeshed/stdlib/wave.pyi +85 -0
  696. mypy/typeshed/stdlib/weakref.pyi +150 -0
  697. mypy/typeshed/stdlib/webbrowser.pyi +74 -0
  698. mypy/typeshed/stdlib/winreg.pyi +103 -0
  699. mypy/typeshed/stdlib/winsound.pyi +28 -0
  700. mypy/typeshed/stdlib/wsgiref/__init__.pyi +0 -0
  701. mypy/typeshed/stdlib/wsgiref/handlers.pyi +91 -0
  702. mypy/typeshed/stdlib/wsgiref/headers.pyi +26 -0
  703. mypy/typeshed/stdlib/wsgiref/simple_server.pyi +37 -0
  704. mypy/typeshed/stdlib/wsgiref/types.pyi +32 -0
  705. mypy/typeshed/stdlib/wsgiref/util.pyi +24 -0
  706. mypy/typeshed/stdlib/wsgiref/validate.pyi +50 -0
  707. mypy/typeshed/stdlib/xdrlib.pyi +57 -0
  708. mypy/typeshed/stdlib/xml/__init__.pyi +1 -0
  709. mypy/typeshed/stdlib/xml/dom/NodeFilter.pyi +19 -0
  710. mypy/typeshed/stdlib/xml/dom/__init__.pyi +69 -0
  711. mypy/typeshed/stdlib/xml/dom/domreg.pyi +8 -0
  712. mypy/typeshed/stdlib/xml/dom/expatbuilder.pyi +100 -0
  713. mypy/typeshed/stdlib/xml/dom/minicompat.pyi +22 -0
  714. mypy/typeshed/stdlib/xml/dom/minidom.pyi +404 -0
  715. mypy/typeshed/stdlib/xml/dom/pulldom.pyi +94 -0
  716. mypy/typeshed/stdlib/xml/dom/xmlbuilder.pyi +108 -0
  717. mypy/typeshed/stdlib/xml/etree/ElementInclude.pyi +28 -0
  718. mypy/typeshed/stdlib/xml/etree/ElementPath.pyi +34 -0
  719. mypy/typeshed/stdlib/xml/etree/ElementTree.pyi +321 -0
  720. mypy/typeshed/stdlib/xml/etree/__init__.pyi +0 -0
  721. mypy/typeshed/stdlib/xml/etree/cElementTree.pyi +1 -0
  722. mypy/typeshed/stdlib/xml/parsers/__init__.pyi +1 -0
  723. mypy/typeshed/stdlib/xml/parsers/expat/__init__.pyi +1 -0
  724. mypy/typeshed/stdlib/xml/parsers/expat/errors.pyi +1 -0
  725. mypy/typeshed/stdlib/xml/parsers/expat/model.pyi +1 -0
  726. mypy/typeshed/stdlib/xml/sax/__init__.pyi +25 -0
  727. mypy/typeshed/stdlib/xml/sax/_exceptions.pyi +19 -0
  728. mypy/typeshed/stdlib/xml/sax/handler.pyi +55 -0
  729. mypy/typeshed/stdlib/xml/sax/saxutils.pyi +60 -0
  730. mypy/typeshed/stdlib/xml/sax/xmlreader.pyi +87 -0
  731. mypy/typeshed/stdlib/xmlrpc/__init__.pyi +0 -0
  732. mypy/typeshed/stdlib/xmlrpc/client.pyi +296 -0
  733. mypy/typeshed/stdlib/xmlrpc/server.pyi +143 -0
  734. mypy/typeshed/stdlib/xxlimited.pyi +22 -0
  735. mypy/typeshed/stdlib/zipapp.pyi +20 -0
  736. mypy/typeshed/stdlib/zipfile/__init__.pyi +306 -0
  737. mypy/typeshed/stdlib/zipfile/_path.pyi +95 -0
  738. mypy/typeshed/stdlib/zipimport.pyi +32 -0
  739. mypy/typeshed/stdlib/zlib.pyi +56 -0
  740. mypy/typeshed/stdlib/zoneinfo/__init__.pyi +38 -0
  741. mypy/typeshed/stubs/mypy-extensions/mypy_extensions.pyi +218 -0
  742. mypy/typestate.py +323 -0
  743. mypy/typetraverser.py +142 -0
  744. mypy/typevars.py +93 -0
  745. mypy/typevartuples.py +32 -0
  746. mypy/util.py +869 -0
  747. mypy/version.py +1 -0
  748. mypy/visitor.py +621 -0
  749. mypy/xml/mypy-html.css +104 -0
  750. mypy/xml/mypy-html.xslt +81 -0
  751. mypy/xml/mypy-txt.xslt +100 -0
  752. mypy/xml/mypy.xsd +50 -0
  753. mypy_dev-1.9.0.dev0.dist-info/LICENSE +229 -0
  754. mypy_dev-1.9.0.dev0.dist-info/METADATA +39 -0
  755. mypy_dev-1.9.0.dev0.dist-info/RECORD +1018 -0
  756. mypy_dev-1.9.0.dev0.dist-info/WHEEL +5 -0
  757. mypy_dev-1.9.0.dev0.dist-info/entry_points.txt +6 -0
  758. mypy_dev-1.9.0.dev0.dist-info/top_level.txt +2 -0
  759. mypyc/README.md +133 -0
  760. mypyc/__init__.py +0 -0
  761. mypyc/__main__.py +57 -0
  762. mypyc/analysis/__init__.py +0 -0
  763. mypyc/analysis/attrdefined.py +436 -0
  764. mypyc/analysis/blockfreq.py +32 -0
  765. mypyc/analysis/dataflow.py +624 -0
  766. mypyc/analysis/ircheck.py +429 -0
  767. mypyc/analysis/selfleaks.py +207 -0
  768. mypyc/build.py +616 -0
  769. mypyc/codegen/__init__.py +0 -0
  770. mypyc/codegen/cstring.py +54 -0
  771. mypyc/codegen/emit.py +1193 -0
  772. mypyc/codegen/emitclass.py +1060 -0
  773. mypyc/codegen/emitfunc.py +846 -0
  774. mypyc/codegen/emitmodule.py +1131 -0
  775. mypyc/codegen/emitwrapper.py +979 -0
  776. mypyc/codegen/literals.py +302 -0
  777. mypyc/common.py +136 -0
  778. mypyc/crash.py +31 -0
  779. mypyc/doc/Makefile +20 -0
  780. mypyc/doc/bool_operations.rst +27 -0
  781. mypyc/doc/compilation_units.rst +20 -0
  782. mypyc/doc/conf.py +59 -0
  783. mypyc/doc/cpython-timings.md +25 -0
  784. mypyc/doc/dev-intro.md +548 -0
  785. mypyc/doc/dict_operations.rst +59 -0
  786. mypyc/doc/differences_from_python.rst +332 -0
  787. mypyc/doc/float_operations.rst +50 -0
  788. mypyc/doc/future.md +42 -0
  789. mypyc/doc/getting_started.rst +240 -0
  790. mypyc/doc/index.rst +61 -0
  791. mypyc/doc/int_operations.rst +162 -0
  792. mypyc/doc/introduction.rst +150 -0
  793. mypyc/doc/list_operations.rst +65 -0
  794. mypyc/doc/make.bat +35 -0
  795. mypyc/doc/native_classes.rst +206 -0
  796. mypyc/doc/native_operations.rst +55 -0
  797. mypyc/doc/performance_tips_and_tricks.rst +244 -0
  798. mypyc/doc/set_operations.rst +47 -0
  799. mypyc/doc/str_operations.rst +35 -0
  800. mypyc/doc/tuple_operations.rst +33 -0
  801. mypyc/doc/using_type_annotations.rst +398 -0
  802. mypyc/errors.py +29 -0
  803. mypyc/external/googletest/LICENSE +28 -0
  804. mypyc/external/googletest/README.md +280 -0
  805. mypyc/external/googletest/include/gtest/gtest-death-test.h +294 -0
  806. mypyc/external/googletest/include/gtest/gtest-message.h +250 -0
  807. mypyc/external/googletest/include/gtest/gtest-param-test.h +1444 -0
  808. mypyc/external/googletest/include/gtest/gtest-param-test.h.pump +510 -0
  809. mypyc/external/googletest/include/gtest/gtest-printers.h +993 -0
  810. mypyc/external/googletest/include/gtest/gtest-spi.h +232 -0
  811. mypyc/external/googletest/include/gtest/gtest-test-part.h +179 -0
  812. mypyc/external/googletest/include/gtest/gtest-typed-test.h +263 -0
  813. mypyc/external/googletest/include/gtest/gtest.h +2236 -0
  814. mypyc/external/googletest/include/gtest/gtest_pred_impl.h +358 -0
  815. mypyc/external/googletest/include/gtest/gtest_prod.h +58 -0
  816. mypyc/external/googletest/include/gtest/internal/custom/gtest-port.h +69 -0
  817. mypyc/external/googletest/include/gtest/internal/custom/gtest-printers.h +42 -0
  818. mypyc/external/googletest/include/gtest/internal/custom/gtest.h +41 -0
  819. mypyc/external/googletest/include/gtest/internal/gtest-death-test-internal.h +319 -0
  820. mypyc/external/googletest/include/gtest/internal/gtest-filepath.h +206 -0
  821. mypyc/external/googletest/include/gtest/internal/gtest-internal.h +1238 -0
  822. mypyc/external/googletest/include/gtest/internal/gtest-linked_ptr.h +243 -0
  823. mypyc/external/googletest/include/gtest/internal/gtest-param-util-generated.h +5146 -0
  824. mypyc/external/googletest/include/gtest/internal/gtest-param-util-generated.h.pump +286 -0
  825. mypyc/external/googletest/include/gtest/internal/gtest-param-util.h +731 -0
  826. mypyc/external/googletest/include/gtest/internal/gtest-port-arch.h +93 -0
  827. mypyc/external/googletest/include/gtest/internal/gtest-port.h +2560 -0
  828. mypyc/external/googletest/include/gtest/internal/gtest-string.h +167 -0
  829. mypyc/external/googletest/include/gtest/internal/gtest-tuple.h +1020 -0
  830. mypyc/external/googletest/include/gtest/internal/gtest-tuple.h.pump +347 -0
  831. mypyc/external/googletest/include/gtest/internal/gtest-type-util.h +3331 -0
  832. mypyc/external/googletest/include/gtest/internal/gtest-type-util.h.pump +297 -0
  833. mypyc/external/googletest/make/Makefile +61 -0
  834. mypyc/external/googletest/src/gtest-all.cc +48 -0
  835. mypyc/external/googletest/src/gtest-death-test.cc +1342 -0
  836. mypyc/external/googletest/src/gtest-filepath.cc +387 -0
  837. mypyc/external/googletest/src/gtest-internal-inl.h +1183 -0
  838. mypyc/external/googletest/src/gtest-port.cc +1259 -0
  839. mypyc/external/googletest/src/gtest-printers.cc +373 -0
  840. mypyc/external/googletest/src/gtest-test-part.cc +110 -0
  841. mypyc/external/googletest/src/gtest-typed-test.cc +118 -0
  842. mypyc/external/googletest/src/gtest.cc +5388 -0
  843. mypyc/external/googletest/src/gtest_main.cc +38 -0
  844. mypyc/ir/__init__.py +0 -0
  845. mypyc/ir/class_ir.py +499 -0
  846. mypyc/ir/func_ir.py +370 -0
  847. mypyc/ir/module_ir.py +88 -0
  848. mypyc/ir/ops.py +1642 -0
  849. mypyc/ir/pprint.py +496 -0
  850. mypyc/ir/rtypes.py +1038 -0
  851. mypyc/irbuild/__init__.py +0 -0
  852. mypyc/irbuild/ast_helpers.py +120 -0
  853. mypyc/irbuild/builder.py +1398 -0
  854. mypyc/irbuild/callable_class.py +173 -0
  855. mypyc/irbuild/classdef.py +850 -0
  856. mypyc/irbuild/constant_fold.py +95 -0
  857. mypyc/irbuild/context.py +186 -0
  858. mypyc/irbuild/env_class.py +223 -0
  859. mypyc/irbuild/expression.py +1067 -0
  860. mypyc/irbuild/for_helpers.py +1046 -0
  861. mypyc/irbuild/format_str_tokenizer.py +250 -0
  862. mypyc/irbuild/function.py +1089 -0
  863. mypyc/irbuild/generator.py +346 -0
  864. mypyc/irbuild/ll_builder.py +2407 -0
  865. mypyc/irbuild/main.py +153 -0
  866. mypyc/irbuild/mapper.py +221 -0
  867. mypyc/irbuild/match.py +355 -0
  868. mypyc/irbuild/nonlocalcontrol.py +197 -0
  869. mypyc/irbuild/prebuildvisitor.py +203 -0
  870. mypyc/irbuild/prepare.py +609 -0
  871. mypyc/irbuild/specialize.py +822 -0
  872. mypyc/irbuild/statement.py +1017 -0
  873. mypyc/irbuild/targets.py +57 -0
  874. mypyc/irbuild/util.py +189 -0
  875. mypyc/irbuild/visitor.py +401 -0
  876. mypyc/irbuild/vtable.py +82 -0
  877. mypyc/lib-rt/CPy.h +643 -0
  878. mypyc/lib-rt/bytes_ops.c +143 -0
  879. mypyc/lib-rt/dict_ops.c +446 -0
  880. mypyc/lib-rt/exc_ops.c +259 -0
  881. mypyc/lib-rt/float_ops.c +192 -0
  882. mypyc/lib-rt/generic_ops.c +64 -0
  883. mypyc/lib-rt/getargs.c +450 -0
  884. mypyc/lib-rt/getargsfast.c +569 -0
  885. mypyc/lib-rt/init.c +13 -0
  886. mypyc/lib-rt/int_ops.c +803 -0
  887. mypyc/lib-rt/list_ops.c +335 -0
  888. mypyc/lib-rt/misc_ops.c +942 -0
  889. mypyc/lib-rt/module_shim.tmpl +18 -0
  890. mypyc/lib-rt/mypyc_util.h +118 -0
  891. mypyc/lib-rt/pythoncapi_compat.h +497 -0
  892. mypyc/lib-rt/pythonsupport.h +548 -0
  893. mypyc/lib-rt/set_ops.c +17 -0
  894. mypyc/lib-rt/setup.py +70 -0
  895. mypyc/lib-rt/str_ops.c +241 -0
  896. mypyc/lib-rt/test_capi.cc +585 -0
  897. mypyc/lib-rt/tuple_ops.c +61 -0
  898. mypyc/namegen.py +115 -0
  899. mypyc/options.py +32 -0
  900. mypyc/primitives/__init__.py +0 -0
  901. mypyc/primitives/bytes_ops.py +101 -0
  902. mypyc/primitives/dict_ops.py +325 -0
  903. mypyc/primitives/exc_ops.py +101 -0
  904. mypyc/primitives/float_ops.py +168 -0
  905. mypyc/primitives/generic_ops.py +384 -0
  906. mypyc/primitives/int_ops.py +304 -0
  907. mypyc/primitives/list_ops.py +300 -0
  908. mypyc/primitives/misc_ops.py +241 -0
  909. mypyc/primitives/registry.py +323 -0
  910. mypyc/primitives/set_ops.py +121 -0
  911. mypyc/primitives/str_ops.py +229 -0
  912. mypyc/primitives/tuple_ops.py +83 -0
  913. mypyc/rt_subtype.py +77 -0
  914. mypyc/sametype.py +83 -0
  915. mypyc/subtype.py +88 -0
  916. mypyc/test/__init__.py +0 -0
  917. mypyc/test/config.py +13 -0
  918. mypyc/test/test_alwaysdefined.py +46 -0
  919. mypyc/test/test_analysis.py +77 -0
  920. mypyc/test/test_cheader.py +45 -0
  921. mypyc/test/test_commandline.py +82 -0
  922. mypyc/test/test_emit.py +69 -0
  923. mypyc/test/test_emitclass.py +35 -0
  924. mypyc/test/test_emitfunc.py +926 -0
  925. mypyc/test/test_emitwrapper.py +60 -0
  926. mypyc/test/test_exceptions.py +56 -0
  927. mypyc/test/test_external.py +49 -0
  928. mypyc/test/test_irbuild.py +87 -0
  929. mypyc/test/test_ircheck.py +199 -0
  930. mypyc/test/test_literals.py +90 -0
  931. mypyc/test/test_namegen.py +48 -0
  932. mypyc/test/test_pprint.py +42 -0
  933. mypyc/test/test_rarray.py +48 -0
  934. mypyc/test/test_refcount.py +59 -0
  935. mypyc/test/test_run.py +426 -0
  936. mypyc/test/test_serialization.py +108 -0
  937. mypyc/test/test_struct.py +112 -0
  938. mypyc/test/test_tuplename.py +33 -0
  939. mypyc/test/test_typeops.py +97 -0
  940. mypyc/test/testutil.py +283 -0
  941. mypyc/test-data/alwaysdefined.test +732 -0
  942. mypyc/test-data/analysis.test +603 -0
  943. mypyc/test-data/commandline.test +245 -0
  944. mypyc/test-data/driver/driver.py +48 -0
  945. mypyc/test-data/exceptions-freq.test +125 -0
  946. mypyc/test-data/exceptions.test +713 -0
  947. mypyc/test-data/fixtures/ir.py +373 -0
  948. mypyc/test-data/fixtures/testutil.py +103 -0
  949. mypyc/test-data/fixtures/typing-full.pyi +169 -0
  950. mypyc/test-data/irbuild-any.test +238 -0
  951. mypyc/test-data/irbuild-basic.test +3690 -0
  952. mypyc/test-data/irbuild-bool.test +463 -0
  953. mypyc/test-data/irbuild-bytes.test +184 -0
  954. mypyc/test-data/irbuild-classes.test +1303 -0
  955. mypyc/test-data/irbuild-constant-fold.test +480 -0
  956. mypyc/test-data/irbuild-dict.test +585 -0
  957. mypyc/test-data/irbuild-dunders.test +223 -0
  958. mypyc/test-data/irbuild-float.test +497 -0
  959. mypyc/test-data/irbuild-generics.test +151 -0
  960. mypyc/test-data/irbuild-glue-methods.test +437 -0
  961. mypyc/test-data/irbuild-i16.test +526 -0
  962. mypyc/test-data/irbuild-i32.test +598 -0
  963. mypyc/test-data/irbuild-i64.test +2164 -0
  964. mypyc/test-data/irbuild-int.test +235 -0
  965. mypyc/test-data/irbuild-isinstance.test +109 -0
  966. mypyc/test-data/irbuild-lists.test +547 -0
  967. mypyc/test-data/irbuild-match.test +1708 -0
  968. mypyc/test-data/irbuild-math.test +64 -0
  969. mypyc/test-data/irbuild-nested.test +807 -0
  970. mypyc/test-data/irbuild-optional.test +536 -0
  971. mypyc/test-data/irbuild-set.test +838 -0
  972. mypyc/test-data/irbuild-singledispatch.test +257 -0
  973. mypyc/test-data/irbuild-statements.test +1149 -0
  974. mypyc/test-data/irbuild-str.test +314 -0
  975. mypyc/test-data/irbuild-strip-asserts.test +12 -0
  976. mypyc/test-data/irbuild-try.test +523 -0
  977. mypyc/test-data/irbuild-tuple.test +462 -0
  978. mypyc/test-data/irbuild-u8.test +543 -0
  979. mypyc/test-data/irbuild-unreachable.test +241 -0
  980. mypyc/test-data/irbuild-vectorcall.test +153 -0
  981. mypyc/test-data/refcount.test +1588 -0
  982. mypyc/test-data/run-async.test +145 -0
  983. mypyc/test-data/run-attrs.test +318 -0
  984. mypyc/test-data/run-bench.test +196 -0
  985. mypyc/test-data/run-bools.test +229 -0
  986. mypyc/test-data/run-bytes.test +302 -0
  987. mypyc/test-data/run-classes.test +2505 -0
  988. mypyc/test-data/run-dicts.test +334 -0
  989. mypyc/test-data/run-dunders.test +945 -0
  990. mypyc/test-data/run-exceptions.test +448 -0
  991. mypyc/test-data/run-floats.test +516 -0
  992. mypyc/test-data/run-functions.test +1310 -0
  993. mypyc/test-data/run-generators.test +681 -0
  994. mypyc/test-data/run-i16.test +338 -0
  995. mypyc/test-data/run-i32.test +336 -0
  996. mypyc/test-data/run-i64.test +1519 -0
  997. mypyc/test-data/run-imports.test +265 -0
  998. mypyc/test-data/run-integers.test +540 -0
  999. mypyc/test-data/run-lists.test +411 -0
  1000. mypyc/test-data/run-loops.test +485 -0
  1001. mypyc/test-data/run-match.test +283 -0
  1002. mypyc/test-data/run-math.test +106 -0
  1003. mypyc/test-data/run-misc.test +1168 -0
  1004. mypyc/test-data/run-multimodule.test +887 -0
  1005. mypyc/test-data/run-mypy-sim.test +138 -0
  1006. mypyc/test-data/run-primitives.test +375 -0
  1007. mypyc/test-data/run-python37.test +159 -0
  1008. mypyc/test-data/run-python38.test +88 -0
  1009. mypyc/test-data/run-sets.test +150 -0
  1010. mypyc/test-data/run-singledispatch.test +698 -0
  1011. mypyc/test-data/run-strings.test +641 -0
  1012. mypyc/test-data/run-traits.test +411 -0
  1013. mypyc/test-data/run-tuples.test +258 -0
  1014. mypyc/test-data/run-u8.test +303 -0
  1015. mypyc/transform/__init__.py +0 -0
  1016. mypyc/transform/exceptions.py +182 -0
  1017. mypyc/transform/refcount.py +294 -0
  1018. mypyc/transform/uninit.py +190 -0
@@ -0,0 +1,1168 @@
1
+ [case testMaybeUninitVar]
2
+ class C:
3
+ def __init__(self, x: int) -> None:
4
+ self.x = x
5
+
6
+ def f(b: bool) -> None:
7
+ u = C(1)
8
+ while b:
9
+ v = C(2)
10
+ if v is not u:
11
+ break
12
+ print(v.x)
13
+ [file driver.py]
14
+ from native import f
15
+ f(True)
16
+ [out]
17
+ 2
18
+
19
+ [case testUninitBoom]
20
+ def f(a: bool, b: bool) -> None:
21
+ if a:
22
+ x = 'lol'
23
+ if b:
24
+ print(x)
25
+
26
+ def g() -> None:
27
+ try:
28
+ [0][1]
29
+ y = 1
30
+ except Exception:
31
+ pass
32
+ print(y)
33
+
34
+ [file driver.py]
35
+ from native import f, g
36
+ from testutil import assertRaises
37
+
38
+ f(True, True)
39
+ f(False, False)
40
+ with assertRaises(NameError):
41
+ f(False, True)
42
+ with assertRaises(NameError):
43
+ g()
44
+ [out]
45
+ lol
46
+
47
+ [case testBuiltins]
48
+ y = 10
49
+ def f(x: int) -> None:
50
+ print(5)
51
+ d = globals()
52
+ assert d['y'] == 10
53
+ d['y'] = 20
54
+ assert y == 20
55
+ [file driver.py]
56
+ from native import f
57
+ f(5)
58
+ [out]
59
+ 5
60
+
61
+ [case testOptional]
62
+ from typing import Optional
63
+
64
+ class A: pass
65
+
66
+ def f(x: Optional[A]) -> Optional[A]:
67
+ return x
68
+
69
+ def g(x: Optional[A]) -> int:
70
+ if x is None:
71
+ return 1
72
+ if x is not None:
73
+ return 2
74
+ return 3
75
+
76
+ def h(x: Optional[int], y: Optional[bool]) -> None:
77
+ pass
78
+
79
+ [file driver.py]
80
+ from native import f, g, A
81
+ a = A()
82
+ assert f(None) is None
83
+ assert f(a) is a
84
+ assert g(None) == 1
85
+ assert g(a) == 2
86
+
87
+ [case testInferredOptionalAssignment]
88
+ from typing import Any, Generator
89
+
90
+ def f(b: bool) -> Any:
91
+ if b:
92
+ x = None
93
+ else:
94
+ x = 1
95
+
96
+ if b:
97
+ y = 1
98
+ else:
99
+ y = None
100
+
101
+ m = 1 if b else None
102
+ n = None if b else 1
103
+ return ((x, y), (m, n))
104
+
105
+ def gen(b: bool) -> Generator[Any, None, None]:
106
+ if b:
107
+ y = 1
108
+ else:
109
+ y = None
110
+ yield y
111
+
112
+ assert f(False) == ((1, None), (None, 1))
113
+ assert f(True) == ((None, 1), (1, None))
114
+ assert next(gen(False)) is None
115
+ assert next(gen(True)) == 1
116
+
117
+ [case testWith]
118
+ from typing import Any
119
+ class Thing:
120
+ def __init__(self, x: str) -> None:
121
+ self.x = x
122
+ def __enter__(self) -> str:
123
+ print('enter!', self.x)
124
+ if self.x == 'crash':
125
+ raise Exception('ohno')
126
+ return self.x
127
+ def __exit__(self, x: Any, y: Any, z: Any) -> None:
128
+ print('exit!', self.x, y)
129
+
130
+ def foo(i: int) -> int:
131
+ with Thing('a') as x:
132
+ print("yooo?", x)
133
+ if i == 0:
134
+ return 10
135
+ elif i == 1:
136
+ raise Exception('exception!')
137
+ return -1
138
+
139
+ def bar() -> None:
140
+ with Thing('a') as x, Thing('b') as y:
141
+ print("yooo?", x, y)
142
+
143
+ def baz() -> None:
144
+ with Thing('a') as x, Thing('crash') as y:
145
+ print("yooo?", x, y)
146
+
147
+ [file driver.py]
148
+ from native import foo, bar, baz
149
+ assert foo(0) == 10
150
+ print('== foo ==')
151
+ try:
152
+ foo(1)
153
+ except Exception:
154
+ print('caught')
155
+ assert foo(2) == -1
156
+
157
+ print('== bar ==')
158
+ bar()
159
+
160
+ print('== baz ==')
161
+ try:
162
+ baz()
163
+ except Exception:
164
+ print('caught')
165
+
166
+ [out]
167
+ enter! a
168
+ yooo? a
169
+ exit! a None
170
+ == foo ==
171
+ enter! a
172
+ yooo? a
173
+ exit! a exception!
174
+ caught
175
+ enter! a
176
+ yooo? a
177
+ exit! a None
178
+ == bar ==
179
+ enter! a
180
+ enter! b
181
+ yooo? a b
182
+ exit! b None
183
+ exit! a None
184
+ == baz ==
185
+ enter! a
186
+ enter! crash
187
+ exit! a ohno
188
+ caught
189
+
190
+ [case testDisplays]
191
+ from typing import List, Set, Tuple, Sequence, Dict, Any, Mapping
192
+
193
+ def listDisplay(x: List[int], y: List[int]) -> List[int]:
194
+ return [1, 2, *x, *y, 3]
195
+
196
+ def setDisplay(x: Set[int], y: Set[int]) -> Set[int]:
197
+ return {1, 2, *x, *y, 3}
198
+
199
+ def tupleDisplay(x: Sequence[str], y: Sequence[str]) -> Tuple[str, ...]:
200
+ return ('1', '2', *x, *y, '3')
201
+
202
+ def dictDisplay(x: str, y1: Dict[str, int], y2: Dict[str, int]) -> Dict[str, int]:
203
+ return {x: 2, **y1, 'z': 3, **y2}
204
+
205
+ def dictDisplayUnpackMapping(obj: Mapping[str, str]) -> Dict[str, str]:
206
+ return {**obj, "env": "value"}
207
+
208
+ [file driver.py]
209
+ import os
210
+ from native import listDisplay, setDisplay, tupleDisplay, dictDisplay, dictDisplayUnpackMapping
211
+ assert listDisplay([4], [5, 6]) == [1, 2, 4, 5, 6, 3]
212
+ assert setDisplay({4}, {5}) == {1, 2, 3, 4, 5}
213
+ assert tupleDisplay(['4', '5'], ['6']) == ('1', '2', '4', '5', '6', '3')
214
+ assert dictDisplay('x', {'y1': 1}, {'y2': 2, 'z': 5}) == {'x': 2, 'y1': 1, 'y2': 2, 'z': 5}
215
+ assert dictDisplayUnpackMapping(os.environ) == {**os.environ, "env": "value"}
216
+
217
+ [case testArbitraryLvalues]
218
+ from typing import List, Dict, Any
219
+
220
+ class O(object):
221
+ def __init__(self) -> None:
222
+ self.x = 1
223
+
224
+ def increment_attr(a: Any) -> Any:
225
+ a.x += 1
226
+ return a
227
+
228
+ def increment_attr_o(o: O) -> O:
229
+ o.x += 1
230
+ return o
231
+
232
+ def increment_all_indices(l: List[int]) -> List[int]:
233
+ for i in range(len(l)):
234
+ l[i] += 1
235
+ return l
236
+
237
+ def increment_all_keys(d: Dict[str, int]) -> Dict[str, int]:
238
+ for k in d:
239
+ d[k] += 1
240
+ return d
241
+
242
+ [file driver.py]
243
+ from native import O, increment_attr, increment_attr_o, increment_all_indices, increment_all_keys
244
+
245
+ class P(object):
246
+ def __init__(self) -> None:
247
+ self.x = 0
248
+
249
+ assert increment_attr(P()).x == 1
250
+ assert increment_attr_o(O()).x == 2
251
+ assert increment_all_indices([1, 2, 3]) == [2, 3, 4]
252
+ assert increment_all_keys({'a':1, 'b':2, 'c':3}) == {'a':2, 'b':3, 'c':4}
253
+
254
+ [case testControlFlowExprs]
255
+ from typing import Tuple
256
+ def foo() -> object:
257
+ print('foo')
258
+ return 'foo'
259
+ def bar() -> object:
260
+ print('bar')
261
+ return 'bar'
262
+ def t(x: int) -> int:
263
+ print(x)
264
+ return x
265
+
266
+ def f(b: bool) -> Tuple[object, object, object]:
267
+ x = foo() if b else bar()
268
+ y = b or foo()
269
+ z = b and foo()
270
+ return (x, y, z)
271
+ def g() -> Tuple[object, object]:
272
+ return (foo() or bar(), foo() and bar())
273
+
274
+ def nand(p: bool, q: bool) -> bool:
275
+ if not (p and q):
276
+ return True
277
+ return False
278
+
279
+ def chained(x: int, y: int, z: int) -> bool:
280
+ return t(x) < t(y) > t(z)
281
+
282
+ def chained2(x: int, y: int, z: int, w: int) -> bool:
283
+ return t(x) < t(y) < t(z) < t(w)
284
+ [file driver.py]
285
+ from native import f, g, nand, chained, chained2
286
+ assert f(True) == ('foo', True, 'foo')
287
+ print()
288
+ assert f(False) == ('bar', 'foo', False)
289
+ print()
290
+ assert g() == ('foo', 'bar')
291
+
292
+ assert nand(True, True) == False
293
+ assert nand(True, False) == True
294
+ assert nand(False, True) == True
295
+ assert nand(False, False) == True
296
+
297
+ print()
298
+ assert chained(10, 20, 15) == True
299
+ print()
300
+ assert chained(10, 20, 30) == False
301
+ print()
302
+ assert chained(21, 20, 30) == False
303
+ print()
304
+ assert chained2(1, 2, 3, 4) == True
305
+ print()
306
+ assert chained2(1, 0, 3, 4) == False
307
+ print()
308
+ assert chained2(1, 2, 0, 4) == False
309
+ [out]
310
+ foo
311
+ foo
312
+
313
+ bar
314
+ foo
315
+
316
+ foo
317
+ foo
318
+ bar
319
+
320
+ 10
321
+ 20
322
+ 15
323
+
324
+ 10
325
+ 20
326
+ 30
327
+
328
+ 21
329
+ 20
330
+
331
+ 1
332
+ 2
333
+ 3
334
+ 4
335
+
336
+ 1
337
+ 0
338
+
339
+ 1
340
+ 2
341
+ 0
342
+
343
+ [case testMultipleAssignment]
344
+ from typing import Tuple, List, Any
345
+
346
+ def from_tuple(t: Tuple[int, str]) -> List[Any]:
347
+ x, y = t
348
+ return [y, x]
349
+
350
+ def from_tuple_sequence(t: Tuple[int, ...]) -> List[int]:
351
+ x, y, z = t
352
+ return [z, y, x]
353
+
354
+ def from_list(l: List[int]) -> List[int]:
355
+ x, y = l
356
+ return [y, x]
357
+
358
+ def from_list_complex(l: List[int]) -> List[int]:
359
+ ll = l[:]
360
+ ll[1], ll[0] = l
361
+ return ll
362
+
363
+ def from_any(o: Any) -> List[Any]:
364
+ x, y = o
365
+ return [y, x]
366
+
367
+ def multiple_assignments(t: Tuple[int, str]) -> List[Any]:
368
+ a, b = c, d = t
369
+ e, f = g, h = 1, 2
370
+ return [a, b, c, d, e, f, g, h]
371
+ [file driver.py]
372
+ from native import (
373
+ from_tuple, from_tuple_sequence, from_list, from_list_complex, from_any, multiple_assignments
374
+ )
375
+
376
+ assert from_tuple((1, 'x')) == ['x', 1]
377
+
378
+ assert from_tuple_sequence((1, 5, 4)) == [4, 5, 1]
379
+ try:
380
+ from_tuple_sequence((1, 5))
381
+ except ValueError as e:
382
+ assert 'not enough values to unpack (expected 3, got 2)' in str(e)
383
+ else:
384
+ assert False
385
+
386
+ assert from_list([3, 4]) == [4, 3]
387
+ try:
388
+ from_list([5, 4, 3])
389
+ except ValueError as e:
390
+ assert 'too many values to unpack (expected 2)' in str(e)
391
+ else:
392
+ assert False
393
+
394
+ assert from_list_complex([7, 6]) == [6, 7]
395
+ try:
396
+ from_list_complex([5, 4, 3])
397
+ except ValueError as e:
398
+ assert 'too many values to unpack (expected 2)' in str(e)
399
+ else:
400
+ assert False
401
+
402
+ assert from_any('xy') == ['y', 'x']
403
+
404
+ assert multiple_assignments((4, 'x')) == [4, 'x', 4, 'x', 1, 2, 1, 2]
405
+
406
+ [case testUnpack]
407
+ from typing import List
408
+
409
+ a, *b = [1, 2, 3, 4, 5]
410
+
411
+ *c, d = [1, 2, 3, 4, 5]
412
+
413
+ e, *f = [1,2]
414
+
415
+ j, *k, l = [1, 2, 3]
416
+
417
+ m, *n, o = [1, 2, 3, 4, 5, 6]
418
+
419
+ p, q, r, *s, t = [1,2,3,4,5,6,7,8,9,10]
420
+
421
+ tup = (1,2,3)
422
+ y, *z = tup
423
+
424
+ def unpack1(l : List[int]) -> None:
425
+ *v1, v2, v3 = l
426
+
427
+ def unpack2(l : List[int]) -> None:
428
+ v1, *v2, v3 = l
429
+
430
+ def unpack3(l : List[int]) -> None:
431
+ v1, v2, *v3 = l
432
+
433
+ [file driver.py]
434
+ from native import a, b, c, d, e, f, j, k, l, m, n, o, p, q, r, s, t, y, z
435
+ from native import unpack1, unpack2, unpack3
436
+ from testutil import assertRaises
437
+
438
+ assert a == 1
439
+ assert b == [2,3,4,5]
440
+ assert c == [1,2,3,4]
441
+ assert d == 5
442
+ assert e == 1
443
+ assert f == [2]
444
+ assert j == 1
445
+ assert k == [2]
446
+ assert l == 3
447
+ assert m == 1
448
+ assert n == [2,3,4,5]
449
+ assert o == 6
450
+ assert p == 1
451
+ assert q == 2
452
+ assert r == 3
453
+ assert s == [4,5,6,7,8,9]
454
+ assert t == 10
455
+ assert y == 1
456
+ assert z == [2,3]
457
+
458
+ with assertRaises(ValueError, "not enough values to unpack"):
459
+ unpack1([1])
460
+
461
+ with assertRaises(ValueError, "not enough values to unpack"):
462
+ unpack2([1])
463
+
464
+ with assertRaises(ValueError, "not enough values to unpack"):
465
+ unpack3([1])
466
+
467
+ [out]
468
+
469
+ [case testModuleTopLevel]
470
+ x = 1
471
+ print(x)
472
+
473
+ def f() -> None:
474
+ print(x + 1)
475
+
476
+ def g() -> None:
477
+ global x
478
+ x = 77
479
+
480
+ [file driver.py]
481
+ import native
482
+ native.f()
483
+ native.x = 5
484
+ native.f()
485
+ native.g()
486
+ print(native.x)
487
+
488
+ [out]
489
+ 1
490
+ 2
491
+ 6
492
+ 77
493
+
494
+ [case testComprehensions]
495
+ from typing import List
496
+
497
+ # A list comprehension
498
+ l = [str(x) + " " + str(y) + " " + str(x*y) for x in range(10)
499
+ if x != 6 if x != 5 for y in range(x) if y*x != 8]
500
+
501
+ # Test short-circuiting as well
502
+ def pred(x: int) -> bool:
503
+ if x > 6:
504
+ raise Exception()
505
+ return x > 3
506
+ # If we fail to short-circuit, pred(x) will be called with x=7
507
+ # eventually and will raise an exception.
508
+ l2 = [x for x in range(10) if x <= 6 if pred(x)]
509
+
510
+ src = ['x']
511
+
512
+ def f() -> List[str]:
513
+ global src
514
+ res = src
515
+ src = []
516
+ return res
517
+
518
+ l3 = [s for s in f()]
519
+ l4 = [s for s in f()]
520
+
521
+ # A dictionary comprehension
522
+ d = {k: k*k for k in range(10) if k != 5 if k != 6}
523
+
524
+ # A set comprehension
525
+ s = {str(x) + " " + str(y) + " " + str(x*y) for x in range(10)
526
+ if x != 6 if x != 5 for y in range(x) if y*x != 8}
527
+
528
+ [file driver.py]
529
+ from native import l, l2, l3, l4, d, s
530
+ for a in l:
531
+ print(a)
532
+ print(tuple(l2))
533
+ assert l3 == ['x']
534
+ assert l4 == []
535
+ for k in sorted(d):
536
+ print(k, d[k])
537
+ for a in sorted(s):
538
+ print(a)
539
+ [out]
540
+ 1 0 0
541
+ 2 0 0
542
+ 2 1 2
543
+ 3 0 0
544
+ 3 1 3
545
+ 3 2 6
546
+ 4 0 0
547
+ 4 1 4
548
+ 4 3 12
549
+ 7 0 0
550
+ 7 1 7
551
+ 7 2 14
552
+ 7 3 21
553
+ 7 4 28
554
+ 7 5 35
555
+ 7 6 42
556
+ 8 0 0
557
+ 8 2 16
558
+ 8 3 24
559
+ 8 4 32
560
+ 8 5 40
561
+ 8 6 48
562
+ 8 7 56
563
+ 9 0 0
564
+ 9 1 9
565
+ 9 2 18
566
+ 9 3 27
567
+ 9 4 36
568
+ 9 5 45
569
+ 9 6 54
570
+ 9 7 63
571
+ 9 8 72
572
+ (4, 5, 6)
573
+ 0 0
574
+ 1 1
575
+ 2 4
576
+ 3 9
577
+ 4 16
578
+ 7 49
579
+ 8 64
580
+ 9 81
581
+ 1 0 0
582
+ 2 0 0
583
+ 2 1 2
584
+ 3 0 0
585
+ 3 1 3
586
+ 3 2 6
587
+ 4 0 0
588
+ 4 1 4
589
+ 4 3 12
590
+ 7 0 0
591
+ 7 1 7
592
+ 7 2 14
593
+ 7 3 21
594
+ 7 4 28
595
+ 7 5 35
596
+ 7 6 42
597
+ 8 0 0
598
+ 8 2 16
599
+ 8 3 24
600
+ 8 4 32
601
+ 8 5 40
602
+ 8 6 48
603
+ 8 7 56
604
+ 9 0 0
605
+ 9 1 9
606
+ 9 2 18
607
+ 9 3 27
608
+ 9 4 36
609
+ 9 5 45
610
+ 9 6 54
611
+ 9 7 63
612
+ 9 8 72
613
+
614
+ [case testDummyTypes]
615
+ from typing import Tuple, List, Dict, NamedTuple
616
+ from typing_extensions import Literal, TypedDict, NewType
617
+
618
+ class A:
619
+ pass
620
+
621
+ T = List[A]
622
+ U = List[Tuple[int, str]]
623
+ Z = List[List[int]]
624
+ D = Dict[int, List[int]]
625
+ N = NewType('N', int)
626
+ G = Tuple[int, str]
627
+ def foo(x: N) -> int:
628
+ return x
629
+ foo(N(10))
630
+ z = N(10)
631
+ Lol = NamedTuple('Lol', (('a', int), ('b', T)))
632
+ x = Lol(1, [])
633
+ def take_lol(x: Lol) -> int:
634
+ return x.a
635
+
636
+ TD = TypedDict('TD', {'a': int})
637
+ def take_typed_dict(x: TD) -> int:
638
+ return x['a']
639
+
640
+ def take_literal(x: Literal[1, 2, 3]) -> None:
641
+ print(x)
642
+
643
+ [file driver.py]
644
+ import sys
645
+ from native import *
646
+
647
+ if sys.version_info[:3] > (3, 5, 2):
648
+ assert "%s %s %s %s" % (T, U, Z, D) == "typing.List[native.A] typing.List[typing.Tuple[int, str]] typing.List[typing.List[int]] typing.Dict[int, typing.List[int]]"
649
+ print(x)
650
+ print(z)
651
+ print(take_lol(x))
652
+ print(take_typed_dict({'a': 20}))
653
+ try:
654
+ take_typed_dict(None)
655
+ except Exception as e:
656
+ print(type(e).__name__)
657
+
658
+
659
+ take_literal(1)
660
+ # We check that the type is the real underlying type
661
+ try:
662
+ take_literal(None)
663
+ except Exception as e:
664
+ print(type(e).__name__)
665
+ # ... but not that it is a valid literal value
666
+ take_literal(10)
667
+ [out]
668
+ Lol(a=1, b=[])
669
+ 10
670
+ 1
671
+ 20
672
+ TypeError
673
+ 1
674
+ TypeError
675
+ 10
676
+
677
+ [case testClassBasedTypedDict]
678
+ from typing_extensions import TypedDict
679
+
680
+ class TD(TypedDict):
681
+ a: int
682
+
683
+ class TD2(TD):
684
+ b: int
685
+
686
+ class TD3(TypedDict, total=False):
687
+ c: int
688
+
689
+ class TD4(TD3, TD2, total=False):
690
+ d: int
691
+
692
+ def test_typed_dict() -> None:
693
+ d = TD(a=5)
694
+ assert d['a'] == 5
695
+ assert type(d) == dict
696
+ # TODO: This doesn't work yet
697
+ # assert TD.__annotations__ == {'a': int}
698
+
699
+ def test_inherited_typed_dict() -> None:
700
+ d = TD2(a=5, b=3)
701
+ assert d['a'] == 5
702
+ assert d['b'] == 3
703
+ assert type(d) == dict
704
+
705
+ def test_non_total_typed_dict() -> None:
706
+ d3 = TD3(c=3)
707
+ d4 = TD4(a=1, b=2, c=3, d=4)
708
+ assert d3['c'] == 3
709
+ assert d4['d'] == 4
710
+
711
+ [case testClassBasedNamedTuple]
712
+ from typing import NamedTuple
713
+ import sys
714
+
715
+ # Class-based NamedTuple requires Python 3.6+
716
+ version = sys.version_info[:2]
717
+ if version[0] == 3 and version[1] < 6:
718
+ exit()
719
+
720
+ class NT(NamedTuple):
721
+ a: int
722
+
723
+ def test_named_tuple() -> None:
724
+ t = NT(a=1)
725
+ assert t.a == 1
726
+ assert type(t) is NT
727
+ assert isinstance(t, tuple)
728
+ assert not isinstance(tuple([1]), NT)
729
+
730
+ [case testUnion]
731
+ from typing import Union
732
+
733
+ class A:
734
+ def __init__(self, x: int) -> None:
735
+ self.x = x
736
+ def f(self, y: int) -> int:
737
+ return y + self.x
738
+
739
+ class B:
740
+ def __init__(self, x: object) -> None:
741
+ self.x = x
742
+ def f(self, y: object) -> object:
743
+ return y
744
+
745
+ def f(x: Union[A, str]) -> object:
746
+ if isinstance(x, A):
747
+ return x.x
748
+ else:
749
+ return x + 'x'
750
+
751
+ def g(x: int) -> Union[A, int]:
752
+ if x == 0:
753
+ return A(1)
754
+ else:
755
+ return x + 1
756
+
757
+ def get(x: Union[A, B]) -> object:
758
+ return x.x
759
+
760
+ def call(x: Union[A, B]) -> object:
761
+ return x.f(5)
762
+
763
+ [file driver.py]
764
+ from native import A, B, f, g, get, call
765
+ assert f('a') == 'ax'
766
+ assert f(A(4)) == 4
767
+ assert isinstance(g(0), A)
768
+ assert g(2) == 3
769
+ assert get(A(5)) == 5
770
+ assert get(B('x')) == 'x'
771
+ assert call(A(4)) == 9
772
+ assert call(B('x')) == 5
773
+ try:
774
+ f(1)
775
+ except TypeError:
776
+ pass
777
+ else:
778
+ assert False
779
+
780
+ [case testAnyAll]
781
+ from typing import Iterable
782
+
783
+ def call_any_nested(l: Iterable[Iterable[int]], val: int = 0) -> int:
784
+ res = any(i == val for l2 in l for i in l2)
785
+ return 0 if res else 1
786
+
787
+ def call_any(l: Iterable[int], val: int = 0) -> int:
788
+ res = any(i == val for i in l)
789
+ return 0 if res else 1
790
+
791
+ def call_all(l: Iterable[int], val: int = 0) -> int:
792
+ res = all(i == val for i in l)
793
+ return 0 if res else 1
794
+
795
+ [file driver.py]
796
+ from native import call_any, call_all, call_any_nested
797
+
798
+ zeros = [0, 0, 0]
799
+ ones = [1, 1, 1]
800
+ mixed_001 = [0, 0, 1]
801
+ mixed_010 = [0, 1, 0]
802
+ mixed_100 = [1, 0, 0]
803
+ mixed_011 = [0, 1, 1]
804
+ mixed_101 = [1, 0, 1]
805
+ mixed_110 = [1, 1, 0]
806
+
807
+ assert call_any([]) == 1
808
+ assert call_any(zeros) == 0
809
+ assert call_any(ones) == 1
810
+ assert call_any(mixed_001) == 0
811
+ assert call_any(mixed_010) == 0
812
+ assert call_any(mixed_100) == 0
813
+ assert call_any(mixed_011) == 0
814
+ assert call_any(mixed_101) == 0
815
+ assert call_any(mixed_110) == 0
816
+
817
+ assert call_all([]) == 0
818
+ assert call_all(zeros) == 0
819
+ assert call_all(ones) == 1
820
+ assert call_all(mixed_001) == 1
821
+ assert call_all(mixed_010) == 1
822
+ assert call_all(mixed_100) == 1
823
+ assert call_all(mixed_011) == 1
824
+ assert call_all(mixed_101) == 1
825
+ assert call_all(mixed_110) == 1
826
+
827
+ assert call_any_nested([[1, 1, 1], [1, 1], []]) == 1
828
+ assert call_any_nested([[1, 1, 1], [0, 1], []]) == 0
829
+
830
+ [case testSum]
831
+ [typing fixtures/typing-full.pyi]
832
+ from typing import Any, List
833
+
834
+ def test_sum_of_numbers() -> None:
835
+ assert sum(x for x in [1, 2, 3]) == 6
836
+ assert sum(x for x in [0.0, 1.2, 2]) == 6.2
837
+ assert sum(x for x in [1, 1j]) == 1 + 1j
838
+
839
+ def test_sum_callables() -> None:
840
+ assert sum((lambda x: x == 0)(x) for x in []) == 0
841
+ assert sum((lambda x: x == 0)(x) for x in [0]) == 1
842
+ assert sum((lambda x: x == 0)(x) for x in [0, 0, 0]) == 3
843
+ assert sum((lambda x: x == 0)(x) for x in [0, 1, 0]) == 2
844
+ assert sum((lambda x: x % 2 == 0)(x) for x in range(2**10)) == 2**9
845
+
846
+ def test_sum_comparisons() -> None:
847
+ assert sum(x == 0 for x in []) == 0
848
+ assert sum(x == 0 for x in [0]) == 1
849
+ assert sum(x == 0 for x in [0, 0, 0]) == 3
850
+ assert sum(x == 0 for x in [0, 1, 0]) == 2
851
+ assert sum(x % 2 == 0 for x in range(2**10)) == 2**9
852
+
853
+ def test_sum_multi() -> None:
854
+ assert sum(i + j == 0 for i, j in zip([0, 0, 0], [0, 1, 0])) == 2
855
+
856
+ def test_sum_misc() -> None:
857
+ # misc cases we do optimize (note, according to sum's helptext, we don't need to support
858
+ # non-numeric cases, but CPython and mypyc both do anyway)
859
+ assert sum(c == 'd' for c in 'abcdd') == 2
860
+ # misc cases we do not optimize
861
+ assert sum([0, 1]) == 1
862
+ assert sum([0, 1], 1) == 2
863
+
864
+ def test_sum_start_given() -> None:
865
+ a = 1
866
+ assert sum((x == 0 for x in [0, 1]), a) == 2
867
+ assert sum(((lambda x: x == 0)(x) for x in []), 1) == 1
868
+ assert sum(((lambda x: x == 0)(x) for x in [0]), 1) == 2
869
+ assert sum(((lambda x: x == 0)(x) for x in [0, 0, 0]), 1) == 4
870
+ assert sum(((lambda x: x == 0)(x) for x in [0, 1, 0]), 1) == 3
871
+ assert sum(((lambda x: x % 2 == 0)(x) for x in range(2**10)), 1) == 2**9 + 1
872
+ assert sum((x for x in [1, 1j]), 2j) == 1 + 3j
873
+ assert sum((c == 'd' for c in 'abcdd'), 1) == 3
874
+
875
+ [case testNoneStuff]
876
+ from typing import Optional
877
+ class A:
878
+ x: int
879
+
880
+ def lol(x: A) -> None:
881
+ setattr(x, 'x', 5)
882
+
883
+ def none() -> None:
884
+ return
885
+
886
+ def arg(x: Optional[A]) -> bool:
887
+ return x is None
888
+
889
+ [file driver.py]
890
+ import native
891
+ native.lol(native.A())
892
+
893
+ # Catch refcounting failures
894
+ for i in range(10000):
895
+ native.none()
896
+ native.arg(None)
897
+
898
+ [case testBorrowRefs]
899
+ def make_garbage(arg: object) -> None:
900
+ b = True
901
+ while b:
902
+ arg = None
903
+ b = False
904
+
905
+ [file driver.py]
906
+ from native import make_garbage
907
+ import sys
908
+
909
+ def test():
910
+ x = object()
911
+ r0 = sys.getrefcount(x)
912
+ make_garbage(x)
913
+ r1 = sys.getrefcount(x)
914
+ assert r0 == r1
915
+
916
+ test()
917
+
918
+ [case testFinalStaticRunFail]
919
+ if False:
920
+ from typing import Final
921
+
922
+ if bool():
923
+ x: 'Final' = [1]
924
+
925
+ def f() -> int:
926
+ return x[0]
927
+
928
+ [file driver.py]
929
+ from native import f
930
+ try:
931
+ print(f())
932
+ except NameError as e:
933
+ print(e.args[0])
934
+ [out]
935
+ value for final name "x" was not set
936
+
937
+ [case testFinalStaticRunListTupleInt]
938
+ if False:
939
+ from typing import Final
940
+
941
+ x: 'Final' = [1]
942
+ y: 'Final' = (1, 2)
943
+ z: 'Final' = 1 + 1
944
+
945
+ def f() -> int:
946
+ return x[0]
947
+ def g() -> int:
948
+ return y[0]
949
+ def h() -> int:
950
+ return z - 1
951
+
952
+ [file driver.py]
953
+ from native import f, g, h, x, y, z
954
+ print(f())
955
+ print(x[0])
956
+ print(g())
957
+ print(y)
958
+ print(h())
959
+ print(z)
960
+ [out]
961
+ 1
962
+ 1
963
+ 1
964
+ (1, 2)
965
+ 1
966
+ 2
967
+
968
+ [case testCheckVersion]
969
+ import sys
970
+
971
+ if sys.version_info[:2] == (3, 12):
972
+ def version() -> int:
973
+ return 12
974
+ elif sys.version_info[:2] == (3, 11):
975
+ def version() -> int:
976
+ return 11
977
+ elif sys.version_info[:2] == (3, 10):
978
+ def version() -> int:
979
+ return 10
980
+ elif sys.version_info[:2] == (3, 9):
981
+ def version() -> int:
982
+ return 9
983
+ elif sys.version_info[:2] == (3, 8):
984
+ def version() -> int:
985
+ return 8
986
+ elif sys.version_info[:2] == (3, 7):
987
+ def version() -> int:
988
+ return 7
989
+ elif sys.version_info[:2] == (3, 6):
990
+ def version() -> int:
991
+ return 6
992
+ else:
993
+ raise Exception("we don't support this version yet!")
994
+
995
+
996
+ [file driver.py]
997
+ import sys
998
+ version = sys.version_info[:2]
999
+
1000
+ import native
1001
+ assert native.version() == sys.version_info[1]
1002
+
1003
+ [case testTypeErrorMessages]
1004
+ from typing import Tuple
1005
+ class A:
1006
+ pass
1007
+ class B:
1008
+ pass
1009
+
1010
+ def f(x: B) -> None:
1011
+ pass
1012
+ def g(x: Tuple[int, A]) -> None:
1013
+ pass
1014
+ [file driver.py]
1015
+ from testutil import assertRaises
1016
+ from native import A, f, g
1017
+
1018
+ class Busted:
1019
+ pass
1020
+ Busted.__module__ = None
1021
+
1022
+ with assertRaises(TypeError, "int"):
1023
+ f(0)
1024
+ with assertRaises(TypeError, "native.A"):
1025
+ f(A())
1026
+ with assertRaises(TypeError, "tuple[None, native.A]"):
1027
+ f((None, A()))
1028
+ with assertRaises(TypeError, "tuple[tuple[int, str], native.A]"):
1029
+ f(((1, "ha"), A()))
1030
+ with assertRaises(TypeError, "tuple[<50 items>]"):
1031
+ f(tuple(range(50)))
1032
+
1033
+ with assertRaises(TypeError, "errored formatting real type!"):
1034
+ f(Busted())
1035
+
1036
+ with assertRaises(TypeError, "tuple[int, native.A] object expected; got tuple[int, int]"):
1037
+ g((20, 30))
1038
+
1039
+ [case testComprehensionShadowBinder]
1040
+ def foo(x: object) -> object:
1041
+ if isinstance(x, list):
1042
+ return tuple(x for x in x), x
1043
+ return None
1044
+
1045
+ [file driver.py]
1046
+ from native import foo
1047
+
1048
+ assert foo(None) == None
1049
+ assert foo([1, 2, 3]) == ((1, 2, 3), [1, 2, 3])
1050
+
1051
+ [case testAllLiterals]
1052
+ # Test having all sorts of literals in a single file
1053
+
1054
+ def test_str() -> None:
1055
+ assert '' == eval("''")
1056
+ assert len('foo bar' + str()) == 7
1057
+ assert 'foo bar' == eval("'foo bar'")
1058
+ assert 'foo\u1245\0bar' == eval("'foo' + chr(0x1245) + chr(0) + 'bar'")
1059
+ assert 'foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345' == eval("'foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345'")
1060
+ assert 'Zoobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar123' == eval("'Zoobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar123'")
1061
+
1062
+ def test_bytes() -> None:
1063
+ assert b'' == eval("b''")
1064
+ assert b'foo bar' == eval("b'foo bar'")
1065
+ assert b'\xafde' == eval(r"b'\xafde'")
1066
+ assert b'foo\xde\0bar' == eval("b'foo' + bytes([0xde, 0]) + b'bar'")
1067
+ assert b'foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345' == eval("b'foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345foobar12345'")
1068
+
1069
+ def test_int() -> None:
1070
+ assert 2875872359823758923758923759 == eval('2875872359823758923758923759')
1071
+ assert -552875872359823758923758923759 == eval('-552875872359823758923758923759')
1072
+
1073
+ def test_float() -> None:
1074
+ assert 1.5 == eval('1.5')
1075
+ assert -3.75 == eval('-3.75')
1076
+ assert 2.5e10 == eval('2.5e10')
1077
+ assert 2.5e50 == eval('2.5e50')
1078
+ assert 2.5e1000 == eval('2.5e1000')
1079
+ assert -2.5e1000 == eval('-2.5e1000')
1080
+
1081
+ def test_complex() -> None:
1082
+ assert 1.5j == eval('1.5j')
1083
+ assert 1.5j + 2.5 == eval('2.5 + 1.5j')
1084
+ assert -3.75j == eval('-3.75j')
1085
+ assert 2.5e10j == eval('2.5e10j')
1086
+ assert 2.5e50j == eval('2.5e50j')
1087
+ assert 2.5e1000j == eval('2.5e1000j')
1088
+ assert 2.5e1000j + 3.5e2000 == eval('3.5e2000 + 2.5e1000j')
1089
+ assert -2.5e1000j == eval('-2.5e1000j')
1090
+
1091
+ [case testUnreachableExpressions]
1092
+ from typing import cast
1093
+ import sys
1094
+
1095
+ A = sys.platform == 'x' and foobar
1096
+ B = sys.platform == 'x' and sys.foobar
1097
+ C = sys.platform == 'x' and f(a, -b, 'y') > [c + e, g(y=2)]
1098
+ C = sys.platform == 'x' and cast(a, b[c])
1099
+ C = sys.platform == 'x' and (lambda x: y + x)
1100
+ # TODO: This still doesn't work
1101
+ # C = sys.platform == 'x' and (x for y in z)
1102
+
1103
+ assert not A
1104
+ assert not B
1105
+ assert not C
1106
+
1107
+ [case testDoesntSegfaultWhenTopLevelFails]
1108
+ # make the initial import fail
1109
+ assert False
1110
+
1111
+ [file driver.py]
1112
+ # load native, cause PyInit to be run, create the module but don't finish initializing the globals
1113
+ for _ in range(2):
1114
+ try:
1115
+ import native
1116
+ raise RuntimeError('exception expected')
1117
+ except AssertionError:
1118
+ pass
1119
+
1120
+ [case testUnderscoreFunctionsInMethods]
1121
+
1122
+ class A:
1123
+ def _(arg): pass
1124
+ def _(arg): pass
1125
+ class B(A):
1126
+ def _(arg): pass
1127
+ def _(arg): pass
1128
+
1129
+ [case testGlobalRedefinition_toplevel]
1130
+ # mypy: allow-redefinition
1131
+ i = 0
1132
+ i += 1
1133
+ i = "foo"
1134
+ i += i
1135
+ i = b"foo"
1136
+
1137
+ def test_redefinition() -> None:
1138
+ assert i == b"foo"
1139
+
1140
+ [case testWithNative]
1141
+ class DummyContext:
1142
+ def __init__(self):
1143
+ self.c = 0
1144
+ def __enter__(self) -> None:
1145
+ self.c += 1
1146
+ def __exit__(self, exc_type, exc_val, exc_tb) -> None:
1147
+ self.c -= 1
1148
+
1149
+ def test_dummy_context() -> None:
1150
+ c = DummyContext()
1151
+ with c:
1152
+ assert c.c == 1
1153
+ assert c.c == 0
1154
+
1155
+ [case testWithNativeVarArgs]
1156
+ class DummyContext:
1157
+ def __init__(self):
1158
+ self.c = 0
1159
+ def __enter__(self) -> None:
1160
+ self.c += 1
1161
+ def __exit__(self, *args: object) -> None:
1162
+ self.c -= 1
1163
+
1164
+ def test_dummy_context() -> None:
1165
+ c = DummyContext()
1166
+ with c:
1167
+ assert c.c == 1
1168
+ assert c.c == 0