com.googler.python 1.1.2 → 1.1.4

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 (2641) hide show
  1. package/package.json +3 -9
  2. package/python3.6.2/bin/2to3 +1 -1
  3. package/python3.6.2/bin/2to3-3.4 +1 -1
  4. package/python3.6.2/bin/easy_install-3.4 +1 -1
  5. package/python3.6.2/bin/idle3 +1 -1
  6. package/python3.6.2/bin/pip3 +1 -1
  7. package/python3.6.2/bin/pydoc3 +1 -1
  8. package/python3.6.2/bin/pyvenv +1 -1
  9. package/python3.6.2/lib/python3.6/LICENSE.txt +254 -0
  10. package/python3.6.2/lib/python3.6/__future__.pyc +0 -0
  11. package/python3.6.2/lib/python3.6/__phello__.foo.pyc +0 -0
  12. package/python3.6.2/lib/python3.6/_bootlocale.pyc +0 -0
  13. package/python3.6.2/lib/python3.6/_collections_abc.pyc +0 -0
  14. package/python3.6.2/lib/python3.6/_compat_pickle.pyc +0 -0
  15. package/python3.6.2/lib/python3.6/_compression.pyc +0 -0
  16. package/python3.6.2/lib/python3.6/_dummy_thread.pyc +0 -0
  17. package/python3.6.2/lib/python3.6/_markupbase.pyc +0 -0
  18. package/python3.6.2/lib/python3.6/_osx_support.pyc +0 -0
  19. package/python3.6.2/lib/python3.6/_pydecimal.pyc +0 -0
  20. package/python3.6.2/lib/python3.6/_pyio.pyc +0 -0
  21. package/python3.6.2/lib/python3.6/_sitebuiltins.pyc +0 -0
  22. package/python3.6.2/lib/python3.6/_strptime.pyc +0 -0
  23. package/python3.6.2/lib/python3.6/_threading_local.pyc +0 -0
  24. package/python3.6.2/lib/python3.6/_weakrefset.pyc +0 -0
  25. package/python3.6.2/lib/python3.6/abc.pyc +0 -0
  26. package/python3.6.2/lib/python3.6/aifc.pyc +0 -0
  27. package/python3.6.2/lib/python3.6/android.pyc +0 -0
  28. package/python3.6.2/lib/python3.6/antigravity.pyc +0 -0
  29. package/python3.6.2/lib/python3.6/argparse.pyc +0 -0
  30. package/python3.6.2/lib/python3.6/ast.pyc +0 -0
  31. package/python3.6.2/lib/python3.6/asynchat.pyc +0 -0
  32. package/python3.6.2/lib/python3.6/asyncio/__init__.pyc +0 -0
  33. package/python3.6.2/lib/python3.6/asyncio/base_events.pyc +0 -0
  34. package/python3.6.2/lib/python3.6/asyncio/base_futures.pyc +0 -0
  35. package/python3.6.2/lib/python3.6/asyncio/base_subprocess.pyc +0 -0
  36. package/python3.6.2/lib/python3.6/asyncio/base_tasks.pyc +0 -0
  37. package/python3.6.2/lib/python3.6/asyncio/compat.pyc +0 -0
  38. package/python3.6.2/lib/python3.6/asyncio/constants.pyc +0 -0
  39. package/python3.6.2/lib/python3.6/asyncio/coroutines.pyc +0 -0
  40. package/python3.6.2/lib/python3.6/asyncio/events.pyc +0 -0
  41. package/python3.6.2/lib/python3.6/asyncio/futures.pyc +0 -0
  42. package/python3.6.2/lib/python3.6/asyncio/locks.pyc +0 -0
  43. package/python3.6.2/lib/python3.6/asyncio/log.pyc +0 -0
  44. package/python3.6.2/lib/python3.6/asyncio/proactor_events.pyc +0 -0
  45. package/python3.6.2/lib/python3.6/asyncio/protocols.pyc +0 -0
  46. package/python3.6.2/lib/python3.6/asyncio/queues.pyc +0 -0
  47. package/python3.6.2/lib/python3.6/asyncio/selector_events.pyc +0 -0
  48. package/python3.6.2/lib/python3.6/asyncio/sslproto.pyc +0 -0
  49. package/python3.6.2/lib/python3.6/asyncio/streams.pyc +0 -0
  50. package/python3.6.2/lib/python3.6/asyncio/subprocess.pyc +0 -0
  51. package/python3.6.2/lib/python3.6/asyncio/tasks.pyc +0 -0
  52. package/python3.6.2/lib/python3.6/asyncio/test_utils.pyc +0 -0
  53. package/python3.6.2/lib/python3.6/asyncio/transports.pyc +0 -0
  54. package/python3.6.2/lib/python3.6/asyncio/unix_events.pyc +0 -0
  55. package/python3.6.2/lib/python3.6/asyncio/windows_events.pyc +0 -0
  56. package/python3.6.2/lib/python3.6/asyncio/windows_utils.pyc +0 -0
  57. package/python3.6.2/lib/python3.6/asyncore.pyc +0 -0
  58. package/python3.6.2/lib/python3.6/base64.pyc +0 -0
  59. package/python3.6.2/lib/python3.6/bdb.pyc +0 -0
  60. package/python3.6.2/lib/python3.6/binhex.pyc +0 -0
  61. package/python3.6.2/lib/python3.6/bisect.pyc +0 -0
  62. package/python3.6.2/lib/python3.6/bz2.pyc +0 -0
  63. package/python3.6.2/lib/python3.6/cProfile.pyc +0 -0
  64. package/python3.6.2/lib/python3.6/calendar.pyc +0 -0
  65. package/python3.6.2/lib/python3.6/cgi.pyc +0 -0
  66. package/python3.6.2/lib/python3.6/cgitb.pyc +0 -0
  67. package/python3.6.2/lib/python3.6/chunk.pyc +0 -0
  68. package/python3.6.2/lib/python3.6/cmd.pyc +0 -0
  69. package/python3.6.2/lib/python3.6/code.pyc +0 -0
  70. package/python3.6.2/lib/python3.6/codecs.pyc +0 -0
  71. package/python3.6.2/lib/python3.6/codeop.pyc +0 -0
  72. package/python3.6.2/lib/python3.6/collections/__init__.pyc +0 -0
  73. package/python3.6.2/lib/python3.6/collections/abc.pyc +0 -0
  74. package/python3.6.2/lib/python3.6/colorsys.pyc +0 -0
  75. package/python3.6.2/lib/python3.6/compileall.pyc +0 -0
  76. package/python3.6.2/lib/python3.6/concurrent/__init__.pyc +0 -0
  77. package/python3.6.2/lib/python3.6/concurrent/futures/__init__.pyc +0 -0
  78. package/python3.6.2/lib/python3.6/concurrent/futures/_base.pyc +0 -0
  79. package/python3.6.2/lib/python3.6/concurrent/futures/process.pyc +0 -0
  80. package/python3.6.2/lib/python3.6/concurrent/futures/thread.pyc +0 -0
  81. package/python3.6.2/lib/python3.6/config-3.6m-arm-linux-androideabi/Makefile +1808 -0
  82. package/python3.6.2/lib/python3.6/config-3.6m-arm-linux-androideabi/Setup +397 -0
  83. package/python3.6.2/lib/python3.6/config-3.6m-arm-linux-androideabi/Setup.config +10 -0
  84. package/python3.6.2/lib/python3.6/config-3.6m-arm-linux-androideabi/Setup.local +1 -0
  85. package/python3.6.2/lib/python3.6/config-3.6m-arm-linux-androideabi/config.c +114 -0
  86. package/python3.6.2/lib/python3.6/config-3.6m-arm-linux-androideabi/config.c.in +67 -0
  87. package/python3.6.2/lib/python3.6/config-3.6m-arm-linux-androideabi/install-sh +294 -0
  88. package/python3.6.2/lib/python3.6/config-3.6m-arm-linux-androideabi/makesetup +296 -0
  89. package/python3.6.2/lib/python3.6/config-3.6m-arm-linux-androideabi/python-config.pyc +0 -0
  90. package/python3.6.2/lib/python3.6/config-3.6m-arm-linux-androideabi/python.o +0 -0
  91. package/python3.6.2/lib/python3.6/configparser.pyc +0 -0
  92. package/python3.6.2/lib/python3.6/contextlib.pyc +0 -0
  93. package/python3.6.2/lib/python3.6/copy.pyc +0 -0
  94. package/python3.6.2/lib/python3.6/copyreg.pyc +0 -0
  95. package/python3.6.2/lib/python3.6/crypt.pyc +0 -0
  96. package/python3.6.2/lib/python3.6/csv.pyc +0 -0
  97. package/python3.6.2/lib/python3.6/ctypes/__init__.pyc +0 -0
  98. package/python3.6.2/lib/python3.6/ctypes/_endian.pyc +0 -0
  99. package/python3.6.2/lib/python3.6/ctypes/macholib/__init__.pyc +0 -0
  100. package/python3.6.2/lib/python3.6/ctypes/macholib/dyld.pyc +0 -0
  101. package/python3.6.2/lib/python3.6/ctypes/macholib/dylib.pyc +0 -0
  102. package/python3.6.2/lib/python3.6/ctypes/macholib/framework.pyc +0 -0
  103. package/python3.6.2/lib/python3.6/ctypes/util.pyc +0 -0
  104. package/python3.6.2/lib/python3.6/ctypes/wintypes.pyc +0 -0
  105. package/python3.6.2/lib/python3.6/curses/__init__.pyc +0 -0
  106. package/python3.6.2/lib/python3.6/curses/ascii.pyc +0 -0
  107. package/python3.6.2/lib/python3.6/curses/has_key.pyc +0 -0
  108. package/python3.6.2/lib/python3.6/curses/panel.pyc +0 -0
  109. package/python3.6.2/lib/python3.6/curses/textpad.pyc +0 -0
  110. package/python3.6.2/lib/python3.6/datetime.pyc +0 -0
  111. package/python3.6.2/lib/python3.6/dbm/__init__.pyc +0 -0
  112. package/python3.6.2/lib/python3.6/dbm/dumb.pyc +0 -0
  113. package/python3.6.2/lib/python3.6/dbm/gnu.pyc +0 -0
  114. package/python3.6.2/lib/python3.6/dbm/ndbm.pyc +0 -0
  115. package/python3.6.2/lib/python3.6/decimal.pyc +0 -0
  116. package/python3.6.2/lib/python3.6/difflib.pyc +0 -0
  117. package/python3.6.2/lib/python3.6/dis.pyc +0 -0
  118. package/python3.6.2/lib/python3.6/distutils/__init__.pyc +0 -0
  119. package/python3.6.2/lib/python3.6/distutils/_msvccompiler.pyc +0 -0
  120. package/python3.6.2/lib/python3.6/distutils/archive_util.pyc +0 -0
  121. package/python3.6.2/lib/python3.6/distutils/bcppcompiler.pyc +0 -0
  122. package/python3.6.2/lib/python3.6/distutils/ccompiler.pyc +0 -0
  123. package/python3.6.2/lib/python3.6/distutils/cmd.pyc +0 -0
  124. package/python3.6.2/lib/python3.6/distutils/command/__init__.pyc +0 -0
  125. package/python3.6.2/lib/python3.6/distutils/command/bdist.pyc +0 -0
  126. package/python3.6.2/lib/python3.6/distutils/command/bdist_dumb.pyc +0 -0
  127. package/python3.6.2/lib/python3.6/distutils/command/bdist_msi.pyc +0 -0
  128. package/python3.6.2/lib/python3.6/distutils/command/bdist_rpm.pyc +0 -0
  129. package/python3.6.2/lib/python3.6/distutils/command/bdist_wininst.pyc +0 -0
  130. package/python3.6.2/lib/python3.6/distutils/command/build.pyc +0 -0
  131. package/python3.6.2/lib/python3.6/distutils/command/build_clib.pyc +0 -0
  132. package/python3.6.2/lib/python3.6/distutils/command/build_ext.pyc +0 -0
  133. package/python3.6.2/lib/python3.6/distutils/command/build_py.pyc +0 -0
  134. package/python3.6.2/lib/python3.6/distutils/command/build_scripts.pyc +0 -0
  135. package/python3.6.2/lib/python3.6/distutils/command/check.pyc +0 -0
  136. package/python3.6.2/lib/python3.6/distutils/command/clean.pyc +0 -0
  137. package/python3.6.2/lib/python3.6/distutils/command/config.pyc +0 -0
  138. package/python3.6.2/lib/python3.6/distutils/command/install.pyc +0 -0
  139. package/python3.6.2/lib/python3.6/distutils/command/install_data.pyc +0 -0
  140. package/python3.6.2/lib/python3.6/distutils/command/install_egg_info.pyc +0 -0
  141. package/python3.6.2/lib/python3.6/distutils/command/install_headers.pyc +0 -0
  142. package/python3.6.2/lib/python3.6/distutils/command/install_lib.pyc +0 -0
  143. package/python3.6.2/lib/python3.6/distutils/command/install_scripts.pyc +0 -0
  144. package/python3.6.2/lib/python3.6/distutils/command/register.pyc +0 -0
  145. package/python3.6.2/lib/python3.6/distutils/command/sdist.pyc +0 -0
  146. package/python3.6.2/lib/python3.6/distutils/command/upload.pyc +0 -0
  147. package/python3.6.2/lib/python3.6/distutils/config.pyc +0 -0
  148. package/python3.6.2/lib/python3.6/distutils/core.pyc +0 -0
  149. package/python3.6.2/lib/python3.6/distutils/cygwinccompiler.pyc +0 -0
  150. package/python3.6.2/lib/python3.6/distutils/debug.pyc +0 -0
  151. package/python3.6.2/lib/python3.6/distutils/dep_util.pyc +0 -0
  152. package/python3.6.2/lib/python3.6/distutils/dir_util.pyc +0 -0
  153. package/python3.6.2/lib/python3.6/distutils/dist.pyc +0 -0
  154. package/python3.6.2/lib/python3.6/distutils/errors.pyc +0 -0
  155. package/python3.6.2/lib/python3.6/distutils/extension.pyc +0 -0
  156. package/python3.6.2/lib/python3.6/distutils/fancy_getopt.pyc +0 -0
  157. package/python3.6.2/lib/python3.6/distutils/file_util.pyc +0 -0
  158. package/python3.6.2/lib/python3.6/distutils/filelist.pyc +0 -0
  159. package/python3.6.2/lib/python3.6/distutils/log.pyc +0 -0
  160. package/python3.6.2/lib/python3.6/distutils/msvc9compiler.pyc +0 -0
  161. package/python3.6.2/lib/python3.6/distutils/msvccompiler.pyc +0 -0
  162. package/python3.6.2/lib/python3.6/distutils/spawn.pyc +0 -0
  163. package/python3.6.2/lib/python3.6/distutils/sysconfig.pyc +0 -0
  164. package/python3.6.2/lib/python3.6/distutils/text_file.pyc +0 -0
  165. package/python3.6.2/lib/python3.6/distutils/unixccompiler.pyc +0 -0
  166. package/python3.6.2/lib/python3.6/distutils/util.pyc +0 -0
  167. package/python3.6.2/lib/python3.6/distutils/version.pyc +0 -0
  168. package/python3.6.2/lib/python3.6/distutils/versionpredicate.pyc +0 -0
  169. package/python3.6.2/lib/python3.6/doctest.pyc +0 -0
  170. package/python3.6.2/lib/python3.6/dummy_threading.pyc +0 -0
  171. package/python3.6.2/lib/python3.6/email/__init__.pyc +0 -0
  172. package/python3.6.2/lib/python3.6/email/_encoded_words.pyc +0 -0
  173. package/python3.6.2/lib/python3.6/email/_header_value_parser.pyc +0 -0
  174. package/python3.6.2/lib/python3.6/email/_parseaddr.pyc +0 -0
  175. package/python3.6.2/lib/python3.6/email/_policybase.pyc +0 -0
  176. package/python3.6.2/lib/python3.6/email/base64mime.pyc +0 -0
  177. package/python3.6.2/lib/python3.6/email/charset.pyc +0 -0
  178. package/python3.6.2/lib/python3.6/email/contentmanager.pyc +0 -0
  179. package/python3.6.2/lib/python3.6/email/encoders.pyc +0 -0
  180. package/python3.6.2/lib/python3.6/email/errors.pyc +0 -0
  181. package/python3.6.2/lib/python3.6/email/feedparser.pyc +0 -0
  182. package/python3.6.2/lib/python3.6/email/generator.pyc +0 -0
  183. package/python3.6.2/lib/python3.6/email/header.pyc +0 -0
  184. package/python3.6.2/lib/python3.6/email/headerregistry.pyc +0 -0
  185. package/python3.6.2/lib/python3.6/email/iterators.pyc +0 -0
  186. package/python3.6.2/lib/python3.6/email/message.pyc +0 -0
  187. package/python3.6.2/lib/python3.6/email/mime/__init__.pyc +0 -0
  188. package/python3.6.2/lib/python3.6/email/mime/application.pyc +0 -0
  189. package/python3.6.2/lib/python3.6/email/mime/audio.pyc +0 -0
  190. package/python3.6.2/lib/python3.6/email/mime/base.pyc +0 -0
  191. package/python3.6.2/lib/python3.6/email/mime/image.pyc +0 -0
  192. package/python3.6.2/lib/python3.6/email/mime/message.pyc +0 -0
  193. package/python3.6.2/lib/python3.6/email/mime/multipart.pyc +0 -0
  194. package/python3.6.2/lib/python3.6/email/mime/nonmultipart.pyc +0 -0
  195. package/python3.6.2/lib/python3.6/email/mime/text.pyc +0 -0
  196. package/python3.6.2/lib/python3.6/email/parser.pyc +0 -0
  197. package/python3.6.2/lib/python3.6/email/policy.pyc +0 -0
  198. package/python3.6.2/lib/python3.6/email/quoprimime.pyc +0 -0
  199. package/python3.6.2/lib/python3.6/email/utils.pyc +0 -0
  200. package/python3.6.2/lib/python3.6/encodings/__init__.pyc +0 -0
  201. package/python3.6.2/lib/python3.6/encodings/aliases.pyc +0 -0
  202. package/python3.6.2/lib/python3.6/encodings/ascii.pyc +0 -0
  203. package/python3.6.2/lib/python3.6/encodings/base64_codec.pyc +0 -0
  204. package/python3.6.2/lib/python3.6/encodings/big5.pyc +0 -0
  205. package/python3.6.2/lib/python3.6/encodings/big5hkscs.pyc +0 -0
  206. package/python3.6.2/lib/python3.6/encodings/bz2_codec.pyc +0 -0
  207. package/python3.6.2/lib/python3.6/encodings/charmap.pyc +0 -0
  208. package/python3.6.2/lib/python3.6/encodings/cp037.pyc +0 -0
  209. package/python3.6.2/lib/python3.6/encodings/cp1006.pyc +0 -0
  210. package/python3.6.2/lib/python3.6/encodings/cp1026.pyc +0 -0
  211. package/python3.6.2/lib/python3.6/encodings/cp1125.pyc +0 -0
  212. package/python3.6.2/lib/python3.6/encodings/cp1140.pyc +0 -0
  213. package/python3.6.2/lib/python3.6/encodings/cp1250.pyc +0 -0
  214. package/python3.6.2/lib/python3.6/encodings/cp1251.pyc +0 -0
  215. package/python3.6.2/lib/python3.6/encodings/cp1252.pyc +0 -0
  216. package/python3.6.2/lib/python3.6/encodings/cp1253.pyc +0 -0
  217. package/python3.6.2/lib/python3.6/encodings/cp1254.pyc +0 -0
  218. package/python3.6.2/lib/python3.6/encodings/cp1255.pyc +0 -0
  219. package/python3.6.2/lib/python3.6/encodings/cp1256.pyc +0 -0
  220. package/python3.6.2/lib/python3.6/encodings/cp1257.pyc +0 -0
  221. package/python3.6.2/lib/python3.6/encodings/cp1258.pyc +0 -0
  222. package/python3.6.2/lib/python3.6/encodings/cp273.pyc +0 -0
  223. package/python3.6.2/lib/python3.6/encodings/cp424.pyc +0 -0
  224. package/python3.6.2/lib/python3.6/encodings/cp437.pyc +0 -0
  225. package/python3.6.2/lib/python3.6/encodings/cp500.pyc +0 -0
  226. package/python3.6.2/lib/python3.6/encodings/cp65001.pyc +0 -0
  227. package/python3.6.2/lib/python3.6/encodings/cp720.pyc +0 -0
  228. package/python3.6.2/lib/python3.6/encodings/cp737.pyc +0 -0
  229. package/python3.6.2/lib/python3.6/encodings/cp775.pyc +0 -0
  230. package/python3.6.2/lib/python3.6/encodings/cp850.pyc +0 -0
  231. package/python3.6.2/lib/python3.6/encodings/cp852.pyc +0 -0
  232. package/python3.6.2/lib/python3.6/encodings/cp855.pyc +0 -0
  233. package/python3.6.2/lib/python3.6/encodings/cp856.pyc +0 -0
  234. package/python3.6.2/lib/python3.6/encodings/cp857.pyc +0 -0
  235. package/python3.6.2/lib/python3.6/encodings/cp858.pyc +0 -0
  236. package/python3.6.2/lib/python3.6/encodings/cp860.pyc +0 -0
  237. package/python3.6.2/lib/python3.6/encodings/cp861.pyc +0 -0
  238. package/python3.6.2/lib/python3.6/encodings/cp862.pyc +0 -0
  239. package/python3.6.2/lib/python3.6/encodings/cp863.pyc +0 -0
  240. package/python3.6.2/lib/python3.6/encodings/cp864.pyc +0 -0
  241. package/python3.6.2/lib/python3.6/encodings/cp865.pyc +0 -0
  242. package/python3.6.2/lib/python3.6/encodings/cp866.pyc +0 -0
  243. package/python3.6.2/lib/python3.6/encodings/cp869.pyc +0 -0
  244. package/python3.6.2/lib/python3.6/encodings/cp874.pyc +0 -0
  245. package/python3.6.2/lib/python3.6/encodings/cp875.pyc +0 -0
  246. package/python3.6.2/lib/python3.6/encodings/cp932.pyc +0 -0
  247. package/python3.6.2/lib/python3.6/encodings/cp949.pyc +0 -0
  248. package/python3.6.2/lib/python3.6/encodings/cp950.pyc +0 -0
  249. package/python3.6.2/lib/python3.6/encodings/euc_jis_2004.pyc +0 -0
  250. package/python3.6.2/lib/python3.6/encodings/euc_jisx0213.pyc +0 -0
  251. package/python3.6.2/lib/python3.6/encodings/euc_jp.pyc +0 -0
  252. package/python3.6.2/lib/python3.6/encodings/euc_kr.pyc +0 -0
  253. package/python3.6.2/lib/python3.6/encodings/gb18030.pyc +0 -0
  254. package/python3.6.2/lib/python3.6/encodings/gb2312.pyc +0 -0
  255. package/python3.6.2/lib/python3.6/encodings/gbk.pyc +0 -0
  256. package/python3.6.2/lib/python3.6/encodings/hex_codec.pyc +0 -0
  257. package/python3.6.2/lib/python3.6/encodings/hp_roman8.pyc +0 -0
  258. package/python3.6.2/lib/python3.6/encodings/hz.pyc +0 -0
  259. package/python3.6.2/lib/python3.6/encodings/idna.pyc +0 -0
  260. package/python3.6.2/lib/python3.6/encodings/iso2022_jp.pyc +0 -0
  261. package/python3.6.2/lib/python3.6/encodings/iso2022_jp_1.pyc +0 -0
  262. package/python3.6.2/lib/python3.6/encodings/iso2022_jp_2.pyc +0 -0
  263. package/python3.6.2/lib/python3.6/encodings/iso2022_jp_2004.pyc +0 -0
  264. package/python3.6.2/lib/python3.6/encodings/iso2022_jp_3.pyc +0 -0
  265. package/python3.6.2/lib/python3.6/encodings/iso2022_jp_ext.pyc +0 -0
  266. package/python3.6.2/lib/python3.6/encodings/iso2022_kr.pyc +0 -0
  267. package/python3.6.2/lib/python3.6/encodings/iso8859_1.pyc +0 -0
  268. package/python3.6.2/lib/python3.6/encodings/iso8859_10.pyc +0 -0
  269. package/python3.6.2/lib/python3.6/encodings/iso8859_11.pyc +0 -0
  270. package/python3.6.2/lib/python3.6/encodings/iso8859_13.pyc +0 -0
  271. package/python3.6.2/lib/python3.6/encodings/iso8859_14.pyc +0 -0
  272. package/python3.6.2/lib/python3.6/encodings/iso8859_15.pyc +0 -0
  273. package/python3.6.2/lib/python3.6/encodings/iso8859_16.pyc +0 -0
  274. package/python3.6.2/lib/python3.6/encodings/iso8859_2.pyc +0 -0
  275. package/python3.6.2/lib/python3.6/encodings/iso8859_3.pyc +0 -0
  276. package/python3.6.2/lib/python3.6/encodings/iso8859_4.pyc +0 -0
  277. package/python3.6.2/lib/python3.6/encodings/iso8859_5.pyc +0 -0
  278. package/python3.6.2/lib/python3.6/encodings/iso8859_6.pyc +0 -0
  279. package/python3.6.2/lib/python3.6/encodings/iso8859_7.pyc +0 -0
  280. package/python3.6.2/lib/python3.6/encodings/iso8859_8.pyc +0 -0
  281. package/python3.6.2/lib/python3.6/encodings/iso8859_9.pyc +0 -0
  282. package/python3.6.2/lib/python3.6/encodings/johab.pyc +0 -0
  283. package/python3.6.2/lib/python3.6/encodings/koi8_r.pyc +0 -0
  284. package/python3.6.2/lib/python3.6/encodings/koi8_t.pyc +0 -0
  285. package/python3.6.2/lib/python3.6/encodings/koi8_u.pyc +0 -0
  286. package/python3.6.2/lib/python3.6/encodings/kz1048.pyc +0 -0
  287. package/python3.6.2/lib/python3.6/encodings/latin_1.pyc +0 -0
  288. package/python3.6.2/lib/python3.6/encodings/mac_arabic.pyc +0 -0
  289. package/python3.6.2/lib/python3.6/encodings/mac_centeuro.pyc +0 -0
  290. package/python3.6.2/lib/python3.6/encodings/mac_croatian.pyc +0 -0
  291. package/python3.6.2/lib/python3.6/encodings/mac_cyrillic.pyc +0 -0
  292. package/python3.6.2/lib/python3.6/encodings/mac_farsi.pyc +0 -0
  293. package/python3.6.2/lib/python3.6/encodings/mac_greek.pyc +0 -0
  294. package/python3.6.2/lib/python3.6/encodings/mac_iceland.pyc +0 -0
  295. package/python3.6.2/lib/python3.6/encodings/mac_latin2.pyc +0 -0
  296. package/python3.6.2/lib/python3.6/encodings/mac_roman.pyc +0 -0
  297. package/python3.6.2/lib/python3.6/encodings/mac_romanian.pyc +0 -0
  298. package/python3.6.2/lib/python3.6/encodings/mac_turkish.pyc +0 -0
  299. package/python3.6.2/lib/python3.6/encodings/mbcs.pyc +0 -0
  300. package/python3.6.2/lib/python3.6/encodings/oem.pyc +0 -0
  301. package/python3.6.2/lib/python3.6/encodings/palmos.pyc +0 -0
  302. package/python3.6.2/lib/python3.6/encodings/ptcp154.pyc +0 -0
  303. package/python3.6.2/lib/python3.6/encodings/punycode.pyc +0 -0
  304. package/python3.6.2/lib/python3.6/encodings/quopri_codec.pyc +0 -0
  305. package/python3.6.2/lib/python3.6/encodings/raw_unicode_escape.pyc +0 -0
  306. package/python3.6.2/lib/python3.6/encodings/rot_13.pyc +0 -0
  307. package/python3.6.2/lib/python3.6/encodings/shift_jis.pyc +0 -0
  308. package/python3.6.2/lib/python3.6/encodings/shift_jis_2004.pyc +0 -0
  309. package/python3.6.2/lib/python3.6/encodings/shift_jisx0213.pyc +0 -0
  310. package/python3.6.2/lib/python3.6/encodings/tis_620.pyc +0 -0
  311. package/python3.6.2/lib/python3.6/encodings/undefined.pyc +0 -0
  312. package/python3.6.2/lib/python3.6/encodings/unicode_escape.pyc +0 -0
  313. package/python3.6.2/lib/python3.6/encodings/unicode_internal.pyc +0 -0
  314. package/python3.6.2/lib/python3.6/encodings/utf_16.pyc +0 -0
  315. package/python3.6.2/lib/python3.6/encodings/utf_16_be.pyc +0 -0
  316. package/python3.6.2/lib/python3.6/encodings/utf_16_le.pyc +0 -0
  317. package/python3.6.2/lib/python3.6/encodings/utf_32.pyc +0 -0
  318. package/python3.6.2/lib/python3.6/encodings/utf_32_be.pyc +0 -0
  319. package/python3.6.2/lib/python3.6/encodings/utf_32_le.pyc +0 -0
  320. package/python3.6.2/lib/python3.6/encodings/utf_7.pyc +0 -0
  321. package/python3.6.2/lib/python3.6/encodings/utf_8.pyc +0 -0
  322. package/python3.6.2/lib/python3.6/encodings/utf_8_sig.pyc +0 -0
  323. package/python3.6.2/lib/python3.6/encodings/uu_codec.pyc +0 -0
  324. package/python3.6.2/lib/python3.6/encodings/zlib_codec.pyc +0 -0
  325. package/python3.6.2/lib/python3.6/ensurepip/__init__.pyc +0 -0
  326. package/python3.6.2/lib/python3.6/ensurepip/__main__.pyc +0 -0
  327. package/python3.6.2/lib/python3.6/ensurepip/_uninstall.pyc +0 -0
  328. package/python3.6.2/lib/python3.6/enum.pyc +0 -0
  329. package/python3.6.2/lib/python3.6/filecmp.pyc +0 -0
  330. package/python3.6.2/lib/python3.6/fileinput.pyc +0 -0
  331. package/python3.6.2/lib/python3.6/fnmatch.pyc +0 -0
  332. package/python3.6.2/lib/python3.6/formatter.pyc +0 -0
  333. package/python3.6.2/lib/python3.6/fractions.pyc +0 -0
  334. package/python3.6.2/lib/python3.6/ftplib.pyc +0 -0
  335. package/python3.6.2/lib/python3.6/functools.pyc +0 -0
  336. package/python3.6.2/lib/python3.6/genericpath.pyc +0 -0
  337. package/python3.6.2/lib/python3.6/getopt.pyc +0 -0
  338. package/python3.6.2/lib/python3.6/getpass.pyc +0 -0
  339. package/python3.6.2/lib/python3.6/gettext.pyc +0 -0
  340. package/python3.6.2/lib/python3.6/glob.pyc +0 -0
  341. package/python3.6.2/lib/python3.6/gzip.pyc +0 -0
  342. package/python3.6.2/lib/python3.6/hashlib.pyc +0 -0
  343. package/python3.6.2/lib/python3.6/heapq.pyc +0 -0
  344. package/python3.6.2/lib/python3.6/hmac.pyc +0 -0
  345. package/python3.6.2/lib/python3.6/html/__init__.pyc +0 -0
  346. package/python3.6.2/lib/python3.6/html/entities.pyc +0 -0
  347. package/python3.6.2/lib/python3.6/html/parser.pyc +0 -0
  348. package/python3.6.2/lib/python3.6/http/__init__.pyc +0 -0
  349. package/python3.6.2/lib/python3.6/http/client.pyc +0 -0
  350. package/python3.6.2/lib/python3.6/http/cookiejar.pyc +0 -0
  351. package/python3.6.2/lib/python3.6/http/cookies.pyc +0 -0
  352. package/python3.6.2/lib/python3.6/http/server.pyc +0 -0
  353. package/python3.6.2/lib/python3.6/imaplib.pyc +0 -0
  354. package/python3.6.2/lib/python3.6/imghdr.pyc +0 -0
  355. package/python3.6.2/lib/python3.6/imp.pyc +0 -0
  356. package/python3.6.2/lib/python3.6/importlib/__init__.pyc +0 -0
  357. package/python3.6.2/lib/python3.6/importlib/_bootstrap.pyc +0 -0
  358. package/python3.6.2/lib/python3.6/importlib/_bootstrap_external.pyc +0 -0
  359. package/python3.6.2/lib/python3.6/importlib/abc.pyc +0 -0
  360. package/python3.6.2/lib/python3.6/importlib/machinery.pyc +0 -0
  361. package/python3.6.2/lib/python3.6/importlib/util.pyc +0 -0
  362. package/python3.6.2/lib/python3.6/inspect.pyc +0 -0
  363. package/python3.6.2/lib/python3.6/io.pyc +0 -0
  364. package/python3.6.2/lib/python3.6/ipaddress.pyc +0 -0
  365. package/python3.6.2/lib/python3.6/json/__init__.pyc +0 -0
  366. package/python3.6.2/lib/python3.6/json/decoder.pyc +0 -0
  367. package/python3.6.2/lib/python3.6/json/encoder.pyc +0 -0
  368. package/python3.6.2/lib/python3.6/json/scanner.pyc +0 -0
  369. package/python3.6.2/lib/python3.6/json/tool.pyc +0 -0
  370. package/python3.6.2/lib/python3.6/keyword.pyc +0 -0
  371. package/python3.6.2/lib/python3.6/lib2to3/Grammar3.6.3.final.0.pickle +0 -0
  372. package/python3.6.2/lib/python3.6/lib2to3/PatternGrammar3.6.3.final.0.pickle +0 -0
  373. package/python3.6.2/lib/python3.6/lib2to3/__init__.pyc +0 -0
  374. package/python3.6.2/lib/python3.6/lib2to3/__main__.pyc +0 -0
  375. package/python3.6.2/lib/python3.6/lib2to3/btm_matcher.pyc +0 -0
  376. package/python3.6.2/lib/python3.6/lib2to3/btm_utils.pyc +0 -0
  377. package/python3.6.2/lib/python3.6/lib2to3/fixer_base.pyc +0 -0
  378. package/python3.6.2/lib/python3.6/lib2to3/fixer_util.pyc +0 -0
  379. package/python3.6.2/lib/python3.6/lib2to3/fixes/__init__.pyc +0 -0
  380. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_apply.pyc +0 -0
  381. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_asserts.pyc +0 -0
  382. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_basestring.pyc +0 -0
  383. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_buffer.pyc +0 -0
  384. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_dict.pyc +0 -0
  385. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_except.pyc +0 -0
  386. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_exec.pyc +0 -0
  387. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_execfile.pyc +0 -0
  388. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_exitfunc.pyc +0 -0
  389. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_filter.pyc +0 -0
  390. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_funcattrs.pyc +0 -0
  391. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_future.pyc +0 -0
  392. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_getcwdu.pyc +0 -0
  393. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_has_key.pyc +0 -0
  394. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_idioms.pyc +0 -0
  395. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_import.pyc +0 -0
  396. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_imports.pyc +0 -0
  397. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_imports2.pyc +0 -0
  398. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_input.pyc +0 -0
  399. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_intern.pyc +0 -0
  400. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_isinstance.pyc +0 -0
  401. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_itertools.pyc +0 -0
  402. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_itertools_imports.pyc +0 -0
  403. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_long.pyc +0 -0
  404. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_map.pyc +0 -0
  405. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_metaclass.pyc +0 -0
  406. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_methodattrs.pyc +0 -0
  407. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_ne.pyc +0 -0
  408. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_next.pyc +0 -0
  409. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_nonzero.pyc +0 -0
  410. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_numliterals.pyc +0 -0
  411. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_operator.pyc +0 -0
  412. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_paren.pyc +0 -0
  413. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_print.pyc +0 -0
  414. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_raise.pyc +0 -0
  415. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_raw_input.pyc +0 -0
  416. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_reduce.pyc +0 -0
  417. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_reload.pyc +0 -0
  418. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_renames.pyc +0 -0
  419. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_repr.pyc +0 -0
  420. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_set_literal.pyc +0 -0
  421. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_standarderror.pyc +0 -0
  422. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_sys_exc.pyc +0 -0
  423. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_throw.pyc +0 -0
  424. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_tuple_params.pyc +0 -0
  425. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_types.pyc +0 -0
  426. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_unicode.pyc +0 -0
  427. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_urllib.pyc +0 -0
  428. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_ws_comma.pyc +0 -0
  429. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_xrange.pyc +0 -0
  430. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_xreadlines.pyc +0 -0
  431. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_zip.pyc +0 -0
  432. package/python3.6.2/lib/python3.6/lib2to3/main.pyc +0 -0
  433. package/python3.6.2/lib/python3.6/lib2to3/patcomp.pyc +0 -0
  434. package/python3.6.2/lib/python3.6/lib2to3/pgen2/__init__.pyc +0 -0
  435. package/python3.6.2/lib/python3.6/lib2to3/pgen2/conv.pyc +0 -0
  436. package/python3.6.2/lib/python3.6/lib2to3/pgen2/driver.pyc +0 -0
  437. package/python3.6.2/lib/python3.6/lib2to3/pgen2/grammar.pyc +0 -0
  438. package/python3.6.2/lib/python3.6/lib2to3/pgen2/literals.pyc +0 -0
  439. package/python3.6.2/lib/python3.6/lib2to3/pgen2/parse.pyc +0 -0
  440. package/python3.6.2/lib/python3.6/lib2to3/pgen2/pgen.pyc +0 -0
  441. package/python3.6.2/lib/python3.6/lib2to3/pgen2/token.pyc +0 -0
  442. package/python3.6.2/lib/python3.6/lib2to3/pgen2/tokenize.pyc +0 -0
  443. package/python3.6.2/lib/python3.6/lib2to3/pygram.pyc +0 -0
  444. package/python3.6.2/lib/python3.6/lib2to3/pytree.pyc +0 -0
  445. package/python3.6.2/lib/python3.6/lib2to3/refactor.pyc +0 -0
  446. package/python3.6.2/lib/python3.6/linecache.pyc +0 -0
  447. package/python3.6.2/lib/python3.6/locale.pyc +0 -0
  448. package/python3.6.2/lib/python3.6/logging/__init__.pyc +0 -0
  449. package/python3.6.2/lib/python3.6/logging/config.pyc +0 -0
  450. package/python3.6.2/lib/python3.6/logging/handlers.pyc +0 -0
  451. package/python3.6.2/lib/python3.6/lzma.pyc +0 -0
  452. package/python3.6.2/lib/python3.6/macpath.pyc +0 -0
  453. package/python3.6.2/lib/python3.6/macurl2path.pyc +0 -0
  454. package/python3.6.2/lib/python3.6/mailbox.pyc +0 -0
  455. package/python3.6.2/lib/python3.6/mailcap.pyc +0 -0
  456. package/python3.6.2/lib/python3.6/mimetypes.pyc +0 -0
  457. package/python3.6.2/lib/python3.6/modulefinder.pyc +0 -0
  458. package/python3.6.2/lib/python3.6/multiprocessing/__init__.pyc +0 -0
  459. package/python3.6.2/lib/python3.6/multiprocessing/connection.pyc +0 -0
  460. package/python3.6.2/lib/python3.6/multiprocessing/context.pyc +0 -0
  461. package/python3.6.2/lib/python3.6/multiprocessing/dummy/__init__.pyc +0 -0
  462. package/python3.6.2/lib/python3.6/multiprocessing/dummy/connection.pyc +0 -0
  463. package/python3.6.2/lib/python3.6/multiprocessing/forkserver.pyc +0 -0
  464. package/python3.6.2/lib/python3.6/multiprocessing/heap.pyc +0 -0
  465. package/python3.6.2/lib/python3.6/multiprocessing/managers.pyc +0 -0
  466. package/python3.6.2/lib/python3.6/multiprocessing/pool.pyc +0 -0
  467. package/python3.6.2/lib/python3.6/multiprocessing/popen_fork.pyc +0 -0
  468. package/python3.6.2/lib/python3.6/multiprocessing/popen_forkserver.pyc +0 -0
  469. package/python3.6.2/lib/python3.6/multiprocessing/popen_spawn_posix.pyc +0 -0
  470. package/python3.6.2/lib/python3.6/multiprocessing/popen_spawn_win32.pyc +0 -0
  471. package/python3.6.2/lib/python3.6/multiprocessing/process.pyc +0 -0
  472. package/python3.6.2/lib/python3.6/multiprocessing/queues.pyc +0 -0
  473. package/python3.6.2/lib/python3.6/multiprocessing/reduction.pyc +0 -0
  474. package/python3.6.2/lib/python3.6/multiprocessing/resource_sharer.pyc +0 -0
  475. package/python3.6.2/lib/python3.6/multiprocessing/semaphore_tracker.pyc +0 -0
  476. package/python3.6.2/lib/python3.6/multiprocessing/sharedctypes.pyc +0 -0
  477. package/python3.6.2/lib/python3.6/multiprocessing/spawn.pyc +0 -0
  478. package/python3.6.2/lib/python3.6/multiprocessing/synchronize.pyc +0 -0
  479. package/python3.6.2/lib/python3.6/multiprocessing/util.pyc +0 -0
  480. package/python3.6.2/lib/python3.6/netrc.pyc +0 -0
  481. package/python3.6.2/lib/python3.6/nntplib.pyc +0 -0
  482. package/python3.6.2/lib/python3.6/ntpath.pyc +0 -0
  483. package/python3.6.2/lib/python3.6/nturl2path.pyc +0 -0
  484. package/python3.6.2/lib/python3.6/numbers.pyc +0 -0
  485. package/python3.6.2/lib/python3.6/opcode.pyc +0 -0
  486. package/python3.6.2/lib/python3.6/operator.pyc +0 -0
  487. package/python3.6.2/lib/python3.6/optparse.pyc +0 -0
  488. package/python3.6.2/lib/python3.6/os.pyc +0 -0
  489. package/python3.6.2/lib/python3.6/pathlib.pyc +0 -0
  490. package/python3.6.2/lib/python3.6/pdb.pyc +0 -0
  491. package/python3.6.2/lib/python3.6/pickle.pyc +0 -0
  492. package/python3.6.2/lib/python3.6/pickletools.pyc +0 -0
  493. package/python3.6.2/lib/python3.6/pipes.pyc +0 -0
  494. package/python3.6.2/lib/python3.6/pkgutil.pyc +0 -0
  495. package/python3.6.2/lib/python3.6/platform.pyc +0 -0
  496. package/python3.6.2/lib/python3.6/plistlib.pyc +0 -0
  497. package/python3.6.2/lib/python3.6/poplib.pyc +0 -0
  498. package/python3.6.2/lib/python3.6/posixpath.pyc +0 -0
  499. package/python3.6.2/lib/python3.6/pprint.pyc +0 -0
  500. package/python3.6.2/lib/python3.6/profile.pyc +0 -0
  501. package/python3.6.2/lib/python3.6/pstats.pyc +0 -0
  502. package/python3.6.2/lib/python3.6/pty.pyc +0 -0
  503. package/python3.6.2/lib/python3.6/py_compile.pyc +0 -0
  504. package/python3.6.2/lib/python3.6/pyclbr.pyc +0 -0
  505. package/python3.6.2/lib/python3.6/pydoc.pyc +0 -0
  506. package/python3.6.2/lib/python3.6/pydoc_data/__init__.pyc +0 -0
  507. package/python3.6.2/lib/python3.6/pydoc_data/topics.pyc +0 -0
  508. package/python3.6.2/lib/python3.6/queue.pyc +0 -0
  509. package/python3.6.2/lib/python3.6/quopri.pyc +0 -0
  510. package/python3.6.2/lib/python3.6/random.pyc +0 -0
  511. package/python3.6.2/lib/python3.6/re.pyc +0 -0
  512. package/python3.6.2/lib/python3.6/reprlib.pyc +0 -0
  513. package/python3.6.2/lib/python3.6/rlcompleter.pyc +0 -0
  514. package/python3.6.2/lib/python3.6/runpy.pyc +0 -0
  515. package/python3.6.2/lib/python3.6/sched.pyc +0 -0
  516. package/python3.6.2/lib/python3.6/secrets.pyc +0 -0
  517. package/python3.6.2/lib/python3.6/selectors.pyc +0 -0
  518. package/python3.6.2/lib/python3.6/shelve.pyc +0 -0
  519. package/python3.6.2/lib/python3.6/shlex.pyc +0 -0
  520. package/python3.6.2/lib/python3.6/shutil.pyc +0 -0
  521. package/python3.6.2/lib/python3.6/signal.pyc +0 -0
  522. package/python3.6.2/lib/python3.6/site.pyc +0 -0
  523. package/python3.6.2/lib/python3.6/smtpd.pyc +0 -0
  524. package/python3.6.2/lib/python3.6/smtplib.pyc +0 -0
  525. package/python3.6.2/lib/python3.6/sndhdr.pyc +0 -0
  526. package/python3.6.2/lib/python3.6/socket.pyc +0 -0
  527. package/python3.6.2/lib/python3.6/socketserver.pyc +0 -0
  528. package/python3.6.2/lib/python3.6/sqlite3/__init__.pyc +0 -0
  529. package/python3.6.2/lib/python3.6/sqlite3/dbapi2.pyc +0 -0
  530. package/python3.6.2/lib/python3.6/sqlite3/dump.pyc +0 -0
  531. package/python3.6.2/lib/python3.6/sre_compile.pyc +0 -0
  532. package/python3.6.2/lib/python3.6/sre_constants.pyc +0 -0
  533. package/python3.6.2/lib/python3.6/sre_parse.pyc +0 -0
  534. package/python3.6.2/lib/python3.6/ssl.pyc +0 -0
  535. package/python3.6.2/lib/python3.6/stat.pyc +0 -0
  536. package/python3.6.2/lib/python3.6/statistics.pyc +0 -0
  537. package/python3.6.2/lib/python3.6/string.pyc +0 -0
  538. package/python3.6.2/lib/python3.6/stringprep.pyc +0 -0
  539. package/python3.6.2/lib/python3.6/struct.pyc +0 -0
  540. package/python3.6.2/lib/python3.6/subprocess.pyc +0 -0
  541. package/python3.6.2/lib/python3.6/sunau.pyc +0 -0
  542. package/python3.6.2/lib/python3.6/symbol.pyc +0 -0
  543. package/python3.6.2/lib/python3.6/symtable.pyc +0 -0
  544. package/python3.6.2/lib/python3.6/sysconfig.pyc +0 -0
  545. package/python3.6.2/lib/python3.6/tabnanny.pyc +0 -0
  546. package/python3.6.2/lib/python3.6/tarfile.pyc +0 -0
  547. package/python3.6.2/lib/python3.6/telnetlib.pyc +0 -0
  548. package/python3.6.2/lib/python3.6/tempfile.pyc +0 -0
  549. package/python3.6.2/lib/python3.6/textwrap.pyc +0 -0
  550. package/python3.6.2/lib/python3.6/this.pyc +0 -0
  551. package/python3.6.2/lib/python3.6/threading.pyc +0 -0
  552. package/python3.6.2/lib/python3.6/timeit.pyc +0 -0
  553. package/python3.6.2/lib/python3.6/token.pyc +0 -0
  554. package/python3.6.2/lib/python3.6/tokenize.pyc +0 -0
  555. package/python3.6.2/lib/python3.6/trace.pyc +0 -0
  556. package/python3.6.2/lib/python3.6/traceback.pyc +0 -0
  557. package/python3.6.2/lib/python3.6/tracemalloc.pyc +0 -0
  558. package/python3.6.2/lib/python3.6/tty.pyc +0 -0
  559. package/python3.6.2/lib/python3.6/turtle.pyc +0 -0
  560. package/python3.6.2/lib/python3.6/types.pyc +0 -0
  561. package/python3.6.2/lib/python3.6/typing.pyc +0 -0
  562. package/python3.6.2/lib/python3.6/unittest/__init__.pyc +0 -0
  563. package/python3.6.2/lib/python3.6/unittest/__main__.pyc +0 -0
  564. package/python3.6.2/lib/python3.6/unittest/case.pyc +0 -0
  565. package/python3.6.2/lib/python3.6/unittest/loader.pyc +0 -0
  566. package/python3.6.2/lib/python3.6/unittest/main.pyc +0 -0
  567. package/python3.6.2/lib/python3.6/unittest/mock.pyc +0 -0
  568. package/python3.6.2/lib/python3.6/unittest/result.pyc +0 -0
  569. package/python3.6.2/lib/python3.6/unittest/runner.pyc +0 -0
  570. package/python3.6.2/lib/python3.6/unittest/signals.pyc +0 -0
  571. package/python3.6.2/lib/python3.6/unittest/suite.pyc +0 -0
  572. package/python3.6.2/lib/python3.6/unittest/util.pyc +0 -0
  573. package/python3.6.2/lib/python3.6/urllib/__init__.pyc +0 -0
  574. package/python3.6.2/lib/python3.6/urllib/error.pyc +0 -0
  575. package/python3.6.2/lib/python3.6/urllib/parse.pyc +0 -0
  576. package/python3.6.2/lib/python3.6/urllib/request.pyc +0 -0
  577. package/python3.6.2/lib/python3.6/urllib/response.pyc +0 -0
  578. package/python3.6.2/lib/python3.6/urllib/robotparser.pyc +0 -0
  579. package/python3.6.2/lib/python3.6/uu.pyc +0 -0
  580. package/python3.6.2/lib/python3.6/uuid.pyc +0 -0
  581. package/python3.6.2/lib/python3.6/venv/__init__.pyc +0 -0
  582. package/python3.6.2/lib/python3.6/venv/__main__.pyc +0 -0
  583. package/python3.6.2/lib/python3.6/warnings.pyc +0 -0
  584. package/python3.6.2/lib/python3.6/wave.pyc +0 -0
  585. package/python3.6.2/lib/python3.6/weakref.pyc +0 -0
  586. package/python3.6.2/lib/python3.6/webbrowser.pyc +0 -0
  587. package/python3.6.2/lib/python3.6/wsgiref/__init__.pyc +0 -0
  588. package/python3.6.2/lib/python3.6/wsgiref/handlers.pyc +0 -0
  589. package/python3.6.2/lib/python3.6/wsgiref/headers.pyc +0 -0
  590. package/python3.6.2/lib/python3.6/wsgiref/simple_server.pyc +0 -0
  591. package/python3.6.2/lib/python3.6/wsgiref/util.pyc +0 -0
  592. package/python3.6.2/lib/python3.6/wsgiref/validate.pyc +0 -0
  593. package/python3.6.2/lib/python3.6/xdrlib.pyc +0 -0
  594. package/python3.6.2/lib/python3.6/xml/__init__.pyc +0 -0
  595. package/python3.6.2/lib/python3.6/xml/dom/NodeFilter.pyc +0 -0
  596. package/python3.6.2/lib/python3.6/xml/dom/__init__.pyc +0 -0
  597. package/python3.6.2/lib/python3.6/xml/dom/domreg.pyc +0 -0
  598. package/python3.6.2/lib/python3.6/xml/dom/expatbuilder.pyc +0 -0
  599. package/python3.6.2/lib/python3.6/xml/dom/minicompat.pyc +0 -0
  600. package/python3.6.2/lib/python3.6/xml/dom/minidom.pyc +0 -0
  601. package/python3.6.2/lib/python3.6/xml/dom/pulldom.pyc +0 -0
  602. package/python3.6.2/lib/python3.6/xml/dom/xmlbuilder.pyc +0 -0
  603. package/python3.6.2/lib/python3.6/xml/etree/ElementInclude.pyc +0 -0
  604. package/python3.6.2/lib/python3.6/xml/etree/ElementPath.pyc +0 -0
  605. package/python3.6.2/lib/python3.6/xml/etree/ElementTree.pyc +0 -0
  606. package/python3.6.2/lib/python3.6/xml/etree/__init__.pyc +0 -0
  607. package/python3.6.2/lib/python3.6/xml/etree/cElementTree.pyc +0 -0
  608. package/python3.6.2/lib/python3.6/xml/parsers/__init__.pyc +0 -0
  609. package/python3.6.2/lib/python3.6/xml/parsers/expat.pyc +0 -0
  610. package/python3.6.2/lib/python3.6/xml/sax/__init__.pyc +0 -0
  611. package/python3.6.2/lib/python3.6/xml/sax/_exceptions.pyc +0 -0
  612. package/python3.6.2/lib/python3.6/xml/sax/expatreader.pyc +0 -0
  613. package/python3.6.2/lib/python3.6/xml/sax/handler.pyc +0 -0
  614. package/python3.6.2/lib/python3.6/xml/sax/saxutils.pyc +0 -0
  615. package/python3.6.2/lib/python3.6/xml/sax/xmlreader.pyc +0 -0
  616. package/python3.6.2/lib/python3.6/xmlrpc/__init__.pyc +0 -0
  617. package/python3.6.2/lib/python3.6/xmlrpc/client.pyc +0 -0
  618. package/python3.6.2/lib/python3.6/xmlrpc/server.pyc +0 -0
  619. package/python3.6.2/lib/python3.6/zipapp.pyc +0 -0
  620. package/python3.6.2/lib/python3.6/zipfile.pyc +0 -0
  621. package/python3.6.2/bin/idle3.4 +0 -5
  622. package/python3.6.2/bin/pip3.4 +0 -11
  623. package/python3.6.2/bin/pydoc3.4 +0 -5
  624. package/python3.6.2/bin/pyvenv-3.4 +0 -11
  625. package/python3.6.2/lib/python3.6/__future__.py +0 -140
  626. package/python3.6.2/lib/python3.6/__phello__.foo.py +0 -1
  627. package/python3.6.2/lib/python3.6/_bootlocale.py +0 -34
  628. package/python3.6.2/lib/python3.6/_collections_abc.py +0 -1008
  629. package/python3.6.2/lib/python3.6/_compat_pickle.py +0 -251
  630. package/python3.6.2/lib/python3.6/_compression.py +0 -152
  631. package/python3.6.2/lib/python3.6/_dummy_thread.py +0 -163
  632. package/python3.6.2/lib/python3.6/_markupbase.py +0 -395
  633. package/python3.6.2/lib/python3.6/_osx_support.py +0 -502
  634. package/python3.6.2/lib/python3.6/_pydecimal.py +0 -6449
  635. package/python3.6.2/lib/python3.6/_pyio.py +0 -2531
  636. package/python3.6.2/lib/python3.6/_sitebuiltins.py +0 -103
  637. package/python3.6.2/lib/python3.6/_strptime.py +0 -576
  638. package/python3.6.2/lib/python3.6/_threading_local.py +0 -246
  639. package/python3.6.2/lib/python3.6/_weakrefset.py +0 -196
  640. package/python3.6.2/lib/python3.6/abc.py +0 -248
  641. package/python3.6.2/lib/python3.6/aifc.py +0 -943
  642. package/python3.6.2/lib/python3.6/antigravity.py +0 -17
  643. package/python3.6.2/lib/python3.6/argparse.py +0 -2389
  644. package/python3.6.2/lib/python3.6/ast.py +0 -322
  645. package/python3.6.2/lib/python3.6/asynchat.py +0 -307
  646. package/python3.6.2/lib/python3.6/asyncio/__init__.py +0 -50
  647. package/python3.6.2/lib/python3.6/asyncio/base_events.py +0 -1474
  648. package/python3.6.2/lib/python3.6/asyncio/base_futures.py +0 -71
  649. package/python3.6.2/lib/python3.6/asyncio/base_subprocess.py +0 -293
  650. package/python3.6.2/lib/python3.6/asyncio/base_tasks.py +0 -76
  651. package/python3.6.2/lib/python3.6/asyncio/compat.py +0 -18
  652. package/python3.6.2/lib/python3.6/asyncio/constants.py +0 -12
  653. package/python3.6.2/lib/python3.6/asyncio/coroutines.py +0 -346
  654. package/python3.6.2/lib/python3.6/asyncio/events.py +0 -715
  655. package/python3.6.2/lib/python3.6/asyncio/futures.py +0 -439
  656. package/python3.6.2/lib/python3.6/asyncio/locks.py +0 -485
  657. package/python3.6.2/lib/python3.6/asyncio/log.py +0 -7
  658. package/python3.6.2/lib/python3.6/asyncio/proactor_events.py +0 -551
  659. package/python3.6.2/lib/python3.6/asyncio/protocols.py +0 -134
  660. package/python3.6.2/lib/python3.6/asyncio/queues.py +0 -259
  661. package/python3.6.2/lib/python3.6/asyncio/selector_events.py +0 -1141
  662. package/python3.6.2/lib/python3.6/asyncio/sslproto.py +0 -697
  663. package/python3.6.2/lib/python3.6/asyncio/streams.py +0 -701
  664. package/python3.6.2/lib/python3.6/asyncio/subprocess.py +0 -226
  665. package/python3.6.2/lib/python3.6/asyncio/tasks.py +0 -717
  666. package/python3.6.2/lib/python3.6/asyncio/test_utils.py +0 -519
  667. package/python3.6.2/lib/python3.6/asyncio/transports.py +0 -306
  668. package/python3.6.2/lib/python3.6/asyncio/unix_events.py +0 -1074
  669. package/python3.6.2/lib/python3.6/asyncio/windows_events.py +0 -779
  670. package/python3.6.2/lib/python3.6/asyncio/windows_utils.py +0 -224
  671. package/python3.6.2/lib/python3.6/asyncore.py +0 -645
  672. package/python3.6.2/lib/python3.6/base64.py +0 -602
  673. package/python3.6.2/lib/python3.6/bdb.py +0 -673
  674. package/python3.6.2/lib/python3.6/binhex.py +0 -479
  675. package/python3.6.2/lib/python3.6/bisect.py +0 -92
  676. package/python3.6.2/lib/python3.6/bz2.py +0 -361
  677. package/python3.6.2/lib/python3.6/cProfile.py +0 -160
  678. package/python3.6.2/lib/python3.6/calendar.py +0 -713
  679. package/python3.6.2/lib/python3.6/cgi.py +0 -1077
  680. package/python3.6.2/lib/python3.6/cgitb.py +0 -319
  681. package/python3.6.2/lib/python3.6/chunk.py +0 -169
  682. package/python3.6.2/lib/python3.6/cmd.py +0 -401
  683. package/python3.6.2/lib/python3.6/code.py +0 -314
  684. package/python3.6.2/lib/python3.6/codecs.py +0 -1113
  685. package/python3.6.2/lib/python3.6/codeop.py +0 -168
  686. package/python3.6.2/lib/python3.6/collections/__init__.py +0 -1244
  687. package/python3.6.2/lib/python3.6/collections/abc.py +0 -2
  688. package/python3.6.2/lib/python3.6/colorsys.py +0 -164
  689. package/python3.6.2/lib/python3.6/compileall.py +0 -295
  690. package/python3.6.2/lib/python3.6/concurrent/__init__.py +0 -1
  691. package/python3.6.2/lib/python3.6/concurrent/futures/__init__.py +0 -18
  692. package/python3.6.2/lib/python3.6/concurrent/futures/_base.py +0 -612
  693. package/python3.6.2/lib/python3.6/concurrent/futures/process.py +0 -515
  694. package/python3.6.2/lib/python3.6/concurrent/futures/thread.py +0 -153
  695. package/python3.6.2/lib/python3.6/configparser.py +0 -1342
  696. package/python3.6.2/lib/python3.6/contextlib.py +0 -384
  697. package/python3.6.2/lib/python3.6/copy.py +0 -313
  698. package/python3.6.2/lib/python3.6/copyreg.py +0 -206
  699. package/python3.6.2/lib/python3.6/crypt.py +0 -61
  700. package/python3.6.2/lib/python3.6/csv.py +0 -449
  701. package/python3.6.2/lib/python3.6/ctypes/__init__.py +0 -538
  702. package/python3.6.2/lib/python3.6/ctypes/_endian.py +0 -61
  703. package/python3.6.2/lib/python3.6/ctypes/macholib/__init__.py +0 -9
  704. package/python3.6.2/lib/python3.6/ctypes/macholib/dyld.py +0 -159
  705. package/python3.6.2/lib/python3.6/ctypes/macholib/dylib.py +0 -63
  706. package/python3.6.2/lib/python3.6/ctypes/macholib/framework.py +0 -65
  707. package/python3.6.2/lib/python3.6/ctypes/test/__init__.py +0 -14
  708. package/python3.6.2/lib/python3.6/ctypes/test/__main__.py +0 -4
  709. package/python3.6.2/lib/python3.6/ctypes/test/test_anon.py +0 -73
  710. package/python3.6.2/lib/python3.6/ctypes/test/test_array_in_pointer.py +0 -64
  711. package/python3.6.2/lib/python3.6/ctypes/test/test_arrays.py +0 -185
  712. package/python3.6.2/lib/python3.6/ctypes/test/test_as_parameter.py +0 -226
  713. package/python3.6.2/lib/python3.6/ctypes/test/test_bitfields.py +0 -290
  714. package/python3.6.2/lib/python3.6/ctypes/test/test_buffers.py +0 -64
  715. package/python3.6.2/lib/python3.6/ctypes/test/test_bytes.py +0 -65
  716. package/python3.6.2/lib/python3.6/ctypes/test/test_byteswap.py +0 -315
  717. package/python3.6.2/lib/python3.6/ctypes/test/test_callbacks.py +0 -293
  718. package/python3.6.2/lib/python3.6/ctypes/test/test_cast.py +0 -86
  719. package/python3.6.2/lib/python3.6/ctypes/test/test_cfuncs.py +0 -212
  720. package/python3.6.2/lib/python3.6/ctypes/test/test_checkretval.py +0 -36
  721. package/python3.6.2/lib/python3.6/ctypes/test/test_delattr.py +0 -21
  722. package/python3.6.2/lib/python3.6/ctypes/test/test_errno.py +0 -79
  723. package/python3.6.2/lib/python3.6/ctypes/test/test_find.py +0 -116
  724. package/python3.6.2/lib/python3.6/ctypes/test/test_frombuffer.py +0 -141
  725. package/python3.6.2/lib/python3.6/ctypes/test/test_funcptr.py +0 -132
  726. package/python3.6.2/lib/python3.6/ctypes/test/test_functions.py +0 -402
  727. package/python3.6.2/lib/python3.6/ctypes/test/test_incomplete.py +0 -42
  728. package/python3.6.2/lib/python3.6/ctypes/test/test_init.py +0 -40
  729. package/python3.6.2/lib/python3.6/ctypes/test/test_internals.py +0 -100
  730. package/python3.6.2/lib/python3.6/ctypes/test/test_keeprefs.py +0 -153
  731. package/python3.6.2/lib/python3.6/ctypes/test/test_libc.py +0 -33
  732. package/python3.6.2/lib/python3.6/ctypes/test/test_loading.py +0 -116
  733. package/python3.6.2/lib/python3.6/ctypes/test/test_macholib.py +0 -63
  734. package/python3.6.2/lib/python3.6/ctypes/test/test_memfunctions.py +0 -79
  735. package/python3.6.2/lib/python3.6/ctypes/test/test_numbers.py +0 -290
  736. package/python3.6.2/lib/python3.6/ctypes/test/test_objects.py +0 -67
  737. package/python3.6.2/lib/python3.6/ctypes/test/test_parameters.py +0 -207
  738. package/python3.6.2/lib/python3.6/ctypes/test/test_pep3118.py +0 -233
  739. package/python3.6.2/lib/python3.6/ctypes/test/test_pickling.py +0 -81
  740. package/python3.6.2/lib/python3.6/ctypes/test/test_pointers.py +0 -223
  741. package/python3.6.2/lib/python3.6/ctypes/test/test_prototypes.py +0 -222
  742. package/python3.6.2/lib/python3.6/ctypes/test/test_python_api.py +0 -89
  743. package/python3.6.2/lib/python3.6/ctypes/test/test_random_things.py +0 -74
  744. package/python3.6.2/lib/python3.6/ctypes/test/test_refcounts.py +0 -101
  745. package/python3.6.2/lib/python3.6/ctypes/test/test_repr.py +0 -29
  746. package/python3.6.2/lib/python3.6/ctypes/test/test_returnfuncptrs.py +0 -66
  747. package/python3.6.2/lib/python3.6/ctypes/test/test_simplesubclasses.py +0 -55
  748. package/python3.6.2/lib/python3.6/ctypes/test/test_sizes.py +0 -33
  749. package/python3.6.2/lib/python3.6/ctypes/test/test_slicing.py +0 -167
  750. package/python3.6.2/lib/python3.6/ctypes/test/test_stringptr.py +0 -77
  751. package/python3.6.2/lib/python3.6/ctypes/test/test_strings.py +0 -225
  752. package/python3.6.2/lib/python3.6/ctypes/test/test_struct_fields.py +0 -74
  753. package/python3.6.2/lib/python3.6/ctypes/test/test_structures.py +0 -491
  754. package/python3.6.2/lib/python3.6/ctypes/test/test_unaligned_structures.py +0 -45
  755. package/python3.6.2/lib/python3.6/ctypes/test/test_unicode.py +0 -56
  756. package/python3.6.2/lib/python3.6/ctypes/test/test_values.py +0 -100
  757. package/python3.6.2/lib/python3.6/ctypes/test/test_varsize_struct.py +0 -50
  758. package/python3.6.2/lib/python3.6/ctypes/test/test_win32.py +0 -147
  759. package/python3.6.2/lib/python3.6/ctypes/test/test_wintypes.py +0 -41
  760. package/python3.6.2/lib/python3.6/ctypes/util.py +0 -337
  761. package/python3.6.2/lib/python3.6/ctypes/wintypes.py +0 -202
  762. package/python3.6.2/lib/python3.6/curses/__init__.py +0 -101
  763. package/python3.6.2/lib/python3.6/curses/ascii.py +0 -99
  764. package/python3.6.2/lib/python3.6/curses/has_key.py +0 -192
  765. package/python3.6.2/lib/python3.6/curses/panel.py +0 -6
  766. package/python3.6.2/lib/python3.6/curses/textpad.py +0 -201
  767. package/python3.6.2/lib/python3.6/datetime.py +0 -2280
  768. package/python3.6.2/lib/python3.6/dbm/__init__.py +0 -188
  769. package/python3.6.2/lib/python3.6/dbm/dumb.py +0 -324
  770. package/python3.6.2/lib/python3.6/dbm/gnu.py +0 -3
  771. package/python3.6.2/lib/python3.6/dbm/ndbm.py +0 -3
  772. package/python3.6.2/lib/python3.6/decimal.py +0 -11
  773. package/python3.6.2/lib/python3.6/difflib.py +0 -2093
  774. package/python3.6.2/lib/python3.6/dis.py +0 -490
  775. package/python3.6.2/lib/python3.6/distutils/__init__.py +0 -13
  776. package/python3.6.2/lib/python3.6/distutils/_msvccompiler.py +0 -574
  777. package/python3.6.2/lib/python3.6/distutils/archive_util.py +0 -248
  778. package/python3.6.2/lib/python3.6/distutils/bcppcompiler.py +0 -393
  779. package/python3.6.2/lib/python3.6/distutils/ccompiler.py +0 -1115
  780. package/python3.6.2/lib/python3.6/distutils/cmd.py +0 -434
  781. package/python3.6.2/lib/python3.6/distutils/command/__init__.py +0 -31
  782. package/python3.6.2/lib/python3.6/distutils/command/bdist.py +0 -143
  783. package/python3.6.2/lib/python3.6/distutils/command/bdist_dumb.py +0 -123
  784. package/python3.6.2/lib/python3.6/distutils/command/bdist_msi.py +0 -741
  785. package/python3.6.2/lib/python3.6/distutils/command/bdist_rpm.py +0 -582
  786. package/python3.6.2/lib/python3.6/distutils/command/bdist_wininst.py +0 -365
  787. package/python3.6.2/lib/python3.6/distutils/command/build.py +0 -157
  788. package/python3.6.2/lib/python3.6/distutils/command/build_clib.py +0 -209
  789. package/python3.6.2/lib/python3.6/distutils/command/build_ext.py +0 -755
  790. package/python3.6.2/lib/python3.6/distutils/command/build_py.py +0 -416
  791. package/python3.6.2/lib/python3.6/distutils/command/build_scripts.py +0 -160
  792. package/python3.6.2/lib/python3.6/distutils/command/check.py +0 -145
  793. package/python3.6.2/lib/python3.6/distutils/command/clean.py +0 -76
  794. package/python3.6.2/lib/python3.6/distutils/command/config.py +0 -347
  795. package/python3.6.2/lib/python3.6/distutils/command/install.py +0 -656
  796. package/python3.6.2/lib/python3.6/distutils/command/install_data.py +0 -79
  797. package/python3.6.2/lib/python3.6/distutils/command/install_egg_info.py +0 -77
  798. package/python3.6.2/lib/python3.6/distutils/command/install_headers.py +0 -47
  799. package/python3.6.2/lib/python3.6/distutils/command/install_lib.py +0 -217
  800. package/python3.6.2/lib/python3.6/distutils/command/install_scripts.py +0 -60
  801. package/python3.6.2/lib/python3.6/distutils/command/register.py +0 -304
  802. package/python3.6.2/lib/python3.6/distutils/command/sdist.py +0 -456
  803. package/python3.6.2/lib/python3.6/distutils/command/upload.py +0 -201
  804. package/python3.6.2/lib/python3.6/distutils/command/wininst-10.0-amd64.exe +0 -0
  805. package/python3.6.2/lib/python3.6/distutils/command/wininst-10.0.exe +0 -0
  806. package/python3.6.2/lib/python3.6/distutils/command/wininst-14.0-amd64.exe +0 -0
  807. package/python3.6.2/lib/python3.6/distutils/command/wininst-14.0.exe +0 -0
  808. package/python3.6.2/lib/python3.6/distutils/command/wininst-6.0.exe +0 -0
  809. package/python3.6.2/lib/python3.6/distutils/command/wininst-7.1.exe +0 -0
  810. package/python3.6.2/lib/python3.6/distutils/command/wininst-8.0.exe +0 -0
  811. package/python3.6.2/lib/python3.6/distutils/command/wininst-9.0-amd64.exe +0 -0
  812. package/python3.6.2/lib/python3.6/distutils/command/wininst-9.0.exe +0 -0
  813. package/python3.6.2/lib/python3.6/distutils/config.py +0 -131
  814. package/python3.6.2/lib/python3.6/distutils/core.py +0 -234
  815. package/python3.6.2/lib/python3.6/distutils/cygwinccompiler.py +0 -405
  816. package/python3.6.2/lib/python3.6/distutils/debug.py +0 -5
  817. package/python3.6.2/lib/python3.6/distutils/dep_util.py +0 -92
  818. package/python3.6.2/lib/python3.6/distutils/dir_util.py +0 -210
  819. package/python3.6.2/lib/python3.6/distutils/dist.py +0 -1236
  820. package/python3.6.2/lib/python3.6/distutils/errors.py +0 -97
  821. package/python3.6.2/lib/python3.6/distutils/extension.py +0 -240
  822. package/python3.6.2/lib/python3.6/distutils/fancy_getopt.py +0 -457
  823. package/python3.6.2/lib/python3.6/distutils/file_util.py +0 -238
  824. package/python3.6.2/lib/python3.6/distutils/filelist.py +0 -327
  825. package/python3.6.2/lib/python3.6/distutils/log.py +0 -75
  826. package/python3.6.2/lib/python3.6/distutils/msvc9compiler.py +0 -791
  827. package/python3.6.2/lib/python3.6/distutils/msvccompiler.py +0 -643
  828. package/python3.6.2/lib/python3.6/distutils/spawn.py +0 -192
  829. package/python3.6.2/lib/python3.6/distutils/sysconfig.py +0 -532
  830. package/python3.6.2/lib/python3.6/distutils/tests/Setup.sample +0 -67
  831. package/python3.6.2/lib/python3.6/distutils/tests/__init__.py +0 -36
  832. package/python3.6.2/lib/python3.6/distutils/tests/support.py +0 -210
  833. package/python3.6.2/lib/python3.6/distutils/tests/test_archive_util.py +0 -395
  834. package/python3.6.2/lib/python3.6/distutils/tests/test_bdist.py +0 -50
  835. package/python3.6.2/lib/python3.6/distutils/tests/test_bdist_dumb.py +0 -97
  836. package/python3.6.2/lib/python3.6/distutils/tests/test_bdist_msi.py +0 -25
  837. package/python3.6.2/lib/python3.6/distutils/tests/test_bdist_rpm.py +0 -135
  838. package/python3.6.2/lib/python3.6/distutils/tests/test_bdist_wininst.py +0 -31
  839. package/python3.6.2/lib/python3.6/distutils/tests/test_build.py +0 -56
  840. package/python3.6.2/lib/python3.6/distutils/tests/test_build_clib.py +0 -135
  841. package/python3.6.2/lib/python3.6/distutils/tests/test_build_ext.py +0 -521
  842. package/python3.6.2/lib/python3.6/distutils/tests/test_build_py.py +0 -179
  843. package/python3.6.2/lib/python3.6/distutils/tests/test_build_scripts.py +0 -112
  844. package/python3.6.2/lib/python3.6/distutils/tests/test_check.py +0 -149
  845. package/python3.6.2/lib/python3.6/distutils/tests/test_clean.py +0 -49
  846. package/python3.6.2/lib/python3.6/distutils/tests/test_cmd.py +0 -126
  847. package/python3.6.2/lib/python3.6/distutils/tests/test_config.py +0 -140
  848. package/python3.6.2/lib/python3.6/distutils/tests/test_config_cmd.py +0 -92
  849. package/python3.6.2/lib/python3.6/distutils/tests/test_core.py +0 -140
  850. package/python3.6.2/lib/python3.6/distutils/tests/test_cygwinccompiler.py +0 -154
  851. package/python3.6.2/lib/python3.6/distutils/tests/test_dep_util.py +0 -80
  852. package/python3.6.2/lib/python3.6/distutils/tests/test_dir_util.py +0 -139
  853. package/python3.6.2/lib/python3.6/distutils/tests/test_dist.py +0 -456
  854. package/python3.6.2/lib/python3.6/distutils/tests/test_extension.py +0 -69
  855. package/python3.6.2/lib/python3.6/distutils/tests/test_file_util.py +0 -114
  856. package/python3.6.2/lib/python3.6/distutils/tests/test_filelist.py +0 -340
  857. package/python3.6.2/lib/python3.6/distutils/tests/test_install.py +0 -248
  858. package/python3.6.2/lib/python3.6/distutils/tests/test_install_data.py +0 -75
  859. package/python3.6.2/lib/python3.6/distutils/tests/test_install_headers.py +0 -39
  860. package/python3.6.2/lib/python3.6/distutils/tests/test_install_lib.py +0 -115
  861. package/python3.6.2/lib/python3.6/distutils/tests/test_install_scripts.py +0 -82
  862. package/python3.6.2/lib/python3.6/distutils/tests/test_log.py +0 -38
  863. package/python3.6.2/lib/python3.6/distutils/tests/test_msvc9compiler.py +0 -184
  864. package/python3.6.2/lib/python3.6/distutils/tests/test_msvccompiler.py +0 -132
  865. package/python3.6.2/lib/python3.6/distutils/tests/test_register.py +0 -323
  866. package/python3.6.2/lib/python3.6/distutils/tests/test_sdist.py +0 -484
  867. package/python3.6.2/lib/python3.6/distutils/tests/test_spawn.py +0 -58
  868. package/python3.6.2/lib/python3.6/distutils/tests/test_sysconfig.py +0 -198
  869. package/python3.6.2/lib/python3.6/distutils/tests/test_text_file.py +0 -107
  870. package/python3.6.2/lib/python3.6/distutils/tests/test_unixccompiler.py +0 -149
  871. package/python3.6.2/lib/python3.6/distutils/tests/test_upload.py +0 -181
  872. package/python3.6.2/lib/python3.6/distutils/tests/test_util.py +0 -300
  873. package/python3.6.2/lib/python3.6/distutils/tests/test_version.py +0 -71
  874. package/python3.6.2/lib/python3.6/distutils/tests/test_versionpredicate.py +0 -13
  875. package/python3.6.2/lib/python3.6/distutils/text_file.py +0 -286
  876. package/python3.6.2/lib/python3.6/distutils/unixccompiler.py +0 -322
  877. package/python3.6.2/lib/python3.6/distutils/util.py +0 -557
  878. package/python3.6.2/lib/python3.6/distutils/version.py +0 -343
  879. package/python3.6.2/lib/python3.6/distutils/versionpredicate.py +0 -166
  880. package/python3.6.2/lib/python3.6/doctest.py +0 -2787
  881. package/python3.6.2/lib/python3.6/dummy_threading.py +0 -78
  882. package/python3.6.2/lib/python3.6/email/__init__.py +0 -62
  883. package/python3.6.2/lib/python3.6/email/_encoded_words.py +0 -221
  884. package/python3.6.2/lib/python3.6/email/_header_value_parser.py +0 -2811
  885. package/python3.6.2/lib/python3.6/email/_parseaddr.py +0 -540
  886. package/python3.6.2/lib/python3.6/email/_policybase.py +0 -374
  887. package/python3.6.2/lib/python3.6/email/base64mime.py +0 -119
  888. package/python3.6.2/lib/python3.6/email/charset.py +0 -406
  889. package/python3.6.2/lib/python3.6/email/contentmanager.py +0 -250
  890. package/python3.6.2/lib/python3.6/email/encoders.py +0 -69
  891. package/python3.6.2/lib/python3.6/email/errors.py +0 -107
  892. package/python3.6.2/lib/python3.6/email/feedparser.py +0 -536
  893. package/python3.6.2/lib/python3.6/email/generator.py +0 -508
  894. package/python3.6.2/lib/python3.6/email/header.py +0 -578
  895. package/python3.6.2/lib/python3.6/email/headerregistry.py +0 -589
  896. package/python3.6.2/lib/python3.6/email/iterators.py +0 -71
  897. package/python3.6.2/lib/python3.6/email/message.py +0 -1164
  898. package/python3.6.2/lib/python3.6/email/mime/__init__.py +0 -0
  899. package/python3.6.2/lib/python3.6/email/mime/application.py +0 -37
  900. package/python3.6.2/lib/python3.6/email/mime/audio.py +0 -74
  901. package/python3.6.2/lib/python3.6/email/mime/base.py +0 -30
  902. package/python3.6.2/lib/python3.6/email/mime/image.py +0 -47
  903. package/python3.6.2/lib/python3.6/email/mime/message.py +0 -34
  904. package/python3.6.2/lib/python3.6/email/mime/multipart.py +0 -48
  905. package/python3.6.2/lib/python3.6/email/mime/nonmultipart.py +0 -22
  906. package/python3.6.2/lib/python3.6/email/mime/text.py +0 -42
  907. package/python3.6.2/lib/python3.6/email/parser.py +0 -132
  908. package/python3.6.2/lib/python3.6/email/policy.py +0 -223
  909. package/python3.6.2/lib/python3.6/email/quoprimime.py +0 -299
  910. package/python3.6.2/lib/python3.6/email/utils.py +0 -388
  911. package/python3.6.2/lib/python3.6/encodings/__init__.py +0 -169
  912. package/python3.6.2/lib/python3.6/encodings/aliases.py +0 -550
  913. package/python3.6.2/lib/python3.6/encodings/ascii.py +0 -50
  914. package/python3.6.2/lib/python3.6/encodings/base64_codec.py +0 -55
  915. package/python3.6.2/lib/python3.6/encodings/big5.py +0 -39
  916. package/python3.6.2/lib/python3.6/encodings/big5hkscs.py +0 -39
  917. package/python3.6.2/lib/python3.6/encodings/bz2_codec.py +0 -78
  918. package/python3.6.2/lib/python3.6/encodings/charmap.py +0 -69
  919. package/python3.6.2/lib/python3.6/encodings/cp037.py +0 -307
  920. package/python3.6.2/lib/python3.6/encodings/cp1006.py +0 -307
  921. package/python3.6.2/lib/python3.6/encodings/cp1026.py +0 -307
  922. package/python3.6.2/lib/python3.6/encodings/cp1125.py +0 -698
  923. package/python3.6.2/lib/python3.6/encodings/cp1140.py +0 -307
  924. package/python3.6.2/lib/python3.6/encodings/cp1250.py +0 -307
  925. package/python3.6.2/lib/python3.6/encodings/cp1251.py +0 -307
  926. package/python3.6.2/lib/python3.6/encodings/cp1252.py +0 -307
  927. package/python3.6.2/lib/python3.6/encodings/cp1253.py +0 -307
  928. package/python3.6.2/lib/python3.6/encodings/cp1254.py +0 -307
  929. package/python3.6.2/lib/python3.6/encodings/cp1255.py +0 -307
  930. package/python3.6.2/lib/python3.6/encodings/cp1256.py +0 -307
  931. package/python3.6.2/lib/python3.6/encodings/cp1257.py +0 -307
  932. package/python3.6.2/lib/python3.6/encodings/cp1258.py +0 -307
  933. package/python3.6.2/lib/python3.6/encodings/cp273.py +0 -307
  934. package/python3.6.2/lib/python3.6/encodings/cp424.py +0 -307
  935. package/python3.6.2/lib/python3.6/encodings/cp437.py +0 -698
  936. package/python3.6.2/lib/python3.6/encodings/cp500.py +0 -307
  937. package/python3.6.2/lib/python3.6/encodings/cp65001.py +0 -43
  938. package/python3.6.2/lib/python3.6/encodings/cp720.py +0 -309
  939. package/python3.6.2/lib/python3.6/encodings/cp737.py +0 -698
  940. package/python3.6.2/lib/python3.6/encodings/cp775.py +0 -697
  941. package/python3.6.2/lib/python3.6/encodings/cp850.py +0 -698
  942. package/python3.6.2/lib/python3.6/encodings/cp852.py +0 -698
  943. package/python3.6.2/lib/python3.6/encodings/cp855.py +0 -698
  944. package/python3.6.2/lib/python3.6/encodings/cp856.py +0 -307
  945. package/python3.6.2/lib/python3.6/encodings/cp857.py +0 -694
  946. package/python3.6.2/lib/python3.6/encodings/cp858.py +0 -698
  947. package/python3.6.2/lib/python3.6/encodings/cp860.py +0 -698
  948. package/python3.6.2/lib/python3.6/encodings/cp861.py +0 -698
  949. package/python3.6.2/lib/python3.6/encodings/cp862.py +0 -698
  950. package/python3.6.2/lib/python3.6/encodings/cp863.py +0 -698
  951. package/python3.6.2/lib/python3.6/encodings/cp864.py +0 -690
  952. package/python3.6.2/lib/python3.6/encodings/cp865.py +0 -698
  953. package/python3.6.2/lib/python3.6/encodings/cp866.py +0 -698
  954. package/python3.6.2/lib/python3.6/encodings/cp869.py +0 -689
  955. package/python3.6.2/lib/python3.6/encodings/cp874.py +0 -307
  956. package/python3.6.2/lib/python3.6/encodings/cp875.py +0 -307
  957. package/python3.6.2/lib/python3.6/encodings/cp932.py +0 -39
  958. package/python3.6.2/lib/python3.6/encodings/cp949.py +0 -39
  959. package/python3.6.2/lib/python3.6/encodings/cp950.py +0 -39
  960. package/python3.6.2/lib/python3.6/encodings/euc_jis_2004.py +0 -39
  961. package/python3.6.2/lib/python3.6/encodings/euc_jisx0213.py +0 -39
  962. package/python3.6.2/lib/python3.6/encodings/euc_jp.py +0 -39
  963. package/python3.6.2/lib/python3.6/encodings/euc_kr.py +0 -39
  964. package/python3.6.2/lib/python3.6/encodings/gb18030.py +0 -39
  965. package/python3.6.2/lib/python3.6/encodings/gb2312.py +0 -39
  966. package/python3.6.2/lib/python3.6/encodings/gbk.py +0 -39
  967. package/python3.6.2/lib/python3.6/encodings/hex_codec.py +0 -55
  968. package/python3.6.2/lib/python3.6/encodings/hp_roman8.py +0 -314
  969. package/python3.6.2/lib/python3.6/encodings/hz.py +0 -39
  970. package/python3.6.2/lib/python3.6/encodings/idna.py +0 -309
  971. package/python3.6.2/lib/python3.6/encodings/iso2022_jp.py +0 -39
  972. package/python3.6.2/lib/python3.6/encodings/iso2022_jp_1.py +0 -39
  973. package/python3.6.2/lib/python3.6/encodings/iso2022_jp_2.py +0 -39
  974. package/python3.6.2/lib/python3.6/encodings/iso2022_jp_2004.py +0 -39
  975. package/python3.6.2/lib/python3.6/encodings/iso2022_jp_3.py +0 -39
  976. package/python3.6.2/lib/python3.6/encodings/iso2022_jp_ext.py +0 -39
  977. package/python3.6.2/lib/python3.6/encodings/iso2022_kr.py +0 -39
  978. package/python3.6.2/lib/python3.6/encodings/iso8859_1.py +0 -307
  979. package/python3.6.2/lib/python3.6/encodings/iso8859_10.py +0 -307
  980. package/python3.6.2/lib/python3.6/encodings/iso8859_11.py +0 -307
  981. package/python3.6.2/lib/python3.6/encodings/iso8859_13.py +0 -307
  982. package/python3.6.2/lib/python3.6/encodings/iso8859_14.py +0 -307
  983. package/python3.6.2/lib/python3.6/encodings/iso8859_15.py +0 -307
  984. package/python3.6.2/lib/python3.6/encodings/iso8859_16.py +0 -307
  985. package/python3.6.2/lib/python3.6/encodings/iso8859_2.py +0 -307
  986. package/python3.6.2/lib/python3.6/encodings/iso8859_3.py +0 -307
  987. package/python3.6.2/lib/python3.6/encodings/iso8859_4.py +0 -307
  988. package/python3.6.2/lib/python3.6/encodings/iso8859_5.py +0 -307
  989. package/python3.6.2/lib/python3.6/encodings/iso8859_6.py +0 -307
  990. package/python3.6.2/lib/python3.6/encodings/iso8859_7.py +0 -307
  991. package/python3.6.2/lib/python3.6/encodings/iso8859_8.py +0 -307
  992. package/python3.6.2/lib/python3.6/encodings/iso8859_9.py +0 -307
  993. package/python3.6.2/lib/python3.6/encodings/johab.py +0 -39
  994. package/python3.6.2/lib/python3.6/encodings/koi8_r.py +0 -307
  995. package/python3.6.2/lib/python3.6/encodings/koi8_t.py +0 -308
  996. package/python3.6.2/lib/python3.6/encodings/koi8_u.py +0 -307
  997. package/python3.6.2/lib/python3.6/encodings/kz1048.py +0 -307
  998. package/python3.6.2/lib/python3.6/encodings/latin_1.py +0 -50
  999. package/python3.6.2/lib/python3.6/encodings/mac_arabic.py +0 -698
  1000. package/python3.6.2/lib/python3.6/encodings/mac_centeuro.py +0 -307
  1001. package/python3.6.2/lib/python3.6/encodings/mac_croatian.py +0 -307
  1002. package/python3.6.2/lib/python3.6/encodings/mac_cyrillic.py +0 -307
  1003. package/python3.6.2/lib/python3.6/encodings/mac_farsi.py +0 -307
  1004. package/python3.6.2/lib/python3.6/encodings/mac_greek.py +0 -307
  1005. package/python3.6.2/lib/python3.6/encodings/mac_iceland.py +0 -307
  1006. package/python3.6.2/lib/python3.6/encodings/mac_latin2.py +0 -312
  1007. package/python3.6.2/lib/python3.6/encodings/mac_roman.py +0 -307
  1008. package/python3.6.2/lib/python3.6/encodings/mac_romanian.py +0 -307
  1009. package/python3.6.2/lib/python3.6/encodings/mac_turkish.py +0 -307
  1010. package/python3.6.2/lib/python3.6/encodings/mbcs.py +0 -47
  1011. package/python3.6.2/lib/python3.6/encodings/oem.py +0 -41
  1012. package/python3.6.2/lib/python3.6/encodings/palmos.py +0 -308
  1013. package/python3.6.2/lib/python3.6/encodings/ptcp154.py +0 -312
  1014. package/python3.6.2/lib/python3.6/encodings/punycode.py +0 -237
  1015. package/python3.6.2/lib/python3.6/encodings/quopri_codec.py +0 -56
  1016. package/python3.6.2/lib/python3.6/encodings/raw_unicode_escape.py +0 -45
  1017. package/python3.6.2/lib/python3.6/encodings/rot_13.py +0 -113
  1018. package/python3.6.2/lib/python3.6/encodings/shift_jis.py +0 -39
  1019. package/python3.6.2/lib/python3.6/encodings/shift_jis_2004.py +0 -39
  1020. package/python3.6.2/lib/python3.6/encodings/shift_jisx0213.py +0 -39
  1021. package/python3.6.2/lib/python3.6/encodings/tis_620.py +0 -307
  1022. package/python3.6.2/lib/python3.6/encodings/undefined.py +0 -49
  1023. package/python3.6.2/lib/python3.6/encodings/unicode_escape.py +0 -45
  1024. package/python3.6.2/lib/python3.6/encodings/unicode_internal.py +0 -45
  1025. package/python3.6.2/lib/python3.6/encodings/utf_16.py +0 -155
  1026. package/python3.6.2/lib/python3.6/encodings/utf_16_be.py +0 -42
  1027. package/python3.6.2/lib/python3.6/encodings/utf_16_le.py +0 -42
  1028. package/python3.6.2/lib/python3.6/encodings/utf_32.py +0 -150
  1029. package/python3.6.2/lib/python3.6/encodings/utf_32_be.py +0 -37
  1030. package/python3.6.2/lib/python3.6/encodings/utf_32_le.py +0 -37
  1031. package/python3.6.2/lib/python3.6/encodings/utf_7.py +0 -38
  1032. package/python3.6.2/lib/python3.6/encodings/utf_8.py +0 -42
  1033. package/python3.6.2/lib/python3.6/encodings/utf_8_sig.py +0 -130
  1034. package/python3.6.2/lib/python3.6/encodings/uu_codec.py +0 -99
  1035. package/python3.6.2/lib/python3.6/encodings/zlib_codec.py +0 -77
  1036. package/python3.6.2/lib/python3.6/ensurepip/__init__.py +0 -205
  1037. package/python3.6.2/lib/python3.6/ensurepip/__main__.py +0 -5
  1038. package/python3.6.2/lib/python3.6/ensurepip/_uninstall.py +0 -31
  1039. package/python3.6.2/lib/python3.6/enum.py +0 -875
  1040. package/python3.6.2/lib/python3.6/filecmp.py +0 -305
  1041. package/python3.6.2/lib/python3.6/fileinput.py +0 -425
  1042. package/python3.6.2/lib/python3.6/fnmatch.py +0 -109
  1043. package/python3.6.2/lib/python3.6/formatter.py +0 -452
  1044. package/python3.6.2/lib/python3.6/fractions.py +0 -643
  1045. package/python3.6.2/lib/python3.6/ftplib.py +0 -989
  1046. package/python3.6.2/lib/python3.6/functools.py +0 -811
  1047. package/python3.6.2/lib/python3.6/genericpath.py +0 -151
  1048. package/python3.6.2/lib/python3.6/getopt.py +0 -215
  1049. package/python3.6.2/lib/python3.6/getpass.py +0 -185
  1050. package/python3.6.2/lib/python3.6/gettext.py +0 -637
  1051. package/python3.6.2/lib/python3.6/glob.py +0 -171
  1052. package/python3.6.2/lib/python3.6/gzip.py +0 -574
  1053. package/python3.6.2/lib/python3.6/hashlib.py +0 -251
  1054. package/python3.6.2/lib/python3.6/heapq.py +0 -607
  1055. package/python3.6.2/lib/python3.6/hmac.py +0 -144
  1056. package/python3.6.2/lib/python3.6/html/__init__.py +0 -132
  1057. package/python3.6.2/lib/python3.6/html/entities.py +0 -2509
  1058. package/python3.6.2/lib/python3.6/html/parser.py +0 -470
  1059. package/python3.6.2/lib/python3.6/http/__init__.py +0 -134
  1060. package/python3.6.2/lib/python3.6/http/client.py +0 -1478
  1061. package/python3.6.2/lib/python3.6/http/cookiejar.py +0 -2098
  1062. package/python3.6.2/lib/python3.6/http/cookies.py +0 -635
  1063. package/python3.6.2/lib/python3.6/http/server.py +0 -1211
  1064. package/python3.6.2/lib/python3.6/idlelib/CREDITS.txt +0 -37
  1065. package/python3.6.2/lib/python3.6/idlelib/ChangeLog +0 -1591
  1066. package/python3.6.2/lib/python3.6/idlelib/HISTORY.txt +0 -296
  1067. package/python3.6.2/lib/python3.6/idlelib/Icons/folder.gif +0 -0
  1068. package/python3.6.2/lib/python3.6/idlelib/Icons/idle.icns +0 -0
  1069. package/python3.6.2/lib/python3.6/idlelib/Icons/idle.ico +0 -0
  1070. package/python3.6.2/lib/python3.6/idlelib/Icons/idle_16.gif +0 -0
  1071. package/python3.6.2/lib/python3.6/idlelib/Icons/idle_16.png +0 -0
  1072. package/python3.6.2/lib/python3.6/idlelib/Icons/idle_32.gif +0 -0
  1073. package/python3.6.2/lib/python3.6/idlelib/Icons/idle_32.png +0 -0
  1074. package/python3.6.2/lib/python3.6/idlelib/Icons/idle_48.gif +0 -0
  1075. package/python3.6.2/lib/python3.6/idlelib/Icons/idle_48.png +0 -0
  1076. package/python3.6.2/lib/python3.6/idlelib/Icons/minusnode.gif +0 -0
  1077. package/python3.6.2/lib/python3.6/idlelib/Icons/openfolder.gif +0 -0
  1078. package/python3.6.2/lib/python3.6/idlelib/Icons/plusnode.gif +0 -0
  1079. package/python3.6.2/lib/python3.6/idlelib/Icons/python.gif +0 -0
  1080. package/python3.6.2/lib/python3.6/idlelib/Icons/tk.gif +0 -0
  1081. package/python3.6.2/lib/python3.6/idlelib/NEWS.txt +0 -749
  1082. package/python3.6.2/lib/python3.6/idlelib/NEWS2x.txt +0 -660
  1083. package/python3.6.2/lib/python3.6/idlelib/README.txt +0 -251
  1084. package/python3.6.2/lib/python3.6/idlelib/TODO.txt +0 -210
  1085. package/python3.6.2/lib/python3.6/idlelib/__init__.py +0 -10
  1086. package/python3.6.2/lib/python3.6/idlelib/__main__.py +0 -8
  1087. package/python3.6.2/lib/python3.6/idlelib/_pyclbr.py +0 -402
  1088. package/python3.6.2/lib/python3.6/idlelib/autocomplete.py +0 -232
  1089. package/python3.6.2/lib/python3.6/idlelib/autocomplete_w.py +0 -460
  1090. package/python3.6.2/lib/python3.6/idlelib/autoexpand.py +0 -96
  1091. package/python3.6.2/lib/python3.6/idlelib/browser.py +0 -248
  1092. package/python3.6.2/lib/python3.6/idlelib/calltip_w.py +0 -164
  1093. package/python3.6.2/lib/python3.6/idlelib/calltips.py +0 -178
  1094. package/python3.6.2/lib/python3.6/idlelib/codecontext.py +0 -185
  1095. package/python3.6.2/lib/python3.6/idlelib/colorizer.py +0 -289
  1096. package/python3.6.2/lib/python3.6/idlelib/config-extensions.def +0 -65
  1097. package/python3.6.2/lib/python3.6/idlelib/config-highlight.def +0 -93
  1098. package/python3.6.2/lib/python3.6/idlelib/config-keys.def +0 -304
  1099. package/python3.6.2/lib/python3.6/idlelib/config-main.def +0 -88
  1100. package/python3.6.2/lib/python3.6/idlelib/config.py +0 -929
  1101. package/python3.6.2/lib/python3.6/idlelib/config_key.py +0 -298
  1102. package/python3.6.2/lib/python3.6/idlelib/configdialog.py +0 -2254
  1103. package/python3.6.2/lib/python3.6/idlelib/debugger.py +0 -544
  1104. package/python3.6.2/lib/python3.6/idlelib/debugger_r.py +0 -388
  1105. package/python3.6.2/lib/python3.6/idlelib/debugobj.py +0 -139
  1106. package/python3.6.2/lib/python3.6/idlelib/debugobj_r.py +0 -36
  1107. package/python3.6.2/lib/python3.6/idlelib/delegator.py +0 -33
  1108. package/python3.6.2/lib/python3.6/idlelib/dynoption.py +0 -58
  1109. package/python3.6.2/lib/python3.6/idlelib/editor.py +0 -1688
  1110. package/python3.6.2/lib/python3.6/idlelib/extend.txt +0 -83
  1111. package/python3.6.2/lib/python3.6/idlelib/filelist.py +0 -132
  1112. package/python3.6.2/lib/python3.6/idlelib/grep.py +0 -200
  1113. package/python3.6.2/lib/python3.6/idlelib/help.html +0 -791
  1114. package/python3.6.2/lib/python3.6/idlelib/help.py +0 -275
  1115. package/python3.6.2/lib/python3.6/idlelib/help_about.py +0 -205
  1116. package/python3.6.2/lib/python3.6/idlelib/history.py +0 -106
  1117. package/python3.6.2/lib/python3.6/idlelib/hyperparser.py +0 -312
  1118. package/python3.6.2/lib/python3.6/idlelib/idle.bat +0 -4
  1119. package/python3.6.2/lib/python3.6/idlelib/idle.py +0 -14
  1120. package/python3.6.2/lib/python3.6/idlelib/idle.pyw +0 -17
  1121. package/python3.6.2/lib/python3.6/idlelib/idle_test/README.txt +0 -226
  1122. package/python3.6.2/lib/python3.6/idlelib/idle_test/__init__.py +0 -17
  1123. package/python3.6.2/lib/python3.6/idlelib/idle_test/htest.py +0 -421
  1124. package/python3.6.2/lib/python3.6/idlelib/idle_test/mock_idle.py +0 -60
  1125. package/python3.6.2/lib/python3.6/idlelib/idle_test/mock_tk.py +0 -303
  1126. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_autocomplete.py +0 -149
  1127. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_autoexpand.py +0 -143
  1128. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_browser.py +0 -253
  1129. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_calltips.py +0 -203
  1130. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_colorizer.py +0 -56
  1131. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_config.py +0 -824
  1132. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_config_key.py +0 -102
  1133. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_configdialog.py +0 -1415
  1134. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_debugger.py +0 -29
  1135. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_delegator.py +0 -40
  1136. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_editmenu.py +0 -74
  1137. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_editor.py +0 -14
  1138. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_grep.py +0 -80
  1139. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_help.py +0 -34
  1140. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_help_about.py +0 -177
  1141. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_history.py +0 -168
  1142. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_hyperparser.py +0 -274
  1143. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_iomenu.py +0 -234
  1144. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_macosx.py +0 -106
  1145. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_outwin.py +0 -172
  1146. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_paragraph.py +0 -376
  1147. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_parenmatch.py +0 -112
  1148. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_pathbrowser.py +0 -88
  1149. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_percolator.py +0 -118
  1150. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_query.py +0 -354
  1151. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_redirector.py +0 -124
  1152. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_replace.py +0 -293
  1153. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_rstrip.py +0 -49
  1154. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_run.py +0 -35
  1155. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_scrolledlist.py +0 -29
  1156. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_search.py +0 -82
  1157. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_searchbase.py +0 -156
  1158. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_searchengine.py +0 -329
  1159. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_text.py +0 -236
  1160. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_textview.py +0 -179
  1161. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_tree.py +0 -35
  1162. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_undo.py +0 -135
  1163. package/python3.6.2/lib/python3.6/idlelib/idle_test/test_warning.py +0 -73
  1164. package/python3.6.2/lib/python3.6/idlelib/iomenu.py +0 -574
  1165. package/python3.6.2/lib/python3.6/idlelib/macosx.py +0 -252
  1166. package/python3.6.2/lib/python3.6/idlelib/mainmenu.py +0 -108
  1167. package/python3.6.2/lib/python3.6/idlelib/multicall.py +0 -445
  1168. package/python3.6.2/lib/python3.6/idlelib/outwin.py +0 -188
  1169. package/python3.6.2/lib/python3.6/idlelib/paragraph.py +0 -195
  1170. package/python3.6.2/lib/python3.6/idlelib/parenmatch.py +0 -183
  1171. package/python3.6.2/lib/python3.6/idlelib/pathbrowser.py +0 -111
  1172. package/python3.6.2/lib/python3.6/idlelib/percolator.py +0 -104
  1173. package/python3.6.2/lib/python3.6/idlelib/pyparse.py +0 -617
  1174. package/python3.6.2/lib/python3.6/idlelib/pyshell.py +0 -1542
  1175. package/python3.6.2/lib/python3.6/idlelib/query.py +0 -308
  1176. package/python3.6.2/lib/python3.6/idlelib/redirector.py +0 -175
  1177. package/python3.6.2/lib/python3.6/idlelib/replace.py +0 -243
  1178. package/python3.6.2/lib/python3.6/idlelib/rpc.py +0 -627
  1179. package/python3.6.2/lib/python3.6/idlelib/rstrip.py +0 -29
  1180. package/python3.6.2/lib/python3.6/idlelib/run.py +0 -525
  1181. package/python3.6.2/lib/python3.6/idlelib/runscript.py +0 -195
  1182. package/python3.6.2/lib/python3.6/idlelib/scrolledlist.py +0 -147
  1183. package/python3.6.2/lib/python3.6/idlelib/search.py +0 -102
  1184. package/python3.6.2/lib/python3.6/idlelib/searchbase.py +0 -200
  1185. package/python3.6.2/lib/python3.6/idlelib/searchengine.py +0 -236
  1186. package/python3.6.2/lib/python3.6/idlelib/stackviewer.py +0 -152
  1187. package/python3.6.2/lib/python3.6/idlelib/statusbar.py +0 -46
  1188. package/python3.6.2/lib/python3.6/idlelib/textview.py +0 -136
  1189. package/python3.6.2/lib/python3.6/idlelib/tooltip.py +0 -96
  1190. package/python3.6.2/lib/python3.6/idlelib/tree.py +0 -467
  1191. package/python3.6.2/lib/python3.6/idlelib/undo.py +0 -366
  1192. package/python3.6.2/lib/python3.6/idlelib/windows.py +0 -92
  1193. package/python3.6.2/lib/python3.6/idlelib/zoomheight.py +0 -48
  1194. package/python3.6.2/lib/python3.6/idlelib/zzdummy.py +0 -42
  1195. package/python3.6.2/lib/python3.6/imaplib.py +0 -1609
  1196. package/python3.6.2/lib/python3.6/imghdr.py +0 -168
  1197. package/python3.6.2/lib/python3.6/imp.py +0 -346
  1198. package/python3.6.2/lib/python3.6/importlib/__init__.py +0 -173
  1199. package/python3.6.2/lib/python3.6/importlib/_bootstrap.py +0 -1161
  1200. package/python3.6.2/lib/python3.6/importlib/_bootstrap_external.py +0 -1443
  1201. package/python3.6.2/lib/python3.6/importlib/abc.py +0 -329
  1202. package/python3.6.2/lib/python3.6/importlib/machinery.py +0 -21
  1203. package/python3.6.2/lib/python3.6/importlib/util.py +0 -288
  1204. package/python3.6.2/lib/python3.6/inspect.py +0 -3098
  1205. package/python3.6.2/lib/python3.6/io.py +0 -99
  1206. package/python3.6.2/lib/python3.6/ipaddress.py +0 -2299
  1207. package/python3.6.2/lib/python3.6/json/__init__.py +0 -367
  1208. package/python3.6.2/lib/python3.6/json/decoder.py +0 -358
  1209. package/python3.6.2/lib/python3.6/json/encoder.py +0 -441
  1210. package/python3.6.2/lib/python3.6/json/scanner.py +0 -73
  1211. package/python3.6.2/lib/python3.6/json/tool.py +0 -50
  1212. package/python3.6.2/lib/python3.6/keyword.py +0 -94
  1213. package/python3.6.2/lib/python3.6/lib-dynload/_asyncio.cpython-36m-arm-linux-androideabi.so +0 -0
  1214. package/python3.6.2/lib/python3.6/lib-dynload/_bisect.cpython-36m-arm-linux-androideabi.so +0 -0
  1215. package/python3.6.2/lib/python3.6/lib-dynload/_blake2.cpython-36m-arm-linux-androideabi.so +0 -0
  1216. package/python3.6.2/lib/python3.6/lib-dynload/_bz2.cpython-36m-arm-linux-androideabi.so +0 -0
  1217. package/python3.6.2/lib/python3.6/lib-dynload/_codecs_cn.cpython-36m-arm-linux-androideabi.so +0 -0
  1218. package/python3.6.2/lib/python3.6/lib-dynload/_codecs_hk.cpython-36m-arm-linux-androideabi.so +0 -0
  1219. package/python3.6.2/lib/python3.6/lib-dynload/_codecs_iso2022.cpython-36m-arm-linux-androideabi.so +0 -0
  1220. package/python3.6.2/lib/python3.6/lib-dynload/_codecs_jp.cpython-36m-arm-linux-androideabi.so +0 -0
  1221. package/python3.6.2/lib/python3.6/lib-dynload/_codecs_kr.cpython-36m-arm-linux-androideabi.so +0 -0
  1222. package/python3.6.2/lib/python3.6/lib-dynload/_codecs_tw.cpython-36m-arm-linux-androideabi.so +0 -0
  1223. package/python3.6.2/lib/python3.6/lib-dynload/_crypt.cpython-36m-arm-linux-androideabi.so +0 -0
  1224. package/python3.6.2/lib/python3.6/lib-dynload/_csv.cpython-36m-arm-linux-androideabi.so +0 -0
  1225. package/python3.6.2/lib/python3.6/lib-dynload/_ctypes.cpython-36m-arm-linux-androideabi.so +0 -0
  1226. package/python3.6.2/lib/python3.6/lib-dynload/_ctypes_test.cpython-36m-arm-linux-androideabi.so +0 -0
  1227. package/python3.6.2/lib/python3.6/lib-dynload/_curses.cpython-36m-arm-linux-androideabi.so +0 -0
  1228. package/python3.6.2/lib/python3.6/lib-dynload/_curses_panel.cpython-36m-arm-linux-androideabi.so +0 -0
  1229. package/python3.6.2/lib/python3.6/lib-dynload/_datetime.cpython-36m-arm-linux-androideabi.so +0 -0
  1230. package/python3.6.2/lib/python3.6/lib-dynload/_elementtree.cpython-36m-arm-linux-androideabi.so +0 -0
  1231. package/python3.6.2/lib/python3.6/lib-dynload/_hashlib.cpython-36m-arm-linux-androideabi.so +0 -0
  1232. package/python3.6.2/lib/python3.6/lib-dynload/_heapq.cpython-36m-arm-linux-androideabi.so +0 -0
  1233. package/python3.6.2/lib/python3.6/lib-dynload/_json.cpython-36m-arm-linux-androideabi.so +0 -0
  1234. package/python3.6.2/lib/python3.6/lib-dynload/_lsprof.cpython-36m-arm-linux-androideabi.so +0 -0
  1235. package/python3.6.2/lib/python3.6/lib-dynload/_md5.cpython-36m-arm-linux-androideabi.so +0 -0
  1236. package/python3.6.2/lib/python3.6/lib-dynload/_multibytecodec.cpython-36m-arm-linux-androideabi.so +0 -0
  1237. package/python3.6.2/lib/python3.6/lib-dynload/_multiprocessing.cpython-36m-arm-linux-androideabi.so +0 -0
  1238. package/python3.6.2/lib/python3.6/lib-dynload/_opcode.cpython-36m-arm-linux-androideabi.so +0 -0
  1239. package/python3.6.2/lib/python3.6/lib-dynload/_pickle.cpython-36m-arm-linux-androideabi.so +0 -0
  1240. package/python3.6.2/lib/python3.6/lib-dynload/_posixsubprocess.cpython-36m-arm-linux-androideabi.so +0 -0
  1241. package/python3.6.2/lib/python3.6/lib-dynload/_random.cpython-36m-arm-linux-androideabi.so +0 -0
  1242. package/python3.6.2/lib/python3.6/lib-dynload/_sha1.cpython-36m-arm-linux-androideabi.so +0 -0
  1243. package/python3.6.2/lib/python3.6/lib-dynload/_sha256.cpython-36m-arm-linux-androideabi.so +0 -0
  1244. package/python3.6.2/lib/python3.6/lib-dynload/_sha3.cpython-36m-arm-linux-androideabi.so +0 -0
  1245. package/python3.6.2/lib/python3.6/lib-dynload/_sha512.cpython-36m-arm-linux-androideabi.so +0 -0
  1246. package/python3.6.2/lib/python3.6/lib-dynload/_socket.cpython-36m-arm-linux-androideabi.so +0 -0
  1247. package/python3.6.2/lib/python3.6/lib-dynload/_sqlite3.cpython-36m-arm-linux-androideabi.so +0 -0
  1248. package/python3.6.2/lib/python3.6/lib-dynload/_ssl.cpython-36m-arm-linux-androideabi.so +0 -0
  1249. package/python3.6.2/lib/python3.6/lib-dynload/_struct.cpython-36m-arm-linux-androideabi.so +0 -0
  1250. package/python3.6.2/lib/python3.6/lib-dynload/_sysconfigdata_m_linux_arm-linux-androideabi.py +0 -743
  1251. package/python3.6.2/lib/python3.6/lib-dynload/_testbuffer.cpython-36m-arm-linux-androideabi.so +0 -0
  1252. package/python3.6.2/lib/python3.6/lib-dynload/_testcapi.cpython-36m-arm-linux-androideabi.so +0 -0
  1253. package/python3.6.2/lib/python3.6/lib-dynload/_testimportmultiple.cpython-36m-arm-linux-androideabi.so +0 -0
  1254. package/python3.6.2/lib/python3.6/lib-dynload/_testmultiphase.cpython-36m-arm-linux-androideabi.so +0 -0
  1255. package/python3.6.2/lib/python3.6/lib-dynload/array.cpython-36m-arm-linux-androideabi.so +0 -0
  1256. package/python3.6.2/lib/python3.6/lib-dynload/audioop.cpython-36m-arm-linux-androideabi.so +0 -0
  1257. package/python3.6.2/lib/python3.6/lib-dynload/binascii.cpython-36m-arm-linux-androideabi.so +0 -0
  1258. package/python3.6.2/lib/python3.6/lib-dynload/cmath.cpython-36m-arm-linux-androideabi.so +0 -0
  1259. package/python3.6.2/lib/python3.6/lib-dynload/fcntl.cpython-36m-arm-linux-androideabi.so +0 -0
  1260. package/python3.6.2/lib/python3.6/lib-dynload/grp.cpython-36m-arm-linux-androideabi.so +0 -0
  1261. package/python3.6.2/lib/python3.6/lib-dynload/math.cpython-36m-arm-linux-androideabi.so +0 -0
  1262. package/python3.6.2/lib/python3.6/lib-dynload/mmap.cpython-36m-arm-linux-androideabi.so +0 -0
  1263. package/python3.6.2/lib/python3.6/lib-dynload/ossaudiodev.cpython-36m-arm-linux-androideabi.so +0 -0
  1264. package/python3.6.2/lib/python3.6/lib-dynload/parser.cpython-36m-arm-linux-androideabi.so +0 -0
  1265. package/python3.6.2/lib/python3.6/lib-dynload/pyexpat.cpython-36m-arm-linux-androideabi.so +0 -0
  1266. package/python3.6.2/lib/python3.6/lib-dynload/readline.cpython-36m-arm-linux-androideabi.so +0 -0
  1267. package/python3.6.2/lib/python3.6/lib-dynload/resource.cpython-36m-arm-linux-androideabi.so +0 -0
  1268. package/python3.6.2/lib/python3.6/lib-dynload/select.cpython-36m-arm-linux-androideabi.so +0 -0
  1269. package/python3.6.2/lib/python3.6/lib-dynload/syslog.cpython-36m-arm-linux-androideabi.so +0 -0
  1270. package/python3.6.2/lib/python3.6/lib-dynload/termios.cpython-36m-arm-linux-androideabi.so +0 -0
  1271. package/python3.6.2/lib/python3.6/lib-dynload/unicodedata.cpython-36m-arm-linux-androideabi.so +0 -0
  1272. package/python3.6.2/lib/python3.6/lib-dynload/xxlimited.cpython-36m-arm-linux-androideabi.so +0 -0
  1273. package/python3.6.2/lib/python3.6/lib-dynload/zlib.cpython-36m-arm-linux-androideabi.so +0 -0
  1274. package/python3.6.2/lib/python3.6/lib2to3/__init__.py +0 -1
  1275. package/python3.6.2/lib/python3.6/lib2to3/__main__.py +0 -4
  1276. package/python3.6.2/lib/python3.6/lib2to3/btm_matcher.py +0 -168
  1277. package/python3.6.2/lib/python3.6/lib2to3/btm_utils.py +0 -281
  1278. package/python3.6.2/lib/python3.6/lib2to3/fixer_base.py +0 -186
  1279. package/python3.6.2/lib/python3.6/lib2to3/fixer_util.py +0 -453
  1280. package/python3.6.2/lib/python3.6/lib2to3/fixes/__init__.py +0 -1
  1281. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_apply.py +0 -70
  1282. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_asserts.py +0 -34
  1283. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_basestring.py +0 -14
  1284. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_buffer.py +0 -22
  1285. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_dict.py +0 -106
  1286. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_except.py +0 -93
  1287. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_exec.py +0 -39
  1288. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_execfile.py +0 -52
  1289. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_exitfunc.py +0 -72
  1290. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_filter.py +0 -90
  1291. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_funcattrs.py +0 -21
  1292. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_future.py +0 -22
  1293. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_getcwdu.py +0 -19
  1294. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_has_key.py +0 -109
  1295. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_idioms.py +0 -152
  1296. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_import.py +0 -99
  1297. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_imports.py +0 -145
  1298. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_imports2.py +0 -16
  1299. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_input.py +0 -26
  1300. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_intern.py +0 -41
  1301. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_isinstance.py +0 -52
  1302. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_itertools.py +0 -43
  1303. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_itertools_imports.py +0 -57
  1304. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_long.py +0 -19
  1305. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_map.py +0 -110
  1306. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_metaclass.py +0 -228
  1307. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_methodattrs.py +0 -24
  1308. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_ne.py +0 -23
  1309. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_next.py +0 -103
  1310. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_nonzero.py +0 -21
  1311. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_numliterals.py +0 -28
  1312. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_operator.py +0 -98
  1313. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_paren.py +0 -44
  1314. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_print.py +0 -87
  1315. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_raise.py +0 -90
  1316. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_raw_input.py +0 -17
  1317. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_reduce.py +0 -35
  1318. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_reload.py +0 -38
  1319. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_renames.py +0 -70
  1320. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_repr.py +0 -23
  1321. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_set_literal.py +0 -53
  1322. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_standarderror.py +0 -18
  1323. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_sys_exc.py +0 -30
  1324. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_throw.py +0 -56
  1325. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_tuple_params.py +0 -175
  1326. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_types.py +0 -61
  1327. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_unicode.py +0 -42
  1328. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_urllib.py +0 -196
  1329. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_ws_comma.py +0 -39
  1330. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_xrange.py +0 -73
  1331. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_xreadlines.py +0 -25
  1332. package/python3.6.2/lib/python3.6/lib2to3/fixes/fix_zip.py +0 -46
  1333. package/python3.6.2/lib/python3.6/lib2to3/main.py +0 -268
  1334. package/python3.6.2/lib/python3.6/lib2to3/patcomp.py +0 -205
  1335. package/python3.6.2/lib/python3.6/lib2to3/pgen2/__init__.py +0 -4
  1336. package/python3.6.2/lib/python3.6/lib2to3/pgen2/conv.py +0 -257
  1337. package/python3.6.2/lib/python3.6/lib2to3/pgen2/driver.py +0 -160
  1338. package/python3.6.2/lib/python3.6/lib2to3/pgen2/grammar.py +0 -207
  1339. package/python3.6.2/lib/python3.6/lib2to3/pgen2/literals.py +0 -60
  1340. package/python3.6.2/lib/python3.6/lib2to3/pgen2/parse.py +0 -201
  1341. package/python3.6.2/lib/python3.6/lib2to3/pgen2/pgen.py +0 -386
  1342. package/python3.6.2/lib/python3.6/lib2to3/pgen2/token.py +0 -85
  1343. package/python3.6.2/lib/python3.6/lib2to3/pgen2/tokenize.py +0 -590
  1344. package/python3.6.2/lib/python3.6/lib2to3/pygram.py +0 -40
  1345. package/python3.6.2/lib/python3.6/lib2to3/pytree.py +0 -854
  1346. package/python3.6.2/lib/python3.6/lib2to3/refactor.py +0 -744
  1347. package/python3.6.2/lib/python3.6/lib2to3/tests/__init__.py +0 -9
  1348. package/python3.6.2/lib/python3.6/lib2to3/tests/__main__.py +0 -4
  1349. package/python3.6.2/lib/python3.6/lib2to3/tests/data/README +0 -6
  1350. package/python3.6.2/lib/python3.6/lib2to3/tests/data/bom.py +0 -2
  1351. package/python3.6.2/lib/python3.6/lib2to3/tests/data/crlf.py +0 -3
  1352. package/python3.6.2/lib/python3.6/lib2to3/tests/data/different_encoding.py +0 -6
  1353. package/python3.6.2/lib/python3.6/lib2to3/tests/data/false_encoding.py +0 -2
  1354. package/python3.6.2/lib/python3.6/lib2to3/tests/data/fixers/bad_order.py +0 -5
  1355. package/python3.6.2/lib/python3.6/lib2to3/tests/data/fixers/myfixes/__init__.py +0 -0
  1356. package/python3.6.2/lib/python3.6/lib2to3/tests/data/fixers/myfixes/fix_explicit.py +0 -6
  1357. package/python3.6.2/lib/python3.6/lib2to3/tests/data/fixers/myfixes/fix_first.py +0 -6
  1358. package/python3.6.2/lib/python3.6/lib2to3/tests/data/fixers/myfixes/fix_last.py +0 -7
  1359. package/python3.6.2/lib/python3.6/lib2to3/tests/data/fixers/myfixes/fix_parrot.py +0 -13
  1360. package/python3.6.2/lib/python3.6/lib2to3/tests/data/fixers/myfixes/fix_preorder.py +0 -6
  1361. package/python3.6.2/lib/python3.6/lib2to3/tests/data/fixers/no_fixer_cls.py +0 -1
  1362. package/python3.6.2/lib/python3.6/lib2to3/tests/data/fixers/parrot_example.py +0 -2
  1363. package/python3.6.2/lib/python3.6/lib2to3/tests/data/infinite_recursion.py +0 -2669
  1364. package/python3.6.2/lib/python3.6/lib2to3/tests/data/py2_test_grammar.py +0 -974
  1365. package/python3.6.2/lib/python3.6/lib2to3/tests/data/py3_test_grammar.py +0 -945
  1366. package/python3.6.2/lib/python3.6/lib2to3/tests/pytree_idempotency.py +0 -94
  1367. package/python3.6.2/lib/python3.6/lib2to3/tests/support.py +0 -52
  1368. package/python3.6.2/lib/python3.6/lib2to3/tests/test_all_fixers.py +0 -27
  1369. package/python3.6.2/lib/python3.6/lib2to3/tests/test_fixers.py +0 -4640
  1370. package/python3.6.2/lib/python3.6/lib2to3/tests/test_main.py +0 -139
  1371. package/python3.6.2/lib/python3.6/lib2to3/tests/test_parser.py +0 -472
  1372. package/python3.6.2/lib/python3.6/lib2to3/tests/test_pytree.py +0 -472
  1373. package/python3.6.2/lib/python3.6/lib2to3/tests/test_refactor.py +0 -316
  1374. package/python3.6.2/lib/python3.6/lib2to3/tests/test_util.py +0 -591
  1375. package/python3.6.2/lib/python3.6/linecache.py +0 -177
  1376. package/python3.6.2/lib/python3.6/locale.py +0 -1684
  1377. package/python3.6.2/lib/python3.6/logging/__init__.py +0 -2019
  1378. package/python3.6.2/lib/python3.6/logging/config.py +0 -933
  1379. package/python3.6.2/lib/python3.6/logging/handlers.py +0 -1505
  1380. package/python3.6.2/lib/python3.6/lzma.py +0 -347
  1381. package/python3.6.2/lib/python3.6/macpath.py +0 -211
  1382. package/python3.6.2/lib/python3.6/macurl2path.py +0 -77
  1383. package/python3.6.2/lib/python3.6/mailbox.py +0 -2146
  1384. package/python3.6.2/lib/python3.6/mailcap.py +0 -275
  1385. package/python3.6.2/lib/python3.6/mimetypes.py +0 -598
  1386. package/python3.6.2/lib/python3.6/modulefinder.py +0 -633
  1387. package/python3.6.2/lib/python3.6/msilib/__init__.py +0 -483
  1388. package/python3.6.2/lib/python3.6/msilib/schema.py +0 -1007
  1389. package/python3.6.2/lib/python3.6/msilib/sequence.py +0 -126
  1390. package/python3.6.2/lib/python3.6/msilib/text.py +0 -129
  1391. package/python3.6.2/lib/python3.6/multiprocessing/__init__.py +0 -38
  1392. package/python3.6.2/lib/python3.6/multiprocessing/connection.py +0 -953
  1393. package/python3.6.2/lib/python3.6/multiprocessing/context.py +0 -357
  1394. package/python3.6.2/lib/python3.6/multiprocessing/dummy/__init__.py +0 -119
  1395. package/python3.6.2/lib/python3.6/multiprocessing/dummy/connection.py +0 -73
  1396. package/python3.6.2/lib/python3.6/multiprocessing/forkserver.py +0 -266
  1397. package/python3.6.2/lib/python3.6/multiprocessing/heap.py +0 -254
  1398. package/python3.6.2/lib/python3.6/multiprocessing/managers.py +0 -1160
  1399. package/python3.6.2/lib/python3.6/multiprocessing/pool.py +0 -803
  1400. package/python3.6.2/lib/python3.6/multiprocessing/popen_fork.py +0 -86
  1401. package/python3.6.2/lib/python3.6/multiprocessing/popen_forkserver.py +0 -68
  1402. package/python3.6.2/lib/python3.6/multiprocessing/popen_spawn_posix.py +0 -68
  1403. package/python3.6.2/lib/python3.6/multiprocessing/popen_spawn_win32.py +0 -98
  1404. package/python3.6.2/lib/python3.6/multiprocessing/process.py +0 -336
  1405. package/python3.6.2/lib/python3.6/multiprocessing/queues.py +0 -347
  1406. package/python3.6.2/lib/python3.6/multiprocessing/reduction.py +0 -274
  1407. package/python3.6.2/lib/python3.6/multiprocessing/resource_sharer.py +0 -158
  1408. package/python3.6.2/lib/python3.6/multiprocessing/semaphore_tracker.py +0 -157
  1409. package/python3.6.2/lib/python3.6/multiprocessing/sharedctypes.py +0 -239
  1410. package/python3.6.2/lib/python3.6/multiprocessing/spawn.py +0 -286
  1411. package/python3.6.2/lib/python3.6/multiprocessing/synchronize.py +0 -406
  1412. package/python3.6.2/lib/python3.6/multiprocessing/util.py +0 -406
  1413. package/python3.6.2/lib/python3.6/netrc.py +0 -142
  1414. package/python3.6.2/lib/python3.6/nntplib.py +0 -1147
  1415. package/python3.6.2/lib/python3.6/ntpath.py +0 -692
  1416. package/python3.6.2/lib/python3.6/nturl2path.py +0 -68
  1417. package/python3.6.2/lib/python3.6/numbers.py +0 -389
  1418. package/python3.6.2/lib/python3.6/opcode.py +0 -215
  1419. package/python3.6.2/lib/python3.6/operator.py +0 -464
  1420. package/python3.6.2/lib/python3.6/optparse.py +0 -1681
  1421. package/python3.6.2/lib/python3.6/os.py +0 -1069
  1422. package/python3.6.2/lib/python3.6/pathlib.py +0 -1434
  1423. package/python3.6.2/lib/python3.6/pdb.py +0 -1694
  1424. package/python3.6.2/lib/python3.6/pickle.py +0 -1605
  1425. package/python3.6.2/lib/python3.6/pickletools.py +0 -2840
  1426. package/python3.6.2/lib/python3.6/pipes.py +0 -247
  1427. package/python3.6.2/lib/python3.6/pkgutil.py +0 -634
  1428. package/python3.6.2/lib/python3.6/platform.py +0 -1400
  1429. package/python3.6.2/lib/python3.6/plistlib.py +0 -1043
  1430. package/python3.6.2/lib/python3.6/poplib.py +0 -478
  1431. package/python3.6.2/lib/python3.6/posixpath.py +0 -520
  1432. package/python3.6.2/lib/python3.6/pprint.py +0 -597
  1433. package/python3.6.2/lib/python3.6/profile.py +0 -589
  1434. package/python3.6.2/lib/python3.6/pstats.py +0 -697
  1435. package/python3.6.2/lib/python3.6/pty.py +0 -170
  1436. package/python3.6.2/lib/python3.6/py_compile.py +0 -186
  1437. package/python3.6.2/lib/python3.6/pyclbr.py +0 -352
  1438. package/python3.6.2/lib/python3.6/pydoc.py +0 -2663
  1439. package/python3.6.2/lib/python3.6/pydoc_data/__init__.py +0 -0
  1440. package/python3.6.2/lib/python3.6/pydoc_data/topics.py +0 -12951
  1441. package/python3.6.2/lib/python3.6/queue.py +0 -246
  1442. package/python3.6.2/lib/python3.6/quopri.py +0 -242
  1443. package/python3.6.2/lib/python3.6/random.py +0 -768
  1444. package/python3.6.2/lib/python3.6/re.py +0 -381
  1445. package/python3.6.2/lib/python3.6/reprlib.py +0 -164
  1446. package/python3.6.2/lib/python3.6/rlcompleter.py +0 -205
  1447. package/python3.6.2/lib/python3.6/runpy.py +0 -294
  1448. package/python3.6.2/lib/python3.6/sched.py +0 -170
  1449. package/python3.6.2/lib/python3.6/secrets.py +0 -73
  1450. package/python3.6.2/lib/python3.6/selectors.py +0 -611
  1451. package/python3.6.2/lib/python3.6/shelve.py +0 -243
  1452. package/python3.6.2/lib/python3.6/shlex.py +0 -335
  1453. package/python3.6.2/lib/python3.6/shutil.py +0 -1153
  1454. package/python3.6.2/lib/python3.6/signal.py +0 -79
  1455. package/python3.6.2/lib/python3.6/site.py +0 -598
  1456. package/python3.6.2/lib/python3.6/smtpd.py +0 -965
  1457. package/python3.6.2/lib/python3.6/smtplib.py +0 -1115
  1458. package/python3.6.2/lib/python3.6/sndhdr.py +0 -257
  1459. package/python3.6.2/lib/python3.6/socket.py +0 -750
  1460. package/python3.6.2/lib/python3.6/socketserver.py +0 -793
  1461. package/python3.6.2/lib/python3.6/sqlite3/__init__.py +0 -23
  1462. package/python3.6.2/lib/python3.6/sqlite3/dbapi2.py +0 -89
  1463. package/python3.6.2/lib/python3.6/sqlite3/dump.py +0 -70
  1464. package/python3.6.2/lib/python3.6/sqlite3/test/__init__.py +0 -0
  1465. package/python3.6.2/lib/python3.6/sqlite3/test/dbapi.py +0 -938
  1466. package/python3.6.2/lib/python3.6/sqlite3/test/dump.py +0 -81
  1467. package/python3.6.2/lib/python3.6/sqlite3/test/factory.py +0 -293
  1468. package/python3.6.2/lib/python3.6/sqlite3/test/hooks.py +0 -264
  1469. package/python3.6.2/lib/python3.6/sqlite3/test/regression.py +0 -410
  1470. package/python3.6.2/lib/python3.6/sqlite3/test/transactions.py +0 -214
  1471. package/python3.6.2/lib/python3.6/sqlite3/test/types.py +0 -421
  1472. package/python3.6.2/lib/python3.6/sqlite3/test/userfunctions.py +0 -473
  1473. package/python3.6.2/lib/python3.6/sre_compile.py +0 -580
  1474. package/python3.6.2/lib/python3.6/sre_constants.py +0 -233
  1475. package/python3.6.2/lib/python3.6/sre_parse.py +0 -973
  1476. package/python3.6.2/lib/python3.6/ssl.py +0 -1228
  1477. package/python3.6.2/lib/python3.6/stat.py +0 -178
  1478. package/python3.6.2/lib/python3.6/statistics.py +0 -670
  1479. package/python3.6.2/lib/python3.6/string.py +0 -309
  1480. package/python3.6.2/lib/python3.6/stringprep.py +0 -272
  1481. package/python3.6.2/lib/python3.6/struct.py +0 -15
  1482. package/python3.6.2/lib/python3.6/subprocess.py +0 -1590
  1483. package/python3.6.2/lib/python3.6/sunau.py +0 -525
  1484. package/python3.6.2/lib/python3.6/symbol.py +0 -115
  1485. package/python3.6.2/lib/python3.6/symtable.py +0 -238
  1486. package/python3.6.2/lib/python3.6/sysconfig.py +0 -721
  1487. package/python3.6.2/lib/python3.6/tabnanny.py +0 -332
  1488. package/python3.6.2/lib/python3.6/tarfile.py +0 -2547
  1489. package/python3.6.2/lib/python3.6/telnetlib.py +0 -675
  1490. package/python3.6.2/lib/python3.6/tempfile.py +0 -811
  1491. package/python3.6.2/lib/python3.6/test/Sine-1000Hz-300ms.aif +0 -0
  1492. package/python3.6.2/lib/python3.6/test/__init__.py +0 -1
  1493. package/python3.6.2/lib/python3.6/test/__main__.py +0 -2
  1494. package/python3.6.2/lib/python3.6/test/_test_multiprocessing.py +0 -4458
  1495. package/python3.6.2/lib/python3.6/test/allsans.pem +0 -37
  1496. package/python3.6.2/lib/python3.6/test/ann_module.py +0 -53
  1497. package/python3.6.2/lib/python3.6/test/ann_module2.py +0 -36
  1498. package/python3.6.2/lib/python3.6/test/ann_module3.py +0 -18
  1499. package/python3.6.2/lib/python3.6/test/audiodata/pluck-alaw.aifc +0 -0
  1500. package/python3.6.2/lib/python3.6/test/audiodata/pluck-pcm16.aiff +0 -0
  1501. package/python3.6.2/lib/python3.6/test/audiodata/pluck-pcm16.au +0 -0
  1502. package/python3.6.2/lib/python3.6/test/audiodata/pluck-pcm16.wav +0 -0
  1503. package/python3.6.2/lib/python3.6/test/audiodata/pluck-pcm24.aiff +0 -0
  1504. package/python3.6.2/lib/python3.6/test/audiodata/pluck-pcm24.au +0 -0
  1505. package/python3.6.2/lib/python3.6/test/audiodata/pluck-pcm24.wav +0 -0
  1506. package/python3.6.2/lib/python3.6/test/audiodata/pluck-pcm32.aiff +0 -0
  1507. package/python3.6.2/lib/python3.6/test/audiodata/pluck-pcm32.au +0 -0
  1508. package/python3.6.2/lib/python3.6/test/audiodata/pluck-pcm32.wav +0 -0
  1509. package/python3.6.2/lib/python3.6/test/audiodata/pluck-pcm8.aiff +0 -0
  1510. package/python3.6.2/lib/python3.6/test/audiodata/pluck-pcm8.au +0 -0
  1511. package/python3.6.2/lib/python3.6/test/audiodata/pluck-pcm8.wav +0 -0
  1512. package/python3.6.2/lib/python3.6/test/audiodata/pluck-ulaw.aifc +0 -0
  1513. package/python3.6.2/lib/python3.6/test/audiodata/pluck-ulaw.au +0 -0
  1514. package/python3.6.2/lib/python3.6/test/audiotest.au +0 -0
  1515. package/python3.6.2/lib/python3.6/test/audiotests.py +0 -329
  1516. package/python3.6.2/lib/python3.6/test/autotest.py +0 -5
  1517. package/python3.6.2/lib/python3.6/test/bad_coding.py +0 -1
  1518. package/python3.6.2/lib/python3.6/test/bad_coding2.py +0 -2
  1519. package/python3.6.2/lib/python3.6/test/badcert.pem +0 -36
  1520. package/python3.6.2/lib/python3.6/test/badkey.pem +0 -40
  1521. package/python3.6.2/lib/python3.6/test/badsyntax_3131.py +0 -2
  1522. package/python3.6.2/lib/python3.6/test/badsyntax_future10.py +0 -3
  1523. package/python3.6.2/lib/python3.6/test/badsyntax_future3.py +0 -10
  1524. package/python3.6.2/lib/python3.6/test/badsyntax_future4.py +0 -10
  1525. package/python3.6.2/lib/python3.6/test/badsyntax_future5.py +0 -12
  1526. package/python3.6.2/lib/python3.6/test/badsyntax_future6.py +0 -10
  1527. package/python3.6.2/lib/python3.6/test/badsyntax_future7.py +0 -11
  1528. package/python3.6.2/lib/python3.6/test/badsyntax_future8.py +0 -10
  1529. package/python3.6.2/lib/python3.6/test/badsyntax_future9.py +0 -10
  1530. package/python3.6.2/lib/python3.6/test/badsyntax_pep3120.py +0 -1
  1531. package/python3.6.2/lib/python3.6/test/bisect.py +0 -167
  1532. package/python3.6.2/lib/python3.6/test/bytecode_helper.py +0 -41
  1533. package/python3.6.2/lib/python3.6/test/capath/4e1295a3.0 +0 -14
  1534. package/python3.6.2/lib/python3.6/test/capath/5ed36f99.0 +0 -41
  1535. package/python3.6.2/lib/python3.6/test/capath/6e88d7b8.0 +0 -14
  1536. package/python3.6.2/lib/python3.6/test/capath/99d0fa06.0 +0 -41
  1537. package/python3.6.2/lib/python3.6/test/capath/b1930218.0 +0 -21
  1538. package/python3.6.2/lib/python3.6/test/capath/ceff1710.0 +0 -21
  1539. package/python3.6.2/lib/python3.6/test/cfgparser.1 +0 -3
  1540. package/python3.6.2/lib/python3.6/test/cfgparser.2 +0 -537
  1541. package/python3.6.2/lib/python3.6/test/cfgparser.3 +0 -69
  1542. package/python3.6.2/lib/python3.6/test/cjkencodings/big5-utf8.txt +0 -9
  1543. package/python3.6.2/lib/python3.6/test/cjkencodings/big5.txt +0 -9
  1544. package/python3.6.2/lib/python3.6/test/cjkencodings/big5hkscs-utf8.txt +0 -2
  1545. package/python3.6.2/lib/python3.6/test/cjkencodings/big5hkscs.txt +0 -2
  1546. package/python3.6.2/lib/python3.6/test/cjkencodings/cp949-utf8.txt +0 -9
  1547. package/python3.6.2/lib/python3.6/test/cjkencodings/cp949.txt +0 -9
  1548. package/python3.6.2/lib/python3.6/test/cjkencodings/euc_jisx0213-utf8.txt +0 -8
  1549. package/python3.6.2/lib/python3.6/test/cjkencodings/euc_jisx0213.txt +0 -8
  1550. package/python3.6.2/lib/python3.6/test/cjkencodings/euc_jp-utf8.txt +0 -7
  1551. package/python3.6.2/lib/python3.6/test/cjkencodings/euc_jp.txt +0 -7
  1552. package/python3.6.2/lib/python3.6/test/cjkencodings/euc_kr-utf8.txt +0 -7
  1553. package/python3.6.2/lib/python3.6/test/cjkencodings/euc_kr.txt +0 -7
  1554. package/python3.6.2/lib/python3.6/test/cjkencodings/gb18030-utf8.txt +0 -15
  1555. package/python3.6.2/lib/python3.6/test/cjkencodings/gb18030.txt +0 -15
  1556. package/python3.6.2/lib/python3.6/test/cjkencodings/gb2312-utf8.txt +0 -6
  1557. package/python3.6.2/lib/python3.6/test/cjkencodings/gb2312.txt +0 -6
  1558. package/python3.6.2/lib/python3.6/test/cjkencodings/gbk-utf8.txt +0 -14
  1559. package/python3.6.2/lib/python3.6/test/cjkencodings/gbk.txt +0 -14
  1560. package/python3.6.2/lib/python3.6/test/cjkencodings/hz-utf8.txt +0 -2
  1561. package/python3.6.2/lib/python3.6/test/cjkencodings/hz.txt +0 -2
  1562. package/python3.6.2/lib/python3.6/test/cjkencodings/iso2022_jp-utf8.txt +0 -7
  1563. package/python3.6.2/lib/python3.6/test/cjkencodings/iso2022_jp.txt +0 -7
  1564. package/python3.6.2/lib/python3.6/test/cjkencodings/iso2022_kr-utf8.txt +0 -7
  1565. package/python3.6.2/lib/python3.6/test/cjkencodings/iso2022_kr.txt +0 -7
  1566. package/python3.6.2/lib/python3.6/test/cjkencodings/johab-utf8.txt +0 -9
  1567. package/python3.6.2/lib/python3.6/test/cjkencodings/johab.txt +0 -9
  1568. package/python3.6.2/lib/python3.6/test/cjkencodings/shift_jis-utf8.txt +0 -7
  1569. package/python3.6.2/lib/python3.6/test/cjkencodings/shift_jis.txt +0 -7
  1570. package/python3.6.2/lib/python3.6/test/cjkencodings/shift_jisx0213-utf8.txt +0 -8
  1571. package/python3.6.2/lib/python3.6/test/cjkencodings/shift_jisx0213.txt +0 -8
  1572. package/python3.6.2/lib/python3.6/test/cmath_testcases.txt +0 -2511
  1573. package/python3.6.2/lib/python3.6/test/coding20731.py +0 -4
  1574. package/python3.6.2/lib/python3.6/test/crashers/README +0 -20
  1575. package/python3.6.2/lib/python3.6/test/crashers/bogus_code_obj.py +0 -19
  1576. package/python3.6.2/lib/python3.6/test/crashers/gc_inspection.py +0 -32
  1577. package/python3.6.2/lib/python3.6/test/crashers/infinite_loop_re.py +0 -16
  1578. package/python3.6.2/lib/python3.6/test/crashers/mutation_inside_cyclegc.py +0 -31
  1579. package/python3.6.2/lib/python3.6/test/crashers/recursive_call.py +0 -15
  1580. package/python3.6.2/lib/python3.6/test/crashers/trace_at_recursion_limit.py +0 -27
  1581. package/python3.6.2/lib/python3.6/test/crashers/underlying_dict.py +0 -20
  1582. package/python3.6.2/lib/python3.6/test/curses_tests.py +0 -46
  1583. package/python3.6.2/lib/python3.6/test/data/README +0 -2
  1584. package/python3.6.2/lib/python3.6/test/datetimetester.py +0 -4929
  1585. package/python3.6.2/lib/python3.6/test/decimaltestdata/abs.decTest +0 -161
  1586. package/python3.6.2/lib/python3.6/test/decimaltestdata/add.decTest +0 -2716
  1587. package/python3.6.2/lib/python3.6/test/decimaltestdata/and.decTest +0 -338
  1588. package/python3.6.2/lib/python3.6/test/decimaltestdata/base.decTest +0 -1411
  1589. package/python3.6.2/lib/python3.6/test/decimaltestdata/clamp.decTest +0 -211
  1590. package/python3.6.2/lib/python3.6/test/decimaltestdata/class.decTest +0 -131
  1591. package/python3.6.2/lib/python3.6/test/decimaltestdata/compare.decTest +0 -758
  1592. package/python3.6.2/lib/python3.6/test/decimaltestdata/comparetotal.decTest +0 -798
  1593. package/python3.6.2/lib/python3.6/test/decimaltestdata/comparetotmag.decTest +0 -790
  1594. package/python3.6.2/lib/python3.6/test/decimaltestdata/copy.decTest +0 -86
  1595. package/python3.6.2/lib/python3.6/test/decimaltestdata/copyabs.decTest +0 -86
  1596. package/python3.6.2/lib/python3.6/test/decimaltestdata/copynegate.decTest +0 -86
  1597. package/python3.6.2/lib/python3.6/test/decimaltestdata/copysign.decTest +0 -177
  1598. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddAbs.decTest +0 -126
  1599. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddAdd.decTest +0 -1328
  1600. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddAnd.decTest +0 -347
  1601. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddBase.decTest +0 -1104
  1602. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddCanonical.decTest +0 -357
  1603. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddClass.decTest +0 -76
  1604. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddCompare.decTest +0 -744
  1605. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddCompareSig.decTest +0 -647
  1606. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddCompareTotal.decTest +0 -706
  1607. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddCompareTotalMag.decTest +0 -706
  1608. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddCopy.decTest +0 -88
  1609. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddCopyAbs.decTest +0 -88
  1610. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddCopyNegate.decTest +0 -88
  1611. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddCopySign.decTest +0 -175
  1612. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddDivide.decTest +0 -863
  1613. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddDivideInt.decTest +0 -449
  1614. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddEncode.decTest +0 -495
  1615. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddFMA.decTest +0 -1698
  1616. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddInvert.decTest +0 -202
  1617. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddLogB.decTest +0 -159
  1618. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddMax.decTest +0 -322
  1619. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddMaxMag.decTest +0 -304
  1620. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddMin.decTest +0 -309
  1621. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddMinMag.decTest +0 -293
  1622. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddMinus.decTest +0 -88
  1623. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddMultiply.decTest +0 -553
  1624. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddNextMinus.decTest +0 -126
  1625. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddNextPlus.decTest +0 -124
  1626. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddNextToward.decTest +0 -374
  1627. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddOr.decTest +0 -292
  1628. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddPlus.decTest +0 -88
  1629. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddQuantize.decTest +0 -833
  1630. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddReduce.decTest +0 -182
  1631. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddRemainder.decTest +0 -600
  1632. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddRemainderNear.decTest +0 -629
  1633. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddRotate.decTest +0 -262
  1634. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddSameQuantum.decTest +0 -389
  1635. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddScaleB.decTest +0 -243
  1636. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddShift.decTest +0 -262
  1637. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddSubtract.decTest +0 -629
  1638. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddToIntegral.decTest +0 -257
  1639. package/python3.6.2/lib/python3.6/test/decimaltestdata/ddXor.decTest +0 -337
  1640. package/python3.6.2/lib/python3.6/test/decimaltestdata/decDouble.decTest +0 -65
  1641. package/python3.6.2/lib/python3.6/test/decimaltestdata/decQuad.decTest +0 -65
  1642. package/python3.6.2/lib/python3.6/test/decimaltestdata/decSingle.decTest +0 -25
  1643. package/python3.6.2/lib/python3.6/test/decimaltestdata/divide.decTest +0 -854
  1644. package/python3.6.2/lib/python3.6/test/decimaltestdata/divideint.decTest +0 -486
  1645. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqAbs.decTest +0 -126
  1646. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqAdd.decTest +0 -1215
  1647. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqAnd.decTest +0 -420
  1648. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqBase.decTest +0 -1081
  1649. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqCanonical.decTest +0 -372
  1650. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqClass.decTest +0 -77
  1651. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqCompare.decTest +0 -753
  1652. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqCompareSig.decTest +0 -647
  1653. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqCompareTotal.decTest +0 -706
  1654. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqCompareTotalMag.decTest +0 -706
  1655. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqCopy.decTest +0 -88
  1656. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqCopyAbs.decTest +0 -88
  1657. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqCopyNegate.decTest +0 -88
  1658. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqCopySign.decTest +0 -175
  1659. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqDivide.decTest +0 -808
  1660. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqDivideInt.decTest +0 -453
  1661. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqEncode.decTest +0 -477
  1662. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqFMA.decTest +0 -1786
  1663. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqInvert.decTest +0 -245
  1664. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqLogB.decTest +0 -160
  1665. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqMax.decTest +0 -322
  1666. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqMaxMag.decTest +0 -304
  1667. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqMin.decTest +0 -309
  1668. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqMinMag.decTest +0 -293
  1669. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqMinus.decTest +0 -88
  1670. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqMultiply.decTest +0 -589
  1671. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqNextMinus.decTest +0 -126
  1672. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqNextPlus.decTest +0 -124
  1673. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqNextToward.decTest +0 -375
  1674. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqOr.decTest +0 -401
  1675. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqPlus.decTest +0 -88
  1676. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqQuantize.decTest +0 -836
  1677. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqReduce.decTest +0 -183
  1678. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqRemainder.decTest +0 -597
  1679. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqRemainderNear.decTest +0 -631
  1680. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqRotate.decTest +0 -298
  1681. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqSameQuantum.decTest +0 -389
  1682. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqScaleB.decTest +0 -260
  1683. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqShift.decTest +0 -298
  1684. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqSubtract.decTest +0 -635
  1685. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqToIntegral.decTest +0 -257
  1686. package/python3.6.2/lib/python3.6/test/decimaltestdata/dqXor.decTest +0 -410
  1687. package/python3.6.2/lib/python3.6/test/decimaltestdata/dsBase.decTest +0 -1062
  1688. package/python3.6.2/lib/python3.6/test/decimaltestdata/dsEncode.decTest +0 -372
  1689. package/python3.6.2/lib/python3.6/test/decimaltestdata/exp.decTest +0 -674
  1690. package/python3.6.2/lib/python3.6/test/decimaltestdata/extra.decTest +0 -2830
  1691. package/python3.6.2/lib/python3.6/test/decimaltestdata/fma.decTest +0 -3426
  1692. package/python3.6.2/lib/python3.6/test/decimaltestdata/inexact.decTest +0 -215
  1693. package/python3.6.2/lib/python3.6/test/decimaltestdata/invert.decTest +0 -176
  1694. package/python3.6.2/lib/python3.6/test/decimaltestdata/ln.decTest +0 -611
  1695. package/python3.6.2/lib/python3.6/test/decimaltestdata/log10.decTest +0 -551
  1696. package/python3.6.2/lib/python3.6/test/decimaltestdata/logb.decTest +0 -188
  1697. package/python3.6.2/lib/python3.6/test/decimaltestdata/max.decTest +0 -424
  1698. package/python3.6.2/lib/python3.6/test/decimaltestdata/maxmag.decTest +0 -404
  1699. package/python3.6.2/lib/python3.6/test/decimaltestdata/min.decTest +0 -407
  1700. package/python3.6.2/lib/python3.6/test/decimaltestdata/minmag.decTest +0 -390
  1701. package/python3.6.2/lib/python3.6/test/decimaltestdata/minus.decTest +0 -182
  1702. package/python3.6.2/lib/python3.6/test/decimaltestdata/multiply.decTest +0 -731
  1703. package/python3.6.2/lib/python3.6/test/decimaltestdata/nextminus.decTest +0 -148
  1704. package/python3.6.2/lib/python3.6/test/decimaltestdata/nextplus.decTest +0 -150
  1705. package/python3.6.2/lib/python3.6/test/decimaltestdata/nexttoward.decTest +0 -426
  1706. package/python3.6.2/lib/python3.6/test/decimaltestdata/or.decTest +0 -334
  1707. package/python3.6.2/lib/python3.6/test/decimaltestdata/plus.decTest +0 -195
  1708. package/python3.6.2/lib/python3.6/test/decimaltestdata/power.decTest +0 -1624
  1709. package/python3.6.2/lib/python3.6/test/decimaltestdata/powersqrt.decTest +0 -2970
  1710. package/python3.6.2/lib/python3.6/test/decimaltestdata/quantize.decTest +0 -948
  1711. package/python3.6.2/lib/python3.6/test/decimaltestdata/randomBound32.decTest +0 -2443
  1712. package/python3.6.2/lib/python3.6/test/decimaltestdata/randoms.decTest +0 -4030
  1713. package/python3.6.2/lib/python3.6/test/decimaltestdata/reduce.decTest +0 -234
  1714. package/python3.6.2/lib/python3.6/test/decimaltestdata/remainder.decTest +0 -640
  1715. package/python3.6.2/lib/python3.6/test/decimaltestdata/remainderNear.decTest +0 -572
  1716. package/python3.6.2/lib/python3.6/test/decimaltestdata/rescale.decTest +0 -764
  1717. package/python3.6.2/lib/python3.6/test/decimaltestdata/rotate.decTest +0 -247
  1718. package/python3.6.2/lib/python3.6/test/decimaltestdata/rounding.decTest +0 -1303
  1719. package/python3.6.2/lib/python3.6/test/decimaltestdata/samequantum.decTest +0 -389
  1720. package/python3.6.2/lib/python3.6/test/decimaltestdata/scaleb.decTest +0 -209
  1721. package/python3.6.2/lib/python3.6/test/decimaltestdata/shift.decTest +0 -250
  1722. package/python3.6.2/lib/python3.6/test/decimaltestdata/squareroot.decTest +0 -3834
  1723. package/python3.6.2/lib/python3.6/test/decimaltestdata/subtract.decTest +0 -873
  1724. package/python3.6.2/lib/python3.6/test/decimaltestdata/testall.decTest +0 -87
  1725. package/python3.6.2/lib/python3.6/test/decimaltestdata/tointegral.decTest +0 -241
  1726. package/python3.6.2/lib/python3.6/test/decimaltestdata/tointegralx.decTest +0 -255
  1727. package/python3.6.2/lib/python3.6/test/decimaltestdata/xor.decTest +0 -335
  1728. package/python3.6.2/lib/python3.6/test/dh1024.pem +0 -7
  1729. package/python3.6.2/lib/python3.6/test/dis_module.py +0 -5
  1730. package/python3.6.2/lib/python3.6/test/doctest_aliases.py +0 -13
  1731. package/python3.6.2/lib/python3.6/test/double_const.py +0 -30
  1732. package/python3.6.2/lib/python3.6/test/dtracedata/assert_usable.d +0 -5
  1733. package/python3.6.2/lib/python3.6/test/dtracedata/assert_usable.stp +0 -5
  1734. package/python3.6.2/lib/python3.6/test/dtracedata/call_stack.d +0 -31
  1735. package/python3.6.2/lib/python3.6/test/dtracedata/call_stack.d.expected +0 -18
  1736. package/python3.6.2/lib/python3.6/test/dtracedata/call_stack.py +0 -30
  1737. package/python3.6.2/lib/python3.6/test/dtracedata/call_stack.stp +0 -41
  1738. package/python3.6.2/lib/python3.6/test/dtracedata/call_stack.stp.expected +0 -14
  1739. package/python3.6.2/lib/python3.6/test/dtracedata/gc.d +0 -18
  1740. package/python3.6.2/lib/python3.6/test/dtracedata/gc.d.expected +0 -8
  1741. package/python3.6.2/lib/python3.6/test/dtracedata/gc.py +0 -13
  1742. package/python3.6.2/lib/python3.6/test/dtracedata/gc.stp +0 -26
  1743. package/python3.6.2/lib/python3.6/test/dtracedata/gc.stp.expected +0 -8
  1744. package/python3.6.2/lib/python3.6/test/dtracedata/instance.py +0 -24
  1745. package/python3.6.2/lib/python3.6/test/dtracedata/line.d +0 -7
  1746. package/python3.6.2/lib/python3.6/test/dtracedata/line.d.expected +0 -20
  1747. package/python3.6.2/lib/python3.6/test/dtracedata/line.py +0 -17
  1748. package/python3.6.2/lib/python3.6/test/eintrdata/eintr_tester.py +0 -493
  1749. package/python3.6.2/lib/python3.6/test/empty.vbs +0 -1
  1750. package/python3.6.2/lib/python3.6/test/encoded_modules/__init__.py +0 -23
  1751. package/python3.6.2/lib/python3.6/test/encoded_modules/module_iso_8859_1.py +0 -5
  1752. package/python3.6.2/lib/python3.6/test/encoded_modules/module_koi8_r.py +0 -3
  1753. package/python3.6.2/lib/python3.6/test/exception_hierarchy.txt +0 -64
  1754. package/python3.6.2/lib/python3.6/test/final_a.py +0 -19
  1755. package/python3.6.2/lib/python3.6/test/final_b.py +0 -19
  1756. package/python3.6.2/lib/python3.6/test/floating_points.txt +0 -1028
  1757. package/python3.6.2/lib/python3.6/test/fork_wait.py +0 -91
  1758. package/python3.6.2/lib/python3.6/test/formatfloat_testcases.txt +0 -355
  1759. package/python3.6.2/lib/python3.6/test/future_test1.py +0 -11
  1760. package/python3.6.2/lib/python3.6/test/future_test2.py +0 -10
  1761. package/python3.6.2/lib/python3.6/test/gdb_sample.py +0 -12
  1762. package/python3.6.2/lib/python3.6/test/ieee754.txt +0 -185
  1763. package/python3.6.2/lib/python3.6/test/imghdrdata/python.bmp +0 -0
  1764. package/python3.6.2/lib/python3.6/test/imghdrdata/python.exr +0 -0
  1765. package/python3.6.2/lib/python3.6/test/imghdrdata/python.gif +0 -0
  1766. package/python3.6.2/lib/python3.6/test/imghdrdata/python.jpg +0 -0
  1767. package/python3.6.2/lib/python3.6/test/imghdrdata/python.pbm +0 -3
  1768. package/python3.6.2/lib/python3.6/test/imghdrdata/python.pgm +0 -0
  1769. package/python3.6.2/lib/python3.6/test/imghdrdata/python.png +0 -0
  1770. package/python3.6.2/lib/python3.6/test/imghdrdata/python.ppm +0 -0
  1771. package/python3.6.2/lib/python3.6/test/imghdrdata/python.ras +0 -0
  1772. package/python3.6.2/lib/python3.6/test/imghdrdata/python.sgi +0 -0
  1773. package/python3.6.2/lib/python3.6/test/imghdrdata/python.tiff +0 -0
  1774. package/python3.6.2/lib/python3.6/test/imghdrdata/python.webp +0 -0
  1775. package/python3.6.2/lib/python3.6/test/imghdrdata/python.xbm +0 -6
  1776. package/python3.6.2/lib/python3.6/test/imp_dummy.py +0 -3
  1777. package/python3.6.2/lib/python3.6/test/inspect_fodder.py +0 -76
  1778. package/python3.6.2/lib/python3.6/test/inspect_fodder2.py +0 -139
  1779. package/python3.6.2/lib/python3.6/test/keycert.passwd.pem +0 -33
  1780. package/python3.6.2/lib/python3.6/test/keycert.pem +0 -31
  1781. package/python3.6.2/lib/python3.6/test/keycert2.pem +0 -31
  1782. package/python3.6.2/lib/python3.6/test/keycert3.pem +0 -73
  1783. package/python3.6.2/lib/python3.6/test/keycert4.pem +0 -73
  1784. package/python3.6.2/lib/python3.6/test/leakers/README.txt +0 -32
  1785. package/python3.6.2/lib/python3.6/test/leakers/__init__.py +0 -0
  1786. package/python3.6.2/lib/python3.6/test/leakers/test_ctypes.py +0 -15
  1787. package/python3.6.2/lib/python3.6/test/leakers/test_selftype.py +0 -13
  1788. package/python3.6.2/lib/python3.6/test/libregrtest/__init__.py +0 -5
  1789. package/python3.6.2/lib/python3.6/test/libregrtest/cmdline.py +0 -387
  1790. package/python3.6.2/lib/python3.6/test/libregrtest/main.py +0 -584
  1791. package/python3.6.2/lib/python3.6/test/libregrtest/refleak.py +0 -294
  1792. package/python3.6.2/lib/python3.6/test/libregrtest/runtest.py +0 -254
  1793. package/python3.6.2/lib/python3.6/test/libregrtest/runtest_mp.py +0 -244
  1794. package/python3.6.2/lib/python3.6/test/libregrtest/save_env.py +0 -284
  1795. package/python3.6.2/lib/python3.6/test/libregrtest/setup.py +0 -140
  1796. package/python3.6.2/lib/python3.6/test/list_tests.py +0 -618
  1797. package/python3.6.2/lib/python3.6/test/lock_tests.py +0 -936
  1798. package/python3.6.2/lib/python3.6/test/mailcap.txt +0 -39
  1799. package/python3.6.2/lib/python3.6/test/make_ssl_certs.py +0 -216
  1800. package/python3.6.2/lib/python3.6/test/mapping_tests.py +0 -657
  1801. package/python3.6.2/lib/python3.6/test/math_testcases.txt +0 -633
  1802. package/python3.6.2/lib/python3.6/test/memory_watchdog.py +0 -28
  1803. package/python3.6.2/lib/python3.6/test/mime.types +0 -1445
  1804. package/python3.6.2/lib/python3.6/test/mock_socket.py +0 -159
  1805. package/python3.6.2/lib/python3.6/test/mod_generics_cache.py +0 -53
  1806. package/python3.6.2/lib/python3.6/test/mp_fork_bomb.py +0 -18
  1807. package/python3.6.2/lib/python3.6/test/mp_preload.py +0 -18
  1808. package/python3.6.2/lib/python3.6/test/multibytecodec_support.py +0 -384
  1809. package/python3.6.2/lib/python3.6/test/nokia.pem +0 -31
  1810. package/python3.6.2/lib/python3.6/test/nullbytecert.pem +0 -90
  1811. package/python3.6.2/lib/python3.6/test/nullcert.pem +0 -0
  1812. package/python3.6.2/lib/python3.6/test/outstanding_bugs.py +0 -18
  1813. package/python3.6.2/lib/python3.6/test/pickletester.py +0 -2922
  1814. package/python3.6.2/lib/python3.6/test/profilee.py +0 -115
  1815. package/python3.6.2/lib/python3.6/test/pstats.pck +0 -0
  1816. package/python3.6.2/lib/python3.6/test/pycacert.pem +0 -78
  1817. package/python3.6.2/lib/python3.6/test/pycakey.pem +0 -28
  1818. package/python3.6.2/lib/python3.6/test/pyclbr_input.py +0 -33
  1819. package/python3.6.2/lib/python3.6/test/pydoc_mod.py +0 -37
  1820. package/python3.6.2/lib/python3.6/test/pydocfodder.py +0 -216
  1821. package/python3.6.2/lib/python3.6/test/pystone.py +0 -277
  1822. package/python3.6.2/lib/python3.6/test/pythoninfo.py +0 -486
  1823. package/python3.6.2/lib/python3.6/test/randv2_32.pck +0 -633
  1824. package/python3.6.2/lib/python3.6/test/randv2_64.pck +0 -633
  1825. package/python3.6.2/lib/python3.6/test/randv3.pck +0 -633
  1826. package/python3.6.2/lib/python3.6/test/re_tests.py +0 -670
  1827. package/python3.6.2/lib/python3.6/test/regrtest.py +0 -50
  1828. package/python3.6.2/lib/python3.6/test/relimport.py +0 -1
  1829. package/python3.6.2/lib/python3.6/test/reperf.py +0 -23
  1830. package/python3.6.2/lib/python3.6/test/revocation.crl +0 -11
  1831. package/python3.6.2/lib/python3.6/test/sample_doctest.py +0 -76
  1832. package/python3.6.2/lib/python3.6/test/sample_doctest_no_docstrings.py +0 -12
  1833. package/python3.6.2/lib/python3.6/test/sample_doctest_no_doctests.py +0 -15
  1834. package/python3.6.2/lib/python3.6/test/selfsigned_pythontestdotnet.pem +0 -16
  1835. package/python3.6.2/lib/python3.6/test/seq_tests.py +0 -414
  1836. package/python3.6.2/lib/python3.6/test/sgml_input.html +0 -212
  1837. package/python3.6.2/lib/python3.6/test/signalinterproctester.py +0 -84
  1838. package/python3.6.2/lib/python3.6/test/sndhdrdata/README +0 -5
  1839. package/python3.6.2/lib/python3.6/test/sndhdrdata/sndhdr.8svx +0 -0
  1840. package/python3.6.2/lib/python3.6/test/sndhdrdata/sndhdr.aifc +0 -0
  1841. package/python3.6.2/lib/python3.6/test/sndhdrdata/sndhdr.aiff +0 -0
  1842. package/python3.6.2/lib/python3.6/test/sndhdrdata/sndhdr.au +0 -0
  1843. package/python3.6.2/lib/python3.6/test/sndhdrdata/sndhdr.hcom +0 -0
  1844. package/python3.6.2/lib/python3.6/test/sndhdrdata/sndhdr.sndt +0 -0
  1845. package/python3.6.2/lib/python3.6/test/sndhdrdata/sndhdr.voc +0 -0
  1846. package/python3.6.2/lib/python3.6/test/sndhdrdata/sndhdr.wav +0 -0
  1847. package/python3.6.2/lib/python3.6/test/sortperf.py +0 -169
  1848. package/python3.6.2/lib/python3.6/test/ssl_cert.pem +0 -15
  1849. package/python3.6.2/lib/python3.6/test/ssl_key.passwd.pem +0 -18
  1850. package/python3.6.2/lib/python3.6/test/ssl_key.pem +0 -16
  1851. package/python3.6.2/lib/python3.6/test/ssl_servers.py +0 -209
  1852. package/python3.6.2/lib/python3.6/test/ssltests.py +0 -37
  1853. package/python3.6.2/lib/python3.6/test/string_tests.py +0 -1383
  1854. package/python3.6.2/lib/python3.6/test/subprocessdata/fd_status.py +0 -34
  1855. package/python3.6.2/lib/python3.6/test/subprocessdata/input_reader.py +0 -7
  1856. package/python3.6.2/lib/python3.6/test/subprocessdata/qcat.py +0 -7
  1857. package/python3.6.2/lib/python3.6/test/subprocessdata/qgrep.py +0 -10
  1858. package/python3.6.2/lib/python3.6/test/subprocessdata/sigchild_ignore.py +0 -15
  1859. package/python3.6.2/lib/python3.6/test/support/__init__.py +0 -2706
  1860. package/python3.6.2/lib/python3.6/test/support/script_helper.py +0 -259
  1861. package/python3.6.2/lib/python3.6/test/test___all__.py +0 -109
  1862. package/python3.6.2/lib/python3.6/test/test___future__.py +0 -61
  1863. package/python3.6.2/lib/python3.6/test/test__locale.py +0 -193
  1864. package/python3.6.2/lib/python3.6/test/test__opcode.py +0 -20
  1865. package/python3.6.2/lib/python3.6/test/test__osx_support.py +0 -276
  1866. package/python3.6.2/lib/python3.6/test/test_abc.py +0 -420
  1867. package/python3.6.2/lib/python3.6/test/test_abstract_numbers.py +0 -44
  1868. package/python3.6.2/lib/python3.6/test/test_aifc.py +0 -399
  1869. package/python3.6.2/lib/python3.6/test/test_argparse.py +0 -5006
  1870. package/python3.6.2/lib/python3.6/test/test_array.py +0 -1388
  1871. package/python3.6.2/lib/python3.6/test/test_asdl_parser.py +0 -122
  1872. package/python3.6.2/lib/python3.6/test/test_ast.py +0 -1170
  1873. package/python3.6.2/lib/python3.6/test/test_asyncgen.py +0 -1044
  1874. package/python3.6.2/lib/python3.6/test/test_asynchat.py +0 -308
  1875. package/python3.6.2/lib/python3.6/test/test_asyncio/__init__.py +0 -10
  1876. package/python3.6.2/lib/python3.6/test/test_asyncio/__main__.py +0 -4
  1877. package/python3.6.2/lib/python3.6/test/test_asyncio/echo.py +0 -8
  1878. package/python3.6.2/lib/python3.6/test/test_asyncio/echo2.py +0 -6
  1879. package/python3.6.2/lib/python3.6/test/test_asyncio/echo3.py +0 -11
  1880. package/python3.6.2/lib/python3.6/test/test_asyncio/keycert3.pem +0 -73
  1881. package/python3.6.2/lib/python3.6/test/test_asyncio/pycacert.pem +0 -78
  1882. package/python3.6.2/lib/python3.6/test/test_asyncio/ssl_cert.pem +0 -15
  1883. package/python3.6.2/lib/python3.6/test/test_asyncio/ssl_key.pem +0 -16
  1884. package/python3.6.2/lib/python3.6/test/test_asyncio/test_base_events.py +0 -1761
  1885. package/python3.6.2/lib/python3.6/test/test_asyncio/test_events.py +0 -2791
  1886. package/python3.6.2/lib/python3.6/test/test_asyncio/test_futures.py +0 -692
  1887. package/python3.6.2/lib/python3.6/test/test_asyncio/test_locks.py +0 -943
  1888. package/python3.6.2/lib/python3.6/test/test_asyncio/test_pep492.py +0 -232
  1889. package/python3.6.2/lib/python3.6/test/test_asyncio/test_proactor_events.py +0 -593
  1890. package/python3.6.2/lib/python3.6/test/test_asyncio/test_queues.py +0 -643
  1891. package/python3.6.2/lib/python3.6/test/test_asyncio/test_selector_events.py +0 -1833
  1892. package/python3.6.2/lib/python3.6/test/test_asyncio/test_sslproto.py +0 -134
  1893. package/python3.6.2/lib/python3.6/test/test_asyncio/test_streams.py +0 -868
  1894. package/python3.6.2/lib/python3.6/test/test_asyncio/test_subprocess.py +0 -532
  1895. package/python3.6.2/lib/python3.6/test/test_asyncio/test_tasks.py +0 -2598
  1896. package/python3.6.2/lib/python3.6/test/test_asyncio/test_transports.py +0 -91
  1897. package/python3.6.2/lib/python3.6/test/test_asyncio/test_unix_events.py +0 -1621
  1898. package/python3.6.2/lib/python3.6/test/test_asyncio/test_windows_events.py +0 -164
  1899. package/python3.6.2/lib/python3.6/test/test_asyncio/test_windows_utils.py +0 -182
  1900. package/python3.6.2/lib/python3.6/test/test_asyncore.py +0 -847
  1901. package/python3.6.2/lib/python3.6/test/test_atexit.py +0 -192
  1902. package/python3.6.2/lib/python3.6/test/test_audioop.py +0 -565
  1903. package/python3.6.2/lib/python3.6/test/test_augassign.py +0 -326
  1904. package/python3.6.2/lib/python3.6/test/test_base64.py +0 -681
  1905. package/python3.6.2/lib/python3.6/test/test_baseexception.py +0 -183
  1906. package/python3.6.2/lib/python3.6/test/test_bigaddrspace.py +0 -101
  1907. package/python3.6.2/lib/python3.6/test/test_bigmem.py +0 -1256
  1908. package/python3.6.2/lib/python3.6/test/test_binascii.py +0 -373
  1909. package/python3.6.2/lib/python3.6/test/test_binhex.py +0 -55
  1910. package/python3.6.2/lib/python3.6/test/test_binop.py +0 -441
  1911. package/python3.6.2/lib/python3.6/test/test_bisect.py +0 -328
  1912. package/python3.6.2/lib/python3.6/test/test_bool.py +0 -368
  1913. package/python3.6.2/lib/python3.6/test/test_buffer.py +0 -4396
  1914. package/python3.6.2/lib/python3.6/test/test_bufio.py +0 -73
  1915. package/python3.6.2/lib/python3.6/test/test_builtin.py +0 -1851
  1916. package/python3.6.2/lib/python3.6/test/test_bytes.py +0 -1759
  1917. package/python3.6.2/lib/python3.6/test/test_bz2.py +0 -1002
  1918. package/python3.6.2/lib/python3.6/test/test_calendar.py +0 -848
  1919. package/python3.6.2/lib/python3.6/test/test_call.py +0 -302
  1920. package/python3.6.2/lib/python3.6/test/test_capi.py +0 -753
  1921. package/python3.6.2/lib/python3.6/test/test_cgi.py +0 -539
  1922. package/python3.6.2/lib/python3.6/test/test_cgitb.py +0 -67
  1923. package/python3.6.2/lib/python3.6/test/test_charmapcodec.py +0 -53
  1924. package/python3.6.2/lib/python3.6/test/test_class.py +0 -599
  1925. package/python3.6.2/lib/python3.6/test/test_cmath.py +0 -643
  1926. package/python3.6.2/lib/python3.6/test/test_cmd.py +0 -243
  1927. package/python3.6.2/lib/python3.6/test/test_cmd_line.py +0 -494
  1928. package/python3.6.2/lib/python3.6/test/test_cmd_line_script.py +0 -648
  1929. package/python3.6.2/lib/python3.6/test/test_code.py +0 -367
  1930. package/python3.6.2/lib/python3.6/test/test_code_module.py +0 -154
  1931. package/python3.6.2/lib/python3.6/test/test_codeccallbacks.py +0 -1074
  1932. package/python3.6.2/lib/python3.6/test/test_codecencodings_cn.py +0 -96
  1933. package/python3.6.2/lib/python3.6/test/test_codecencodings_hk.py +0 -22
  1934. package/python3.6.2/lib/python3.6/test/test_codecencodings_iso2022.py +0 -41
  1935. package/python3.6.2/lib/python3.6/test/test_codecencodings_jp.py +0 -126
  1936. package/python3.6.2/lib/python3.6/test/test_codecencodings_kr.py +0 -69
  1937. package/python3.6.2/lib/python3.6/test/test_codecencodings_tw.py +0 -22
  1938. package/python3.6.2/lib/python3.6/test/test_codecmaps_cn.py +0 -26
  1939. package/python3.6.2/lib/python3.6/test/test_codecmaps_hk.py +0 -15
  1940. package/python3.6.2/lib/python3.6/test/test_codecmaps_jp.py +0 -60
  1941. package/python3.6.2/lib/python3.6/test/test_codecmaps_kr.py +0 -37
  1942. package/python3.6.2/lib/python3.6/test/test_codecmaps_tw.py +0 -27
  1943. package/python3.6.2/lib/python3.6/test/test_codecs.py +0 -3272
  1944. package/python3.6.2/lib/python3.6/test/test_codeop.py +0 -299
  1945. package/python3.6.2/lib/python3.6/test/test_collections.py +0 -1926
  1946. package/python3.6.2/lib/python3.6/test/test_colorsys.py +0 -100
  1947. package/python3.6.2/lib/python3.6/test/test_compare.py +0 -124
  1948. package/python3.6.2/lib/python3.6/test/test_compile.py +0 -720
  1949. package/python3.6.2/lib/python3.6/test/test_compileall.py +0 -547
  1950. package/python3.6.2/lib/python3.6/test/test_complex.py +0 -688
  1951. package/python3.6.2/lib/python3.6/test/test_concurrent_futures.py +0 -836
  1952. package/python3.6.2/lib/python3.6/test/test_configparser.py +0 -2096
  1953. package/python3.6.2/lib/python3.6/test/test_contains.py +0 -114
  1954. package/python3.6.2/lib/python3.6/test/test_contextlib.py +0 -990
  1955. package/python3.6.2/lib/python3.6/test/test_copy.py +0 -888
  1956. package/python3.6.2/lib/python3.6/test/test_copyreg.py +0 -126
  1957. package/python3.6.2/lib/python3.6/test/test_coroutines.py +0 -2151
  1958. package/python3.6.2/lib/python3.6/test/test_cprofile.py +0 -98
  1959. package/python3.6.2/lib/python3.6/test/test_crashers.py +0 -37
  1960. package/python3.6.2/lib/python3.6/test/test_crypt.py +0 -45
  1961. package/python3.6.2/lib/python3.6/test/test_csv.py +0 -1175
  1962. package/python3.6.2/lib/python3.6/test/test_ctypes.py +0 -9
  1963. package/python3.6.2/lib/python3.6/test/test_curses.py +0 -549
  1964. package/python3.6.2/lib/python3.6/test/test_datetime.py +0 -57
  1965. package/python3.6.2/lib/python3.6/test/test_dbm.py +0 -192
  1966. package/python3.6.2/lib/python3.6/test/test_dbm_dumb.py +0 -286
  1967. package/python3.6.2/lib/python3.6/test/test_dbm_gnu.py +0 -97
  1968. package/python3.6.2/lib/python3.6/test/test_dbm_ndbm.py +0 -52
  1969. package/python3.6.2/lib/python3.6/test/test_decimal.py +0 -5707
  1970. package/python3.6.2/lib/python3.6/test/test_decorators.py +0 -304
  1971. package/python3.6.2/lib/python3.6/test/test_defaultdict.py +0 -187
  1972. package/python3.6.2/lib/python3.6/test/test_deque.py +0 -1059
  1973. package/python3.6.2/lib/python3.6/test/test_descr.py +0 -5452
  1974. package/python3.6.2/lib/python3.6/test/test_descrtut.py +0 -486
  1975. package/python3.6.2/lib/python3.6/test/test_devpoll.py +0 -145
  1976. package/python3.6.2/lib/python3.6/test/test_dict.py +0 -1217
  1977. package/python3.6.2/lib/python3.6/test/test_dict_version.py +0 -186
  1978. package/python3.6.2/lib/python3.6/test/test_dictcomps.py +0 -86
  1979. package/python3.6.2/lib/python3.6/test/test_dictviews.py +0 -272
  1980. package/python3.6.2/lib/python3.6/test/test_difflib.py +0 -478
  1981. package/python3.6.2/lib/python3.6/test/test_difflib_expect.html +0 -526
  1982. package/python3.6.2/lib/python3.6/test/test_dis.py +0 -960
  1983. package/python3.6.2/lib/python3.6/test/test_distutils.py +0 -18
  1984. package/python3.6.2/lib/python3.6/test/test_doctest.py +0 -2962
  1985. package/python3.6.2/lib/python3.6/test/test_doctest.txt +0 -17
  1986. package/python3.6.2/lib/python3.6/test/test_doctest2.py +0 -123
  1987. package/python3.6.2/lib/python3.6/test/test_doctest2.txt +0 -14
  1988. package/python3.6.2/lib/python3.6/test/test_doctest3.txt +0 -5
  1989. package/python3.6.2/lib/python3.6/test/test_doctest4.txt +0 -11
  1990. package/python3.6.2/lib/python3.6/test/test_docxmlrpc.py +0 -198
  1991. package/python3.6.2/lib/python3.6/test/test_dtrace.py +0 -178
  1992. package/python3.6.2/lib/python3.6/test/test_dummy_thread.py +0 -256
  1993. package/python3.6.2/lib/python3.6/test/test_dummy_threading.py +0 -60
  1994. package/python3.6.2/lib/python3.6/test/test_dynamic.py +0 -138
  1995. package/python3.6.2/lib/python3.6/test/test_dynamicclassattribute.py +0 -300
  1996. package/python3.6.2/lib/python3.6/test/test_eintr.py +0 -22
  1997. package/python3.6.2/lib/python3.6/test/test_email/__init__.py +0 -166
  1998. package/python3.6.2/lib/python3.6/test/test_email/__main__.py +0 -4
  1999. package/python3.6.2/lib/python3.6/test/test_email/data/PyBanner048.gif +0 -0
  2000. package/python3.6.2/lib/python3.6/test/test_email/data/audiotest.au +0 -0
  2001. package/python3.6.2/lib/python3.6/test/test_email/data/msg_01.txt +0 -19
  2002. package/python3.6.2/lib/python3.6/test/test_email/data/msg_02.txt +0 -136
  2003. package/python3.6.2/lib/python3.6/test/test_email/data/msg_03.txt +0 -16
  2004. package/python3.6.2/lib/python3.6/test/test_email/data/msg_04.txt +0 -37
  2005. package/python3.6.2/lib/python3.6/test/test_email/data/msg_05.txt +0 -28
  2006. package/python3.6.2/lib/python3.6/test/test_email/data/msg_06.txt +0 -33
  2007. package/python3.6.2/lib/python3.6/test/test_email/data/msg_07.txt +0 -83
  2008. package/python3.6.2/lib/python3.6/test/test_email/data/msg_08.txt +0 -24
  2009. package/python3.6.2/lib/python3.6/test/test_email/data/msg_09.txt +0 -24
  2010. package/python3.6.2/lib/python3.6/test/test_email/data/msg_10.txt +0 -39
  2011. package/python3.6.2/lib/python3.6/test/test_email/data/msg_11.txt +0 -7
  2012. package/python3.6.2/lib/python3.6/test/test_email/data/msg_12.txt +0 -36
  2013. package/python3.6.2/lib/python3.6/test/test_email/data/msg_12a.txt +0 -38
  2014. package/python3.6.2/lib/python3.6/test/test_email/data/msg_13.txt +0 -94
  2015. package/python3.6.2/lib/python3.6/test/test_email/data/msg_14.txt +0 -23
  2016. package/python3.6.2/lib/python3.6/test/test_email/data/msg_15.txt +0 -52
  2017. package/python3.6.2/lib/python3.6/test/test_email/data/msg_16.txt +0 -123
  2018. package/python3.6.2/lib/python3.6/test/test_email/data/msg_17.txt +0 -12
  2019. package/python3.6.2/lib/python3.6/test/test_email/data/msg_18.txt +0 -6
  2020. package/python3.6.2/lib/python3.6/test/test_email/data/msg_19.txt +0 -43
  2021. package/python3.6.2/lib/python3.6/test/test_email/data/msg_20.txt +0 -22
  2022. package/python3.6.2/lib/python3.6/test/test_email/data/msg_21.txt +0 -20
  2023. package/python3.6.2/lib/python3.6/test/test_email/data/msg_22.txt +0 -46
  2024. package/python3.6.2/lib/python3.6/test/test_email/data/msg_23.txt +0 -8
  2025. package/python3.6.2/lib/python3.6/test/test_email/data/msg_24.txt +0 -10
  2026. package/python3.6.2/lib/python3.6/test/test_email/data/msg_25.txt +0 -117
  2027. package/python3.6.2/lib/python3.6/test/test_email/data/msg_26.txt +0 -46
  2028. package/python3.6.2/lib/python3.6/test/test_email/data/msg_27.txt +0 -15
  2029. package/python3.6.2/lib/python3.6/test/test_email/data/msg_28.txt +0 -25
  2030. package/python3.6.2/lib/python3.6/test/test_email/data/msg_29.txt +0 -22
  2031. package/python3.6.2/lib/python3.6/test/test_email/data/msg_30.txt +0 -23
  2032. package/python3.6.2/lib/python3.6/test/test_email/data/msg_31.txt +0 -15
  2033. package/python3.6.2/lib/python3.6/test/test_email/data/msg_32.txt +0 -14
  2034. package/python3.6.2/lib/python3.6/test/test_email/data/msg_33.txt +0 -29
  2035. package/python3.6.2/lib/python3.6/test/test_email/data/msg_34.txt +0 -19
  2036. package/python3.6.2/lib/python3.6/test/test_email/data/msg_35.txt +0 -4
  2037. package/python3.6.2/lib/python3.6/test/test_email/data/msg_36.txt +0 -40
  2038. package/python3.6.2/lib/python3.6/test/test_email/data/msg_37.txt +0 -22
  2039. package/python3.6.2/lib/python3.6/test/test_email/data/msg_38.txt +0 -101
  2040. package/python3.6.2/lib/python3.6/test/test_email/data/msg_39.txt +0 -83
  2041. package/python3.6.2/lib/python3.6/test/test_email/data/msg_40.txt +0 -10
  2042. package/python3.6.2/lib/python3.6/test/test_email/data/msg_41.txt +0 -8
  2043. package/python3.6.2/lib/python3.6/test/test_email/data/msg_42.txt +0 -20
  2044. package/python3.6.2/lib/python3.6/test/test_email/data/msg_43.txt +0 -217
  2045. package/python3.6.2/lib/python3.6/test/test_email/data/msg_44.txt +0 -33
  2046. package/python3.6.2/lib/python3.6/test/test_email/data/msg_45.txt +0 -33
  2047. package/python3.6.2/lib/python3.6/test/test_email/data/msg_46.txt +0 -23
  2048. package/python3.6.2/lib/python3.6/test/test_email/test__encoded_words.py +0 -192
  2049. package/python3.6.2/lib/python3.6/test/test_email/test__header_value_parser.py +0 -2723
  2050. package/python3.6.2/lib/python3.6/test/test_email/test_asian_codecs.py +0 -81
  2051. package/python3.6.2/lib/python3.6/test/test_email/test_contentmanager.py +0 -796
  2052. package/python3.6.2/lib/python3.6/test/test_email/test_defect_handling.py +0 -320
  2053. package/python3.6.2/lib/python3.6/test/test_email/test_email.py +0 -5402
  2054. package/python3.6.2/lib/python3.6/test/test_email/test_generator.py +0 -296
  2055. package/python3.6.2/lib/python3.6/test/test_email/test_headerregistry.py +0 -1653
  2056. package/python3.6.2/lib/python3.6/test/test_email/test_inversion.py +0 -70
  2057. package/python3.6.2/lib/python3.6/test/test_email/test_message.py +0 -803
  2058. package/python3.6.2/lib/python3.6/test/test_email/test_parser.py +0 -110
  2059. package/python3.6.2/lib/python3.6/test/test_email/test_pickleable.py +0 -76
  2060. package/python3.6.2/lib/python3.6/test/test_email/test_policy.py +0 -346
  2061. package/python3.6.2/lib/python3.6/test/test_email/test_utils.py +0 -163
  2062. package/python3.6.2/lib/python3.6/test/test_email/torture_test.py +0 -133
  2063. package/python3.6.2/lib/python3.6/test/test_ensurepip.py +0 -310
  2064. package/python3.6.2/lib/python3.6/test/test_enum.py +0 -2618
  2065. package/python3.6.2/lib/python3.6/test/test_enumerate.py +0 -269
  2066. package/python3.6.2/lib/python3.6/test/test_eof.py +0 -28
  2067. package/python3.6.2/lib/python3.6/test/test_epoll.py +0 -255
  2068. package/python3.6.2/lib/python3.6/test/test_errno.py +0 -35
  2069. package/python3.6.2/lib/python3.6/test/test_exception_hierarchy.py +0 -204
  2070. package/python3.6.2/lib/python3.6/test/test_exception_variations.py +0 -176
  2071. package/python3.6.2/lib/python3.6/test/test_exceptions.py +0 -1288
  2072. package/python3.6.2/lib/python3.6/test/test_extcall.py +0 -465
  2073. package/python3.6.2/lib/python3.6/test/test_faulthandler.py +0 -817
  2074. package/python3.6.2/lib/python3.6/test/test_fcntl.py +0 -152
  2075. package/python3.6.2/lib/python3.6/test/test_file.py +0 -329
  2076. package/python3.6.2/lib/python3.6/test/test_file_eintr.py +0 -252
  2077. package/python3.6.2/lib/python3.6/test/test_filecmp.py +0 -217
  2078. package/python3.6.2/lib/python3.6/test/test_fileinput.py +0 -1015
  2079. package/python3.6.2/lib/python3.6/test/test_fileio.py +0 -595
  2080. package/python3.6.2/lib/python3.6/test/test_finalization.py +0 -519
  2081. package/python3.6.2/lib/python3.6/test/test_float.py +0 -1422
  2082. package/python3.6.2/lib/python3.6/test/test_flufl.py +0 -22
  2083. package/python3.6.2/lib/python3.6/test/test_fnmatch.py +0 -128
  2084. package/python3.6.2/lib/python3.6/test/test_fork1.py +0 -112
  2085. package/python3.6.2/lib/python3.6/test/test_format.py +0 -494
  2086. package/python3.6.2/lib/python3.6/test/test_fractions.py +0 -635
  2087. package/python3.6.2/lib/python3.6/test/test_frame.py +0 -165
  2088. package/python3.6.2/lib/python3.6/test/test_fstring.py +0 -1038
  2089. package/python3.6.2/lib/python3.6/test/test_ftplib.py +0 -1091
  2090. package/python3.6.2/lib/python3.6/test/test_funcattrs.py +0 -377
  2091. package/python3.6.2/lib/python3.6/test/test_functools.py +0 -2083
  2092. package/python3.6.2/lib/python3.6/test/test_future.py +0 -108
  2093. package/python3.6.2/lib/python3.6/test/test_future3.py +0 -26
  2094. package/python3.6.2/lib/python3.6/test/test_future4.py +0 -6
  2095. package/python3.6.2/lib/python3.6/test/test_future5.py +0 -21
  2096. package/python3.6.2/lib/python3.6/test/test_gc.py +0 -1031
  2097. package/python3.6.2/lib/python3.6/test/test_gdb.py +0 -936
  2098. package/python3.6.2/lib/python3.6/test/test_generator_stop.py +0 -34
  2099. package/python3.6.2/lib/python3.6/test/test_generators.py +0 -2232
  2100. package/python3.6.2/lib/python3.6/test/test_genericpath.py +0 -537
  2101. package/python3.6.2/lib/python3.6/test/test_genexps.py +0 -285
  2102. package/python3.6.2/lib/python3.6/test/test_getargs2.py +0 -958
  2103. package/python3.6.2/lib/python3.6/test/test_getopt.py +0 -184
  2104. package/python3.6.2/lib/python3.6/test/test_getpass.py +0 -163
  2105. package/python3.6.2/lib/python3.6/test/test_gettext.py +0 -770
  2106. package/python3.6.2/lib/python3.6/test/test_glob.py +0 -317
  2107. package/python3.6.2/lib/python3.6/test/test_global.py +0 -61
  2108. package/python3.6.2/lib/python3.6/test/test_grammar.py +0 -1417
  2109. package/python3.6.2/lib/python3.6/test/test_grp.py +0 -108
  2110. package/python3.6.2/lib/python3.6/test/test_gzip.py +0 -672
  2111. package/python3.6.2/lib/python3.6/test/test_hash.py +0 -346
  2112. package/python3.6.2/lib/python3.6/test/test_hashlib.py +0 -954
  2113. package/python3.6.2/lib/python3.6/test/test_heapq.py +0 -427
  2114. package/python3.6.2/lib/python3.6/test/test_hmac.py +0 -496
  2115. package/python3.6.2/lib/python3.6/test/test_html.py +0 -103
  2116. package/python3.6.2/lib/python3.6/test/test_htmlparser.py +0 -778
  2117. package/python3.6.2/lib/python3.6/test/test_http_cookiejar.py +0 -1772
  2118. package/python3.6.2/lib/python3.6/test/test_http_cookies.py +0 -472
  2119. package/python3.6.2/lib/python3.6/test/test_httplib.py +0 -1903
  2120. package/python3.6.2/lib/python3.6/test/test_httpservers.py +0 -1060
  2121. package/python3.6.2/lib/python3.6/test/test_idle.py +0 -23
  2122. package/python3.6.2/lib/python3.6/test/test_imaplib.py +0 -998
  2123. package/python3.6.2/lib/python3.6/test/test_imghdr.py +0 -140
  2124. package/python3.6.2/lib/python3.6/test/test_imp.py +0 -416
  2125. package/python3.6.2/lib/python3.6/test/test_import/__init__.py +0 -1199
  2126. package/python3.6.2/lib/python3.6/test/test_import/__main__.py +0 -3
  2127. package/python3.6.2/lib/python3.6/test/test_import/data/circular_imports/basic.py +0 -2
  2128. package/python3.6.2/lib/python3.6/test/test_import/data/circular_imports/basic2.py +0 -1
  2129. package/python3.6.2/lib/python3.6/test/test_import/data/circular_imports/indirect.py +0 -1
  2130. package/python3.6.2/lib/python3.6/test/test_import/data/circular_imports/rebinding.py +0 -3
  2131. package/python3.6.2/lib/python3.6/test/test_import/data/circular_imports/rebinding2.py +0 -3
  2132. package/python3.6.2/lib/python3.6/test/test_import/data/circular_imports/subpackage.py +0 -2
  2133. package/python3.6.2/lib/python3.6/test/test_import/data/circular_imports/subpkg/subpackage2.py +0 -2
  2134. package/python3.6.2/lib/python3.6/test/test_import/data/circular_imports/subpkg/util.py +0 -2
  2135. package/python3.6.2/lib/python3.6/test/test_import/data/circular_imports/util.py +0 -2
  2136. package/python3.6.2/lib/python3.6/test/test_import/data/package/__init__.py +0 -2
  2137. package/python3.6.2/lib/python3.6/test/test_import/data/package/submodule.py +0 -0
  2138. package/python3.6.2/lib/python3.6/test/test_import/data/package2/submodule1.py +0 -3
  2139. package/python3.6.2/lib/python3.6/test/test_import/data/package2/submodule2.py +0 -0
  2140. package/python3.6.2/lib/python3.6/test/test_importlib/__init__.py +0 -5
  2141. package/python3.6.2/lib/python3.6/test/test_importlib/__main__.py +0 -4
  2142. package/python3.6.2/lib/python3.6/test/test_importlib/abc.py +0 -94
  2143. package/python3.6.2/lib/python3.6/test/test_importlib/builtin/__init__.py +0 -5
  2144. package/python3.6.2/lib/python3.6/test/test_importlib/builtin/__main__.py +0 -4
  2145. package/python3.6.2/lib/python3.6/test/test_importlib/builtin/test_finder.py +0 -90
  2146. package/python3.6.2/lib/python3.6/test/test_importlib/builtin/test_loader.py +0 -108
  2147. package/python3.6.2/lib/python3.6/test/test_importlib/extension/__init__.py +0 -5
  2148. package/python3.6.2/lib/python3.6/test/test_importlib/extension/__main__.py +0 -4
  2149. package/python3.6.2/lib/python3.6/test/test_importlib/extension/test_case_sensitivity.py +0 -46
  2150. package/python3.6.2/lib/python3.6/test/test_importlib/extension/test_finder.py +0 -44
  2151. package/python3.6.2/lib/python3.6/test/test_importlib/extension/test_loader.py +0 -277
  2152. package/python3.6.2/lib/python3.6/test/test_importlib/extension/test_path_hook.py +0 -31
  2153. package/python3.6.2/lib/python3.6/test/test_importlib/frozen/__init__.py +0 -5
  2154. package/python3.6.2/lib/python3.6/test/test_importlib/frozen/__main__.py +0 -4
  2155. package/python3.6.2/lib/python3.6/test/test_importlib/frozen/test_finder.py +0 -84
  2156. package/python3.6.2/lib/python3.6/test/test_importlib/frozen/test_loader.py +0 -225
  2157. package/python3.6.2/lib/python3.6/test/test_importlib/import_/__init__.py +0 -5
  2158. package/python3.6.2/lib/python3.6/test/test_importlib/import_/__main__.py +0 -4
  2159. package/python3.6.2/lib/python3.6/test/test_importlib/import_/test___loader__.py +0 -75
  2160. package/python3.6.2/lib/python3.6/test/test_importlib/import_/test___package__.py +0 -163
  2161. package/python3.6.2/lib/python3.6/test/test_importlib/import_/test_api.py +0 -119
  2162. package/python3.6.2/lib/python3.6/test/test_importlib/import_/test_caching.py +0 -93
  2163. package/python3.6.2/lib/python3.6/test/test_importlib/import_/test_fromlist.py +0 -175
  2164. package/python3.6.2/lib/python3.6/test/test_importlib/import_/test_meta_path.py +0 -125
  2165. package/python3.6.2/lib/python3.6/test/test_importlib/import_/test_packages.py +0 -110
  2166. package/python3.6.2/lib/python3.6/test/test_importlib/import_/test_path.py +0 -257
  2167. package/python3.6.2/lib/python3.6/test/test_importlib/import_/test_relative_imports.py +0 -232
  2168. package/python3.6.2/lib/python3.6/test/test_importlib/namespace_pkgs/both_portions/foo/one.py +0 -1
  2169. package/python3.6.2/lib/python3.6/test/test_importlib/namespace_pkgs/both_portions/foo/two.py +0 -1
  2170. package/python3.6.2/lib/python3.6/test/test_importlib/namespace_pkgs/missing_directory.zip +0 -0
  2171. package/python3.6.2/lib/python3.6/test/test_importlib/namespace_pkgs/module_and_namespace_package/a_test/empty +0 -0
  2172. package/python3.6.2/lib/python3.6/test/test_importlib/namespace_pkgs/module_and_namespace_package/a_test.py +0 -1
  2173. package/python3.6.2/lib/python3.6/test/test_importlib/namespace_pkgs/nested_portion1.zip +0 -0
  2174. package/python3.6.2/lib/python3.6/test/test_importlib/namespace_pkgs/not_a_namespace_pkg/foo/__init__.py +0 -0
  2175. package/python3.6.2/lib/python3.6/test/test_importlib/namespace_pkgs/not_a_namespace_pkg/foo/one.py +0 -1
  2176. package/python3.6.2/lib/python3.6/test/test_importlib/namespace_pkgs/portion1/foo/one.py +0 -1
  2177. package/python3.6.2/lib/python3.6/test/test_importlib/namespace_pkgs/portion2/foo/two.py +0 -1
  2178. package/python3.6.2/lib/python3.6/test/test_importlib/namespace_pkgs/project1/parent/child/one.py +0 -1
  2179. package/python3.6.2/lib/python3.6/test/test_importlib/namespace_pkgs/project2/parent/child/two.py +0 -1
  2180. package/python3.6.2/lib/python3.6/test/test_importlib/namespace_pkgs/project3/parent/child/three.py +0 -1
  2181. package/python3.6.2/lib/python3.6/test/test_importlib/namespace_pkgs/top_level_portion1.zip +0 -0
  2182. package/python3.6.2/lib/python3.6/test/test_importlib/source/__init__.py +0 -5
  2183. package/python3.6.2/lib/python3.6/test/test_importlib/source/__main__.py +0 -4
  2184. package/python3.6.2/lib/python3.6/test/test_importlib/source/test_case_sensitivity.py +0 -85
  2185. package/python3.6.2/lib/python3.6/test/test_importlib/source/test_file_loader.py +0 -602
  2186. package/python3.6.2/lib/python3.6/test/test_importlib/source/test_finder.py +0 -236
  2187. package/python3.6.2/lib/python3.6/test/test_importlib/source/test_path_hook.py +0 -41
  2188. package/python3.6.2/lib/python3.6/test/test_importlib/source/test_source_encoding.py +0 -175
  2189. package/python3.6.2/lib/python3.6/test/test_importlib/test_abc.py +0 -953
  2190. package/python3.6.2/lib/python3.6/test/test_importlib/test_api.py +0 -449
  2191. package/python3.6.2/lib/python3.6/test/test_importlib/test_lazy.py +0 -145
  2192. package/python3.6.2/lib/python3.6/test/test_importlib/test_locks.py +0 -175
  2193. package/python3.6.2/lib/python3.6/test/test_importlib/test_namespace_pkgs.py +0 -321
  2194. package/python3.6.2/lib/python3.6/test/test_importlib/test_spec.py +0 -819
  2195. package/python3.6.2/lib/python3.6/test/test_importlib/test_util.py +0 -805
  2196. package/python3.6.2/lib/python3.6/test/test_importlib/test_windows.py +0 -109
  2197. package/python3.6.2/lib/python3.6/test/test_importlib/util.py +0 -388
  2198. package/python3.6.2/lib/python3.6/test/test_index.py +0 -275
  2199. package/python3.6.2/lib/python3.6/test/test_inspect.py +0 -3725
  2200. package/python3.6.2/lib/python3.6/test/test_int.py +0 -518
  2201. package/python3.6.2/lib/python3.6/test/test_int_literal.py +0 -143
  2202. package/python3.6.2/lib/python3.6/test/test_io.py +0 -4054
  2203. package/python3.6.2/lib/python3.6/test/test_ioctl.py +0 -91
  2204. package/python3.6.2/lib/python3.6/test/test_ipaddress.py +0 -1972
  2205. package/python3.6.2/lib/python3.6/test/test_isinstance.py +0 -280
  2206. package/python3.6.2/lib/python3.6/test/test_iter.py +0 -1016
  2207. package/python3.6.2/lib/python3.6/test/test_iterlen.py +0 -228
  2208. package/python3.6.2/lib/python3.6/test/test_itertools.py +0 -2340
  2209. package/python3.6.2/lib/python3.6/test/test_json/__init__.py +0 -56
  2210. package/python3.6.2/lib/python3.6/test/test_json/__main__.py +0 -4
  2211. package/python3.6.2/lib/python3.6/test/test_json/test_decode.py +0 -97
  2212. package/python3.6.2/lib/python3.6/test/test_json/test_default.py +0 -12
  2213. package/python3.6.2/lib/python3.6/test/test_json/test_dump.py +0 -68
  2214. package/python3.6.2/lib/python3.6/test/test_json/test_encode_basestring_ascii.py +0 -48
  2215. package/python3.6.2/lib/python3.6/test/test_json/test_enum.py +0 -120
  2216. package/python3.6.2/lib/python3.6/test/test_json/test_fail.py +0 -216
  2217. package/python3.6.2/lib/python3.6/test/test_json/test_float.py +0 -33
  2218. package/python3.6.2/lib/python3.6/test/test_json/test_indent.py +0 -67
  2219. package/python3.6.2/lib/python3.6/test/test_json/test_pass1.py +0 -75
  2220. package/python3.6.2/lib/python3.6/test/test_json/test_pass2.py +0 -18
  2221. package/python3.6.2/lib/python3.6/test/test_json/test_pass3.py +0 -24
  2222. package/python3.6.2/lib/python3.6/test/test_json/test_recursion.py +0 -100
  2223. package/python3.6.2/lib/python3.6/test/test_json/test_scanstring.py +0 -141
  2224. package/python3.6.2/lib/python3.6/test/test_json/test_separators.py +0 -50
  2225. package/python3.6.2/lib/python3.6/test/test_json/test_speedups.py +0 -71
  2226. package/python3.6.2/lib/python3.6/test/test_json/test_tool.py +0 -107
  2227. package/python3.6.2/lib/python3.6/test/test_json/test_unicode.py +0 -98
  2228. package/python3.6.2/lib/python3.6/test/test_keyword.py +0 -138
  2229. package/python3.6.2/lib/python3.6/test/test_keywordonlyarg.py +0 -189
  2230. package/python3.6.2/lib/python3.6/test/test_kqueue.py +0 -263
  2231. package/python3.6.2/lib/python3.6/test/test_largefile.py +0 -180
  2232. package/python3.6.2/lib/python3.6/test/test_lib2to3.py +0 -5
  2233. package/python3.6.2/lib/python3.6/test/test_linecache.py +0 -242
  2234. package/python3.6.2/lib/python3.6/test/test_list.py +0 -155
  2235. package/python3.6.2/lib/python3.6/test/test_listcomps.py +0 -148
  2236. package/python3.6.2/lib/python3.6/test/test_locale.py +0 -587
  2237. package/python3.6.2/lib/python3.6/test/test_logging.py +0 -4442
  2238. package/python3.6.2/lib/python3.6/test/test_long.py +0 -1322
  2239. package/python3.6.2/lib/python3.6/test/test_longexp.py +0 -10
  2240. package/python3.6.2/lib/python3.6/test/test_lzma.py +0 -1764
  2241. package/python3.6.2/lib/python3.6/test/test_macpath.py +0 -149
  2242. package/python3.6.2/lib/python3.6/test/test_macurl2path.py +0 -31
  2243. package/python3.6.2/lib/python3.6/test/test_mailbox.py +0 -2288
  2244. package/python3.6.2/lib/python3.6/test/test_mailcap.py +0 -239
  2245. package/python3.6.2/lib/python3.6/test/test_marshal.py +0 -556
  2246. package/python3.6.2/lib/python3.6/test/test_math.py +0 -1422
  2247. package/python3.6.2/lib/python3.6/test/test_memoryio.py +0 -842
  2248. package/python3.6.2/lib/python3.6/test/test_memoryview.py +0 -537
  2249. package/python3.6.2/lib/python3.6/test/test_metaclass.py +0 -265
  2250. package/python3.6.2/lib/python3.6/test/test_mimetypes.py +0 -111
  2251. package/python3.6.2/lib/python3.6/test/test_minidom.py +0 -1574
  2252. package/python3.6.2/lib/python3.6/test/test_mmap.py +0 -803
  2253. package/python3.6.2/lib/python3.6/test/test_module.py +0 -244
  2254. package/python3.6.2/lib/python3.6/test/test_modulefinder.py +0 -337
  2255. package/python3.6.2/lib/python3.6/test/test_msilib.py +0 -99
  2256. package/python3.6.2/lib/python3.6/test/test_multibytecodec.py +0 -270
  2257. package/python3.6.2/lib/python3.6/test/test_multiprocessing_fork.py +0 -13
  2258. package/python3.6.2/lib/python3.6/test/test_multiprocessing_forkserver.py +0 -12
  2259. package/python3.6.2/lib/python3.6/test/test_multiprocessing_main_handling.py +0 -290
  2260. package/python3.6.2/lib/python3.6/test/test_multiprocessing_spawn.py +0 -12
  2261. package/python3.6.2/lib/python3.6/test/test_netrc.py +0 -133
  2262. package/python3.6.2/lib/python3.6/test/test_nis.py +0 -39
  2263. package/python3.6.2/lib/python3.6/test/test_nntplib.py +0 -1581
  2264. package/python3.6.2/lib/python3.6/test/test_normalization.py +0 -108
  2265. package/python3.6.2/lib/python3.6/test/test_ntpath.py +0 -539
  2266. package/python3.6.2/lib/python3.6/test/test_numeric_tower.py +0 -202
  2267. package/python3.6.2/lib/python3.6/test/test_opcodes.py +0 -135
  2268. package/python3.6.2/lib/python3.6/test/test_openpty.py +0 -21
  2269. package/python3.6.2/lib/python3.6/test/test_operator.py +0 -609
  2270. package/python3.6.2/lib/python3.6/test/test_optparse.py +0 -1664
  2271. package/python3.6.2/lib/python3.6/test/test_ordered_dict.py +0 -787
  2272. package/python3.6.2/lib/python3.6/test/test_os.py +0 -3548
  2273. package/python3.6.2/lib/python3.6/test/test_ossaudiodev.py +0 -202
  2274. package/python3.6.2/lib/python3.6/test/test_osx_env.py +0 -34
  2275. package/python3.6.2/lib/python3.6/test/test_parser.py +0 -905
  2276. package/python3.6.2/lib/python3.6/test/test_pathlib.py +0 -2252
  2277. package/python3.6.2/lib/python3.6/test/test_pdb.py +0 -1124
  2278. package/python3.6.2/lib/python3.6/test/test_peepholer.py +0 -325
  2279. package/python3.6.2/lib/python3.6/test/test_pickle.py +0 -514
  2280. package/python3.6.2/lib/python3.6/test/test_pickletools.py +0 -99
  2281. package/python3.6.2/lib/python3.6/test/test_pipes.py +0 -203
  2282. package/python3.6.2/lib/python3.6/test/test_pkg.py +0 -295
  2283. package/python3.6.2/lib/python3.6/test/test_pkgimport.py +0 -80
  2284. package/python3.6.2/lib/python3.6/test/test_pkgutil.py +0 -491
  2285. package/python3.6.2/lib/python3.6/test/test_platform.py +0 -370
  2286. package/python3.6.2/lib/python3.6/test/test_plistlib.py +0 -662
  2287. package/python3.6.2/lib/python3.6/test/test_poll.py +0 -238
  2288. package/python3.6.2/lib/python3.6/test/test_popen.py +0 -65
  2289. package/python3.6.2/lib/python3.6/test/test_poplib.py +0 -520
  2290. package/python3.6.2/lib/python3.6/test/test_posix.py +0 -1298
  2291. package/python3.6.2/lib/python3.6/test/test_posixpath.py +0 -680
  2292. package/python3.6.2/lib/python3.6/test/test_pow.py +0 -123
  2293. package/python3.6.2/lib/python3.6/test/test_pprint.py +0 -1012
  2294. package/python3.6.2/lib/python3.6/test/test_print.py +0 -193
  2295. package/python3.6.2/lib/python3.6/test/test_profile.py +0 -187
  2296. package/python3.6.2/lib/python3.6/test/test_property.py +0 -272
  2297. package/python3.6.2/lib/python3.6/test/test_pstats.py +0 -38
  2298. package/python3.6.2/lib/python3.6/test/test_pty.py +0 -316
  2299. package/python3.6.2/lib/python3.6/test/test_pulldom.py +0 -342
  2300. package/python3.6.2/lib/python3.6/test/test_pwd.py +0 -125
  2301. package/python3.6.2/lib/python3.6/test/test_py_compile.py +0 -127
  2302. package/python3.6.2/lib/python3.6/test/test_pyclbr.py +0 -176
  2303. package/python3.6.2/lib/python3.6/test/test_pydoc.py +0 -1107
  2304. package/python3.6.2/lib/python3.6/test/test_pyexpat.py +0 -733
  2305. package/python3.6.2/lib/python3.6/test/test_queue.py +0 -362
  2306. package/python3.6.2/lib/python3.6/test/test_quopri.py +0 -210
  2307. package/python3.6.2/lib/python3.6/test/test_raise.py +0 -419
  2308. package/python3.6.2/lib/python3.6/test/test_random.py +0 -939
  2309. package/python3.6.2/lib/python3.6/test/test_range.py +0 -693
  2310. package/python3.6.2/lib/python3.6/test/test_re.py +0 -2087
  2311. package/python3.6.2/lib/python3.6/test/test_readline.py +0 -309
  2312. package/python3.6.2/lib/python3.6/test/test_regrtest.py +0 -967
  2313. package/python3.6.2/lib/python3.6/test/test_repl.py +0 -62
  2314. package/python3.6.2/lib/python3.6/test/test_reprlib.py +0 -405
  2315. package/python3.6.2/lib/python3.6/test/test_resource.py +0 -180
  2316. package/python3.6.2/lib/python3.6/test/test_richcmp.py +0 -355
  2317. package/python3.6.2/lib/python3.6/test/test_rlcompleter.py +0 -141
  2318. package/python3.6.2/lib/python3.6/test/test_robotparser.py +0 -335
  2319. package/python3.6.2/lib/python3.6/test/test_runpy.py +0 -749
  2320. package/python3.6.2/lib/python3.6/test/test_sax.py +0 -1273
  2321. package/python3.6.2/lib/python3.6/test/test_sched.py +0 -204
  2322. package/python3.6.2/lib/python3.6/test/test_scope.py +0 -761
  2323. package/python3.6.2/lib/python3.6/test/test_script_helper.py +0 -110
  2324. package/python3.6.2/lib/python3.6/test/test_secrets.py +0 -124
  2325. package/python3.6.2/lib/python3.6/test/test_select.py +0 -82
  2326. package/python3.6.2/lib/python3.6/test/test_selectors.py +0 -526
  2327. package/python3.6.2/lib/python3.6/test/test_set.py +0 -1903
  2328. package/python3.6.2/lib/python3.6/test/test_setcomps.py +0 -151
  2329. package/python3.6.2/lib/python3.6/test/test_shelve.py +0 -228
  2330. package/python3.6.2/lib/python3.6/test/test_shlex.py +0 -318
  2331. package/python3.6.2/lib/python3.6/test/test_shutil.py +0 -1925
  2332. package/python3.6.2/lib/python3.6/test/test_signal.py +0 -1093
  2333. package/python3.6.2/lib/python3.6/test/test_site.py +0 -595
  2334. package/python3.6.2/lib/python3.6/test/test_slice.py +0 -255
  2335. package/python3.6.2/lib/python3.6/test/test_smtpd.py +0 -1013
  2336. package/python3.6.2/lib/python3.6/test/test_smtplib.py +0 -1292
  2337. package/python3.6.2/lib/python3.6/test/test_smtpnet.py +0 -83
  2338. package/python3.6.2/lib/python3.6/test/test_sndhdr.py +0 -37
  2339. package/python3.6.2/lib/python3.6/test/test_socket.py +0 -5648
  2340. package/python3.6.2/lib/python3.6/test/test_socketserver.py +0 -505
  2341. package/python3.6.2/lib/python3.6/test/test_sort.py +0 -265
  2342. package/python3.6.2/lib/python3.6/test/test_source_encoding.py +0 -225
  2343. package/python3.6.2/lib/python3.6/test/test_spwd.py +0 -75
  2344. package/python3.6.2/lib/python3.6/test/test_sqlite.py +0 -24
  2345. package/python3.6.2/lib/python3.6/test/test_ssl.py +0 -3663
  2346. package/python3.6.2/lib/python3.6/test/test_startfile.py +0 -34
  2347. package/python3.6.2/lib/python3.6/test/test_stat.py +0 -234
  2348. package/python3.6.2/lib/python3.6/test/test_statistics.py +0 -1992
  2349. package/python3.6.2/lib/python3.6/test/test_strftime.py +0 -206
  2350. package/python3.6.2/lib/python3.6/test/test_string.py +0 -439
  2351. package/python3.6.2/lib/python3.6/test/test_string_literals.py +0 -249
  2352. package/python3.6.2/lib/python3.6/test/test_stringprep.py +0 -92
  2353. package/python3.6.2/lib/python3.6/test/test_strptime.py +0 -673
  2354. package/python3.6.2/lib/python3.6/test/test_strtod.py +0 -433
  2355. package/python3.6.2/lib/python3.6/test/test_struct.py +0 -756
  2356. package/python3.6.2/lib/python3.6/test/test_structmembers.py +0 -144
  2357. package/python3.6.2/lib/python3.6/test/test_structseq.py +0 -126
  2358. package/python3.6.2/lib/python3.6/test/test_subclassinit.py +0 -284
  2359. package/python3.6.2/lib/python3.6/test/test_subprocess.py +0 -3005
  2360. package/python3.6.2/lib/python3.6/test/test_sunau.py +0 -121
  2361. package/python3.6.2/lib/python3.6/test/test_sundry.py +0 -57
  2362. package/python3.6.2/lib/python3.6/test/test_super.py +0 -347
  2363. package/python3.6.2/lib/python3.6/test/test_support.py +0 -459
  2364. package/python3.6.2/lib/python3.6/test/test_symbol.py +0 -54
  2365. package/python3.6.2/lib/python3.6/test/test_symtable.py +0 -193
  2366. package/python3.6.2/lib/python3.6/test/test_syntax.py +0 -618
  2367. package/python3.6.2/lib/python3.6/test/test_sys.py +0 -1270
  2368. package/python3.6.2/lib/python3.6/test/test_sys_setprofile.py +0 -376
  2369. package/python3.6.2/lib/python3.6/test/test_sys_settrace.py +0 -854
  2370. package/python3.6.2/lib/python3.6/test/test_sysconfig.py +0 -445
  2371. package/python3.6.2/lib/python3.6/test/test_syslog.py +0 -40
  2372. package/python3.6.2/lib/python3.6/test/test_tarfile.py +0 -2635
  2373. package/python3.6.2/lib/python3.6/test/test_tcl.py +0 -715
  2374. package/python3.6.2/lib/python3.6/test/test_telnetlib.py +0 -401
  2375. package/python3.6.2/lib/python3.6/test/test_tempfile.py +0 -1458
  2376. package/python3.6.2/lib/python3.6/test/test_textwrap.py +0 -981
  2377. package/python3.6.2/lib/python3.6/test/test_thread.py +0 -269
  2378. package/python3.6.2/lib/python3.6/test/test_threaded_import.py +0 -254
  2379. package/python3.6.2/lib/python3.6/test/test_threadedtempfile.py +0 -62
  2380. package/python3.6.2/lib/python3.6/test/test_threading.py +0 -1170
  2381. package/python3.6.2/lib/python3.6/test/test_threading_local.py +0 -220
  2382. package/python3.6.2/lib/python3.6/test/test_threadsignals.py +0 -227
  2383. package/python3.6.2/lib/python3.6/test/test_time.py +0 -1000
  2384. package/python3.6.2/lib/python3.6/test/test_timeit.py +0 -381
  2385. package/python3.6.2/lib/python3.6/test/test_timeout.py +0 -303
  2386. package/python3.6.2/lib/python3.6/test/test_tix.py +0 -32
  2387. package/python3.6.2/lib/python3.6/test/test_tk.py +0 -15
  2388. package/python3.6.2/lib/python3.6/test/test_tokenize.py +0 -1590
  2389. package/python3.6.2/lib/python3.6/test/test_tools/__init__.py +0 -24
  2390. package/python3.6.2/lib/python3.6/test/test_tools/__main__.py +0 -4
  2391. package/python3.6.2/lib/python3.6/test/test_tools/test_fixcid.py +0 -92
  2392. package/python3.6.2/lib/python3.6/test/test_tools/test_gprof2html.py +0 -35
  2393. package/python3.6.2/lib/python3.6/test/test_tools/test_i18n.py +0 -72
  2394. package/python3.6.2/lib/python3.6/test/test_tools/test_md5sum.py +0 -76
  2395. package/python3.6.2/lib/python3.6/test/test_tools/test_pdeps.py +0 -32
  2396. package/python3.6.2/lib/python3.6/test/test_tools/test_pindent.py +0 -339
  2397. package/python3.6.2/lib/python3.6/test/test_tools/test_reindent.py +0 -35
  2398. package/python3.6.2/lib/python3.6/test/test_tools/test_sundry.py +0 -53
  2399. package/python3.6.2/lib/python3.6/test/test_tools/test_unparse.py +0 -313
  2400. package/python3.6.2/lib/python3.6/test/test_trace.py +0 -391
  2401. package/python3.6.2/lib/python3.6/test/test_traceback.py +0 -1111
  2402. package/python3.6.2/lib/python3.6/test/test_tracemalloc.py +0 -994
  2403. package/python3.6.2/lib/python3.6/test/test_ttk_guionly.py +0 -34
  2404. package/python3.6.2/lib/python3.6/test/test_ttk_textonly.py +0 -13
  2405. package/python3.6.2/lib/python3.6/test/test_tuple.py +0 -221
  2406. package/python3.6.2/lib/python3.6/test/test_turtle.py +0 -436
  2407. package/python3.6.2/lib/python3.6/test/test_typechecks.py +0 -71
  2408. package/python3.6.2/lib/python3.6/test/test_types.py +0 -1550
  2409. package/python3.6.2/lib/python3.6/test/test_typing.py +0 -2577
  2410. package/python3.6.2/lib/python3.6/test/test_ucn.py +0 -237
  2411. package/python3.6.2/lib/python3.6/test/test_unary.py +0 -53
  2412. package/python3.6.2/lib/python3.6/test/test_unicode.py +0 -2894
  2413. package/python3.6.2/lib/python3.6/test/test_unicode_file.py +0 -140
  2414. package/python3.6.2/lib/python3.6/test/test_unicode_file_functions.py +0 -195
  2415. package/python3.6.2/lib/python3.6/test/test_unicode_identifiers.py +0 -31
  2416. package/python3.6.2/lib/python3.6/test/test_unicodedata.py +0 -316
  2417. package/python3.6.2/lib/python3.6/test/test_unittest.py +0 -16
  2418. package/python3.6.2/lib/python3.6/test/test_univnewlines.py +0 -123
  2419. package/python3.6.2/lib/python3.6/test/test_unpack.py +0 -151
  2420. package/python3.6.2/lib/python3.6/test/test_unpack_ex.py +0 -365
  2421. package/python3.6.2/lib/python3.6/test/test_urllib.py +0 -1572
  2422. package/python3.6.2/lib/python3.6/test/test_urllib2.py +0 -1930
  2423. package/python3.6.2/lib/python3.6/test/test_urllib2_localnet.py +0 -679
  2424. package/python3.6.2/lib/python3.6/test/test_urllib2net.py +0 -329
  2425. package/python3.6.2/lib/python3.6/test/test_urllib_response.py +0 -59
  2426. package/python3.6.2/lib/python3.6/test/test_urllibnet.py +0 -218
  2427. package/python3.6.2/lib/python3.6/test/test_urlparse.py +0 -1122
  2428. package/python3.6.2/lib/python3.6/test/test_userdict.py +0 -220
  2429. package/python3.6.2/lib/python3.6/test/test_userlist.py +0 -63
  2430. package/python3.6.2/lib/python3.6/test/test_userstring.py +0 -44
  2431. package/python3.6.2/lib/python3.6/test/test_utf8source.py +0 -43
  2432. package/python3.6.2/lib/python3.6/test/test_uu.py +0 -260
  2433. package/python3.6.2/lib/python3.6/test/test_uuid.py +0 -511
  2434. package/python3.6.2/lib/python3.6/test/test_venv.py +0 -433
  2435. package/python3.6.2/lib/python3.6/test/test_wait3.py +0 -38
  2436. package/python3.6.2/lib/python3.6/test/test_wait4.py +0 -39
  2437. package/python3.6.2/lib/python3.6/test/test_warnings/__init__.py +0 -1216
  2438. package/python3.6.2/lib/python3.6/test/test_warnings/__main__.py +0 -3
  2439. package/python3.6.2/lib/python3.6/test/test_warnings/data/import_warning.py +0 -3
  2440. package/python3.6.2/lib/python3.6/test/test_warnings/data/stacklevel.py +0 -9
  2441. package/python3.6.2/lib/python3.6/test/test_wave.py +0 -113
  2442. package/python3.6.2/lib/python3.6/test/test_weakref.py +0 -1952
  2443. package/python3.6.2/lib/python3.6/test/test_weakset.py +0 -439
  2444. package/python3.6.2/lib/python3.6/test/test_webbrowser.py +0 -217
  2445. package/python3.6.2/lib/python3.6/test/test_winconsoleio.py +0 -191
  2446. package/python3.6.2/lib/python3.6/test/test_winreg.py +0 -498
  2447. package/python3.6.2/lib/python3.6/test/test_winsound.py +0 -150
  2448. package/python3.6.2/lib/python3.6/test/test_with.py +0 -746
  2449. package/python3.6.2/lib/python3.6/test/test_wsgiref.py +0 -785
  2450. package/python3.6.2/lib/python3.6/test/test_xdrlib.py +0 -77
  2451. package/python3.6.2/lib/python3.6/test/test_xml_dom_minicompat.py +0 -138
  2452. package/python3.6.2/lib/python3.6/test/test_xml_etree.py +0 -3166
  2453. package/python3.6.2/lib/python3.6/test/test_xml_etree_c.py +0 -188
  2454. package/python3.6.2/lib/python3.6/test/test_xmlrpc.py +0 -1415
  2455. package/python3.6.2/lib/python3.6/test/test_xmlrpc_net.py +0 -32
  2456. package/python3.6.2/lib/python3.6/test/test_yield_from.py +0 -1052
  2457. package/python3.6.2/lib/python3.6/test/test_zipapp.py +0 -349
  2458. package/python3.6.2/lib/python3.6/test/test_zipfile.py +0 -2241
  2459. package/python3.6.2/lib/python3.6/test/test_zipfile64.py +0 -155
  2460. package/python3.6.2/lib/python3.6/test/test_zipimport.py +0 -759
  2461. package/python3.6.2/lib/python3.6/test/test_zipimport_support.py +0 -244
  2462. package/python3.6.2/lib/python3.6/test/test_zlib.py +0 -898
  2463. package/python3.6.2/lib/python3.6/test/testcodec.py +0 -48
  2464. package/python3.6.2/lib/python3.6/test/testtar.tar +0 -0
  2465. package/python3.6.2/lib/python3.6/test/tf_inherit_check.py +0 -27
  2466. package/python3.6.2/lib/python3.6/test/threaded_import_hangers.py +0 -45
  2467. package/python3.6.2/lib/python3.6/test/time_hashlib.py +0 -88
  2468. package/python3.6.2/lib/python3.6/test/tokenize_tests-latin1-coding-cookie-and-utf8-bom-sig.txt +0 -13
  2469. package/python3.6.2/lib/python3.6/test/tokenize_tests-no-coding-cookie-and-utf8-bom-sig-only.txt +0 -11
  2470. package/python3.6.2/lib/python3.6/test/tokenize_tests-utf8-coding-cookie-and-no-utf8-bom-sig.txt +0 -13
  2471. package/python3.6.2/lib/python3.6/test/tokenize_tests-utf8-coding-cookie-and-utf8-bom-sig.txt +0 -12
  2472. package/python3.6.2/lib/python3.6/test/tokenize_tests.txt +0 -189
  2473. package/python3.6.2/lib/python3.6/test/tracedmodules/__init__.py +0 -4
  2474. package/python3.6.2/lib/python3.6/test/tracedmodules/testmod.py +0 -9
  2475. package/python3.6.2/lib/python3.6/test/win_console_handler.py +0 -49
  2476. package/python3.6.2/lib/python3.6/test/wrongcert.pem +0 -32
  2477. package/python3.6.2/lib/python3.6/test/xmltestdata/expat224_utf8_bug.xml +0 -2
  2478. package/python3.6.2/lib/python3.6/test/xmltestdata/simple-ns.xml +0 -7
  2479. package/python3.6.2/lib/python3.6/test/xmltestdata/simple.xml +0 -6
  2480. package/python3.6.2/lib/python3.6/test/xmltestdata/test.xml +0 -115
  2481. package/python3.6.2/lib/python3.6/test/xmltestdata/test.xml.out +0 -115
  2482. package/python3.6.2/lib/python3.6/test/xmltests.py +0 -21
  2483. package/python3.6.2/lib/python3.6/test/zip_cp437_header.zip +0 -0
  2484. package/python3.6.2/lib/python3.6/test/zipdir.zip +0 -0
  2485. package/python3.6.2/lib/python3.6/textwrap.py +0 -488
  2486. package/python3.6.2/lib/python3.6/this.py +0 -28
  2487. package/python3.6.2/lib/python3.6/threading.py +0 -1357
  2488. package/python3.6.2/lib/python3.6/timeit.py +0 -362
  2489. package/python3.6.2/lib/python3.6/tkinter/__init__.py +0 -4002
  2490. package/python3.6.2/lib/python3.6/tkinter/__main__.py +0 -7
  2491. package/python3.6.2/lib/python3.6/tkinter/colorchooser.py +0 -72
  2492. package/python3.6.2/lib/python3.6/tkinter/commondialog.py +0 -55
  2493. package/python3.6.2/lib/python3.6/tkinter/constants.py +0 -110
  2494. package/python3.6.2/lib/python3.6/tkinter/dialog.py +0 -46
  2495. package/python3.6.2/lib/python3.6/tkinter/dnd.py +0 -321
  2496. package/python3.6.2/lib/python3.6/tkinter/filedialog.py +0 -479
  2497. package/python3.6.2/lib/python3.6/tkinter/font.py +0 -232
  2498. package/python3.6.2/lib/python3.6/tkinter/messagebox.py +0 -134
  2499. package/python3.6.2/lib/python3.6/tkinter/scrolledtext.py +0 -54
  2500. package/python3.6.2/lib/python3.6/tkinter/simpledialog.py +0 -423
  2501. package/python3.6.2/lib/python3.6/tkinter/test/README +0 -14
  2502. package/python3.6.2/lib/python3.6/tkinter/test/__init__.py +0 -0
  2503. package/python3.6.2/lib/python3.6/tkinter/test/runtktests.py +0 -69
  2504. package/python3.6.2/lib/python3.6/tkinter/test/support.py +0 -105
  2505. package/python3.6.2/lib/python3.6/tkinter/test/test_tkinter/__init__.py +0 -0
  2506. package/python3.6.2/lib/python3.6/tkinter/test/test_tkinter/test_font.py +0 -96
  2507. package/python3.6.2/lib/python3.6/tkinter/test/test_tkinter/test_geometry_managers.py +0 -906
  2508. package/python3.6.2/lib/python3.6/tkinter/test/test_tkinter/test_images.py +0 -327
  2509. package/python3.6.2/lib/python3.6/tkinter/test/test_tkinter/test_loadtk.py +0 -46
  2510. package/python3.6.2/lib/python3.6/tkinter/test/test_tkinter/test_misc.py +0 -55
  2511. package/python3.6.2/lib/python3.6/tkinter/test/test_tkinter/test_text.py +0 -47
  2512. package/python3.6.2/lib/python3.6/tkinter/test/test_tkinter/test_variables.py +0 -310
  2513. package/python3.6.2/lib/python3.6/tkinter/test/test_tkinter/test_widgets.py +0 -1204
  2514. package/python3.6.2/lib/python3.6/tkinter/test/test_ttk/__init__.py +0 -0
  2515. package/python3.6.2/lib/python3.6/tkinter/test/test_ttk/test_extensions.py +0 -323
  2516. package/python3.6.2/lib/python3.6/tkinter/test/test_ttk/test_functions.py +0 -461
  2517. package/python3.6.2/lib/python3.6/tkinter/test/test_ttk/test_style.py +0 -92
  2518. package/python3.6.2/lib/python3.6/tkinter/test/test_ttk/test_widgets.py +0 -1707
  2519. package/python3.6.2/lib/python3.6/tkinter/test/widget_tests.py +0 -548
  2520. package/python3.6.2/lib/python3.6/tkinter/tix.py +0 -1946
  2521. package/python3.6.2/lib/python3.6/tkinter/ttk.py +0 -1655
  2522. package/python3.6.2/lib/python3.6/token.py +0 -143
  2523. package/python3.6.2/lib/python3.6/tokenize.py +0 -793
  2524. package/python3.6.2/lib/python3.6/trace.py +0 -742
  2525. package/python3.6.2/lib/python3.6/traceback.py +0 -600
  2526. package/python3.6.2/lib/python3.6/tracemalloc.py +0 -524
  2527. package/python3.6.2/lib/python3.6/tty.py +0 -36
  2528. package/python3.6.2/lib/python3.6/turtle.py +0 -4139
  2529. package/python3.6.2/lib/python3.6/turtledemo/__init__.py +0 -14
  2530. package/python3.6.2/lib/python3.6/turtledemo/__main__.py +0 -386
  2531. package/python3.6.2/lib/python3.6/turtledemo/bytedesign.py +0 -161
  2532. package/python3.6.2/lib/python3.6/turtledemo/chaos.py +0 -59
  2533. package/python3.6.2/lib/python3.6/turtledemo/clock.py +0 -132
  2534. package/python3.6.2/lib/python3.6/turtledemo/colormixer.py +0 -58
  2535. package/python3.6.2/lib/python3.6/turtledemo/forest.py +0 -108
  2536. package/python3.6.2/lib/python3.6/turtledemo/fractalcurves.py +0 -138
  2537. package/python3.6.2/lib/python3.6/turtledemo/lindenmayer.py +0 -119
  2538. package/python3.6.2/lib/python3.6/turtledemo/minimal_hanoi.py +0 -79
  2539. package/python3.6.2/lib/python3.6/turtledemo/nim.py +0 -226
  2540. package/python3.6.2/lib/python3.6/turtledemo/paint.py +0 -54
  2541. package/python3.6.2/lib/python3.6/turtledemo/peace.py +0 -61
  2542. package/python3.6.2/lib/python3.6/turtledemo/penrose.py +0 -181
  2543. package/python3.6.2/lib/python3.6/turtledemo/planet_and_moon.py +0 -111
  2544. package/python3.6.2/lib/python3.6/turtledemo/round_dance.py +0 -86
  2545. package/python3.6.2/lib/python3.6/turtledemo/sorting_animate.py +0 -204
  2546. package/python3.6.2/lib/python3.6/turtledemo/tree.py +0 -63
  2547. package/python3.6.2/lib/python3.6/turtledemo/turtle.cfg +0 -10
  2548. package/python3.6.2/lib/python3.6/turtledemo/two_canvases.py +0 -54
  2549. package/python3.6.2/lib/python3.6/turtledemo/wikipedia.py +0 -65
  2550. package/python3.6.2/lib/python3.6/turtledemo/yinyang.py +0 -49
  2551. package/python3.6.2/lib/python3.6/types.py +0 -266
  2552. package/python3.6.2/lib/python3.6/typing.py +0 -2403
  2553. package/python3.6.2/lib/python3.6/unittest/__init__.py +0 -78
  2554. package/python3.6.2/lib/python3.6/unittest/__main__.py +0 -18
  2555. package/python3.6.2/lib/python3.6/unittest/case.py +0 -1429
  2556. package/python3.6.2/lib/python3.6/unittest/loader.py +0 -508
  2557. package/python3.6.2/lib/python3.6/unittest/main.py +0 -260
  2558. package/python3.6.2/lib/python3.6/unittest/mock.py +0 -2407
  2559. package/python3.6.2/lib/python3.6/unittest/result.py +0 -216
  2560. package/python3.6.2/lib/python3.6/unittest/runner.py +0 -221
  2561. package/python3.6.2/lib/python3.6/unittest/signals.py +0 -71
  2562. package/python3.6.2/lib/python3.6/unittest/suite.py +0 -321
  2563. package/python3.6.2/lib/python3.6/unittest/test/__init__.py +0 -22
  2564. package/python3.6.2/lib/python3.6/unittest/test/__main__.py +0 -18
  2565. package/python3.6.2/lib/python3.6/unittest/test/_test_warnings.py +0 -73
  2566. package/python3.6.2/lib/python3.6/unittest/test/dummy.py +0 -1
  2567. package/python3.6.2/lib/python3.6/unittest/test/support.py +0 -138
  2568. package/python3.6.2/lib/python3.6/unittest/test/test_assertions.py +0 -411
  2569. package/python3.6.2/lib/python3.6/unittest/test/test_break.py +0 -291
  2570. package/python3.6.2/lib/python3.6/unittest/test/test_case.py +0 -1833
  2571. package/python3.6.2/lib/python3.6/unittest/test/test_discovery.py +0 -872
  2572. package/python3.6.2/lib/python3.6/unittest/test/test_functiontestcase.py +0 -148
  2573. package/python3.6.2/lib/python3.6/unittest/test/test_loader.py +0 -1529
  2574. package/python3.6.2/lib/python3.6/unittest/test/test_program.py +0 -414
  2575. package/python3.6.2/lib/python3.6/unittest/test/test_result.py +0 -695
  2576. package/python3.6.2/lib/python3.6/unittest/test/test_runner.py +0 -353
  2577. package/python3.6.2/lib/python3.6/unittest/test/test_setups.py +0 -507
  2578. package/python3.6.2/lib/python3.6/unittest/test/test_skipping.py +0 -260
  2579. package/python3.6.2/lib/python3.6/unittest/test/test_suite.py +0 -447
  2580. package/python3.6.2/lib/python3.6/unittest/test/testmock/__init__.py +0 -17
  2581. package/python3.6.2/lib/python3.6/unittest/test/testmock/__main__.py +0 -18
  2582. package/python3.6.2/lib/python3.6/unittest/test/testmock/support.py +0 -21
  2583. package/python3.6.2/lib/python3.6/unittest/test/testmock/testcallable.py +0 -151
  2584. package/python3.6.2/lib/python3.6/unittest/test/testmock/testhelpers.py +0 -946
  2585. package/python3.6.2/lib/python3.6/unittest/test/testmock/testmagicmethods.py +0 -468
  2586. package/python3.6.2/lib/python3.6/unittest/test/testmock/testmock.py +0 -1569
  2587. package/python3.6.2/lib/python3.6/unittest/test/testmock/testpatch.py +0 -1853
  2588. package/python3.6.2/lib/python3.6/unittest/test/testmock/testsentinel.py +0 -28
  2589. package/python3.6.2/lib/python3.6/unittest/test/testmock/testwith.py +0 -301
  2590. package/python3.6.2/lib/python3.6/unittest/util.py +0 -177
  2591. package/python3.6.2/lib/python3.6/urllib/__init__.py +0 -0
  2592. package/python3.6.2/lib/python3.6/urllib/error.py +0 -77
  2593. package/python3.6.2/lib/python3.6/urllib/parse.py +0 -1021
  2594. package/python3.6.2/lib/python3.6/urllib/request.py +0 -2739
  2595. package/python3.6.2/lib/python3.6/urllib/response.py +0 -80
  2596. package/python3.6.2/lib/python3.6/urllib/robotparser.py +0 -250
  2597. package/python3.6.2/lib/python3.6/uu.py +0 -199
  2598. package/python3.6.2/lib/python3.6/uuid.py +0 -629
  2599. package/python3.6.2/lib/python3.6/venv/__init__.py +0 -425
  2600. package/python3.6.2/lib/python3.6/venv/__main__.py +0 -10
  2601. package/python3.6.2/lib/python3.6/venv/scripts/nt/Activate.ps1 +0 -51
  2602. package/python3.6.2/lib/python3.6/venv/scripts/nt/activate.bat +0 -32
  2603. package/python3.6.2/lib/python3.6/venv/scripts/nt/deactivate.bat +0 -21
  2604. package/python3.6.2/lib/python3.6/warnings.py +0 -526
  2605. package/python3.6.2/lib/python3.6/wave.py +0 -505
  2606. package/python3.6.2/lib/python3.6/weakref.py +0 -632
  2607. package/python3.6.2/lib/python3.6/webbrowser.py +0 -664
  2608. package/python3.6.2/lib/python3.6/wsgiref/__init__.py +0 -23
  2609. package/python3.6.2/lib/python3.6/wsgiref/handlers.py +0 -557
  2610. package/python3.6.2/lib/python3.6/wsgiref/headers.py +0 -184
  2611. package/python3.6.2/lib/python3.6/wsgiref/simple_server.py +0 -164
  2612. package/python3.6.2/lib/python3.6/wsgiref/util.py +0 -165
  2613. package/python3.6.2/lib/python3.6/wsgiref/validate.py +0 -443
  2614. package/python3.6.2/lib/python3.6/xdrlib.py +0 -241
  2615. package/python3.6.2/lib/python3.6/xml/__init__.py +0 -20
  2616. package/python3.6.2/lib/python3.6/xml/dom/NodeFilter.py +0 -27
  2617. package/python3.6.2/lib/python3.6/xml/dom/__init__.py +0 -140
  2618. package/python3.6.2/lib/python3.6/xml/dom/domreg.py +0 -97
  2619. package/python3.6.2/lib/python3.6/xml/dom/expatbuilder.py +0 -965
  2620. package/python3.6.2/lib/python3.6/xml/dom/minicompat.py +0 -109
  2621. package/python3.6.2/lib/python3.6/xml/dom/minidom.py +0 -1981
  2622. package/python3.6.2/lib/python3.6/xml/dom/pulldom.py +0 -342
  2623. package/python3.6.2/lib/python3.6/xml/dom/xmlbuilder.py +0 -410
  2624. package/python3.6.2/lib/python3.6/xml/etree/ElementInclude.py +0 -143
  2625. package/python3.6.2/lib/python3.6/xml/etree/ElementPath.py +0 -314
  2626. package/python3.6.2/lib/python3.6/xml/etree/ElementTree.py +0 -1656
  2627. package/python3.6.2/lib/python3.6/xml/etree/__init__.py +0 -33
  2628. package/python3.6.2/lib/python3.6/xml/etree/cElementTree.py +0 -3
  2629. package/python3.6.2/lib/python3.6/xml/parsers/__init__.py +0 -8
  2630. package/python3.6.2/lib/python3.6/xml/parsers/expat.py +0 -8
  2631. package/python3.6.2/lib/python3.6/xml/sax/__init__.py +0 -107
  2632. package/python3.6.2/lib/python3.6/xml/sax/_exceptions.py +0 -131
  2633. package/python3.6.2/lib/python3.6/xml/sax/expatreader.py +0 -446
  2634. package/python3.6.2/lib/python3.6/xml/sax/handler.py +0 -342
  2635. package/python3.6.2/lib/python3.6/xml/sax/saxutils.py +0 -368
  2636. package/python3.6.2/lib/python3.6/xml/sax/xmlreader.py +0 -380
  2637. package/python3.6.2/lib/python3.6/xmlrpc/__init__.py +0 -1
  2638. package/python3.6.2/lib/python3.6/xmlrpc/client.py +0 -1518
  2639. package/python3.6.2/lib/python3.6/xmlrpc/server.py +0 -1002
  2640. package/python3.6.2/lib/python3.6/zipapp.py +0 -201
  2641. package/python3.6.2/lib/python3.6/zipfile.py +0 -2036
@@ -1,4458 +0,0 @@
1
- #
2
- # Unit tests for the multiprocessing package
3
- #
4
-
5
- import unittest
6
- import queue as pyqueue
7
- import contextlib
8
- import time
9
- import io
10
- import itertools
11
- import sys
12
- import os
13
- import gc
14
- import errno
15
- import signal
16
- import array
17
- import socket
18
- import random
19
- import logging
20
- import struct
21
- import operator
22
- import weakref
23
- import test.support
24
- import test.support.script_helper
25
-
26
-
27
- # Skip tests if _multiprocessing wasn't built.
28
- _multiprocessing = test.support.import_module('_multiprocessing')
29
- # Skip tests if sem_open implementation is broken.
30
- test.support.import_module('multiprocessing.synchronize')
31
- # import threading after _multiprocessing to raise a more relevant error
32
- # message: "No module named _multiprocessing". _multiprocessing is not compiled
33
- # without thread support.
34
- import threading
35
-
36
- import multiprocessing.connection
37
- import multiprocessing.dummy
38
- import multiprocessing.heap
39
- import multiprocessing.managers
40
- import multiprocessing.pool
41
- import multiprocessing.queues
42
-
43
- from multiprocessing import util
44
-
45
- try:
46
- from multiprocessing import reduction
47
- HAS_REDUCTION = reduction.HAVE_SEND_HANDLE
48
- except ImportError:
49
- HAS_REDUCTION = False
50
-
51
- try:
52
- from multiprocessing.sharedctypes import Value, copy
53
- HAS_SHAREDCTYPES = True
54
- except ImportError:
55
- HAS_SHAREDCTYPES = False
56
-
57
- try:
58
- import msvcrt
59
- except ImportError:
60
- msvcrt = None
61
-
62
- #
63
- #
64
- #
65
-
66
- def latin(s):
67
- return s.encode('latin')
68
-
69
-
70
- def close_queue(queue):
71
- if isinstance(queue, multiprocessing.queues.Queue):
72
- queue.close()
73
- queue.join_thread()
74
-
75
-
76
- #
77
- # Constants
78
- #
79
-
80
- LOG_LEVEL = util.SUBWARNING
81
- #LOG_LEVEL = logging.DEBUG
82
-
83
- DELTA = 0.1
84
- CHECK_TIMINGS = False # making true makes tests take a lot longer
85
- # and can sometimes cause some non-serious
86
- # failures because some calls block a bit
87
- # longer than expected
88
- if CHECK_TIMINGS:
89
- TIMEOUT1, TIMEOUT2, TIMEOUT3 = 0.82, 0.35, 1.4
90
- else:
91
- TIMEOUT1, TIMEOUT2, TIMEOUT3 = 0.1, 0.1, 0.1
92
-
93
- HAVE_GETVALUE = not getattr(_multiprocessing,
94
- 'HAVE_BROKEN_SEM_GETVALUE', False)
95
-
96
- WIN32 = (sys.platform == "win32")
97
-
98
- from multiprocessing.connection import wait
99
-
100
- def wait_for_handle(handle, timeout):
101
- if timeout is not None and timeout < 0.0:
102
- timeout = None
103
- return wait([handle], timeout)
104
-
105
- try:
106
- MAXFD = os.sysconf("SC_OPEN_MAX")
107
- except:
108
- MAXFD = 256
109
-
110
- # To speed up tests when using the forkserver, we can preload these:
111
- PRELOAD = ['__main__', 'test.test_multiprocessing_forkserver']
112
-
113
- #
114
- # Some tests require ctypes
115
- #
116
-
117
- try:
118
- from ctypes import Structure, c_int, c_double
119
- except ImportError:
120
- Structure = object
121
- c_int = c_double = None
122
-
123
-
124
- def check_enough_semaphores():
125
- """Check that the system supports enough semaphores to run the test."""
126
- # minimum number of semaphores available according to POSIX
127
- nsems_min = 256
128
- try:
129
- nsems = os.sysconf("SC_SEM_NSEMS_MAX")
130
- except (AttributeError, ValueError):
131
- # sysconf not available or setting not available
132
- return
133
- if nsems == -1 or nsems >= nsems_min:
134
- return
135
- raise unittest.SkipTest("The OS doesn't support enough semaphores "
136
- "to run the test (required: %d)." % nsems_min)
137
-
138
-
139
- #
140
- # Creates a wrapper for a function which records the time it takes to finish
141
- #
142
-
143
- class TimingWrapper(object):
144
-
145
- def __init__(self, func):
146
- self.func = func
147
- self.elapsed = None
148
-
149
- def __call__(self, *args, **kwds):
150
- t = time.time()
151
- try:
152
- return self.func(*args, **kwds)
153
- finally:
154
- self.elapsed = time.time() - t
155
-
156
- #
157
- # Base class for test cases
158
- #
159
-
160
- class BaseTestCase(object):
161
-
162
- ALLOWED_TYPES = ('processes', 'manager', 'threads')
163
-
164
- def assertTimingAlmostEqual(self, a, b):
165
- if CHECK_TIMINGS:
166
- self.assertAlmostEqual(a, b, 1)
167
-
168
- def assertReturnsIfImplemented(self, value, func, *args):
169
- try:
170
- res = func(*args)
171
- except NotImplementedError:
172
- pass
173
- else:
174
- return self.assertEqual(value, res)
175
-
176
- # For the sanity of Windows users, rather than crashing or freezing in
177
- # multiple ways.
178
- def __reduce__(self, *args):
179
- raise NotImplementedError("shouldn't try to pickle a test case")
180
-
181
- __reduce_ex__ = __reduce__
182
-
183
- #
184
- # Return the value of a semaphore
185
- #
186
-
187
- def get_value(self):
188
- try:
189
- return self.get_value()
190
- except AttributeError:
191
- try:
192
- return self._Semaphore__value
193
- except AttributeError:
194
- try:
195
- return self._value
196
- except AttributeError:
197
- raise NotImplementedError
198
-
199
- #
200
- # Testcases
201
- #
202
-
203
- class DummyCallable:
204
- def __call__(self, q, c):
205
- assert isinstance(c, DummyCallable)
206
- q.put(5)
207
-
208
-
209
- class _TestProcess(BaseTestCase):
210
-
211
- ALLOWED_TYPES = ('processes', 'threads')
212
-
213
- def test_current(self):
214
- if self.TYPE == 'threads':
215
- self.skipTest('test not appropriate for {}'.format(self.TYPE))
216
-
217
- current = self.current_process()
218
- authkey = current.authkey
219
-
220
- self.assertTrue(current.is_alive())
221
- self.assertTrue(not current.daemon)
222
- self.assertIsInstance(authkey, bytes)
223
- self.assertTrue(len(authkey) > 0)
224
- self.assertEqual(current.ident, os.getpid())
225
- self.assertEqual(current.exitcode, None)
226
-
227
- def test_daemon_argument(self):
228
- if self.TYPE == "threads":
229
- self.skipTest('test not appropriate for {}'.format(self.TYPE))
230
-
231
- # By default uses the current process's daemon flag.
232
- proc0 = self.Process(target=self._test)
233
- self.assertEqual(proc0.daemon, self.current_process().daemon)
234
- proc1 = self.Process(target=self._test, daemon=True)
235
- self.assertTrue(proc1.daemon)
236
- proc2 = self.Process(target=self._test, daemon=False)
237
- self.assertFalse(proc2.daemon)
238
-
239
- @classmethod
240
- def _test(cls, q, *args, **kwds):
241
- current = cls.current_process()
242
- q.put(args)
243
- q.put(kwds)
244
- q.put(current.name)
245
- if cls.TYPE != 'threads':
246
- q.put(bytes(current.authkey))
247
- q.put(current.pid)
248
-
249
- def test_process(self):
250
- q = self.Queue(1)
251
- e = self.Event()
252
- args = (q, 1, 2)
253
- kwargs = {'hello':23, 'bye':2.54}
254
- name = 'SomeProcess'
255
- p = self.Process(
256
- target=self._test, args=args, kwargs=kwargs, name=name
257
- )
258
- p.daemon = True
259
- current = self.current_process()
260
-
261
- if self.TYPE != 'threads':
262
- self.assertEqual(p.authkey, current.authkey)
263
- self.assertEqual(p.is_alive(), False)
264
- self.assertEqual(p.daemon, True)
265
- self.assertNotIn(p, self.active_children())
266
- self.assertTrue(type(self.active_children()) is list)
267
- self.assertEqual(p.exitcode, None)
268
-
269
- p.start()
270
-
271
- self.assertEqual(p.exitcode, None)
272
- self.assertEqual(p.is_alive(), True)
273
- self.assertIn(p, self.active_children())
274
-
275
- self.assertEqual(q.get(), args[1:])
276
- self.assertEqual(q.get(), kwargs)
277
- self.assertEqual(q.get(), p.name)
278
- if self.TYPE != 'threads':
279
- self.assertEqual(q.get(), current.authkey)
280
- self.assertEqual(q.get(), p.pid)
281
-
282
- p.join()
283
-
284
- self.assertEqual(p.exitcode, 0)
285
- self.assertEqual(p.is_alive(), False)
286
- self.assertNotIn(p, self.active_children())
287
- close_queue(q)
288
-
289
- @classmethod
290
- def _test_terminate(cls):
291
- time.sleep(100)
292
-
293
- def test_terminate(self):
294
- if self.TYPE == 'threads':
295
- self.skipTest('test not appropriate for {}'.format(self.TYPE))
296
-
297
- p = self.Process(target=self._test_terminate)
298
- p.daemon = True
299
- p.start()
300
-
301
- self.assertEqual(p.is_alive(), True)
302
- self.assertIn(p, self.active_children())
303
- self.assertEqual(p.exitcode, None)
304
-
305
- join = TimingWrapper(p.join)
306
-
307
- self.assertEqual(join(0), None)
308
- self.assertTimingAlmostEqual(join.elapsed, 0.0)
309
- self.assertEqual(p.is_alive(), True)
310
-
311
- self.assertEqual(join(-1), None)
312
- self.assertTimingAlmostEqual(join.elapsed, 0.0)
313
- self.assertEqual(p.is_alive(), True)
314
-
315
- # XXX maybe terminating too soon causes the problems on Gentoo...
316
- time.sleep(1)
317
-
318
- p.terminate()
319
-
320
- if hasattr(signal, 'alarm'):
321
- # On the Gentoo buildbot waitpid() often seems to block forever.
322
- # We use alarm() to interrupt it if it blocks for too long.
323
- def handler(*args):
324
- raise RuntimeError('join took too long: %s' % p)
325
- old_handler = signal.signal(signal.SIGALRM, handler)
326
- try:
327
- signal.alarm(10)
328
- self.assertEqual(join(), None)
329
- finally:
330
- signal.alarm(0)
331
- signal.signal(signal.SIGALRM, old_handler)
332
- else:
333
- self.assertEqual(join(), None)
334
-
335
- self.assertTimingAlmostEqual(join.elapsed, 0.0)
336
-
337
- self.assertEqual(p.is_alive(), False)
338
- self.assertNotIn(p, self.active_children())
339
-
340
- p.join()
341
-
342
- # XXX sometimes get p.exitcode == 0 on Windows ...
343
- #self.assertEqual(p.exitcode, -signal.SIGTERM)
344
-
345
- def test_cpu_count(self):
346
- try:
347
- cpus = multiprocessing.cpu_count()
348
- except NotImplementedError:
349
- cpus = 1
350
- self.assertTrue(type(cpus) is int)
351
- self.assertTrue(cpus >= 1)
352
-
353
- def test_active_children(self):
354
- self.assertEqual(type(self.active_children()), list)
355
-
356
- p = self.Process(target=time.sleep, args=(DELTA,))
357
- self.assertNotIn(p, self.active_children())
358
-
359
- p.daemon = True
360
- p.start()
361
- self.assertIn(p, self.active_children())
362
-
363
- p.join()
364
- self.assertNotIn(p, self.active_children())
365
-
366
- @classmethod
367
- def _test_recursion(cls, wconn, id):
368
- wconn.send(id)
369
- if len(id) < 2:
370
- for i in range(2):
371
- p = cls.Process(
372
- target=cls._test_recursion, args=(wconn, id+[i])
373
- )
374
- p.start()
375
- p.join()
376
-
377
- def test_recursion(self):
378
- rconn, wconn = self.Pipe(duplex=False)
379
- self._test_recursion(wconn, [])
380
-
381
- time.sleep(DELTA)
382
- result = []
383
- while rconn.poll():
384
- result.append(rconn.recv())
385
-
386
- expected = [
387
- [],
388
- [0],
389
- [0, 0],
390
- [0, 1],
391
- [1],
392
- [1, 0],
393
- [1, 1]
394
- ]
395
- self.assertEqual(result, expected)
396
-
397
- @classmethod
398
- def _test_sentinel(cls, event):
399
- event.wait(10.0)
400
-
401
- def test_sentinel(self):
402
- if self.TYPE == "threads":
403
- self.skipTest('test not appropriate for {}'.format(self.TYPE))
404
- event = self.Event()
405
- p = self.Process(target=self._test_sentinel, args=(event,))
406
- with self.assertRaises(ValueError):
407
- p.sentinel
408
- p.start()
409
- self.addCleanup(p.join)
410
- sentinel = p.sentinel
411
- self.assertIsInstance(sentinel, int)
412
- self.assertFalse(wait_for_handle(sentinel, timeout=0.0))
413
- event.set()
414
- p.join()
415
- self.assertTrue(wait_for_handle(sentinel, timeout=1))
416
-
417
- def test_lose_target_ref(self):
418
- c = DummyCallable()
419
- wr = weakref.ref(c)
420
- q = self.Queue()
421
- p = self.Process(target=c, args=(q, c))
422
- del c
423
- p.start()
424
- p.join()
425
- self.assertIs(wr(), None)
426
- self.assertEqual(q.get(), 5)
427
- close_queue(q)
428
-
429
- @classmethod
430
- def _test_error_on_stdio_flush(self, evt):
431
- evt.set()
432
-
433
- def test_error_on_stdio_flush(self):
434
- streams = [io.StringIO(), None]
435
- streams[0].close()
436
- for stream_name in ('stdout', 'stderr'):
437
- for stream in streams:
438
- old_stream = getattr(sys, stream_name)
439
- setattr(sys, stream_name, stream)
440
- try:
441
- evt = self.Event()
442
- proc = self.Process(target=self._test_error_on_stdio_flush,
443
- args=(evt,))
444
- proc.start()
445
- proc.join()
446
- self.assertTrue(evt.is_set())
447
- finally:
448
- setattr(sys, stream_name, old_stream)
449
-
450
- @classmethod
451
- def _sleep_and_set_event(self, evt, delay=0.0):
452
- time.sleep(delay)
453
- evt.set()
454
-
455
- def check_forkserver_death(self, signum):
456
- # bpo-31308: if the forkserver process has died, we should still
457
- # be able to create and run new Process instances (the forkserver
458
- # is implicitly restarted).
459
- if self.TYPE == 'threads':
460
- self.skipTest('test not appropriate for {}'.format(self.TYPE))
461
- sm = multiprocessing.get_start_method()
462
- if sm != 'forkserver':
463
- # The fork method by design inherits all fds from the parent,
464
- # trying to go against it is a lost battle
465
- self.skipTest('test not appropriate for {}'.format(sm))
466
-
467
- from multiprocessing.forkserver import _forkserver
468
- _forkserver.ensure_running()
469
-
470
- evt = self.Event()
471
- proc = self.Process(target=self._sleep_and_set_event, args=(evt, 1.0))
472
- proc.start()
473
-
474
- pid = _forkserver._forkserver_pid
475
- os.kill(pid, signum)
476
- time.sleep(1.0) # give it time to die
477
-
478
- evt2 = self.Event()
479
- proc2 = self.Process(target=self._sleep_and_set_event, args=(evt2,))
480
- proc2.start()
481
- proc2.join()
482
- self.assertTrue(evt2.is_set())
483
- self.assertEqual(proc2.exitcode, 0)
484
-
485
- proc.join()
486
- self.assertTrue(evt.is_set())
487
- self.assertIn(proc.exitcode, (0, 255))
488
-
489
- def test_forkserver_sigint(self):
490
- # Catchable signal
491
- self.check_forkserver_death(signal.SIGINT)
492
-
493
- def test_forkserver_sigkill(self):
494
- # Uncatchable signal
495
- if os.name != 'nt':
496
- self.check_forkserver_death(signal.SIGKILL)
497
-
498
-
499
- #
500
- #
501
- #
502
-
503
- class _UpperCaser(multiprocessing.Process):
504
-
505
- def __init__(self):
506
- multiprocessing.Process.__init__(self)
507
- self.child_conn, self.parent_conn = multiprocessing.Pipe()
508
-
509
- def run(self):
510
- self.parent_conn.close()
511
- for s in iter(self.child_conn.recv, None):
512
- self.child_conn.send(s.upper())
513
- self.child_conn.close()
514
-
515
- def submit(self, s):
516
- assert type(s) is str
517
- self.parent_conn.send(s)
518
- return self.parent_conn.recv()
519
-
520
- def stop(self):
521
- self.parent_conn.send(None)
522
- self.parent_conn.close()
523
- self.child_conn.close()
524
-
525
- class _TestSubclassingProcess(BaseTestCase):
526
-
527
- ALLOWED_TYPES = ('processes',)
528
-
529
- def test_subclassing(self):
530
- uppercaser = _UpperCaser()
531
- uppercaser.daemon = True
532
- uppercaser.start()
533
- self.assertEqual(uppercaser.submit('hello'), 'HELLO')
534
- self.assertEqual(uppercaser.submit('world'), 'WORLD')
535
- uppercaser.stop()
536
- uppercaser.join()
537
-
538
- def test_stderr_flush(self):
539
- # sys.stderr is flushed at process shutdown (issue #13812)
540
- if self.TYPE == "threads":
541
- self.skipTest('test not appropriate for {}'.format(self.TYPE))
542
-
543
- testfn = test.support.TESTFN
544
- self.addCleanup(test.support.unlink, testfn)
545
- proc = self.Process(target=self._test_stderr_flush, args=(testfn,))
546
- proc.start()
547
- proc.join()
548
- with open(testfn, 'r') as f:
549
- err = f.read()
550
- # The whole traceback was printed
551
- self.assertIn("ZeroDivisionError", err)
552
- self.assertIn("test_multiprocessing.py", err)
553
- self.assertIn("1/0 # MARKER", err)
554
-
555
- @classmethod
556
- def _test_stderr_flush(cls, testfn):
557
- fd = os.open(testfn, os.O_WRONLY | os.O_CREAT | os.O_EXCL)
558
- sys.stderr = open(fd, 'w', closefd=False)
559
- 1/0 # MARKER
560
-
561
-
562
- @classmethod
563
- def _test_sys_exit(cls, reason, testfn):
564
- fd = os.open(testfn, os.O_WRONLY | os.O_CREAT | os.O_EXCL)
565
- sys.stderr = open(fd, 'w', closefd=False)
566
- sys.exit(reason)
567
-
568
- def test_sys_exit(self):
569
- # See Issue 13854
570
- if self.TYPE == 'threads':
571
- self.skipTest('test not appropriate for {}'.format(self.TYPE))
572
-
573
- testfn = test.support.TESTFN
574
- self.addCleanup(test.support.unlink, testfn)
575
-
576
- for reason in (
577
- [1, 2, 3],
578
- 'ignore this',
579
- ):
580
- p = self.Process(target=self._test_sys_exit, args=(reason, testfn))
581
- p.daemon = True
582
- p.start()
583
- p.join(5)
584
- self.assertEqual(p.exitcode, 1)
585
-
586
- with open(testfn, 'r') as f:
587
- content = f.read()
588
- self.assertEqual(content.rstrip(), str(reason))
589
-
590
- os.unlink(testfn)
591
-
592
- for reason in (True, False, 8):
593
- p = self.Process(target=sys.exit, args=(reason,))
594
- p.daemon = True
595
- p.start()
596
- p.join(5)
597
- self.assertEqual(p.exitcode, reason)
598
-
599
- #
600
- #
601
- #
602
-
603
- def queue_empty(q):
604
- if hasattr(q, 'empty'):
605
- return q.empty()
606
- else:
607
- return q.qsize() == 0
608
-
609
- def queue_full(q, maxsize):
610
- if hasattr(q, 'full'):
611
- return q.full()
612
- else:
613
- return q.qsize() == maxsize
614
-
615
-
616
- class _TestQueue(BaseTestCase):
617
-
618
-
619
- @classmethod
620
- def _test_put(cls, queue, child_can_start, parent_can_continue):
621
- child_can_start.wait()
622
- for i in range(6):
623
- queue.get()
624
- parent_can_continue.set()
625
-
626
- def test_put(self):
627
- MAXSIZE = 6
628
- queue = self.Queue(maxsize=MAXSIZE)
629
- child_can_start = self.Event()
630
- parent_can_continue = self.Event()
631
-
632
- proc = self.Process(
633
- target=self._test_put,
634
- args=(queue, child_can_start, parent_can_continue)
635
- )
636
- proc.daemon = True
637
- proc.start()
638
-
639
- self.assertEqual(queue_empty(queue), True)
640
- self.assertEqual(queue_full(queue, MAXSIZE), False)
641
-
642
- queue.put(1)
643
- queue.put(2, True)
644
- queue.put(3, True, None)
645
- queue.put(4, False)
646
- queue.put(5, False, None)
647
- queue.put_nowait(6)
648
-
649
- # the values may be in buffer but not yet in pipe so sleep a bit
650
- time.sleep(DELTA)
651
-
652
- self.assertEqual(queue_empty(queue), False)
653
- self.assertEqual(queue_full(queue, MAXSIZE), True)
654
-
655
- put = TimingWrapper(queue.put)
656
- put_nowait = TimingWrapper(queue.put_nowait)
657
-
658
- self.assertRaises(pyqueue.Full, put, 7, False)
659
- self.assertTimingAlmostEqual(put.elapsed, 0)
660
-
661
- self.assertRaises(pyqueue.Full, put, 7, False, None)
662
- self.assertTimingAlmostEqual(put.elapsed, 0)
663
-
664
- self.assertRaises(pyqueue.Full, put_nowait, 7)
665
- self.assertTimingAlmostEqual(put_nowait.elapsed, 0)
666
-
667
- self.assertRaises(pyqueue.Full, put, 7, True, TIMEOUT1)
668
- self.assertTimingAlmostEqual(put.elapsed, TIMEOUT1)
669
-
670
- self.assertRaises(pyqueue.Full, put, 7, False, TIMEOUT2)
671
- self.assertTimingAlmostEqual(put.elapsed, 0)
672
-
673
- self.assertRaises(pyqueue.Full, put, 7, True, timeout=TIMEOUT3)
674
- self.assertTimingAlmostEqual(put.elapsed, TIMEOUT3)
675
-
676
- child_can_start.set()
677
- parent_can_continue.wait()
678
-
679
- self.assertEqual(queue_empty(queue), True)
680
- self.assertEqual(queue_full(queue, MAXSIZE), False)
681
-
682
- proc.join()
683
- close_queue(queue)
684
-
685
- @classmethod
686
- def _test_get(cls, queue, child_can_start, parent_can_continue):
687
- child_can_start.wait()
688
- #queue.put(1)
689
- queue.put(2)
690
- queue.put(3)
691
- queue.put(4)
692
- queue.put(5)
693
- parent_can_continue.set()
694
-
695
- def test_get(self):
696
- queue = self.Queue()
697
- child_can_start = self.Event()
698
- parent_can_continue = self.Event()
699
-
700
- proc = self.Process(
701
- target=self._test_get,
702
- args=(queue, child_can_start, parent_can_continue)
703
- )
704
- proc.daemon = True
705
- proc.start()
706
-
707
- self.assertEqual(queue_empty(queue), True)
708
-
709
- child_can_start.set()
710
- parent_can_continue.wait()
711
-
712
- time.sleep(DELTA)
713
- self.assertEqual(queue_empty(queue), False)
714
-
715
- # Hangs unexpectedly, remove for now
716
- #self.assertEqual(queue.get(), 1)
717
- self.assertEqual(queue.get(True, None), 2)
718
- self.assertEqual(queue.get(True), 3)
719
- self.assertEqual(queue.get(timeout=1), 4)
720
- self.assertEqual(queue.get_nowait(), 5)
721
-
722
- self.assertEqual(queue_empty(queue), True)
723
-
724
- get = TimingWrapper(queue.get)
725
- get_nowait = TimingWrapper(queue.get_nowait)
726
-
727
- self.assertRaises(pyqueue.Empty, get, False)
728
- self.assertTimingAlmostEqual(get.elapsed, 0)
729
-
730
- self.assertRaises(pyqueue.Empty, get, False, None)
731
- self.assertTimingAlmostEqual(get.elapsed, 0)
732
-
733
- self.assertRaises(pyqueue.Empty, get_nowait)
734
- self.assertTimingAlmostEqual(get_nowait.elapsed, 0)
735
-
736
- self.assertRaises(pyqueue.Empty, get, True, TIMEOUT1)
737
- self.assertTimingAlmostEqual(get.elapsed, TIMEOUT1)
738
-
739
- self.assertRaises(pyqueue.Empty, get, False, TIMEOUT2)
740
- self.assertTimingAlmostEqual(get.elapsed, 0)
741
-
742
- self.assertRaises(pyqueue.Empty, get, timeout=TIMEOUT3)
743
- self.assertTimingAlmostEqual(get.elapsed, TIMEOUT3)
744
-
745
- proc.join()
746
- close_queue(queue)
747
-
748
- @classmethod
749
- def _test_fork(cls, queue):
750
- for i in range(10, 20):
751
- queue.put(i)
752
- # note that at this point the items may only be buffered, so the
753
- # process cannot shutdown until the feeder thread has finished
754
- # pushing items onto the pipe.
755
-
756
- def test_fork(self):
757
- # Old versions of Queue would fail to create a new feeder
758
- # thread for a forked process if the original process had its
759
- # own feeder thread. This test checks that this no longer
760
- # happens.
761
-
762
- queue = self.Queue()
763
-
764
- # put items on queue so that main process starts a feeder thread
765
- for i in range(10):
766
- queue.put(i)
767
-
768
- # wait to make sure thread starts before we fork a new process
769
- time.sleep(DELTA)
770
-
771
- # fork process
772
- p = self.Process(target=self._test_fork, args=(queue,))
773
- p.daemon = True
774
- p.start()
775
-
776
- # check that all expected items are in the queue
777
- for i in range(20):
778
- self.assertEqual(queue.get(), i)
779
- self.assertRaises(pyqueue.Empty, queue.get, False)
780
-
781
- p.join()
782
- close_queue(queue)
783
-
784
- def test_qsize(self):
785
- q = self.Queue()
786
- try:
787
- self.assertEqual(q.qsize(), 0)
788
- except NotImplementedError:
789
- self.skipTest('qsize method not implemented')
790
- q.put(1)
791
- self.assertEqual(q.qsize(), 1)
792
- q.put(5)
793
- self.assertEqual(q.qsize(), 2)
794
- q.get()
795
- self.assertEqual(q.qsize(), 1)
796
- q.get()
797
- self.assertEqual(q.qsize(), 0)
798
- close_queue(q)
799
-
800
- @classmethod
801
- def _test_task_done(cls, q):
802
- for obj in iter(q.get, None):
803
- time.sleep(DELTA)
804
- q.task_done()
805
-
806
- def test_task_done(self):
807
- queue = self.JoinableQueue()
808
-
809
- workers = [self.Process(target=self._test_task_done, args=(queue,))
810
- for i in range(4)]
811
-
812
- for p in workers:
813
- p.daemon = True
814
- p.start()
815
-
816
- for i in range(10):
817
- queue.put(i)
818
-
819
- queue.join()
820
-
821
- for p in workers:
822
- queue.put(None)
823
-
824
- for p in workers:
825
- p.join()
826
- close_queue(queue)
827
-
828
- def test_no_import_lock_contention(self):
829
- with test.support.temp_cwd():
830
- module_name = 'imported_by_an_imported_module'
831
- with open(module_name + '.py', 'w') as f:
832
- f.write("""if 1:
833
- import multiprocessing
834
-
835
- q = multiprocessing.Queue()
836
- q.put('knock knock')
837
- q.get(timeout=3)
838
- q.close()
839
- del q
840
- """)
841
-
842
- with test.support.DirsOnSysPath(os.getcwd()):
843
- try:
844
- __import__(module_name)
845
- except pyqueue.Empty:
846
- self.fail("Probable regression on import lock contention;"
847
- " see Issue #22853")
848
-
849
- def test_timeout(self):
850
- q = multiprocessing.Queue()
851
- start = time.time()
852
- self.assertRaises(pyqueue.Empty, q.get, True, 0.200)
853
- delta = time.time() - start
854
- # Tolerate a delta of 30 ms because of the bad clock resolution on
855
- # Windows (usually 15.6 ms)
856
- self.assertGreaterEqual(delta, 0.170)
857
- close_queue(q)
858
-
859
- def test_queue_feeder_donot_stop_onexc(self):
860
- # bpo-30414: verify feeder handles exceptions correctly
861
- if self.TYPE != 'processes':
862
- self.skipTest('test not appropriate for {}'.format(self.TYPE))
863
-
864
- class NotSerializable(object):
865
- def __reduce__(self):
866
- raise AttributeError
867
- with test.support.captured_stderr():
868
- q = self.Queue()
869
- q.put(NotSerializable())
870
- q.put(True)
871
- # bpo-30595: use a timeout of 1 second for slow buildbots
872
- self.assertTrue(q.get(timeout=1.0))
873
- close_queue(q)
874
-
875
- #
876
- #
877
- #
878
-
879
- class _TestLock(BaseTestCase):
880
-
881
- def test_lock(self):
882
- lock = self.Lock()
883
- self.assertEqual(lock.acquire(), True)
884
- self.assertEqual(lock.acquire(False), False)
885
- self.assertEqual(lock.release(), None)
886
- self.assertRaises((ValueError, threading.ThreadError), lock.release)
887
-
888
- def test_rlock(self):
889
- lock = self.RLock()
890
- self.assertEqual(lock.acquire(), True)
891
- self.assertEqual(lock.acquire(), True)
892
- self.assertEqual(lock.acquire(), True)
893
- self.assertEqual(lock.release(), None)
894
- self.assertEqual(lock.release(), None)
895
- self.assertEqual(lock.release(), None)
896
- self.assertRaises((AssertionError, RuntimeError), lock.release)
897
-
898
- def test_lock_context(self):
899
- with self.Lock():
900
- pass
901
-
902
-
903
- class _TestSemaphore(BaseTestCase):
904
-
905
- def _test_semaphore(self, sem):
906
- self.assertReturnsIfImplemented(2, get_value, sem)
907
- self.assertEqual(sem.acquire(), True)
908
- self.assertReturnsIfImplemented(1, get_value, sem)
909
- self.assertEqual(sem.acquire(), True)
910
- self.assertReturnsIfImplemented(0, get_value, sem)
911
- self.assertEqual(sem.acquire(False), False)
912
- self.assertReturnsIfImplemented(0, get_value, sem)
913
- self.assertEqual(sem.release(), None)
914
- self.assertReturnsIfImplemented(1, get_value, sem)
915
- self.assertEqual(sem.release(), None)
916
- self.assertReturnsIfImplemented(2, get_value, sem)
917
-
918
- def test_semaphore(self):
919
- sem = self.Semaphore(2)
920
- self._test_semaphore(sem)
921
- self.assertEqual(sem.release(), None)
922
- self.assertReturnsIfImplemented(3, get_value, sem)
923
- self.assertEqual(sem.release(), None)
924
- self.assertReturnsIfImplemented(4, get_value, sem)
925
-
926
- def test_bounded_semaphore(self):
927
- sem = self.BoundedSemaphore(2)
928
- self._test_semaphore(sem)
929
- # Currently fails on OS/X
930
- #if HAVE_GETVALUE:
931
- # self.assertRaises(ValueError, sem.release)
932
- # self.assertReturnsIfImplemented(2, get_value, sem)
933
-
934
- def test_timeout(self):
935
- if self.TYPE != 'processes':
936
- self.skipTest('test not appropriate for {}'.format(self.TYPE))
937
-
938
- sem = self.Semaphore(0)
939
- acquire = TimingWrapper(sem.acquire)
940
-
941
- self.assertEqual(acquire(False), False)
942
- self.assertTimingAlmostEqual(acquire.elapsed, 0.0)
943
-
944
- self.assertEqual(acquire(False, None), False)
945
- self.assertTimingAlmostEqual(acquire.elapsed, 0.0)
946
-
947
- self.assertEqual(acquire(False, TIMEOUT1), False)
948
- self.assertTimingAlmostEqual(acquire.elapsed, 0)
949
-
950
- self.assertEqual(acquire(True, TIMEOUT2), False)
951
- self.assertTimingAlmostEqual(acquire.elapsed, TIMEOUT2)
952
-
953
- self.assertEqual(acquire(timeout=TIMEOUT3), False)
954
- self.assertTimingAlmostEqual(acquire.elapsed, TIMEOUT3)
955
-
956
-
957
- class _TestCondition(BaseTestCase):
958
-
959
- @classmethod
960
- def f(cls, cond, sleeping, woken, timeout=None):
961
- cond.acquire()
962
- sleeping.release()
963
- cond.wait(timeout)
964
- woken.release()
965
- cond.release()
966
-
967
- def check_invariant(self, cond):
968
- # this is only supposed to succeed when there are no sleepers
969
- if self.TYPE == 'processes':
970
- try:
971
- sleepers = (cond._sleeping_count.get_value() -
972
- cond._woken_count.get_value())
973
- self.assertEqual(sleepers, 0)
974
- self.assertEqual(cond._wait_semaphore.get_value(), 0)
975
- except NotImplementedError:
976
- pass
977
-
978
- def test_notify(self):
979
- cond = self.Condition()
980
- sleeping = self.Semaphore(0)
981
- woken = self.Semaphore(0)
982
-
983
- p = self.Process(target=self.f, args=(cond, sleeping, woken))
984
- p.daemon = True
985
- p.start()
986
- self.addCleanup(p.join)
987
-
988
- p = threading.Thread(target=self.f, args=(cond, sleeping, woken))
989
- p.daemon = True
990
- p.start()
991
- self.addCleanup(p.join)
992
-
993
- # wait for both children to start sleeping
994
- sleeping.acquire()
995
- sleeping.acquire()
996
-
997
- # check no process/thread has woken up
998
- time.sleep(DELTA)
999
- self.assertReturnsIfImplemented(0, get_value, woken)
1000
-
1001
- # wake up one process/thread
1002
- cond.acquire()
1003
- cond.notify()
1004
- cond.release()
1005
-
1006
- # check one process/thread has woken up
1007
- time.sleep(DELTA)
1008
- self.assertReturnsIfImplemented(1, get_value, woken)
1009
-
1010
- # wake up another
1011
- cond.acquire()
1012
- cond.notify()
1013
- cond.release()
1014
-
1015
- # check other has woken up
1016
- time.sleep(DELTA)
1017
- self.assertReturnsIfImplemented(2, get_value, woken)
1018
-
1019
- # check state is not mucked up
1020
- self.check_invariant(cond)
1021
- p.join()
1022
-
1023
- def test_notify_all(self):
1024
- cond = self.Condition()
1025
- sleeping = self.Semaphore(0)
1026
- woken = self.Semaphore(0)
1027
-
1028
- # start some threads/processes which will timeout
1029
- for i in range(3):
1030
- p = self.Process(target=self.f,
1031
- args=(cond, sleeping, woken, TIMEOUT1))
1032
- p.daemon = True
1033
- p.start()
1034
- self.addCleanup(p.join)
1035
-
1036
- t = threading.Thread(target=self.f,
1037
- args=(cond, sleeping, woken, TIMEOUT1))
1038
- t.daemon = True
1039
- t.start()
1040
- self.addCleanup(t.join)
1041
-
1042
- # wait for them all to sleep
1043
- for i in range(6):
1044
- sleeping.acquire()
1045
-
1046
- # check they have all timed out
1047
- for i in range(6):
1048
- woken.acquire()
1049
- self.assertReturnsIfImplemented(0, get_value, woken)
1050
-
1051
- # check state is not mucked up
1052
- self.check_invariant(cond)
1053
-
1054
- # start some more threads/processes
1055
- for i in range(3):
1056
- p = self.Process(target=self.f, args=(cond, sleeping, woken))
1057
- p.daemon = True
1058
- p.start()
1059
- self.addCleanup(p.join)
1060
-
1061
- t = threading.Thread(target=self.f, args=(cond, sleeping, woken))
1062
- t.daemon = True
1063
- t.start()
1064
- self.addCleanup(t.join)
1065
-
1066
- # wait for them to all sleep
1067
- for i in range(6):
1068
- sleeping.acquire()
1069
-
1070
- # check no process/thread has woken up
1071
- time.sleep(DELTA)
1072
- self.assertReturnsIfImplemented(0, get_value, woken)
1073
-
1074
- # wake them all up
1075
- cond.acquire()
1076
- cond.notify_all()
1077
- cond.release()
1078
-
1079
- # check they have all woken
1080
- for i in range(10):
1081
- try:
1082
- if get_value(woken) == 6:
1083
- break
1084
- except NotImplementedError:
1085
- break
1086
- time.sleep(DELTA)
1087
- self.assertReturnsIfImplemented(6, get_value, woken)
1088
-
1089
- # check state is not mucked up
1090
- self.check_invariant(cond)
1091
-
1092
- def test_timeout(self):
1093
- cond = self.Condition()
1094
- wait = TimingWrapper(cond.wait)
1095
- cond.acquire()
1096
- res = wait(TIMEOUT1)
1097
- cond.release()
1098
- self.assertEqual(res, False)
1099
- self.assertTimingAlmostEqual(wait.elapsed, TIMEOUT1)
1100
-
1101
- @classmethod
1102
- def _test_waitfor_f(cls, cond, state):
1103
- with cond:
1104
- state.value = 0
1105
- cond.notify()
1106
- result = cond.wait_for(lambda : state.value==4)
1107
- if not result or state.value != 4:
1108
- sys.exit(1)
1109
-
1110
- @unittest.skipUnless(HAS_SHAREDCTYPES, 'needs sharedctypes')
1111
- def test_waitfor(self):
1112
- # based on test in test/lock_tests.py
1113
- cond = self.Condition()
1114
- state = self.Value('i', -1)
1115
-
1116
- p = self.Process(target=self._test_waitfor_f, args=(cond, state))
1117
- p.daemon = True
1118
- p.start()
1119
-
1120
- with cond:
1121
- result = cond.wait_for(lambda : state.value==0)
1122
- self.assertTrue(result)
1123
- self.assertEqual(state.value, 0)
1124
-
1125
- for i in range(4):
1126
- time.sleep(0.01)
1127
- with cond:
1128
- state.value += 1
1129
- cond.notify()
1130
-
1131
- p.join(5)
1132
- self.assertFalse(p.is_alive())
1133
- self.assertEqual(p.exitcode, 0)
1134
-
1135
- @classmethod
1136
- def _test_waitfor_timeout_f(cls, cond, state, success, sem):
1137
- sem.release()
1138
- with cond:
1139
- expected = 0.1
1140
- dt = time.time()
1141
- result = cond.wait_for(lambda : state.value==4, timeout=expected)
1142
- dt = time.time() - dt
1143
- # borrow logic in assertTimeout() from test/lock_tests.py
1144
- if not result and expected * 0.6 < dt < expected * 10.0:
1145
- success.value = True
1146
-
1147
- @unittest.skipUnless(HAS_SHAREDCTYPES, 'needs sharedctypes')
1148
- def test_waitfor_timeout(self):
1149
- # based on test in test/lock_tests.py
1150
- cond = self.Condition()
1151
- state = self.Value('i', 0)
1152
- success = self.Value('i', False)
1153
- sem = self.Semaphore(0)
1154
-
1155
- p = self.Process(target=self._test_waitfor_timeout_f,
1156
- args=(cond, state, success, sem))
1157
- p.daemon = True
1158
- p.start()
1159
- self.assertTrue(sem.acquire(timeout=10))
1160
-
1161
- # Only increment 3 times, so state == 4 is never reached.
1162
- for i in range(3):
1163
- time.sleep(0.01)
1164
- with cond:
1165
- state.value += 1
1166
- cond.notify()
1167
-
1168
- p.join(5)
1169
- self.assertTrue(success.value)
1170
-
1171
- @classmethod
1172
- def _test_wait_result(cls, c, pid):
1173
- with c:
1174
- c.notify()
1175
- time.sleep(1)
1176
- if pid is not None:
1177
- os.kill(pid, signal.SIGINT)
1178
-
1179
- def test_wait_result(self):
1180
- if isinstance(self, ProcessesMixin) and sys.platform != 'win32':
1181
- pid = os.getpid()
1182
- else:
1183
- pid = None
1184
-
1185
- c = self.Condition()
1186
- with c:
1187
- self.assertFalse(c.wait(0))
1188
- self.assertFalse(c.wait(0.1))
1189
-
1190
- p = self.Process(target=self._test_wait_result, args=(c, pid))
1191
- p.start()
1192
-
1193
- self.assertTrue(c.wait(10))
1194
- if pid is not None:
1195
- self.assertRaises(KeyboardInterrupt, c.wait, 10)
1196
-
1197
- p.join()
1198
-
1199
-
1200
- class _TestEvent(BaseTestCase):
1201
-
1202
- @classmethod
1203
- def _test_event(cls, event):
1204
- time.sleep(TIMEOUT2)
1205
- event.set()
1206
-
1207
- def test_event(self):
1208
- event = self.Event()
1209
- wait = TimingWrapper(event.wait)
1210
-
1211
- # Removed temporarily, due to API shear, this does not
1212
- # work with threading._Event objects. is_set == isSet
1213
- self.assertEqual(event.is_set(), False)
1214
-
1215
- # Removed, threading.Event.wait() will return the value of the __flag
1216
- # instead of None. API Shear with the semaphore backed mp.Event
1217
- self.assertEqual(wait(0.0), False)
1218
- self.assertTimingAlmostEqual(wait.elapsed, 0.0)
1219
- self.assertEqual(wait(TIMEOUT1), False)
1220
- self.assertTimingAlmostEqual(wait.elapsed, TIMEOUT1)
1221
-
1222
- event.set()
1223
-
1224
- # See note above on the API differences
1225
- self.assertEqual(event.is_set(), True)
1226
- self.assertEqual(wait(), True)
1227
- self.assertTimingAlmostEqual(wait.elapsed, 0.0)
1228
- self.assertEqual(wait(TIMEOUT1), True)
1229
- self.assertTimingAlmostEqual(wait.elapsed, 0.0)
1230
- # self.assertEqual(event.is_set(), True)
1231
-
1232
- event.clear()
1233
-
1234
- #self.assertEqual(event.is_set(), False)
1235
-
1236
- p = self.Process(target=self._test_event, args=(event,))
1237
- p.daemon = True
1238
- p.start()
1239
- self.assertEqual(wait(), True)
1240
- p.join()
1241
-
1242
- #
1243
- # Tests for Barrier - adapted from tests in test/lock_tests.py
1244
- #
1245
-
1246
- # Many of the tests for threading.Barrier use a list as an atomic
1247
- # counter: a value is appended to increment the counter, and the
1248
- # length of the list gives the value. We use the class DummyList
1249
- # for the same purpose.
1250
-
1251
- class _DummyList(object):
1252
-
1253
- def __init__(self):
1254
- wrapper = multiprocessing.heap.BufferWrapper(struct.calcsize('i'))
1255
- lock = multiprocessing.Lock()
1256
- self.__setstate__((wrapper, lock))
1257
- self._lengthbuf[0] = 0
1258
-
1259
- def __setstate__(self, state):
1260
- (self._wrapper, self._lock) = state
1261
- self._lengthbuf = self._wrapper.create_memoryview().cast('i')
1262
-
1263
- def __getstate__(self):
1264
- return (self._wrapper, self._lock)
1265
-
1266
- def append(self, _):
1267
- with self._lock:
1268
- self._lengthbuf[0] += 1
1269
-
1270
- def __len__(self):
1271
- with self._lock:
1272
- return self._lengthbuf[0]
1273
-
1274
- def _wait():
1275
- # A crude wait/yield function not relying on synchronization primitives.
1276
- time.sleep(0.01)
1277
-
1278
-
1279
- class Bunch(object):
1280
- """
1281
- A bunch of threads.
1282
- """
1283
- def __init__(self, namespace, f, args, n, wait_before_exit=False):
1284
- """
1285
- Construct a bunch of `n` threads running the same function `f`.
1286
- If `wait_before_exit` is True, the threads won't terminate until
1287
- do_finish() is called.
1288
- """
1289
- self.f = f
1290
- self.args = args
1291
- self.n = n
1292
- self.started = namespace.DummyList()
1293
- self.finished = namespace.DummyList()
1294
- self._can_exit = namespace.Event()
1295
- if not wait_before_exit:
1296
- self._can_exit.set()
1297
-
1298
- threads = []
1299
- for i in range(n):
1300
- p = namespace.Process(target=self.task)
1301
- p.daemon = True
1302
- p.start()
1303
- threads.append(p)
1304
-
1305
- def finalize(threads):
1306
- for p in threads:
1307
- p.join()
1308
-
1309
- self._finalizer = weakref.finalize(self, finalize, threads)
1310
-
1311
- def task(self):
1312
- pid = os.getpid()
1313
- self.started.append(pid)
1314
- try:
1315
- self.f(*self.args)
1316
- finally:
1317
- self.finished.append(pid)
1318
- self._can_exit.wait(30)
1319
- assert self._can_exit.is_set()
1320
-
1321
- def wait_for_started(self):
1322
- while len(self.started) < self.n:
1323
- _wait()
1324
-
1325
- def wait_for_finished(self):
1326
- while len(self.finished) < self.n:
1327
- _wait()
1328
-
1329
- def do_finish(self):
1330
- self._can_exit.set()
1331
-
1332
- def close(self):
1333
- self._finalizer()
1334
-
1335
-
1336
- class AppendTrue(object):
1337
- def __init__(self, obj):
1338
- self.obj = obj
1339
- def __call__(self):
1340
- self.obj.append(True)
1341
-
1342
-
1343
- class _TestBarrier(BaseTestCase):
1344
- """
1345
- Tests for Barrier objects.
1346
- """
1347
- N = 5
1348
- defaultTimeout = 30.0 # XXX Slow Windows buildbots need generous timeout
1349
-
1350
- def setUp(self):
1351
- self.barrier = self.Barrier(self.N, timeout=self.defaultTimeout)
1352
-
1353
- def tearDown(self):
1354
- self.barrier.abort()
1355
- self.barrier = None
1356
-
1357
- def DummyList(self):
1358
- if self.TYPE == 'threads':
1359
- return []
1360
- elif self.TYPE == 'manager':
1361
- return self.manager.list()
1362
- else:
1363
- return _DummyList()
1364
-
1365
- def run_threads(self, f, args):
1366
- b = Bunch(self, f, args, self.N-1)
1367
- try:
1368
- f(*args)
1369
- b.wait_for_finished()
1370
- finally:
1371
- b.close()
1372
-
1373
- @classmethod
1374
- def multipass(cls, barrier, results, n):
1375
- m = barrier.parties
1376
- assert m == cls.N
1377
- for i in range(n):
1378
- results[0].append(True)
1379
- assert len(results[1]) == i * m
1380
- barrier.wait()
1381
- results[1].append(True)
1382
- assert len(results[0]) == (i + 1) * m
1383
- barrier.wait()
1384
- try:
1385
- assert barrier.n_waiting == 0
1386
- except NotImplementedError:
1387
- pass
1388
- assert not barrier.broken
1389
-
1390
- def test_barrier(self, passes=1):
1391
- """
1392
- Test that a barrier is passed in lockstep
1393
- """
1394
- results = [self.DummyList(), self.DummyList()]
1395
- self.run_threads(self.multipass, (self.barrier, results, passes))
1396
-
1397
- def test_barrier_10(self):
1398
- """
1399
- Test that a barrier works for 10 consecutive runs
1400
- """
1401
- return self.test_barrier(10)
1402
-
1403
- @classmethod
1404
- def _test_wait_return_f(cls, barrier, queue):
1405
- res = barrier.wait()
1406
- queue.put(res)
1407
-
1408
- def test_wait_return(self):
1409
- """
1410
- test the return value from barrier.wait
1411
- """
1412
- queue = self.Queue()
1413
- self.run_threads(self._test_wait_return_f, (self.barrier, queue))
1414
- results = [queue.get() for i in range(self.N)]
1415
- self.assertEqual(results.count(0), 1)
1416
- close_queue(queue)
1417
-
1418
- @classmethod
1419
- def _test_action_f(cls, barrier, results):
1420
- barrier.wait()
1421
- if len(results) != 1:
1422
- raise RuntimeError
1423
-
1424
- def test_action(self):
1425
- """
1426
- Test the 'action' callback
1427
- """
1428
- results = self.DummyList()
1429
- barrier = self.Barrier(self.N, action=AppendTrue(results))
1430
- self.run_threads(self._test_action_f, (barrier, results))
1431
- self.assertEqual(len(results), 1)
1432
-
1433
- @classmethod
1434
- def _test_abort_f(cls, barrier, results1, results2):
1435
- try:
1436
- i = barrier.wait()
1437
- if i == cls.N//2:
1438
- raise RuntimeError
1439
- barrier.wait()
1440
- results1.append(True)
1441
- except threading.BrokenBarrierError:
1442
- results2.append(True)
1443
- except RuntimeError:
1444
- barrier.abort()
1445
-
1446
- def test_abort(self):
1447
- """
1448
- Test that an abort will put the barrier in a broken state
1449
- """
1450
- results1 = self.DummyList()
1451
- results2 = self.DummyList()
1452
- self.run_threads(self._test_abort_f,
1453
- (self.barrier, results1, results2))
1454
- self.assertEqual(len(results1), 0)
1455
- self.assertEqual(len(results2), self.N-1)
1456
- self.assertTrue(self.barrier.broken)
1457
-
1458
- @classmethod
1459
- def _test_reset_f(cls, barrier, results1, results2, results3):
1460
- i = barrier.wait()
1461
- if i == cls.N//2:
1462
- # Wait until the other threads are all in the barrier.
1463
- while barrier.n_waiting < cls.N-1:
1464
- time.sleep(0.001)
1465
- barrier.reset()
1466
- else:
1467
- try:
1468
- barrier.wait()
1469
- results1.append(True)
1470
- except threading.BrokenBarrierError:
1471
- results2.append(True)
1472
- # Now, pass the barrier again
1473
- barrier.wait()
1474
- results3.append(True)
1475
-
1476
- def test_reset(self):
1477
- """
1478
- Test that a 'reset' on a barrier frees the waiting threads
1479
- """
1480
- results1 = self.DummyList()
1481
- results2 = self.DummyList()
1482
- results3 = self.DummyList()
1483
- self.run_threads(self._test_reset_f,
1484
- (self.barrier, results1, results2, results3))
1485
- self.assertEqual(len(results1), 0)
1486
- self.assertEqual(len(results2), self.N-1)
1487
- self.assertEqual(len(results3), self.N)
1488
-
1489
- @classmethod
1490
- def _test_abort_and_reset_f(cls, barrier, barrier2,
1491
- results1, results2, results3):
1492
- try:
1493
- i = barrier.wait()
1494
- if i == cls.N//2:
1495
- raise RuntimeError
1496
- barrier.wait()
1497
- results1.append(True)
1498
- except threading.BrokenBarrierError:
1499
- results2.append(True)
1500
- except RuntimeError:
1501
- barrier.abort()
1502
- # Synchronize and reset the barrier. Must synchronize first so
1503
- # that everyone has left it when we reset, and after so that no
1504
- # one enters it before the reset.
1505
- if barrier2.wait() == cls.N//2:
1506
- barrier.reset()
1507
- barrier2.wait()
1508
- barrier.wait()
1509
- results3.append(True)
1510
-
1511
- def test_abort_and_reset(self):
1512
- """
1513
- Test that a barrier can be reset after being broken.
1514
- """
1515
- results1 = self.DummyList()
1516
- results2 = self.DummyList()
1517
- results3 = self.DummyList()
1518
- barrier2 = self.Barrier(self.N)
1519
-
1520
- self.run_threads(self._test_abort_and_reset_f,
1521
- (self.barrier, barrier2, results1, results2, results3))
1522
- self.assertEqual(len(results1), 0)
1523
- self.assertEqual(len(results2), self.N-1)
1524
- self.assertEqual(len(results3), self.N)
1525
-
1526
- @classmethod
1527
- def _test_timeout_f(cls, barrier, results):
1528
- i = barrier.wait()
1529
- if i == cls.N//2:
1530
- # One thread is late!
1531
- time.sleep(1.0)
1532
- try:
1533
- barrier.wait(0.5)
1534
- except threading.BrokenBarrierError:
1535
- results.append(True)
1536
-
1537
- def test_timeout(self):
1538
- """
1539
- Test wait(timeout)
1540
- """
1541
- results = self.DummyList()
1542
- self.run_threads(self._test_timeout_f, (self.barrier, results))
1543
- self.assertEqual(len(results), self.barrier.parties)
1544
-
1545
- @classmethod
1546
- def _test_default_timeout_f(cls, barrier, results):
1547
- i = barrier.wait(cls.defaultTimeout)
1548
- if i == cls.N//2:
1549
- # One thread is later than the default timeout
1550
- time.sleep(1.0)
1551
- try:
1552
- barrier.wait()
1553
- except threading.BrokenBarrierError:
1554
- results.append(True)
1555
-
1556
- def test_default_timeout(self):
1557
- """
1558
- Test the barrier's default timeout
1559
- """
1560
- barrier = self.Barrier(self.N, timeout=0.5)
1561
- results = self.DummyList()
1562
- self.run_threads(self._test_default_timeout_f, (barrier, results))
1563
- self.assertEqual(len(results), barrier.parties)
1564
-
1565
- def test_single_thread(self):
1566
- b = self.Barrier(1)
1567
- b.wait()
1568
- b.wait()
1569
-
1570
- @classmethod
1571
- def _test_thousand_f(cls, barrier, passes, conn, lock):
1572
- for i in range(passes):
1573
- barrier.wait()
1574
- with lock:
1575
- conn.send(i)
1576
-
1577
- def test_thousand(self):
1578
- if self.TYPE == 'manager':
1579
- self.skipTest('test not appropriate for {}'.format(self.TYPE))
1580
- passes = 1000
1581
- lock = self.Lock()
1582
- conn, child_conn = self.Pipe(False)
1583
- for j in range(self.N):
1584
- p = self.Process(target=self._test_thousand_f,
1585
- args=(self.barrier, passes, child_conn, lock))
1586
- p.start()
1587
- self.addCleanup(p.join)
1588
-
1589
- for i in range(passes):
1590
- for j in range(self.N):
1591
- self.assertEqual(conn.recv(), i)
1592
-
1593
- #
1594
- #
1595
- #
1596
-
1597
- class _TestValue(BaseTestCase):
1598
-
1599
- ALLOWED_TYPES = ('processes',)
1600
-
1601
- codes_values = [
1602
- ('i', 4343, 24234),
1603
- ('d', 3.625, -4.25),
1604
- ('h', -232, 234),
1605
- ('c', latin('x'), latin('y'))
1606
- ]
1607
-
1608
- def setUp(self):
1609
- if not HAS_SHAREDCTYPES:
1610
- self.skipTest("requires multiprocessing.sharedctypes")
1611
-
1612
- @classmethod
1613
- def _test(cls, values):
1614
- for sv, cv in zip(values, cls.codes_values):
1615
- sv.value = cv[2]
1616
-
1617
-
1618
- def test_value(self, raw=False):
1619
- if raw:
1620
- values = [self.RawValue(code, value)
1621
- for code, value, _ in self.codes_values]
1622
- else:
1623
- values = [self.Value(code, value)
1624
- for code, value, _ in self.codes_values]
1625
-
1626
- for sv, cv in zip(values, self.codes_values):
1627
- self.assertEqual(sv.value, cv[1])
1628
-
1629
- proc = self.Process(target=self._test, args=(values,))
1630
- proc.daemon = True
1631
- proc.start()
1632
- proc.join()
1633
-
1634
- for sv, cv in zip(values, self.codes_values):
1635
- self.assertEqual(sv.value, cv[2])
1636
-
1637
- def test_rawvalue(self):
1638
- self.test_value(raw=True)
1639
-
1640
- def test_getobj_getlock(self):
1641
- val1 = self.Value('i', 5)
1642
- lock1 = val1.get_lock()
1643
- obj1 = val1.get_obj()
1644
-
1645
- val2 = self.Value('i', 5, lock=None)
1646
- lock2 = val2.get_lock()
1647
- obj2 = val2.get_obj()
1648
-
1649
- lock = self.Lock()
1650
- val3 = self.Value('i', 5, lock=lock)
1651
- lock3 = val3.get_lock()
1652
- obj3 = val3.get_obj()
1653
- self.assertEqual(lock, lock3)
1654
-
1655
- arr4 = self.Value('i', 5, lock=False)
1656
- self.assertFalse(hasattr(arr4, 'get_lock'))
1657
- self.assertFalse(hasattr(arr4, 'get_obj'))
1658
-
1659
- self.assertRaises(AttributeError, self.Value, 'i', 5, lock='navalue')
1660
-
1661
- arr5 = self.RawValue('i', 5)
1662
- self.assertFalse(hasattr(arr5, 'get_lock'))
1663
- self.assertFalse(hasattr(arr5, 'get_obj'))
1664
-
1665
-
1666
- class _TestArray(BaseTestCase):
1667
-
1668
- ALLOWED_TYPES = ('processes',)
1669
-
1670
- @classmethod
1671
- def f(cls, seq):
1672
- for i in range(1, len(seq)):
1673
- seq[i] += seq[i-1]
1674
-
1675
- @unittest.skipIf(c_int is None, "requires _ctypes")
1676
- def test_array(self, raw=False):
1677
- seq = [680, 626, 934, 821, 150, 233, 548, 982, 714, 831]
1678
- if raw:
1679
- arr = self.RawArray('i', seq)
1680
- else:
1681
- arr = self.Array('i', seq)
1682
-
1683
- self.assertEqual(len(arr), len(seq))
1684
- self.assertEqual(arr[3], seq[3])
1685
- self.assertEqual(list(arr[2:7]), list(seq[2:7]))
1686
-
1687
- arr[4:8] = seq[4:8] = array.array('i', [1, 2, 3, 4])
1688
-
1689
- self.assertEqual(list(arr[:]), seq)
1690
-
1691
- self.f(seq)
1692
-
1693
- p = self.Process(target=self.f, args=(arr,))
1694
- p.daemon = True
1695
- p.start()
1696
- p.join()
1697
-
1698
- self.assertEqual(list(arr[:]), seq)
1699
-
1700
- @unittest.skipIf(c_int is None, "requires _ctypes")
1701
- def test_array_from_size(self):
1702
- size = 10
1703
- # Test for zeroing (see issue #11675).
1704
- # The repetition below strengthens the test by increasing the chances
1705
- # of previously allocated non-zero memory being used for the new array
1706
- # on the 2nd and 3rd loops.
1707
- for _ in range(3):
1708
- arr = self.Array('i', size)
1709
- self.assertEqual(len(arr), size)
1710
- self.assertEqual(list(arr), [0] * size)
1711
- arr[:] = range(10)
1712
- self.assertEqual(list(arr), list(range(10)))
1713
- del arr
1714
-
1715
- @unittest.skipIf(c_int is None, "requires _ctypes")
1716
- def test_rawarray(self):
1717
- self.test_array(raw=True)
1718
-
1719
- @unittest.skipIf(c_int is None, "requires _ctypes")
1720
- def test_getobj_getlock_obj(self):
1721
- arr1 = self.Array('i', list(range(10)))
1722
- lock1 = arr1.get_lock()
1723
- obj1 = arr1.get_obj()
1724
-
1725
- arr2 = self.Array('i', list(range(10)), lock=None)
1726
- lock2 = arr2.get_lock()
1727
- obj2 = arr2.get_obj()
1728
-
1729
- lock = self.Lock()
1730
- arr3 = self.Array('i', list(range(10)), lock=lock)
1731
- lock3 = arr3.get_lock()
1732
- obj3 = arr3.get_obj()
1733
- self.assertEqual(lock, lock3)
1734
-
1735
- arr4 = self.Array('i', range(10), lock=False)
1736
- self.assertFalse(hasattr(arr4, 'get_lock'))
1737
- self.assertFalse(hasattr(arr4, 'get_obj'))
1738
- self.assertRaises(AttributeError,
1739
- self.Array, 'i', range(10), lock='notalock')
1740
-
1741
- arr5 = self.RawArray('i', range(10))
1742
- self.assertFalse(hasattr(arr5, 'get_lock'))
1743
- self.assertFalse(hasattr(arr5, 'get_obj'))
1744
-
1745
- #
1746
- #
1747
- #
1748
-
1749
- class _TestContainers(BaseTestCase):
1750
-
1751
- ALLOWED_TYPES = ('manager',)
1752
-
1753
- def test_list(self):
1754
- a = self.list(list(range(10)))
1755
- self.assertEqual(a[:], list(range(10)))
1756
-
1757
- b = self.list()
1758
- self.assertEqual(b[:], [])
1759
-
1760
- b.extend(list(range(5)))
1761
- self.assertEqual(b[:], list(range(5)))
1762
-
1763
- self.assertEqual(b[2], 2)
1764
- self.assertEqual(b[2:10], [2,3,4])
1765
-
1766
- b *= 2
1767
- self.assertEqual(b[:], [0, 1, 2, 3, 4, 0, 1, 2, 3, 4])
1768
-
1769
- self.assertEqual(b + [5, 6], [0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 5, 6])
1770
-
1771
- self.assertEqual(a[:], list(range(10)))
1772
-
1773
- d = [a, b]
1774
- e = self.list(d)
1775
- self.assertEqual(
1776
- [element[:] for element in e],
1777
- [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 0, 1, 2, 3, 4]]
1778
- )
1779
-
1780
- f = self.list([a])
1781
- a.append('hello')
1782
- self.assertEqual(f[0][:], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'hello'])
1783
-
1784
- def test_list_proxy_in_list(self):
1785
- a = self.list([self.list(range(3)) for _i in range(3)])
1786
- self.assertEqual([inner[:] for inner in a], [[0, 1, 2]] * 3)
1787
-
1788
- a[0][-1] = 55
1789
- self.assertEqual(a[0][:], [0, 1, 55])
1790
- for i in range(1, 3):
1791
- self.assertEqual(a[i][:], [0, 1, 2])
1792
-
1793
- self.assertEqual(a[1].pop(), 2)
1794
- self.assertEqual(len(a[1]), 2)
1795
- for i in range(0, 3, 2):
1796
- self.assertEqual(len(a[i]), 3)
1797
-
1798
- del a
1799
-
1800
- b = self.list()
1801
- b.append(b)
1802
- del b
1803
-
1804
- def test_dict(self):
1805
- d = self.dict()
1806
- indices = list(range(65, 70))
1807
- for i in indices:
1808
- d[i] = chr(i)
1809
- self.assertEqual(d.copy(), dict((i, chr(i)) for i in indices))
1810
- self.assertEqual(sorted(d.keys()), indices)
1811
- self.assertEqual(sorted(d.values()), [chr(i) for i in indices])
1812
- self.assertEqual(sorted(d.items()), [(i, chr(i)) for i in indices])
1813
-
1814
- def test_dict_proxy_nested(self):
1815
- pets = self.dict(ferrets=2, hamsters=4)
1816
- supplies = self.dict(water=10, feed=3)
1817
- d = self.dict(pets=pets, supplies=supplies)
1818
-
1819
- self.assertEqual(supplies['water'], 10)
1820
- self.assertEqual(d['supplies']['water'], 10)
1821
-
1822
- d['supplies']['blankets'] = 5
1823
- self.assertEqual(supplies['blankets'], 5)
1824
- self.assertEqual(d['supplies']['blankets'], 5)
1825
-
1826
- d['supplies']['water'] = 7
1827
- self.assertEqual(supplies['water'], 7)
1828
- self.assertEqual(d['supplies']['water'], 7)
1829
-
1830
- del pets
1831
- del supplies
1832
- self.assertEqual(d['pets']['ferrets'], 2)
1833
- d['supplies']['blankets'] = 11
1834
- self.assertEqual(d['supplies']['blankets'], 11)
1835
-
1836
- pets = d['pets']
1837
- supplies = d['supplies']
1838
- supplies['water'] = 7
1839
- self.assertEqual(supplies['water'], 7)
1840
- self.assertEqual(d['supplies']['water'], 7)
1841
-
1842
- d.clear()
1843
- self.assertEqual(len(d), 0)
1844
- self.assertEqual(supplies['water'], 7)
1845
- self.assertEqual(pets['hamsters'], 4)
1846
-
1847
- l = self.list([pets, supplies])
1848
- l[0]['marmots'] = 1
1849
- self.assertEqual(pets['marmots'], 1)
1850
- self.assertEqual(l[0]['marmots'], 1)
1851
-
1852
- del pets
1853
- del supplies
1854
- self.assertEqual(l[0]['marmots'], 1)
1855
-
1856
- outer = self.list([[88, 99], l])
1857
- self.assertIsInstance(outer[0], list) # Not a ListProxy
1858
- self.assertEqual(outer[-1][-1]['feed'], 3)
1859
-
1860
- def test_namespace(self):
1861
- n = self.Namespace()
1862
- n.name = 'Bob'
1863
- n.job = 'Builder'
1864
- n._hidden = 'hidden'
1865
- self.assertEqual((n.name, n.job), ('Bob', 'Builder'))
1866
- del n.job
1867
- self.assertEqual(str(n), "Namespace(name='Bob')")
1868
- self.assertTrue(hasattr(n, 'name'))
1869
- self.assertTrue(not hasattr(n, 'job'))
1870
-
1871
- #
1872
- #
1873
- #
1874
-
1875
- def sqr(x, wait=0.0):
1876
- time.sleep(wait)
1877
- return x*x
1878
-
1879
- def mul(x, y):
1880
- return x*y
1881
-
1882
- def raise_large_valuerror(wait):
1883
- time.sleep(wait)
1884
- raise ValueError("x" * 1024**2)
1885
-
1886
- def identity(x):
1887
- return x
1888
-
1889
- class CountedObject(object):
1890
- n_instances = 0
1891
-
1892
- def __new__(cls):
1893
- cls.n_instances += 1
1894
- return object.__new__(cls)
1895
-
1896
- def __del__(self):
1897
- type(self).n_instances -= 1
1898
-
1899
- class SayWhenError(ValueError): pass
1900
-
1901
- def exception_throwing_generator(total, when):
1902
- if when == -1:
1903
- raise SayWhenError("Somebody said when")
1904
- for i in range(total):
1905
- if i == when:
1906
- raise SayWhenError("Somebody said when")
1907
- yield i
1908
-
1909
-
1910
- class _TestPool(BaseTestCase):
1911
-
1912
- @classmethod
1913
- def setUpClass(cls):
1914
- super().setUpClass()
1915
- cls.pool = cls.Pool(4)
1916
-
1917
- @classmethod
1918
- def tearDownClass(cls):
1919
- cls.pool.terminate()
1920
- cls.pool.join()
1921
- cls.pool = None
1922
- super().tearDownClass()
1923
-
1924
- def test_apply(self):
1925
- papply = self.pool.apply
1926
- self.assertEqual(papply(sqr, (5,)), sqr(5))
1927
- self.assertEqual(papply(sqr, (), {'x':3}), sqr(x=3))
1928
-
1929
- def test_map(self):
1930
- pmap = self.pool.map
1931
- self.assertEqual(pmap(sqr, list(range(10))), list(map(sqr, list(range(10)))))
1932
- self.assertEqual(pmap(sqr, list(range(100)), chunksize=20),
1933
- list(map(sqr, list(range(100)))))
1934
-
1935
- def test_starmap(self):
1936
- psmap = self.pool.starmap
1937
- tuples = list(zip(range(10), range(9,-1, -1)))
1938
- self.assertEqual(psmap(mul, tuples),
1939
- list(itertools.starmap(mul, tuples)))
1940
- tuples = list(zip(range(100), range(99,-1, -1)))
1941
- self.assertEqual(psmap(mul, tuples, chunksize=20),
1942
- list(itertools.starmap(mul, tuples)))
1943
-
1944
- def test_starmap_async(self):
1945
- tuples = list(zip(range(100), range(99,-1, -1)))
1946
- self.assertEqual(self.pool.starmap_async(mul, tuples).get(),
1947
- list(itertools.starmap(mul, tuples)))
1948
-
1949
- def test_map_async(self):
1950
- self.assertEqual(self.pool.map_async(sqr, list(range(10))).get(),
1951
- list(map(sqr, list(range(10)))))
1952
-
1953
- def test_map_async_callbacks(self):
1954
- call_args = self.manager.list() if self.TYPE == 'manager' else []
1955
- self.pool.map_async(int, ['1'],
1956
- callback=call_args.append,
1957
- error_callback=call_args.append).wait()
1958
- self.assertEqual(1, len(call_args))
1959
- self.assertEqual([1], call_args[0])
1960
- self.pool.map_async(int, ['a'],
1961
- callback=call_args.append,
1962
- error_callback=call_args.append).wait()
1963
- self.assertEqual(2, len(call_args))
1964
- self.assertIsInstance(call_args[1], ValueError)
1965
-
1966
- def test_map_unplicklable(self):
1967
- # Issue #19425 -- failure to pickle should not cause a hang
1968
- if self.TYPE == 'threads':
1969
- self.skipTest('test not appropriate for {}'.format(self.TYPE))
1970
- class A(object):
1971
- def __reduce__(self):
1972
- raise RuntimeError('cannot pickle')
1973
- with self.assertRaises(RuntimeError):
1974
- self.pool.map(sqr, [A()]*10)
1975
-
1976
- def test_map_chunksize(self):
1977
- try:
1978
- self.pool.map_async(sqr, [], chunksize=1).get(timeout=TIMEOUT1)
1979
- except multiprocessing.TimeoutError:
1980
- self.fail("pool.map_async with chunksize stalled on null list")
1981
-
1982
- def test_map_handle_iterable_exception(self):
1983
- if self.TYPE == 'manager':
1984
- self.skipTest('test not appropriate for {}'.format(self.TYPE))
1985
-
1986
- # SayWhenError seen at the very first of the iterable
1987
- with self.assertRaises(SayWhenError):
1988
- self.pool.map(sqr, exception_throwing_generator(1, -1), 1)
1989
- # again, make sure it's reentrant
1990
- with self.assertRaises(SayWhenError):
1991
- self.pool.map(sqr, exception_throwing_generator(1, -1), 1)
1992
-
1993
- with self.assertRaises(SayWhenError):
1994
- self.pool.map(sqr, exception_throwing_generator(10, 3), 1)
1995
-
1996
- class SpecialIterable:
1997
- def __iter__(self):
1998
- return self
1999
- def __next__(self):
2000
- raise SayWhenError
2001
- def __len__(self):
2002
- return 1
2003
- with self.assertRaises(SayWhenError):
2004
- self.pool.map(sqr, SpecialIterable(), 1)
2005
- with self.assertRaises(SayWhenError):
2006
- self.pool.map(sqr, SpecialIterable(), 1)
2007
-
2008
- def test_async(self):
2009
- res = self.pool.apply_async(sqr, (7, TIMEOUT1,))
2010
- get = TimingWrapper(res.get)
2011
- self.assertEqual(get(), 49)
2012
- self.assertTimingAlmostEqual(get.elapsed, TIMEOUT1)
2013
-
2014
- def test_async_timeout(self):
2015
- res = self.pool.apply_async(sqr, (6, TIMEOUT2 + 1.0))
2016
- get = TimingWrapper(res.get)
2017
- self.assertRaises(multiprocessing.TimeoutError, get, timeout=TIMEOUT2)
2018
- self.assertTimingAlmostEqual(get.elapsed, TIMEOUT2)
2019
-
2020
- def test_imap(self):
2021
- it = self.pool.imap(sqr, list(range(10)))
2022
- self.assertEqual(list(it), list(map(sqr, list(range(10)))))
2023
-
2024
- it = self.pool.imap(sqr, list(range(10)))
2025
- for i in range(10):
2026
- self.assertEqual(next(it), i*i)
2027
- self.assertRaises(StopIteration, it.__next__)
2028
-
2029
- it = self.pool.imap(sqr, list(range(1000)), chunksize=100)
2030
- for i in range(1000):
2031
- self.assertEqual(next(it), i*i)
2032
- self.assertRaises(StopIteration, it.__next__)
2033
-
2034
- def test_imap_handle_iterable_exception(self):
2035
- if self.TYPE == 'manager':
2036
- self.skipTest('test not appropriate for {}'.format(self.TYPE))
2037
-
2038
- # SayWhenError seen at the very first of the iterable
2039
- it = self.pool.imap(sqr, exception_throwing_generator(1, -1), 1)
2040
- self.assertRaises(SayWhenError, it.__next__)
2041
- # again, make sure it's reentrant
2042
- it = self.pool.imap(sqr, exception_throwing_generator(1, -1), 1)
2043
- self.assertRaises(SayWhenError, it.__next__)
2044
-
2045
- it = self.pool.imap(sqr, exception_throwing_generator(10, 3), 1)
2046
- for i in range(3):
2047
- self.assertEqual(next(it), i*i)
2048
- self.assertRaises(SayWhenError, it.__next__)
2049
-
2050
- # SayWhenError seen at start of problematic chunk's results
2051
- it = self.pool.imap(sqr, exception_throwing_generator(20, 7), 2)
2052
- for i in range(6):
2053
- self.assertEqual(next(it), i*i)
2054
- self.assertRaises(SayWhenError, it.__next__)
2055
- it = self.pool.imap(sqr, exception_throwing_generator(20, 7), 4)
2056
- for i in range(4):
2057
- self.assertEqual(next(it), i*i)
2058
- self.assertRaises(SayWhenError, it.__next__)
2059
-
2060
- def test_imap_unordered(self):
2061
- it = self.pool.imap_unordered(sqr, list(range(1000)))
2062
- self.assertEqual(sorted(it), list(map(sqr, list(range(1000)))))
2063
-
2064
- it = self.pool.imap_unordered(sqr, list(range(1000)), chunksize=53)
2065
- self.assertEqual(sorted(it), list(map(sqr, list(range(1000)))))
2066
-
2067
- def test_imap_unordered_handle_iterable_exception(self):
2068
- if self.TYPE == 'manager':
2069
- self.skipTest('test not appropriate for {}'.format(self.TYPE))
2070
-
2071
- # SayWhenError seen at the very first of the iterable
2072
- it = self.pool.imap_unordered(sqr,
2073
- exception_throwing_generator(1, -1),
2074
- 1)
2075
- self.assertRaises(SayWhenError, it.__next__)
2076
- # again, make sure it's reentrant
2077
- it = self.pool.imap_unordered(sqr,
2078
- exception_throwing_generator(1, -1),
2079
- 1)
2080
- self.assertRaises(SayWhenError, it.__next__)
2081
-
2082
- it = self.pool.imap_unordered(sqr,
2083
- exception_throwing_generator(10, 3),
2084
- 1)
2085
- expected_values = list(map(sqr, list(range(10))))
2086
- with self.assertRaises(SayWhenError):
2087
- # imap_unordered makes it difficult to anticipate the SayWhenError
2088
- for i in range(10):
2089
- value = next(it)
2090
- self.assertIn(value, expected_values)
2091
- expected_values.remove(value)
2092
-
2093
- it = self.pool.imap_unordered(sqr,
2094
- exception_throwing_generator(20, 7),
2095
- 2)
2096
- expected_values = list(map(sqr, list(range(20))))
2097
- with self.assertRaises(SayWhenError):
2098
- for i in range(20):
2099
- value = next(it)
2100
- self.assertIn(value, expected_values)
2101
- expected_values.remove(value)
2102
-
2103
- def test_make_pool(self):
2104
- expected_error = (RemoteError if self.TYPE == 'manager'
2105
- else ValueError)
2106
-
2107
- self.assertRaises(expected_error, self.Pool, -1)
2108
- self.assertRaises(expected_error, self.Pool, 0)
2109
-
2110
- if self.TYPE != 'manager':
2111
- p = self.Pool(3)
2112
- try:
2113
- self.assertEqual(3, len(p._pool))
2114
- finally:
2115
- p.close()
2116
- p.join()
2117
-
2118
- def test_terminate(self):
2119
- result = self.pool.map_async(
2120
- time.sleep, [0.1 for i in range(10000)], chunksize=1
2121
- )
2122
- self.pool.terminate()
2123
- join = TimingWrapper(self.pool.join)
2124
- join()
2125
- # Sanity check the pool didn't wait for all tasks to finish
2126
- self.assertLess(join.elapsed, 2.0)
2127
-
2128
- def test_empty_iterable(self):
2129
- # See Issue 12157
2130
- p = self.Pool(1)
2131
-
2132
- self.assertEqual(p.map(sqr, []), [])
2133
- self.assertEqual(list(p.imap(sqr, [])), [])
2134
- self.assertEqual(list(p.imap_unordered(sqr, [])), [])
2135
- self.assertEqual(p.map_async(sqr, []).get(), [])
2136
-
2137
- p.close()
2138
- p.join()
2139
-
2140
- def test_context(self):
2141
- if self.TYPE == 'processes':
2142
- L = list(range(10))
2143
- expected = [sqr(i) for i in L]
2144
- with self.Pool(2) as p:
2145
- r = p.map_async(sqr, L)
2146
- self.assertEqual(r.get(), expected)
2147
- self.assertRaises(ValueError, p.map_async, sqr, L)
2148
-
2149
- @classmethod
2150
- def _test_traceback(cls):
2151
- raise RuntimeError(123) # some comment
2152
-
2153
- def test_traceback(self):
2154
- # We want ensure that the traceback from the child process is
2155
- # contained in the traceback raised in the main process.
2156
- if self.TYPE == 'processes':
2157
- with self.Pool(1) as p:
2158
- try:
2159
- p.apply(self._test_traceback)
2160
- except Exception as e:
2161
- exc = e
2162
- else:
2163
- self.fail('expected RuntimeError')
2164
- self.assertIs(type(exc), RuntimeError)
2165
- self.assertEqual(exc.args, (123,))
2166
- cause = exc.__cause__
2167
- self.assertIs(type(cause), multiprocessing.pool.RemoteTraceback)
2168
- self.assertIn('raise RuntimeError(123) # some comment', cause.tb)
2169
-
2170
- with test.support.captured_stderr() as f1:
2171
- try:
2172
- raise exc
2173
- except RuntimeError:
2174
- sys.excepthook(*sys.exc_info())
2175
- self.assertIn('raise RuntimeError(123) # some comment',
2176
- f1.getvalue())
2177
- # _helper_reraises_exception should not make the error
2178
- # a remote exception
2179
- with self.Pool(1) as p:
2180
- try:
2181
- p.map(sqr, exception_throwing_generator(1, -1), 1)
2182
- except Exception as e:
2183
- exc = e
2184
- else:
2185
- self.fail('expected SayWhenError')
2186
- self.assertIs(type(exc), SayWhenError)
2187
- self.assertIs(exc.__cause__, None)
2188
-
2189
- @classmethod
2190
- def _test_wrapped_exception(cls):
2191
- raise RuntimeError('foo')
2192
-
2193
- def test_wrapped_exception(self):
2194
- # Issue #20980: Should not wrap exception when using thread pool
2195
- with self.Pool(1) as p:
2196
- with self.assertRaises(RuntimeError):
2197
- p.apply(self._test_wrapped_exception)
2198
-
2199
- def test_map_no_failfast(self):
2200
- # Issue #23992: the fail-fast behaviour when an exception is raised
2201
- # during map() would make Pool.join() deadlock, because a worker
2202
- # process would fill the result queue (after the result handler thread
2203
- # terminated, hence not draining it anymore).
2204
-
2205
- t_start = time.time()
2206
-
2207
- with self.assertRaises(ValueError):
2208
- with self.Pool(2) as p:
2209
- try:
2210
- p.map(raise_large_valuerror, [0, 1])
2211
- finally:
2212
- time.sleep(0.5)
2213
- p.close()
2214
- p.join()
2215
-
2216
- # check that we indeed waited for all jobs
2217
- self.assertGreater(time.time() - t_start, 0.9)
2218
-
2219
- def test_release_task_refs(self):
2220
- # Issue #29861: task arguments and results should not be kept
2221
- # alive after we are done with them.
2222
- objs = [CountedObject() for i in range(10)]
2223
- refs = [weakref.ref(o) for o in objs]
2224
- self.pool.map(identity, objs)
2225
-
2226
- del objs
2227
- time.sleep(DELTA) # let threaded cleanup code run
2228
- self.assertEqual(set(wr() for wr in refs), {None})
2229
- # With a process pool, copies of the objects are returned, check
2230
- # they were released too.
2231
- self.assertEqual(CountedObject.n_instances, 0)
2232
-
2233
-
2234
- def raising():
2235
- raise KeyError("key")
2236
-
2237
- def unpickleable_result():
2238
- return lambda: 42
2239
-
2240
- class _TestPoolWorkerErrors(BaseTestCase):
2241
- ALLOWED_TYPES = ('processes', )
2242
-
2243
- def test_async_error_callback(self):
2244
- p = multiprocessing.Pool(2)
2245
-
2246
- scratchpad = [None]
2247
- def errback(exc):
2248
- scratchpad[0] = exc
2249
-
2250
- res = p.apply_async(raising, error_callback=errback)
2251
- self.assertRaises(KeyError, res.get)
2252
- self.assertTrue(scratchpad[0])
2253
- self.assertIsInstance(scratchpad[0], KeyError)
2254
-
2255
- p.close()
2256
- p.join()
2257
-
2258
- def test_unpickleable_result(self):
2259
- from multiprocessing.pool import MaybeEncodingError
2260
- p = multiprocessing.Pool(2)
2261
-
2262
- # Make sure we don't lose pool processes because of encoding errors.
2263
- for iteration in range(20):
2264
-
2265
- scratchpad = [None]
2266
- def errback(exc):
2267
- scratchpad[0] = exc
2268
-
2269
- res = p.apply_async(unpickleable_result, error_callback=errback)
2270
- self.assertRaises(MaybeEncodingError, res.get)
2271
- wrapped = scratchpad[0]
2272
- self.assertTrue(wrapped)
2273
- self.assertIsInstance(scratchpad[0], MaybeEncodingError)
2274
- self.assertIsNotNone(wrapped.exc)
2275
- self.assertIsNotNone(wrapped.value)
2276
-
2277
- p.close()
2278
- p.join()
2279
-
2280
- class _TestPoolWorkerLifetime(BaseTestCase):
2281
- ALLOWED_TYPES = ('processes', )
2282
-
2283
- def test_pool_worker_lifetime(self):
2284
- p = multiprocessing.Pool(3, maxtasksperchild=10)
2285
- self.assertEqual(3, len(p._pool))
2286
- origworkerpids = [w.pid for w in p._pool]
2287
- # Run many tasks so each worker gets replaced (hopefully)
2288
- results = []
2289
- for i in range(100):
2290
- results.append(p.apply_async(sqr, (i, )))
2291
- # Fetch the results and verify we got the right answers,
2292
- # also ensuring all the tasks have completed.
2293
- for (j, res) in enumerate(results):
2294
- self.assertEqual(res.get(), sqr(j))
2295
- # Refill the pool
2296
- p._repopulate_pool()
2297
- # Wait until all workers are alive
2298
- # (countdown * DELTA = 5 seconds max startup process time)
2299
- countdown = 50
2300
- while countdown and not all(w.is_alive() for w in p._pool):
2301
- countdown -= 1
2302
- time.sleep(DELTA)
2303
- finalworkerpids = [w.pid for w in p._pool]
2304
- # All pids should be assigned. See issue #7805.
2305
- self.assertNotIn(None, origworkerpids)
2306
- self.assertNotIn(None, finalworkerpids)
2307
- # Finally, check that the worker pids have changed
2308
- self.assertNotEqual(sorted(origworkerpids), sorted(finalworkerpids))
2309
- p.close()
2310
- p.join()
2311
-
2312
- def test_pool_worker_lifetime_early_close(self):
2313
- # Issue #10332: closing a pool whose workers have limited lifetimes
2314
- # before all the tasks completed would make join() hang.
2315
- p = multiprocessing.Pool(3, maxtasksperchild=1)
2316
- results = []
2317
- for i in range(6):
2318
- results.append(p.apply_async(sqr, (i, 0.3)))
2319
- p.close()
2320
- p.join()
2321
- # check the results
2322
- for (j, res) in enumerate(results):
2323
- self.assertEqual(res.get(), sqr(j))
2324
-
2325
- #
2326
- # Test of creating a customized manager class
2327
- #
2328
-
2329
- from multiprocessing.managers import BaseManager, BaseProxy, RemoteError
2330
-
2331
- class FooBar(object):
2332
- def f(self):
2333
- return 'f()'
2334
- def g(self):
2335
- raise ValueError
2336
- def _h(self):
2337
- return '_h()'
2338
-
2339
- def baz():
2340
- for i in range(10):
2341
- yield i*i
2342
-
2343
- class IteratorProxy(BaseProxy):
2344
- _exposed_ = ('__next__',)
2345
- def __iter__(self):
2346
- return self
2347
- def __next__(self):
2348
- return self._callmethod('__next__')
2349
-
2350
- class MyManager(BaseManager):
2351
- pass
2352
-
2353
- MyManager.register('Foo', callable=FooBar)
2354
- MyManager.register('Bar', callable=FooBar, exposed=('f', '_h'))
2355
- MyManager.register('baz', callable=baz, proxytype=IteratorProxy)
2356
-
2357
-
2358
- class _TestMyManager(BaseTestCase):
2359
-
2360
- ALLOWED_TYPES = ('manager',)
2361
-
2362
- def test_mymanager(self):
2363
- manager = MyManager()
2364
- manager.start()
2365
- self.common(manager)
2366
- manager.shutdown()
2367
-
2368
- # If the manager process exited cleanly then the exitcode
2369
- # will be zero. Otherwise (after a short timeout)
2370
- # terminate() is used, resulting in an exitcode of -SIGTERM.
2371
- self.assertEqual(manager._process.exitcode, 0)
2372
-
2373
- def test_mymanager_context(self):
2374
- with MyManager() as manager:
2375
- self.common(manager)
2376
- self.assertEqual(manager._process.exitcode, 0)
2377
-
2378
- def test_mymanager_context_prestarted(self):
2379
- manager = MyManager()
2380
- manager.start()
2381
- with manager:
2382
- self.common(manager)
2383
- self.assertEqual(manager._process.exitcode, 0)
2384
-
2385
- def common(self, manager):
2386
- foo = manager.Foo()
2387
- bar = manager.Bar()
2388
- baz = manager.baz()
2389
-
2390
- foo_methods = [name for name in ('f', 'g', '_h') if hasattr(foo, name)]
2391
- bar_methods = [name for name in ('f', 'g', '_h') if hasattr(bar, name)]
2392
-
2393
- self.assertEqual(foo_methods, ['f', 'g'])
2394
- self.assertEqual(bar_methods, ['f', '_h'])
2395
-
2396
- self.assertEqual(foo.f(), 'f()')
2397
- self.assertRaises(ValueError, foo.g)
2398
- self.assertEqual(foo._callmethod('f'), 'f()')
2399
- self.assertRaises(RemoteError, foo._callmethod, '_h')
2400
-
2401
- self.assertEqual(bar.f(), 'f()')
2402
- self.assertEqual(bar._h(), '_h()')
2403
- self.assertEqual(bar._callmethod('f'), 'f()')
2404
- self.assertEqual(bar._callmethod('_h'), '_h()')
2405
-
2406
- self.assertEqual(list(baz), [i*i for i in range(10)])
2407
-
2408
-
2409
- #
2410
- # Test of connecting to a remote server and using xmlrpclib for serialization
2411
- #
2412
-
2413
- _queue = pyqueue.Queue()
2414
- def get_queue():
2415
- return _queue
2416
-
2417
- class QueueManager(BaseManager):
2418
- '''manager class used by server process'''
2419
- QueueManager.register('get_queue', callable=get_queue)
2420
-
2421
- class QueueManager2(BaseManager):
2422
- '''manager class which specifies the same interface as QueueManager'''
2423
- QueueManager2.register('get_queue')
2424
-
2425
-
2426
- SERIALIZER = 'xmlrpclib'
2427
-
2428
- class _TestRemoteManager(BaseTestCase):
2429
-
2430
- ALLOWED_TYPES = ('manager',)
2431
- values = ['hello world', None, True, 2.25,
2432
- 'hall\xe5 v\xe4rlden',
2433
- '\u043f\u0440\u0438\u0432\u0456\u0442 \u0441\u0432\u0456\u0442',
2434
- b'hall\xe5 v\xe4rlden',
2435
- ]
2436
- result = values[:]
2437
-
2438
- @classmethod
2439
- def _putter(cls, address, authkey):
2440
- manager = QueueManager2(
2441
- address=address, authkey=authkey, serializer=SERIALIZER
2442
- )
2443
- manager.connect()
2444
- queue = manager.get_queue()
2445
- # Note that xmlrpclib will deserialize object as a list not a tuple
2446
- queue.put(tuple(cls.values))
2447
-
2448
- def test_remote(self):
2449
- authkey = os.urandom(32)
2450
-
2451
- manager = QueueManager(
2452
- address=(test.support.HOST, 0), authkey=authkey, serializer=SERIALIZER
2453
- )
2454
- manager.start()
2455
-
2456
- p = self.Process(target=self._putter, args=(manager.address, authkey))
2457
- p.daemon = True
2458
- p.start()
2459
-
2460
- manager2 = QueueManager2(
2461
- address=manager.address, authkey=authkey, serializer=SERIALIZER
2462
- )
2463
- manager2.connect()
2464
- queue = manager2.get_queue()
2465
-
2466
- self.assertEqual(queue.get(), self.result)
2467
-
2468
- # Because we are using xmlrpclib for serialization instead of
2469
- # pickle this will cause a serialization error.
2470
- self.assertRaises(Exception, queue.put, time.sleep)
2471
-
2472
- # Make queue finalizer run before the server is stopped
2473
- del queue
2474
- manager.shutdown()
2475
-
2476
- class _TestManagerRestart(BaseTestCase):
2477
-
2478
- @classmethod
2479
- def _putter(cls, address, authkey):
2480
- manager = QueueManager(
2481
- address=address, authkey=authkey, serializer=SERIALIZER)
2482
- manager.connect()
2483
- queue = manager.get_queue()
2484
- queue.put('hello world')
2485
-
2486
- def test_rapid_restart(self):
2487
- authkey = os.urandom(32)
2488
- manager = QueueManager(
2489
- address=(test.support.HOST, 0), authkey=authkey, serializer=SERIALIZER)
2490
- srvr = manager.get_server()
2491
- addr = srvr.address
2492
- # Close the connection.Listener socket which gets opened as a part
2493
- # of manager.get_server(). It's not needed for the test.
2494
- srvr.listener.close()
2495
- manager.start()
2496
-
2497
- p = self.Process(target=self._putter, args=(manager.address, authkey))
2498
- p.start()
2499
- p.join()
2500
- queue = manager.get_queue()
2501
- self.assertEqual(queue.get(), 'hello world')
2502
- del queue
2503
- manager.shutdown()
2504
-
2505
- manager = QueueManager(
2506
- address=addr, authkey=authkey, serializer=SERIALIZER)
2507
- try:
2508
- manager.start()
2509
- except OSError as e:
2510
- if e.errno != errno.EADDRINUSE:
2511
- raise
2512
- # Retry after some time, in case the old socket was lingering
2513
- # (sporadic failure on buildbots)
2514
- time.sleep(1.0)
2515
- manager = QueueManager(
2516
- address=addr, authkey=authkey, serializer=SERIALIZER)
2517
- manager.shutdown()
2518
-
2519
- #
2520
- #
2521
- #
2522
-
2523
- SENTINEL = latin('')
2524
-
2525
- class _TestConnection(BaseTestCase):
2526
-
2527
- ALLOWED_TYPES = ('processes', 'threads')
2528
-
2529
- @classmethod
2530
- def _echo(cls, conn):
2531
- for msg in iter(conn.recv_bytes, SENTINEL):
2532
- conn.send_bytes(msg)
2533
- conn.close()
2534
-
2535
- def test_connection(self):
2536
- conn, child_conn = self.Pipe()
2537
-
2538
- p = self.Process(target=self._echo, args=(child_conn,))
2539
- p.daemon = True
2540
- p.start()
2541
-
2542
- seq = [1, 2.25, None]
2543
- msg = latin('hello world')
2544
- longmsg = msg * 10
2545
- arr = array.array('i', list(range(4)))
2546
-
2547
- if self.TYPE == 'processes':
2548
- self.assertEqual(type(conn.fileno()), int)
2549
-
2550
- self.assertEqual(conn.send(seq), None)
2551
- self.assertEqual(conn.recv(), seq)
2552
-
2553
- self.assertEqual(conn.send_bytes(msg), None)
2554
- self.assertEqual(conn.recv_bytes(), msg)
2555
-
2556
- if self.TYPE == 'processes':
2557
- buffer = array.array('i', [0]*10)
2558
- expected = list(arr) + [0] * (10 - len(arr))
2559
- self.assertEqual(conn.send_bytes(arr), None)
2560
- self.assertEqual(conn.recv_bytes_into(buffer),
2561
- len(arr) * buffer.itemsize)
2562
- self.assertEqual(list(buffer), expected)
2563
-
2564
- buffer = array.array('i', [0]*10)
2565
- expected = [0] * 3 + list(arr) + [0] * (10 - 3 - len(arr))
2566
- self.assertEqual(conn.send_bytes(arr), None)
2567
- self.assertEqual(conn.recv_bytes_into(buffer, 3 * buffer.itemsize),
2568
- len(arr) * buffer.itemsize)
2569
- self.assertEqual(list(buffer), expected)
2570
-
2571
- buffer = bytearray(latin(' ' * 40))
2572
- self.assertEqual(conn.send_bytes(longmsg), None)
2573
- try:
2574
- res = conn.recv_bytes_into(buffer)
2575
- except multiprocessing.BufferTooShort as e:
2576
- self.assertEqual(e.args, (longmsg,))
2577
- else:
2578
- self.fail('expected BufferTooShort, got %s' % res)
2579
-
2580
- poll = TimingWrapper(conn.poll)
2581
-
2582
- self.assertEqual(poll(), False)
2583
- self.assertTimingAlmostEqual(poll.elapsed, 0)
2584
-
2585
- self.assertEqual(poll(-1), False)
2586
- self.assertTimingAlmostEqual(poll.elapsed, 0)
2587
-
2588
- self.assertEqual(poll(TIMEOUT1), False)
2589
- self.assertTimingAlmostEqual(poll.elapsed, TIMEOUT1)
2590
-
2591
- conn.send(None)
2592
- time.sleep(.1)
2593
-
2594
- self.assertEqual(poll(TIMEOUT1), True)
2595
- self.assertTimingAlmostEqual(poll.elapsed, 0)
2596
-
2597
- self.assertEqual(conn.recv(), None)
2598
-
2599
- really_big_msg = latin('X') * (1024 * 1024 * 16) # 16Mb
2600
- conn.send_bytes(really_big_msg)
2601
- self.assertEqual(conn.recv_bytes(), really_big_msg)
2602
-
2603
- conn.send_bytes(SENTINEL) # tell child to quit
2604
- child_conn.close()
2605
-
2606
- if self.TYPE == 'processes':
2607
- self.assertEqual(conn.readable, True)
2608
- self.assertEqual(conn.writable, True)
2609
- self.assertRaises(EOFError, conn.recv)
2610
- self.assertRaises(EOFError, conn.recv_bytes)
2611
-
2612
- p.join()
2613
-
2614
- def test_duplex_false(self):
2615
- reader, writer = self.Pipe(duplex=False)
2616
- self.assertEqual(writer.send(1), None)
2617
- self.assertEqual(reader.recv(), 1)
2618
- if self.TYPE == 'processes':
2619
- self.assertEqual(reader.readable, True)
2620
- self.assertEqual(reader.writable, False)
2621
- self.assertEqual(writer.readable, False)
2622
- self.assertEqual(writer.writable, True)
2623
- self.assertRaises(OSError, reader.send, 2)
2624
- self.assertRaises(OSError, writer.recv)
2625
- self.assertRaises(OSError, writer.poll)
2626
-
2627
- def test_spawn_close(self):
2628
- # We test that a pipe connection can be closed by parent
2629
- # process immediately after child is spawned. On Windows this
2630
- # would have sometimes failed on old versions because
2631
- # child_conn would be closed before the child got a chance to
2632
- # duplicate it.
2633
- conn, child_conn = self.Pipe()
2634
-
2635
- p = self.Process(target=self._echo, args=(child_conn,))
2636
- p.daemon = True
2637
- p.start()
2638
- child_conn.close() # this might complete before child initializes
2639
-
2640
- msg = latin('hello')
2641
- conn.send_bytes(msg)
2642
- self.assertEqual(conn.recv_bytes(), msg)
2643
-
2644
- conn.send_bytes(SENTINEL)
2645
- conn.close()
2646
- p.join()
2647
-
2648
- def test_sendbytes(self):
2649
- if self.TYPE != 'processes':
2650
- self.skipTest('test not appropriate for {}'.format(self.TYPE))
2651
-
2652
- msg = latin('abcdefghijklmnopqrstuvwxyz')
2653
- a, b = self.Pipe()
2654
-
2655
- a.send_bytes(msg)
2656
- self.assertEqual(b.recv_bytes(), msg)
2657
-
2658
- a.send_bytes(msg, 5)
2659
- self.assertEqual(b.recv_bytes(), msg[5:])
2660
-
2661
- a.send_bytes(msg, 7, 8)
2662
- self.assertEqual(b.recv_bytes(), msg[7:7+8])
2663
-
2664
- a.send_bytes(msg, 26)
2665
- self.assertEqual(b.recv_bytes(), latin(''))
2666
-
2667
- a.send_bytes(msg, 26, 0)
2668
- self.assertEqual(b.recv_bytes(), latin(''))
2669
-
2670
- self.assertRaises(ValueError, a.send_bytes, msg, 27)
2671
-
2672
- self.assertRaises(ValueError, a.send_bytes, msg, 22, 5)
2673
-
2674
- self.assertRaises(ValueError, a.send_bytes, msg, 26, 1)
2675
-
2676
- self.assertRaises(ValueError, a.send_bytes, msg, -1)
2677
-
2678
- self.assertRaises(ValueError, a.send_bytes, msg, 4, -1)
2679
-
2680
- @classmethod
2681
- def _is_fd_assigned(cls, fd):
2682
- try:
2683
- os.fstat(fd)
2684
- except OSError as e:
2685
- if e.errno == errno.EBADF:
2686
- return False
2687
- raise
2688
- else:
2689
- return True
2690
-
2691
- @classmethod
2692
- def _writefd(cls, conn, data, create_dummy_fds=False):
2693
- if create_dummy_fds:
2694
- for i in range(0, 256):
2695
- if not cls._is_fd_assigned(i):
2696
- os.dup2(conn.fileno(), i)
2697
- fd = reduction.recv_handle(conn)
2698
- if msvcrt:
2699
- fd = msvcrt.open_osfhandle(fd, os.O_WRONLY)
2700
- os.write(fd, data)
2701
- os.close(fd)
2702
-
2703
- @unittest.skipUnless(HAS_REDUCTION, "test needs multiprocessing.reduction")
2704
- def test_fd_transfer(self):
2705
- if self.TYPE != 'processes':
2706
- self.skipTest("only makes sense with processes")
2707
- conn, child_conn = self.Pipe(duplex=True)
2708
-
2709
- p = self.Process(target=self._writefd, args=(child_conn, b"foo"))
2710
- p.daemon = True
2711
- p.start()
2712
- self.addCleanup(test.support.unlink, test.support.TESTFN)
2713
- with open(test.support.TESTFN, "wb") as f:
2714
- fd = f.fileno()
2715
- if msvcrt:
2716
- fd = msvcrt.get_osfhandle(fd)
2717
- reduction.send_handle(conn, fd, p.pid)
2718
- p.join()
2719
- with open(test.support.TESTFN, "rb") as f:
2720
- self.assertEqual(f.read(), b"foo")
2721
-
2722
- @unittest.skipUnless(HAS_REDUCTION, "test needs multiprocessing.reduction")
2723
- @unittest.skipIf(sys.platform == "win32",
2724
- "test semantics don't make sense on Windows")
2725
- @unittest.skipIf(MAXFD <= 256,
2726
- "largest assignable fd number is too small")
2727
- @unittest.skipUnless(hasattr(os, "dup2"),
2728
- "test needs os.dup2()")
2729
- def test_large_fd_transfer(self):
2730
- # With fd > 256 (issue #11657)
2731
- if self.TYPE != 'processes':
2732
- self.skipTest("only makes sense with processes")
2733
- conn, child_conn = self.Pipe(duplex=True)
2734
-
2735
- p = self.Process(target=self._writefd, args=(child_conn, b"bar", True))
2736
- p.daemon = True
2737
- p.start()
2738
- self.addCleanup(test.support.unlink, test.support.TESTFN)
2739
- with open(test.support.TESTFN, "wb") as f:
2740
- fd = f.fileno()
2741
- for newfd in range(256, MAXFD):
2742
- if not self._is_fd_assigned(newfd):
2743
- break
2744
- else:
2745
- self.fail("could not find an unassigned large file descriptor")
2746
- os.dup2(fd, newfd)
2747
- try:
2748
- reduction.send_handle(conn, newfd, p.pid)
2749
- finally:
2750
- os.close(newfd)
2751
- p.join()
2752
- with open(test.support.TESTFN, "rb") as f:
2753
- self.assertEqual(f.read(), b"bar")
2754
-
2755
- @classmethod
2756
- def _send_data_without_fd(self, conn):
2757
- os.write(conn.fileno(), b"\0")
2758
-
2759
- @unittest.skipUnless(HAS_REDUCTION, "test needs multiprocessing.reduction")
2760
- @unittest.skipIf(sys.platform == "win32", "doesn't make sense on Windows")
2761
- def test_missing_fd_transfer(self):
2762
- # Check that exception is raised when received data is not
2763
- # accompanied by a file descriptor in ancillary data.
2764
- if self.TYPE != 'processes':
2765
- self.skipTest("only makes sense with processes")
2766
- conn, child_conn = self.Pipe(duplex=True)
2767
-
2768
- p = self.Process(target=self._send_data_without_fd, args=(child_conn,))
2769
- p.daemon = True
2770
- p.start()
2771
- self.assertRaises(RuntimeError, reduction.recv_handle, conn)
2772
- p.join()
2773
-
2774
- def test_context(self):
2775
- a, b = self.Pipe()
2776
-
2777
- with a, b:
2778
- a.send(1729)
2779
- self.assertEqual(b.recv(), 1729)
2780
- if self.TYPE == 'processes':
2781
- self.assertFalse(a.closed)
2782
- self.assertFalse(b.closed)
2783
-
2784
- if self.TYPE == 'processes':
2785
- self.assertTrue(a.closed)
2786
- self.assertTrue(b.closed)
2787
- self.assertRaises(OSError, a.recv)
2788
- self.assertRaises(OSError, b.recv)
2789
-
2790
- class _TestListener(BaseTestCase):
2791
-
2792
- ALLOWED_TYPES = ('processes',)
2793
-
2794
- def test_multiple_bind(self):
2795
- for family in self.connection.families:
2796
- l = self.connection.Listener(family=family)
2797
- self.addCleanup(l.close)
2798
- self.assertRaises(OSError, self.connection.Listener,
2799
- l.address, family)
2800
-
2801
- def test_context(self):
2802
- with self.connection.Listener() as l:
2803
- with self.connection.Client(l.address) as c:
2804
- with l.accept() as d:
2805
- c.send(1729)
2806
- self.assertEqual(d.recv(), 1729)
2807
-
2808
- if self.TYPE == 'processes':
2809
- self.assertRaises(OSError, l.accept)
2810
-
2811
- class _TestListenerClient(BaseTestCase):
2812
-
2813
- ALLOWED_TYPES = ('processes', 'threads')
2814
-
2815
- @classmethod
2816
- def _test(cls, address):
2817
- conn = cls.connection.Client(address)
2818
- conn.send('hello')
2819
- conn.close()
2820
-
2821
- def test_listener_client(self):
2822
- for family in self.connection.families:
2823
- l = self.connection.Listener(family=family)
2824
- p = self.Process(target=self._test, args=(l.address,))
2825
- p.daemon = True
2826
- p.start()
2827
- conn = l.accept()
2828
- self.assertEqual(conn.recv(), 'hello')
2829
- p.join()
2830
- l.close()
2831
-
2832
- def test_issue14725(self):
2833
- l = self.connection.Listener()
2834
- p = self.Process(target=self._test, args=(l.address,))
2835
- p.daemon = True
2836
- p.start()
2837
- time.sleep(1)
2838
- # On Windows the client process should by now have connected,
2839
- # written data and closed the pipe handle by now. This causes
2840
- # ConnectNamdedPipe() to fail with ERROR_NO_DATA. See Issue
2841
- # 14725.
2842
- conn = l.accept()
2843
- self.assertEqual(conn.recv(), 'hello')
2844
- conn.close()
2845
- p.join()
2846
- l.close()
2847
-
2848
- def test_issue16955(self):
2849
- for fam in self.connection.families:
2850
- l = self.connection.Listener(family=fam)
2851
- c = self.connection.Client(l.address)
2852
- a = l.accept()
2853
- a.send_bytes(b"hello")
2854
- self.assertTrue(c.poll(1))
2855
- a.close()
2856
- c.close()
2857
- l.close()
2858
-
2859
- class _TestPoll(BaseTestCase):
2860
-
2861
- ALLOWED_TYPES = ('processes', 'threads')
2862
-
2863
- def test_empty_string(self):
2864
- a, b = self.Pipe()
2865
- self.assertEqual(a.poll(), False)
2866
- b.send_bytes(b'')
2867
- self.assertEqual(a.poll(), True)
2868
- self.assertEqual(a.poll(), True)
2869
-
2870
- @classmethod
2871
- def _child_strings(cls, conn, strings):
2872
- for s in strings:
2873
- time.sleep(0.1)
2874
- conn.send_bytes(s)
2875
- conn.close()
2876
-
2877
- def test_strings(self):
2878
- strings = (b'hello', b'', b'a', b'b', b'', b'bye', b'', b'lop')
2879
- a, b = self.Pipe()
2880
- p = self.Process(target=self._child_strings, args=(b, strings))
2881
- p.start()
2882
-
2883
- for s in strings:
2884
- for i in range(200):
2885
- if a.poll(0.01):
2886
- break
2887
- x = a.recv_bytes()
2888
- self.assertEqual(s, x)
2889
-
2890
- p.join()
2891
-
2892
- @classmethod
2893
- def _child_boundaries(cls, r):
2894
- # Polling may "pull" a message in to the child process, but we
2895
- # don't want it to pull only part of a message, as that would
2896
- # corrupt the pipe for any other processes which might later
2897
- # read from it.
2898
- r.poll(5)
2899
-
2900
- def test_boundaries(self):
2901
- r, w = self.Pipe(False)
2902
- p = self.Process(target=self._child_boundaries, args=(r,))
2903
- p.start()
2904
- time.sleep(2)
2905
- L = [b"first", b"second"]
2906
- for obj in L:
2907
- w.send_bytes(obj)
2908
- w.close()
2909
- p.join()
2910
- self.assertIn(r.recv_bytes(), L)
2911
-
2912
- @classmethod
2913
- def _child_dont_merge(cls, b):
2914
- b.send_bytes(b'a')
2915
- b.send_bytes(b'b')
2916
- b.send_bytes(b'cd')
2917
-
2918
- def test_dont_merge(self):
2919
- a, b = self.Pipe()
2920
- self.assertEqual(a.poll(0.0), False)
2921
- self.assertEqual(a.poll(0.1), False)
2922
-
2923
- p = self.Process(target=self._child_dont_merge, args=(b,))
2924
- p.start()
2925
-
2926
- self.assertEqual(a.recv_bytes(), b'a')
2927
- self.assertEqual(a.poll(1.0), True)
2928
- self.assertEqual(a.poll(1.0), True)
2929
- self.assertEqual(a.recv_bytes(), b'b')
2930
- self.assertEqual(a.poll(1.0), True)
2931
- self.assertEqual(a.poll(1.0), True)
2932
- self.assertEqual(a.poll(0.0), True)
2933
- self.assertEqual(a.recv_bytes(), b'cd')
2934
-
2935
- p.join()
2936
-
2937
- #
2938
- # Test of sending connection and socket objects between processes
2939
- #
2940
-
2941
- @unittest.skipUnless(HAS_REDUCTION, "test needs multiprocessing.reduction")
2942
- class _TestPicklingConnections(BaseTestCase):
2943
-
2944
- ALLOWED_TYPES = ('processes',)
2945
-
2946
- @classmethod
2947
- def tearDownClass(cls):
2948
- from multiprocessing import resource_sharer
2949
- resource_sharer.stop(timeout=5)
2950
-
2951
- @classmethod
2952
- def _listener(cls, conn, families):
2953
- for fam in families:
2954
- l = cls.connection.Listener(family=fam)
2955
- conn.send(l.address)
2956
- new_conn = l.accept()
2957
- conn.send(new_conn)
2958
- new_conn.close()
2959
- l.close()
2960
-
2961
- l = socket.socket()
2962
- l.bind((test.support.HOST, 0))
2963
- l.listen()
2964
- conn.send(l.getsockname())
2965
- new_conn, addr = l.accept()
2966
- conn.send(new_conn)
2967
- new_conn.close()
2968
- l.close()
2969
-
2970
- conn.recv()
2971
-
2972
- @classmethod
2973
- def _remote(cls, conn):
2974
- for (address, msg) in iter(conn.recv, None):
2975
- client = cls.connection.Client(address)
2976
- client.send(msg.upper())
2977
- client.close()
2978
-
2979
- address, msg = conn.recv()
2980
- client = socket.socket()
2981
- client.connect(address)
2982
- client.sendall(msg.upper())
2983
- client.close()
2984
-
2985
- conn.close()
2986
-
2987
- def test_pickling(self):
2988
- families = self.connection.families
2989
-
2990
- lconn, lconn0 = self.Pipe()
2991
- lp = self.Process(target=self._listener, args=(lconn0, families))
2992
- lp.daemon = True
2993
- lp.start()
2994
- lconn0.close()
2995
-
2996
- rconn, rconn0 = self.Pipe()
2997
- rp = self.Process(target=self._remote, args=(rconn0,))
2998
- rp.daemon = True
2999
- rp.start()
3000
- rconn0.close()
3001
-
3002
- for fam in families:
3003
- msg = ('This connection uses family %s' % fam).encode('ascii')
3004
- address = lconn.recv()
3005
- rconn.send((address, msg))
3006
- new_conn = lconn.recv()
3007
- self.assertEqual(new_conn.recv(), msg.upper())
3008
-
3009
- rconn.send(None)
3010
-
3011
- msg = latin('This connection uses a normal socket')
3012
- address = lconn.recv()
3013
- rconn.send((address, msg))
3014
- new_conn = lconn.recv()
3015
- buf = []
3016
- while True:
3017
- s = new_conn.recv(100)
3018
- if not s:
3019
- break
3020
- buf.append(s)
3021
- buf = b''.join(buf)
3022
- self.assertEqual(buf, msg.upper())
3023
- new_conn.close()
3024
-
3025
- lconn.send(None)
3026
-
3027
- rconn.close()
3028
- lconn.close()
3029
-
3030
- lp.join()
3031
- rp.join()
3032
-
3033
- @classmethod
3034
- def child_access(cls, conn):
3035
- w = conn.recv()
3036
- w.send('all is well')
3037
- w.close()
3038
-
3039
- r = conn.recv()
3040
- msg = r.recv()
3041
- conn.send(msg*2)
3042
-
3043
- conn.close()
3044
-
3045
- def test_access(self):
3046
- # On Windows, if we do not specify a destination pid when
3047
- # using DupHandle then we need to be careful to use the
3048
- # correct access flags for DuplicateHandle(), or else
3049
- # DupHandle.detach() will raise PermissionError. For example,
3050
- # for a read only pipe handle we should use
3051
- # access=FILE_GENERIC_READ. (Unfortunately
3052
- # DUPLICATE_SAME_ACCESS does not work.)
3053
- conn, child_conn = self.Pipe()
3054
- p = self.Process(target=self.child_access, args=(child_conn,))
3055
- p.daemon = True
3056
- p.start()
3057
- child_conn.close()
3058
-
3059
- r, w = self.Pipe(duplex=False)
3060
- conn.send(w)
3061
- w.close()
3062
- self.assertEqual(r.recv(), 'all is well')
3063
- r.close()
3064
-
3065
- r, w = self.Pipe(duplex=False)
3066
- conn.send(r)
3067
- r.close()
3068
- w.send('foobar')
3069
- w.close()
3070
- self.assertEqual(conn.recv(), 'foobar'*2)
3071
-
3072
- p.join()
3073
-
3074
- #
3075
- #
3076
- #
3077
-
3078
- class _TestHeap(BaseTestCase):
3079
-
3080
- ALLOWED_TYPES = ('processes',)
3081
-
3082
- def test_heap(self):
3083
- iterations = 5000
3084
- maxblocks = 50
3085
- blocks = []
3086
-
3087
- # create and destroy lots of blocks of different sizes
3088
- for i in range(iterations):
3089
- size = int(random.lognormvariate(0, 1) * 1000)
3090
- b = multiprocessing.heap.BufferWrapper(size)
3091
- blocks.append(b)
3092
- if len(blocks) > maxblocks:
3093
- i = random.randrange(maxblocks)
3094
- del blocks[i]
3095
-
3096
- # get the heap object
3097
- heap = multiprocessing.heap.BufferWrapper._heap
3098
-
3099
- # verify the state of the heap
3100
- all = []
3101
- occupied = 0
3102
- heap._lock.acquire()
3103
- self.addCleanup(heap._lock.release)
3104
- for L in list(heap._len_to_seq.values()):
3105
- for arena, start, stop in L:
3106
- all.append((heap._arenas.index(arena), start, stop,
3107
- stop-start, 'free'))
3108
- for arena, start, stop in heap._allocated_blocks:
3109
- all.append((heap._arenas.index(arena), start, stop,
3110
- stop-start, 'occupied'))
3111
- occupied += (stop-start)
3112
-
3113
- all.sort()
3114
-
3115
- for i in range(len(all)-1):
3116
- (arena, start, stop) = all[i][:3]
3117
- (narena, nstart, nstop) = all[i+1][:3]
3118
- self.assertTrue((arena != narena and nstart == 0) or
3119
- (stop == nstart))
3120
-
3121
- def test_free_from_gc(self):
3122
- # Check that freeing of blocks by the garbage collector doesn't deadlock
3123
- # (issue #12352).
3124
- # Make sure the GC is enabled, and set lower collection thresholds to
3125
- # make collections more frequent (and increase the probability of
3126
- # deadlock).
3127
- if not gc.isenabled():
3128
- gc.enable()
3129
- self.addCleanup(gc.disable)
3130
- thresholds = gc.get_threshold()
3131
- self.addCleanup(gc.set_threshold, *thresholds)
3132
- gc.set_threshold(10)
3133
-
3134
- # perform numerous block allocations, with cyclic references to make
3135
- # sure objects are collected asynchronously by the gc
3136
- for i in range(5000):
3137
- a = multiprocessing.heap.BufferWrapper(1)
3138
- b = multiprocessing.heap.BufferWrapper(1)
3139
- # circular references
3140
- a.buddy = b
3141
- b.buddy = a
3142
-
3143
- #
3144
- #
3145
- #
3146
-
3147
- class _Foo(Structure):
3148
- _fields_ = [
3149
- ('x', c_int),
3150
- ('y', c_double)
3151
- ]
3152
-
3153
- class _TestSharedCTypes(BaseTestCase):
3154
-
3155
- ALLOWED_TYPES = ('processes',)
3156
-
3157
- def setUp(self):
3158
- if not HAS_SHAREDCTYPES:
3159
- self.skipTest("requires multiprocessing.sharedctypes")
3160
-
3161
- @classmethod
3162
- def _double(cls, x, y, foo, arr, string):
3163
- x.value *= 2
3164
- y.value *= 2
3165
- foo.x *= 2
3166
- foo.y *= 2
3167
- string.value *= 2
3168
- for i in range(len(arr)):
3169
- arr[i] *= 2
3170
-
3171
- def test_sharedctypes(self, lock=False):
3172
- x = Value('i', 7, lock=lock)
3173
- y = Value(c_double, 1.0/3.0, lock=lock)
3174
- foo = Value(_Foo, 3, 2, lock=lock)
3175
- arr = self.Array('d', list(range(10)), lock=lock)
3176
- string = self.Array('c', 20, lock=lock)
3177
- string.value = latin('hello')
3178
-
3179
- p = self.Process(target=self._double, args=(x, y, foo, arr, string))
3180
- p.daemon = True
3181
- p.start()
3182
- p.join()
3183
-
3184
- self.assertEqual(x.value, 14)
3185
- self.assertAlmostEqual(y.value, 2.0/3.0)
3186
- self.assertEqual(foo.x, 6)
3187
- self.assertAlmostEqual(foo.y, 4.0)
3188
- for i in range(10):
3189
- self.assertAlmostEqual(arr[i], i*2)
3190
- self.assertEqual(string.value, latin('hellohello'))
3191
-
3192
- def test_synchronize(self):
3193
- self.test_sharedctypes(lock=True)
3194
-
3195
- def test_copy(self):
3196
- foo = _Foo(2, 5.0)
3197
- bar = copy(foo)
3198
- foo.x = 0
3199
- foo.y = 0
3200
- self.assertEqual(bar.x, 2)
3201
- self.assertAlmostEqual(bar.y, 5.0)
3202
-
3203
- #
3204
- #
3205
- #
3206
-
3207
- class _TestFinalize(BaseTestCase):
3208
-
3209
- ALLOWED_TYPES = ('processes',)
3210
-
3211
- def setUp(self):
3212
- self.registry_backup = util._finalizer_registry.copy()
3213
- util._finalizer_registry.clear()
3214
-
3215
- def tearDown(self):
3216
- self.assertFalse(util._finalizer_registry)
3217
- util._finalizer_registry.update(self.registry_backup)
3218
-
3219
- @classmethod
3220
- def _test_finalize(cls, conn):
3221
- class Foo(object):
3222
- pass
3223
-
3224
- a = Foo()
3225
- util.Finalize(a, conn.send, args=('a',))
3226
- del a # triggers callback for a
3227
-
3228
- b = Foo()
3229
- close_b = util.Finalize(b, conn.send, args=('b',))
3230
- close_b() # triggers callback for b
3231
- close_b() # does nothing because callback has already been called
3232
- del b # does nothing because callback has already been called
3233
-
3234
- c = Foo()
3235
- util.Finalize(c, conn.send, args=('c',))
3236
-
3237
- d10 = Foo()
3238
- util.Finalize(d10, conn.send, args=('d10',), exitpriority=1)
3239
-
3240
- d01 = Foo()
3241
- util.Finalize(d01, conn.send, args=('d01',), exitpriority=0)
3242
- d02 = Foo()
3243
- util.Finalize(d02, conn.send, args=('d02',), exitpriority=0)
3244
- d03 = Foo()
3245
- util.Finalize(d03, conn.send, args=('d03',), exitpriority=0)
3246
-
3247
- util.Finalize(None, conn.send, args=('e',), exitpriority=-10)
3248
-
3249
- util.Finalize(None, conn.send, args=('STOP',), exitpriority=-100)
3250
-
3251
- # call multiprocessing's cleanup function then exit process without
3252
- # garbage collecting locals
3253
- util._exit_function()
3254
- conn.close()
3255
- os._exit(0)
3256
-
3257
- def test_finalize(self):
3258
- conn, child_conn = self.Pipe()
3259
-
3260
- p = self.Process(target=self._test_finalize, args=(child_conn,))
3261
- p.daemon = True
3262
- p.start()
3263
- p.join()
3264
-
3265
- result = [obj for obj in iter(conn.recv, 'STOP')]
3266
- self.assertEqual(result, ['a', 'b', 'd10', 'd03', 'd02', 'd01', 'e'])
3267
-
3268
- def test_thread_safety(self):
3269
- # bpo-24484: _run_finalizers() should be thread-safe
3270
- def cb():
3271
- pass
3272
-
3273
- class Foo(object):
3274
- def __init__(self):
3275
- self.ref = self # create reference cycle
3276
- # insert finalizer at random key
3277
- util.Finalize(self, cb, exitpriority=random.randint(1, 100))
3278
-
3279
- finish = False
3280
- exc = None
3281
-
3282
- def run_finalizers():
3283
- nonlocal exc
3284
- while not finish:
3285
- time.sleep(random.random() * 1e-1)
3286
- try:
3287
- # A GC run will eventually happen during this,
3288
- # collecting stale Foo's and mutating the registry
3289
- util._run_finalizers()
3290
- except Exception as e:
3291
- exc = e
3292
-
3293
- def make_finalizers():
3294
- nonlocal exc
3295
- d = {}
3296
- while not finish:
3297
- try:
3298
- # Old Foo's get gradually replaced and later
3299
- # collected by the GC (because of the cyclic ref)
3300
- d[random.getrandbits(5)] = {Foo() for i in range(10)}
3301
- except Exception as e:
3302
- exc = e
3303
- d.clear()
3304
-
3305
- old_interval = sys.getswitchinterval()
3306
- old_threshold = gc.get_threshold()
3307
- try:
3308
- sys.setswitchinterval(1e-6)
3309
- gc.set_threshold(5, 5, 5)
3310
- threads = [threading.Thread(target=run_finalizers),
3311
- threading.Thread(target=make_finalizers)]
3312
- with test.support.start_threads(threads):
3313
- time.sleep(4.0) # Wait a bit to trigger race condition
3314
- finish = True
3315
- if exc is not None:
3316
- raise exc
3317
- finally:
3318
- sys.setswitchinterval(old_interval)
3319
- gc.set_threshold(*old_threshold)
3320
- gc.collect() # Collect remaining Foo's
3321
-
3322
-
3323
- #
3324
- # Test that from ... import * works for each module
3325
- #
3326
-
3327
- class _TestImportStar(unittest.TestCase):
3328
-
3329
- def get_module_names(self):
3330
- import glob
3331
- folder = os.path.dirname(multiprocessing.__file__)
3332
- pattern = os.path.join(folder, '*.py')
3333
- files = glob.glob(pattern)
3334
- modules = [os.path.splitext(os.path.split(f)[1])[0] for f in files]
3335
- modules = ['multiprocessing.' + m for m in modules]
3336
- modules.remove('multiprocessing.__init__')
3337
- modules.append('multiprocessing')
3338
- return modules
3339
-
3340
- def test_import(self):
3341
- modules = self.get_module_names()
3342
- if sys.platform == 'win32':
3343
- modules.remove('multiprocessing.popen_fork')
3344
- modules.remove('multiprocessing.popen_forkserver')
3345
- modules.remove('multiprocessing.popen_spawn_posix')
3346
- else:
3347
- modules.remove('multiprocessing.popen_spawn_win32')
3348
- if not HAS_REDUCTION:
3349
- modules.remove('multiprocessing.popen_forkserver')
3350
-
3351
- if c_int is None:
3352
- # This module requires _ctypes
3353
- modules.remove('multiprocessing.sharedctypes')
3354
-
3355
- for name in modules:
3356
- __import__(name)
3357
- mod = sys.modules[name]
3358
- self.assertTrue(hasattr(mod, '__all__'), name)
3359
-
3360
- for attr in mod.__all__:
3361
- self.assertTrue(
3362
- hasattr(mod, attr),
3363
- '%r does not have attribute %r' % (mod, attr)
3364
- )
3365
-
3366
- #
3367
- # Quick test that logging works -- does not test logging output
3368
- #
3369
-
3370
- class _TestLogging(BaseTestCase):
3371
-
3372
- ALLOWED_TYPES = ('processes',)
3373
-
3374
- def test_enable_logging(self):
3375
- logger = multiprocessing.get_logger()
3376
- logger.setLevel(util.SUBWARNING)
3377
- self.assertTrue(logger is not None)
3378
- logger.debug('this will not be printed')
3379
- logger.info('nor will this')
3380
- logger.setLevel(LOG_LEVEL)
3381
-
3382
- @classmethod
3383
- def _test_level(cls, conn):
3384
- logger = multiprocessing.get_logger()
3385
- conn.send(logger.getEffectiveLevel())
3386
-
3387
- def test_level(self):
3388
- LEVEL1 = 32
3389
- LEVEL2 = 37
3390
-
3391
- logger = multiprocessing.get_logger()
3392
- root_logger = logging.getLogger()
3393
- root_level = root_logger.level
3394
-
3395
- reader, writer = multiprocessing.Pipe(duplex=False)
3396
-
3397
- logger.setLevel(LEVEL1)
3398
- p = self.Process(target=self._test_level, args=(writer,))
3399
- p.start()
3400
- self.assertEqual(LEVEL1, reader.recv())
3401
- p.join()
3402
-
3403
- logger.setLevel(logging.NOTSET)
3404
- root_logger.setLevel(LEVEL2)
3405
- p = self.Process(target=self._test_level, args=(writer,))
3406
- p.start()
3407
- self.assertEqual(LEVEL2, reader.recv())
3408
- p.join()
3409
-
3410
- root_logger.setLevel(root_level)
3411
- logger.setLevel(level=LOG_LEVEL)
3412
-
3413
-
3414
- # class _TestLoggingProcessName(BaseTestCase):
3415
- #
3416
- # def handle(self, record):
3417
- # assert record.processName == multiprocessing.current_process().name
3418
- # self.__handled = True
3419
- #
3420
- # def test_logging(self):
3421
- # handler = logging.Handler()
3422
- # handler.handle = self.handle
3423
- # self.__handled = False
3424
- # # Bypass getLogger() and side-effects
3425
- # logger = logging.getLoggerClass()(
3426
- # 'multiprocessing.test.TestLoggingProcessName')
3427
- # logger.addHandler(handler)
3428
- # logger.propagate = False
3429
- #
3430
- # logger.warn('foo')
3431
- # assert self.__handled
3432
-
3433
- #
3434
- # Check that Process.join() retries if os.waitpid() fails with EINTR
3435
- #
3436
-
3437
- class _TestPollEintr(BaseTestCase):
3438
-
3439
- ALLOWED_TYPES = ('processes',)
3440
-
3441
- @classmethod
3442
- def _killer(cls, pid):
3443
- time.sleep(0.1)
3444
- os.kill(pid, signal.SIGUSR1)
3445
-
3446
- @unittest.skipUnless(hasattr(signal, 'SIGUSR1'), 'requires SIGUSR1')
3447
- def test_poll_eintr(self):
3448
- got_signal = [False]
3449
- def record(*args):
3450
- got_signal[0] = True
3451
- pid = os.getpid()
3452
- oldhandler = signal.signal(signal.SIGUSR1, record)
3453
- try:
3454
- killer = self.Process(target=self._killer, args=(pid,))
3455
- killer.start()
3456
- try:
3457
- p = self.Process(target=time.sleep, args=(2,))
3458
- p.start()
3459
- p.join()
3460
- finally:
3461
- killer.join()
3462
- self.assertTrue(got_signal[0])
3463
- self.assertEqual(p.exitcode, 0)
3464
- finally:
3465
- signal.signal(signal.SIGUSR1, oldhandler)
3466
-
3467
- #
3468
- # Test to verify handle verification, see issue 3321
3469
- #
3470
-
3471
- class TestInvalidHandle(unittest.TestCase):
3472
-
3473
- @unittest.skipIf(WIN32, "skipped on Windows")
3474
- def test_invalid_handles(self):
3475
- conn = multiprocessing.connection.Connection(44977608)
3476
- # check that poll() doesn't crash
3477
- try:
3478
- conn.poll()
3479
- except (ValueError, OSError):
3480
- pass
3481
- finally:
3482
- # Hack private attribute _handle to avoid printing an error
3483
- # in conn.__del__
3484
- conn._handle = None
3485
- self.assertRaises((ValueError, OSError),
3486
- multiprocessing.connection.Connection, -1)
3487
-
3488
-
3489
-
3490
- class OtherTest(unittest.TestCase):
3491
- # TODO: add more tests for deliver/answer challenge.
3492
- def test_deliver_challenge_auth_failure(self):
3493
- class _FakeConnection(object):
3494
- def recv_bytes(self, size):
3495
- return b'something bogus'
3496
- def send_bytes(self, data):
3497
- pass
3498
- self.assertRaises(multiprocessing.AuthenticationError,
3499
- multiprocessing.connection.deliver_challenge,
3500
- _FakeConnection(), b'abc')
3501
-
3502
- def test_answer_challenge_auth_failure(self):
3503
- class _FakeConnection(object):
3504
- def __init__(self):
3505
- self.count = 0
3506
- def recv_bytes(self, size):
3507
- self.count += 1
3508
- if self.count == 1:
3509
- return multiprocessing.connection.CHALLENGE
3510
- elif self.count == 2:
3511
- return b'something bogus'
3512
- return b''
3513
- def send_bytes(self, data):
3514
- pass
3515
- self.assertRaises(multiprocessing.AuthenticationError,
3516
- multiprocessing.connection.answer_challenge,
3517
- _FakeConnection(), b'abc')
3518
-
3519
- #
3520
- # Test Manager.start()/Pool.__init__() initializer feature - see issue 5585
3521
- #
3522
-
3523
- def initializer(ns):
3524
- ns.test += 1
3525
-
3526
- class TestInitializers(unittest.TestCase):
3527
- def setUp(self):
3528
- self.mgr = multiprocessing.Manager()
3529
- self.ns = self.mgr.Namespace()
3530
- self.ns.test = 0
3531
-
3532
- def tearDown(self):
3533
- self.mgr.shutdown()
3534
- self.mgr.join()
3535
-
3536
- def test_manager_initializer(self):
3537
- m = multiprocessing.managers.SyncManager()
3538
- self.assertRaises(TypeError, m.start, 1)
3539
- m.start(initializer, (self.ns,))
3540
- self.assertEqual(self.ns.test, 1)
3541
- m.shutdown()
3542
- m.join()
3543
-
3544
- def test_pool_initializer(self):
3545
- self.assertRaises(TypeError, multiprocessing.Pool, initializer=1)
3546
- p = multiprocessing.Pool(1, initializer, (self.ns,))
3547
- p.close()
3548
- p.join()
3549
- self.assertEqual(self.ns.test, 1)
3550
-
3551
- #
3552
- # Issue 5155, 5313, 5331: Test process in processes
3553
- # Verifies os.close(sys.stdin.fileno) vs. sys.stdin.close() behavior
3554
- #
3555
-
3556
- def _this_sub_process(q):
3557
- try:
3558
- item = q.get(block=False)
3559
- except pyqueue.Empty:
3560
- pass
3561
-
3562
- def _test_process():
3563
- queue = multiprocessing.Queue()
3564
- subProc = multiprocessing.Process(target=_this_sub_process, args=(queue,))
3565
- subProc.daemon = True
3566
- subProc.start()
3567
- subProc.join()
3568
-
3569
- def _afunc(x):
3570
- return x*x
3571
-
3572
- def pool_in_process():
3573
- pool = multiprocessing.Pool(processes=4)
3574
- x = pool.map(_afunc, [1, 2, 3, 4, 5, 6, 7])
3575
- pool.close()
3576
- pool.join()
3577
-
3578
- class _file_like(object):
3579
- def __init__(self, delegate):
3580
- self._delegate = delegate
3581
- self._pid = None
3582
-
3583
- @property
3584
- def cache(self):
3585
- pid = os.getpid()
3586
- # There are no race conditions since fork keeps only the running thread
3587
- if pid != self._pid:
3588
- self._pid = pid
3589
- self._cache = []
3590
- return self._cache
3591
-
3592
- def write(self, data):
3593
- self.cache.append(data)
3594
-
3595
- def flush(self):
3596
- self._delegate.write(''.join(self.cache))
3597
- self._cache = []
3598
-
3599
- class TestStdinBadfiledescriptor(unittest.TestCase):
3600
-
3601
- def test_queue_in_process(self):
3602
- proc = multiprocessing.Process(target=_test_process)
3603
- proc.start()
3604
- proc.join()
3605
-
3606
- def test_pool_in_process(self):
3607
- p = multiprocessing.Process(target=pool_in_process)
3608
- p.start()
3609
- p.join()
3610
-
3611
- def test_flushing(self):
3612
- sio = io.StringIO()
3613
- flike = _file_like(sio)
3614
- flike.write('foo')
3615
- proc = multiprocessing.Process(target=lambda: flike.flush())
3616
- flike.flush()
3617
- assert sio.getvalue() == 'foo'
3618
-
3619
-
3620
- class TestWait(unittest.TestCase):
3621
-
3622
- @classmethod
3623
- def _child_test_wait(cls, w, slow):
3624
- for i in range(10):
3625
- if slow:
3626
- time.sleep(random.random()*0.1)
3627
- w.send((i, os.getpid()))
3628
- w.close()
3629
-
3630
- def test_wait(self, slow=False):
3631
- from multiprocessing.connection import wait
3632
- readers = []
3633
- procs = []
3634
- messages = []
3635
-
3636
- for i in range(4):
3637
- r, w = multiprocessing.Pipe(duplex=False)
3638
- p = multiprocessing.Process(target=self._child_test_wait, args=(w, slow))
3639
- p.daemon = True
3640
- p.start()
3641
- w.close()
3642
- readers.append(r)
3643
- procs.append(p)
3644
- self.addCleanup(p.join)
3645
-
3646
- while readers:
3647
- for r in wait(readers):
3648
- try:
3649
- msg = r.recv()
3650
- except EOFError:
3651
- readers.remove(r)
3652
- r.close()
3653
- else:
3654
- messages.append(msg)
3655
-
3656
- messages.sort()
3657
- expected = sorted((i, p.pid) for i in range(10) for p in procs)
3658
- self.assertEqual(messages, expected)
3659
-
3660
- @classmethod
3661
- def _child_test_wait_socket(cls, address, slow):
3662
- s = socket.socket()
3663
- s.connect(address)
3664
- for i in range(10):
3665
- if slow:
3666
- time.sleep(random.random()*0.1)
3667
- s.sendall(('%s\n' % i).encode('ascii'))
3668
- s.close()
3669
-
3670
- def test_wait_socket(self, slow=False):
3671
- from multiprocessing.connection import wait
3672
- l = socket.socket()
3673
- l.bind((test.support.HOST, 0))
3674
- l.listen()
3675
- addr = l.getsockname()
3676
- readers = []
3677
- procs = []
3678
- dic = {}
3679
-
3680
- for i in range(4):
3681
- p = multiprocessing.Process(target=self._child_test_wait_socket,
3682
- args=(addr, slow))
3683
- p.daemon = True
3684
- p.start()
3685
- procs.append(p)
3686
- self.addCleanup(p.join)
3687
-
3688
- for i in range(4):
3689
- r, _ = l.accept()
3690
- readers.append(r)
3691
- dic[r] = []
3692
- l.close()
3693
-
3694
- while readers:
3695
- for r in wait(readers):
3696
- msg = r.recv(32)
3697
- if not msg:
3698
- readers.remove(r)
3699
- r.close()
3700
- else:
3701
- dic[r].append(msg)
3702
-
3703
- expected = ''.join('%s\n' % i for i in range(10)).encode('ascii')
3704
- for v in dic.values():
3705
- self.assertEqual(b''.join(v), expected)
3706
-
3707
- def test_wait_slow(self):
3708
- self.test_wait(True)
3709
-
3710
- def test_wait_socket_slow(self):
3711
- self.test_wait_socket(True)
3712
-
3713
- def test_wait_timeout(self):
3714
- from multiprocessing.connection import wait
3715
-
3716
- expected = 5
3717
- a, b = multiprocessing.Pipe()
3718
-
3719
- start = time.time()
3720
- res = wait([a, b], expected)
3721
- delta = time.time() - start
3722
-
3723
- self.assertEqual(res, [])
3724
- self.assertLess(delta, expected * 2)
3725
- self.assertGreater(delta, expected * 0.5)
3726
-
3727
- b.send(None)
3728
-
3729
- start = time.time()
3730
- res = wait([a, b], 20)
3731
- delta = time.time() - start
3732
-
3733
- self.assertEqual(res, [a])
3734
- self.assertLess(delta, 0.4)
3735
-
3736
- @classmethod
3737
- def signal_and_sleep(cls, sem, period):
3738
- sem.release()
3739
- time.sleep(period)
3740
-
3741
- def test_wait_integer(self):
3742
- from multiprocessing.connection import wait
3743
-
3744
- expected = 3
3745
- sorted_ = lambda l: sorted(l, key=lambda x: id(x))
3746
- sem = multiprocessing.Semaphore(0)
3747
- a, b = multiprocessing.Pipe()
3748
- p = multiprocessing.Process(target=self.signal_and_sleep,
3749
- args=(sem, expected))
3750
-
3751
- p.start()
3752
- self.assertIsInstance(p.sentinel, int)
3753
- self.assertTrue(sem.acquire(timeout=20))
3754
-
3755
- start = time.time()
3756
- res = wait([a, p.sentinel, b], expected + 20)
3757
- delta = time.time() - start
3758
-
3759
- self.assertEqual(res, [p.sentinel])
3760
- self.assertLess(delta, expected + 2)
3761
- self.assertGreater(delta, expected - 2)
3762
-
3763
- a.send(None)
3764
-
3765
- start = time.time()
3766
- res = wait([a, p.sentinel, b], 20)
3767
- delta = time.time() - start
3768
-
3769
- self.assertEqual(sorted_(res), sorted_([p.sentinel, b]))
3770
- self.assertLess(delta, 0.4)
3771
-
3772
- b.send(None)
3773
-
3774
- start = time.time()
3775
- res = wait([a, p.sentinel, b], 20)
3776
- delta = time.time() - start
3777
-
3778
- self.assertEqual(sorted_(res), sorted_([a, p.sentinel, b]))
3779
- self.assertLess(delta, 0.4)
3780
-
3781
- p.terminate()
3782
- p.join()
3783
-
3784
- def test_neg_timeout(self):
3785
- from multiprocessing.connection import wait
3786
- a, b = multiprocessing.Pipe()
3787
- t = time.time()
3788
- res = wait([a], timeout=-1)
3789
- t = time.time() - t
3790
- self.assertEqual(res, [])
3791
- self.assertLess(t, 1)
3792
- a.close()
3793
- b.close()
3794
-
3795
- #
3796
- # Issue 14151: Test invalid family on invalid environment
3797
- #
3798
-
3799
- class TestInvalidFamily(unittest.TestCase):
3800
-
3801
- @unittest.skipIf(WIN32, "skipped on Windows")
3802
- def test_invalid_family(self):
3803
- with self.assertRaises(ValueError):
3804
- multiprocessing.connection.Listener(r'\\.\test')
3805
-
3806
- @unittest.skipUnless(WIN32, "skipped on non-Windows platforms")
3807
- def test_invalid_family_win32(self):
3808
- with self.assertRaises(ValueError):
3809
- multiprocessing.connection.Listener('/var/test.pipe')
3810
-
3811
- #
3812
- # Issue 12098: check sys.flags of child matches that for parent
3813
- #
3814
-
3815
- class TestFlags(unittest.TestCase):
3816
- @classmethod
3817
- def run_in_grandchild(cls, conn):
3818
- conn.send(tuple(sys.flags))
3819
-
3820
- @classmethod
3821
- def run_in_child(cls):
3822
- import json
3823
- r, w = multiprocessing.Pipe(duplex=False)
3824
- p = multiprocessing.Process(target=cls.run_in_grandchild, args=(w,))
3825
- p.start()
3826
- grandchild_flags = r.recv()
3827
- p.join()
3828
- r.close()
3829
- w.close()
3830
- flags = (tuple(sys.flags), grandchild_flags)
3831
- print(json.dumps(flags))
3832
-
3833
- def test_flags(self):
3834
- import json, subprocess
3835
- # start child process using unusual flags
3836
- prog = ('from test._test_multiprocessing import TestFlags; ' +
3837
- 'TestFlags.run_in_child()')
3838
- data = subprocess.check_output(
3839
- [sys.executable, '-E', '-S', '-O', '-c', prog])
3840
- child_flags, grandchild_flags = json.loads(data.decode('ascii'))
3841
- self.assertEqual(child_flags, grandchild_flags)
3842
-
3843
- #
3844
- # Test interaction with socket timeouts - see Issue #6056
3845
- #
3846
-
3847
- class TestTimeouts(unittest.TestCase):
3848
- @classmethod
3849
- def _test_timeout(cls, child, address):
3850
- time.sleep(1)
3851
- child.send(123)
3852
- child.close()
3853
- conn = multiprocessing.connection.Client(address)
3854
- conn.send(456)
3855
- conn.close()
3856
-
3857
- def test_timeout(self):
3858
- old_timeout = socket.getdefaulttimeout()
3859
- try:
3860
- socket.setdefaulttimeout(0.1)
3861
- parent, child = multiprocessing.Pipe(duplex=True)
3862
- l = multiprocessing.connection.Listener(family='AF_INET')
3863
- p = multiprocessing.Process(target=self._test_timeout,
3864
- args=(child, l.address))
3865
- p.start()
3866
- child.close()
3867
- self.assertEqual(parent.recv(), 123)
3868
- parent.close()
3869
- conn = l.accept()
3870
- self.assertEqual(conn.recv(), 456)
3871
- conn.close()
3872
- l.close()
3873
- p.join(10)
3874
- finally:
3875
- socket.setdefaulttimeout(old_timeout)
3876
-
3877
- #
3878
- # Test what happens with no "if __name__ == '__main__'"
3879
- #
3880
-
3881
- class TestNoForkBomb(unittest.TestCase):
3882
- def test_noforkbomb(self):
3883
- sm = multiprocessing.get_start_method()
3884
- name = os.path.join(os.path.dirname(__file__), 'mp_fork_bomb.py')
3885
- if sm != 'fork':
3886
- rc, out, err = test.support.script_helper.assert_python_failure(name, sm)
3887
- self.assertEqual(out, b'')
3888
- self.assertIn(b'RuntimeError', err)
3889
- else:
3890
- rc, out, err = test.support.script_helper.assert_python_ok(name, sm)
3891
- self.assertEqual(out.rstrip(), b'123')
3892
- self.assertEqual(err, b'')
3893
-
3894
- #
3895
- # Issue #17555: ForkAwareThreadLock
3896
- #
3897
-
3898
- class TestForkAwareThreadLock(unittest.TestCase):
3899
- # We recurisvely start processes. Issue #17555 meant that the
3900
- # after fork registry would get duplicate entries for the same
3901
- # lock. The size of the registry at generation n was ~2**n.
3902
-
3903
- @classmethod
3904
- def child(cls, n, conn):
3905
- if n > 1:
3906
- p = multiprocessing.Process(target=cls.child, args=(n-1, conn))
3907
- p.start()
3908
- conn.close()
3909
- p.join(timeout=5)
3910
- else:
3911
- conn.send(len(util._afterfork_registry))
3912
- conn.close()
3913
-
3914
- def test_lock(self):
3915
- r, w = multiprocessing.Pipe(False)
3916
- l = util.ForkAwareThreadLock()
3917
- old_size = len(util._afterfork_registry)
3918
- p = multiprocessing.Process(target=self.child, args=(5, w))
3919
- p.start()
3920
- w.close()
3921
- new_size = r.recv()
3922
- p.join(timeout=5)
3923
- self.assertLessEqual(new_size, old_size)
3924
-
3925
- #
3926
- # Check that non-forked child processes do not inherit unneeded fds/handles
3927
- #
3928
-
3929
- class TestCloseFds(unittest.TestCase):
3930
-
3931
- def get_high_socket_fd(self):
3932
- if WIN32:
3933
- # The child process will not have any socket handles, so
3934
- # calling socket.fromfd() should produce WSAENOTSOCK even
3935
- # if there is a handle of the same number.
3936
- return socket.socket().detach()
3937
- else:
3938
- # We want to produce a socket with an fd high enough that a
3939
- # freshly created child process will not have any fds as high.
3940
- fd = socket.socket().detach()
3941
- to_close = []
3942
- while fd < 50:
3943
- to_close.append(fd)
3944
- fd = os.dup(fd)
3945
- for x in to_close:
3946
- os.close(x)
3947
- return fd
3948
-
3949
- def close(self, fd):
3950
- if WIN32:
3951
- socket.socket(fileno=fd).close()
3952
- else:
3953
- os.close(fd)
3954
-
3955
- @classmethod
3956
- def _test_closefds(cls, conn, fd):
3957
- try:
3958
- s = socket.fromfd(fd, socket.AF_INET, socket.SOCK_STREAM)
3959
- except Exception as e:
3960
- conn.send(e)
3961
- else:
3962
- s.close()
3963
- conn.send(None)
3964
-
3965
- def test_closefd(self):
3966
- if not HAS_REDUCTION:
3967
- raise unittest.SkipTest('requires fd pickling')
3968
-
3969
- reader, writer = multiprocessing.Pipe()
3970
- fd = self.get_high_socket_fd()
3971
- try:
3972
- p = multiprocessing.Process(target=self._test_closefds,
3973
- args=(writer, fd))
3974
- p.start()
3975
- writer.close()
3976
- e = reader.recv()
3977
- p.join(timeout=5)
3978
- finally:
3979
- self.close(fd)
3980
- writer.close()
3981
- reader.close()
3982
-
3983
- if multiprocessing.get_start_method() == 'fork':
3984
- self.assertIs(e, None)
3985
- else:
3986
- WSAENOTSOCK = 10038
3987
- self.assertIsInstance(e, OSError)
3988
- self.assertTrue(e.errno == errno.EBADF or
3989
- e.winerror == WSAENOTSOCK, e)
3990
-
3991
- #
3992
- # Issue #17097: EINTR should be ignored by recv(), send(), accept() etc
3993
- #
3994
-
3995
- class TestIgnoreEINTR(unittest.TestCase):
3996
-
3997
- @classmethod
3998
- def _test_ignore(cls, conn):
3999
- def handler(signum, frame):
4000
- pass
4001
- signal.signal(signal.SIGUSR1, handler)
4002
- conn.send('ready')
4003
- x = conn.recv()
4004
- conn.send(x)
4005
- conn.send_bytes(b'x'*(1024*1024)) # sending 1 MB should block
4006
-
4007
- @unittest.skipUnless(hasattr(signal, 'SIGUSR1'), 'requires SIGUSR1')
4008
- def test_ignore(self):
4009
- conn, child_conn = multiprocessing.Pipe()
4010
- try:
4011
- p = multiprocessing.Process(target=self._test_ignore,
4012
- args=(child_conn,))
4013
- p.daemon = True
4014
- p.start()
4015
- child_conn.close()
4016
- self.assertEqual(conn.recv(), 'ready')
4017
- time.sleep(0.1)
4018
- os.kill(p.pid, signal.SIGUSR1)
4019
- time.sleep(0.1)
4020
- conn.send(1234)
4021
- self.assertEqual(conn.recv(), 1234)
4022
- time.sleep(0.1)
4023
- os.kill(p.pid, signal.SIGUSR1)
4024
- self.assertEqual(conn.recv_bytes(), b'x'*(1024*1024))
4025
- time.sleep(0.1)
4026
- p.join()
4027
- finally:
4028
- conn.close()
4029
-
4030
- @classmethod
4031
- def _test_ignore_listener(cls, conn):
4032
- def handler(signum, frame):
4033
- pass
4034
- signal.signal(signal.SIGUSR1, handler)
4035
- with multiprocessing.connection.Listener() as l:
4036
- conn.send(l.address)
4037
- a = l.accept()
4038
- a.send('welcome')
4039
-
4040
- @unittest.skipUnless(hasattr(signal, 'SIGUSR1'), 'requires SIGUSR1')
4041
- def test_ignore_listener(self):
4042
- conn, child_conn = multiprocessing.Pipe()
4043
- try:
4044
- p = multiprocessing.Process(target=self._test_ignore_listener,
4045
- args=(child_conn,))
4046
- p.daemon = True
4047
- p.start()
4048
- child_conn.close()
4049
- address = conn.recv()
4050
- time.sleep(0.1)
4051
- os.kill(p.pid, signal.SIGUSR1)
4052
- time.sleep(0.1)
4053
- client = multiprocessing.connection.Client(address)
4054
- self.assertEqual(client.recv(), 'welcome')
4055
- p.join()
4056
- finally:
4057
- conn.close()
4058
-
4059
- class TestStartMethod(unittest.TestCase):
4060
- @classmethod
4061
- def _check_context(cls, conn):
4062
- conn.send(multiprocessing.get_start_method())
4063
-
4064
- def check_context(self, ctx):
4065
- r, w = ctx.Pipe(duplex=False)
4066
- p = ctx.Process(target=self._check_context, args=(w,))
4067
- p.start()
4068
- w.close()
4069
- child_method = r.recv()
4070
- r.close()
4071
- p.join()
4072
- self.assertEqual(child_method, ctx.get_start_method())
4073
-
4074
- def test_context(self):
4075
- for method in ('fork', 'spawn', 'forkserver'):
4076
- try:
4077
- ctx = multiprocessing.get_context(method)
4078
- except ValueError:
4079
- continue
4080
- self.assertEqual(ctx.get_start_method(), method)
4081
- self.assertIs(ctx.get_context(), ctx)
4082
- self.assertRaises(ValueError, ctx.set_start_method, 'spawn')
4083
- self.assertRaises(ValueError, ctx.set_start_method, None)
4084
- self.check_context(ctx)
4085
-
4086
- def test_set_get(self):
4087
- multiprocessing.set_forkserver_preload(PRELOAD)
4088
- count = 0
4089
- old_method = multiprocessing.get_start_method()
4090
- try:
4091
- for method in ('fork', 'spawn', 'forkserver'):
4092
- try:
4093
- multiprocessing.set_start_method(method, force=True)
4094
- except ValueError:
4095
- continue
4096
- self.assertEqual(multiprocessing.get_start_method(), method)
4097
- ctx = multiprocessing.get_context()
4098
- self.assertEqual(ctx.get_start_method(), method)
4099
- self.assertTrue(type(ctx).__name__.lower().startswith(method))
4100
- self.assertTrue(
4101
- ctx.Process.__name__.lower().startswith(method))
4102
- self.check_context(multiprocessing)
4103
- count += 1
4104
- finally:
4105
- multiprocessing.set_start_method(old_method, force=True)
4106
- self.assertGreaterEqual(count, 1)
4107
-
4108
- def test_get_all(self):
4109
- methods = multiprocessing.get_all_start_methods()
4110
- if sys.platform == 'win32':
4111
- self.assertEqual(methods, ['spawn'])
4112
- else:
4113
- self.assertTrue(methods == ['fork', 'spawn'] or
4114
- methods == ['fork', 'spawn', 'forkserver'])
4115
-
4116
- def test_preload_resources(self):
4117
- if multiprocessing.get_start_method() != 'forkserver':
4118
- self.skipTest("test only relevant for 'forkserver' method")
4119
- name = os.path.join(os.path.dirname(__file__), 'mp_preload.py')
4120
- rc, out, err = test.support.script_helper.assert_python_ok(name)
4121
- out = out.decode()
4122
- err = err.decode()
4123
- if out.rstrip() != 'ok' or err != '':
4124
- print(out)
4125
- print(err)
4126
- self.fail("failed spawning forkserver or grandchild")
4127
-
4128
-
4129
- @unittest.skipIf(sys.platform == "win32",
4130
- "test semantics don't make sense on Windows")
4131
- class TestSemaphoreTracker(unittest.TestCase):
4132
-
4133
- def test_semaphore_tracker(self):
4134
- #
4135
- # Check that killing process does not leak named semaphores
4136
- #
4137
- import subprocess
4138
- cmd = '''if 1:
4139
- import multiprocessing as mp, time, os
4140
- mp.set_start_method("spawn")
4141
- lock1 = mp.Lock()
4142
- lock2 = mp.Lock()
4143
- os.write(%d, lock1._semlock.name.encode("ascii") + b"\\n")
4144
- os.write(%d, lock2._semlock.name.encode("ascii") + b"\\n")
4145
- time.sleep(10)
4146
- '''
4147
- r, w = os.pipe()
4148
- p = subprocess.Popen([sys.executable,
4149
- '-c', cmd % (w, w)],
4150
- pass_fds=[w],
4151
- stderr=subprocess.PIPE)
4152
- os.close(w)
4153
- with open(r, 'rb', closefd=True) as f:
4154
- name1 = f.readline().rstrip().decode('ascii')
4155
- name2 = f.readline().rstrip().decode('ascii')
4156
- _multiprocessing.sem_unlink(name1)
4157
- p.terminate()
4158
- p.wait()
4159
- time.sleep(2.0)
4160
- with self.assertRaises(OSError) as ctx:
4161
- _multiprocessing.sem_unlink(name2)
4162
- # docs say it should be ENOENT, but OSX seems to give EINVAL
4163
- self.assertIn(ctx.exception.errno, (errno.ENOENT, errno.EINVAL))
4164
- err = p.stderr.read().decode('utf-8')
4165
- p.stderr.close()
4166
- expected = 'semaphore_tracker: There appear to be 2 leaked semaphores'
4167
- self.assertRegex(err, expected)
4168
- self.assertRegex(err, r'semaphore_tracker: %r: \[Errno' % name1)
4169
-
4170
- def check_semaphore_tracker_death(self, signum, should_die):
4171
- # bpo-31310: if the semaphore tracker process has died, it should
4172
- # be restarted implicitly.
4173
- from multiprocessing.semaphore_tracker import _semaphore_tracker
4174
- _semaphore_tracker.ensure_running()
4175
- pid = _semaphore_tracker._pid
4176
- os.kill(pid, signum)
4177
- time.sleep(1.0) # give it time to die
4178
-
4179
- ctx = multiprocessing.get_context("spawn")
4180
- with contextlib.ExitStack() as stack:
4181
- if should_die:
4182
- stack.enter_context(self.assertWarnsRegex(
4183
- UserWarning,
4184
- "semaphore_tracker: process died"))
4185
- sem = ctx.Semaphore()
4186
- sem.acquire()
4187
- sem.release()
4188
- wr = weakref.ref(sem)
4189
- # ensure `sem` gets collected, which triggers communication with
4190
- # the semaphore tracker
4191
- del sem
4192
- gc.collect()
4193
- self.assertIsNone(wr())
4194
-
4195
- def test_semaphore_tracker_sigint(self):
4196
- # Catchable signal (ignored by semaphore tracker)
4197
- self.check_semaphore_tracker_death(signal.SIGINT, False)
4198
-
4199
- def test_semaphore_tracker_sigkill(self):
4200
- # Uncatchable signal.
4201
- self.check_semaphore_tracker_death(signal.SIGKILL, True)
4202
-
4203
-
4204
- class TestSimpleQueue(unittest.TestCase):
4205
-
4206
- @classmethod
4207
- def _test_empty(cls, queue, child_can_start, parent_can_continue):
4208
- child_can_start.wait()
4209
- # issue 30301, could fail under spawn and forkserver
4210
- try:
4211
- queue.put(queue.empty())
4212
- queue.put(queue.empty())
4213
- finally:
4214
- parent_can_continue.set()
4215
-
4216
- def test_empty(self):
4217
- queue = multiprocessing.SimpleQueue()
4218
- child_can_start = multiprocessing.Event()
4219
- parent_can_continue = multiprocessing.Event()
4220
-
4221
- proc = multiprocessing.Process(
4222
- target=self._test_empty,
4223
- args=(queue, child_can_start, parent_can_continue)
4224
- )
4225
- proc.daemon = True
4226
- proc.start()
4227
-
4228
- self.assertTrue(queue.empty())
4229
-
4230
- child_can_start.set()
4231
- parent_can_continue.wait()
4232
-
4233
- self.assertFalse(queue.empty())
4234
- self.assertEqual(queue.get(), True)
4235
- self.assertEqual(queue.get(), False)
4236
- self.assertTrue(queue.empty())
4237
-
4238
- proc.join()
4239
-
4240
- #
4241
- # Mixins
4242
- #
4243
-
4244
- class BaseMixin(object):
4245
- @classmethod
4246
- def setUpClass(cls):
4247
- cls.dangling = (multiprocessing.process._dangling.copy(),
4248
- threading._dangling.copy())
4249
-
4250
- @classmethod
4251
- def tearDownClass(cls):
4252
- # bpo-26762: Some multiprocessing objects like Pool create reference
4253
- # cycles. Trigger a garbage collection to break these cycles.
4254
- test.support.gc_collect()
4255
-
4256
- processes = set(multiprocessing.process._dangling) - set(cls.dangling[0])
4257
- if processes:
4258
- print('Warning -- Dangling processes: %s' % processes,
4259
- file=sys.stderr)
4260
- processes = None
4261
-
4262
- threads = set(threading._dangling) - set(cls.dangling[1])
4263
- if threads:
4264
- print('Warning -- Dangling threads: %s' % threads,
4265
- file=sys.stderr)
4266
- threads = None
4267
-
4268
-
4269
- class ProcessesMixin(BaseMixin):
4270
- TYPE = 'processes'
4271
- Process = multiprocessing.Process
4272
- connection = multiprocessing.connection
4273
- current_process = staticmethod(multiprocessing.current_process)
4274
- active_children = staticmethod(multiprocessing.active_children)
4275
- Pool = staticmethod(multiprocessing.Pool)
4276
- Pipe = staticmethod(multiprocessing.Pipe)
4277
- Queue = staticmethod(multiprocessing.Queue)
4278
- JoinableQueue = staticmethod(multiprocessing.JoinableQueue)
4279
- Lock = staticmethod(multiprocessing.Lock)
4280
- RLock = staticmethod(multiprocessing.RLock)
4281
- Semaphore = staticmethod(multiprocessing.Semaphore)
4282
- BoundedSemaphore = staticmethod(multiprocessing.BoundedSemaphore)
4283
- Condition = staticmethod(multiprocessing.Condition)
4284
- Event = staticmethod(multiprocessing.Event)
4285
- Barrier = staticmethod(multiprocessing.Barrier)
4286
- Value = staticmethod(multiprocessing.Value)
4287
- Array = staticmethod(multiprocessing.Array)
4288
- RawValue = staticmethod(multiprocessing.RawValue)
4289
- RawArray = staticmethod(multiprocessing.RawArray)
4290
-
4291
-
4292
- class ManagerMixin(BaseMixin):
4293
- TYPE = 'manager'
4294
- Process = multiprocessing.Process
4295
- Queue = property(operator.attrgetter('manager.Queue'))
4296
- JoinableQueue = property(operator.attrgetter('manager.JoinableQueue'))
4297
- Lock = property(operator.attrgetter('manager.Lock'))
4298
- RLock = property(operator.attrgetter('manager.RLock'))
4299
- Semaphore = property(operator.attrgetter('manager.Semaphore'))
4300
- BoundedSemaphore = property(operator.attrgetter('manager.BoundedSemaphore'))
4301
- Condition = property(operator.attrgetter('manager.Condition'))
4302
- Event = property(operator.attrgetter('manager.Event'))
4303
- Barrier = property(operator.attrgetter('manager.Barrier'))
4304
- Value = property(operator.attrgetter('manager.Value'))
4305
- Array = property(operator.attrgetter('manager.Array'))
4306
- list = property(operator.attrgetter('manager.list'))
4307
- dict = property(operator.attrgetter('manager.dict'))
4308
- Namespace = property(operator.attrgetter('manager.Namespace'))
4309
-
4310
- @classmethod
4311
- def Pool(cls, *args, **kwds):
4312
- return cls.manager.Pool(*args, **kwds)
4313
-
4314
- @classmethod
4315
- def setUpClass(cls):
4316
- super().setUpClass()
4317
- cls.manager = multiprocessing.Manager()
4318
-
4319
- @classmethod
4320
- def tearDownClass(cls):
4321
- # only the manager process should be returned by active_children()
4322
- # but this can take a bit on slow machines, so wait a few seconds
4323
- # if there are other children too (see #17395)
4324
- start_time = time.monotonic()
4325
- t = 0.01
4326
- while len(multiprocessing.active_children()) > 1:
4327
- time.sleep(t)
4328
- t *= 2
4329
- dt = time.monotonic() - start_time
4330
- if dt >= 5.0:
4331
- print("Warning -- multiprocessing.Manager still has %s active "
4332
- "children after %s seconds"
4333
- % (multiprocessing.active_children(), dt),
4334
- file=sys.stderr)
4335
- break
4336
-
4337
- gc.collect() # do garbage collection
4338
- if cls.manager._number_of_objects() != 0:
4339
- # This is not really an error since some tests do not
4340
- # ensure that all processes which hold a reference to a
4341
- # managed object have been joined.
4342
- print('Warning -- Shared objects which still exist at manager '
4343
- 'shutdown:')
4344
- print(cls.manager._debug_info())
4345
- cls.manager.shutdown()
4346
- cls.manager.join()
4347
- cls.manager = None
4348
-
4349
- super().tearDownClass()
4350
-
4351
-
4352
- class ThreadsMixin(BaseMixin):
4353
- TYPE = 'threads'
4354
- Process = multiprocessing.dummy.Process
4355
- connection = multiprocessing.dummy.connection
4356
- current_process = staticmethod(multiprocessing.dummy.current_process)
4357
- active_children = staticmethod(multiprocessing.dummy.active_children)
4358
- Pool = staticmethod(multiprocessing.dummy.Pool)
4359
- Pipe = staticmethod(multiprocessing.dummy.Pipe)
4360
- Queue = staticmethod(multiprocessing.dummy.Queue)
4361
- JoinableQueue = staticmethod(multiprocessing.dummy.JoinableQueue)
4362
- Lock = staticmethod(multiprocessing.dummy.Lock)
4363
- RLock = staticmethod(multiprocessing.dummy.RLock)
4364
- Semaphore = staticmethod(multiprocessing.dummy.Semaphore)
4365
- BoundedSemaphore = staticmethod(multiprocessing.dummy.BoundedSemaphore)
4366
- Condition = staticmethod(multiprocessing.dummy.Condition)
4367
- Event = staticmethod(multiprocessing.dummy.Event)
4368
- Barrier = staticmethod(multiprocessing.dummy.Barrier)
4369
- Value = staticmethod(multiprocessing.dummy.Value)
4370
- Array = staticmethod(multiprocessing.dummy.Array)
4371
-
4372
- #
4373
- # Functions used to create test cases from the base ones in this module
4374
- #
4375
-
4376
- def install_tests_in_module_dict(remote_globs, start_method):
4377
- __module__ = remote_globs['__name__']
4378
- local_globs = globals()
4379
- ALL_TYPES = {'processes', 'threads', 'manager'}
4380
-
4381
- for name, base in local_globs.items():
4382
- if not isinstance(base, type):
4383
- continue
4384
- if issubclass(base, BaseTestCase):
4385
- if base is BaseTestCase:
4386
- continue
4387
- assert set(base.ALLOWED_TYPES) <= ALL_TYPES, base.ALLOWED_TYPES
4388
- for type_ in base.ALLOWED_TYPES:
4389
- newname = 'With' + type_.capitalize() + name[1:]
4390
- Mixin = local_globs[type_.capitalize() + 'Mixin']
4391
- class Temp(base, Mixin, unittest.TestCase):
4392
- pass
4393
- Temp.__name__ = Temp.__qualname__ = newname
4394
- Temp.__module__ = __module__
4395
- remote_globs[newname] = Temp
4396
- elif issubclass(base, unittest.TestCase):
4397
- class Temp(base, object):
4398
- pass
4399
- Temp.__name__ = Temp.__qualname__ = name
4400
- Temp.__module__ = __module__
4401
- remote_globs[name] = Temp
4402
-
4403
- dangling = [None, None]
4404
- old_start_method = [None]
4405
-
4406
- def setUpModule():
4407
- multiprocessing.set_forkserver_preload(PRELOAD)
4408
- multiprocessing.process._cleanup()
4409
- dangling[0] = multiprocessing.process._dangling.copy()
4410
- dangling[1] = threading._dangling.copy()
4411
- old_start_method[0] = multiprocessing.get_start_method(allow_none=True)
4412
- try:
4413
- multiprocessing.set_start_method(start_method, force=True)
4414
- except ValueError:
4415
- raise unittest.SkipTest(start_method +
4416
- ' start method not supported')
4417
-
4418
- if sys.platform.startswith("linux"):
4419
- try:
4420
- lock = multiprocessing.RLock()
4421
- except OSError:
4422
- raise unittest.SkipTest("OSError raises on RLock creation, "
4423
- "see issue 3111!")
4424
- check_enough_semaphores()
4425
- util.get_temp_dir() # creates temp directory
4426
- multiprocessing.get_logger().setLevel(LOG_LEVEL)
4427
-
4428
- def tearDownModule():
4429
- need_sleep = False
4430
-
4431
- # bpo-26762: Some multiprocessing objects like Pool create reference
4432
- # cycles. Trigger a garbage collection to break these cycles.
4433
- test.support.gc_collect()
4434
-
4435
- multiprocessing.set_start_method(old_start_method[0], force=True)
4436
- # pause a bit so we don't get warning about dangling threads/processes
4437
- processes = set(multiprocessing.process._dangling) - set(dangling[0])
4438
- if processes:
4439
- need_sleep = True
4440
- print('Warning -- Dangling processes: %s' % processes,
4441
- file=sys.stderr)
4442
- processes = None
4443
-
4444
- threads = set(threading._dangling) - set(dangling[1])
4445
- if threads:
4446
- need_sleep = True
4447
- print('Warning -- Dangling threads: %s' % threads,
4448
- file=sys.stderr)
4449
- threads = None
4450
-
4451
- # Sleep 500 ms to give time to child processes to complete.
4452
- if need_sleep:
4453
- time.sleep(0.5)
4454
- multiprocessing.process._cleanup()
4455
- test.support.gc_collect()
4456
-
4457
- remote_globs['setUpModule'] = setUpModule
4458
- remote_globs['tearDownModule'] = tearDownModule