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,4442 +0,0 @@
1
- # Copyright 2001-2017 by Vinay Sajip. All Rights Reserved.
2
- #
3
- # Permission to use, copy, modify, and distribute this software and its
4
- # documentation for any purpose and without fee is hereby granted,
5
- # provided that the above copyright notice appear in all copies and that
6
- # both that copyright notice and this permission notice appear in
7
- # supporting documentation, and that the name of Vinay Sajip
8
- # not be used in advertising or publicity pertaining to distribution
9
- # of the software without specific, written prior permission.
10
- # VINAY SAJIP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
11
- # ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
12
- # VINAY SAJIP BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
13
- # ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
14
- # IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
15
- # OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16
-
17
- """Test harness for the logging module. Run all tests.
18
-
19
- Copyright (C) 2001-2017 Vinay Sajip. All Rights Reserved.
20
- """
21
-
22
- import logging
23
- import logging.handlers
24
- import logging.config
25
-
26
- import codecs
27
- import configparser
28
- import datetime
29
- import pathlib
30
- import pickle
31
- import io
32
- import gc
33
- import json
34
- import os
35
- import queue
36
- import random
37
- import re
38
- import socket
39
- import struct
40
- import sys
41
- import tempfile
42
- from test.support.script_helper import assert_python_ok
43
- from test import support
44
- import textwrap
45
- import time
46
- import unittest
47
- import warnings
48
- import weakref
49
- try:
50
- import threading
51
- # The following imports are needed only for tests which
52
- # require threading
53
- import asyncore
54
- from http.server import HTTPServer, BaseHTTPRequestHandler
55
- import smtpd
56
- from urllib.parse import urlparse, parse_qs
57
- from socketserver import (ThreadingUDPServer, DatagramRequestHandler,
58
- ThreadingTCPServer, StreamRequestHandler)
59
- except ImportError:
60
- threading = None
61
- try:
62
- import win32evtlog, win32evtlogutil, pywintypes
63
- except ImportError:
64
- win32evtlog = win32evtlogutil = pywintypes = None
65
-
66
- try:
67
- import zlib
68
- except ImportError:
69
- pass
70
-
71
- class BaseTest(unittest.TestCase):
72
-
73
- """Base class for logging tests."""
74
-
75
- log_format = "%(name)s -> %(levelname)s: %(message)s"
76
- expected_log_pat = r"^([\w.]+) -> (\w+): (\d+)$"
77
- message_num = 0
78
-
79
- def setUp(self):
80
- """Setup the default logging stream to an internal StringIO instance,
81
- so that we can examine log output as we want."""
82
- logger_dict = logging.getLogger().manager.loggerDict
83
- logging._acquireLock()
84
- try:
85
- self.saved_handlers = logging._handlers.copy()
86
- self.saved_handler_list = logging._handlerList[:]
87
- self.saved_loggers = saved_loggers = logger_dict.copy()
88
- self.saved_name_to_level = logging._nameToLevel.copy()
89
- self.saved_level_to_name = logging._levelToName.copy()
90
- self.logger_states = logger_states = {}
91
- for name in saved_loggers:
92
- logger_states[name] = getattr(saved_loggers[name],
93
- 'disabled', None)
94
- finally:
95
- logging._releaseLock()
96
-
97
- # Set two unused loggers
98
- self.logger1 = logging.getLogger("\xab\xd7\xbb")
99
- self.logger2 = logging.getLogger("\u013f\u00d6\u0047")
100
-
101
- self.root_logger = logging.getLogger("")
102
- self.original_logging_level = self.root_logger.getEffectiveLevel()
103
-
104
- self.stream = io.StringIO()
105
- self.root_logger.setLevel(logging.DEBUG)
106
- self.root_hdlr = logging.StreamHandler(self.stream)
107
- self.root_formatter = logging.Formatter(self.log_format)
108
- self.root_hdlr.setFormatter(self.root_formatter)
109
- if self.logger1.hasHandlers():
110
- hlist = self.logger1.handlers + self.root_logger.handlers
111
- raise AssertionError('Unexpected handlers: %s' % hlist)
112
- if self.logger2.hasHandlers():
113
- hlist = self.logger2.handlers + self.root_logger.handlers
114
- raise AssertionError('Unexpected handlers: %s' % hlist)
115
- self.root_logger.addHandler(self.root_hdlr)
116
- self.assertTrue(self.logger1.hasHandlers())
117
- self.assertTrue(self.logger2.hasHandlers())
118
-
119
- def tearDown(self):
120
- """Remove our logging stream, and restore the original logging
121
- level."""
122
- self.stream.close()
123
- self.root_logger.removeHandler(self.root_hdlr)
124
- while self.root_logger.handlers:
125
- h = self.root_logger.handlers[0]
126
- self.root_logger.removeHandler(h)
127
- h.close()
128
- self.root_logger.setLevel(self.original_logging_level)
129
- logging._acquireLock()
130
- try:
131
- logging._levelToName.clear()
132
- logging._levelToName.update(self.saved_level_to_name)
133
- logging._nameToLevel.clear()
134
- logging._nameToLevel.update(self.saved_name_to_level)
135
- logging._handlers.clear()
136
- logging._handlers.update(self.saved_handlers)
137
- logging._handlerList[:] = self.saved_handler_list
138
- loggerDict = logging.getLogger().manager.loggerDict
139
- loggerDict.clear()
140
- loggerDict.update(self.saved_loggers)
141
- logger_states = self.logger_states
142
- for name in self.logger_states:
143
- if logger_states[name] is not None:
144
- self.saved_loggers[name].disabled = logger_states[name]
145
- finally:
146
- logging._releaseLock()
147
-
148
- def assert_log_lines(self, expected_values, stream=None, pat=None):
149
- """Match the collected log lines against the regular expression
150
- self.expected_log_pat, and compare the extracted group values to
151
- the expected_values list of tuples."""
152
- stream = stream or self.stream
153
- pat = re.compile(pat or self.expected_log_pat)
154
- actual_lines = stream.getvalue().splitlines()
155
- self.assertEqual(len(actual_lines), len(expected_values))
156
- for actual, expected in zip(actual_lines, expected_values):
157
- match = pat.search(actual)
158
- if not match:
159
- self.fail("Log line does not match expected pattern:\n" +
160
- actual)
161
- self.assertEqual(tuple(match.groups()), expected)
162
- s = stream.read()
163
- if s:
164
- self.fail("Remaining output at end of log stream:\n" + s)
165
-
166
- def next_message(self):
167
- """Generate a message consisting solely of an auto-incrementing
168
- integer."""
169
- self.message_num += 1
170
- return "%d" % self.message_num
171
-
172
-
173
- class BuiltinLevelsTest(BaseTest):
174
- """Test builtin levels and their inheritance."""
175
-
176
- def test_flat(self):
177
- #Logging levels in a flat logger namespace.
178
- m = self.next_message
179
-
180
- ERR = logging.getLogger("ERR")
181
- ERR.setLevel(logging.ERROR)
182
- INF = logging.LoggerAdapter(logging.getLogger("INF"), {})
183
- INF.setLevel(logging.INFO)
184
- DEB = logging.getLogger("DEB")
185
- DEB.setLevel(logging.DEBUG)
186
-
187
- # These should log.
188
- ERR.log(logging.CRITICAL, m())
189
- ERR.error(m())
190
-
191
- INF.log(logging.CRITICAL, m())
192
- INF.error(m())
193
- INF.warning(m())
194
- INF.info(m())
195
-
196
- DEB.log(logging.CRITICAL, m())
197
- DEB.error(m())
198
- DEB.warning(m())
199
- DEB.info(m())
200
- DEB.debug(m())
201
-
202
- # These should not log.
203
- ERR.warning(m())
204
- ERR.info(m())
205
- ERR.debug(m())
206
-
207
- INF.debug(m())
208
-
209
- self.assert_log_lines([
210
- ('ERR', 'CRITICAL', '1'),
211
- ('ERR', 'ERROR', '2'),
212
- ('INF', 'CRITICAL', '3'),
213
- ('INF', 'ERROR', '4'),
214
- ('INF', 'WARNING', '5'),
215
- ('INF', 'INFO', '6'),
216
- ('DEB', 'CRITICAL', '7'),
217
- ('DEB', 'ERROR', '8'),
218
- ('DEB', 'WARNING', '9'),
219
- ('DEB', 'INFO', '10'),
220
- ('DEB', 'DEBUG', '11'),
221
- ])
222
-
223
- def test_nested_explicit(self):
224
- # Logging levels in a nested namespace, all explicitly set.
225
- m = self.next_message
226
-
227
- INF = logging.getLogger("INF")
228
- INF.setLevel(logging.INFO)
229
- INF_ERR = logging.getLogger("INF.ERR")
230
- INF_ERR.setLevel(logging.ERROR)
231
-
232
- # These should log.
233
- INF_ERR.log(logging.CRITICAL, m())
234
- INF_ERR.error(m())
235
-
236
- # These should not log.
237
- INF_ERR.warning(m())
238
- INF_ERR.info(m())
239
- INF_ERR.debug(m())
240
-
241
- self.assert_log_lines([
242
- ('INF.ERR', 'CRITICAL', '1'),
243
- ('INF.ERR', 'ERROR', '2'),
244
- ])
245
-
246
- def test_nested_inherited(self):
247
- #Logging levels in a nested namespace, inherited from parent loggers.
248
- m = self.next_message
249
-
250
- INF = logging.getLogger("INF")
251
- INF.setLevel(logging.INFO)
252
- INF_ERR = logging.getLogger("INF.ERR")
253
- INF_ERR.setLevel(logging.ERROR)
254
- INF_UNDEF = logging.getLogger("INF.UNDEF")
255
- INF_ERR_UNDEF = logging.getLogger("INF.ERR.UNDEF")
256
- UNDEF = logging.getLogger("UNDEF")
257
-
258
- # These should log.
259
- INF_UNDEF.log(logging.CRITICAL, m())
260
- INF_UNDEF.error(m())
261
- INF_UNDEF.warning(m())
262
- INF_UNDEF.info(m())
263
- INF_ERR_UNDEF.log(logging.CRITICAL, m())
264
- INF_ERR_UNDEF.error(m())
265
-
266
- # These should not log.
267
- INF_UNDEF.debug(m())
268
- INF_ERR_UNDEF.warning(m())
269
- INF_ERR_UNDEF.info(m())
270
- INF_ERR_UNDEF.debug(m())
271
-
272
- self.assert_log_lines([
273
- ('INF.UNDEF', 'CRITICAL', '1'),
274
- ('INF.UNDEF', 'ERROR', '2'),
275
- ('INF.UNDEF', 'WARNING', '3'),
276
- ('INF.UNDEF', 'INFO', '4'),
277
- ('INF.ERR.UNDEF', 'CRITICAL', '5'),
278
- ('INF.ERR.UNDEF', 'ERROR', '6'),
279
- ])
280
-
281
- def test_nested_with_virtual_parent(self):
282
- # Logging levels when some parent does not exist yet.
283
- m = self.next_message
284
-
285
- INF = logging.getLogger("INF")
286
- GRANDCHILD = logging.getLogger("INF.BADPARENT.UNDEF")
287
- CHILD = logging.getLogger("INF.BADPARENT")
288
- INF.setLevel(logging.INFO)
289
-
290
- # These should log.
291
- GRANDCHILD.log(logging.FATAL, m())
292
- GRANDCHILD.info(m())
293
- CHILD.log(logging.FATAL, m())
294
- CHILD.info(m())
295
-
296
- # These should not log.
297
- GRANDCHILD.debug(m())
298
- CHILD.debug(m())
299
-
300
- self.assert_log_lines([
301
- ('INF.BADPARENT.UNDEF', 'CRITICAL', '1'),
302
- ('INF.BADPARENT.UNDEF', 'INFO', '2'),
303
- ('INF.BADPARENT', 'CRITICAL', '3'),
304
- ('INF.BADPARENT', 'INFO', '4'),
305
- ])
306
-
307
- def test_regression_22386(self):
308
- """See issue #22386 for more information."""
309
- self.assertEqual(logging.getLevelName('INFO'), logging.INFO)
310
- self.assertEqual(logging.getLevelName(logging.INFO), 'INFO')
311
-
312
- def test_issue27935(self):
313
- fatal = logging.getLevelName('FATAL')
314
- self.assertEqual(fatal, logging.FATAL)
315
-
316
- def test_regression_29220(self):
317
- """See issue #29220 for more information."""
318
- logging.addLevelName(logging.INFO, '')
319
- self.addCleanup(logging.addLevelName, logging.INFO, 'INFO')
320
- self.assertEqual(logging.getLevelName(logging.INFO), '')
321
- self.assertEqual(logging.getLevelName(logging.NOTSET), 'NOTSET')
322
- self.assertEqual(logging.getLevelName('NOTSET'), logging.NOTSET)
323
-
324
- class BasicFilterTest(BaseTest):
325
-
326
- """Test the bundled Filter class."""
327
-
328
- def test_filter(self):
329
- # Only messages satisfying the specified criteria pass through the
330
- # filter.
331
- filter_ = logging.Filter("spam.eggs")
332
- handler = self.root_logger.handlers[0]
333
- try:
334
- handler.addFilter(filter_)
335
- spam = logging.getLogger("spam")
336
- spam_eggs = logging.getLogger("spam.eggs")
337
- spam_eggs_fish = logging.getLogger("spam.eggs.fish")
338
- spam_bakedbeans = logging.getLogger("spam.bakedbeans")
339
-
340
- spam.info(self.next_message())
341
- spam_eggs.info(self.next_message()) # Good.
342
- spam_eggs_fish.info(self.next_message()) # Good.
343
- spam_bakedbeans.info(self.next_message())
344
-
345
- self.assert_log_lines([
346
- ('spam.eggs', 'INFO', '2'),
347
- ('spam.eggs.fish', 'INFO', '3'),
348
- ])
349
- finally:
350
- handler.removeFilter(filter_)
351
-
352
- def test_callable_filter(self):
353
- # Only messages satisfying the specified criteria pass through the
354
- # filter.
355
-
356
- def filterfunc(record):
357
- parts = record.name.split('.')
358
- prefix = '.'.join(parts[:2])
359
- return prefix == 'spam.eggs'
360
-
361
- handler = self.root_logger.handlers[0]
362
- try:
363
- handler.addFilter(filterfunc)
364
- spam = logging.getLogger("spam")
365
- spam_eggs = logging.getLogger("spam.eggs")
366
- spam_eggs_fish = logging.getLogger("spam.eggs.fish")
367
- spam_bakedbeans = logging.getLogger("spam.bakedbeans")
368
-
369
- spam.info(self.next_message())
370
- spam_eggs.info(self.next_message()) # Good.
371
- spam_eggs_fish.info(self.next_message()) # Good.
372
- spam_bakedbeans.info(self.next_message())
373
-
374
- self.assert_log_lines([
375
- ('spam.eggs', 'INFO', '2'),
376
- ('spam.eggs.fish', 'INFO', '3'),
377
- ])
378
- finally:
379
- handler.removeFilter(filterfunc)
380
-
381
- def test_empty_filter(self):
382
- f = logging.Filter()
383
- r = logging.makeLogRecord({'name': 'spam.eggs'})
384
- self.assertTrue(f.filter(r))
385
-
386
- #
387
- # First, we define our levels. There can be as many as you want - the only
388
- # limitations are that they should be integers, the lowest should be > 0 and
389
- # larger values mean less information being logged. If you need specific
390
- # level values which do not fit into these limitations, you can use a
391
- # mapping dictionary to convert between your application levels and the
392
- # logging system.
393
- #
394
- SILENT = 120
395
- TACITURN = 119
396
- TERSE = 118
397
- EFFUSIVE = 117
398
- SOCIABLE = 116
399
- VERBOSE = 115
400
- TALKATIVE = 114
401
- GARRULOUS = 113
402
- CHATTERBOX = 112
403
- BORING = 111
404
-
405
- LEVEL_RANGE = range(BORING, SILENT + 1)
406
-
407
- #
408
- # Next, we define names for our levels. You don't need to do this - in which
409
- # case the system will use "Level n" to denote the text for the level.
410
- #
411
- my_logging_levels = {
412
- SILENT : 'Silent',
413
- TACITURN : 'Taciturn',
414
- TERSE : 'Terse',
415
- EFFUSIVE : 'Effusive',
416
- SOCIABLE : 'Sociable',
417
- VERBOSE : 'Verbose',
418
- TALKATIVE : 'Talkative',
419
- GARRULOUS : 'Garrulous',
420
- CHATTERBOX : 'Chatterbox',
421
- BORING : 'Boring',
422
- }
423
-
424
- class GarrulousFilter(logging.Filter):
425
-
426
- """A filter which blocks garrulous messages."""
427
-
428
- def filter(self, record):
429
- return record.levelno != GARRULOUS
430
-
431
- class VerySpecificFilter(logging.Filter):
432
-
433
- """A filter which blocks sociable and taciturn messages."""
434
-
435
- def filter(self, record):
436
- return record.levelno not in [SOCIABLE, TACITURN]
437
-
438
-
439
- class CustomLevelsAndFiltersTest(BaseTest):
440
-
441
- """Test various filtering possibilities with custom logging levels."""
442
-
443
- # Skip the logger name group.
444
- expected_log_pat = r"^[\w.]+ -> (\w+): (\d+)$"
445
-
446
- def setUp(self):
447
- BaseTest.setUp(self)
448
- for k, v in my_logging_levels.items():
449
- logging.addLevelName(k, v)
450
-
451
- def log_at_all_levels(self, logger):
452
- for lvl in LEVEL_RANGE:
453
- logger.log(lvl, self.next_message())
454
-
455
- def test_logger_filter(self):
456
- # Filter at logger level.
457
- self.root_logger.setLevel(VERBOSE)
458
- # Levels >= 'Verbose' are good.
459
- self.log_at_all_levels(self.root_logger)
460
- self.assert_log_lines([
461
- ('Verbose', '5'),
462
- ('Sociable', '6'),
463
- ('Effusive', '7'),
464
- ('Terse', '8'),
465
- ('Taciturn', '9'),
466
- ('Silent', '10'),
467
- ])
468
-
469
- def test_handler_filter(self):
470
- # Filter at handler level.
471
- self.root_logger.handlers[0].setLevel(SOCIABLE)
472
- try:
473
- # Levels >= 'Sociable' are good.
474
- self.log_at_all_levels(self.root_logger)
475
- self.assert_log_lines([
476
- ('Sociable', '6'),
477
- ('Effusive', '7'),
478
- ('Terse', '8'),
479
- ('Taciturn', '9'),
480
- ('Silent', '10'),
481
- ])
482
- finally:
483
- self.root_logger.handlers[0].setLevel(logging.NOTSET)
484
-
485
- def test_specific_filters(self):
486
- # Set a specific filter object on the handler, and then add another
487
- # filter object on the logger itself.
488
- handler = self.root_logger.handlers[0]
489
- specific_filter = None
490
- garr = GarrulousFilter()
491
- handler.addFilter(garr)
492
- try:
493
- self.log_at_all_levels(self.root_logger)
494
- first_lines = [
495
- # Notice how 'Garrulous' is missing
496
- ('Boring', '1'),
497
- ('Chatterbox', '2'),
498
- ('Talkative', '4'),
499
- ('Verbose', '5'),
500
- ('Sociable', '6'),
501
- ('Effusive', '7'),
502
- ('Terse', '8'),
503
- ('Taciturn', '9'),
504
- ('Silent', '10'),
505
- ]
506
- self.assert_log_lines(first_lines)
507
-
508
- specific_filter = VerySpecificFilter()
509
- self.root_logger.addFilter(specific_filter)
510
- self.log_at_all_levels(self.root_logger)
511
- self.assert_log_lines(first_lines + [
512
- # Not only 'Garrulous' is still missing, but also 'Sociable'
513
- # and 'Taciturn'
514
- ('Boring', '11'),
515
- ('Chatterbox', '12'),
516
- ('Talkative', '14'),
517
- ('Verbose', '15'),
518
- ('Effusive', '17'),
519
- ('Terse', '18'),
520
- ('Silent', '20'),
521
- ])
522
- finally:
523
- if specific_filter:
524
- self.root_logger.removeFilter(specific_filter)
525
- handler.removeFilter(garr)
526
-
527
-
528
- class HandlerTest(BaseTest):
529
- def test_name(self):
530
- h = logging.Handler()
531
- h.name = 'generic'
532
- self.assertEqual(h.name, 'generic')
533
- h.name = 'anothergeneric'
534
- self.assertEqual(h.name, 'anothergeneric')
535
- self.assertRaises(NotImplementedError, h.emit, None)
536
-
537
- def test_builtin_handlers(self):
538
- # We can't actually *use* too many handlers in the tests,
539
- # but we can try instantiating them with various options
540
- if sys.platform in ('linux', 'darwin'):
541
- for existing in (True, False):
542
- fd, fn = tempfile.mkstemp()
543
- os.close(fd)
544
- if not existing:
545
- os.unlink(fn)
546
- h = logging.handlers.WatchedFileHandler(fn, delay=True)
547
- if existing:
548
- dev, ino = h.dev, h.ino
549
- self.assertEqual(dev, -1)
550
- self.assertEqual(ino, -1)
551
- r = logging.makeLogRecord({'msg': 'Test'})
552
- h.handle(r)
553
- # Now remove the file.
554
- os.unlink(fn)
555
- self.assertFalse(os.path.exists(fn))
556
- # The next call should recreate the file.
557
- h.handle(r)
558
- self.assertTrue(os.path.exists(fn))
559
- else:
560
- self.assertEqual(h.dev, -1)
561
- self.assertEqual(h.ino, -1)
562
- h.close()
563
- if existing:
564
- os.unlink(fn)
565
- if sys.platform == 'darwin':
566
- sockname = '/var/run/syslog'
567
- else:
568
- sockname = '/dev/log'
569
- try:
570
- h = logging.handlers.SysLogHandler(sockname)
571
- self.assertEqual(h.facility, h.LOG_USER)
572
- self.assertTrue(h.unixsocket)
573
- h.close()
574
- except OSError: # syslogd might not be available
575
- pass
576
- for method in ('GET', 'POST', 'PUT'):
577
- if method == 'PUT':
578
- self.assertRaises(ValueError, logging.handlers.HTTPHandler,
579
- 'localhost', '/log', method)
580
- else:
581
- h = logging.handlers.HTTPHandler('localhost', '/log', method)
582
- h.close()
583
- h = logging.handlers.BufferingHandler(0)
584
- r = logging.makeLogRecord({})
585
- self.assertTrue(h.shouldFlush(r))
586
- h.close()
587
- h = logging.handlers.BufferingHandler(1)
588
- self.assertFalse(h.shouldFlush(r))
589
- h.close()
590
-
591
- def test_path_objects(self):
592
- """
593
- Test that Path objects are accepted as filename arguments to handlers.
594
-
595
- See Issue #27493.
596
- """
597
- fd, fn = tempfile.mkstemp()
598
- os.close(fd)
599
- os.unlink(fn)
600
- pfn = pathlib.Path(fn)
601
- cases = (
602
- (logging.FileHandler, (pfn, 'w')),
603
- (logging.handlers.RotatingFileHandler, (pfn, 'a')),
604
- (logging.handlers.TimedRotatingFileHandler, (pfn, 'h')),
605
- )
606
- if sys.platform in ('linux', 'darwin'):
607
- cases += ((logging.handlers.WatchedFileHandler, (pfn, 'w')),)
608
- for cls, args in cases:
609
- h = cls(*args)
610
- self.assertTrue(os.path.exists(fn))
611
- h.close()
612
- os.unlink(fn)
613
-
614
- @unittest.skipIf(os.name == 'nt', 'WatchedFileHandler not appropriate for Windows.')
615
- @unittest.skipUnless(threading, 'Threading required for this test.')
616
- def test_race(self):
617
- # Issue #14632 refers.
618
- def remove_loop(fname, tries):
619
- for _ in range(tries):
620
- try:
621
- os.unlink(fname)
622
- self.deletion_time = time.time()
623
- except OSError:
624
- pass
625
- time.sleep(0.004 * random.randint(0, 4))
626
-
627
- del_count = 500
628
- log_count = 500
629
-
630
- self.handle_time = None
631
- self.deletion_time = None
632
-
633
- for delay in (False, True):
634
- fd, fn = tempfile.mkstemp('.log', 'test_logging-3-')
635
- os.close(fd)
636
- remover = threading.Thread(target=remove_loop, args=(fn, del_count))
637
- remover.daemon = True
638
- remover.start()
639
- h = logging.handlers.WatchedFileHandler(fn, delay=delay)
640
- f = logging.Formatter('%(asctime)s: %(levelname)s: %(message)s')
641
- h.setFormatter(f)
642
- try:
643
- for _ in range(log_count):
644
- time.sleep(0.005)
645
- r = logging.makeLogRecord({'msg': 'testing' })
646
- try:
647
- self.handle_time = time.time()
648
- h.handle(r)
649
- except Exception:
650
- print('Deleted at %s, '
651
- 'opened at %s' % (self.deletion_time,
652
- self.handle_time))
653
- raise
654
- finally:
655
- remover.join()
656
- h.close()
657
- if os.path.exists(fn):
658
- os.unlink(fn)
659
-
660
-
661
- class BadStream(object):
662
- def write(self, data):
663
- raise RuntimeError('deliberate mistake')
664
-
665
- class TestStreamHandler(logging.StreamHandler):
666
- def handleError(self, record):
667
- self.error_record = record
668
-
669
- class StreamHandlerTest(BaseTest):
670
- def test_error_handling(self):
671
- h = TestStreamHandler(BadStream())
672
- r = logging.makeLogRecord({})
673
- old_raise = logging.raiseExceptions
674
-
675
- try:
676
- h.handle(r)
677
- self.assertIs(h.error_record, r)
678
-
679
- h = logging.StreamHandler(BadStream())
680
- with support.captured_stderr() as stderr:
681
- h.handle(r)
682
- msg = '\nRuntimeError: deliberate mistake\n'
683
- self.assertIn(msg, stderr.getvalue())
684
-
685
- logging.raiseExceptions = False
686
- with support.captured_stderr() as stderr:
687
- h.handle(r)
688
- self.assertEqual('', stderr.getvalue())
689
- finally:
690
- logging.raiseExceptions = old_raise
691
-
692
- # -- The following section could be moved into a server_helper.py module
693
- # -- if it proves to be of wider utility than just test_logging
694
-
695
- if threading:
696
- class TestSMTPServer(smtpd.SMTPServer):
697
- """
698
- This class implements a test SMTP server.
699
-
700
- :param addr: A (host, port) tuple which the server listens on.
701
- You can specify a port value of zero: the server's
702
- *port* attribute will hold the actual port number
703
- used, which can be used in client connections.
704
- :param handler: A callable which will be called to process
705
- incoming messages. The handler will be passed
706
- the client address tuple, who the message is from,
707
- a list of recipients and the message data.
708
- :param poll_interval: The interval, in seconds, used in the underlying
709
- :func:`select` or :func:`poll` call by
710
- :func:`asyncore.loop`.
711
- :param sockmap: A dictionary which will be used to hold
712
- :class:`asyncore.dispatcher` instances used by
713
- :func:`asyncore.loop`. This avoids changing the
714
- :mod:`asyncore` module's global state.
715
- """
716
-
717
- def __init__(self, addr, handler, poll_interval, sockmap):
718
- smtpd.SMTPServer.__init__(self, addr, None, map=sockmap,
719
- decode_data=True)
720
- self.port = self.socket.getsockname()[1]
721
- self._handler = handler
722
- self._thread = None
723
- self.poll_interval = poll_interval
724
-
725
- def process_message(self, peer, mailfrom, rcpttos, data):
726
- """
727
- Delegates to the handler passed in to the server's constructor.
728
-
729
- Typically, this will be a test case method.
730
- :param peer: The client (host, port) tuple.
731
- :param mailfrom: The address of the sender.
732
- :param rcpttos: The addresses of the recipients.
733
- :param data: The message.
734
- """
735
- self._handler(peer, mailfrom, rcpttos, data)
736
-
737
- def start(self):
738
- """
739
- Start the server running on a separate daemon thread.
740
- """
741
- self._thread = t = threading.Thread(target=self.serve_forever,
742
- args=(self.poll_interval,))
743
- t.setDaemon(True)
744
- t.start()
745
-
746
- def serve_forever(self, poll_interval):
747
- """
748
- Run the :mod:`asyncore` loop until normal termination
749
- conditions arise.
750
- :param poll_interval: The interval, in seconds, used in the underlying
751
- :func:`select` or :func:`poll` call by
752
- :func:`asyncore.loop`.
753
- """
754
- try:
755
- asyncore.loop(poll_interval, map=self._map)
756
- except OSError:
757
- # On FreeBSD 8, closing the server repeatably
758
- # raises this error. We swallow it if the
759
- # server has been closed.
760
- if self.connected or self.accepting:
761
- raise
762
-
763
- def stop(self, timeout=None):
764
- """
765
- Stop the thread by closing the server instance.
766
- Wait for the server thread to terminate.
767
-
768
- :param timeout: How long to wait for the server thread
769
- to terminate.
770
- """
771
- self.close()
772
- self._thread.join(timeout)
773
- asyncore.close_all(map=self._map, ignore_all=True)
774
- self._thread = None
775
-
776
- class ControlMixin(object):
777
- """
778
- This mixin is used to start a server on a separate thread, and
779
- shut it down programmatically. Request handling is simplified - instead
780
- of needing to derive a suitable RequestHandler subclass, you just
781
- provide a callable which will be passed each received request to be
782
- processed.
783
-
784
- :param handler: A handler callable which will be called with a
785
- single parameter - the request - in order to
786
- process the request. This handler is called on the
787
- server thread, effectively meaning that requests are
788
- processed serially. While not quite Web scale ;-),
789
- this should be fine for testing applications.
790
- :param poll_interval: The polling interval in seconds.
791
- """
792
- def __init__(self, handler, poll_interval):
793
- self._thread = None
794
- self.poll_interval = poll_interval
795
- self._handler = handler
796
- self.ready = threading.Event()
797
-
798
- def start(self):
799
- """
800
- Create a daemon thread to run the server, and start it.
801
- """
802
- self._thread = t = threading.Thread(target=self.serve_forever,
803
- args=(self.poll_interval,))
804
- t.setDaemon(True)
805
- t.start()
806
-
807
- def serve_forever(self, poll_interval):
808
- """
809
- Run the server. Set the ready flag before entering the
810
- service loop.
811
- """
812
- self.ready.set()
813
- super(ControlMixin, self).serve_forever(poll_interval)
814
-
815
- def stop(self, timeout=None):
816
- """
817
- Tell the server thread to stop, and wait for it to do so.
818
-
819
- :param timeout: How long to wait for the server thread
820
- to terminate.
821
- """
822
- self.shutdown()
823
- if self._thread is not None:
824
- self._thread.join(timeout)
825
- self._thread = None
826
- self.server_close()
827
- self.ready.clear()
828
-
829
- class TestHTTPServer(ControlMixin, HTTPServer):
830
- """
831
- An HTTP server which is controllable using :class:`ControlMixin`.
832
-
833
- :param addr: A tuple with the IP address and port to listen on.
834
- :param handler: A handler callable which will be called with a
835
- single parameter - the request - in order to
836
- process the request.
837
- :param poll_interval: The polling interval in seconds.
838
- :param log: Pass ``True`` to enable log messages.
839
- """
840
- def __init__(self, addr, handler, poll_interval=0.5,
841
- log=False, sslctx=None):
842
- class DelegatingHTTPRequestHandler(BaseHTTPRequestHandler):
843
- def __getattr__(self, name, default=None):
844
- if name.startswith('do_'):
845
- return self.process_request
846
- raise AttributeError(name)
847
-
848
- def process_request(self):
849
- self.server._handler(self)
850
-
851
- def log_message(self, format, *args):
852
- if log:
853
- super(DelegatingHTTPRequestHandler,
854
- self).log_message(format, *args)
855
- HTTPServer.__init__(self, addr, DelegatingHTTPRequestHandler)
856
- ControlMixin.__init__(self, handler, poll_interval)
857
- self.sslctx = sslctx
858
-
859
- def get_request(self):
860
- try:
861
- sock, addr = self.socket.accept()
862
- if self.sslctx:
863
- sock = self.sslctx.wrap_socket(sock, server_side=True)
864
- except OSError as e:
865
- # socket errors are silenced by the caller, print them here
866
- sys.stderr.write("Got an error:\n%s\n" % e)
867
- raise
868
- return sock, addr
869
-
870
- class TestTCPServer(ControlMixin, ThreadingTCPServer):
871
- """
872
- A TCP server which is controllable using :class:`ControlMixin`.
873
-
874
- :param addr: A tuple with the IP address and port to listen on.
875
- :param handler: A handler callable which will be called with a single
876
- parameter - the request - in order to process the request.
877
- :param poll_interval: The polling interval in seconds.
878
- :bind_and_activate: If True (the default), binds the server and starts it
879
- listening. If False, you need to call
880
- :meth:`server_bind` and :meth:`server_activate` at
881
- some later time before calling :meth:`start`, so that
882
- the server will set up the socket and listen on it.
883
- """
884
-
885
- allow_reuse_address = True
886
-
887
- def __init__(self, addr, handler, poll_interval=0.5,
888
- bind_and_activate=True):
889
- class DelegatingTCPRequestHandler(StreamRequestHandler):
890
-
891
- def handle(self):
892
- self.server._handler(self)
893
- ThreadingTCPServer.__init__(self, addr, DelegatingTCPRequestHandler,
894
- bind_and_activate)
895
- ControlMixin.__init__(self, handler, poll_interval)
896
-
897
- def server_bind(self):
898
- super(TestTCPServer, self).server_bind()
899
- self.port = self.socket.getsockname()[1]
900
-
901
- class TestUDPServer(ControlMixin, ThreadingUDPServer):
902
- """
903
- A UDP server which is controllable using :class:`ControlMixin`.
904
-
905
- :param addr: A tuple with the IP address and port to listen on.
906
- :param handler: A handler callable which will be called with a
907
- single parameter - the request - in order to
908
- process the request.
909
- :param poll_interval: The polling interval for shutdown requests,
910
- in seconds.
911
- :bind_and_activate: If True (the default), binds the server and
912
- starts it listening. If False, you need to
913
- call :meth:`server_bind` and
914
- :meth:`server_activate` at some later time
915
- before calling :meth:`start`, so that the server will
916
- set up the socket and listen on it.
917
- """
918
- def __init__(self, addr, handler, poll_interval=0.5,
919
- bind_and_activate=True):
920
- class DelegatingUDPRequestHandler(DatagramRequestHandler):
921
-
922
- def handle(self):
923
- self.server._handler(self)
924
-
925
- def finish(self):
926
- data = self.wfile.getvalue()
927
- if data:
928
- try:
929
- super(DelegatingUDPRequestHandler, self).finish()
930
- except OSError:
931
- if not self.server._closed:
932
- raise
933
-
934
- ThreadingUDPServer.__init__(self, addr,
935
- DelegatingUDPRequestHandler,
936
- bind_and_activate)
937
- ControlMixin.__init__(self, handler, poll_interval)
938
- self._closed = False
939
-
940
- def server_bind(self):
941
- super(TestUDPServer, self).server_bind()
942
- self.port = self.socket.getsockname()[1]
943
-
944
- def server_close(self):
945
- super(TestUDPServer, self).server_close()
946
- self._closed = True
947
-
948
- if hasattr(socket, "AF_UNIX"):
949
- class TestUnixStreamServer(TestTCPServer):
950
- address_family = socket.AF_UNIX
951
-
952
- class TestUnixDatagramServer(TestUDPServer):
953
- address_family = socket.AF_UNIX
954
-
955
- # - end of server_helper section
956
-
957
- @unittest.skipUnless(threading, 'Threading required for this test.')
958
- class SMTPHandlerTest(BaseTest):
959
- TIMEOUT = 8.0
960
- def test_basic(self):
961
- sockmap = {}
962
- server = TestSMTPServer((support.HOST, 0), self.process_message, 0.001,
963
- sockmap)
964
- server.start()
965
- addr = (support.HOST, server.port)
966
- h = logging.handlers.SMTPHandler(addr, 'me', 'you', 'Log',
967
- timeout=self.TIMEOUT)
968
- self.assertEqual(h.toaddrs, ['you'])
969
- self.messages = []
970
- r = logging.makeLogRecord({'msg': 'Hello \u2713'})
971
- self.handled = threading.Event()
972
- h.handle(r)
973
- self.handled.wait(self.TIMEOUT) # 14314: don't wait forever
974
- server.stop()
975
- self.assertTrue(self.handled.is_set())
976
- self.assertEqual(len(self.messages), 1)
977
- peer, mailfrom, rcpttos, data = self.messages[0]
978
- self.assertEqual(mailfrom, 'me')
979
- self.assertEqual(rcpttos, ['you'])
980
- self.assertIn('\nSubject: Log\n', data)
981
- self.assertTrue(data.endswith('\n\nHello \u2713'))
982
- h.close()
983
-
984
- def process_message(self, *args):
985
- self.messages.append(args)
986
- self.handled.set()
987
-
988
- class MemoryHandlerTest(BaseTest):
989
-
990
- """Tests for the MemoryHandler."""
991
-
992
- # Do not bother with a logger name group.
993
- expected_log_pat = r"^[\w.]+ -> (\w+): (\d+)$"
994
-
995
- def setUp(self):
996
- BaseTest.setUp(self)
997
- self.mem_hdlr = logging.handlers.MemoryHandler(10, logging.WARNING,
998
- self.root_hdlr)
999
- self.mem_logger = logging.getLogger('mem')
1000
- self.mem_logger.propagate = 0
1001
- self.mem_logger.addHandler(self.mem_hdlr)
1002
-
1003
- def tearDown(self):
1004
- self.mem_hdlr.close()
1005
- BaseTest.tearDown(self)
1006
-
1007
- def test_flush(self):
1008
- # The memory handler flushes to its target handler based on specific
1009
- # criteria (message count and message level).
1010
- self.mem_logger.debug(self.next_message())
1011
- self.assert_log_lines([])
1012
- self.mem_logger.info(self.next_message())
1013
- self.assert_log_lines([])
1014
- # This will flush because the level is >= logging.WARNING
1015
- self.mem_logger.warning(self.next_message())
1016
- lines = [
1017
- ('DEBUG', '1'),
1018
- ('INFO', '2'),
1019
- ('WARNING', '3'),
1020
- ]
1021
- self.assert_log_lines(lines)
1022
- for n in (4, 14):
1023
- for i in range(9):
1024
- self.mem_logger.debug(self.next_message())
1025
- self.assert_log_lines(lines)
1026
- # This will flush because it's the 10th message since the last
1027
- # flush.
1028
- self.mem_logger.debug(self.next_message())
1029
- lines = lines + [('DEBUG', str(i)) for i in range(n, n + 10)]
1030
- self.assert_log_lines(lines)
1031
-
1032
- self.mem_logger.debug(self.next_message())
1033
- self.assert_log_lines(lines)
1034
-
1035
- def test_flush_on_close(self):
1036
- """
1037
- Test that the flush-on-close configuration works as expected.
1038
- """
1039
- self.mem_logger.debug(self.next_message())
1040
- self.assert_log_lines([])
1041
- self.mem_logger.info(self.next_message())
1042
- self.assert_log_lines([])
1043
- self.mem_logger.removeHandler(self.mem_hdlr)
1044
- # Default behaviour is to flush on close. Check that it happens.
1045
- self.mem_hdlr.close()
1046
- lines = [
1047
- ('DEBUG', '1'),
1048
- ('INFO', '2'),
1049
- ]
1050
- self.assert_log_lines(lines)
1051
- # Now configure for flushing not to be done on close.
1052
- self.mem_hdlr = logging.handlers.MemoryHandler(10, logging.WARNING,
1053
- self.root_hdlr,
1054
- False)
1055
- self.mem_logger.addHandler(self.mem_hdlr)
1056
- self.mem_logger.debug(self.next_message())
1057
- self.assert_log_lines(lines) # no change
1058
- self.mem_logger.info(self.next_message())
1059
- self.assert_log_lines(lines) # no change
1060
- self.mem_logger.removeHandler(self.mem_hdlr)
1061
- self.mem_hdlr.close()
1062
- # assert that no new lines have been added
1063
- self.assert_log_lines(lines) # no change
1064
-
1065
-
1066
- class ExceptionFormatter(logging.Formatter):
1067
- """A special exception formatter."""
1068
- def formatException(self, ei):
1069
- return "Got a [%s]" % ei[0].__name__
1070
-
1071
-
1072
- class ConfigFileTest(BaseTest):
1073
-
1074
- """Reading logging config from a .ini-style config file."""
1075
-
1076
- expected_log_pat = r"^(\w+) \+\+ (\w+)$"
1077
-
1078
- # config0 is a standard configuration.
1079
- config0 = """
1080
- [loggers]
1081
- keys=root
1082
-
1083
- [handlers]
1084
- keys=hand1
1085
-
1086
- [formatters]
1087
- keys=form1
1088
-
1089
- [logger_root]
1090
- level=WARNING
1091
- handlers=hand1
1092
-
1093
- [handler_hand1]
1094
- class=StreamHandler
1095
- level=NOTSET
1096
- formatter=form1
1097
- args=(sys.stdout,)
1098
-
1099
- [formatter_form1]
1100
- format=%(levelname)s ++ %(message)s
1101
- datefmt=
1102
- """
1103
-
1104
- # config1 adds a little to the standard configuration.
1105
- config1 = """
1106
- [loggers]
1107
- keys=root,parser
1108
-
1109
- [handlers]
1110
- keys=hand1
1111
-
1112
- [formatters]
1113
- keys=form1
1114
-
1115
- [logger_root]
1116
- level=WARNING
1117
- handlers=
1118
-
1119
- [logger_parser]
1120
- level=DEBUG
1121
- handlers=hand1
1122
- propagate=1
1123
- qualname=compiler.parser
1124
-
1125
- [handler_hand1]
1126
- class=StreamHandler
1127
- level=NOTSET
1128
- formatter=form1
1129
- args=(sys.stdout,)
1130
-
1131
- [formatter_form1]
1132
- format=%(levelname)s ++ %(message)s
1133
- datefmt=
1134
- """
1135
-
1136
- # config1a moves the handler to the root.
1137
- config1a = """
1138
- [loggers]
1139
- keys=root,parser
1140
-
1141
- [handlers]
1142
- keys=hand1
1143
-
1144
- [formatters]
1145
- keys=form1
1146
-
1147
- [logger_root]
1148
- level=WARNING
1149
- handlers=hand1
1150
-
1151
- [logger_parser]
1152
- level=DEBUG
1153
- handlers=
1154
- propagate=1
1155
- qualname=compiler.parser
1156
-
1157
- [handler_hand1]
1158
- class=StreamHandler
1159
- level=NOTSET
1160
- formatter=form1
1161
- args=(sys.stdout,)
1162
-
1163
- [formatter_form1]
1164
- format=%(levelname)s ++ %(message)s
1165
- datefmt=
1166
- """
1167
-
1168
- # config2 has a subtle configuration error that should be reported
1169
- config2 = config1.replace("sys.stdout", "sys.stbout")
1170
-
1171
- # config3 has a less subtle configuration error
1172
- config3 = config1.replace("formatter=form1", "formatter=misspelled_name")
1173
-
1174
- # config4 specifies a custom formatter class to be loaded
1175
- config4 = """
1176
- [loggers]
1177
- keys=root
1178
-
1179
- [handlers]
1180
- keys=hand1
1181
-
1182
- [formatters]
1183
- keys=form1
1184
-
1185
- [logger_root]
1186
- level=NOTSET
1187
- handlers=hand1
1188
-
1189
- [handler_hand1]
1190
- class=StreamHandler
1191
- level=NOTSET
1192
- formatter=form1
1193
- args=(sys.stdout,)
1194
-
1195
- [formatter_form1]
1196
- class=""" + __name__ + """.ExceptionFormatter
1197
- format=%(levelname)s:%(name)s:%(message)s
1198
- datefmt=
1199
- """
1200
-
1201
- # config5 specifies a custom handler class to be loaded
1202
- config5 = config1.replace('class=StreamHandler', 'class=logging.StreamHandler')
1203
-
1204
- # config6 uses ', ' delimiters in the handlers and formatters sections
1205
- config6 = """
1206
- [loggers]
1207
- keys=root,parser
1208
-
1209
- [handlers]
1210
- keys=hand1, hand2
1211
-
1212
- [formatters]
1213
- keys=form1, form2
1214
-
1215
- [logger_root]
1216
- level=WARNING
1217
- handlers=
1218
-
1219
- [logger_parser]
1220
- level=DEBUG
1221
- handlers=hand1
1222
- propagate=1
1223
- qualname=compiler.parser
1224
-
1225
- [handler_hand1]
1226
- class=StreamHandler
1227
- level=NOTSET
1228
- formatter=form1
1229
- args=(sys.stdout,)
1230
-
1231
- [handler_hand2]
1232
- class=StreamHandler
1233
- level=NOTSET
1234
- formatter=form1
1235
- args=(sys.stderr,)
1236
-
1237
- [formatter_form1]
1238
- format=%(levelname)s ++ %(message)s
1239
- datefmt=
1240
-
1241
- [formatter_form2]
1242
- format=%(message)s
1243
- datefmt=
1244
- """
1245
-
1246
- # config7 adds a compiler logger.
1247
- config7 = """
1248
- [loggers]
1249
- keys=root,parser,compiler
1250
-
1251
- [handlers]
1252
- keys=hand1
1253
-
1254
- [formatters]
1255
- keys=form1
1256
-
1257
- [logger_root]
1258
- level=WARNING
1259
- handlers=hand1
1260
-
1261
- [logger_compiler]
1262
- level=DEBUG
1263
- handlers=
1264
- propagate=1
1265
- qualname=compiler
1266
-
1267
- [logger_parser]
1268
- level=DEBUG
1269
- handlers=
1270
- propagate=1
1271
- qualname=compiler.parser
1272
-
1273
- [handler_hand1]
1274
- class=StreamHandler
1275
- level=NOTSET
1276
- formatter=form1
1277
- args=(sys.stdout,)
1278
-
1279
- [formatter_form1]
1280
- format=%(levelname)s ++ %(message)s
1281
- datefmt=
1282
- """
1283
-
1284
- disable_test = """
1285
- [loggers]
1286
- keys=root
1287
-
1288
- [handlers]
1289
- keys=screen
1290
-
1291
- [formatters]
1292
- keys=
1293
-
1294
- [logger_root]
1295
- level=DEBUG
1296
- handlers=screen
1297
-
1298
- [handler_screen]
1299
- level=DEBUG
1300
- class=StreamHandler
1301
- args=(sys.stdout,)
1302
- formatter=
1303
- """
1304
-
1305
- def apply_config(self, conf, **kwargs):
1306
- file = io.StringIO(textwrap.dedent(conf))
1307
- logging.config.fileConfig(file, **kwargs)
1308
-
1309
- def test_config0_ok(self):
1310
- # A simple config file which overrides the default settings.
1311
- with support.captured_stdout() as output:
1312
- self.apply_config(self.config0)
1313
- logger = logging.getLogger()
1314
- # Won't output anything
1315
- logger.info(self.next_message())
1316
- # Outputs a message
1317
- logger.error(self.next_message())
1318
- self.assert_log_lines([
1319
- ('ERROR', '2'),
1320
- ], stream=output)
1321
- # Original logger output is empty.
1322
- self.assert_log_lines([])
1323
-
1324
- def test_config0_using_cp_ok(self):
1325
- # A simple config file which overrides the default settings.
1326
- with support.captured_stdout() as output:
1327
- file = io.StringIO(textwrap.dedent(self.config0))
1328
- cp = configparser.ConfigParser()
1329
- cp.read_file(file)
1330
- logging.config.fileConfig(cp)
1331
- logger = logging.getLogger()
1332
- # Won't output anything
1333
- logger.info(self.next_message())
1334
- # Outputs a message
1335
- logger.error(self.next_message())
1336
- self.assert_log_lines([
1337
- ('ERROR', '2'),
1338
- ], stream=output)
1339
- # Original logger output is empty.
1340
- self.assert_log_lines([])
1341
-
1342
- def test_config1_ok(self, config=config1):
1343
- # A config file defining a sub-parser as well.
1344
- with support.captured_stdout() as output:
1345
- self.apply_config(config)
1346
- logger = logging.getLogger("compiler.parser")
1347
- # Both will output a message
1348
- logger.info(self.next_message())
1349
- logger.error(self.next_message())
1350
- self.assert_log_lines([
1351
- ('INFO', '1'),
1352
- ('ERROR', '2'),
1353
- ], stream=output)
1354
- # Original logger output is empty.
1355
- self.assert_log_lines([])
1356
-
1357
- def test_config2_failure(self):
1358
- # A simple config file which overrides the default settings.
1359
- self.assertRaises(Exception, self.apply_config, self.config2)
1360
-
1361
- def test_config3_failure(self):
1362
- # A simple config file which overrides the default settings.
1363
- self.assertRaises(Exception, self.apply_config, self.config3)
1364
-
1365
- def test_config4_ok(self):
1366
- # A config file specifying a custom formatter class.
1367
- with support.captured_stdout() as output:
1368
- self.apply_config(self.config4)
1369
- logger = logging.getLogger()
1370
- try:
1371
- raise RuntimeError()
1372
- except RuntimeError:
1373
- logging.exception("just testing")
1374
- sys.stdout.seek(0)
1375
- self.assertEqual(output.getvalue(),
1376
- "ERROR:root:just testing\nGot a [RuntimeError]\n")
1377
- # Original logger output is empty
1378
- self.assert_log_lines([])
1379
-
1380
- def test_config5_ok(self):
1381
- self.test_config1_ok(config=self.config5)
1382
-
1383
- def test_config6_ok(self):
1384
- self.test_config1_ok(config=self.config6)
1385
-
1386
- def test_config7_ok(self):
1387
- with support.captured_stdout() as output:
1388
- self.apply_config(self.config1a)
1389
- logger = logging.getLogger("compiler.parser")
1390
- # See issue #11424. compiler-hyphenated sorts
1391
- # between compiler and compiler.xyz and this
1392
- # was preventing compiler.xyz from being included
1393
- # in the child loggers of compiler because of an
1394
- # overzealous loop termination condition.
1395
- hyphenated = logging.getLogger('compiler-hyphenated')
1396
- # All will output a message
1397
- logger.info(self.next_message())
1398
- logger.error(self.next_message())
1399
- hyphenated.critical(self.next_message())
1400
- self.assert_log_lines([
1401
- ('INFO', '1'),
1402
- ('ERROR', '2'),
1403
- ('CRITICAL', '3'),
1404
- ], stream=output)
1405
- # Original logger output is empty.
1406
- self.assert_log_lines([])
1407
- with support.captured_stdout() as output:
1408
- self.apply_config(self.config7)
1409
- logger = logging.getLogger("compiler.parser")
1410
- self.assertFalse(logger.disabled)
1411
- # Both will output a message
1412
- logger.info(self.next_message())
1413
- logger.error(self.next_message())
1414
- logger = logging.getLogger("compiler.lexer")
1415
- # Both will output a message
1416
- logger.info(self.next_message())
1417
- logger.error(self.next_message())
1418
- # Will not appear
1419
- hyphenated.critical(self.next_message())
1420
- self.assert_log_lines([
1421
- ('INFO', '4'),
1422
- ('ERROR', '5'),
1423
- ('INFO', '6'),
1424
- ('ERROR', '7'),
1425
- ], stream=output)
1426
- # Original logger output is empty.
1427
- self.assert_log_lines([])
1428
-
1429
- def test_logger_disabling(self):
1430
- self.apply_config(self.disable_test)
1431
- logger = logging.getLogger('some_pristine_logger')
1432
- self.assertFalse(logger.disabled)
1433
- self.apply_config(self.disable_test)
1434
- self.assertTrue(logger.disabled)
1435
- self.apply_config(self.disable_test, disable_existing_loggers=False)
1436
- self.assertFalse(logger.disabled)
1437
-
1438
-
1439
- @unittest.skipUnless(threading, 'Threading required for this test.')
1440
- class SocketHandlerTest(BaseTest):
1441
-
1442
- """Test for SocketHandler objects."""
1443
-
1444
- if threading:
1445
- server_class = TestTCPServer
1446
- address = ('localhost', 0)
1447
-
1448
- def setUp(self):
1449
- """Set up a TCP server to receive log messages, and a SocketHandler
1450
- pointing to that server's address and port."""
1451
- BaseTest.setUp(self)
1452
- # Issue #29177: deal with errors that happen during setup
1453
- self.server = self.sock_hdlr = self.server_exception = None
1454
- try:
1455
- self.server = server = self.server_class(self.address,
1456
- self.handle_socket, 0.01)
1457
- server.start()
1458
- # Uncomment next line to test error recovery in setUp()
1459
- # raise OSError('dummy error raised')
1460
- except OSError as e:
1461
- self.server_exception = e
1462
- return
1463
- server.ready.wait()
1464
- hcls = logging.handlers.SocketHandler
1465
- if isinstance(server.server_address, tuple):
1466
- self.sock_hdlr = hcls('localhost', server.port)
1467
- else:
1468
- self.sock_hdlr = hcls(server.server_address, None)
1469
- self.log_output = ''
1470
- self.root_logger.removeHandler(self.root_logger.handlers[0])
1471
- self.root_logger.addHandler(self.sock_hdlr)
1472
- self.handled = threading.Semaphore(0)
1473
-
1474
- def tearDown(self):
1475
- """Shutdown the TCP server."""
1476
- try:
1477
- if self.server:
1478
- self.server.stop(2.0)
1479
- if self.sock_hdlr:
1480
- self.root_logger.removeHandler(self.sock_hdlr)
1481
- self.sock_hdlr.close()
1482
- finally:
1483
- BaseTest.tearDown(self)
1484
-
1485
- def handle_socket(self, request):
1486
- conn = request.connection
1487
- while True:
1488
- chunk = conn.recv(4)
1489
- if len(chunk) < 4:
1490
- break
1491
- slen = struct.unpack(">L", chunk)[0]
1492
- chunk = conn.recv(slen)
1493
- while len(chunk) < slen:
1494
- chunk = chunk + conn.recv(slen - len(chunk))
1495
- obj = pickle.loads(chunk)
1496
- record = logging.makeLogRecord(obj)
1497
- self.log_output += record.msg + '\n'
1498
- self.handled.release()
1499
-
1500
- def test_output(self):
1501
- # The log message sent to the SocketHandler is properly received.
1502
- if self.server_exception:
1503
- self.skipTest(self.server_exception)
1504
- logger = logging.getLogger("tcp")
1505
- logger.error("spam")
1506
- self.handled.acquire()
1507
- logger.debug("eggs")
1508
- self.handled.acquire()
1509
- self.assertEqual(self.log_output, "spam\neggs\n")
1510
-
1511
- def test_noserver(self):
1512
- if self.server_exception:
1513
- self.skipTest(self.server_exception)
1514
- # Avoid timing-related failures due to SocketHandler's own hard-wired
1515
- # one-second timeout on socket.create_connection() (issue #16264).
1516
- self.sock_hdlr.retryStart = 2.5
1517
- # Kill the server
1518
- self.server.stop(2.0)
1519
- # The logging call should try to connect, which should fail
1520
- try:
1521
- raise RuntimeError('Deliberate mistake')
1522
- except RuntimeError:
1523
- self.root_logger.exception('Never sent')
1524
- self.root_logger.error('Never sent, either')
1525
- now = time.time()
1526
- self.assertGreater(self.sock_hdlr.retryTime, now)
1527
- time.sleep(self.sock_hdlr.retryTime - now + 0.001)
1528
- self.root_logger.error('Nor this')
1529
-
1530
- def _get_temp_domain_socket():
1531
- fd, fn = tempfile.mkstemp(prefix='test_logging_', suffix='.sock')
1532
- os.close(fd)
1533
- # just need a name - file can't be present, or we'll get an
1534
- # 'address already in use' error.
1535
- os.remove(fn)
1536
- return fn
1537
-
1538
- @unittest.skipUnless(hasattr(socket, "AF_UNIX"), "Unix sockets required")
1539
- @unittest.skipUnless(threading, 'Threading required for this test.')
1540
- class UnixSocketHandlerTest(SocketHandlerTest):
1541
-
1542
- """Test for SocketHandler with unix sockets."""
1543
-
1544
- if threading and hasattr(socket, "AF_UNIX"):
1545
- server_class = TestUnixStreamServer
1546
-
1547
- def setUp(self):
1548
- # override the definition in the base class
1549
- self.address = _get_temp_domain_socket()
1550
- SocketHandlerTest.setUp(self)
1551
-
1552
- def tearDown(self):
1553
- SocketHandlerTest.tearDown(self)
1554
- support.unlink(self.address)
1555
-
1556
- @unittest.skipUnless(threading, 'Threading required for this test.')
1557
- class DatagramHandlerTest(BaseTest):
1558
-
1559
- """Test for DatagramHandler."""
1560
-
1561
- if threading:
1562
- server_class = TestUDPServer
1563
- address = ('localhost', 0)
1564
-
1565
- def setUp(self):
1566
- """Set up a UDP server to receive log messages, and a DatagramHandler
1567
- pointing to that server's address and port."""
1568
- BaseTest.setUp(self)
1569
- # Issue #29177: deal with errors that happen during setup
1570
- self.server = self.sock_hdlr = self.server_exception = None
1571
- try:
1572
- self.server = server = self.server_class(self.address,
1573
- self.handle_datagram, 0.01)
1574
- server.start()
1575
- # Uncomment next line to test error recovery in setUp()
1576
- # raise OSError('dummy error raised')
1577
- except OSError as e:
1578
- self.server_exception = e
1579
- return
1580
- server.ready.wait()
1581
- hcls = logging.handlers.DatagramHandler
1582
- if isinstance(server.server_address, tuple):
1583
- self.sock_hdlr = hcls('localhost', server.port)
1584
- else:
1585
- self.sock_hdlr = hcls(server.server_address, None)
1586
- self.log_output = ''
1587
- self.root_logger.removeHandler(self.root_logger.handlers[0])
1588
- self.root_logger.addHandler(self.sock_hdlr)
1589
- self.handled = threading.Event()
1590
-
1591
- def tearDown(self):
1592
- """Shutdown the UDP server."""
1593
- try:
1594
- if self.server:
1595
- self.server.stop(2.0)
1596
- if self.sock_hdlr:
1597
- self.root_logger.removeHandler(self.sock_hdlr)
1598
- self.sock_hdlr.close()
1599
- finally:
1600
- BaseTest.tearDown(self)
1601
-
1602
- def handle_datagram(self, request):
1603
- slen = struct.pack('>L', 0) # length of prefix
1604
- packet = request.packet[len(slen):]
1605
- obj = pickle.loads(packet)
1606
- record = logging.makeLogRecord(obj)
1607
- self.log_output += record.msg + '\n'
1608
- self.handled.set()
1609
-
1610
- def test_output(self):
1611
- # The log message sent to the DatagramHandler is properly received.
1612
- if self.server_exception:
1613
- self.skipTest(self.server_exception)
1614
- logger = logging.getLogger("udp")
1615
- logger.error("spam")
1616
- self.handled.wait()
1617
- self.handled.clear()
1618
- logger.error("eggs")
1619
- self.handled.wait()
1620
- self.assertEqual(self.log_output, "spam\neggs\n")
1621
-
1622
- @unittest.skipUnless(hasattr(socket, "AF_UNIX"), "Unix sockets required")
1623
- @unittest.skipUnless(threading, 'Threading required for this test.')
1624
- class UnixDatagramHandlerTest(DatagramHandlerTest):
1625
-
1626
- """Test for DatagramHandler using Unix sockets."""
1627
-
1628
- if threading and hasattr(socket, "AF_UNIX"):
1629
- server_class = TestUnixDatagramServer
1630
-
1631
- def setUp(self):
1632
- # override the definition in the base class
1633
- self.address = _get_temp_domain_socket()
1634
- DatagramHandlerTest.setUp(self)
1635
-
1636
- def tearDown(self):
1637
- DatagramHandlerTest.tearDown(self)
1638
- support.unlink(self.address)
1639
-
1640
- @unittest.skipUnless(threading, 'Threading required for this test.')
1641
- class SysLogHandlerTest(BaseTest):
1642
-
1643
- """Test for SysLogHandler using UDP."""
1644
-
1645
- if threading:
1646
- server_class = TestUDPServer
1647
- address = ('localhost', 0)
1648
-
1649
- def setUp(self):
1650
- """Set up a UDP server to receive log messages, and a SysLogHandler
1651
- pointing to that server's address and port."""
1652
- BaseTest.setUp(self)
1653
- # Issue #29177: deal with errors that happen during setup
1654
- self.server = self.sl_hdlr = self.server_exception = None
1655
- try:
1656
- self.server = server = self.server_class(self.address,
1657
- self.handle_datagram, 0.01)
1658
- server.start()
1659
- # Uncomment next line to test error recovery in setUp()
1660
- # raise OSError('dummy error raised')
1661
- except OSError as e:
1662
- self.server_exception = e
1663
- return
1664
- server.ready.wait()
1665
- hcls = logging.handlers.SysLogHandler
1666
- if isinstance(server.server_address, tuple):
1667
- self.sl_hdlr = hcls((server.server_address[0], server.port))
1668
- else:
1669
- self.sl_hdlr = hcls(server.server_address)
1670
- self.log_output = ''
1671
- self.root_logger.removeHandler(self.root_logger.handlers[0])
1672
- self.root_logger.addHandler(self.sl_hdlr)
1673
- self.handled = threading.Event()
1674
-
1675
- def tearDown(self):
1676
- """Shutdown the server."""
1677
- try:
1678
- if self.server:
1679
- self.server.stop(2.0)
1680
- if self.sl_hdlr:
1681
- self.root_logger.removeHandler(self.sl_hdlr)
1682
- self.sl_hdlr.close()
1683
- finally:
1684
- BaseTest.tearDown(self)
1685
-
1686
- def handle_datagram(self, request):
1687
- self.log_output = request.packet
1688
- self.handled.set()
1689
-
1690
- def test_output(self):
1691
- if self.server_exception:
1692
- self.skipTest(self.server_exception)
1693
- # The log message sent to the SysLogHandler is properly received.
1694
- logger = logging.getLogger("slh")
1695
- logger.error("sp\xe4m")
1696
- self.handled.wait()
1697
- self.assertEqual(self.log_output, b'<11>sp\xc3\xa4m\x00')
1698
- self.handled.clear()
1699
- self.sl_hdlr.append_nul = False
1700
- logger.error("sp\xe4m")
1701
- self.handled.wait()
1702
- self.assertEqual(self.log_output, b'<11>sp\xc3\xa4m')
1703
- self.handled.clear()
1704
- self.sl_hdlr.ident = "h\xe4m-"
1705
- logger.error("sp\xe4m")
1706
- self.handled.wait()
1707
- self.assertEqual(self.log_output, b'<11>h\xc3\xa4m-sp\xc3\xa4m')
1708
-
1709
- @unittest.skipUnless(hasattr(socket, "AF_UNIX"), "Unix sockets required")
1710
- @unittest.skipUnless(threading, 'Threading required for this test.')
1711
- class UnixSysLogHandlerTest(SysLogHandlerTest):
1712
-
1713
- """Test for SysLogHandler with Unix sockets."""
1714
-
1715
- if threading and hasattr(socket, "AF_UNIX"):
1716
- server_class = TestUnixDatagramServer
1717
-
1718
- def setUp(self):
1719
- # override the definition in the base class
1720
- self.address = _get_temp_domain_socket()
1721
- SysLogHandlerTest.setUp(self)
1722
-
1723
- def tearDown(self):
1724
- SysLogHandlerTest.tearDown(self)
1725
- support.unlink(self.address)
1726
-
1727
- @unittest.skipUnless(support.IPV6_ENABLED,
1728
- 'IPv6 support required for this test.')
1729
- @unittest.skipUnless(threading, 'Threading required for this test.')
1730
- class IPv6SysLogHandlerTest(SysLogHandlerTest):
1731
-
1732
- """Test for SysLogHandler with IPv6 host."""
1733
-
1734
- server_class = TestUDPServer
1735
- address = ('::1', 0)
1736
-
1737
- def setUp(self):
1738
- self.server_class.address_family = socket.AF_INET6
1739
- super(IPv6SysLogHandlerTest, self).setUp()
1740
-
1741
- def tearDown(self):
1742
- self.server_class.address_family = socket.AF_INET
1743
- super(IPv6SysLogHandlerTest, self).tearDown()
1744
-
1745
- @unittest.skipUnless(threading, 'Threading required for this test.')
1746
- class HTTPHandlerTest(BaseTest):
1747
- """Test for HTTPHandler."""
1748
-
1749
- def setUp(self):
1750
- """Set up an HTTP server to receive log messages, and a HTTPHandler
1751
- pointing to that server's address and port."""
1752
- BaseTest.setUp(self)
1753
- self.handled = threading.Event()
1754
-
1755
- def handle_request(self, request):
1756
- self.command = request.command
1757
- self.log_data = urlparse(request.path)
1758
- if self.command == 'POST':
1759
- try:
1760
- rlen = int(request.headers['Content-Length'])
1761
- self.post_data = request.rfile.read(rlen)
1762
- except:
1763
- self.post_data = None
1764
- request.send_response(200)
1765
- request.end_headers()
1766
- self.handled.set()
1767
-
1768
- def test_output(self):
1769
- # The log message sent to the HTTPHandler is properly received.
1770
- logger = logging.getLogger("http")
1771
- root_logger = self.root_logger
1772
- root_logger.removeHandler(self.root_logger.handlers[0])
1773
- for secure in (False, True):
1774
- addr = ('localhost', 0)
1775
- if secure:
1776
- try:
1777
- import ssl
1778
- except ImportError:
1779
- sslctx = None
1780
- else:
1781
- here = os.path.dirname(__file__)
1782
- localhost_cert = os.path.join(here, "keycert.pem")
1783
- sslctx = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
1784
- sslctx.load_cert_chain(localhost_cert)
1785
-
1786
- context = ssl.create_default_context(cafile=localhost_cert)
1787
- else:
1788
- sslctx = None
1789
- context = None
1790
- self.server = server = TestHTTPServer(addr, self.handle_request,
1791
- 0.01, sslctx=sslctx)
1792
- server.start()
1793
- server.ready.wait()
1794
- host = 'localhost:%d' % server.server_port
1795
- secure_client = secure and sslctx
1796
- self.h_hdlr = logging.handlers.HTTPHandler(host, '/frob',
1797
- secure=secure_client,
1798
- context=context,
1799
- credentials=('foo', 'bar'))
1800
- self.log_data = None
1801
- root_logger.addHandler(self.h_hdlr)
1802
-
1803
- for method in ('GET', 'POST'):
1804
- self.h_hdlr.method = method
1805
- self.handled.clear()
1806
- msg = "sp\xe4m"
1807
- logger.error(msg)
1808
- self.handled.wait()
1809
- self.assertEqual(self.log_data.path, '/frob')
1810
- self.assertEqual(self.command, method)
1811
- if method == 'GET':
1812
- d = parse_qs(self.log_data.query)
1813
- else:
1814
- d = parse_qs(self.post_data.decode('utf-8'))
1815
- self.assertEqual(d['name'], ['http'])
1816
- self.assertEqual(d['funcName'], ['test_output'])
1817
- self.assertEqual(d['msg'], [msg])
1818
-
1819
- self.server.stop(2.0)
1820
- self.root_logger.removeHandler(self.h_hdlr)
1821
- self.h_hdlr.close()
1822
-
1823
- class MemoryTest(BaseTest):
1824
-
1825
- """Test memory persistence of logger objects."""
1826
-
1827
- def setUp(self):
1828
- """Create a dict to remember potentially destroyed objects."""
1829
- BaseTest.setUp(self)
1830
- self._survivors = {}
1831
-
1832
- def _watch_for_survival(self, *args):
1833
- """Watch the given objects for survival, by creating weakrefs to
1834
- them."""
1835
- for obj in args:
1836
- key = id(obj), repr(obj)
1837
- self._survivors[key] = weakref.ref(obj)
1838
-
1839
- def _assertTruesurvival(self):
1840
- """Assert that all objects watched for survival have survived."""
1841
- # Trigger cycle breaking.
1842
- gc.collect()
1843
- dead = []
1844
- for (id_, repr_), ref in self._survivors.items():
1845
- if ref() is None:
1846
- dead.append(repr_)
1847
- if dead:
1848
- self.fail("%d objects should have survived "
1849
- "but have been destroyed: %s" % (len(dead), ", ".join(dead)))
1850
-
1851
- def test_persistent_loggers(self):
1852
- # Logger objects are persistent and retain their configuration, even
1853
- # if visible references are destroyed.
1854
- self.root_logger.setLevel(logging.INFO)
1855
- foo = logging.getLogger("foo")
1856
- self._watch_for_survival(foo)
1857
- foo.setLevel(logging.DEBUG)
1858
- self.root_logger.debug(self.next_message())
1859
- foo.debug(self.next_message())
1860
- self.assert_log_lines([
1861
- ('foo', 'DEBUG', '2'),
1862
- ])
1863
- del foo
1864
- # foo has survived.
1865
- self._assertTruesurvival()
1866
- # foo has retained its settings.
1867
- bar = logging.getLogger("foo")
1868
- bar.debug(self.next_message())
1869
- self.assert_log_lines([
1870
- ('foo', 'DEBUG', '2'),
1871
- ('foo', 'DEBUG', '3'),
1872
- ])
1873
-
1874
-
1875
- class EncodingTest(BaseTest):
1876
- def test_encoding_plain_file(self):
1877
- # In Python 2.x, a plain file object is treated as having no encoding.
1878
- log = logging.getLogger("test")
1879
- fd, fn = tempfile.mkstemp(".log", "test_logging-1-")
1880
- os.close(fd)
1881
- # the non-ascii data we write to the log.
1882
- data = "foo\x80"
1883
- try:
1884
- handler = logging.FileHandler(fn, encoding="utf-8")
1885
- log.addHandler(handler)
1886
- try:
1887
- # write non-ascii data to the log.
1888
- log.warning(data)
1889
- finally:
1890
- log.removeHandler(handler)
1891
- handler.close()
1892
- # check we wrote exactly those bytes, ignoring trailing \n etc
1893
- f = open(fn, encoding="utf-8")
1894
- try:
1895
- self.assertEqual(f.read().rstrip(), data)
1896
- finally:
1897
- f.close()
1898
- finally:
1899
- if os.path.isfile(fn):
1900
- os.remove(fn)
1901
-
1902
- def test_encoding_cyrillic_unicode(self):
1903
- log = logging.getLogger("test")
1904
- #Get a message in Unicode: Do svidanya in Cyrillic (meaning goodbye)
1905
- message = '\u0434\u043e \u0441\u0432\u0438\u0434\u0430\u043d\u0438\u044f'
1906
- #Ensure it's written in a Cyrillic encoding
1907
- writer_class = codecs.getwriter('cp1251')
1908
- writer_class.encoding = 'cp1251'
1909
- stream = io.BytesIO()
1910
- writer = writer_class(stream, 'strict')
1911
- handler = logging.StreamHandler(writer)
1912
- log.addHandler(handler)
1913
- try:
1914
- log.warning(message)
1915
- finally:
1916
- log.removeHandler(handler)
1917
- handler.close()
1918
- # check we wrote exactly those bytes, ignoring trailing \n etc
1919
- s = stream.getvalue()
1920
- #Compare against what the data should be when encoded in CP-1251
1921
- self.assertEqual(s, b'\xe4\xee \xf1\xe2\xe8\xe4\xe0\xed\xe8\xff\n')
1922
-
1923
-
1924
- class WarningsTest(BaseTest):
1925
-
1926
- def test_warnings(self):
1927
- with warnings.catch_warnings():
1928
- logging.captureWarnings(True)
1929
- self.addCleanup(logging.captureWarnings, False)
1930
- warnings.filterwarnings("always", category=UserWarning)
1931
- stream = io.StringIO()
1932
- h = logging.StreamHandler(stream)
1933
- logger = logging.getLogger("py.warnings")
1934
- logger.addHandler(h)
1935
- warnings.warn("I'm warning you...")
1936
- logger.removeHandler(h)
1937
- s = stream.getvalue()
1938
- h.close()
1939
- self.assertGreater(s.find("UserWarning: I'm warning you...\n"), 0)
1940
-
1941
- #See if an explicit file uses the original implementation
1942
- a_file = io.StringIO()
1943
- warnings.showwarning("Explicit", UserWarning, "dummy.py", 42,
1944
- a_file, "Dummy line")
1945
- s = a_file.getvalue()
1946
- a_file.close()
1947
- self.assertEqual(s,
1948
- "dummy.py:42: UserWarning: Explicit\n Dummy line\n")
1949
-
1950
- def test_warnings_no_handlers(self):
1951
- with warnings.catch_warnings():
1952
- logging.captureWarnings(True)
1953
- self.addCleanup(logging.captureWarnings, False)
1954
-
1955
- # confirm our assumption: no loggers are set
1956
- logger = logging.getLogger("py.warnings")
1957
- self.assertEqual(logger.handlers, [])
1958
-
1959
- warnings.showwarning("Explicit", UserWarning, "dummy.py", 42)
1960
- self.assertEqual(len(logger.handlers), 1)
1961
- self.assertIsInstance(logger.handlers[0], logging.NullHandler)
1962
-
1963
-
1964
- def formatFunc(format, datefmt=None):
1965
- return logging.Formatter(format, datefmt)
1966
-
1967
- def handlerFunc():
1968
- return logging.StreamHandler()
1969
-
1970
- class CustomHandler(logging.StreamHandler):
1971
- pass
1972
-
1973
- class ConfigDictTest(BaseTest):
1974
-
1975
- """Reading logging config from a dictionary."""
1976
-
1977
- expected_log_pat = r"^(\w+) \+\+ (\w+)$"
1978
-
1979
- # config0 is a standard configuration.
1980
- config0 = {
1981
- 'version': 1,
1982
- 'formatters': {
1983
- 'form1' : {
1984
- 'format' : '%(levelname)s ++ %(message)s',
1985
- },
1986
- },
1987
- 'handlers' : {
1988
- 'hand1' : {
1989
- 'class' : 'logging.StreamHandler',
1990
- 'formatter' : 'form1',
1991
- 'level' : 'NOTSET',
1992
- 'stream' : 'ext://sys.stdout',
1993
- },
1994
- },
1995
- 'root' : {
1996
- 'level' : 'WARNING',
1997
- 'handlers' : ['hand1'],
1998
- },
1999
- }
2000
-
2001
- # config1 adds a little to the standard configuration.
2002
- config1 = {
2003
- 'version': 1,
2004
- 'formatters': {
2005
- 'form1' : {
2006
- 'format' : '%(levelname)s ++ %(message)s',
2007
- },
2008
- },
2009
- 'handlers' : {
2010
- 'hand1' : {
2011
- 'class' : 'logging.StreamHandler',
2012
- 'formatter' : 'form1',
2013
- 'level' : 'NOTSET',
2014
- 'stream' : 'ext://sys.stdout',
2015
- },
2016
- },
2017
- 'loggers' : {
2018
- 'compiler.parser' : {
2019
- 'level' : 'DEBUG',
2020
- 'handlers' : ['hand1'],
2021
- },
2022
- },
2023
- 'root' : {
2024
- 'level' : 'WARNING',
2025
- },
2026
- }
2027
-
2028
- # config1a moves the handler to the root. Used with config8a
2029
- config1a = {
2030
- 'version': 1,
2031
- 'formatters': {
2032
- 'form1' : {
2033
- 'format' : '%(levelname)s ++ %(message)s',
2034
- },
2035
- },
2036
- 'handlers' : {
2037
- 'hand1' : {
2038
- 'class' : 'logging.StreamHandler',
2039
- 'formatter' : 'form1',
2040
- 'level' : 'NOTSET',
2041
- 'stream' : 'ext://sys.stdout',
2042
- },
2043
- },
2044
- 'loggers' : {
2045
- 'compiler.parser' : {
2046
- 'level' : 'DEBUG',
2047
- },
2048
- },
2049
- 'root' : {
2050
- 'level' : 'WARNING',
2051
- 'handlers' : ['hand1'],
2052
- },
2053
- }
2054
-
2055
- # config2 has a subtle configuration error that should be reported
2056
- config2 = {
2057
- 'version': 1,
2058
- 'formatters': {
2059
- 'form1' : {
2060
- 'format' : '%(levelname)s ++ %(message)s',
2061
- },
2062
- },
2063
- 'handlers' : {
2064
- 'hand1' : {
2065
- 'class' : 'logging.StreamHandler',
2066
- 'formatter' : 'form1',
2067
- 'level' : 'NOTSET',
2068
- 'stream' : 'ext://sys.stdbout',
2069
- },
2070
- },
2071
- 'loggers' : {
2072
- 'compiler.parser' : {
2073
- 'level' : 'DEBUG',
2074
- 'handlers' : ['hand1'],
2075
- },
2076
- },
2077
- 'root' : {
2078
- 'level' : 'WARNING',
2079
- },
2080
- }
2081
-
2082
- #As config1 but with a misspelt level on a handler
2083
- config2a = {
2084
- 'version': 1,
2085
- 'formatters': {
2086
- 'form1' : {
2087
- 'format' : '%(levelname)s ++ %(message)s',
2088
- },
2089
- },
2090
- 'handlers' : {
2091
- 'hand1' : {
2092
- 'class' : 'logging.StreamHandler',
2093
- 'formatter' : 'form1',
2094
- 'level' : 'NTOSET',
2095
- 'stream' : 'ext://sys.stdout',
2096
- },
2097
- },
2098
- 'loggers' : {
2099
- 'compiler.parser' : {
2100
- 'level' : 'DEBUG',
2101
- 'handlers' : ['hand1'],
2102
- },
2103
- },
2104
- 'root' : {
2105
- 'level' : 'WARNING',
2106
- },
2107
- }
2108
-
2109
-
2110
- #As config1 but with a misspelt level on a logger
2111
- config2b = {
2112
- 'version': 1,
2113
- 'formatters': {
2114
- 'form1' : {
2115
- 'format' : '%(levelname)s ++ %(message)s',
2116
- },
2117
- },
2118
- 'handlers' : {
2119
- 'hand1' : {
2120
- 'class' : 'logging.StreamHandler',
2121
- 'formatter' : 'form1',
2122
- 'level' : 'NOTSET',
2123
- 'stream' : 'ext://sys.stdout',
2124
- },
2125
- },
2126
- 'loggers' : {
2127
- 'compiler.parser' : {
2128
- 'level' : 'DEBUG',
2129
- 'handlers' : ['hand1'],
2130
- },
2131
- },
2132
- 'root' : {
2133
- 'level' : 'WRANING',
2134
- },
2135
- }
2136
-
2137
- # config3 has a less subtle configuration error
2138
- config3 = {
2139
- 'version': 1,
2140
- 'formatters': {
2141
- 'form1' : {
2142
- 'format' : '%(levelname)s ++ %(message)s',
2143
- },
2144
- },
2145
- 'handlers' : {
2146
- 'hand1' : {
2147
- 'class' : 'logging.StreamHandler',
2148
- 'formatter' : 'misspelled_name',
2149
- 'level' : 'NOTSET',
2150
- 'stream' : 'ext://sys.stdout',
2151
- },
2152
- },
2153
- 'loggers' : {
2154
- 'compiler.parser' : {
2155
- 'level' : 'DEBUG',
2156
- 'handlers' : ['hand1'],
2157
- },
2158
- },
2159
- 'root' : {
2160
- 'level' : 'WARNING',
2161
- },
2162
- }
2163
-
2164
- # config4 specifies a custom formatter class to be loaded
2165
- config4 = {
2166
- 'version': 1,
2167
- 'formatters': {
2168
- 'form1' : {
2169
- '()' : __name__ + '.ExceptionFormatter',
2170
- 'format' : '%(levelname)s:%(name)s:%(message)s',
2171
- },
2172
- },
2173
- 'handlers' : {
2174
- 'hand1' : {
2175
- 'class' : 'logging.StreamHandler',
2176
- 'formatter' : 'form1',
2177
- 'level' : 'NOTSET',
2178
- 'stream' : 'ext://sys.stdout',
2179
- },
2180
- },
2181
- 'root' : {
2182
- 'level' : 'NOTSET',
2183
- 'handlers' : ['hand1'],
2184
- },
2185
- }
2186
-
2187
- # As config4 but using an actual callable rather than a string
2188
- config4a = {
2189
- 'version': 1,
2190
- 'formatters': {
2191
- 'form1' : {
2192
- '()' : ExceptionFormatter,
2193
- 'format' : '%(levelname)s:%(name)s:%(message)s',
2194
- },
2195
- 'form2' : {
2196
- '()' : __name__ + '.formatFunc',
2197
- 'format' : '%(levelname)s:%(name)s:%(message)s',
2198
- },
2199
- 'form3' : {
2200
- '()' : formatFunc,
2201
- 'format' : '%(levelname)s:%(name)s:%(message)s',
2202
- },
2203
- },
2204
- 'handlers' : {
2205
- 'hand1' : {
2206
- 'class' : 'logging.StreamHandler',
2207
- 'formatter' : 'form1',
2208
- 'level' : 'NOTSET',
2209
- 'stream' : 'ext://sys.stdout',
2210
- },
2211
- 'hand2' : {
2212
- '()' : handlerFunc,
2213
- },
2214
- },
2215
- 'root' : {
2216
- 'level' : 'NOTSET',
2217
- 'handlers' : ['hand1'],
2218
- },
2219
- }
2220
-
2221
- # config5 specifies a custom handler class to be loaded
2222
- config5 = {
2223
- 'version': 1,
2224
- 'formatters': {
2225
- 'form1' : {
2226
- 'format' : '%(levelname)s ++ %(message)s',
2227
- },
2228
- },
2229
- 'handlers' : {
2230
- 'hand1' : {
2231
- 'class' : __name__ + '.CustomHandler',
2232
- 'formatter' : 'form1',
2233
- 'level' : 'NOTSET',
2234
- 'stream' : 'ext://sys.stdout',
2235
- },
2236
- },
2237
- 'loggers' : {
2238
- 'compiler.parser' : {
2239
- 'level' : 'DEBUG',
2240
- 'handlers' : ['hand1'],
2241
- },
2242
- },
2243
- 'root' : {
2244
- 'level' : 'WARNING',
2245
- },
2246
- }
2247
-
2248
- # config6 specifies a custom handler class to be loaded
2249
- # but has bad arguments
2250
- config6 = {
2251
- 'version': 1,
2252
- 'formatters': {
2253
- 'form1' : {
2254
- 'format' : '%(levelname)s ++ %(message)s',
2255
- },
2256
- },
2257
- 'handlers' : {
2258
- 'hand1' : {
2259
- 'class' : __name__ + '.CustomHandler',
2260
- 'formatter' : 'form1',
2261
- 'level' : 'NOTSET',
2262
- 'stream' : 'ext://sys.stdout',
2263
- '9' : 'invalid parameter name',
2264
- },
2265
- },
2266
- 'loggers' : {
2267
- 'compiler.parser' : {
2268
- 'level' : 'DEBUG',
2269
- 'handlers' : ['hand1'],
2270
- },
2271
- },
2272
- 'root' : {
2273
- 'level' : 'WARNING',
2274
- },
2275
- }
2276
-
2277
- #config 7 does not define compiler.parser but defines compiler.lexer
2278
- #so compiler.parser should be disabled after applying it
2279
- config7 = {
2280
- 'version': 1,
2281
- 'formatters': {
2282
- 'form1' : {
2283
- 'format' : '%(levelname)s ++ %(message)s',
2284
- },
2285
- },
2286
- 'handlers' : {
2287
- 'hand1' : {
2288
- 'class' : 'logging.StreamHandler',
2289
- 'formatter' : 'form1',
2290
- 'level' : 'NOTSET',
2291
- 'stream' : 'ext://sys.stdout',
2292
- },
2293
- },
2294
- 'loggers' : {
2295
- 'compiler.lexer' : {
2296
- 'level' : 'DEBUG',
2297
- 'handlers' : ['hand1'],
2298
- },
2299
- },
2300
- 'root' : {
2301
- 'level' : 'WARNING',
2302
- },
2303
- }
2304
-
2305
- # config8 defines both compiler and compiler.lexer
2306
- # so compiler.parser should not be disabled (since
2307
- # compiler is defined)
2308
- config8 = {
2309
- 'version': 1,
2310
- 'disable_existing_loggers' : False,
2311
- 'formatters': {
2312
- 'form1' : {
2313
- 'format' : '%(levelname)s ++ %(message)s',
2314
- },
2315
- },
2316
- 'handlers' : {
2317
- 'hand1' : {
2318
- 'class' : 'logging.StreamHandler',
2319
- 'formatter' : 'form1',
2320
- 'level' : 'NOTSET',
2321
- 'stream' : 'ext://sys.stdout',
2322
- },
2323
- },
2324
- 'loggers' : {
2325
- 'compiler' : {
2326
- 'level' : 'DEBUG',
2327
- 'handlers' : ['hand1'],
2328
- },
2329
- 'compiler.lexer' : {
2330
- },
2331
- },
2332
- 'root' : {
2333
- 'level' : 'WARNING',
2334
- },
2335
- }
2336
-
2337
- # config8a disables existing loggers
2338
- config8a = {
2339
- 'version': 1,
2340
- 'disable_existing_loggers' : True,
2341
- 'formatters': {
2342
- 'form1' : {
2343
- 'format' : '%(levelname)s ++ %(message)s',
2344
- },
2345
- },
2346
- 'handlers' : {
2347
- 'hand1' : {
2348
- 'class' : 'logging.StreamHandler',
2349
- 'formatter' : 'form1',
2350
- 'level' : 'NOTSET',
2351
- 'stream' : 'ext://sys.stdout',
2352
- },
2353
- },
2354
- 'loggers' : {
2355
- 'compiler' : {
2356
- 'level' : 'DEBUG',
2357
- 'handlers' : ['hand1'],
2358
- },
2359
- 'compiler.lexer' : {
2360
- },
2361
- },
2362
- 'root' : {
2363
- 'level' : 'WARNING',
2364
- },
2365
- }
2366
-
2367
- config9 = {
2368
- 'version': 1,
2369
- 'formatters': {
2370
- 'form1' : {
2371
- 'format' : '%(levelname)s ++ %(message)s',
2372
- },
2373
- },
2374
- 'handlers' : {
2375
- 'hand1' : {
2376
- 'class' : 'logging.StreamHandler',
2377
- 'formatter' : 'form1',
2378
- 'level' : 'WARNING',
2379
- 'stream' : 'ext://sys.stdout',
2380
- },
2381
- },
2382
- 'loggers' : {
2383
- 'compiler.parser' : {
2384
- 'level' : 'WARNING',
2385
- 'handlers' : ['hand1'],
2386
- },
2387
- },
2388
- 'root' : {
2389
- 'level' : 'NOTSET',
2390
- },
2391
- }
2392
-
2393
- config9a = {
2394
- 'version': 1,
2395
- 'incremental' : True,
2396
- 'handlers' : {
2397
- 'hand1' : {
2398
- 'level' : 'WARNING',
2399
- },
2400
- },
2401
- 'loggers' : {
2402
- 'compiler.parser' : {
2403
- 'level' : 'INFO',
2404
- },
2405
- },
2406
- }
2407
-
2408
- config9b = {
2409
- 'version': 1,
2410
- 'incremental' : True,
2411
- 'handlers' : {
2412
- 'hand1' : {
2413
- 'level' : 'INFO',
2414
- },
2415
- },
2416
- 'loggers' : {
2417
- 'compiler.parser' : {
2418
- 'level' : 'INFO',
2419
- },
2420
- },
2421
- }
2422
-
2423
- #As config1 but with a filter added
2424
- config10 = {
2425
- 'version': 1,
2426
- 'formatters': {
2427
- 'form1' : {
2428
- 'format' : '%(levelname)s ++ %(message)s',
2429
- },
2430
- },
2431
- 'filters' : {
2432
- 'filt1' : {
2433
- 'name' : 'compiler.parser',
2434
- },
2435
- },
2436
- 'handlers' : {
2437
- 'hand1' : {
2438
- 'class' : 'logging.StreamHandler',
2439
- 'formatter' : 'form1',
2440
- 'level' : 'NOTSET',
2441
- 'stream' : 'ext://sys.stdout',
2442
- 'filters' : ['filt1'],
2443
- },
2444
- },
2445
- 'loggers' : {
2446
- 'compiler.parser' : {
2447
- 'level' : 'DEBUG',
2448
- 'filters' : ['filt1'],
2449
- },
2450
- },
2451
- 'root' : {
2452
- 'level' : 'WARNING',
2453
- 'handlers' : ['hand1'],
2454
- },
2455
- }
2456
-
2457
- #As config1 but using cfg:// references
2458
- config11 = {
2459
- 'version': 1,
2460
- 'true_formatters': {
2461
- 'form1' : {
2462
- 'format' : '%(levelname)s ++ %(message)s',
2463
- },
2464
- },
2465
- 'handler_configs': {
2466
- 'hand1' : {
2467
- 'class' : 'logging.StreamHandler',
2468
- 'formatter' : 'form1',
2469
- 'level' : 'NOTSET',
2470
- 'stream' : 'ext://sys.stdout',
2471
- },
2472
- },
2473
- 'formatters' : 'cfg://true_formatters',
2474
- 'handlers' : {
2475
- 'hand1' : 'cfg://handler_configs[hand1]',
2476
- },
2477
- 'loggers' : {
2478
- 'compiler.parser' : {
2479
- 'level' : 'DEBUG',
2480
- 'handlers' : ['hand1'],
2481
- },
2482
- },
2483
- 'root' : {
2484
- 'level' : 'WARNING',
2485
- },
2486
- }
2487
-
2488
- #As config11 but missing the version key
2489
- config12 = {
2490
- 'true_formatters': {
2491
- 'form1' : {
2492
- 'format' : '%(levelname)s ++ %(message)s',
2493
- },
2494
- },
2495
- 'handler_configs': {
2496
- 'hand1' : {
2497
- 'class' : 'logging.StreamHandler',
2498
- 'formatter' : 'form1',
2499
- 'level' : 'NOTSET',
2500
- 'stream' : 'ext://sys.stdout',
2501
- },
2502
- },
2503
- 'formatters' : 'cfg://true_formatters',
2504
- 'handlers' : {
2505
- 'hand1' : 'cfg://handler_configs[hand1]',
2506
- },
2507
- 'loggers' : {
2508
- 'compiler.parser' : {
2509
- 'level' : 'DEBUG',
2510
- 'handlers' : ['hand1'],
2511
- },
2512
- },
2513
- 'root' : {
2514
- 'level' : 'WARNING',
2515
- },
2516
- }
2517
-
2518
- #As config11 but using an unsupported version
2519
- config13 = {
2520
- 'version': 2,
2521
- 'true_formatters': {
2522
- 'form1' : {
2523
- 'format' : '%(levelname)s ++ %(message)s',
2524
- },
2525
- },
2526
- 'handler_configs': {
2527
- 'hand1' : {
2528
- 'class' : 'logging.StreamHandler',
2529
- 'formatter' : 'form1',
2530
- 'level' : 'NOTSET',
2531
- 'stream' : 'ext://sys.stdout',
2532
- },
2533
- },
2534
- 'formatters' : 'cfg://true_formatters',
2535
- 'handlers' : {
2536
- 'hand1' : 'cfg://handler_configs[hand1]',
2537
- },
2538
- 'loggers' : {
2539
- 'compiler.parser' : {
2540
- 'level' : 'DEBUG',
2541
- 'handlers' : ['hand1'],
2542
- },
2543
- },
2544
- 'root' : {
2545
- 'level' : 'WARNING',
2546
- },
2547
- }
2548
-
2549
- # As config0, but with properties
2550
- config14 = {
2551
- 'version': 1,
2552
- 'formatters': {
2553
- 'form1' : {
2554
- 'format' : '%(levelname)s ++ %(message)s',
2555
- },
2556
- },
2557
- 'handlers' : {
2558
- 'hand1' : {
2559
- 'class' : 'logging.StreamHandler',
2560
- 'formatter' : 'form1',
2561
- 'level' : 'NOTSET',
2562
- 'stream' : 'ext://sys.stdout',
2563
- '.': {
2564
- 'foo': 'bar',
2565
- 'terminator': '!\n',
2566
- }
2567
- },
2568
- },
2569
- 'root' : {
2570
- 'level' : 'WARNING',
2571
- 'handlers' : ['hand1'],
2572
- },
2573
- }
2574
-
2575
- out_of_order = {
2576
- "version": 1,
2577
- "formatters": {
2578
- "mySimpleFormatter": {
2579
- "format": "%(asctime)s (%(name)s) %(levelname)s: %(message)s",
2580
- "style": "$"
2581
- }
2582
- },
2583
- "handlers": {
2584
- "fileGlobal": {
2585
- "class": "logging.StreamHandler",
2586
- "level": "DEBUG",
2587
- "formatter": "mySimpleFormatter"
2588
- },
2589
- "bufferGlobal": {
2590
- "class": "logging.handlers.MemoryHandler",
2591
- "capacity": 5,
2592
- "formatter": "mySimpleFormatter",
2593
- "target": "fileGlobal",
2594
- "level": "DEBUG"
2595
- }
2596
- },
2597
- "loggers": {
2598
- "mymodule": {
2599
- "level": "DEBUG",
2600
- "handlers": ["bufferGlobal"],
2601
- "propagate": "true"
2602
- }
2603
- }
2604
- }
2605
-
2606
- def apply_config(self, conf):
2607
- logging.config.dictConfig(conf)
2608
-
2609
- def test_config0_ok(self):
2610
- # A simple config which overrides the default settings.
2611
- with support.captured_stdout() as output:
2612
- self.apply_config(self.config0)
2613
- logger = logging.getLogger()
2614
- # Won't output anything
2615
- logger.info(self.next_message())
2616
- # Outputs a message
2617
- logger.error(self.next_message())
2618
- self.assert_log_lines([
2619
- ('ERROR', '2'),
2620
- ], stream=output)
2621
- # Original logger output is empty.
2622
- self.assert_log_lines([])
2623
-
2624
- def test_config1_ok(self, config=config1):
2625
- # A config defining a sub-parser as well.
2626
- with support.captured_stdout() as output:
2627
- self.apply_config(config)
2628
- logger = logging.getLogger("compiler.parser")
2629
- # Both will output a message
2630
- logger.info(self.next_message())
2631
- logger.error(self.next_message())
2632
- self.assert_log_lines([
2633
- ('INFO', '1'),
2634
- ('ERROR', '2'),
2635
- ], stream=output)
2636
- # Original logger output is empty.
2637
- self.assert_log_lines([])
2638
-
2639
- def test_config2_failure(self):
2640
- # A simple config which overrides the default settings.
2641
- self.assertRaises(Exception, self.apply_config, self.config2)
2642
-
2643
- def test_config2a_failure(self):
2644
- # A simple config which overrides the default settings.
2645
- self.assertRaises(Exception, self.apply_config, self.config2a)
2646
-
2647
- def test_config2b_failure(self):
2648
- # A simple config which overrides the default settings.
2649
- self.assertRaises(Exception, self.apply_config, self.config2b)
2650
-
2651
- def test_config3_failure(self):
2652
- # A simple config which overrides the default settings.
2653
- self.assertRaises(Exception, self.apply_config, self.config3)
2654
-
2655
- def test_config4_ok(self):
2656
- # A config specifying a custom formatter class.
2657
- with support.captured_stdout() as output:
2658
- self.apply_config(self.config4)
2659
- #logger = logging.getLogger()
2660
- try:
2661
- raise RuntimeError()
2662
- except RuntimeError:
2663
- logging.exception("just testing")
2664
- sys.stdout.seek(0)
2665
- self.assertEqual(output.getvalue(),
2666
- "ERROR:root:just testing\nGot a [RuntimeError]\n")
2667
- # Original logger output is empty
2668
- self.assert_log_lines([])
2669
-
2670
- def test_config4a_ok(self):
2671
- # A config specifying a custom formatter class.
2672
- with support.captured_stdout() as output:
2673
- self.apply_config(self.config4a)
2674
- #logger = logging.getLogger()
2675
- try:
2676
- raise RuntimeError()
2677
- except RuntimeError:
2678
- logging.exception("just testing")
2679
- sys.stdout.seek(0)
2680
- self.assertEqual(output.getvalue(),
2681
- "ERROR:root:just testing\nGot a [RuntimeError]\n")
2682
- # Original logger output is empty
2683
- self.assert_log_lines([])
2684
-
2685
- def test_config5_ok(self):
2686
- self.test_config1_ok(config=self.config5)
2687
-
2688
- def test_config6_failure(self):
2689
- self.assertRaises(Exception, self.apply_config, self.config6)
2690
-
2691
- def test_config7_ok(self):
2692
- with support.captured_stdout() as output:
2693
- self.apply_config(self.config1)
2694
- logger = logging.getLogger("compiler.parser")
2695
- # Both will output a message
2696
- logger.info(self.next_message())
2697
- logger.error(self.next_message())
2698
- self.assert_log_lines([
2699
- ('INFO', '1'),
2700
- ('ERROR', '2'),
2701
- ], stream=output)
2702
- # Original logger output is empty.
2703
- self.assert_log_lines([])
2704
- with support.captured_stdout() as output:
2705
- self.apply_config(self.config7)
2706
- logger = logging.getLogger("compiler.parser")
2707
- self.assertTrue(logger.disabled)
2708
- logger = logging.getLogger("compiler.lexer")
2709
- # Both will output a message
2710
- logger.info(self.next_message())
2711
- logger.error(self.next_message())
2712
- self.assert_log_lines([
2713
- ('INFO', '3'),
2714
- ('ERROR', '4'),
2715
- ], stream=output)
2716
- # Original logger output is empty.
2717
- self.assert_log_lines([])
2718
-
2719
- #Same as test_config_7_ok but don't disable old loggers.
2720
- def test_config_8_ok(self):
2721
- with support.captured_stdout() as output:
2722
- self.apply_config(self.config1)
2723
- logger = logging.getLogger("compiler.parser")
2724
- # All will output a message
2725
- logger.info(self.next_message())
2726
- logger.error(self.next_message())
2727
- self.assert_log_lines([
2728
- ('INFO', '1'),
2729
- ('ERROR', '2'),
2730
- ], stream=output)
2731
- # Original logger output is empty.
2732
- self.assert_log_lines([])
2733
- with support.captured_stdout() as output:
2734
- self.apply_config(self.config8)
2735
- logger = logging.getLogger("compiler.parser")
2736
- self.assertFalse(logger.disabled)
2737
- # Both will output a message
2738
- logger.info(self.next_message())
2739
- logger.error(self.next_message())
2740
- logger = logging.getLogger("compiler.lexer")
2741
- # Both will output a message
2742
- logger.info(self.next_message())
2743
- logger.error(self.next_message())
2744
- self.assert_log_lines([
2745
- ('INFO', '3'),
2746
- ('ERROR', '4'),
2747
- ('INFO', '5'),
2748
- ('ERROR', '6'),
2749
- ], stream=output)
2750
- # Original logger output is empty.
2751
- self.assert_log_lines([])
2752
-
2753
- def test_config_8a_ok(self):
2754
- with support.captured_stdout() as output:
2755
- self.apply_config(self.config1a)
2756
- logger = logging.getLogger("compiler.parser")
2757
- # See issue #11424. compiler-hyphenated sorts
2758
- # between compiler and compiler.xyz and this
2759
- # was preventing compiler.xyz from being included
2760
- # in the child loggers of compiler because of an
2761
- # overzealous loop termination condition.
2762
- hyphenated = logging.getLogger('compiler-hyphenated')
2763
- # All will output a message
2764
- logger.info(self.next_message())
2765
- logger.error(self.next_message())
2766
- hyphenated.critical(self.next_message())
2767
- self.assert_log_lines([
2768
- ('INFO', '1'),
2769
- ('ERROR', '2'),
2770
- ('CRITICAL', '3'),
2771
- ], stream=output)
2772
- # Original logger output is empty.
2773
- self.assert_log_lines([])
2774
- with support.captured_stdout() as output:
2775
- self.apply_config(self.config8a)
2776
- logger = logging.getLogger("compiler.parser")
2777
- self.assertFalse(logger.disabled)
2778
- # Both will output a message
2779
- logger.info(self.next_message())
2780
- logger.error(self.next_message())
2781
- logger = logging.getLogger("compiler.lexer")
2782
- # Both will output a message
2783
- logger.info(self.next_message())
2784
- logger.error(self.next_message())
2785
- # Will not appear
2786
- hyphenated.critical(self.next_message())
2787
- self.assert_log_lines([
2788
- ('INFO', '4'),
2789
- ('ERROR', '5'),
2790
- ('INFO', '6'),
2791
- ('ERROR', '7'),
2792
- ], stream=output)
2793
- # Original logger output is empty.
2794
- self.assert_log_lines([])
2795
-
2796
- def test_config_9_ok(self):
2797
- with support.captured_stdout() as output:
2798
- self.apply_config(self.config9)
2799
- logger = logging.getLogger("compiler.parser")
2800
- #Nothing will be output since both handler and logger are set to WARNING
2801
- logger.info(self.next_message())
2802
- self.assert_log_lines([], stream=output)
2803
- self.apply_config(self.config9a)
2804
- #Nothing will be output since both handler is still set to WARNING
2805
- logger.info(self.next_message())
2806
- self.assert_log_lines([], stream=output)
2807
- self.apply_config(self.config9b)
2808
- #Message should now be output
2809
- logger.info(self.next_message())
2810
- self.assert_log_lines([
2811
- ('INFO', '3'),
2812
- ], stream=output)
2813
-
2814
- def test_config_10_ok(self):
2815
- with support.captured_stdout() as output:
2816
- self.apply_config(self.config10)
2817
- logger = logging.getLogger("compiler.parser")
2818
- logger.warning(self.next_message())
2819
- logger = logging.getLogger('compiler')
2820
- #Not output, because filtered
2821
- logger.warning(self.next_message())
2822
- logger = logging.getLogger('compiler.lexer')
2823
- #Not output, because filtered
2824
- logger.warning(self.next_message())
2825
- logger = logging.getLogger("compiler.parser.codegen")
2826
- #Output, as not filtered
2827
- logger.error(self.next_message())
2828
- self.assert_log_lines([
2829
- ('WARNING', '1'),
2830
- ('ERROR', '4'),
2831
- ], stream=output)
2832
-
2833
- def test_config11_ok(self):
2834
- self.test_config1_ok(self.config11)
2835
-
2836
- def test_config12_failure(self):
2837
- self.assertRaises(Exception, self.apply_config, self.config12)
2838
-
2839
- def test_config13_failure(self):
2840
- self.assertRaises(Exception, self.apply_config, self.config13)
2841
-
2842
- def test_config14_ok(self):
2843
- with support.captured_stdout() as output:
2844
- self.apply_config(self.config14)
2845
- h = logging._handlers['hand1']
2846
- self.assertEqual(h.foo, 'bar')
2847
- self.assertEqual(h.terminator, '!\n')
2848
- logging.warning('Exclamation')
2849
- self.assertTrue(output.getvalue().endswith('Exclamation!\n'))
2850
-
2851
- @unittest.skipUnless(threading, 'listen() needs threading to work')
2852
- def setup_via_listener(self, text, verify=None):
2853
- text = text.encode("utf-8")
2854
- # Ask for a randomly assigned port (by using port 0)
2855
- t = logging.config.listen(0, verify)
2856
- t.start()
2857
- t.ready.wait()
2858
- # Now get the port allocated
2859
- port = t.port
2860
- t.ready.clear()
2861
- try:
2862
- sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
2863
- sock.settimeout(2.0)
2864
- sock.connect(('localhost', port))
2865
-
2866
- slen = struct.pack('>L', len(text))
2867
- s = slen + text
2868
- sentsofar = 0
2869
- left = len(s)
2870
- while left > 0:
2871
- sent = sock.send(s[sentsofar:])
2872
- sentsofar += sent
2873
- left -= sent
2874
- sock.close()
2875
- finally:
2876
- t.ready.wait(2.0)
2877
- logging.config.stopListening()
2878
- t.join(2.0)
2879
-
2880
- @unittest.skipUnless(threading, 'Threading required for this test.')
2881
- def test_listen_config_10_ok(self):
2882
- with support.captured_stdout() as output:
2883
- self.setup_via_listener(json.dumps(self.config10))
2884
- logger = logging.getLogger("compiler.parser")
2885
- logger.warning(self.next_message())
2886
- logger = logging.getLogger('compiler')
2887
- #Not output, because filtered
2888
- logger.warning(self.next_message())
2889
- logger = logging.getLogger('compiler.lexer')
2890
- #Not output, because filtered
2891
- logger.warning(self.next_message())
2892
- logger = logging.getLogger("compiler.parser.codegen")
2893
- #Output, as not filtered
2894
- logger.error(self.next_message())
2895
- self.assert_log_lines([
2896
- ('WARNING', '1'),
2897
- ('ERROR', '4'),
2898
- ], stream=output)
2899
-
2900
- @unittest.skipUnless(threading, 'Threading required for this test.')
2901
- def test_listen_config_1_ok(self):
2902
- with support.captured_stdout() as output:
2903
- self.setup_via_listener(textwrap.dedent(ConfigFileTest.config1))
2904
- logger = logging.getLogger("compiler.parser")
2905
- # Both will output a message
2906
- logger.info(self.next_message())
2907
- logger.error(self.next_message())
2908
- self.assert_log_lines([
2909
- ('INFO', '1'),
2910
- ('ERROR', '2'),
2911
- ], stream=output)
2912
- # Original logger output is empty.
2913
- self.assert_log_lines([])
2914
-
2915
- @unittest.skipUnless(threading, 'Threading required for this test.')
2916
- def test_listen_verify(self):
2917
-
2918
- def verify_fail(stuff):
2919
- return None
2920
-
2921
- def verify_reverse(stuff):
2922
- return stuff[::-1]
2923
-
2924
- logger = logging.getLogger("compiler.parser")
2925
- to_send = textwrap.dedent(ConfigFileTest.config1)
2926
- # First, specify a verification function that will fail.
2927
- # We expect to see no output, since our configuration
2928
- # never took effect.
2929
- with support.captured_stdout() as output:
2930
- self.setup_via_listener(to_send, verify_fail)
2931
- # Both will output a message
2932
- logger.info(self.next_message())
2933
- logger.error(self.next_message())
2934
- self.assert_log_lines([], stream=output)
2935
- # Original logger output has the stuff we logged.
2936
- self.assert_log_lines([
2937
- ('INFO', '1'),
2938
- ('ERROR', '2'),
2939
- ], pat=r"^[\w.]+ -> (\w+): (\d+)$")
2940
-
2941
- # Now, perform no verification. Our configuration
2942
- # should take effect.
2943
-
2944
- with support.captured_stdout() as output:
2945
- self.setup_via_listener(to_send) # no verify callable specified
2946
- logger = logging.getLogger("compiler.parser")
2947
- # Both will output a message
2948
- logger.info(self.next_message())
2949
- logger.error(self.next_message())
2950
- self.assert_log_lines([
2951
- ('INFO', '3'),
2952
- ('ERROR', '4'),
2953
- ], stream=output)
2954
- # Original logger output still has the stuff we logged before.
2955
- self.assert_log_lines([
2956
- ('INFO', '1'),
2957
- ('ERROR', '2'),
2958
- ], pat=r"^[\w.]+ -> (\w+): (\d+)$")
2959
-
2960
- # Now, perform verification which transforms the bytes.
2961
-
2962
- with support.captured_stdout() as output:
2963
- self.setup_via_listener(to_send[::-1], verify_reverse)
2964
- logger = logging.getLogger("compiler.parser")
2965
- # Both will output a message
2966
- logger.info(self.next_message())
2967
- logger.error(self.next_message())
2968
- self.assert_log_lines([
2969
- ('INFO', '5'),
2970
- ('ERROR', '6'),
2971
- ], stream=output)
2972
- # Original logger output still has the stuff we logged before.
2973
- self.assert_log_lines([
2974
- ('INFO', '1'),
2975
- ('ERROR', '2'),
2976
- ], pat=r"^[\w.]+ -> (\w+): (\d+)$")
2977
-
2978
- def test_out_of_order(self):
2979
- self.apply_config(self.out_of_order)
2980
- handler = logging.getLogger('mymodule').handlers[0]
2981
- self.assertIsInstance(handler.target, logging.Handler)
2982
- self.assertIsInstance(handler.formatter._style,
2983
- logging.StringTemplateStyle)
2984
-
2985
- def test_baseconfig(self):
2986
- d = {
2987
- 'atuple': (1, 2, 3),
2988
- 'alist': ['a', 'b', 'c'],
2989
- 'adict': {'d': 'e', 'f': 3 },
2990
- 'nest1': ('g', ('h', 'i'), 'j'),
2991
- 'nest2': ['k', ['l', 'm'], 'n'],
2992
- 'nest3': ['o', 'cfg://alist', 'p'],
2993
- }
2994
- bc = logging.config.BaseConfigurator(d)
2995
- self.assertEqual(bc.convert('cfg://atuple[1]'), 2)
2996
- self.assertEqual(bc.convert('cfg://alist[1]'), 'b')
2997
- self.assertEqual(bc.convert('cfg://nest1[1][0]'), 'h')
2998
- self.assertEqual(bc.convert('cfg://nest2[1][1]'), 'm')
2999
- self.assertEqual(bc.convert('cfg://adict.d'), 'e')
3000
- self.assertEqual(bc.convert('cfg://adict[f]'), 3)
3001
- v = bc.convert('cfg://nest3')
3002
- self.assertEqual(v.pop(1), ['a', 'b', 'c'])
3003
- self.assertRaises(KeyError, bc.convert, 'cfg://nosuch')
3004
- self.assertRaises(ValueError, bc.convert, 'cfg://!')
3005
- self.assertRaises(KeyError, bc.convert, 'cfg://adict[2]')
3006
-
3007
- class ManagerTest(BaseTest):
3008
- def test_manager_loggerclass(self):
3009
- logged = []
3010
-
3011
- class MyLogger(logging.Logger):
3012
- def _log(self, level, msg, args, exc_info=None, extra=None):
3013
- logged.append(msg)
3014
-
3015
- man = logging.Manager(None)
3016
- self.assertRaises(TypeError, man.setLoggerClass, int)
3017
- man.setLoggerClass(MyLogger)
3018
- logger = man.getLogger('test')
3019
- logger.warning('should appear in logged')
3020
- logging.warning('should not appear in logged')
3021
-
3022
- self.assertEqual(logged, ['should appear in logged'])
3023
-
3024
- def test_set_log_record_factory(self):
3025
- man = logging.Manager(None)
3026
- expected = object()
3027
- man.setLogRecordFactory(expected)
3028
- self.assertEqual(man.logRecordFactory, expected)
3029
-
3030
- class ChildLoggerTest(BaseTest):
3031
- def test_child_loggers(self):
3032
- r = logging.getLogger()
3033
- l1 = logging.getLogger('abc')
3034
- l2 = logging.getLogger('def.ghi')
3035
- c1 = r.getChild('xyz')
3036
- c2 = r.getChild('uvw.xyz')
3037
- self.assertIs(c1, logging.getLogger('xyz'))
3038
- self.assertIs(c2, logging.getLogger('uvw.xyz'))
3039
- c1 = l1.getChild('def')
3040
- c2 = c1.getChild('ghi')
3041
- c3 = l1.getChild('def.ghi')
3042
- self.assertIs(c1, logging.getLogger('abc.def'))
3043
- self.assertIs(c2, logging.getLogger('abc.def.ghi'))
3044
- self.assertIs(c2, c3)
3045
-
3046
-
3047
- class DerivedLogRecord(logging.LogRecord):
3048
- pass
3049
-
3050
- class LogRecordFactoryTest(BaseTest):
3051
-
3052
- def setUp(self):
3053
- class CheckingFilter(logging.Filter):
3054
- def __init__(self, cls):
3055
- self.cls = cls
3056
-
3057
- def filter(self, record):
3058
- t = type(record)
3059
- if t is not self.cls:
3060
- msg = 'Unexpected LogRecord type %s, expected %s' % (t,
3061
- self.cls)
3062
- raise TypeError(msg)
3063
- return True
3064
-
3065
- BaseTest.setUp(self)
3066
- self.filter = CheckingFilter(DerivedLogRecord)
3067
- self.root_logger.addFilter(self.filter)
3068
- self.orig_factory = logging.getLogRecordFactory()
3069
-
3070
- def tearDown(self):
3071
- self.root_logger.removeFilter(self.filter)
3072
- BaseTest.tearDown(self)
3073
- logging.setLogRecordFactory(self.orig_factory)
3074
-
3075
- def test_logrecord_class(self):
3076
- self.assertRaises(TypeError, self.root_logger.warning,
3077
- self.next_message())
3078
- logging.setLogRecordFactory(DerivedLogRecord)
3079
- self.root_logger.error(self.next_message())
3080
- self.assert_log_lines([
3081
- ('root', 'ERROR', '2'),
3082
- ])
3083
-
3084
-
3085
- class QueueHandlerTest(BaseTest):
3086
- # Do not bother with a logger name group.
3087
- expected_log_pat = r"^[\w.]+ -> (\w+): (\d+)$"
3088
-
3089
- def setUp(self):
3090
- BaseTest.setUp(self)
3091
- self.queue = queue.Queue(-1)
3092
- self.que_hdlr = logging.handlers.QueueHandler(self.queue)
3093
- self.que_logger = logging.getLogger('que')
3094
- self.que_logger.propagate = False
3095
- self.que_logger.setLevel(logging.WARNING)
3096
- self.que_logger.addHandler(self.que_hdlr)
3097
-
3098
- def tearDown(self):
3099
- self.que_hdlr.close()
3100
- BaseTest.tearDown(self)
3101
-
3102
- def test_queue_handler(self):
3103
- self.que_logger.debug(self.next_message())
3104
- self.assertRaises(queue.Empty, self.queue.get_nowait)
3105
- self.que_logger.info(self.next_message())
3106
- self.assertRaises(queue.Empty, self.queue.get_nowait)
3107
- msg = self.next_message()
3108
- self.que_logger.warning(msg)
3109
- data = self.queue.get_nowait()
3110
- self.assertTrue(isinstance(data, logging.LogRecord))
3111
- self.assertEqual(data.name, self.que_logger.name)
3112
- self.assertEqual((data.msg, data.args), (msg, None))
3113
-
3114
- @unittest.skipUnless(hasattr(logging.handlers, 'QueueListener'),
3115
- 'logging.handlers.QueueListener required for this test')
3116
- def test_queue_listener(self):
3117
- handler = support.TestHandler(support.Matcher())
3118
- listener = logging.handlers.QueueListener(self.queue, handler)
3119
- listener.start()
3120
- try:
3121
- self.que_logger.warning(self.next_message())
3122
- self.que_logger.error(self.next_message())
3123
- self.que_logger.critical(self.next_message())
3124
- finally:
3125
- listener.stop()
3126
- self.assertTrue(handler.matches(levelno=logging.WARNING, message='1'))
3127
- self.assertTrue(handler.matches(levelno=logging.ERROR, message='2'))
3128
- self.assertTrue(handler.matches(levelno=logging.CRITICAL, message='3'))
3129
- handler.close()
3130
-
3131
- # Now test with respect_handler_level set
3132
-
3133
- handler = support.TestHandler(support.Matcher())
3134
- handler.setLevel(logging.CRITICAL)
3135
- listener = logging.handlers.QueueListener(self.queue, handler,
3136
- respect_handler_level=True)
3137
- listener.start()
3138
- try:
3139
- self.que_logger.warning(self.next_message())
3140
- self.que_logger.error(self.next_message())
3141
- self.que_logger.critical(self.next_message())
3142
- finally:
3143
- listener.stop()
3144
- self.assertFalse(handler.matches(levelno=logging.WARNING, message='4'))
3145
- self.assertFalse(handler.matches(levelno=logging.ERROR, message='5'))
3146
- self.assertTrue(handler.matches(levelno=logging.CRITICAL, message='6'))
3147
-
3148
- if hasattr(logging.handlers, 'QueueListener'):
3149
- import multiprocessing
3150
- from unittest.mock import patch
3151
-
3152
- class QueueListenerTest(BaseTest):
3153
- """
3154
- Tests based on patch submitted for issue #27930. Ensure that
3155
- QueueListener handles all log messages.
3156
- """
3157
-
3158
- repeat = 20
3159
-
3160
- @staticmethod
3161
- def setup_and_log(log_queue, ident):
3162
- """
3163
- Creates a logger with a QueueHandler that logs to a queue read by a
3164
- QueueListener. Starts the listener, logs five messages, and stops
3165
- the listener.
3166
- """
3167
- logger = logging.getLogger('test_logger_with_id_%s' % ident)
3168
- logger.setLevel(logging.DEBUG)
3169
- handler = logging.handlers.QueueHandler(log_queue)
3170
- logger.addHandler(handler)
3171
- listener = logging.handlers.QueueListener(log_queue)
3172
- listener.start()
3173
-
3174
- logger.info('one')
3175
- logger.info('two')
3176
- logger.info('three')
3177
- logger.info('four')
3178
- logger.info('five')
3179
-
3180
- listener.stop()
3181
- logger.removeHandler(handler)
3182
- handler.close()
3183
-
3184
- @patch.object(logging.handlers.QueueListener, 'handle')
3185
- @support.reap_threads
3186
- def test_handle_called_with_queue_queue(self, mock_handle):
3187
- for i in range(self.repeat):
3188
- log_queue = queue.Queue()
3189
- self.setup_and_log(log_queue, '%s_%s' % (self.id(), i))
3190
- self.assertEqual(mock_handle.call_count, 5 * self.repeat,
3191
- 'correct number of handled log messages')
3192
-
3193
- @support.requires_multiprocessing_queue
3194
- @patch.object(logging.handlers.QueueListener, 'handle')
3195
- @support.reap_threads
3196
- def test_handle_called_with_mp_queue(self, mock_handle):
3197
- for i in range(self.repeat):
3198
- log_queue = multiprocessing.Queue()
3199
- self.setup_and_log(log_queue, '%s_%s' % (self.id(), i))
3200
- log_queue.close()
3201
- log_queue.join_thread()
3202
- self.assertEqual(mock_handle.call_count, 5 * self.repeat,
3203
- 'correct number of handled log messages')
3204
-
3205
- @staticmethod
3206
- def get_all_from_queue(log_queue):
3207
- try:
3208
- while True:
3209
- yield log_queue.get_nowait()
3210
- except queue.Empty:
3211
- return []
3212
-
3213
- @support.requires_multiprocessing_queue
3214
- @support.reap_threads
3215
- def test_no_messages_in_queue_after_stop(self):
3216
- """
3217
- Five messages are logged then the QueueListener is stopped. This
3218
- test then gets everything off the queue. Failure of this test
3219
- indicates that messages were not registered on the queue until
3220
- _after_ the QueueListener stopped.
3221
- """
3222
- for i in range(self.repeat):
3223
- queue = multiprocessing.Queue()
3224
- self.setup_and_log(queue, '%s_%s' %(self.id(), i))
3225
- # time.sleep(1)
3226
- items = list(self.get_all_from_queue(queue))
3227
- queue.close()
3228
- queue.join_thread()
3229
-
3230
- expected = [[], [logging.handlers.QueueListener._sentinel]]
3231
- self.assertIn(items, expected,
3232
- 'Found unexpected messages in queue: %s' % (
3233
- [m.msg if isinstance(m, logging.LogRecord)
3234
- else m for m in items]))
3235
-
3236
-
3237
- ZERO = datetime.timedelta(0)
3238
-
3239
- class UTC(datetime.tzinfo):
3240
- def utcoffset(self, dt):
3241
- return ZERO
3242
-
3243
- dst = utcoffset
3244
-
3245
- def tzname(self, dt):
3246
- return 'UTC'
3247
-
3248
- utc = UTC()
3249
-
3250
- class FormatterTest(unittest.TestCase):
3251
- def setUp(self):
3252
- self.common = {
3253
- 'name': 'formatter.test',
3254
- 'level': logging.DEBUG,
3255
- 'pathname': os.path.join('path', 'to', 'dummy.ext'),
3256
- 'lineno': 42,
3257
- 'exc_info': None,
3258
- 'func': None,
3259
- 'msg': 'Message with %d %s',
3260
- 'args': (2, 'placeholders'),
3261
- }
3262
- self.variants = {
3263
- }
3264
-
3265
- def get_record(self, name=None):
3266
- result = dict(self.common)
3267
- if name is not None:
3268
- result.update(self.variants[name])
3269
- return logging.makeLogRecord(result)
3270
-
3271
- def test_percent(self):
3272
- # Test %-formatting
3273
- r = self.get_record()
3274
- f = logging.Formatter('${%(message)s}')
3275
- self.assertEqual(f.format(r), '${Message with 2 placeholders}')
3276
- f = logging.Formatter('%(random)s')
3277
- self.assertRaises(KeyError, f.format, r)
3278
- self.assertFalse(f.usesTime())
3279
- f = logging.Formatter('%(asctime)s')
3280
- self.assertTrue(f.usesTime())
3281
- f = logging.Formatter('%(asctime)-15s')
3282
- self.assertTrue(f.usesTime())
3283
- f = logging.Formatter('asctime')
3284
- self.assertFalse(f.usesTime())
3285
-
3286
- def test_braces(self):
3287
- # Test {}-formatting
3288
- r = self.get_record()
3289
- f = logging.Formatter('$%{message}%$', style='{')
3290
- self.assertEqual(f.format(r), '$%Message with 2 placeholders%$')
3291
- f = logging.Formatter('{random}', style='{')
3292
- self.assertRaises(KeyError, f.format, r)
3293
- self.assertFalse(f.usesTime())
3294
- f = logging.Formatter('{asctime}', style='{')
3295
- self.assertTrue(f.usesTime())
3296
- f = logging.Formatter('{asctime!s:15}', style='{')
3297
- self.assertTrue(f.usesTime())
3298
- f = logging.Formatter('{asctime:15}', style='{')
3299
- self.assertTrue(f.usesTime())
3300
- f = logging.Formatter('asctime', style='{')
3301
- self.assertFalse(f.usesTime())
3302
-
3303
- def test_dollars(self):
3304
- # Test $-formatting
3305
- r = self.get_record()
3306
- f = logging.Formatter('$message', style='$')
3307
- self.assertEqual(f.format(r), 'Message with 2 placeholders')
3308
- f = logging.Formatter('$$%${message}%$$', style='$')
3309
- self.assertEqual(f.format(r), '$%Message with 2 placeholders%$')
3310
- f = logging.Formatter('${random}', style='$')
3311
- self.assertRaises(KeyError, f.format, r)
3312
- self.assertFalse(f.usesTime())
3313
- f = logging.Formatter('${asctime}', style='$')
3314
- self.assertTrue(f.usesTime())
3315
- f = logging.Formatter('${asctime', style='$')
3316
- self.assertFalse(f.usesTime())
3317
- f = logging.Formatter('$asctime', style='$')
3318
- self.assertTrue(f.usesTime())
3319
- f = logging.Formatter('asctime', style='$')
3320
- self.assertFalse(f.usesTime())
3321
-
3322
- def test_invalid_style(self):
3323
- self.assertRaises(ValueError, logging.Formatter, None, None, 'x')
3324
-
3325
- def test_time(self):
3326
- r = self.get_record()
3327
- dt = datetime.datetime(1993, 4, 21, 8, 3, 0, 0, utc)
3328
- # We use None to indicate we want the local timezone
3329
- # We're essentially converting a UTC time to local time
3330
- r.created = time.mktime(dt.astimezone(None).timetuple())
3331
- r.msecs = 123
3332
- f = logging.Formatter('%(asctime)s %(message)s')
3333
- f.converter = time.gmtime
3334
- self.assertEqual(f.formatTime(r), '1993-04-21 08:03:00,123')
3335
- self.assertEqual(f.formatTime(r, '%Y:%d'), '1993:21')
3336
- f.format(r)
3337
- self.assertEqual(r.asctime, '1993-04-21 08:03:00,123')
3338
-
3339
- class TestBufferingFormatter(logging.BufferingFormatter):
3340
- def formatHeader(self, records):
3341
- return '[(%d)' % len(records)
3342
-
3343
- def formatFooter(self, records):
3344
- return '(%d)]' % len(records)
3345
-
3346
- class BufferingFormatterTest(unittest.TestCase):
3347
- def setUp(self):
3348
- self.records = [
3349
- logging.makeLogRecord({'msg': 'one'}),
3350
- logging.makeLogRecord({'msg': 'two'}),
3351
- ]
3352
-
3353
- def test_default(self):
3354
- f = logging.BufferingFormatter()
3355
- self.assertEqual('', f.format([]))
3356
- self.assertEqual('onetwo', f.format(self.records))
3357
-
3358
- def test_custom(self):
3359
- f = TestBufferingFormatter()
3360
- self.assertEqual('[(2)onetwo(2)]', f.format(self.records))
3361
- lf = logging.Formatter('<%(message)s>')
3362
- f = TestBufferingFormatter(lf)
3363
- self.assertEqual('[(2)<one><two>(2)]', f.format(self.records))
3364
-
3365
- class ExceptionTest(BaseTest):
3366
- def test_formatting(self):
3367
- r = self.root_logger
3368
- h = RecordingHandler()
3369
- r.addHandler(h)
3370
- try:
3371
- raise RuntimeError('deliberate mistake')
3372
- except:
3373
- logging.exception('failed', stack_info=True)
3374
- r.removeHandler(h)
3375
- h.close()
3376
- r = h.records[0]
3377
- self.assertTrue(r.exc_text.startswith('Traceback (most recent '
3378
- 'call last):\n'))
3379
- self.assertTrue(r.exc_text.endswith('\nRuntimeError: '
3380
- 'deliberate mistake'))
3381
- self.assertTrue(r.stack_info.startswith('Stack (most recent '
3382
- 'call last):\n'))
3383
- self.assertTrue(r.stack_info.endswith('logging.exception(\'failed\', '
3384
- 'stack_info=True)'))
3385
-
3386
-
3387
- class LastResortTest(BaseTest):
3388
- def test_last_resort(self):
3389
- # Test the last resort handler
3390
- root = self.root_logger
3391
- root.removeHandler(self.root_hdlr)
3392
- old_lastresort = logging.lastResort
3393
- old_raise_exceptions = logging.raiseExceptions
3394
-
3395
- try:
3396
- with support.captured_stderr() as stderr:
3397
- root.debug('This should not appear')
3398
- self.assertEqual(stderr.getvalue(), '')
3399
- root.warning('Final chance!')
3400
- self.assertEqual(stderr.getvalue(), 'Final chance!\n')
3401
-
3402
- # No handlers and no last resort, so 'No handlers' message
3403
- logging.lastResort = None
3404
- with support.captured_stderr() as stderr:
3405
- root.warning('Final chance!')
3406
- msg = 'No handlers could be found for logger "root"\n'
3407
- self.assertEqual(stderr.getvalue(), msg)
3408
-
3409
- # 'No handlers' message only printed once
3410
- with support.captured_stderr() as stderr:
3411
- root.warning('Final chance!')
3412
- self.assertEqual(stderr.getvalue(), '')
3413
-
3414
- # If raiseExceptions is False, no message is printed
3415
- root.manager.emittedNoHandlerWarning = False
3416
- logging.raiseExceptions = False
3417
- with support.captured_stderr() as stderr:
3418
- root.warning('Final chance!')
3419
- self.assertEqual(stderr.getvalue(), '')
3420
- finally:
3421
- root.addHandler(self.root_hdlr)
3422
- logging.lastResort = old_lastresort
3423
- logging.raiseExceptions = old_raise_exceptions
3424
-
3425
-
3426
- class FakeHandler:
3427
-
3428
- def __init__(self, identifier, called):
3429
- for method in ('acquire', 'flush', 'close', 'release'):
3430
- setattr(self, method, self.record_call(identifier, method, called))
3431
-
3432
- def record_call(self, identifier, method_name, called):
3433
- def inner():
3434
- called.append('{} - {}'.format(identifier, method_name))
3435
- return inner
3436
-
3437
-
3438
- class RecordingHandler(logging.NullHandler):
3439
-
3440
- def __init__(self, *args, **kwargs):
3441
- super(RecordingHandler, self).__init__(*args, **kwargs)
3442
- self.records = []
3443
-
3444
- def handle(self, record):
3445
- """Keep track of all the emitted records."""
3446
- self.records.append(record)
3447
-
3448
-
3449
- class ShutdownTest(BaseTest):
3450
-
3451
- """Test suite for the shutdown method."""
3452
-
3453
- def setUp(self):
3454
- super(ShutdownTest, self).setUp()
3455
- self.called = []
3456
-
3457
- raise_exceptions = logging.raiseExceptions
3458
- self.addCleanup(setattr, logging, 'raiseExceptions', raise_exceptions)
3459
-
3460
- def raise_error(self, error):
3461
- def inner():
3462
- raise error()
3463
- return inner
3464
-
3465
- def test_no_failure(self):
3466
- # create some fake handlers
3467
- handler0 = FakeHandler(0, self.called)
3468
- handler1 = FakeHandler(1, self.called)
3469
- handler2 = FakeHandler(2, self.called)
3470
-
3471
- # create live weakref to those handlers
3472
- handlers = map(logging.weakref.ref, [handler0, handler1, handler2])
3473
-
3474
- logging.shutdown(handlerList=list(handlers))
3475
-
3476
- expected = ['2 - acquire', '2 - flush', '2 - close', '2 - release',
3477
- '1 - acquire', '1 - flush', '1 - close', '1 - release',
3478
- '0 - acquire', '0 - flush', '0 - close', '0 - release']
3479
- self.assertEqual(expected, self.called)
3480
-
3481
- def _test_with_failure_in_method(self, method, error):
3482
- handler = FakeHandler(0, self.called)
3483
- setattr(handler, method, self.raise_error(error))
3484
- handlers = [logging.weakref.ref(handler)]
3485
-
3486
- logging.shutdown(handlerList=list(handlers))
3487
-
3488
- self.assertEqual('0 - release', self.called[-1])
3489
-
3490
- def test_with_ioerror_in_acquire(self):
3491
- self._test_with_failure_in_method('acquire', OSError)
3492
-
3493
- def test_with_ioerror_in_flush(self):
3494
- self._test_with_failure_in_method('flush', OSError)
3495
-
3496
- def test_with_ioerror_in_close(self):
3497
- self._test_with_failure_in_method('close', OSError)
3498
-
3499
- def test_with_valueerror_in_acquire(self):
3500
- self._test_with_failure_in_method('acquire', ValueError)
3501
-
3502
- def test_with_valueerror_in_flush(self):
3503
- self._test_with_failure_in_method('flush', ValueError)
3504
-
3505
- def test_with_valueerror_in_close(self):
3506
- self._test_with_failure_in_method('close', ValueError)
3507
-
3508
- def test_with_other_error_in_acquire_without_raise(self):
3509
- logging.raiseExceptions = False
3510
- self._test_with_failure_in_method('acquire', IndexError)
3511
-
3512
- def test_with_other_error_in_flush_without_raise(self):
3513
- logging.raiseExceptions = False
3514
- self._test_with_failure_in_method('flush', IndexError)
3515
-
3516
- def test_with_other_error_in_close_without_raise(self):
3517
- logging.raiseExceptions = False
3518
- self._test_with_failure_in_method('close', IndexError)
3519
-
3520
- def test_with_other_error_in_acquire_with_raise(self):
3521
- logging.raiseExceptions = True
3522
- self.assertRaises(IndexError, self._test_with_failure_in_method,
3523
- 'acquire', IndexError)
3524
-
3525
- def test_with_other_error_in_flush_with_raise(self):
3526
- logging.raiseExceptions = True
3527
- self.assertRaises(IndexError, self._test_with_failure_in_method,
3528
- 'flush', IndexError)
3529
-
3530
- def test_with_other_error_in_close_with_raise(self):
3531
- logging.raiseExceptions = True
3532
- self.assertRaises(IndexError, self._test_with_failure_in_method,
3533
- 'close', IndexError)
3534
-
3535
-
3536
- class ModuleLevelMiscTest(BaseTest):
3537
-
3538
- """Test suite for some module level methods."""
3539
-
3540
- def test_disable(self):
3541
- old_disable = logging.root.manager.disable
3542
- # confirm our assumptions are correct
3543
- self.assertEqual(old_disable, 0)
3544
- self.addCleanup(logging.disable, old_disable)
3545
-
3546
- logging.disable(83)
3547
- self.assertEqual(logging.root.manager.disable, 83)
3548
-
3549
- def _test_log(self, method, level=None):
3550
- called = []
3551
- support.patch(self, logging, 'basicConfig',
3552
- lambda *a, **kw: called.append((a, kw)))
3553
-
3554
- recording = RecordingHandler()
3555
- logging.root.addHandler(recording)
3556
-
3557
- log_method = getattr(logging, method)
3558
- if level is not None:
3559
- log_method(level, "test me: %r", recording)
3560
- else:
3561
- log_method("test me: %r", recording)
3562
-
3563
- self.assertEqual(len(recording.records), 1)
3564
- record = recording.records[0]
3565
- self.assertEqual(record.getMessage(), "test me: %r" % recording)
3566
-
3567
- expected_level = level if level is not None else getattr(logging, method.upper())
3568
- self.assertEqual(record.levelno, expected_level)
3569
-
3570
- # basicConfig was not called!
3571
- self.assertEqual(called, [])
3572
-
3573
- def test_log(self):
3574
- self._test_log('log', logging.ERROR)
3575
-
3576
- def test_debug(self):
3577
- self._test_log('debug')
3578
-
3579
- def test_info(self):
3580
- self._test_log('info')
3581
-
3582
- def test_warning(self):
3583
- self._test_log('warning')
3584
-
3585
- def test_error(self):
3586
- self._test_log('error')
3587
-
3588
- def test_critical(self):
3589
- self._test_log('critical')
3590
-
3591
- def test_set_logger_class(self):
3592
- self.assertRaises(TypeError, logging.setLoggerClass, object)
3593
-
3594
- class MyLogger(logging.Logger):
3595
- pass
3596
-
3597
- logging.setLoggerClass(MyLogger)
3598
- self.assertEqual(logging.getLoggerClass(), MyLogger)
3599
-
3600
- logging.setLoggerClass(logging.Logger)
3601
- self.assertEqual(logging.getLoggerClass(), logging.Logger)
3602
-
3603
- @support.requires_type_collecting
3604
- def test_logging_at_shutdown(self):
3605
- # Issue #20037
3606
- code = """if 1:
3607
- import logging
3608
-
3609
- class A:
3610
- def __del__(self):
3611
- try:
3612
- raise ValueError("some error")
3613
- except Exception:
3614
- logging.exception("exception in __del__")
3615
-
3616
- a = A()"""
3617
- rc, out, err = assert_python_ok("-c", code)
3618
- err = err.decode()
3619
- self.assertIn("exception in __del__", err)
3620
- self.assertIn("ValueError: some error", err)
3621
-
3622
-
3623
- class LogRecordTest(BaseTest):
3624
- def test_str_rep(self):
3625
- r = logging.makeLogRecord({})
3626
- s = str(r)
3627
- self.assertTrue(s.startswith('<LogRecord: '))
3628
- self.assertTrue(s.endswith('>'))
3629
-
3630
- def test_dict_arg(self):
3631
- h = RecordingHandler()
3632
- r = logging.getLogger()
3633
- r.addHandler(h)
3634
- d = {'less' : 'more' }
3635
- logging.warning('less is %(less)s', d)
3636
- self.assertIs(h.records[0].args, d)
3637
- self.assertEqual(h.records[0].message, 'less is more')
3638
- r.removeHandler(h)
3639
- h.close()
3640
-
3641
- def test_multiprocessing(self):
3642
- r = logging.makeLogRecord({})
3643
- self.assertEqual(r.processName, 'MainProcess')
3644
- try:
3645
- import multiprocessing as mp
3646
- r = logging.makeLogRecord({})
3647
- self.assertEqual(r.processName, mp.current_process().name)
3648
- except ImportError:
3649
- pass
3650
-
3651
- def test_optional(self):
3652
- r = logging.makeLogRecord({})
3653
- NOT_NONE = self.assertIsNotNone
3654
- if threading:
3655
- NOT_NONE(r.thread)
3656
- NOT_NONE(r.threadName)
3657
- NOT_NONE(r.process)
3658
- NOT_NONE(r.processName)
3659
- log_threads = logging.logThreads
3660
- log_processes = logging.logProcesses
3661
- log_multiprocessing = logging.logMultiprocessing
3662
- try:
3663
- logging.logThreads = False
3664
- logging.logProcesses = False
3665
- logging.logMultiprocessing = False
3666
- r = logging.makeLogRecord({})
3667
- NONE = self.assertIsNone
3668
- NONE(r.thread)
3669
- NONE(r.threadName)
3670
- NONE(r.process)
3671
- NONE(r.processName)
3672
- finally:
3673
- logging.logThreads = log_threads
3674
- logging.logProcesses = log_processes
3675
- logging.logMultiprocessing = log_multiprocessing
3676
-
3677
- class BasicConfigTest(unittest.TestCase):
3678
-
3679
- """Test suite for logging.basicConfig."""
3680
-
3681
- def setUp(self):
3682
- super(BasicConfigTest, self).setUp()
3683
- self.handlers = logging.root.handlers
3684
- self.saved_handlers = logging._handlers.copy()
3685
- self.saved_handler_list = logging._handlerList[:]
3686
- self.original_logging_level = logging.root.level
3687
- self.addCleanup(self.cleanup)
3688
- logging.root.handlers = []
3689
-
3690
- def tearDown(self):
3691
- for h in logging.root.handlers[:]:
3692
- logging.root.removeHandler(h)
3693
- h.close()
3694
- super(BasicConfigTest, self).tearDown()
3695
-
3696
- def cleanup(self):
3697
- setattr(logging.root, 'handlers', self.handlers)
3698
- logging._handlers.clear()
3699
- logging._handlers.update(self.saved_handlers)
3700
- logging._handlerList[:] = self.saved_handler_list
3701
- logging.root.level = self.original_logging_level
3702
-
3703
- def test_no_kwargs(self):
3704
- logging.basicConfig()
3705
-
3706
- # handler defaults to a StreamHandler to sys.stderr
3707
- self.assertEqual(len(logging.root.handlers), 1)
3708
- handler = logging.root.handlers[0]
3709
- self.assertIsInstance(handler, logging.StreamHandler)
3710
- self.assertEqual(handler.stream, sys.stderr)
3711
-
3712
- formatter = handler.formatter
3713
- # format defaults to logging.BASIC_FORMAT
3714
- self.assertEqual(formatter._style._fmt, logging.BASIC_FORMAT)
3715
- # datefmt defaults to None
3716
- self.assertIsNone(formatter.datefmt)
3717
- # style defaults to %
3718
- self.assertIsInstance(formatter._style, logging.PercentStyle)
3719
-
3720
- # level is not explicitly set
3721
- self.assertEqual(logging.root.level, self.original_logging_level)
3722
-
3723
- def test_strformatstyle(self):
3724
- with support.captured_stdout() as output:
3725
- logging.basicConfig(stream=sys.stdout, style="{")
3726
- logging.error("Log an error")
3727
- sys.stdout.seek(0)
3728
- self.assertEqual(output.getvalue().strip(),
3729
- "ERROR:root:Log an error")
3730
-
3731
- def test_stringtemplatestyle(self):
3732
- with support.captured_stdout() as output:
3733
- logging.basicConfig(stream=sys.stdout, style="$")
3734
- logging.error("Log an error")
3735
- sys.stdout.seek(0)
3736
- self.assertEqual(output.getvalue().strip(),
3737
- "ERROR:root:Log an error")
3738
-
3739
- def test_filename(self):
3740
-
3741
- def cleanup(h1, h2, fn):
3742
- h1.close()
3743
- h2.close()
3744
- os.remove(fn)
3745
-
3746
- logging.basicConfig(filename='test.log')
3747
-
3748
- self.assertEqual(len(logging.root.handlers), 1)
3749
- handler = logging.root.handlers[0]
3750
- self.assertIsInstance(handler, logging.FileHandler)
3751
-
3752
- expected = logging.FileHandler('test.log', 'a')
3753
- self.assertEqual(handler.stream.mode, expected.stream.mode)
3754
- self.assertEqual(handler.stream.name, expected.stream.name)
3755
- self.addCleanup(cleanup, handler, expected, 'test.log')
3756
-
3757
- def test_filemode(self):
3758
-
3759
- def cleanup(h1, h2, fn):
3760
- h1.close()
3761
- h2.close()
3762
- os.remove(fn)
3763
-
3764
- logging.basicConfig(filename='test.log', filemode='wb')
3765
-
3766
- handler = logging.root.handlers[0]
3767
- expected = logging.FileHandler('test.log', 'wb')
3768
- self.assertEqual(handler.stream.mode, expected.stream.mode)
3769
- self.addCleanup(cleanup, handler, expected, 'test.log')
3770
-
3771
- def test_stream(self):
3772
- stream = io.StringIO()
3773
- self.addCleanup(stream.close)
3774
- logging.basicConfig(stream=stream)
3775
-
3776
- self.assertEqual(len(logging.root.handlers), 1)
3777
- handler = logging.root.handlers[0]
3778
- self.assertIsInstance(handler, logging.StreamHandler)
3779
- self.assertEqual(handler.stream, stream)
3780
-
3781
- def test_format(self):
3782
- logging.basicConfig(format='foo')
3783
-
3784
- formatter = logging.root.handlers[0].formatter
3785
- self.assertEqual(formatter._style._fmt, 'foo')
3786
-
3787
- def test_datefmt(self):
3788
- logging.basicConfig(datefmt='bar')
3789
-
3790
- formatter = logging.root.handlers[0].formatter
3791
- self.assertEqual(formatter.datefmt, 'bar')
3792
-
3793
- def test_style(self):
3794
- logging.basicConfig(style='$')
3795
-
3796
- formatter = logging.root.handlers[0].formatter
3797
- self.assertIsInstance(formatter._style, logging.StringTemplateStyle)
3798
-
3799
- def test_level(self):
3800
- old_level = logging.root.level
3801
- self.addCleanup(logging.root.setLevel, old_level)
3802
-
3803
- logging.basicConfig(level=57)
3804
- self.assertEqual(logging.root.level, 57)
3805
- # Test that second call has no effect
3806
- logging.basicConfig(level=58)
3807
- self.assertEqual(logging.root.level, 57)
3808
-
3809
- def test_incompatible(self):
3810
- assertRaises = self.assertRaises
3811
- handlers = [logging.StreamHandler()]
3812
- stream = sys.stderr
3813
- assertRaises(ValueError, logging.basicConfig, filename='test.log',
3814
- stream=stream)
3815
- assertRaises(ValueError, logging.basicConfig, filename='test.log',
3816
- handlers=handlers)
3817
- assertRaises(ValueError, logging.basicConfig, stream=stream,
3818
- handlers=handlers)
3819
- # Issue 23207: test for invalid kwargs
3820
- assertRaises(ValueError, logging.basicConfig, loglevel=logging.INFO)
3821
- # Should pop both filename and filemode even if filename is None
3822
- logging.basicConfig(filename=None, filemode='a')
3823
-
3824
- def test_handlers(self):
3825
- handlers = [
3826
- logging.StreamHandler(),
3827
- logging.StreamHandler(sys.stdout),
3828
- logging.StreamHandler(),
3829
- ]
3830
- f = logging.Formatter()
3831
- handlers[2].setFormatter(f)
3832
- logging.basicConfig(handlers=handlers)
3833
- self.assertIs(handlers[0], logging.root.handlers[0])
3834
- self.assertIs(handlers[1], logging.root.handlers[1])
3835
- self.assertIs(handlers[2], logging.root.handlers[2])
3836
- self.assertIsNotNone(handlers[0].formatter)
3837
- self.assertIsNotNone(handlers[1].formatter)
3838
- self.assertIs(handlers[2].formatter, f)
3839
- self.assertIs(handlers[0].formatter, handlers[1].formatter)
3840
-
3841
- def _test_log(self, method, level=None):
3842
- # logging.root has no handlers so basicConfig should be called
3843
- called = []
3844
-
3845
- old_basic_config = logging.basicConfig
3846
- def my_basic_config(*a, **kw):
3847
- old_basic_config()
3848
- old_level = logging.root.level
3849
- logging.root.setLevel(100) # avoid having messages in stderr
3850
- self.addCleanup(logging.root.setLevel, old_level)
3851
- called.append((a, kw))
3852
-
3853
- support.patch(self, logging, 'basicConfig', my_basic_config)
3854
-
3855
- log_method = getattr(logging, method)
3856
- if level is not None:
3857
- log_method(level, "test me")
3858
- else:
3859
- log_method("test me")
3860
-
3861
- # basicConfig was called with no arguments
3862
- self.assertEqual(called, [((), {})])
3863
-
3864
- def test_log(self):
3865
- self._test_log('log', logging.WARNING)
3866
-
3867
- def test_debug(self):
3868
- self._test_log('debug')
3869
-
3870
- def test_info(self):
3871
- self._test_log('info')
3872
-
3873
- def test_warning(self):
3874
- self._test_log('warning')
3875
-
3876
- def test_error(self):
3877
- self._test_log('error')
3878
-
3879
- def test_critical(self):
3880
- self._test_log('critical')
3881
-
3882
-
3883
- class LoggerAdapterTest(unittest.TestCase):
3884
- def setUp(self):
3885
- super(LoggerAdapterTest, self).setUp()
3886
- old_handler_list = logging._handlerList[:]
3887
-
3888
- self.recording = RecordingHandler()
3889
- self.logger = logging.root
3890
- self.logger.addHandler(self.recording)
3891
- self.addCleanup(self.logger.removeHandler, self.recording)
3892
- self.addCleanup(self.recording.close)
3893
-
3894
- def cleanup():
3895
- logging._handlerList[:] = old_handler_list
3896
-
3897
- self.addCleanup(cleanup)
3898
- self.addCleanup(logging.shutdown)
3899
- self.adapter = logging.LoggerAdapter(logger=self.logger, extra=None)
3900
-
3901
- def test_exception(self):
3902
- msg = 'testing exception: %r'
3903
- exc = None
3904
- try:
3905
- 1 / 0
3906
- except ZeroDivisionError as e:
3907
- exc = e
3908
- self.adapter.exception(msg, self.recording)
3909
-
3910
- self.assertEqual(len(self.recording.records), 1)
3911
- record = self.recording.records[0]
3912
- self.assertEqual(record.levelno, logging.ERROR)
3913
- self.assertEqual(record.msg, msg)
3914
- self.assertEqual(record.args, (self.recording,))
3915
- self.assertEqual(record.exc_info,
3916
- (exc.__class__, exc, exc.__traceback__))
3917
-
3918
- def test_exception_excinfo(self):
3919
- try:
3920
- 1 / 0
3921
- except ZeroDivisionError as e:
3922
- exc = e
3923
-
3924
- self.adapter.exception('exc_info test', exc_info=exc)
3925
-
3926
- self.assertEqual(len(self.recording.records), 1)
3927
- record = self.recording.records[0]
3928
- self.assertEqual(record.exc_info,
3929
- (exc.__class__, exc, exc.__traceback__))
3930
-
3931
- def test_critical(self):
3932
- msg = 'critical test! %r'
3933
- self.adapter.critical(msg, self.recording)
3934
-
3935
- self.assertEqual(len(self.recording.records), 1)
3936
- record = self.recording.records[0]
3937
- self.assertEqual(record.levelno, logging.CRITICAL)
3938
- self.assertEqual(record.msg, msg)
3939
- self.assertEqual(record.args, (self.recording,))
3940
-
3941
- def test_is_enabled_for(self):
3942
- old_disable = self.adapter.logger.manager.disable
3943
- self.adapter.logger.manager.disable = 33
3944
- self.addCleanup(setattr, self.adapter.logger.manager, 'disable',
3945
- old_disable)
3946
- self.assertFalse(self.adapter.isEnabledFor(32))
3947
-
3948
- def test_has_handlers(self):
3949
- self.assertTrue(self.adapter.hasHandlers())
3950
-
3951
- for handler in self.logger.handlers:
3952
- self.logger.removeHandler(handler)
3953
-
3954
- self.assertFalse(self.logger.hasHandlers())
3955
- self.assertFalse(self.adapter.hasHandlers())
3956
-
3957
- def test_nested(self):
3958
- class Adapter(logging.LoggerAdapter):
3959
- prefix = 'Adapter'
3960
-
3961
- def process(self, msg, kwargs):
3962
- return f"{self.prefix} {msg}", kwargs
3963
-
3964
- msg = 'Adapters can be nested, yo.'
3965
- adapter = Adapter(logger=self.logger, extra=None)
3966
- adapter_adapter = Adapter(logger=adapter, extra=None)
3967
- adapter_adapter.prefix = 'AdapterAdapter'
3968
- self.assertEqual(repr(adapter), repr(adapter_adapter))
3969
- adapter_adapter.log(logging.CRITICAL, msg, self.recording)
3970
- self.assertEqual(len(self.recording.records), 1)
3971
- record = self.recording.records[0]
3972
- self.assertEqual(record.levelno, logging.CRITICAL)
3973
- self.assertEqual(record.msg, f"Adapter AdapterAdapter {msg}")
3974
- self.assertEqual(record.args, (self.recording,))
3975
- orig_manager = adapter_adapter.manager
3976
- self.assertIs(adapter.manager, orig_manager)
3977
- self.assertIs(self.logger.manager, orig_manager)
3978
- temp_manager = object()
3979
- try:
3980
- adapter_adapter.manager = temp_manager
3981
- self.assertIs(adapter_adapter.manager, temp_manager)
3982
- self.assertIs(adapter.manager, temp_manager)
3983
- self.assertIs(self.logger.manager, temp_manager)
3984
- finally:
3985
- adapter_adapter.manager = orig_manager
3986
- self.assertIs(adapter_adapter.manager, orig_manager)
3987
- self.assertIs(adapter.manager, orig_manager)
3988
- self.assertIs(self.logger.manager, orig_manager)
3989
-
3990
-
3991
- class LoggerTest(BaseTest):
3992
-
3993
- def setUp(self):
3994
- super(LoggerTest, self).setUp()
3995
- self.recording = RecordingHandler()
3996
- self.logger = logging.Logger(name='blah')
3997
- self.logger.addHandler(self.recording)
3998
- self.addCleanup(self.logger.removeHandler, self.recording)
3999
- self.addCleanup(self.recording.close)
4000
- self.addCleanup(logging.shutdown)
4001
-
4002
- def test_set_invalid_level(self):
4003
- self.assertRaises(TypeError, self.logger.setLevel, object())
4004
-
4005
- def test_exception(self):
4006
- msg = 'testing exception: %r'
4007
- exc = None
4008
- try:
4009
- 1 / 0
4010
- except ZeroDivisionError as e:
4011
- exc = e
4012
- self.logger.exception(msg, self.recording)
4013
-
4014
- self.assertEqual(len(self.recording.records), 1)
4015
- record = self.recording.records[0]
4016
- self.assertEqual(record.levelno, logging.ERROR)
4017
- self.assertEqual(record.msg, msg)
4018
- self.assertEqual(record.args, (self.recording,))
4019
- self.assertEqual(record.exc_info,
4020
- (exc.__class__, exc, exc.__traceback__))
4021
-
4022
- def test_log_invalid_level_with_raise(self):
4023
- with support.swap_attr(logging, 'raiseExceptions', True):
4024
- self.assertRaises(TypeError, self.logger.log, '10', 'test message')
4025
-
4026
- def test_log_invalid_level_no_raise(self):
4027
- with support.swap_attr(logging, 'raiseExceptions', False):
4028
- self.logger.log('10', 'test message') # no exception happens
4029
-
4030
- def test_find_caller_with_stack_info(self):
4031
- called = []
4032
- support.patch(self, logging.traceback, 'print_stack',
4033
- lambda f, file: called.append(file.getvalue()))
4034
-
4035
- self.logger.findCaller(stack_info=True)
4036
-
4037
- self.assertEqual(len(called), 1)
4038
- self.assertEqual('Stack (most recent call last):\n', called[0])
4039
-
4040
- def test_make_record_with_extra_overwrite(self):
4041
- name = 'my record'
4042
- level = 13
4043
- fn = lno = msg = args = exc_info = func = sinfo = None
4044
- rv = logging._logRecordFactory(name, level, fn, lno, msg, args,
4045
- exc_info, func, sinfo)
4046
-
4047
- for key in ('message', 'asctime') + tuple(rv.__dict__.keys()):
4048
- extra = {key: 'some value'}
4049
- self.assertRaises(KeyError, self.logger.makeRecord, name, level,
4050
- fn, lno, msg, args, exc_info,
4051
- extra=extra, sinfo=sinfo)
4052
-
4053
- def test_make_record_with_extra_no_overwrite(self):
4054
- name = 'my record'
4055
- level = 13
4056
- fn = lno = msg = args = exc_info = func = sinfo = None
4057
- extra = {'valid_key': 'some value'}
4058
- result = self.logger.makeRecord(name, level, fn, lno, msg, args,
4059
- exc_info, extra=extra, sinfo=sinfo)
4060
- self.assertIn('valid_key', result.__dict__)
4061
-
4062
- def test_has_handlers(self):
4063
- self.assertTrue(self.logger.hasHandlers())
4064
-
4065
- for handler in self.logger.handlers:
4066
- self.logger.removeHandler(handler)
4067
- self.assertFalse(self.logger.hasHandlers())
4068
-
4069
- def test_has_handlers_no_propagate(self):
4070
- child_logger = logging.getLogger('blah.child')
4071
- child_logger.propagate = False
4072
- self.assertFalse(child_logger.hasHandlers())
4073
-
4074
- def test_is_enabled_for(self):
4075
- old_disable = self.logger.manager.disable
4076
- self.logger.manager.disable = 23
4077
- self.addCleanup(setattr, self.logger.manager, 'disable', old_disable)
4078
- self.assertFalse(self.logger.isEnabledFor(22))
4079
-
4080
- def test_root_logger_aliases(self):
4081
- root = logging.getLogger()
4082
- self.assertIs(root, logging.root)
4083
- self.assertIs(root, logging.getLogger(None))
4084
- self.assertIs(root, logging.getLogger(''))
4085
- self.assertIs(root, logging.getLogger('foo').root)
4086
- self.assertIs(root, logging.getLogger('foo.bar').root)
4087
- self.assertIs(root, logging.getLogger('foo').parent)
4088
-
4089
- self.assertIsNot(root, logging.getLogger('\0'))
4090
- self.assertIsNot(root, logging.getLogger('foo.bar').parent)
4091
-
4092
- def test_invalid_names(self):
4093
- self.assertRaises(TypeError, logging.getLogger, any)
4094
- self.assertRaises(TypeError, logging.getLogger, b'foo')
4095
-
4096
-
4097
- class BaseFileTest(BaseTest):
4098
- "Base class for handler tests that write log files"
4099
-
4100
- def setUp(self):
4101
- BaseTest.setUp(self)
4102
- fd, self.fn = tempfile.mkstemp(".log", "test_logging-2-")
4103
- os.close(fd)
4104
- self.rmfiles = []
4105
-
4106
- def tearDown(self):
4107
- for fn in self.rmfiles:
4108
- os.unlink(fn)
4109
- if os.path.exists(self.fn):
4110
- os.unlink(self.fn)
4111
- BaseTest.tearDown(self)
4112
-
4113
- def assertLogFile(self, filename):
4114
- "Assert a log file is there and register it for deletion"
4115
- self.assertTrue(os.path.exists(filename),
4116
- msg="Log file %r does not exist" % filename)
4117
- self.rmfiles.append(filename)
4118
-
4119
-
4120
- class FileHandlerTest(BaseFileTest):
4121
- def test_delay(self):
4122
- os.unlink(self.fn)
4123
- fh = logging.FileHandler(self.fn, delay=True)
4124
- self.assertIsNone(fh.stream)
4125
- self.assertFalse(os.path.exists(self.fn))
4126
- fh.handle(logging.makeLogRecord({}))
4127
- self.assertIsNotNone(fh.stream)
4128
- self.assertTrue(os.path.exists(self.fn))
4129
- fh.close()
4130
-
4131
- class RotatingFileHandlerTest(BaseFileTest):
4132
- def next_rec(self):
4133
- return logging.LogRecord('n', logging.DEBUG, 'p', 1,
4134
- self.next_message(), None, None, None)
4135
-
4136
- def test_should_not_rollover(self):
4137
- # If maxbytes is zero rollover never occurs
4138
- rh = logging.handlers.RotatingFileHandler(self.fn, maxBytes=0)
4139
- self.assertFalse(rh.shouldRollover(None))
4140
- rh.close()
4141
-
4142
- def test_should_rollover(self):
4143
- rh = logging.handlers.RotatingFileHandler(self.fn, maxBytes=1)
4144
- self.assertTrue(rh.shouldRollover(self.next_rec()))
4145
- rh.close()
4146
-
4147
- def test_file_created(self):
4148
- # checks that the file is created and assumes it was created
4149
- # by us
4150
- rh = logging.handlers.RotatingFileHandler(self.fn)
4151
- rh.emit(self.next_rec())
4152
- self.assertLogFile(self.fn)
4153
- rh.close()
4154
-
4155
- def test_rollover_filenames(self):
4156
- def namer(name):
4157
- return name + ".test"
4158
- rh = logging.handlers.RotatingFileHandler(
4159
- self.fn, backupCount=2, maxBytes=1)
4160
- rh.namer = namer
4161
- rh.emit(self.next_rec())
4162
- self.assertLogFile(self.fn)
4163
- rh.emit(self.next_rec())
4164
- self.assertLogFile(namer(self.fn + ".1"))
4165
- rh.emit(self.next_rec())
4166
- self.assertLogFile(namer(self.fn + ".2"))
4167
- self.assertFalse(os.path.exists(namer(self.fn + ".3")))
4168
- rh.close()
4169
-
4170
- @support.requires_zlib
4171
- def test_rotator(self):
4172
- def namer(name):
4173
- return name + ".gz"
4174
-
4175
- def rotator(source, dest):
4176
- with open(source, "rb") as sf:
4177
- data = sf.read()
4178
- compressed = zlib.compress(data, 9)
4179
- with open(dest, "wb") as df:
4180
- df.write(compressed)
4181
- os.remove(source)
4182
-
4183
- rh = logging.handlers.RotatingFileHandler(
4184
- self.fn, backupCount=2, maxBytes=1)
4185
- rh.rotator = rotator
4186
- rh.namer = namer
4187
- m1 = self.next_rec()
4188
- rh.emit(m1)
4189
- self.assertLogFile(self.fn)
4190
- m2 = self.next_rec()
4191
- rh.emit(m2)
4192
- fn = namer(self.fn + ".1")
4193
- self.assertLogFile(fn)
4194
- newline = os.linesep
4195
- with open(fn, "rb") as f:
4196
- compressed = f.read()
4197
- data = zlib.decompress(compressed)
4198
- self.assertEqual(data.decode("ascii"), m1.msg + newline)
4199
- rh.emit(self.next_rec())
4200
- fn = namer(self.fn + ".2")
4201
- self.assertLogFile(fn)
4202
- with open(fn, "rb") as f:
4203
- compressed = f.read()
4204
- data = zlib.decompress(compressed)
4205
- self.assertEqual(data.decode("ascii"), m1.msg + newline)
4206
- rh.emit(self.next_rec())
4207
- fn = namer(self.fn + ".2")
4208
- with open(fn, "rb") as f:
4209
- compressed = f.read()
4210
- data = zlib.decompress(compressed)
4211
- self.assertEqual(data.decode("ascii"), m2.msg + newline)
4212
- self.assertFalse(os.path.exists(namer(self.fn + ".3")))
4213
- rh.close()
4214
-
4215
- class TimedRotatingFileHandlerTest(BaseFileTest):
4216
- # other test methods added below
4217
- def test_rollover(self):
4218
- fh = logging.handlers.TimedRotatingFileHandler(self.fn, 'S',
4219
- backupCount=1)
4220
- fmt = logging.Formatter('%(asctime)s %(message)s')
4221
- fh.setFormatter(fmt)
4222
- r1 = logging.makeLogRecord({'msg': 'testing - initial'})
4223
- fh.emit(r1)
4224
- self.assertLogFile(self.fn)
4225
- time.sleep(1.1) # a little over a second ...
4226
- r2 = logging.makeLogRecord({'msg': 'testing - after delay'})
4227
- fh.emit(r2)
4228
- fh.close()
4229
- # At this point, we should have a recent rotated file which we
4230
- # can test for the existence of. However, in practice, on some
4231
- # machines which run really slowly, we don't know how far back
4232
- # in time to go to look for the log file. So, we go back a fair
4233
- # bit, and stop as soon as we see a rotated file. In theory this
4234
- # could of course still fail, but the chances are lower.
4235
- found = False
4236
- now = datetime.datetime.now()
4237
- GO_BACK = 5 * 60 # seconds
4238
- for secs in range(GO_BACK):
4239
- prev = now - datetime.timedelta(seconds=secs)
4240
- fn = self.fn + prev.strftime(".%Y-%m-%d_%H-%M-%S")
4241
- found = os.path.exists(fn)
4242
- if found:
4243
- self.rmfiles.append(fn)
4244
- break
4245
- msg = 'No rotated files found, went back %d seconds' % GO_BACK
4246
- if not found:
4247
- #print additional diagnostics
4248
- dn, fn = os.path.split(self.fn)
4249
- files = [f for f in os.listdir(dn) if f.startswith(fn)]
4250
- print('Test time: %s' % now.strftime("%Y-%m-%d %H-%M-%S"), file=sys.stderr)
4251
- print('The only matching files are: %s' % files, file=sys.stderr)
4252
- for f in files:
4253
- print('Contents of %s:' % f)
4254
- path = os.path.join(dn, f)
4255
- with open(path, 'r') as tf:
4256
- print(tf.read())
4257
- self.assertTrue(found, msg=msg)
4258
-
4259
- def test_invalid(self):
4260
- assertRaises = self.assertRaises
4261
- assertRaises(ValueError, logging.handlers.TimedRotatingFileHandler,
4262
- self.fn, 'X', delay=True)
4263
- assertRaises(ValueError, logging.handlers.TimedRotatingFileHandler,
4264
- self.fn, 'W', delay=True)
4265
- assertRaises(ValueError, logging.handlers.TimedRotatingFileHandler,
4266
- self.fn, 'W7', delay=True)
4267
-
4268
- def test_compute_rollover_daily_attime(self):
4269
- currentTime = 0
4270
- atTime = datetime.time(12, 0, 0)
4271
- rh = logging.handlers.TimedRotatingFileHandler(
4272
- self.fn, when='MIDNIGHT', interval=1, backupCount=0, utc=True,
4273
- atTime=atTime)
4274
- try:
4275
- actual = rh.computeRollover(currentTime)
4276
- self.assertEqual(actual, currentTime + 12 * 60 * 60)
4277
-
4278
- actual = rh.computeRollover(currentTime + 13 * 60 * 60)
4279
- self.assertEqual(actual, currentTime + 36 * 60 * 60)
4280
- finally:
4281
- rh.close()
4282
-
4283
- #@unittest.skipIf(True, 'Temporarily skipped while failures investigated.')
4284
- def test_compute_rollover_weekly_attime(self):
4285
- currentTime = int(time.time())
4286
- today = currentTime - currentTime % 86400
4287
-
4288
- atTime = datetime.time(12, 0, 0)
4289
-
4290
- wday = time.gmtime(today).tm_wday
4291
- for day in range(7):
4292
- rh = logging.handlers.TimedRotatingFileHandler(
4293
- self.fn, when='W%d' % day, interval=1, backupCount=0, utc=True,
4294
- atTime=atTime)
4295
- try:
4296
- if wday > day:
4297
- # The rollover day has already passed this week, so we
4298
- # go over into next week
4299
- expected = (7 - wday + day)
4300
- else:
4301
- expected = (day - wday)
4302
- # At this point expected is in days from now, convert to seconds
4303
- expected *= 24 * 60 * 60
4304
- # Add in the rollover time
4305
- expected += 12 * 60 * 60
4306
- # Add in adjustment for today
4307
- expected += today
4308
- actual = rh.computeRollover(today)
4309
- if actual != expected:
4310
- print('failed in timezone: %d' % time.timezone)
4311
- print('local vars: %s' % locals())
4312
- self.assertEqual(actual, expected)
4313
- if day == wday:
4314
- # goes into following week
4315
- expected += 7 * 24 * 60 * 60
4316
- actual = rh.computeRollover(today + 13 * 60 * 60)
4317
- if actual != expected:
4318
- print('failed in timezone: %d' % time.timezone)
4319
- print('local vars: %s' % locals())
4320
- self.assertEqual(actual, expected)
4321
- finally:
4322
- rh.close()
4323
-
4324
-
4325
- def secs(**kw):
4326
- return datetime.timedelta(**kw) // datetime.timedelta(seconds=1)
4327
-
4328
- for when, exp in (('S', 1),
4329
- ('M', 60),
4330
- ('H', 60 * 60),
4331
- ('D', 60 * 60 * 24),
4332
- ('MIDNIGHT', 60 * 60 * 24),
4333
- # current time (epoch start) is a Thursday, W0 means Monday
4334
- ('W0', secs(days=4, hours=24)),
4335
- ):
4336
- def test_compute_rollover(self, when=when, exp=exp):
4337
- rh = logging.handlers.TimedRotatingFileHandler(
4338
- self.fn, when=when, interval=1, backupCount=0, utc=True)
4339
- currentTime = 0.0
4340
- actual = rh.computeRollover(currentTime)
4341
- if exp != actual:
4342
- # Failures occur on some systems for MIDNIGHT and W0.
4343
- # Print detailed calculation for MIDNIGHT so we can try to see
4344
- # what's going on
4345
- if when == 'MIDNIGHT':
4346
- try:
4347
- if rh.utc:
4348
- t = time.gmtime(currentTime)
4349
- else:
4350
- t = time.localtime(currentTime)
4351
- currentHour = t[3]
4352
- currentMinute = t[4]
4353
- currentSecond = t[5]
4354
- # r is the number of seconds left between now and midnight
4355
- r = logging.handlers._MIDNIGHT - ((currentHour * 60 +
4356
- currentMinute) * 60 +
4357
- currentSecond)
4358
- result = currentTime + r
4359
- print('t: %s (%s)' % (t, rh.utc), file=sys.stderr)
4360
- print('currentHour: %s' % currentHour, file=sys.stderr)
4361
- print('currentMinute: %s' % currentMinute, file=sys.stderr)
4362
- print('currentSecond: %s' % currentSecond, file=sys.stderr)
4363
- print('r: %s' % r, file=sys.stderr)
4364
- print('result: %s' % result, file=sys.stderr)
4365
- except Exception:
4366
- print('exception in diagnostic code: %s' % sys.exc_info()[1], file=sys.stderr)
4367
- self.assertEqual(exp, actual)
4368
- rh.close()
4369
- setattr(TimedRotatingFileHandlerTest, "test_compute_rollover_%s" % when, test_compute_rollover)
4370
-
4371
-
4372
- @unittest.skipUnless(win32evtlog, 'win32evtlog/win32evtlogutil/pywintypes required for this test.')
4373
- class NTEventLogHandlerTest(BaseTest):
4374
- def test_basic(self):
4375
- logtype = 'Application'
4376
- elh = win32evtlog.OpenEventLog(None, logtype)
4377
- num_recs = win32evtlog.GetNumberOfEventLogRecords(elh)
4378
-
4379
- try:
4380
- h = logging.handlers.NTEventLogHandler('test_logging')
4381
- except pywintypes.error as e:
4382
- if e.winerror == 5: # access denied
4383
- raise unittest.SkipTest('Insufficient privileges to run test')
4384
- raise
4385
-
4386
- r = logging.makeLogRecord({'msg': 'Test Log Message'})
4387
- h.handle(r)
4388
- h.close()
4389
- # Now see if the event is recorded
4390
- self.assertLess(num_recs, win32evtlog.GetNumberOfEventLogRecords(elh))
4391
- flags = win32evtlog.EVENTLOG_BACKWARDS_READ | \
4392
- win32evtlog.EVENTLOG_SEQUENTIAL_READ
4393
- found = False
4394
- GO_BACK = 100
4395
- events = win32evtlog.ReadEventLog(elh, flags, GO_BACK)
4396
- for e in events:
4397
- if e.SourceName != 'test_logging':
4398
- continue
4399
- msg = win32evtlogutil.SafeFormatMessage(e, logtype)
4400
- if msg != 'Test Log Message\r\n':
4401
- continue
4402
- found = True
4403
- break
4404
- msg = 'Record not found in event log, went back %d records' % GO_BACK
4405
- self.assertTrue(found, msg=msg)
4406
-
4407
-
4408
- class MiscTestCase(unittest.TestCase):
4409
- def test__all__(self):
4410
- blacklist = {'logThreads', 'logMultiprocessing',
4411
- 'logProcesses', 'currentframe',
4412
- 'PercentStyle', 'StrFormatStyle', 'StringTemplateStyle',
4413
- 'Filterer', 'PlaceHolder', 'Manager', 'RootLogger',
4414
- 'root', 'threading'}
4415
- support.check__all__(self, logging, blacklist=blacklist)
4416
-
4417
-
4418
- # Set the locale to the platform-dependent default. I have no idea
4419
- # why the test does this, but in any case we save the current locale
4420
- # first and restore it at the end.
4421
- @support.run_with_locale('LC_ALL', '')
4422
- def test_main():
4423
- tests = [
4424
- BuiltinLevelsTest, BasicFilterTest, CustomLevelsAndFiltersTest,
4425
- HandlerTest, MemoryHandlerTest, ConfigFileTest, SocketHandlerTest,
4426
- DatagramHandlerTest, MemoryTest, EncodingTest, WarningsTest,
4427
- ConfigDictTest, ManagerTest, FormatterTest, BufferingFormatterTest,
4428
- StreamHandlerTest, LogRecordFactoryTest, ChildLoggerTest,
4429
- QueueHandlerTest, ShutdownTest, ModuleLevelMiscTest, BasicConfigTest,
4430
- LoggerAdapterTest, LoggerTest, SMTPHandlerTest, FileHandlerTest,
4431
- RotatingFileHandlerTest, LastResortTest, LogRecordTest,
4432
- ExceptionTest, SysLogHandlerTest, IPv6SysLogHandlerTest, HTTPHandlerTest,
4433
- NTEventLogHandlerTest, TimedRotatingFileHandlerTest,
4434
- UnixSocketHandlerTest, UnixDatagramHandlerTest, UnixSysLogHandlerTest,
4435
- MiscTestCase
4436
- ]
4437
- if hasattr(logging.handlers, 'QueueListener'):
4438
- tests.append(QueueListenerTest)
4439
- support.run_unittest(*tests)
4440
-
4441
- if __name__ == "__main__":
4442
- test_main()