From 7b4d6ba57efe6808e6e5bafaacf8b2ef1a3f95fd Mon Sep 17 00:00:00 2001 From: qianlifeng Date: Fri, 18 Jul 2014 20:00:55 +0800 Subject: [PATCH] Pack python env to zip --- Plugins/Wox.Plugin.HackerNews/main.py | 11 +- .../HttpRequest.cs | 106 +- Plugins/Wox.Plugin.PluginManagement/Main.cs | 489 +- PythonHome/Lib/BaseHTTPServer.py | 603 -- PythonHome/Lib/Bastion.py | 180 - PythonHome/Lib/CGIHTTPServer.py | 377 - PythonHome/Lib/ConfigParser.py | 753 -- PythonHome/Lib/Cookie.py | 758 -- PythonHome/Lib/Cookie.pyc | Bin 23522 -> 0 bytes PythonHome/Lib/DocXMLRPCServer.py | 279 - PythonHome/Lib/HTMLParser.py | 475 -- PythonHome/Lib/HTMLParser.pyc | Bin 14662 -> 0 bytes PythonHome/Lib/MimeWriter.py | 186 - PythonHome/Lib/Queue.py | 244 - PythonHome/Lib/Queue.pyc | Bin 10236 -> 0 bytes PythonHome/Lib/SimpleHTTPServer.py | 230 - PythonHome/Lib/SimpleXMLRPCServer.py | 708 -- PythonHome/Lib/SocketServer.py | 733 -- PythonHome/Lib/StringIO.py | 324 - PythonHome/Lib/StringIO.pyc | Bin 12031 -> 0 bytes PythonHome/Lib/UserDict.py | 180 - PythonHome/Lib/UserList.py | 88 - PythonHome/Lib/UserString.py | 228 - PythonHome/Lib/_LWPCookieJar.py | 170 - PythonHome/Lib/_LWPCookieJar.pyc | Bin 5708 -> 0 bytes PythonHome/Lib/_MozillaCookieJar.py | 149 - PythonHome/Lib/_MozillaCookieJar.pyc | Bin 4576 -> 0 bytes PythonHome/Lib/__future__.py | 128 - PythonHome/Lib/__phello__.foo.py | 1 - PythonHome/Lib/_abcoll.py | 690 -- PythonHome/Lib/_osx_support.py | 502 -- PythonHome/Lib/_pyio.py | 2030 ------ PythonHome/Lib/_strptime.py | 467 -- PythonHome/Lib/_threading_local.py | 251 - PythonHome/Lib/_weakrefset.py | 204 - PythonHome/Lib/abc.py | 185 - PythonHome/Lib/aifc.py | 986 --- PythonHome/Lib/antigravity.py | 4 - PythonHome/Lib/anydbm.py | 85 - PythonHome/Lib/argparse.py | 2367 ------- PythonHome/Lib/ast.py | 311 - PythonHome/Lib/asynchat.py | 314 - PythonHome/Lib/asyncore.py | 659 -- PythonHome/Lib/atexit.py | 65 - PythonHome/Lib/atexit.pyc | Bin 2377 -> 0 bytes PythonHome/Lib/audiodev.py | 260 - PythonHome/Lib/base64.py | 360 - PythonHome/Lib/base64.pyc | Bin 11410 -> 0 bytes PythonHome/Lib/bdb.py | 645 -- PythonHome/Lib/binhex.py | 508 -- PythonHome/Lib/bisect.py | 92 - PythonHome/Lib/bisect.pyc | Bin 3216 -> 0 bytes PythonHome/Lib/bsddb/__init__.py | 455 -- PythonHome/Lib/bsddb/db.py | 60 - PythonHome/Lib/bsddb/dbobj.py | 266 - PythonHome/Lib/bsddb/dbrecio.py | 190 - PythonHome/Lib/bsddb/dbshelve.py | 381 - PythonHome/Lib/bsddb/dbtables.py | 843 --- PythonHome/Lib/bsddb/dbutils.py | 83 - PythonHome/Lib/cProfile.py | 199 - PythonHome/Lib/calendar.py | 713 -- PythonHome/Lib/calendar.pyc | Bin 30076 -> 0 bytes PythonHome/Lib/cgi.py | 1059 --- PythonHome/Lib/cgi.pyc | Bin 34560 -> 0 bytes PythonHome/Lib/cgitb.py | 323 - PythonHome/Lib/chunk.py | 167 - PythonHome/Lib/cmd.py | 404 -- PythonHome/Lib/code.py | 310 - PythonHome/Lib/codecs.py | 1095 --- PythonHome/Lib/codeop.py | 168 - PythonHome/Lib/collections.py | 702 -- PythonHome/Lib/colorsys.py | 156 - PythonHome/Lib/commands.py | 90 - PythonHome/Lib/compileall.py | 227 - PythonHome/Lib/compiler/__init__.py | 31 - PythonHome/Lib/compiler/ast.py | 1419 ---- PythonHome/Lib/compiler/consts.py | 23 - PythonHome/Lib/compiler/future.py | 74 - PythonHome/Lib/compiler/misc.py | 73 - PythonHome/Lib/compiler/pyassem.py | 763 -- PythonHome/Lib/compiler/symbols.py | 462 -- PythonHome/Lib/compiler/syntax.py | 46 - PythonHome/Lib/compiler/transformer.py | 1535 ---- PythonHome/Lib/compiler/visitor.py | 113 - PythonHome/Lib/contextlib.py | 154 - PythonHome/Lib/cookielib.py | 1794 ----- PythonHome/Lib/cookielib.pyc | Bin 57534 -> 0 bytes PythonHome/Lib/copy.py | 433 -- PythonHome/Lib/copy_reg.py | 201 - PythonHome/Lib/csv.py | 456 -- PythonHome/Lib/ctypes/__init__.py | 555 -- PythonHome/Lib/ctypes/__init__.pyc | Bin 22027 -> 0 bytes PythonHome/Lib/ctypes/_endian.py | 64 - PythonHome/Lib/ctypes/_endian.pyc | Bin 2481 -> 0 bytes PythonHome/Lib/ctypes/macholib/__init__.py | 12 - PythonHome/Lib/ctypes/macholib/dyld.py | 169 - PythonHome/Lib/ctypes/macholib/dylib.py | 66 - PythonHome/Lib/ctypes/macholib/framework.py | 68 - PythonHome/Lib/ctypes/util.py | 276 - PythonHome/Lib/ctypes/util.pyc | Bin 8492 -> 0 bytes PythonHome/Lib/ctypes/wintypes.py | 185 - PythonHome/Lib/curses/__init__.py | 59 - PythonHome/Lib/curses/ascii.py | 99 - PythonHome/Lib/curses/has_key.py | 192 - PythonHome/Lib/curses/panel.py | 8 - PythonHome/Lib/curses/textpad.py | 188 - PythonHome/Lib/curses/wrapper.py | 50 - PythonHome/Lib/dbhash.py | 18 - PythonHome/Lib/decimal.py | 6198 ----------------- PythonHome/Lib/difflib.py | 2057 ------ PythonHome/Lib/dircache.py | 41 - PythonHome/Lib/dis.py | 224 - PythonHome/Lib/distutils/__init__.py | 19 - PythonHome/Lib/distutils/archive_util.py | 243 - PythonHome/Lib/distutils/bcppcompiler.py | 394 -- PythonHome/Lib/distutils/ccompiler.py | 1095 --- PythonHome/Lib/distutils/cmd.py | 457 -- PythonHome/Lib/distutils/command/__init__.py | 33 - PythonHome/Lib/distutils/command/bdist.py | 146 - .../Lib/distutils/command/bdist_dumb.py | 133 - PythonHome/Lib/distutils/command/bdist_msi.py | 742 -- PythonHome/Lib/distutils/command/bdist_rpm.py | 588 -- .../Lib/distutils/command/bdist_wininst.py | 368 - PythonHome/Lib/distutils/command/build.py | 147 - .../Lib/distutils/command/build_clib.py | 209 - PythonHome/Lib/distutils/command/build_ext.py | 766 -- PythonHome/Lib/distutils/command/build_py.py | 394 -- .../Lib/distutils/command/build_scripts.py | 131 - PythonHome/Lib/distutils/command/check.py | 149 - PythonHome/Lib/distutils/command/clean.py | 80 - PythonHome/Lib/distutils/command/config.py | 357 - PythonHome/Lib/distutils/command/install.py | 672 -- .../Lib/distutils/command/install_data.py | 81 - .../Lib/distutils/command/install_egg_info.py | 78 - .../Lib/distutils/command/install_headers.py | 51 - .../Lib/distutils/command/install_lib.py | 219 - .../Lib/distutils/command/install_scripts.py | 64 - PythonHome/Lib/distutils/command/register.py | 315 - PythonHome/Lib/distutils/command/sdist.py | 477 -- PythonHome/Lib/distutils/command/upload.py | 195 - .../Lib/distutils/command/wininst-6.0.exe | Bin 61440 -> 0 bytes .../Lib/distutils/command/wininst-7.1.exe | Bin 65536 -> 0 bytes .../Lib/distutils/command/wininst-8.0.exe | Bin 61440 -> 0 bytes .../distutils/command/wininst-9.0-amd64.exe | Bin 223744 -> 0 bytes .../Lib/distutils/command/wininst-9.0.exe | Bin 196096 -> 0 bytes PythonHome/Lib/distutils/config.py | 116 - PythonHome/Lib/distutils/core.py | 239 - PythonHome/Lib/distutils/cygwinccompiler.py | 463 -- PythonHome/Lib/distutils/debug.py | 7 - PythonHome/Lib/distutils/dep_util.py | 89 - PythonHome/Lib/distutils/dir_util.py | 214 - PythonHome/Lib/distutils/dist.py | 1249 ---- PythonHome/Lib/distutils/emxccompiler.py | 319 - PythonHome/Lib/distutils/errors.py | 88 - PythonHome/Lib/distutils/extension.py | 255 - PythonHome/Lib/distutils/fancy_getopt.py | 484 -- PythonHome/Lib/distutils/file_util.py | 231 - PythonHome/Lib/distutils/filelist.py | 343 - PythonHome/Lib/distutils/log.py | 71 - PythonHome/Lib/distutils/msvc9compiler.py | 801 --- PythonHome/Lib/distutils/msvccompiler.py | 659 -- PythonHome/Lib/distutils/spawn.py | 226 - PythonHome/Lib/distutils/sysconfig.py | 482 -- PythonHome/Lib/distutils/text_file.py | 304 - PythonHome/Lib/distutils/unixccompiler.py | 288 - PythonHome/Lib/distutils/util.py | 477 -- PythonHome/Lib/distutils/version.py | 299 - PythonHome/Lib/distutils/versionpredicate.py | 164 - PythonHome/Lib/doctest.py | 2817 -------- PythonHome/Lib/dumbdbm.py | 246 - PythonHome/Lib/dummy_thread.py | 145 - PythonHome/Lib/dummy_threading.py | 78 - PythonHome/Lib/email/__init__.py | 123 - PythonHome/Lib/email/__init__.pyc | Bin 3046 -> 0 bytes PythonHome/Lib/email/_parseaddr.py | 497 -- PythonHome/Lib/email/_parseaddr.pyc | Bin 14608 -> 0 bytes PythonHome/Lib/email/base64mime.py | 183 - PythonHome/Lib/email/charset.py | 397 -- PythonHome/Lib/email/encoders.py | 82 - PythonHome/Lib/email/encoders.pyc | Bin 2435 -> 0 bytes PythonHome/Lib/email/errors.py | 57 - PythonHome/Lib/email/feedparser.py | 484 -- PythonHome/Lib/email/generator.py | 371 - PythonHome/Lib/email/header.py | 514 -- PythonHome/Lib/email/iterators.py | 73 - PythonHome/Lib/email/message.py | 797 --- PythonHome/Lib/email/mime/__init__.pyc | Bin 159 -> 0 bytes PythonHome/Lib/email/mime/application.py | 36 - PythonHome/Lib/email/mime/audio.py | 73 - PythonHome/Lib/email/mime/base.py | 26 - PythonHome/Lib/email/mime/image.py | 46 - PythonHome/Lib/email/mime/message.py | 34 - PythonHome/Lib/email/mime/multipart.py | 47 - PythonHome/Lib/email/mime/nonmultipart.py | 22 - PythonHome/Lib/email/mime/text.py | 30 - PythonHome/Lib/email/parser.py | 91 - PythonHome/Lib/email/quoprimime.py | 336 - PythonHome/Lib/email/utils.py | 324 - PythonHome/Lib/email/utils.pyc | Bin 9627 -> 0 bytes PythonHome/Lib/encodings/__init__.py | 157 - PythonHome/Lib/encodings/aliases.py | 527 -- PythonHome/Lib/encodings/ascii.py | 50 - PythonHome/Lib/encodings/ascii.pyc | Bin 2571 -> 0 bytes PythonHome/Lib/encodings/base64_codec.py | 79 - PythonHome/Lib/encodings/big5.py | 39 - PythonHome/Lib/encodings/big5hkscs.py | 39 - PythonHome/Lib/encodings/bz2_codec.py | 102 - PythonHome/Lib/encodings/charmap.py | 69 - PythonHome/Lib/encodings/cp037.py | 307 - PythonHome/Lib/encodings/cp1006.py | 307 - PythonHome/Lib/encodings/cp1026.py | 307 - PythonHome/Lib/encodings/cp1140.py | 307 - PythonHome/Lib/encodings/cp1250.py | 307 - PythonHome/Lib/encodings/cp1251.py | 307 - PythonHome/Lib/encodings/cp1252.py | 307 - PythonHome/Lib/encodings/cp1253.py | 307 - PythonHome/Lib/encodings/cp1254.py | 307 - PythonHome/Lib/encodings/cp1255.py | 307 - PythonHome/Lib/encodings/cp1256.py | 307 - PythonHome/Lib/encodings/cp1257.py | 307 - PythonHome/Lib/encodings/cp1258.py | 307 - PythonHome/Lib/encodings/cp424.py | 307 - PythonHome/Lib/encodings/cp437.py | 698 -- PythonHome/Lib/encodings/cp500.py | 307 - PythonHome/Lib/encodings/cp720.py | 309 - PythonHome/Lib/encodings/cp737.py | 698 -- PythonHome/Lib/encodings/cp775.py | 697 -- PythonHome/Lib/encodings/cp850.py | 698 -- PythonHome/Lib/encodings/cp852.py | 698 -- PythonHome/Lib/encodings/cp855.py | 698 -- PythonHome/Lib/encodings/cp856.py | 307 - PythonHome/Lib/encodings/cp857.py | 694 -- PythonHome/Lib/encodings/cp858.py | 698 -- PythonHome/Lib/encodings/cp860.py | 698 -- PythonHome/Lib/encodings/cp861.py | 698 -- PythonHome/Lib/encodings/cp862.py | 698 -- PythonHome/Lib/encodings/cp863.py | 698 -- PythonHome/Lib/encodings/cp864.py | 690 -- PythonHome/Lib/encodings/cp865.py | 698 -- PythonHome/Lib/encodings/cp866.py | 698 -- PythonHome/Lib/encodings/cp869.py | 689 -- PythonHome/Lib/encodings/cp874.py | 307 - PythonHome/Lib/encodings/cp875.py | 307 - PythonHome/Lib/encodings/cp932.py | 39 - PythonHome/Lib/encodings/cp949.py | 39 - PythonHome/Lib/encodings/cp950.py | 39 - PythonHome/Lib/encodings/euc_jis_2004.py | 39 - PythonHome/Lib/encodings/euc_jisx0213.py | 39 - PythonHome/Lib/encodings/euc_jp.py | 39 - PythonHome/Lib/encodings/euc_kr.py | 39 - PythonHome/Lib/encodings/gb18030.py | 39 - PythonHome/Lib/encodings/gb2312.py | 39 - PythonHome/Lib/encodings/gbk.py | 39 - PythonHome/Lib/encodings/hex_codec.py | 79 - PythonHome/Lib/encodings/hp_roman8.py | 152 - PythonHome/Lib/encodings/hz.py | 39 - PythonHome/Lib/encodings/idna.py | 288 - PythonHome/Lib/encodings/idna.pyc | Bin 6810 -> 0 bytes PythonHome/Lib/encodings/iso2022_jp.py | 39 - PythonHome/Lib/encodings/iso2022_jp_1.py | 39 - PythonHome/Lib/encodings/iso2022_jp_2.py | 39 - PythonHome/Lib/encodings/iso2022_jp_2004.py | 39 - PythonHome/Lib/encodings/iso2022_jp_3.py | 39 - PythonHome/Lib/encodings/iso2022_jp_ext.py | 39 - PythonHome/Lib/encodings/iso2022_kr.py | 39 - PythonHome/Lib/encodings/iso8859_1.py | 307 - PythonHome/Lib/encodings/iso8859_10.py | 307 - PythonHome/Lib/encodings/iso8859_11.py | 307 - PythonHome/Lib/encodings/iso8859_13.py | 307 - PythonHome/Lib/encodings/iso8859_14.py | 307 - PythonHome/Lib/encodings/iso8859_15.py | 307 - PythonHome/Lib/encodings/iso8859_16.py | 307 - PythonHome/Lib/encodings/iso8859_2.py | 307 - PythonHome/Lib/encodings/iso8859_3.py | 307 - PythonHome/Lib/encodings/iso8859_4.py | 307 - PythonHome/Lib/encodings/iso8859_5.py | 307 - PythonHome/Lib/encodings/iso8859_6.py | 307 - PythonHome/Lib/encodings/iso8859_7.py | 307 - PythonHome/Lib/encodings/iso8859_8.py | 307 - PythonHome/Lib/encodings/iso8859_9.py | 307 - PythonHome/Lib/encodings/johab.py | 39 - PythonHome/Lib/encodings/koi8_r.py | 307 - PythonHome/Lib/encodings/koi8_u.py | 307 - PythonHome/Lib/encodings/latin_1.py | 50 - PythonHome/Lib/encodings/mac_arabic.py | 698 -- PythonHome/Lib/encodings/mac_centeuro.py | 307 - PythonHome/Lib/encodings/mac_croatian.py | 307 - PythonHome/Lib/encodings/mac_cyrillic.py | 307 - PythonHome/Lib/encodings/mac_farsi.py | 307 - PythonHome/Lib/encodings/mac_greek.py | 307 - PythonHome/Lib/encodings/mac_iceland.py | 307 - PythonHome/Lib/encodings/mac_latin2.py | 183 - PythonHome/Lib/encodings/mac_roman.py | 307 - PythonHome/Lib/encodings/mac_romanian.py | 307 - PythonHome/Lib/encodings/mac_turkish.py | 307 - PythonHome/Lib/encodings/mbcs.py | 47 - PythonHome/Lib/encodings/palmos.py | 83 - PythonHome/Lib/encodings/ptcp154.py | 175 - PythonHome/Lib/encodings/punycode.py | 238 - PythonHome/Lib/encodings/quopri_codec.py | 75 - .../Lib/encodings/raw_unicode_escape.py | 45 - PythonHome/Lib/encodings/rot_13.py | 118 - PythonHome/Lib/encodings/shift_jis.py | 39 - PythonHome/Lib/encodings/shift_jis_2004.py | 39 - PythonHome/Lib/encodings/shift_jisx0213.py | 39 - PythonHome/Lib/encodings/string_escape.py | 38 - PythonHome/Lib/encodings/tis_620.py | 307 - PythonHome/Lib/encodings/undefined.py | 49 - PythonHome/Lib/encodings/unicode_escape.py | 45 - PythonHome/Lib/encodings/unicode_internal.py | 45 - PythonHome/Lib/encodings/utf_16.py | 126 - PythonHome/Lib/encodings/utf_16_be.py | 42 - PythonHome/Lib/encodings/utf_16_le.py | 42 - PythonHome/Lib/encodings/utf_32.py | 150 - PythonHome/Lib/encodings/utf_32_be.py | 37 - PythonHome/Lib/encodings/utf_32_le.py | 37 - PythonHome/Lib/encodings/utf_7.py | 38 - PythonHome/Lib/encodings/utf_8.py | 42 - PythonHome/Lib/encodings/utf_8.pyc | Bin 2198 -> 0 bytes PythonHome/Lib/encodings/utf_8_sig.py | 117 - PythonHome/Lib/encodings/uu_codec.py | 129 - PythonHome/Lib/encodings/zlib_codec.py | 102 - PythonHome/Lib/filecmp.py | 296 - PythonHome/Lib/fileinput.py | 413 -- PythonHome/Lib/fnmatch.py | 116 - PythonHome/Lib/formatter.py | 445 -- PythonHome/Lib/fpformat.py | 145 - PythonHome/Lib/fractions.py | 605 -- PythonHome/Lib/ftplib.py | 1061 --- PythonHome/Lib/functools.py | 100 - PythonHome/Lib/genericpath.py | 105 - PythonHome/Lib/getopt.py | 210 - PythonHome/Lib/getpass.py | 179 - PythonHome/Lib/gettext.py | 591 -- PythonHome/Lib/glob.py | 95 - PythonHome/Lib/gzip.py | 518 -- PythonHome/Lib/hashlib.py | 213 - PythonHome/Lib/heapq.py | 485 -- PythonHome/Lib/hmac.py | 136 - PythonHome/Lib/hotshot/__init__.py | 78 - PythonHome/Lib/hotshot/log.py | 194 - PythonHome/Lib/hotshot/stats.py | 93 - PythonHome/Lib/hotshot/stones.py | 30 - PythonHome/Lib/htmlentitydefs.py | 273 - PythonHome/Lib/htmlentitydefs.pyc | Bin 6396 -> 0 bytes PythonHome/Lib/htmllib.py | 491 -- PythonHome/Lib/httplib.py | 1364 ---- PythonHome/Lib/httplib.pyc | Bin 38072 -> 0 bytes PythonHome/Lib/idlelib/AutoComplete.py | 229 - PythonHome/Lib/idlelib/AutoCompleteWindow.py | 406 -- PythonHome/Lib/idlelib/AutoExpand.py | 104 - PythonHome/Lib/idlelib/Bindings.py | 89 - PythonHome/Lib/idlelib/CREDITS.txt | 37 - PythonHome/Lib/idlelib/CallTipWindow.py | 168 - PythonHome/Lib/idlelib/CallTips.py | 219 - PythonHome/Lib/idlelib/ClassBrowser.py | 229 - PythonHome/Lib/idlelib/CodeContext.py | 176 - PythonHome/Lib/idlelib/ColorDelegator.py | 275 - PythonHome/Lib/idlelib/Debugger.py | 481 -- PythonHome/Lib/idlelib/Delegator.py | 25 - PythonHome/Lib/idlelib/EditorWindow.py | 1729 ----- PythonHome/Lib/idlelib/FileList.py | 124 - PythonHome/Lib/idlelib/FormatParagraph.py | 193 - PythonHome/Lib/idlelib/GrepDialog.py | 159 - PythonHome/Lib/idlelib/HISTORY.txt | 296 - PythonHome/Lib/idlelib/HyperParser.py | 255 - PythonHome/Lib/idlelib/IOBinding.py | 595 -- PythonHome/Lib/idlelib/Icons/folder.gif | Bin 120 -> 0 bytes PythonHome/Lib/idlelib/Icons/idle.icns | Bin 57435 -> 0 bytes PythonHome/Lib/idlelib/Icons/idle.ico | Bin 19790 -> 0 bytes PythonHome/Lib/idlelib/Icons/idle_16.gif | Bin 1034 -> 0 bytes PythonHome/Lib/idlelib/Icons/idle_32.gif | Bin 1435 -> 0 bytes PythonHome/Lib/idlelib/Icons/idle_48.gif | Bin 1388 -> 0 bytes PythonHome/Lib/idlelib/Icons/minusnode.gif | Bin 96 -> 0 bytes PythonHome/Lib/idlelib/Icons/openfolder.gif | Bin 125 -> 0 bytes PythonHome/Lib/idlelib/Icons/plusnode.gif | Bin 79 -> 0 bytes PythonHome/Lib/idlelib/Icons/python.gif | Bin 585 -> 0 bytes PythonHome/Lib/idlelib/Icons/tk.gif | Bin 85 -> 0 bytes PythonHome/Lib/idlelib/IdleHistory.py | 104 - PythonHome/Lib/idlelib/MultiCall.py | 430 -- PythonHome/Lib/idlelib/MultiStatusBar.py | 45 - PythonHome/Lib/idlelib/NEWS.txt | 780 --- PythonHome/Lib/idlelib/ObjectBrowser.py | 156 - PythonHome/Lib/idlelib/OutputWindow.py | 149 - PythonHome/Lib/idlelib/ParenMatch.py | 178 - PythonHome/Lib/idlelib/PathBrowser.py | 104 - PythonHome/Lib/idlelib/Percolator.py | 103 - PythonHome/Lib/idlelib/PyParse.py | 594 -- PythonHome/Lib/idlelib/PyShell.py | 1616 ----- PythonHome/Lib/idlelib/README.txt | 63 - PythonHome/Lib/idlelib/RemoteDebugger.py | 380 - PythonHome/Lib/idlelib/RemoteObjectBrowser.py | 36 - PythonHome/Lib/idlelib/ReplaceDialog.py | 220 - PythonHome/Lib/idlelib/RstripExtension.py | 33 - PythonHome/Lib/idlelib/ScriptBinding.py | 222 - PythonHome/Lib/idlelib/ScrolledList.py | 140 - PythonHome/Lib/idlelib/SearchDialog.py | 89 - PythonHome/Lib/idlelib/SearchDialogBase.py | 184 - PythonHome/Lib/idlelib/SearchEngine.py | 233 - PythonHome/Lib/idlelib/StackViewer.py | 152 - PythonHome/Lib/idlelib/TODO.txt | 210 - PythonHome/Lib/idlelib/ToolTip.py | 97 - PythonHome/Lib/idlelib/TreeWidget.py | 466 -- PythonHome/Lib/idlelib/UndoDelegator.py | 365 - PythonHome/Lib/idlelib/WidgetRedirector.py | 125 - PythonHome/Lib/idlelib/WindowList.py | 90 - PythonHome/Lib/idlelib/ZoomHeight.py | 51 - PythonHome/Lib/idlelib/__init__.py | 1 - PythonHome/Lib/idlelib/aboutDialog.py | 145 - PythonHome/Lib/idlelib/config-extensions.def | 96 - PythonHome/Lib/idlelib/config-highlight.def | 64 - PythonHome/Lib/idlelib/config-keys.def | 214 - PythonHome/Lib/idlelib/config-main.def | 79 - PythonHome/Lib/idlelib/configDialog.py | 1160 --- PythonHome/Lib/idlelib/configHandler.py | 721 -- .../Lib/idlelib/configHelpSourceEdit.py | 166 - .../Lib/idlelib/configSectionNameDialog.py | 92 - PythonHome/Lib/idlelib/dynOptionMenuWidget.py | 57 - PythonHome/Lib/idlelib/extend.txt | 83 - PythonHome/Lib/idlelib/help.txt | 302 - PythonHome/Lib/idlelib/idle.bat | 4 - PythonHome/Lib/idlelib/idle.py | 11 - PythonHome/Lib/idlelib/idle.pyw | 21 - PythonHome/Lib/idlelib/idlever.py | 1 - PythonHome/Lib/idlelib/keybindingDialog.py | 266 - PythonHome/Lib/idlelib/macosxSupport.py | 235 - PythonHome/Lib/idlelib/rpc.py | 600 -- PythonHome/Lib/idlelib/run.py | 374 - PythonHome/Lib/idlelib/tabbedpages.py | 498 -- PythonHome/Lib/idlelib/testcode.py | 31 - PythonHome/Lib/idlelib/textView.py | 90 - PythonHome/Lib/ihooks.py | 554 -- PythonHome/Lib/imaplib.py | 1535 ---- PythonHome/Lib/imghdr.py | 159 - PythonHome/Lib/importlib/__init__.py | 38 - PythonHome/Lib/imputil.py | 725 -- PythonHome/Lib/inspect.py | 1059 --- PythonHome/Lib/io.py | 90 - PythonHome/Lib/json/__init__.py | 351 - PythonHome/Lib/json/decoder.py | 385 - PythonHome/Lib/json/encoder.py | 448 -- PythonHome/Lib/json/scanner.py | 67 - PythonHome/Lib/json/tool.py | 40 - PythonHome/Lib/keyword.py | 93 - PythonHome/Lib/lib-tk/Canvas.py | 194 - PythonHome/Lib/lib-tk/Dialog.py | 49 - PythonHome/Lib/lib-tk/FileDialog.py | 274 - PythonHome/Lib/lib-tk/FixTk.py | 78 - PythonHome/Lib/lib-tk/ScrolledText.py | 55 - PythonHome/Lib/lib-tk/SimpleDialog.py | 112 - PythonHome/Lib/lib-tk/Tix.py | 1945 ------ PythonHome/Lib/lib-tk/Tkconstants.py | 110 - PythonHome/Lib/lib-tk/Tkdnd.py | 321 - PythonHome/Lib/lib-tk/Tkinter.py | 3809 ---------- PythonHome/Lib/lib-tk/tkColorChooser.py | 72 - PythonHome/Lib/lib-tk/tkCommonDialog.py | 60 - PythonHome/Lib/lib-tk/tkFileDialog.py | 215 - PythonHome/Lib/lib-tk/tkFont.py | 217 - PythonHome/Lib/lib-tk/tkMessageBox.py | 134 - PythonHome/Lib/lib-tk/tkSimpleDialog.py | 323 - PythonHome/Lib/lib-tk/ttk.py | 1624 ----- PythonHome/Lib/lib-tk/turtle.py | 4035 ----------- PythonHome/Lib/lib2to3/Grammar.txt | 159 - PythonHome/Lib/lib2to3/PatternGrammar.txt | 28 - PythonHome/Lib/lib2to3/__init__.py | 1 - PythonHome/Lib/lib2to3/__main__.py | 4 - PythonHome/Lib/lib2to3/btm_matcher.py | 168 - PythonHome/Lib/lib2to3/btm_utils.py | 283 - PythonHome/Lib/lib2to3/fixer_base.py | 189 - PythonHome/Lib/lib2to3/fixer_util.py | 432 -- PythonHome/Lib/lib2to3/fixes/__init__.py | 1 - PythonHome/Lib/lib2to3/fixes/fix_apply.py | 59 - .../Lib/lib2to3/fixes/fix_basestring.py | 14 - PythonHome/Lib/lib2to3/fixes/fix_buffer.py | 22 - PythonHome/Lib/lib2to3/fixes/fix_callable.py | 37 - PythonHome/Lib/lib2to3/fixes/fix_dict.py | 107 - PythonHome/Lib/lib2to3/fixes/fix_except.py | 93 - PythonHome/Lib/lib2to3/fixes/fix_exec.py | 40 - PythonHome/Lib/lib2to3/fixes/fix_execfile.py | 52 - PythonHome/Lib/lib2to3/fixes/fix_exitfunc.py | 72 - PythonHome/Lib/lib2to3/fixes/fix_filter.py | 76 - PythonHome/Lib/lib2to3/fixes/fix_funcattrs.py | 21 - PythonHome/Lib/lib2to3/fixes/fix_future.py | 22 - PythonHome/Lib/lib2to3/fixes/fix_getcwdu.py | 19 - PythonHome/Lib/lib2to3/fixes/fix_has_key.py | 110 - PythonHome/Lib/lib2to3/fixes/fix_idioms.py | 152 - PythonHome/Lib/lib2to3/fixes/fix_import.py | 99 - PythonHome/Lib/lib2to3/fixes/fix_imports.py | 145 - PythonHome/Lib/lib2to3/fixes/fix_imports2.py | 16 - PythonHome/Lib/lib2to3/fixes/fix_input.py | 26 - PythonHome/Lib/lib2to3/fixes/fix_intern.py | 46 - .../Lib/lib2to3/fixes/fix_isinstance.py | 52 - PythonHome/Lib/lib2to3/fixes/fix_itertools.py | 43 - .../lib2to3/fixes/fix_itertools_imports.py | 57 - PythonHome/Lib/lib2to3/fixes/fix_long.py | 19 - PythonHome/Lib/lib2to3/fixes/fix_map.py | 91 - PythonHome/Lib/lib2to3/fixes/fix_metaclass.py | 228 - .../Lib/lib2to3/fixes/fix_methodattrs.py | 24 - PythonHome/Lib/lib2to3/fixes/fix_ne.py | 23 - PythonHome/Lib/lib2to3/fixes/fix_next.py | 103 - PythonHome/Lib/lib2to3/fixes/fix_nonzero.py | 21 - .../Lib/lib2to3/fixes/fix_numliterals.py | 28 - PythonHome/Lib/lib2to3/fixes/fix_operator.py | 96 - PythonHome/Lib/lib2to3/fixes/fix_paren.py | 44 - PythonHome/Lib/lib2to3/fixes/fix_print.py | 87 - PythonHome/Lib/lib2to3/fixes/fix_raise.py | 90 - PythonHome/Lib/lib2to3/fixes/fix_raw_input.py | 17 - PythonHome/Lib/lib2to3/fixes/fix_reduce.py | 35 - PythonHome/Lib/lib2to3/fixes/fix_renames.py | 70 - PythonHome/Lib/lib2to3/fixes/fix_repr.py | 23 - .../Lib/lib2to3/fixes/fix_set_literal.py | 53 - .../Lib/lib2to3/fixes/fix_standarderror.py | 18 - PythonHome/Lib/lib2to3/fixes/fix_sys_exc.py | 30 - PythonHome/Lib/lib2to3/fixes/fix_throw.py | 56 - .../Lib/lib2to3/fixes/fix_tuple_params.py | 175 - PythonHome/Lib/lib2to3/fixes/fix_types.py | 62 - PythonHome/Lib/lib2to3/fixes/fix_unicode.py | 42 - PythonHome/Lib/lib2to3/fixes/fix_urllib.py | 197 - PythonHome/Lib/lib2to3/fixes/fix_ws_comma.py | 39 - PythonHome/Lib/lib2to3/fixes/fix_xrange.py | 73 - .../Lib/lib2to3/fixes/fix_xreadlines.py | 25 - PythonHome/Lib/lib2to3/fixes/fix_zip.py | 35 - PythonHome/Lib/lib2to3/main.py | 269 - PythonHome/Lib/lib2to3/patcomp.py | 205 - PythonHome/Lib/lib2to3/pgen2/__init__.py | 4 - PythonHome/Lib/lib2to3/pgen2/conv.py | 257 - PythonHome/Lib/lib2to3/pgen2/driver.py | 157 - PythonHome/Lib/lib2to3/pgen2/grammar.py | 185 - PythonHome/Lib/lib2to3/pgen2/literals.py | 60 - PythonHome/Lib/lib2to3/pgen2/parse.py | 201 - PythonHome/Lib/lib2to3/pgen2/pgen.py | 386 - PythonHome/Lib/lib2to3/pgen2/token.py | 83 - PythonHome/Lib/lib2to3/pgen2/tokenize.py | 499 -- PythonHome/Lib/lib2to3/pygram.py | 40 - PythonHome/Lib/lib2to3/pytree.py | 887 --- PythonHome/Lib/lib2to3/refactor.py | 747 -- PythonHome/Lib/linecache.py | 135 - PythonHome/Lib/locale.py | 1947 ------ PythonHome/Lib/logging/__init__.py | 1737 ----- PythonHome/Lib/logging/__init__.pyc | Bin 60991 -> 0 bytes PythonHome/Lib/logging/config.py | 919 --- PythonHome/Lib/logging/handlers.py | 1222 ---- PythonHome/Lib/macpath.py | 215 - PythonHome/Lib/macurl2path.py | 77 - PythonHome/Lib/mailbox.py | 2236 ------ PythonHome/Lib/mailcap.py | 255 - PythonHome/Lib/markupbase.py | 396 -- PythonHome/Lib/markupbase.pyc | Bin 9810 -> 0 bytes PythonHome/Lib/md5.py | 14 - PythonHome/Lib/mhlib.py | 1005 --- PythonHome/Lib/mimetools.py | 250 - PythonHome/Lib/mimetools.pyc | Bin 8802 -> 0 bytes PythonHome/Lib/mimetypes.py | 591 -- PythonHome/Lib/mimetypes.pyc | Bin 18808 -> 0 bytes PythonHome/Lib/mimify.py | 468 -- PythonHome/Lib/modulefinder.py | 671 -- PythonHome/Lib/msilib/__init__.py | 475 -- PythonHome/Lib/msilib/schema.py | 1007 --- PythonHome/Lib/msilib/sequence.py | 126 - PythonHome/Lib/msilib/text.py | 129 - PythonHome/Lib/multifile.py | 162 - PythonHome/Lib/multiprocessing/__init__.py | 277 - PythonHome/Lib/multiprocessing/connection.py | 473 -- .../Lib/multiprocessing/dummy/__init__.py | 153 - .../Lib/multiprocessing/dummy/connection.py | 87 - PythonHome/Lib/multiprocessing/forking.py | 512 -- PythonHome/Lib/multiprocessing/heap.py | 254 - PythonHome/Lib/multiprocessing/managers.py | 1117 --- PythonHome/Lib/multiprocessing/pool.py | 735 -- PythonHome/Lib/multiprocessing/process.py | 323 - PythonHome/Lib/multiprocessing/queues.py | 393 -- PythonHome/Lib/multiprocessing/reduction.py | 215 - .../Lib/multiprocessing/sharedctypes.py | 266 - PythonHome/Lib/multiprocessing/synchronize.py | 344 - PythonHome/Lib/multiprocessing/util.py | 350 - PythonHome/Lib/mutex.py | 55 - PythonHome/Lib/netrc.py | 145 - PythonHome/Lib/netrc.pyc | Bin 4930 -> 0 bytes PythonHome/Lib/new.py | 17 - PythonHome/Lib/nntplib.py | 636 -- PythonHome/Lib/ntpath.py | 549 -- PythonHome/Lib/nturl2path.py | 66 - PythonHome/Lib/nturl2path.pyc | Bin 1902 -> 0 bytes PythonHome/Lib/numbers.py | 391 -- PythonHome/Lib/opcode.py | 192 - PythonHome/Lib/optparse.py | 1704 ----- PythonHome/Lib/os.py | 742 -- PythonHome/Lib/os2emxpath.py | 159 - PythonHome/Lib/pdb.py | 1338 ---- PythonHome/Lib/pickle.py | 1391 ---- PythonHome/Lib/pickletools.py | 2274 ------ PythonHome/Lib/pipes.py | 278 - PythonHome/Lib/pkgutil.py | 591 -- PythonHome/Lib/platform.py | 1655 ----- PythonHome/Lib/plistlib.py | 474 -- PythonHome/Lib/popen2.py | 201 - PythonHome/Lib/poplib.py | 417 -- PythonHome/Lib/posixfile.py | 237 - PythonHome/Lib/posixpath.py | 446 -- PythonHome/Lib/posixpath.pyc | Bin 12311 -> 0 bytes PythonHome/Lib/pprint.py | 346 - PythonHome/Lib/profile.py | 610 -- PythonHome/Lib/pstats.py | 705 -- PythonHome/Lib/pty.py | 180 - PythonHome/Lib/py_compile.py | 170 - PythonHome/Lib/pydoc.py | 2398 ------- PythonHome/Lib/pydoc_data/topics.py | 79 - PythonHome/Lib/quopri.py | 237 - PythonHome/Lib/quopri.pyc | Bin 6891 -> 0 bytes PythonHome/Lib/random.py | 910 --- PythonHome/Lib/random.pyc | Bin 26815 -> 0 bytes PythonHome/Lib/re.py | 327 - PythonHome/Lib/repr.py | 132 - PythonHome/Lib/rexec.py | 588 -- PythonHome/Lib/rfc822.py | 1011 --- PythonHome/Lib/rfc822.pyc | Bin 33531 -> 0 bytes PythonHome/Lib/rlcompleter.py | 166 - PythonHome/Lib/robotparser.py | 233 - PythonHome/Lib/runpy.py | 278 - PythonHome/Lib/sched.py | 134 - PythonHome/Lib/sets.py | 557 -- PythonHome/Lib/sgmllib.py | 553 -- PythonHome/Lib/sha.py | 15 - PythonHome/Lib/shelve.py | 239 - PythonHome/Lib/shlex.py | 292 - PythonHome/Lib/shutil.py | 555 -- PythonHome/Lib/site-packages/bs4/__init__.pyc | Bin 14358 -> 0 bytes .../site-packages/bs4/builder/__init__.pyc | Bin 11503 -> 0 bytes .../site-packages/bs4/builder/_html5lib.pyc | Bin 13108 -> 0 bytes .../site-packages/bs4/builder/_htmlparser.pyc | Bin 9215 -> 0 bytes .../Lib/site-packages/bs4/builder/_lxml.pyc | Bin 8730 -> 0 bytes PythonHome/Lib/site-packages/bs4/dammit.pyc | Bin 22961 -> 0 bytes PythonHome/Lib/site-packages/bs4/element.pyc | Bin 57630 -> 0 bytes .../site-packages/pip/_vendor/distlib/t32.exe | Bin 91136 -> 0 bytes .../site-packages/pip/_vendor/distlib/t64.exe | Bin 94720 -> 0 bytes .../site-packages/pip/_vendor/distlib/w32.exe | Bin 87040 -> 0 bytes .../site-packages/pip/_vendor/distlib/w64.exe | Bin 91648 -> 0 bytes .../pip/_vendor/html5lib/filters/__init__.py | 0 .../_vendor/html5lib/treeadapters/__init__.py | 0 .../requests-2.3.0.dist-info/DESCRIPTION.rst | 889 --- .../requests-2.3.0.dist-info/METADATA | 908 --- .../requests-2.3.0.dist-info/pydist.json | 1 - .../Lib/site-packages/requests/__init__.pyc | Bin 2603 -> 0 bytes .../Lib/site-packages/requests/adapters.pyc | Bin 14350 -> 0 bytes PythonHome/Lib/site-packages/requests/api.pyc | Bin 5551 -> 0 bytes .../Lib/site-packages/requests/auth.pyc | Bin 7663 -> 0 bytes .../Lib/site-packages/requests/certs.pyc | Bin 849 -> 0 bytes .../Lib/site-packages/requests/compat.pyc | Bin 2608 -> 0 bytes .../Lib/site-packages/requests/cookies.pyc | Bin 21748 -> 0 bytes .../Lib/site-packages/requests/exceptions.pyc | Bin 4491 -> 0 bytes .../Lib/site-packages/requests/hooks.pyc | Bin 1148 -> 0 bytes .../Lib/site-packages/requests/models.pyc | Bin 25332 -> 0 bytes .../Lib/site-packages/requests/sessions.pyc | Bin 19371 -> 0 bytes .../site-packages/requests/status_codes.pyc | Bin 4552 -> 0 bytes .../Lib/site-packages/requests/structures.pyc | Bin 7071 -> 0 bytes .../Lib/site-packages/requests/utils.pyc | Bin 20475 -> 0 bytes .../Lib/site-packages/setuptools/cli-32.exe | Bin 65536 -> 0 bytes .../Lib/site-packages/setuptools/cli-64.exe | Bin 74752 -> 0 bytes .../site-packages/setuptools/cli-arm-32.exe | Bin 69120 -> 0 bytes .../Lib/site-packages/setuptools/cli.exe | Bin 65536 -> 0 bytes .../Lib/site-packages/setuptools/gui-32.exe | Bin 65536 -> 0 bytes .../Lib/site-packages/setuptools/gui-64.exe | Bin 75264 -> 0 bytes .../site-packages/setuptools/gui-arm-32.exe | Bin 69120 -> 0 bytes .../Lib/site-packages/setuptools/gui.exe | Bin 65536 -> 0 bytes PythonHome/Lib/site.py | 600 -- PythonHome/Lib/smtpd.py | 555 -- PythonHome/Lib/smtplib.py | 863 --- PythonHome/Lib/sndhdr.py | 228 - PythonHome/Lib/socket.py | 573 -- PythonHome/Lib/sqlite3/__init__.py | 24 - PythonHome/Lib/sqlite3/dbapi2.py | 90 - PythonHome/Lib/sqlite3/dump.py | 70 - PythonHome/Lib/sre.py | 13 - PythonHome/Lib/sre_compile.py | 522 -- PythonHome/Lib/sre_constants.py | 263 - PythonHome/Lib/sre_parse.py | 805 --- PythonHome/Lib/ssl.py | 484 -- PythonHome/Lib/ssl.pyc | Bin 15788 -> 0 bytes PythonHome/Lib/stat.py | 96 - PythonHome/Lib/statvfs.py | 18 - PythonHome/Lib/string.py | 642 -- PythonHome/Lib/stringold.py | 432 -- PythonHome/Lib/stringprep.py | 272 - PythonHome/Lib/stringprep.pyc | Bin 15067 -> 0 bytes PythonHome/Lib/struct.py | 3 - PythonHome/Lib/subprocess.py | 1621 ----- PythonHome/Lib/subprocess.pyc | Bin 43349 -> 0 bytes PythonHome/Lib/sunau.py | 493 -- PythonHome/Lib/sunaudio.py | 49 - PythonHome/Lib/symbol.py | 114 - PythonHome/Lib/symtable.py | 239 - PythonHome/Lib/sysconfig.py | 636 -- PythonHome/Lib/tabnanny.py | 329 - PythonHome/Lib/tarfile.py | 2596 ------- PythonHome/Lib/telnetlib.py | 790 --- PythonHome/Lib/tempfile.py | 626 -- PythonHome/Lib/tempfile.pyc | Bin 21483 -> 0 bytes PythonHome/Lib/textwrap.py | 425 -- PythonHome/Lib/this.py | 28 - PythonHome/Lib/threading.py | 1331 ---- PythonHome/Lib/threading.pyc | Bin 45552 -> 0 bytes PythonHome/Lib/timeit.py | 330 - PythonHome/Lib/toaiff.py | 110 - PythonHome/Lib/token.py | 140 - PythonHome/Lib/tokenize.py | 432 -- PythonHome/Lib/trace.py | 819 --- PythonHome/Lib/traceback.py | 320 - PythonHome/Lib/tty.py | 36 - PythonHome/Lib/types.py | 84 - PythonHome/Lib/unittest/__init__.py | 69 - PythonHome/Lib/unittest/__main__.py | 12 - PythonHome/Lib/unittest/case.py | 1076 --- PythonHome/Lib/unittest/loader.py | 316 - PythonHome/Lib/unittest/main.py | 236 - PythonHome/Lib/unittest/result.py | 193 - PythonHome/Lib/unittest/runner.py | 196 - PythonHome/Lib/unittest/signals.py | 71 - PythonHome/Lib/unittest/suite.py | 303 - PythonHome/Lib/unittest/test/__init__.py | 21 - PythonHome/Lib/unittest/test/dummy.py | 1 - PythonHome/Lib/unittest/test/support.py | 119 - .../Lib/unittest/test/test_assertions.py | 290 - PythonHome/Lib/unittest/test/test_break.py | 284 - PythonHome/Lib/unittest/test/test_case.py | 1130 --- .../Lib/unittest/test/test_discovery.py | 398 -- .../unittest/test/test_functiontestcase.py | 148 - PythonHome/Lib/unittest/test/test_loader.py | 1301 ---- PythonHome/Lib/unittest/test/test_program.py | 255 - PythonHome/Lib/unittest/test/test_result.py | 567 -- PythonHome/Lib/unittest/test/test_runner.py | 266 - PythonHome/Lib/unittest/test/test_setups.py | 508 -- PythonHome/Lib/unittest/test/test_skipping.py | 168 - PythonHome/Lib/unittest/test/test_suite.py | 367 - PythonHome/Lib/unittest/util.py | 156 - PythonHome/Lib/urllib.py | 1622 ----- PythonHome/Lib/urllib.pyc | Bin 53249 -> 0 bytes PythonHome/Lib/urllib2.py | 1470 ---- PythonHome/Lib/urllib2.pyc | Bin 50494 -> 0 bytes PythonHome/Lib/urlparse.py | 428 -- PythonHome/Lib/urlparse.pyc | Bin 15270 -> 0 bytes PythonHome/Lib/user.py | 48 - PythonHome/Lib/uu.py | 196 - PythonHome/Lib/uuid.py | 575 -- PythonHome/Lib/uuid.pyc | Bin 22625 -> 0 bytes PythonHome/Lib/warnings.py | 400 -- PythonHome/Lib/wave.py | 515 -- PythonHome/Lib/weakref.py | 443 -- PythonHome/Lib/webbrowser.py | 704 -- PythonHome/Lib/webbrowser.pyc | Bin 21092 -> 0 bytes PythonHome/Lib/whichdb.py | 117 - PythonHome/Lib/wox.pyc | Bin 1788 -> 0 bytes PythonHome/Lib/wsgiref/__init__.py | 23 - PythonHome/Lib/wsgiref/handlers.py | 450 -- PythonHome/Lib/wsgiref/headers.py | 169 - PythonHome/Lib/wsgiref/simple_server.py | 156 - PythonHome/Lib/wsgiref/util.py | 165 - PythonHome/Lib/wsgiref/validate.py | 432 -- PythonHome/Lib/xdrlib.py | 231 - PythonHome/Lib/xml/__init__.py | 41 - PythonHome/Lib/xml/dom/NodeFilter.py | 27 - PythonHome/Lib/xml/dom/__init__.py | 139 - PythonHome/Lib/xml/dom/domreg.py | 99 - PythonHome/Lib/xml/dom/expatbuilder.py | 983 --- PythonHome/Lib/xml/dom/minicompat.py | 110 - PythonHome/Lib/xml/dom/minidom.py | 1941 ------ PythonHome/Lib/xml/dom/pulldom.py | 351 - PythonHome/Lib/xml/dom/xmlbuilder.py | 386 - PythonHome/Lib/xml/etree/ElementInclude.py | 142 - PythonHome/Lib/xml/etree/ElementPath.py | 303 - PythonHome/Lib/xml/etree/ElementTree.py | 1667 ----- PythonHome/Lib/xml/etree/__init__.py | 33 - PythonHome/Lib/xml/etree/cElementTree.py | 3 - PythonHome/Lib/xml/parsers/__init__.py | 8 - PythonHome/Lib/xml/parsers/expat.py | 4 - PythonHome/Lib/xml/sax/__init__.py | 108 - PythonHome/Lib/xml/sax/_exceptions.py | 131 - PythonHome/Lib/xml/sax/expatreader.py | 417 -- PythonHome/Lib/xml/sax/handler.py | 342 - PythonHome/Lib/xml/sax/saxutils.py | 350 - PythonHome/Lib/xml/sax/xmlreader.py | 381 - PythonHome/Lib/xmllib.py | 930 --- PythonHome/Lib/xmlrpclib.py | 1632 ----- PythonHome/Lib/zipfile.py | 1527 ---- PythonHome/Scripts/pip.exe | Bin 91502 -> 91483 bytes PythonHome/Scripts/pip2.7.exe | Bin 91502 -> 91483 bytes PythonHome/Scripts/pip2.exe | Bin 91502 -> 91483 bytes PythonHome/install_requirements.bat | 1 - PythonHome/python27.zip | Bin 0 -> 6316507 bytes PythonHome/pythonx.bat | 2 + PythonHome/requirements.txt | 2 - .../site-packages => thirdparty}/README.txt | 0 .../_markerlib/__init__.py | 0 .../_markerlib/markers.py | 0 .../PKG-INFO | 0 .../SOURCES.txt | 0 .../dependency_links.txt | 0 .../installed-files.txt | 0 .../top_level.txt | 0 .../bs4/__init__.py | 0 .../bs4/builder/__init__.py | 0 .../bs4/builder/_html5lib.py | 0 .../bs4/builder/_htmlparser.py | 0 .../bs4/builder/_lxml.py | 0 .../bs4/dammit.py | 0 .../bs4/diagnose.py | 0 .../bs4/element.py | 0 .../bs4/testing.py | 0 .../easy_install.py | 0 .../pip-1.5.6.dist-info/DESCRIPTION.rst | 0 .../pip-1.5.6.dist-info/METADATA | 0 .../pip-1.5.6.dist-info/RECORD | 6 +- .../pip-1.5.6.dist-info/WHEEL | 0 .../pip-1.5.6.dist-info/entry_points.txt | 0 .../pip-1.5.6.dist-info/metadata.json | 0 .../pip-1.5.6.dist-info/top_level.txt | 0 .../pip/__init__.py | 0 .../pip/__main__.py | 0 .../pip/_vendor/__init__.py | 0 .../pip/_vendor/_markerlib/__init__.py | 0 .../pip/_vendor/_markerlib/markers.py | 0 .../pip/_vendor/colorama/__init__.py | 0 .../pip/_vendor/colorama/ansi.py | 0 .../pip/_vendor/colorama/ansitowin32.py | 0 .../pip/_vendor/colorama/initialise.py | 0 .../pip/_vendor/colorama/win32.py | 0 .../pip/_vendor/colorama/winterm.py | 0 .../pip/_vendor/distlib/__init__.py | 0 .../pip/_vendor/distlib/_backport/__init__.py | 0 .../pip/_vendor/distlib/_backport/misc.py | 0 .../pip/_vendor/distlib/_backport/shutil.py | 0 .../_vendor/distlib/_backport/sysconfig.cfg | 0 .../_vendor/distlib/_backport/sysconfig.py | 0 .../pip/_vendor/distlib/_backport/tarfile.py | 0 .../pip/_vendor/distlib/compat.py | 0 .../pip/_vendor/distlib/database.py | 0 .../pip/_vendor/distlib/index.py | 0 .../pip/_vendor/distlib/locators.py | 0 .../pip/_vendor/distlib/manifest.py | 0 .../pip/_vendor/distlib/markers.py | 0 .../pip/_vendor/distlib/metadata.py | 0 .../pip/_vendor/distlib/resources.py | 0 .../pip/_vendor/distlib/scripts.py | 0 .../pip/_vendor/distlib/util.py | 0 .../pip/_vendor/distlib/version.py | 0 .../pip/_vendor/distlib/wheel.py | 0 .../pip/_vendor/html5lib/__init__.py | 0 .../pip/_vendor/html5lib/constants.py | 0 .../pip/_vendor/html5lib/filters}/__init__.py | 0 .../pip/_vendor/html5lib/filters/_base.py | 0 .../filters/alphabeticalattributes.py | 0 .../html5lib/filters/inject_meta_charset.py | 0 .../pip/_vendor/html5lib/filters/lint.py | 0 .../_vendor/html5lib/filters/optionaltags.py | 0 .../pip/_vendor/html5lib/filters/sanitizer.py | 0 .../_vendor/html5lib/filters/whitespace.py | 0 .../pip/_vendor/html5lib/html5parser.py | 0 .../pip/_vendor/html5lib/ihatexml.py | 0 .../pip/_vendor/html5lib/inputstream.py | 0 .../pip/_vendor/html5lib/sanitizer.py | 0 .../_vendor/html5lib/serializer/__init__.py | 0 .../html5lib/serializer/htmlserializer.py | 0 .../pip/_vendor/html5lib/tokenizer.py | 0 .../html5lib/treeadapters}/__init__.py | 0 .../pip/_vendor/html5lib/treeadapters/sax.py | 0 .../_vendor/html5lib/treebuilders/__init__.py | 0 .../_vendor/html5lib/treebuilders/_base.py | 0 .../pip/_vendor/html5lib/treebuilders/dom.py | 0 .../_vendor/html5lib/treebuilders/etree.py | 0 .../html5lib/treebuilders/etree_lxml.py | 0 .../_vendor/html5lib/treewalkers/__init__.py | 0 .../pip/_vendor/html5lib/treewalkers/_base.py | 0 .../pip/_vendor/html5lib/treewalkers/dom.py | 0 .../pip/_vendor/html5lib/treewalkers/etree.py | 0 .../html5lib/treewalkers/genshistream.py | 0 .../_vendor/html5lib/treewalkers/lxmletree.py | 0 .../_vendor/html5lib/treewalkers/pulldom.py | 0 .../pip/_vendor/html5lib/trie/__init__.py | 0 .../pip/_vendor/html5lib/trie/_base.py | 0 .../pip/_vendor/html5lib/trie/datrie.py | 0 .../pip/_vendor/html5lib/trie/py.py | 0 .../pip/_vendor/html5lib/utils.py | 0 .../pip/_vendor/pkg_resources.py | 0 .../pip/_vendor/re-vendor.py | 0 .../pip/_vendor/requests/__init__.py | 0 .../pip/_vendor/requests/adapters.py | 0 .../pip/_vendor/requests/api.py | 0 .../pip/_vendor/requests/auth.py | 0 .../pip/_vendor/requests/cacert.pem | 0 .../pip/_vendor/requests/certs.py | 0 .../pip/_vendor/requests/compat.py | 0 .../pip/_vendor/requests/cookies.py | 0 .../pip/_vendor/requests/exceptions.py | 0 .../pip/_vendor/requests/hooks.py | 0 .../pip/_vendor/requests/models.py | 0 .../pip/_vendor/requests/sessions.py | 0 .../pip/_vendor/requests/status_codes.py | 0 .../pip/_vendor/requests/structures.py | 0 .../pip/_vendor/requests/utils.py | 0 .../pip/_vendor/six.py | 0 .../pip/backwardcompat/__init__.py | 0 .../pip/basecommand.py | 0 .../pip/baseparser.py | 0 .../pip/cmdoptions.py | 0 .../pip/commands/__init__.py | 0 .../pip/commands/bundle.py | 0 .../pip/commands/completion.py | 0 .../pip/commands/freeze.py | 0 .../pip/commands/help.py | 0 .../pip/commands/install.py | 0 .../pip/commands/list.py | 0 .../pip/commands/search.py | 0 .../pip/commands/show.py | 0 .../pip/commands/uninstall.py | 0 .../pip/commands/unzip.py | 0 .../pip/commands/wheel.py | 0 .../pip/commands/zip.py | 0 .../pip/download.py | 0 .../pip/exceptions.py | 0 .../site-packages => thirdparty}/pip/index.py | 0 .../pip/locations.py | 0 .../site-packages => thirdparty}/pip/log.py | 0 .../pip/pep425tags.py | 0 .../site-packages => thirdparty}/pip/req.py | 0 .../pip/runner.py | 0 .../pip/status_codes.py | 0 .../site-packages => thirdparty}/pip/util.py | 0 .../pip/vcs/__init__.py | 0 .../pip/vcs/bazaar.py | 0 .../pip/vcs/git.py | 0 .../pip/vcs/mercurial.py | 0 .../pip/vcs/subversion.py | 0 .../site-packages => thirdparty}/pip/wheel.py | 0 .../pkg_resources.py | 0 .../requests-2.2.1.dist-info/DESCRIPTION.rst | 887 +++ .../requests-2.2.1.dist-info/METADATA | 896 +++ .../requests-2.2.1.dist-info}/RECORD | 158 +- .../requests-2.2.1.dist-info}/WHEEL | 0 .../requests-2.2.1.dist-info/pydist.json | 1 + .../requests-2.2.1.dist-info}/top_level.txt | 0 .../requests/__init__.py | 4 +- .../requests/adapters.py | 24 +- .../requests/api.py | 2 +- .../requests/auth.py | 3 + .../requests/cacert.pem | 0 .../requests/certs.py | 0 .../requests/compat.py | 0 .../requests/cookies.py | 0 .../requests/exceptions.py | 17 +- .../requests/hooks.py | 0 .../requests/models.py | 70 +- .../requests/sessions.py | 134 +- .../requests/status_codes.py | 0 .../requests/structures.py | 3 +- .../requests/utils.py | 50 +- .../DESCRIPTION.rst | 0 .../setuptools-5.4.1.dist-info/METADATA | 0 .../setuptools-5.4.1.dist-info/RECORD | 0 .../setuptools-5.4.1.dist-info/WHEEL | 0 .../dependency_links.txt | 0 .../entry_points.txt | 0 .../setuptools-5.4.1.dist-info/pydist.json | 0 .../setuptools-5.4.1.dist-info/top_level.txt | 0 .../setuptools-5.4.1.dist-info/zip-safe | 0 .../setuptools/__init__.py | 0 .../setuptools/archive_util.py | 0 .../setuptools/command/__init__.py | 0 .../setuptools/command/alias.py | 0 .../setuptools/command/bdist_egg.py | 0 .../setuptools/command/bdist_rpm.py | 0 .../setuptools/command/bdist_wininst.py | 0 .../setuptools/command/build_ext.py | 0 .../setuptools/command/build_py.py | 0 .../setuptools/command/develop.py | 0 .../setuptools/command/easy_install.py | 0 .../setuptools/command/egg_info.py | 0 .../setuptools/command/install.py | 0 .../setuptools/command/install_egg_info.py | 0 .../setuptools/command/install_lib.py | 0 .../setuptools/command/install_scripts.py | 0 .../setuptools/command/register.py | 0 .../setuptools/command/rotate.py | 0 .../setuptools/command/saveopts.py | 0 .../setuptools/command/sdist.py | 0 .../setuptools/command/setopt.py | 0 .../setuptools/command/test.py | 0 .../setuptools/command/upload_docs.py | 0 .../setuptools/compat.py | 0 .../setuptools/depends.py | 0 .../setuptools/dist.py | 0 .../setuptools/extension.py | 0 .../setuptools/lib2to3_ex.py | 0 .../setuptools/package_index.py | 0 .../setuptools/py26compat.py | 0 .../setuptools/py27compat.py | 0 .../setuptools/py31compat.py | 0 .../setuptools/sandbox.py | 0 .../setuptools/script (dev).tmpl | 0 .../setuptools/script.tmpl | 0 .../setuptools/site-patch.py | 0 .../setuptools/ssl_support.py | 0 .../setuptools/svn_utils.py | 0 .../setuptools/unicode_utils.py | 0 .../setuptools/version.py | 0 PythonHome/{Lib => thirdparty}/wox.py | 8 + .../UserSettings/UserSettingStorage.cs | 27 +- .../ThirdpartyPluginIndicator.cs | 4 +- Wox.Plugin/HttpProxy.cs | 10 - Wox.Plugin/IHttpProxy.cs | 11 + Wox.Plugin/PluginInitContext.cs | 2 +- Wox.Plugin/Wox.Plugin.csproj | 2 +- Wox/App.config | 4 + Wox/{ => Helper}/DispatcherExtensions.cs | 0 Wox/Helper/ErrorReporting/ErrorReporting.cs | 32 +- Wox/Helper/HttpProxy.cs | 44 + Wox/Helper/WoxPythonException.cs | 5 +- Wox/JsonRPC/JsonPRCModel.cs | 68 +- Wox/PluginLoader/BasePlugin.cs | 51 +- Wox/PluginLoader/Plugins.cs | 2 + Wox/PluginLoader/PythonPlugin.cs | 48 +- Wox/SettingWindow.xaml | 13 +- Wox/SettingWindow.xaml.cs | 119 + Wox/Wox.csproj | 3 +- 1022 files changed, 2670 insertions(+), 246394 deletions(-) delete mode 100644 PythonHome/Lib/BaseHTTPServer.py delete mode 100644 PythonHome/Lib/Bastion.py delete mode 100644 PythonHome/Lib/CGIHTTPServer.py delete mode 100644 PythonHome/Lib/ConfigParser.py delete mode 100644 PythonHome/Lib/Cookie.py delete mode 100644 PythonHome/Lib/Cookie.pyc delete mode 100644 PythonHome/Lib/DocXMLRPCServer.py delete mode 100644 PythonHome/Lib/HTMLParser.py delete mode 100644 PythonHome/Lib/HTMLParser.pyc delete mode 100644 PythonHome/Lib/MimeWriter.py delete mode 100644 PythonHome/Lib/Queue.py delete mode 100644 PythonHome/Lib/Queue.pyc delete mode 100644 PythonHome/Lib/SimpleHTTPServer.py delete mode 100644 PythonHome/Lib/SimpleXMLRPCServer.py delete mode 100644 PythonHome/Lib/SocketServer.py delete mode 100644 PythonHome/Lib/StringIO.py delete mode 100644 PythonHome/Lib/StringIO.pyc delete mode 100644 PythonHome/Lib/UserDict.py delete mode 100644 PythonHome/Lib/UserList.py delete mode 100644 PythonHome/Lib/UserString.py delete mode 100644 PythonHome/Lib/_LWPCookieJar.py delete mode 100644 PythonHome/Lib/_LWPCookieJar.pyc delete mode 100644 PythonHome/Lib/_MozillaCookieJar.py delete mode 100644 PythonHome/Lib/_MozillaCookieJar.pyc delete mode 100644 PythonHome/Lib/__future__.py delete mode 100644 PythonHome/Lib/__phello__.foo.py delete mode 100644 PythonHome/Lib/_abcoll.py delete mode 100644 PythonHome/Lib/_osx_support.py delete mode 100644 PythonHome/Lib/_pyio.py delete mode 100644 PythonHome/Lib/_strptime.py delete mode 100644 PythonHome/Lib/_threading_local.py delete mode 100644 PythonHome/Lib/_weakrefset.py delete mode 100644 PythonHome/Lib/abc.py delete mode 100644 PythonHome/Lib/aifc.py delete mode 100644 PythonHome/Lib/antigravity.py delete mode 100644 PythonHome/Lib/anydbm.py delete mode 100644 PythonHome/Lib/argparse.py delete mode 100644 PythonHome/Lib/ast.py delete mode 100644 PythonHome/Lib/asynchat.py delete mode 100644 PythonHome/Lib/asyncore.py delete mode 100644 PythonHome/Lib/atexit.py delete mode 100644 PythonHome/Lib/atexit.pyc delete mode 100644 PythonHome/Lib/audiodev.py delete mode 100644 PythonHome/Lib/base64.py delete mode 100644 PythonHome/Lib/base64.pyc delete mode 100644 PythonHome/Lib/bdb.py delete mode 100644 PythonHome/Lib/binhex.py delete mode 100644 PythonHome/Lib/bisect.py delete mode 100644 PythonHome/Lib/bisect.pyc delete mode 100644 PythonHome/Lib/bsddb/__init__.py delete mode 100644 PythonHome/Lib/bsddb/db.py delete mode 100644 PythonHome/Lib/bsddb/dbobj.py delete mode 100644 PythonHome/Lib/bsddb/dbrecio.py delete mode 100644 PythonHome/Lib/bsddb/dbshelve.py delete mode 100644 PythonHome/Lib/bsddb/dbtables.py delete mode 100644 PythonHome/Lib/bsddb/dbutils.py delete mode 100644 PythonHome/Lib/cProfile.py delete mode 100644 PythonHome/Lib/calendar.py delete mode 100644 PythonHome/Lib/calendar.pyc delete mode 100644 PythonHome/Lib/cgi.py delete mode 100644 PythonHome/Lib/cgi.pyc delete mode 100644 PythonHome/Lib/cgitb.py delete mode 100644 PythonHome/Lib/chunk.py delete mode 100644 PythonHome/Lib/cmd.py delete mode 100644 PythonHome/Lib/code.py delete mode 100644 PythonHome/Lib/codecs.py delete mode 100644 PythonHome/Lib/codeop.py delete mode 100644 PythonHome/Lib/collections.py delete mode 100644 PythonHome/Lib/colorsys.py delete mode 100644 PythonHome/Lib/commands.py delete mode 100644 PythonHome/Lib/compileall.py delete mode 100644 PythonHome/Lib/compiler/__init__.py delete mode 100644 PythonHome/Lib/compiler/ast.py delete mode 100644 PythonHome/Lib/compiler/consts.py delete mode 100644 PythonHome/Lib/compiler/future.py delete mode 100644 PythonHome/Lib/compiler/misc.py delete mode 100644 PythonHome/Lib/compiler/pyassem.py delete mode 100644 PythonHome/Lib/compiler/symbols.py delete mode 100644 PythonHome/Lib/compiler/syntax.py delete mode 100644 PythonHome/Lib/compiler/transformer.py delete mode 100644 PythonHome/Lib/compiler/visitor.py delete mode 100644 PythonHome/Lib/contextlib.py delete mode 100644 PythonHome/Lib/cookielib.py delete mode 100644 PythonHome/Lib/cookielib.pyc delete mode 100644 PythonHome/Lib/copy.py delete mode 100644 PythonHome/Lib/copy_reg.py delete mode 100644 PythonHome/Lib/csv.py delete mode 100644 PythonHome/Lib/ctypes/__init__.py delete mode 100644 PythonHome/Lib/ctypes/__init__.pyc delete mode 100644 PythonHome/Lib/ctypes/_endian.py delete mode 100644 PythonHome/Lib/ctypes/_endian.pyc delete mode 100644 PythonHome/Lib/ctypes/macholib/__init__.py delete mode 100644 PythonHome/Lib/ctypes/macholib/dyld.py delete mode 100644 PythonHome/Lib/ctypes/macholib/dylib.py delete mode 100644 PythonHome/Lib/ctypes/macholib/framework.py delete mode 100644 PythonHome/Lib/ctypes/util.py delete mode 100644 PythonHome/Lib/ctypes/util.pyc delete mode 100644 PythonHome/Lib/ctypes/wintypes.py delete mode 100644 PythonHome/Lib/curses/__init__.py delete mode 100644 PythonHome/Lib/curses/ascii.py delete mode 100644 PythonHome/Lib/curses/has_key.py delete mode 100644 PythonHome/Lib/curses/panel.py delete mode 100644 PythonHome/Lib/curses/textpad.py delete mode 100644 PythonHome/Lib/curses/wrapper.py delete mode 100644 PythonHome/Lib/dbhash.py delete mode 100644 PythonHome/Lib/decimal.py delete mode 100644 PythonHome/Lib/difflib.py delete mode 100644 PythonHome/Lib/dircache.py delete mode 100644 PythonHome/Lib/dis.py delete mode 100644 PythonHome/Lib/distutils/__init__.py delete mode 100644 PythonHome/Lib/distutils/archive_util.py delete mode 100644 PythonHome/Lib/distutils/bcppcompiler.py delete mode 100644 PythonHome/Lib/distutils/ccompiler.py delete mode 100644 PythonHome/Lib/distutils/cmd.py delete mode 100644 PythonHome/Lib/distutils/command/__init__.py delete mode 100644 PythonHome/Lib/distutils/command/bdist.py delete mode 100644 PythonHome/Lib/distutils/command/bdist_dumb.py delete mode 100644 PythonHome/Lib/distutils/command/bdist_msi.py delete mode 100644 PythonHome/Lib/distutils/command/bdist_rpm.py delete mode 100644 PythonHome/Lib/distutils/command/bdist_wininst.py delete mode 100644 PythonHome/Lib/distutils/command/build.py delete mode 100644 PythonHome/Lib/distutils/command/build_clib.py delete mode 100644 PythonHome/Lib/distutils/command/build_ext.py delete mode 100644 PythonHome/Lib/distutils/command/build_py.py delete mode 100644 PythonHome/Lib/distutils/command/build_scripts.py delete mode 100644 PythonHome/Lib/distutils/command/check.py delete mode 100644 PythonHome/Lib/distutils/command/clean.py delete mode 100644 PythonHome/Lib/distutils/command/config.py delete mode 100644 PythonHome/Lib/distutils/command/install.py delete mode 100644 PythonHome/Lib/distutils/command/install_data.py delete mode 100644 PythonHome/Lib/distutils/command/install_egg_info.py delete mode 100644 PythonHome/Lib/distutils/command/install_headers.py delete mode 100644 PythonHome/Lib/distutils/command/install_lib.py delete mode 100644 PythonHome/Lib/distutils/command/install_scripts.py delete mode 100644 PythonHome/Lib/distutils/command/register.py delete mode 100644 PythonHome/Lib/distutils/command/sdist.py delete mode 100644 PythonHome/Lib/distutils/command/upload.py delete mode 100644 PythonHome/Lib/distutils/command/wininst-6.0.exe delete mode 100644 PythonHome/Lib/distutils/command/wininst-7.1.exe delete mode 100644 PythonHome/Lib/distutils/command/wininst-8.0.exe delete mode 100644 PythonHome/Lib/distutils/command/wininst-9.0-amd64.exe delete mode 100644 PythonHome/Lib/distutils/command/wininst-9.0.exe delete mode 100644 PythonHome/Lib/distutils/config.py delete mode 100644 PythonHome/Lib/distutils/core.py delete mode 100644 PythonHome/Lib/distutils/cygwinccompiler.py delete mode 100644 PythonHome/Lib/distutils/debug.py delete mode 100644 PythonHome/Lib/distutils/dep_util.py delete mode 100644 PythonHome/Lib/distutils/dir_util.py delete mode 100644 PythonHome/Lib/distutils/dist.py delete mode 100644 PythonHome/Lib/distutils/emxccompiler.py delete mode 100644 PythonHome/Lib/distutils/errors.py delete mode 100644 PythonHome/Lib/distutils/extension.py delete mode 100644 PythonHome/Lib/distutils/fancy_getopt.py delete mode 100644 PythonHome/Lib/distutils/file_util.py delete mode 100644 PythonHome/Lib/distutils/filelist.py delete mode 100644 PythonHome/Lib/distutils/log.py delete mode 100644 PythonHome/Lib/distutils/msvc9compiler.py delete mode 100644 PythonHome/Lib/distutils/msvccompiler.py delete mode 100644 PythonHome/Lib/distutils/spawn.py delete mode 100644 PythonHome/Lib/distutils/sysconfig.py delete mode 100644 PythonHome/Lib/distutils/text_file.py delete mode 100644 PythonHome/Lib/distutils/unixccompiler.py delete mode 100644 PythonHome/Lib/distutils/util.py delete mode 100644 PythonHome/Lib/distutils/version.py delete mode 100644 PythonHome/Lib/distutils/versionpredicate.py delete mode 100644 PythonHome/Lib/doctest.py delete mode 100644 PythonHome/Lib/dumbdbm.py delete mode 100644 PythonHome/Lib/dummy_thread.py delete mode 100644 PythonHome/Lib/dummy_threading.py delete mode 100644 PythonHome/Lib/email/__init__.py delete mode 100644 PythonHome/Lib/email/__init__.pyc delete mode 100644 PythonHome/Lib/email/_parseaddr.py delete mode 100644 PythonHome/Lib/email/_parseaddr.pyc delete mode 100644 PythonHome/Lib/email/base64mime.py delete mode 100644 PythonHome/Lib/email/charset.py delete mode 100644 PythonHome/Lib/email/encoders.py delete mode 100644 PythonHome/Lib/email/encoders.pyc delete mode 100644 PythonHome/Lib/email/errors.py delete mode 100644 PythonHome/Lib/email/feedparser.py delete mode 100644 PythonHome/Lib/email/generator.py delete mode 100644 PythonHome/Lib/email/header.py delete mode 100644 PythonHome/Lib/email/iterators.py delete mode 100644 PythonHome/Lib/email/message.py delete mode 100644 PythonHome/Lib/email/mime/__init__.pyc delete mode 100644 PythonHome/Lib/email/mime/application.py delete mode 100644 PythonHome/Lib/email/mime/audio.py delete mode 100644 PythonHome/Lib/email/mime/base.py delete mode 100644 PythonHome/Lib/email/mime/image.py delete mode 100644 PythonHome/Lib/email/mime/message.py delete mode 100644 PythonHome/Lib/email/mime/multipart.py delete mode 100644 PythonHome/Lib/email/mime/nonmultipart.py delete mode 100644 PythonHome/Lib/email/mime/text.py delete mode 100644 PythonHome/Lib/email/parser.py delete mode 100644 PythonHome/Lib/email/quoprimime.py delete mode 100644 PythonHome/Lib/email/utils.py delete mode 100644 PythonHome/Lib/email/utils.pyc delete mode 100644 PythonHome/Lib/encodings/__init__.py delete mode 100644 PythonHome/Lib/encodings/aliases.py delete mode 100644 PythonHome/Lib/encodings/ascii.py delete mode 100644 PythonHome/Lib/encodings/ascii.pyc delete mode 100644 PythonHome/Lib/encodings/base64_codec.py delete mode 100644 PythonHome/Lib/encodings/big5.py delete mode 100644 PythonHome/Lib/encodings/big5hkscs.py delete mode 100644 PythonHome/Lib/encodings/bz2_codec.py delete mode 100644 PythonHome/Lib/encodings/charmap.py delete mode 100644 PythonHome/Lib/encodings/cp037.py delete mode 100644 PythonHome/Lib/encodings/cp1006.py delete mode 100644 PythonHome/Lib/encodings/cp1026.py delete mode 100644 PythonHome/Lib/encodings/cp1140.py delete mode 100644 PythonHome/Lib/encodings/cp1250.py delete mode 100644 PythonHome/Lib/encodings/cp1251.py delete mode 100644 PythonHome/Lib/encodings/cp1252.py delete mode 100644 PythonHome/Lib/encodings/cp1253.py delete mode 100644 PythonHome/Lib/encodings/cp1254.py delete mode 100644 PythonHome/Lib/encodings/cp1255.py delete mode 100644 PythonHome/Lib/encodings/cp1256.py delete mode 100644 PythonHome/Lib/encodings/cp1257.py delete mode 100644 PythonHome/Lib/encodings/cp1258.py delete mode 100644 PythonHome/Lib/encodings/cp424.py delete mode 100644 PythonHome/Lib/encodings/cp437.py delete mode 100644 PythonHome/Lib/encodings/cp500.py delete mode 100644 PythonHome/Lib/encodings/cp720.py delete mode 100644 PythonHome/Lib/encodings/cp737.py delete mode 100644 PythonHome/Lib/encodings/cp775.py delete mode 100644 PythonHome/Lib/encodings/cp850.py delete mode 100644 PythonHome/Lib/encodings/cp852.py delete mode 100644 PythonHome/Lib/encodings/cp855.py delete mode 100644 PythonHome/Lib/encodings/cp856.py delete mode 100644 PythonHome/Lib/encodings/cp857.py delete mode 100644 PythonHome/Lib/encodings/cp858.py delete mode 100644 PythonHome/Lib/encodings/cp860.py delete mode 100644 PythonHome/Lib/encodings/cp861.py delete mode 100644 PythonHome/Lib/encodings/cp862.py delete mode 100644 PythonHome/Lib/encodings/cp863.py delete mode 100644 PythonHome/Lib/encodings/cp864.py delete mode 100644 PythonHome/Lib/encodings/cp865.py delete mode 100644 PythonHome/Lib/encodings/cp866.py delete mode 100644 PythonHome/Lib/encodings/cp869.py delete mode 100644 PythonHome/Lib/encodings/cp874.py delete mode 100644 PythonHome/Lib/encodings/cp875.py delete mode 100644 PythonHome/Lib/encodings/cp932.py delete mode 100644 PythonHome/Lib/encodings/cp949.py delete mode 100644 PythonHome/Lib/encodings/cp950.py delete mode 100644 PythonHome/Lib/encodings/euc_jis_2004.py delete mode 100644 PythonHome/Lib/encodings/euc_jisx0213.py delete mode 100644 PythonHome/Lib/encodings/euc_jp.py delete mode 100644 PythonHome/Lib/encodings/euc_kr.py delete mode 100644 PythonHome/Lib/encodings/gb18030.py delete mode 100644 PythonHome/Lib/encodings/gb2312.py delete mode 100644 PythonHome/Lib/encodings/gbk.py delete mode 100644 PythonHome/Lib/encodings/hex_codec.py delete mode 100644 PythonHome/Lib/encodings/hp_roman8.py delete mode 100644 PythonHome/Lib/encodings/hz.py delete mode 100644 PythonHome/Lib/encodings/idna.py delete mode 100644 PythonHome/Lib/encodings/idna.pyc delete mode 100644 PythonHome/Lib/encodings/iso2022_jp.py delete mode 100644 PythonHome/Lib/encodings/iso2022_jp_1.py delete mode 100644 PythonHome/Lib/encodings/iso2022_jp_2.py delete mode 100644 PythonHome/Lib/encodings/iso2022_jp_2004.py delete mode 100644 PythonHome/Lib/encodings/iso2022_jp_3.py delete mode 100644 PythonHome/Lib/encodings/iso2022_jp_ext.py delete mode 100644 PythonHome/Lib/encodings/iso2022_kr.py delete mode 100644 PythonHome/Lib/encodings/iso8859_1.py delete mode 100644 PythonHome/Lib/encodings/iso8859_10.py delete mode 100644 PythonHome/Lib/encodings/iso8859_11.py delete mode 100644 PythonHome/Lib/encodings/iso8859_13.py delete mode 100644 PythonHome/Lib/encodings/iso8859_14.py delete mode 100644 PythonHome/Lib/encodings/iso8859_15.py delete mode 100644 PythonHome/Lib/encodings/iso8859_16.py delete mode 100644 PythonHome/Lib/encodings/iso8859_2.py delete mode 100644 PythonHome/Lib/encodings/iso8859_3.py delete mode 100644 PythonHome/Lib/encodings/iso8859_4.py delete mode 100644 PythonHome/Lib/encodings/iso8859_5.py delete mode 100644 PythonHome/Lib/encodings/iso8859_6.py delete mode 100644 PythonHome/Lib/encodings/iso8859_7.py delete mode 100644 PythonHome/Lib/encodings/iso8859_8.py delete mode 100644 PythonHome/Lib/encodings/iso8859_9.py delete mode 100644 PythonHome/Lib/encodings/johab.py delete mode 100644 PythonHome/Lib/encodings/koi8_r.py delete mode 100644 PythonHome/Lib/encodings/koi8_u.py delete mode 100644 PythonHome/Lib/encodings/latin_1.py delete mode 100644 PythonHome/Lib/encodings/mac_arabic.py delete mode 100644 PythonHome/Lib/encodings/mac_centeuro.py delete mode 100644 PythonHome/Lib/encodings/mac_croatian.py delete mode 100644 PythonHome/Lib/encodings/mac_cyrillic.py delete mode 100644 PythonHome/Lib/encodings/mac_farsi.py delete mode 100644 PythonHome/Lib/encodings/mac_greek.py delete mode 100644 PythonHome/Lib/encodings/mac_iceland.py delete mode 100644 PythonHome/Lib/encodings/mac_latin2.py delete mode 100644 PythonHome/Lib/encodings/mac_roman.py delete mode 100644 PythonHome/Lib/encodings/mac_romanian.py delete mode 100644 PythonHome/Lib/encodings/mac_turkish.py delete mode 100644 PythonHome/Lib/encodings/mbcs.py delete mode 100644 PythonHome/Lib/encodings/palmos.py delete mode 100644 PythonHome/Lib/encodings/ptcp154.py delete mode 100644 PythonHome/Lib/encodings/punycode.py delete mode 100644 PythonHome/Lib/encodings/quopri_codec.py delete mode 100644 PythonHome/Lib/encodings/raw_unicode_escape.py delete mode 100644 PythonHome/Lib/encodings/rot_13.py delete mode 100644 PythonHome/Lib/encodings/shift_jis.py delete mode 100644 PythonHome/Lib/encodings/shift_jis_2004.py delete mode 100644 PythonHome/Lib/encodings/shift_jisx0213.py delete mode 100644 PythonHome/Lib/encodings/string_escape.py delete mode 100644 PythonHome/Lib/encodings/tis_620.py delete mode 100644 PythonHome/Lib/encodings/undefined.py delete mode 100644 PythonHome/Lib/encodings/unicode_escape.py delete mode 100644 PythonHome/Lib/encodings/unicode_internal.py delete mode 100644 PythonHome/Lib/encodings/utf_16.py delete mode 100644 PythonHome/Lib/encodings/utf_16_be.py delete mode 100644 PythonHome/Lib/encodings/utf_16_le.py delete mode 100644 PythonHome/Lib/encodings/utf_32.py delete mode 100644 PythonHome/Lib/encodings/utf_32_be.py delete mode 100644 PythonHome/Lib/encodings/utf_32_le.py delete mode 100644 PythonHome/Lib/encodings/utf_7.py delete mode 100644 PythonHome/Lib/encodings/utf_8.py delete mode 100644 PythonHome/Lib/encodings/utf_8.pyc delete mode 100644 PythonHome/Lib/encodings/utf_8_sig.py delete mode 100644 PythonHome/Lib/encodings/uu_codec.py delete mode 100644 PythonHome/Lib/encodings/zlib_codec.py delete mode 100644 PythonHome/Lib/filecmp.py delete mode 100644 PythonHome/Lib/fileinput.py delete mode 100644 PythonHome/Lib/fnmatch.py delete mode 100644 PythonHome/Lib/formatter.py delete mode 100644 PythonHome/Lib/fpformat.py delete mode 100644 PythonHome/Lib/fractions.py delete mode 100644 PythonHome/Lib/ftplib.py delete mode 100644 PythonHome/Lib/functools.py delete mode 100644 PythonHome/Lib/genericpath.py delete mode 100644 PythonHome/Lib/getopt.py delete mode 100644 PythonHome/Lib/getpass.py delete mode 100644 PythonHome/Lib/gettext.py delete mode 100644 PythonHome/Lib/glob.py delete mode 100644 PythonHome/Lib/gzip.py delete mode 100644 PythonHome/Lib/hashlib.py delete mode 100644 PythonHome/Lib/heapq.py delete mode 100644 PythonHome/Lib/hmac.py delete mode 100644 PythonHome/Lib/hotshot/__init__.py delete mode 100644 PythonHome/Lib/hotshot/log.py delete mode 100644 PythonHome/Lib/hotshot/stats.py delete mode 100644 PythonHome/Lib/hotshot/stones.py delete mode 100644 PythonHome/Lib/htmlentitydefs.py delete mode 100644 PythonHome/Lib/htmlentitydefs.pyc delete mode 100644 PythonHome/Lib/htmllib.py delete mode 100644 PythonHome/Lib/httplib.py delete mode 100644 PythonHome/Lib/httplib.pyc delete mode 100644 PythonHome/Lib/idlelib/AutoComplete.py delete mode 100644 PythonHome/Lib/idlelib/AutoCompleteWindow.py delete mode 100644 PythonHome/Lib/idlelib/AutoExpand.py delete mode 100644 PythonHome/Lib/idlelib/Bindings.py delete mode 100644 PythonHome/Lib/idlelib/CREDITS.txt delete mode 100644 PythonHome/Lib/idlelib/CallTipWindow.py delete mode 100644 PythonHome/Lib/idlelib/CallTips.py delete mode 100644 PythonHome/Lib/idlelib/ClassBrowser.py delete mode 100644 PythonHome/Lib/idlelib/CodeContext.py delete mode 100644 PythonHome/Lib/idlelib/ColorDelegator.py delete mode 100644 PythonHome/Lib/idlelib/Debugger.py delete mode 100644 PythonHome/Lib/idlelib/Delegator.py delete mode 100644 PythonHome/Lib/idlelib/EditorWindow.py delete mode 100644 PythonHome/Lib/idlelib/FileList.py delete mode 100644 PythonHome/Lib/idlelib/FormatParagraph.py delete mode 100644 PythonHome/Lib/idlelib/GrepDialog.py delete mode 100644 PythonHome/Lib/idlelib/HISTORY.txt delete mode 100644 PythonHome/Lib/idlelib/HyperParser.py delete mode 100644 PythonHome/Lib/idlelib/IOBinding.py delete mode 100644 PythonHome/Lib/idlelib/Icons/folder.gif delete mode 100644 PythonHome/Lib/idlelib/Icons/idle.icns delete mode 100644 PythonHome/Lib/idlelib/Icons/idle.ico delete mode 100644 PythonHome/Lib/idlelib/Icons/idle_16.gif delete mode 100644 PythonHome/Lib/idlelib/Icons/idle_32.gif delete mode 100644 PythonHome/Lib/idlelib/Icons/idle_48.gif delete mode 100644 PythonHome/Lib/idlelib/Icons/minusnode.gif delete mode 100644 PythonHome/Lib/idlelib/Icons/openfolder.gif delete mode 100644 PythonHome/Lib/idlelib/Icons/plusnode.gif delete mode 100644 PythonHome/Lib/idlelib/Icons/python.gif delete mode 100644 PythonHome/Lib/idlelib/Icons/tk.gif delete mode 100644 PythonHome/Lib/idlelib/IdleHistory.py delete mode 100644 PythonHome/Lib/idlelib/MultiCall.py delete mode 100644 PythonHome/Lib/idlelib/MultiStatusBar.py delete mode 100644 PythonHome/Lib/idlelib/NEWS.txt delete mode 100644 PythonHome/Lib/idlelib/ObjectBrowser.py delete mode 100644 PythonHome/Lib/idlelib/OutputWindow.py delete mode 100644 PythonHome/Lib/idlelib/ParenMatch.py delete mode 100644 PythonHome/Lib/idlelib/PathBrowser.py delete mode 100644 PythonHome/Lib/idlelib/Percolator.py delete mode 100644 PythonHome/Lib/idlelib/PyParse.py delete mode 100644 PythonHome/Lib/idlelib/PyShell.py delete mode 100644 PythonHome/Lib/idlelib/README.txt delete mode 100644 PythonHome/Lib/idlelib/RemoteDebugger.py delete mode 100644 PythonHome/Lib/idlelib/RemoteObjectBrowser.py delete mode 100644 PythonHome/Lib/idlelib/ReplaceDialog.py delete mode 100644 PythonHome/Lib/idlelib/RstripExtension.py delete mode 100644 PythonHome/Lib/idlelib/ScriptBinding.py delete mode 100644 PythonHome/Lib/idlelib/ScrolledList.py delete mode 100644 PythonHome/Lib/idlelib/SearchDialog.py delete mode 100644 PythonHome/Lib/idlelib/SearchDialogBase.py delete mode 100644 PythonHome/Lib/idlelib/SearchEngine.py delete mode 100644 PythonHome/Lib/idlelib/StackViewer.py delete mode 100644 PythonHome/Lib/idlelib/TODO.txt delete mode 100644 PythonHome/Lib/idlelib/ToolTip.py delete mode 100644 PythonHome/Lib/idlelib/TreeWidget.py delete mode 100644 PythonHome/Lib/idlelib/UndoDelegator.py delete mode 100644 PythonHome/Lib/idlelib/WidgetRedirector.py delete mode 100644 PythonHome/Lib/idlelib/WindowList.py delete mode 100644 PythonHome/Lib/idlelib/ZoomHeight.py delete mode 100644 PythonHome/Lib/idlelib/__init__.py delete mode 100644 PythonHome/Lib/idlelib/aboutDialog.py delete mode 100644 PythonHome/Lib/idlelib/config-extensions.def delete mode 100644 PythonHome/Lib/idlelib/config-highlight.def delete mode 100644 PythonHome/Lib/idlelib/config-keys.def delete mode 100644 PythonHome/Lib/idlelib/config-main.def delete mode 100644 PythonHome/Lib/idlelib/configDialog.py delete mode 100644 PythonHome/Lib/idlelib/configHandler.py delete mode 100644 PythonHome/Lib/idlelib/configHelpSourceEdit.py delete mode 100644 PythonHome/Lib/idlelib/configSectionNameDialog.py delete mode 100644 PythonHome/Lib/idlelib/dynOptionMenuWidget.py delete mode 100644 PythonHome/Lib/idlelib/extend.txt delete mode 100644 PythonHome/Lib/idlelib/help.txt delete mode 100644 PythonHome/Lib/idlelib/idle.bat delete mode 100644 PythonHome/Lib/idlelib/idle.py delete mode 100644 PythonHome/Lib/idlelib/idle.pyw delete mode 100644 PythonHome/Lib/idlelib/idlever.py delete mode 100644 PythonHome/Lib/idlelib/keybindingDialog.py delete mode 100644 PythonHome/Lib/idlelib/macosxSupport.py delete mode 100644 PythonHome/Lib/idlelib/rpc.py delete mode 100644 PythonHome/Lib/idlelib/run.py delete mode 100644 PythonHome/Lib/idlelib/tabbedpages.py delete mode 100644 PythonHome/Lib/idlelib/testcode.py delete mode 100644 PythonHome/Lib/idlelib/textView.py delete mode 100644 PythonHome/Lib/ihooks.py delete mode 100644 PythonHome/Lib/imaplib.py delete mode 100644 PythonHome/Lib/imghdr.py delete mode 100644 PythonHome/Lib/importlib/__init__.py delete mode 100644 PythonHome/Lib/imputil.py delete mode 100644 PythonHome/Lib/inspect.py delete mode 100644 PythonHome/Lib/io.py delete mode 100644 PythonHome/Lib/json/__init__.py delete mode 100644 PythonHome/Lib/json/decoder.py delete mode 100644 PythonHome/Lib/json/encoder.py delete mode 100644 PythonHome/Lib/json/scanner.py delete mode 100644 PythonHome/Lib/json/tool.py delete mode 100644 PythonHome/Lib/keyword.py delete mode 100644 PythonHome/Lib/lib-tk/Canvas.py delete mode 100644 PythonHome/Lib/lib-tk/Dialog.py delete mode 100644 PythonHome/Lib/lib-tk/FileDialog.py delete mode 100644 PythonHome/Lib/lib-tk/FixTk.py delete mode 100644 PythonHome/Lib/lib-tk/ScrolledText.py delete mode 100644 PythonHome/Lib/lib-tk/SimpleDialog.py delete mode 100644 PythonHome/Lib/lib-tk/Tix.py delete mode 100644 PythonHome/Lib/lib-tk/Tkconstants.py delete mode 100644 PythonHome/Lib/lib-tk/Tkdnd.py delete mode 100644 PythonHome/Lib/lib-tk/Tkinter.py delete mode 100644 PythonHome/Lib/lib-tk/tkColorChooser.py delete mode 100644 PythonHome/Lib/lib-tk/tkCommonDialog.py delete mode 100644 PythonHome/Lib/lib-tk/tkFileDialog.py delete mode 100644 PythonHome/Lib/lib-tk/tkFont.py delete mode 100644 PythonHome/Lib/lib-tk/tkMessageBox.py delete mode 100644 PythonHome/Lib/lib-tk/tkSimpleDialog.py delete mode 100644 PythonHome/Lib/lib-tk/ttk.py delete mode 100644 PythonHome/Lib/lib-tk/turtle.py delete mode 100644 PythonHome/Lib/lib2to3/Grammar.txt delete mode 100644 PythonHome/Lib/lib2to3/PatternGrammar.txt delete mode 100644 PythonHome/Lib/lib2to3/__init__.py delete mode 100644 PythonHome/Lib/lib2to3/__main__.py delete mode 100644 PythonHome/Lib/lib2to3/btm_matcher.py delete mode 100644 PythonHome/Lib/lib2to3/btm_utils.py delete mode 100644 PythonHome/Lib/lib2to3/fixer_base.py delete mode 100644 PythonHome/Lib/lib2to3/fixer_util.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/__init__.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_apply.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_basestring.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_buffer.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_callable.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_dict.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_except.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_exec.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_execfile.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_exitfunc.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_filter.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_funcattrs.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_future.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_getcwdu.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_has_key.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_idioms.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_import.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_imports.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_imports2.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_input.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_intern.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_isinstance.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_itertools.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_itertools_imports.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_long.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_map.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_metaclass.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_methodattrs.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_ne.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_next.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_nonzero.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_numliterals.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_operator.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_paren.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_print.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_raise.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_raw_input.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_reduce.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_renames.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_repr.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_set_literal.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_standarderror.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_sys_exc.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_throw.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_tuple_params.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_types.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_unicode.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_urllib.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_ws_comma.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_xrange.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_xreadlines.py delete mode 100644 PythonHome/Lib/lib2to3/fixes/fix_zip.py delete mode 100644 PythonHome/Lib/lib2to3/main.py delete mode 100644 PythonHome/Lib/lib2to3/patcomp.py delete mode 100644 PythonHome/Lib/lib2to3/pgen2/__init__.py delete mode 100644 PythonHome/Lib/lib2to3/pgen2/conv.py delete mode 100644 PythonHome/Lib/lib2to3/pgen2/driver.py delete mode 100644 PythonHome/Lib/lib2to3/pgen2/grammar.py delete mode 100644 PythonHome/Lib/lib2to3/pgen2/literals.py delete mode 100644 PythonHome/Lib/lib2to3/pgen2/parse.py delete mode 100644 PythonHome/Lib/lib2to3/pgen2/pgen.py delete mode 100644 PythonHome/Lib/lib2to3/pgen2/token.py delete mode 100644 PythonHome/Lib/lib2to3/pgen2/tokenize.py delete mode 100644 PythonHome/Lib/lib2to3/pygram.py delete mode 100644 PythonHome/Lib/lib2to3/pytree.py delete mode 100644 PythonHome/Lib/lib2to3/refactor.py delete mode 100644 PythonHome/Lib/linecache.py delete mode 100644 PythonHome/Lib/locale.py delete mode 100644 PythonHome/Lib/logging/__init__.py delete mode 100644 PythonHome/Lib/logging/__init__.pyc delete mode 100644 PythonHome/Lib/logging/config.py delete mode 100644 PythonHome/Lib/logging/handlers.py delete mode 100644 PythonHome/Lib/macpath.py delete mode 100644 PythonHome/Lib/macurl2path.py delete mode 100644 PythonHome/Lib/mailbox.py delete mode 100644 PythonHome/Lib/mailcap.py delete mode 100644 PythonHome/Lib/markupbase.py delete mode 100644 PythonHome/Lib/markupbase.pyc delete mode 100644 PythonHome/Lib/md5.py delete mode 100644 PythonHome/Lib/mhlib.py delete mode 100644 PythonHome/Lib/mimetools.py delete mode 100644 PythonHome/Lib/mimetools.pyc delete mode 100644 PythonHome/Lib/mimetypes.py delete mode 100644 PythonHome/Lib/mimetypes.pyc delete mode 100644 PythonHome/Lib/mimify.py delete mode 100644 PythonHome/Lib/modulefinder.py delete mode 100644 PythonHome/Lib/msilib/__init__.py delete mode 100644 PythonHome/Lib/msilib/schema.py delete mode 100644 PythonHome/Lib/msilib/sequence.py delete mode 100644 PythonHome/Lib/msilib/text.py delete mode 100644 PythonHome/Lib/multifile.py delete mode 100644 PythonHome/Lib/multiprocessing/__init__.py delete mode 100644 PythonHome/Lib/multiprocessing/connection.py delete mode 100644 PythonHome/Lib/multiprocessing/dummy/__init__.py delete mode 100644 PythonHome/Lib/multiprocessing/dummy/connection.py delete mode 100644 PythonHome/Lib/multiprocessing/forking.py delete mode 100644 PythonHome/Lib/multiprocessing/heap.py delete mode 100644 PythonHome/Lib/multiprocessing/managers.py delete mode 100644 PythonHome/Lib/multiprocessing/pool.py delete mode 100644 PythonHome/Lib/multiprocessing/process.py delete mode 100644 PythonHome/Lib/multiprocessing/queues.py delete mode 100644 PythonHome/Lib/multiprocessing/reduction.py delete mode 100644 PythonHome/Lib/multiprocessing/sharedctypes.py delete mode 100644 PythonHome/Lib/multiprocessing/synchronize.py delete mode 100644 PythonHome/Lib/multiprocessing/util.py delete mode 100644 PythonHome/Lib/mutex.py delete mode 100644 PythonHome/Lib/netrc.py delete mode 100644 PythonHome/Lib/netrc.pyc delete mode 100644 PythonHome/Lib/new.py delete mode 100644 PythonHome/Lib/nntplib.py delete mode 100644 PythonHome/Lib/ntpath.py delete mode 100644 PythonHome/Lib/nturl2path.py delete mode 100644 PythonHome/Lib/nturl2path.pyc delete mode 100644 PythonHome/Lib/numbers.py delete mode 100644 PythonHome/Lib/opcode.py delete mode 100644 PythonHome/Lib/optparse.py delete mode 100644 PythonHome/Lib/os.py delete mode 100644 PythonHome/Lib/os2emxpath.py delete mode 100644 PythonHome/Lib/pdb.py delete mode 100644 PythonHome/Lib/pickle.py delete mode 100644 PythonHome/Lib/pickletools.py delete mode 100644 PythonHome/Lib/pipes.py delete mode 100644 PythonHome/Lib/pkgutil.py delete mode 100644 PythonHome/Lib/platform.py delete mode 100644 PythonHome/Lib/plistlib.py delete mode 100644 PythonHome/Lib/popen2.py delete mode 100644 PythonHome/Lib/poplib.py delete mode 100644 PythonHome/Lib/posixfile.py delete mode 100644 PythonHome/Lib/posixpath.py delete mode 100644 PythonHome/Lib/posixpath.pyc delete mode 100644 PythonHome/Lib/pprint.py delete mode 100644 PythonHome/Lib/profile.py delete mode 100644 PythonHome/Lib/pstats.py delete mode 100644 PythonHome/Lib/pty.py delete mode 100644 PythonHome/Lib/py_compile.py delete mode 100644 PythonHome/Lib/pydoc.py delete mode 100644 PythonHome/Lib/pydoc_data/topics.py delete mode 100644 PythonHome/Lib/quopri.py delete mode 100644 PythonHome/Lib/quopri.pyc delete mode 100644 PythonHome/Lib/random.py delete mode 100644 PythonHome/Lib/random.pyc delete mode 100644 PythonHome/Lib/re.py delete mode 100644 PythonHome/Lib/repr.py delete mode 100644 PythonHome/Lib/rexec.py delete mode 100644 PythonHome/Lib/rfc822.py delete mode 100644 PythonHome/Lib/rfc822.pyc delete mode 100644 PythonHome/Lib/rlcompleter.py delete mode 100644 PythonHome/Lib/robotparser.py delete mode 100644 PythonHome/Lib/runpy.py delete mode 100644 PythonHome/Lib/sched.py delete mode 100644 PythonHome/Lib/sets.py delete mode 100644 PythonHome/Lib/sgmllib.py delete mode 100644 PythonHome/Lib/sha.py delete mode 100644 PythonHome/Lib/shelve.py delete mode 100644 PythonHome/Lib/shlex.py delete mode 100644 PythonHome/Lib/shutil.py delete mode 100644 PythonHome/Lib/site-packages/bs4/__init__.pyc delete mode 100644 PythonHome/Lib/site-packages/bs4/builder/__init__.pyc delete mode 100644 PythonHome/Lib/site-packages/bs4/builder/_html5lib.pyc delete mode 100644 PythonHome/Lib/site-packages/bs4/builder/_htmlparser.pyc delete mode 100644 PythonHome/Lib/site-packages/bs4/builder/_lxml.pyc delete mode 100644 PythonHome/Lib/site-packages/bs4/dammit.pyc delete mode 100644 PythonHome/Lib/site-packages/bs4/element.pyc delete mode 100644 PythonHome/Lib/site-packages/pip/_vendor/distlib/t32.exe delete mode 100644 PythonHome/Lib/site-packages/pip/_vendor/distlib/t64.exe delete mode 100644 PythonHome/Lib/site-packages/pip/_vendor/distlib/w32.exe delete mode 100644 PythonHome/Lib/site-packages/pip/_vendor/distlib/w64.exe delete mode 100644 PythonHome/Lib/site-packages/pip/_vendor/html5lib/filters/__init__.py delete mode 100644 PythonHome/Lib/site-packages/pip/_vendor/html5lib/treeadapters/__init__.py delete mode 100644 PythonHome/Lib/site-packages/requests-2.3.0.dist-info/DESCRIPTION.rst delete mode 100644 PythonHome/Lib/site-packages/requests-2.3.0.dist-info/METADATA delete mode 100644 PythonHome/Lib/site-packages/requests-2.3.0.dist-info/pydist.json delete mode 100644 PythonHome/Lib/site-packages/requests/__init__.pyc delete mode 100644 PythonHome/Lib/site-packages/requests/adapters.pyc delete mode 100644 PythonHome/Lib/site-packages/requests/api.pyc delete mode 100644 PythonHome/Lib/site-packages/requests/auth.pyc delete mode 100644 PythonHome/Lib/site-packages/requests/certs.pyc delete mode 100644 PythonHome/Lib/site-packages/requests/compat.pyc delete mode 100644 PythonHome/Lib/site-packages/requests/cookies.pyc delete mode 100644 PythonHome/Lib/site-packages/requests/exceptions.pyc delete mode 100644 PythonHome/Lib/site-packages/requests/hooks.pyc delete mode 100644 PythonHome/Lib/site-packages/requests/models.pyc delete mode 100644 PythonHome/Lib/site-packages/requests/sessions.pyc delete mode 100644 PythonHome/Lib/site-packages/requests/status_codes.pyc delete mode 100644 PythonHome/Lib/site-packages/requests/structures.pyc delete mode 100644 PythonHome/Lib/site-packages/requests/utils.pyc delete mode 100644 PythonHome/Lib/site-packages/setuptools/cli-32.exe delete mode 100644 PythonHome/Lib/site-packages/setuptools/cli-64.exe delete mode 100644 PythonHome/Lib/site-packages/setuptools/cli-arm-32.exe delete mode 100644 PythonHome/Lib/site-packages/setuptools/cli.exe delete mode 100644 PythonHome/Lib/site-packages/setuptools/gui-32.exe delete mode 100644 PythonHome/Lib/site-packages/setuptools/gui-64.exe delete mode 100644 PythonHome/Lib/site-packages/setuptools/gui-arm-32.exe delete mode 100644 PythonHome/Lib/site-packages/setuptools/gui.exe delete mode 100644 PythonHome/Lib/site.py delete mode 100644 PythonHome/Lib/smtpd.py delete mode 100644 PythonHome/Lib/smtplib.py delete mode 100644 PythonHome/Lib/sndhdr.py delete mode 100644 PythonHome/Lib/socket.py delete mode 100644 PythonHome/Lib/sqlite3/__init__.py delete mode 100644 PythonHome/Lib/sqlite3/dbapi2.py delete mode 100644 PythonHome/Lib/sqlite3/dump.py delete mode 100644 PythonHome/Lib/sre.py delete mode 100644 PythonHome/Lib/sre_compile.py delete mode 100644 PythonHome/Lib/sre_constants.py delete mode 100644 PythonHome/Lib/sre_parse.py delete mode 100644 PythonHome/Lib/ssl.py delete mode 100644 PythonHome/Lib/ssl.pyc delete mode 100644 PythonHome/Lib/stat.py delete mode 100644 PythonHome/Lib/statvfs.py delete mode 100644 PythonHome/Lib/string.py delete mode 100644 PythonHome/Lib/stringold.py delete mode 100644 PythonHome/Lib/stringprep.py delete mode 100644 PythonHome/Lib/stringprep.pyc delete mode 100644 PythonHome/Lib/struct.py delete mode 100644 PythonHome/Lib/subprocess.py delete mode 100644 PythonHome/Lib/subprocess.pyc delete mode 100644 PythonHome/Lib/sunau.py delete mode 100644 PythonHome/Lib/sunaudio.py delete mode 100644 PythonHome/Lib/symbol.py delete mode 100644 PythonHome/Lib/symtable.py delete mode 100644 PythonHome/Lib/sysconfig.py delete mode 100644 PythonHome/Lib/tabnanny.py delete mode 100644 PythonHome/Lib/tarfile.py delete mode 100644 PythonHome/Lib/telnetlib.py delete mode 100644 PythonHome/Lib/tempfile.py delete mode 100644 PythonHome/Lib/tempfile.pyc delete mode 100644 PythonHome/Lib/textwrap.py delete mode 100644 PythonHome/Lib/this.py delete mode 100644 PythonHome/Lib/threading.py delete mode 100644 PythonHome/Lib/threading.pyc delete mode 100644 PythonHome/Lib/timeit.py delete mode 100644 PythonHome/Lib/toaiff.py delete mode 100644 PythonHome/Lib/token.py delete mode 100644 PythonHome/Lib/tokenize.py delete mode 100644 PythonHome/Lib/trace.py delete mode 100644 PythonHome/Lib/traceback.py delete mode 100644 PythonHome/Lib/tty.py delete mode 100644 PythonHome/Lib/types.py delete mode 100644 PythonHome/Lib/unittest/__init__.py delete mode 100644 PythonHome/Lib/unittest/__main__.py delete mode 100644 PythonHome/Lib/unittest/case.py delete mode 100644 PythonHome/Lib/unittest/loader.py delete mode 100644 PythonHome/Lib/unittest/main.py delete mode 100644 PythonHome/Lib/unittest/result.py delete mode 100644 PythonHome/Lib/unittest/runner.py delete mode 100644 PythonHome/Lib/unittest/signals.py delete mode 100644 PythonHome/Lib/unittest/suite.py delete mode 100644 PythonHome/Lib/unittest/test/__init__.py delete mode 100644 PythonHome/Lib/unittest/test/dummy.py delete mode 100644 PythonHome/Lib/unittest/test/support.py delete mode 100644 PythonHome/Lib/unittest/test/test_assertions.py delete mode 100644 PythonHome/Lib/unittest/test/test_break.py delete mode 100644 PythonHome/Lib/unittest/test/test_case.py delete mode 100644 PythonHome/Lib/unittest/test/test_discovery.py delete mode 100644 PythonHome/Lib/unittest/test/test_functiontestcase.py delete mode 100644 PythonHome/Lib/unittest/test/test_loader.py delete mode 100644 PythonHome/Lib/unittest/test/test_program.py delete mode 100644 PythonHome/Lib/unittest/test/test_result.py delete mode 100644 PythonHome/Lib/unittest/test/test_runner.py delete mode 100644 PythonHome/Lib/unittest/test/test_setups.py delete mode 100644 PythonHome/Lib/unittest/test/test_skipping.py delete mode 100644 PythonHome/Lib/unittest/test/test_suite.py delete mode 100644 PythonHome/Lib/unittest/util.py delete mode 100644 PythonHome/Lib/urllib.py delete mode 100644 PythonHome/Lib/urllib.pyc delete mode 100644 PythonHome/Lib/urllib2.py delete mode 100644 PythonHome/Lib/urllib2.pyc delete mode 100644 PythonHome/Lib/urlparse.py delete mode 100644 PythonHome/Lib/urlparse.pyc delete mode 100644 PythonHome/Lib/user.py delete mode 100644 PythonHome/Lib/uu.py delete mode 100644 PythonHome/Lib/uuid.py delete mode 100644 PythonHome/Lib/uuid.pyc delete mode 100644 PythonHome/Lib/warnings.py delete mode 100644 PythonHome/Lib/wave.py delete mode 100644 PythonHome/Lib/weakref.py delete mode 100644 PythonHome/Lib/webbrowser.py delete mode 100644 PythonHome/Lib/webbrowser.pyc delete mode 100644 PythonHome/Lib/whichdb.py delete mode 100644 PythonHome/Lib/wox.pyc delete mode 100644 PythonHome/Lib/wsgiref/__init__.py delete mode 100644 PythonHome/Lib/wsgiref/handlers.py delete mode 100644 PythonHome/Lib/wsgiref/headers.py delete mode 100644 PythonHome/Lib/wsgiref/simple_server.py delete mode 100644 PythonHome/Lib/wsgiref/util.py delete mode 100644 PythonHome/Lib/wsgiref/validate.py delete mode 100644 PythonHome/Lib/xdrlib.py delete mode 100644 PythonHome/Lib/xml/__init__.py delete mode 100644 PythonHome/Lib/xml/dom/NodeFilter.py delete mode 100644 PythonHome/Lib/xml/dom/__init__.py delete mode 100644 PythonHome/Lib/xml/dom/domreg.py delete mode 100644 PythonHome/Lib/xml/dom/expatbuilder.py delete mode 100644 PythonHome/Lib/xml/dom/minicompat.py delete mode 100644 PythonHome/Lib/xml/dom/minidom.py delete mode 100644 PythonHome/Lib/xml/dom/pulldom.py delete mode 100644 PythonHome/Lib/xml/dom/xmlbuilder.py delete mode 100644 PythonHome/Lib/xml/etree/ElementInclude.py delete mode 100644 PythonHome/Lib/xml/etree/ElementPath.py delete mode 100644 PythonHome/Lib/xml/etree/ElementTree.py delete mode 100644 PythonHome/Lib/xml/etree/__init__.py delete mode 100644 PythonHome/Lib/xml/etree/cElementTree.py delete mode 100644 PythonHome/Lib/xml/parsers/__init__.py delete mode 100644 PythonHome/Lib/xml/parsers/expat.py delete mode 100644 PythonHome/Lib/xml/sax/__init__.py delete mode 100644 PythonHome/Lib/xml/sax/_exceptions.py delete mode 100644 PythonHome/Lib/xml/sax/expatreader.py delete mode 100644 PythonHome/Lib/xml/sax/handler.py delete mode 100644 PythonHome/Lib/xml/sax/saxutils.py delete mode 100644 PythonHome/Lib/xml/sax/xmlreader.py delete mode 100644 PythonHome/Lib/xmllib.py delete mode 100644 PythonHome/Lib/xmlrpclib.py delete mode 100644 PythonHome/Lib/zipfile.py delete mode 100644 PythonHome/install_requirements.bat create mode 100644 PythonHome/python27.zip create mode 100644 PythonHome/pythonx.bat delete mode 100644 PythonHome/requirements.txt rename PythonHome/{Lib/site-packages => thirdparty}/README.txt (100%) rename PythonHome/{Lib/site-packages => thirdparty}/_markerlib/__init__.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/_markerlib/markers.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/beautifulsoup4-4.3.2-py2.7.egg-info/PKG-INFO (100%) rename PythonHome/{Lib/site-packages => thirdparty}/beautifulsoup4-4.3.2-py2.7.egg-info/SOURCES.txt (100%) rename PythonHome/{Lib/site-packages => thirdparty}/beautifulsoup4-4.3.2-py2.7.egg-info/dependency_links.txt (100%) rename PythonHome/{Lib/site-packages => thirdparty}/beautifulsoup4-4.3.2-py2.7.egg-info/installed-files.txt (100%) rename PythonHome/{Lib/site-packages => thirdparty}/beautifulsoup4-4.3.2-py2.7.egg-info/top_level.txt (100%) rename PythonHome/{Lib/site-packages => thirdparty}/bs4/__init__.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/bs4/builder/__init__.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/bs4/builder/_html5lib.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/bs4/builder/_htmlparser.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/bs4/builder/_lxml.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/bs4/dammit.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/bs4/diagnose.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/bs4/element.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/bs4/testing.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/easy_install.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip-1.5.6.dist-info/DESCRIPTION.rst (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip-1.5.6.dist-info/METADATA (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip-1.5.6.dist-info/RECORD (98%) rename PythonHome/{Lib/site-packages => thirdparty}/pip-1.5.6.dist-info/WHEEL (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip-1.5.6.dist-info/entry_points.txt (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip-1.5.6.dist-info/metadata.json (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip-1.5.6.dist-info/top_level.txt (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/__init__.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/__main__.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/__init__.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/_markerlib/__init__.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/_markerlib/markers.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/colorama/__init__.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/colorama/ansi.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/colorama/ansitowin32.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/colorama/initialise.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/colorama/win32.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/colorama/winterm.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/distlib/__init__.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/distlib/_backport/__init__.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/distlib/_backport/misc.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/distlib/_backport/shutil.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/distlib/_backport/sysconfig.cfg (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/distlib/_backport/sysconfig.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/distlib/_backport/tarfile.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/distlib/compat.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/distlib/database.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/distlib/index.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/distlib/locators.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/distlib/manifest.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/distlib/markers.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/distlib/metadata.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/distlib/resources.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/distlib/scripts.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/distlib/util.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/distlib/version.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/distlib/wheel.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/__init__.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/constants.py (100%) rename PythonHome/{Lib/email/mime => thirdparty/pip/_vendor/html5lib/filters}/__init__.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/filters/_base.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/filters/alphabeticalattributes.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/filters/inject_meta_charset.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/filters/lint.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/filters/optionaltags.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/filters/sanitizer.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/filters/whitespace.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/html5parser.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/ihatexml.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/inputstream.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/sanitizer.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/serializer/__init__.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/serializer/htmlserializer.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/tokenizer.py (100%) rename PythonHome/{Lib/pydoc_data => thirdparty/pip/_vendor/html5lib/treeadapters}/__init__.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/treeadapters/sax.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/treebuilders/__init__.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/treebuilders/_base.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/treebuilders/dom.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/treebuilders/etree.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/treebuilders/etree_lxml.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/treewalkers/__init__.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/treewalkers/_base.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/treewalkers/dom.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/treewalkers/etree.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/treewalkers/genshistream.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/treewalkers/lxmletree.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/treewalkers/pulldom.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/trie/__init__.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/trie/_base.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/trie/datrie.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/trie/py.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/html5lib/utils.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/pkg_resources.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/re-vendor.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/requests/__init__.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/requests/adapters.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/requests/api.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/requests/auth.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/requests/cacert.pem (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/requests/certs.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/requests/compat.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/requests/cookies.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/requests/exceptions.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/requests/hooks.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/requests/models.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/requests/sessions.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/requests/status_codes.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/requests/structures.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/requests/utils.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/_vendor/six.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/backwardcompat/__init__.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/basecommand.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/baseparser.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/cmdoptions.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/commands/__init__.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/commands/bundle.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/commands/completion.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/commands/freeze.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/commands/help.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/commands/install.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/commands/list.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/commands/search.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/commands/show.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/commands/uninstall.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/commands/unzip.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/commands/wheel.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/commands/zip.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/download.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/exceptions.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/index.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/locations.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/log.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/pep425tags.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/req.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/runner.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/status_codes.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/util.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/vcs/__init__.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/vcs/bazaar.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/vcs/git.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/vcs/mercurial.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/vcs/subversion.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pip/wheel.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/pkg_resources.py (100%) create mode 100644 PythonHome/thirdparty/requests-2.2.1.dist-info/DESCRIPTION.rst create mode 100644 PythonHome/thirdparty/requests-2.2.1.dist-info/METADATA rename PythonHome/{Lib/site-packages/requests-2.3.0.dist-info => thirdparty/requests-2.2.1.dist-info}/RECORD (52%) rename PythonHome/{Lib/site-packages/requests-2.3.0.dist-info => thirdparty/requests-2.2.1.dist-info}/WHEEL (100%) create mode 100644 PythonHome/thirdparty/requests-2.2.1.dist-info/pydist.json rename PythonHome/{Lib/site-packages/requests-2.3.0.dist-info => thirdparty/requests-2.2.1.dist-info}/top_level.txt (100%) rename PythonHome/{Lib/site-packages => thirdparty}/requests/__init__.py (97%) rename PythonHome/{Lib/site-packages => thirdparty}/requests/adapters.py (96%) rename PythonHome/{Lib/site-packages => thirdparty}/requests/api.py (99%) rename PythonHome/{Lib/site-packages => thirdparty}/requests/auth.py (99%) rename PythonHome/{Lib/site-packages => thirdparty}/requests/cacert.pem (100%) rename PythonHome/{Lib/site-packages => thirdparty}/requests/certs.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/requests/compat.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/requests/cookies.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/requests/exceptions.py (76%) rename PythonHome/{Lib/site-packages => thirdparty}/requests/hooks.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/requests/models.py (92%) rename PythonHome/{Lib/site-packages => thirdparty}/requests/sessions.py (82%) rename PythonHome/{Lib/site-packages => thirdparty}/requests/status_codes.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/requests/structures.py (97%) rename PythonHome/{Lib/site-packages => thirdparty}/requests/utils.py (94%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools-5.4.1.dist-info/DESCRIPTION.rst (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools-5.4.1.dist-info/METADATA (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools-5.4.1.dist-info/RECORD (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools-5.4.1.dist-info/WHEEL (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools-5.4.1.dist-info/dependency_links.txt (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools-5.4.1.dist-info/entry_points.txt (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools-5.4.1.dist-info/pydist.json (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools-5.4.1.dist-info/top_level.txt (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools-5.4.1.dist-info/zip-safe (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/__init__.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/archive_util.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/command/__init__.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/command/alias.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/command/bdist_egg.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/command/bdist_rpm.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/command/bdist_wininst.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/command/build_ext.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/command/build_py.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/command/develop.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/command/easy_install.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/command/egg_info.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/command/install.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/command/install_egg_info.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/command/install_lib.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/command/install_scripts.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/command/register.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/command/rotate.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/command/saveopts.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/command/sdist.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/command/setopt.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/command/test.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/command/upload_docs.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/compat.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/depends.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/dist.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/extension.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/lib2to3_ex.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/package_index.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/py26compat.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/py27compat.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/py31compat.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/sandbox.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/script (dev).tmpl (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/script.tmpl (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/site-patch.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/ssl_support.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/svn_utils.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/unicode_utils.py (100%) rename PythonHome/{Lib/site-packages => thirdparty}/setuptools/version.py (100%) rename PythonHome/{Lib => thirdparty}/wox.py (84%) delete mode 100644 Wox.Plugin/HttpProxy.cs create mode 100644 Wox.Plugin/IHttpProxy.cs rename Wox/{ => Helper}/DispatcherExtensions.cs (100%) create mode 100644 Wox/Helper/HttpProxy.cs diff --git a/Plugins/Wox.Plugin.HackerNews/main.py b/Plugins/Wox.Plugin.HackerNews/main.py index 4a41993ddc..e56bd7cd28 100644 --- a/Plugins/Wox.Plugin.HackerNews/main.py +++ b/Plugins/Wox.Plugin.HackerNews/main.py @@ -8,15 +8,20 @@ from wox import Wox,WoxAPI class HackerNews(Wox): def query(self,key): - r = requests.get('https://news.ycombinator.com/') + proxies = {} + if self.proxy and self.proxy.get("enabled") and self.proxy.get("server"): + proxies = { + "http": "http://{}:{}".format(self.proxy.get("server"),self.proxy.get("port")), + "http": "https://{}:{}".format(self.proxy.get("server"),self.proxy.get("port")) + } + #self.debug(proxies) + r = requests.get('https://news.ycombinator.com/',proxies = proxies) bs = BeautifulSoup(r.text) results = [] for i in bs.select(".comhead"): title = i.previous_sibling.text url = i.previous_sibling["href"] - #results.append({"Title": title ,"IcoPath":"Images/app.ico","JsonRPCAction":{"method": "Wox.ChangeQuery","parameters":[url,True]}}) results.append({"Title": title ,"IcoPath":"Images/app.ico","JsonRPCAction":{"method": "openUrl","parameters":[url],"dontHideAfterAction":True}}) - #results.append({"Title": title ,"IcoPath":"Images/app.ico","JsonRPCAction":{"method": "Wox.ShowApp"}}) return results diff --git a/Plugins/Wox.Plugin.PluginManagement/HttpRequest.cs b/Plugins/Wox.Plugin.PluginManagement/HttpRequest.cs index 9596edeb71..40f5963224 100644 --- a/Plugins/Wox.Plugin.PluginManagement/HttpRequest.cs +++ b/Plugins/Wox.Plugin.PluginManagement/HttpRequest.cs @@ -1,113 +1,35 @@ using System; -using System.Collections.Generic; -using System.IO; using System.Net; -using System.Net.Security; -using System.Security.Cryptography.X509Certificates; -using System.Text; -//From:http://blog.csdn.net/zhoufoxcn/article/details/6404236 + namespace Wox.Plugin.PluginManagement { public class HttpRequest { private static readonly string DefaultUserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; - public static HttpWebResponse CreateGetHttpResponse(string url, int? timeout, string userAgent, CookieCollection cookies) + public static HttpWebResponse CreateGetHttpResponse(string url,IHttpProxy proxy) { if (string.IsNullOrEmpty(url)) { throw new ArgumentNullException("url"); } HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; + if (proxy != null && proxy.Enabled && !string.IsNullOrEmpty(proxy.Server)) + { + if (string.IsNullOrEmpty(proxy.UserName) || string.IsNullOrEmpty(proxy.Password)) + { + request.Proxy = new WebProxy(proxy.Server, proxy.Port); + } + else + { + request.Proxy = new WebProxy(proxy.Server, proxy.Port); + request.Proxy.Credentials = new NetworkCredential(proxy.UserName, proxy.Password); + } + } request.Method = "GET"; request.UserAgent = DefaultUserAgent; - if (!string.IsNullOrEmpty(userAgent)) - { - request.UserAgent = userAgent; - } - if (timeout.HasValue) - { - request.Timeout = timeout.Value; - } - if (cookies != null) - { - request.CookieContainer = new CookieContainer(); - request.CookieContainer.Add(cookies); - } return request.GetResponse() as HttpWebResponse; } - - public static HttpWebResponse CreatePostHttpResponse(string url, IDictionary parameters, int? timeout, string userAgent, Encoding requestEncoding, CookieCollection cookies) - { - if (string.IsNullOrEmpty(url)) - { - throw new ArgumentNullException("url"); - } - if (requestEncoding == null) - { - throw new ArgumentNullException("requestEncoding"); - } - HttpWebRequest request = null; - if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) - { - ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); - request = WebRequest.Create(url) as HttpWebRequest; - request.ProtocolVersion = HttpVersion.Version10; - } - else - { - request = WebRequest.Create(url) as HttpWebRequest; - } - request.Method = "POST"; - request.ContentType = "application/x-www-form-urlencoded"; - - if (!string.IsNullOrEmpty(userAgent)) - { - request.UserAgent = userAgent; - } - else - { - request.UserAgent = DefaultUserAgent; - } - - if (timeout.HasValue) - { - request.Timeout = timeout.Value; - } - if (cookies != null) - { - request.CookieContainer = new CookieContainer(); - request.CookieContainer.Add(cookies); - } - if (!(parameters == null || parameters.Count == 0)) - { - StringBuilder buffer = new StringBuilder(); - int i = 0; - foreach (string key in parameters.Keys) - { - if (i > 0) - { - buffer.AppendFormat("&{0}={1}", key, parameters[key]); - } - else - { - buffer.AppendFormat("{0}={1}", key, parameters[key]); - } - i++; - } - byte[] data = requestEncoding.GetBytes(buffer.ToString()); - using (Stream stream = request.GetRequestStream()) - { - stream.Write(data, 0, data.Length); - } - } - return request.GetResponse() as HttpWebResponse; - } - - private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) - { - return true; - } } } diff --git a/Plugins/Wox.Plugin.PluginManagement/Main.cs b/Plugins/Wox.Plugin.PluginManagement/Main.cs index 697df3c739..7e089f611b 100644 --- a/Plugins/Wox.Plugin.PluginManagement/Main.cs +++ b/Plugins/Wox.Plugin.PluginManagement/Main.cs @@ -8,246 +8,301 @@ using System.Threading; using System.Windows.Forms; using Newtonsoft.Json; -namespace Wox.Plugin.PluginManagement { - public class WoxPlugin { - public int apiVersion { get; set; } - public List result { get; set; } - } +namespace Wox.Plugin.PluginManagement +{ + public class WoxPlugin + { + public int apiVersion { get; set; } + public List result { get; set; } + } - public class WoxPluginResult { - public string actionkeyword; - public string download; - public string author; - public string description; - public string id; - public int star; - public string name; - public string version; - public string website; - } + public class WoxPluginResult + { + public string actionkeyword; + public string download; + public string author; + public string description; + public string id; + public int star; + public string name; + public string version; + public string website; + } - public class Main : IPlugin { - private static string PluginPath = AppDomain.CurrentDomain.BaseDirectory + "Plugins"; - private static string PluginConfigName = "plugin.json"; - private static string pluginSearchUrl = "http://www.getwox.com/api/plugin/search/"; - private PluginInitContext context; + public class Main : IPlugin + { + private static string PluginPath = AppDomain.CurrentDomain.BaseDirectory + "Plugins"; + private static string PluginConfigName = "plugin.json"; + private static string pluginSearchUrl = "http://www.getwox.com/api/plugin/search/"; + private PluginInitContext context; - public List Query(Query query) { - List results = new List(); - if (query.ActionParameters.Count == 0) { - results.Add(new Result("wpm install ", "Images\\plugin.png", "search and install wox plugins") { - Action = e => { - context.ChangeQuery("wpm install "); - return false; - } - }); - results.Add(new Result("wpm uninstall ", "Images\\plugin.png", "uninstall plugin") { - Action = e => { - context.ChangeQuery("wpm uninstall "); - return false; - } - }); - results.Add(new Result("wpm list", "Images\\plugin.png", "list plugins installed") { - Action = e => { - context.ChangeQuery("wpm list"); - return false; - } - }); - return results; - } + public List Query(Query query) + { + List results = new List(); + if (query.ActionParameters.Count == 0) + { + results.Add(new Result("wpm install ", "Images\\plugin.png", "search and install wox plugins") + { + Action = e => + { + context.ChangeQuery("wpm install "); + return false; + } + }); + results.Add(new Result("wpm uninstall ", "Images\\plugin.png", "uninstall plugin") + { + Action = e => + { + context.ChangeQuery("wpm uninstall "); + return false; + } + }); + results.Add(new Result("wpm list", "Images\\plugin.png", "list plugins installed") + { + Action = e => + { + context.ChangeQuery("wpm list"); + return false; + } + }); + return results; + } - if (query.ActionParameters.Count > 0) { - bool hit = false; - switch (query.ActionParameters[0].ToLower()) { - case "list": - hit = true; - results = ListInstalledPlugins(); - break; + if (query.ActionParameters.Count > 0) + { + bool hit = false; + switch (query.ActionParameters[0].ToLower()) + { + case "list": + hit = true; + results = ListInstalledPlugins(); + break; - case "uninstall": - hit = true; - results = ListUnInstalledPlugins(query); - break; + case "uninstall": + hit = true; + results = ListUnInstalledPlugins(query); + break; - case "install": - hit = true; - if (query.ActionParameters.Count > 1) { - results = InstallPlugin(query); - } - break; - } + case "install": + hit = true; + if (query.ActionParameters.Count > 1) + { + results = InstallPlugin(query); + } + break; + } - if (!hit) { - if ("install".Contains(query.ActionParameters[0].ToLower())) { - results.Add(new Result("wpm install ", "Images\\plugin.png", "search and install wox plugins") { - Action = e => { - context.ChangeQuery("wpm install "); - return false; - } - }); - } - if ("uninstall".Contains(query.ActionParameters[0].ToLower())) { - results.Add(new Result("wpm uninstall ", "Images\\plugin.png", "uninstall plugin") { - Action = e => { - context.ChangeQuery("wpm uninstall "); - return false; - } - }); - } - if ("list".Contains(query.ActionParameters[0].ToLower())) { - results.Add(new Result("wpm list", "Images\\plugin.png", "list plugins installed") { - Action = e => { - context.ChangeQuery("wpm list"); - return false; - } - }); - } - } - } + if (!hit) + { + if ("install".Contains(query.ActionParameters[0].ToLower())) + { + results.Add(new Result("wpm install ", "Images\\plugin.png", "search and install wox plugins") + { + Action = e => + { + context.API.ChangeQuery("wpm install "); + return false; + } + }); + } + if ("uninstall".Contains(query.ActionParameters[0].ToLower())) + { + results.Add(new Result("wpm uninstall ", "Images\\plugin.png", "uninstall plugin") + { + Action = e => + { + context.API.ChangeQuery("wpm uninstall "); + return false; + } + }); + } + if ("list".Contains(query.ActionParameters[0].ToLower())) + { + results.Add(new Result("wpm list", "Images\\plugin.png", "list plugins installed") + { + Action = e => + { + context.API.ChangeQuery("wpm list"); + return false; + } + }); + } + } + } - return results; - } + return results; + } - private List InstallPlugin(Query query) { - List results = new List(); - HttpWebResponse response = HttpRequest.CreateGetHttpResponse(pluginSearchUrl + query.ActionParameters[1], null, null, null); - Stream s = response.GetResponseStream(); - if (s != null) { - StreamReader reader = new StreamReader(s, Encoding.UTF8); - string json = reader.ReadToEnd(); - WoxPlugin o = JsonConvert.DeserializeObject(json); - foreach (WoxPluginResult r in o.result) { - WoxPluginResult r1 = r; - results.Add(new Result() { - Title = r.name, - SubTitle = r.description, - IcoPath = "Images\\plugin.png", - Action = e => { - DialogResult result = MessageBox.Show("Are your sure to install " + r.name + " plugin", - "Install plugin", MessageBoxButtons.YesNo); + private List InstallPlugin(Query query) + { + List results = new List(); + HttpWebResponse response = HttpRequest.CreateGetHttpResponse(pluginSearchUrl + query.ActionParameters[1], context.Proxy); + Stream s = response.GetResponseStream(); + if (s != null) + { + StreamReader reader = new StreamReader(s, Encoding.UTF8); + string json = reader.ReadToEnd(); + WoxPlugin o = JsonConvert.DeserializeObject(json); + foreach (WoxPluginResult r in o.result) + { + WoxPluginResult r1 = r; + results.Add(new Result() + { + Title = r.name, + SubTitle = r.description, + IcoPath = "Images\\plugin.png", + Action = e => + { + DialogResult result = MessageBox.Show("Are your sure to install " + r.name + " plugin", + "Install plugin", MessageBoxButtons.YesNo); - if (result == DialogResult.Yes) { - string folder = Path.Combine(Path.GetTempPath(), "WoxPluginDownload"); - if (!Directory.Exists(folder)) Directory.CreateDirectory(folder); - string filePath = Path.Combine(folder, Guid.NewGuid().ToString() + ".wox"); + if (result == DialogResult.Yes) + { + string folder = Path.Combine(Path.GetTempPath(), "WoxPluginDownload"); + if (!Directory.Exists(folder)) Directory.CreateDirectory(folder); + string filePath = Path.Combine(folder, Guid.NewGuid().ToString() + ".wox"); - context.StartLoadingBar(); - ThreadPool.QueueUserWorkItem(delegate { - using (WebClient Client = new WebClient()) { - try { - Client.DownloadFile(r1.download, filePath); - context.InstallPlugin(filePath); - context.ReloadPlugins(); - } - catch (Exception exception) { - MessageBox.Show("download plugin " + r.name + "failed. " + exception.Message); - } - finally { - context.StopLoadingBar(); - } - } - }); - } - return false; - } - }); - } - } - return results; - } + context.API.StartLoadingBar(); + ThreadPool.QueueUserWorkItem(delegate + { + using (WebClient Client = new WebClient()) + { + try + { + Client.DownloadFile(r1.download, filePath); + context.API.InstallPlugin(filePath); + context.API.ReloadPlugins(); + } + catch (Exception exception) + { + MessageBox.Show("download plugin " + r.name + "failed. " + exception.Message); + } + finally + { + context.StopLoadingBar(); + } + } + }); + } + return false; + } + }); + } + } + return results; + } - private List ListUnInstalledPlugins(Query query) { - List results = new List(); - List allInstalledPlugins = ParseThirdPartyPlugins(); - if (query.ActionParameters.Count > 1) { - string pluginName = query.ActionParameters[1]; - allInstalledPlugins = - allInstalledPlugins.Where(o => o.Name.ToLower().Contains(pluginName.ToLower())).ToList(); - } + private List ListUnInstalledPlugins(Query query) + { + List results = new List(); + List allInstalledPlugins = ParseThirdPartyPlugins(); + if (query.ActionParameters.Count > 1) + { + string pluginName = query.ActionParameters[1]; + allInstalledPlugins = + allInstalledPlugins.Where(o => o.Name.ToLower().Contains(pluginName.ToLower())).ToList(); + } - foreach (PluginMetadata plugin in allInstalledPlugins) { - results.Add(new Result() { - Title = plugin.Name, - SubTitle = plugin.Description, - IcoPath = "Images\\plugin.png", - Action = e => { - UnInstalledPlugins(plugin); - return false; - } - }); - } - return results; - } + foreach (PluginMetadata plugin in allInstalledPlugins) + { + results.Add(new Result() + { + Title = plugin.Name, + SubTitle = plugin.Description, + IcoPath = "Images\\plugin.png", + Action = e => + { + UnInstalledPlugins(plugin); + return false; + } + }); + } + return results; + } - private void UnInstalledPlugins(PluginMetadata plugin) { - string content = string.Format("Do you want to uninstall following plugin?\r\n\r\nName: {0}\r\nVersion: {1}\r\nAuthor: {2}", plugin.Name, plugin.Version, plugin.Author); - if (MessageBox.Show(content, "Wox", MessageBoxButtons.YesNo) == DialogResult.Yes) { - File.Create(Path.Combine(plugin.PluginDirectory, "NeedDelete.txt")).Close(); - MessageBox.Show("This plugin has been removed, restart Wox to take effect"); - } - } + private void UnInstalledPlugins(PluginMetadata plugin) + { + string content = string.Format("Do you want to uninstall following plugin?\r\n\r\nName: {0}\r\nVersion: {1}\r\nAuthor: {2}", plugin.Name, plugin.Version, plugin.Author); + if (MessageBox.Show(content, "Wox", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + File.Create(Path.Combine(plugin.PluginDirectory, "NeedDelete.txt")).Close(); + MessageBox.Show("This plugin has been removed, restart Wox to take effect"); + } + } - private List ListInstalledPlugins() { - List results = new List(); - foreach (PluginMetadata plugin in ParseThirdPartyPlugins()) { - results.Add(new Result() { - Title = plugin.Name + " - " + plugin.ActionKeyword, - SubTitle = plugin.Description, - IcoPath = "Images\\plugin.png" - }); - } - return results; - } + private List ListInstalledPlugins() + { + List results = new List(); + foreach (PluginMetadata plugin in ParseThirdPartyPlugins()) + { + results.Add(new Result() + { + Title = plugin.Name + " - " + plugin.ActionKeyword, + SubTitle = plugin.Description, + IcoPath = "Images\\plugin.png" + }); + } + return results; + } - private static List ParseThirdPartyPlugins() { - List pluginMetadatas = new List(); - if (!Directory.Exists(PluginPath)) - Directory.CreateDirectory(PluginPath); + private static List ParseThirdPartyPlugins() + { + List pluginMetadatas = new List(); + if (!Directory.Exists(PluginPath)) + Directory.CreateDirectory(PluginPath); - string[] directories = Directory.GetDirectories(PluginPath); - foreach (string directory in directories) { - PluginMetadata metadata = GetMetadataFromJson(directory); - if (metadata != null) pluginMetadatas.Add(metadata); - } + string[] directories = Directory.GetDirectories(PluginPath); + foreach (string directory in directories) + { + PluginMetadata metadata = GetMetadataFromJson(directory); + if (metadata != null) pluginMetadatas.Add(metadata); + } - return pluginMetadatas; - } + return pluginMetadatas; + } - private static PluginMetadata GetMetadataFromJson(string pluginDirectory) { - string configPath = Path.Combine(pluginDirectory, PluginConfigName); - PluginMetadata metadata; + private static PluginMetadata GetMetadataFromJson(string pluginDirectory) + { + string configPath = Path.Combine(pluginDirectory, PluginConfigName); + PluginMetadata metadata; - if (!File.Exists(configPath)) { - return null; - } + if (!File.Exists(configPath)) + { + return null; + } - try { - metadata = JsonConvert.DeserializeObject(File.ReadAllText(configPath)); - metadata.PluginType = PluginType.ThirdParty; - metadata.PluginDirectory = pluginDirectory; - } - catch (Exception) { - string error = string.Format("Parse plugin config {0} failed: json format is not valid", configPath); - return null; - } + try + { + metadata = JsonConvert.DeserializeObject(File.ReadAllText(configPath)); + metadata.PluginType = PluginType.ThirdParty; + metadata.PluginDirectory = pluginDirectory; + } + catch (Exception) + { + string error = string.Format("Parse plugin config {0} failed: json format is not valid", configPath); + return null; + } - if (!AllowedLanguage.IsAllowed(metadata.Language)) { - string error = string.Format("Parse plugin config {0} failed: invalid language {1}", configPath, - metadata.Language); - return null; - } - if (!File.Exists(metadata.ExecuteFilePath)) { - string error = string.Format("Parse plugin config {0} failed: ExecuteFile {1} didn't exist", configPath, - metadata.ExecuteFilePath); - return null; - } + if (!AllowedLanguage.IsAllowed(metadata.Language)) + { + string error = string.Format("Parse plugin config {0} failed: invalid language {1}", configPath, + metadata.Language); + return null; + } + if (!File.Exists(metadata.ExecuteFilePath)) + { + string error = string.Format("Parse plugin config {0} failed: ExecuteFile {1} didn't exist", configPath, + metadata.ExecuteFilePath); + return null; + } - return metadata; - } + return metadata; + } - public void Init(PluginInitContext context) { - this.context = context; - } - } + public void Init(PluginInitContext context) + { + this.context = context; + } + } } diff --git a/PythonHome/Lib/BaseHTTPServer.py b/PythonHome/Lib/BaseHTTPServer.py deleted file mode 100644 index deaf2f960b..0000000000 --- a/PythonHome/Lib/BaseHTTPServer.py +++ /dev/null @@ -1,603 +0,0 @@ -"""HTTP server base class. - -Note: the class in this module doesn't implement any HTTP request; see -SimpleHTTPServer for simple implementations of GET, HEAD and POST -(including CGI scripts). It does, however, optionally implement HTTP/1.1 -persistent connections, as of version 0.3. - -Contents: - -- BaseHTTPRequestHandler: HTTP request handler base class -- test: test function - -XXX To do: - -- log requests even later (to capture byte count) -- log user-agent header and other interesting goodies -- send error log to separate file -""" - - -# See also: -# -# HTTP Working Group T. Berners-Lee -# INTERNET-DRAFT R. T. Fielding -# H. Frystyk Nielsen -# Expires September 8, 1995 March 8, 1995 -# -# URL: http://www.ics.uci.edu/pub/ietf/http/draft-ietf-http-v10-spec-00.txt -# -# and -# -# Network Working Group R. Fielding -# Request for Comments: 2616 et al -# Obsoletes: 2068 June 1999 -# Category: Standards Track -# -# URL: http://www.faqs.org/rfcs/rfc2616.html - -# Log files -# --------- -# -# Here's a quote from the NCSA httpd docs about log file format. -# -# | The logfile format is as follows. Each line consists of: -# | -# | host rfc931 authuser [DD/Mon/YYYY:hh:mm:ss] "request" ddd bbbb -# | -# | host: Either the DNS name or the IP number of the remote client -# | rfc931: Any information returned by identd for this person, -# | - otherwise. -# | authuser: If user sent a userid for authentication, the user name, -# | - otherwise. -# | DD: Day -# | Mon: Month (calendar name) -# | YYYY: Year -# | hh: hour (24-hour format, the machine's timezone) -# | mm: minutes -# | ss: seconds -# | request: The first line of the HTTP request as sent by the client. -# | ddd: the status code returned by the server, - if not available. -# | bbbb: the total number of bytes sent, -# | *not including the HTTP/1.0 header*, - if not available -# | -# | You can determine the name of the file accessed through request. -# -# (Actually, the latter is only true if you know the server configuration -# at the time the request was made!) - -__version__ = "0.3" - -__all__ = ["HTTPServer", "BaseHTTPRequestHandler"] - -import sys -import time -import socket # For gethostbyaddr() -from warnings import filterwarnings, catch_warnings -with catch_warnings(): - if sys.py3kwarning: - filterwarnings("ignore", ".*mimetools has been removed", - DeprecationWarning) - import mimetools -import SocketServer - -# Default error message template -DEFAULT_ERROR_MESSAGE = """\ - -Error response - - -

Error response

-

Error code %(code)d. -

Message: %(message)s. -

Error code explanation: %(code)s = %(explain)s. - -""" - -DEFAULT_ERROR_CONTENT_TYPE = "text/html" - -def _quote_html(html): - return html.replace("&", "&").replace("<", "<").replace(">", ">") - -class HTTPServer(SocketServer.TCPServer): - - allow_reuse_address = 1 # Seems to make sense in testing environment - - def server_bind(self): - """Override server_bind to store the server name.""" - SocketServer.TCPServer.server_bind(self) - host, port = self.socket.getsockname()[:2] - self.server_name = socket.getfqdn(host) - self.server_port = port - - -class BaseHTTPRequestHandler(SocketServer.StreamRequestHandler): - - """HTTP request handler base class. - - The following explanation of HTTP serves to guide you through the - code as well as to expose any misunderstandings I may have about - HTTP (so you don't need to read the code to figure out I'm wrong - :-). - - HTTP (HyperText Transfer Protocol) is an extensible protocol on - top of a reliable stream transport (e.g. TCP/IP). The protocol - recognizes three parts to a request: - - 1. One line identifying the request type and path - 2. An optional set of RFC-822-style headers - 3. An optional data part - - The headers and data are separated by a blank line. - - The first line of the request has the form - - - - where is a (case-sensitive) keyword such as GET or POST, - is a string containing path information for the request, - and should be the string "HTTP/1.0" or "HTTP/1.1". - is encoded using the URL encoding scheme (using %xx to signify - the ASCII character with hex code xx). - - The specification specifies that lines are separated by CRLF but - for compatibility with the widest range of clients recommends - servers also handle LF. Similarly, whitespace in the request line - is treated sensibly (allowing multiple spaces between components - and allowing trailing whitespace). - - Similarly, for output, lines ought to be separated by CRLF pairs - but most clients grok LF characters just fine. - - If the first line of the request has the form - - - - (i.e. is left out) then this is assumed to be an HTTP - 0.9 request; this form has no optional headers and data part and - the reply consists of just the data. - - The reply form of the HTTP 1.x protocol again has three parts: - - 1. One line giving the response code - 2. An optional set of RFC-822-style headers - 3. The data - - Again, the headers and data are separated by a blank line. - - The response code line has the form - - - - where is the protocol version ("HTTP/1.0" or "HTTP/1.1"), - is a 3-digit response code indicating success or - failure of the request, and is an optional - human-readable string explaining what the response code means. - - This server parses the request and the headers, and then calls a - function specific to the request type (). Specifically, - a request SPAM will be handled by a method do_SPAM(). If no - such method exists the server sends an error response to the - client. If it exists, it is called with no arguments: - - do_SPAM() - - Note that the request name is case sensitive (i.e. SPAM and spam - are different requests). - - The various request details are stored in instance variables: - - - client_address is the client IP address in the form (host, - port); - - - command, path and version are the broken-down request line; - - - headers is an instance of mimetools.Message (or a derived - class) containing the header information; - - - rfile is a file object open for reading positioned at the - start of the optional input data part; - - - wfile is a file object open for writing. - - IT IS IMPORTANT TO ADHERE TO THE PROTOCOL FOR WRITING! - - The first thing to be written must be the response line. Then - follow 0 or more header lines, then a blank line, and then the - actual data (if any). The meaning of the header lines depends on - the command executed by the server; in most cases, when data is - returned, there should be at least one header line of the form - - Content-type: / - - where and should be registered MIME types, - e.g. "text/html" or "text/plain". - - """ - - # The Python system version, truncated to its first component. - sys_version = "Python/" + sys.version.split()[0] - - # The server software version. You may want to override this. - # The format is multiple whitespace-separated strings, - # where each string is of the form name[/version]. - server_version = "BaseHTTP/" + __version__ - - # The default request version. This only affects responses up until - # the point where the request line is parsed, so it mainly decides what - # the client gets back when sending a malformed request line. - # Most web servers default to HTTP 0.9, i.e. don't send a status line. - default_request_version = "HTTP/0.9" - - def parse_request(self): - """Parse a request (internal). - - The request should be stored in self.raw_requestline; the results - are in self.command, self.path, self.request_version and - self.headers. - - Return True for success, False for failure; on failure, an - error is sent back. - - """ - self.command = None # set in case of error on the first line - self.request_version = version = self.default_request_version - self.close_connection = 1 - requestline = self.raw_requestline - requestline = requestline.rstrip('\r\n') - self.requestline = requestline - words = requestline.split() - if len(words) == 3: - command, path, version = words - if version[:5] != 'HTTP/': - self.send_error(400, "Bad request version (%r)" % version) - return False - try: - base_version_number = version.split('/', 1)[1] - version_number = base_version_number.split(".") - # RFC 2145 section 3.1 says there can be only one "." and - # - major and minor numbers MUST be treated as - # separate integers; - # - HTTP/2.4 is a lower version than HTTP/2.13, which in - # turn is lower than HTTP/12.3; - # - Leading zeros MUST be ignored by recipients. - if len(version_number) != 2: - raise ValueError - version_number = int(version_number[0]), int(version_number[1]) - except (ValueError, IndexError): - self.send_error(400, "Bad request version (%r)" % version) - return False - if version_number >= (1, 1) and self.protocol_version >= "HTTP/1.1": - self.close_connection = 0 - if version_number >= (2, 0): - self.send_error(505, - "Invalid HTTP Version (%s)" % base_version_number) - return False - elif len(words) == 2: - command, path = words - self.close_connection = 1 - if command != 'GET': - self.send_error(400, - "Bad HTTP/0.9 request type (%r)" % command) - return False - elif not words: - return False - else: - self.send_error(400, "Bad request syntax (%r)" % requestline) - return False - self.command, self.path, self.request_version = command, path, version - - # Examine the headers and look for a Connection directive - self.headers = self.MessageClass(self.rfile, 0) - - conntype = self.headers.get('Connection', "") - if conntype.lower() == 'close': - self.close_connection = 1 - elif (conntype.lower() == 'keep-alive' and - self.protocol_version >= "HTTP/1.1"): - self.close_connection = 0 - return True - - def handle_one_request(self): - """Handle a single HTTP request. - - You normally don't need to override this method; see the class - __doc__ string for information on how to handle specific HTTP - commands such as GET and POST. - - """ - try: - self.raw_requestline = self.rfile.readline(65537) - if len(self.raw_requestline) > 65536: - self.requestline = '' - self.request_version = '' - self.command = '' - self.send_error(414) - return - if not self.raw_requestline: - self.close_connection = 1 - return - if not self.parse_request(): - # An error code has been sent, just exit - return - mname = 'do_' + self.command - if not hasattr(self, mname): - self.send_error(501, "Unsupported method (%r)" % self.command) - return - method = getattr(self, mname) - method() - self.wfile.flush() #actually send the response if not already done. - except socket.timeout, e: - #a read or a write timed out. Discard this connection - self.log_error("Request timed out: %r", e) - self.close_connection = 1 - return - - def handle(self): - """Handle multiple requests if necessary.""" - self.close_connection = 1 - - self.handle_one_request() - while not self.close_connection: - self.handle_one_request() - - def send_error(self, code, message=None): - """Send and log an error reply. - - Arguments are the error code, and a detailed message. - The detailed message defaults to the short entry matching the - response code. - - This sends an error response (so it must be called before any - output has been generated), logs the error, and finally sends - a piece of HTML explaining the error to the user. - - """ - - try: - short, long = self.responses[code] - except KeyError: - short, long = '???', '???' - if message is None: - message = short - explain = long - self.log_error("code %d, message %s", code, message) - # using _quote_html to prevent Cross Site Scripting attacks (see bug #1100201) - content = (self.error_message_format % - {'code': code, 'message': _quote_html(message), 'explain': explain}) - self.send_response(code, message) - self.send_header("Content-Type", self.error_content_type) - self.send_header('Connection', 'close') - self.end_headers() - if self.command != 'HEAD' and code >= 200 and code not in (204, 304): - self.wfile.write(content) - - error_message_format = DEFAULT_ERROR_MESSAGE - error_content_type = DEFAULT_ERROR_CONTENT_TYPE - - def send_response(self, code, message=None): - """Send the response header and log the response code. - - Also send two standard headers with the server software - version and the current date. - - """ - self.log_request(code) - if message is None: - if code in self.responses: - message = self.responses[code][0] - else: - message = '' - if self.request_version != 'HTTP/0.9': - self.wfile.write("%s %d %s\r\n" % - (self.protocol_version, code, message)) - # print (self.protocol_version, code, message) - self.send_header('Server', self.version_string()) - self.send_header('Date', self.date_time_string()) - - def send_header(self, keyword, value): - """Send a MIME header.""" - if self.request_version != 'HTTP/0.9': - self.wfile.write("%s: %s\r\n" % (keyword, value)) - - if keyword.lower() == 'connection': - if value.lower() == 'close': - self.close_connection = 1 - elif value.lower() == 'keep-alive': - self.close_connection = 0 - - def end_headers(self): - """Send the blank line ending the MIME headers.""" - if self.request_version != 'HTTP/0.9': - self.wfile.write("\r\n") - - def log_request(self, code='-', size='-'): - """Log an accepted request. - - This is called by send_response(). - - """ - - self.log_message('"%s" %s %s', - self.requestline, str(code), str(size)) - - def log_error(self, format, *args): - """Log an error. - - This is called when a request cannot be fulfilled. By - default it passes the message on to log_message(). - - Arguments are the same as for log_message(). - - XXX This should go to the separate error log. - - """ - - self.log_message(format, *args) - - def log_message(self, format, *args): - """Log an arbitrary message. - - This is used by all other logging functions. Override - it if you have specific logging wishes. - - The first argument, FORMAT, is a format string for the - message to be logged. If the format string contains - any % escapes requiring parameters, they should be - specified as subsequent arguments (it's just like - printf!). - - The client ip address and current date/time are prefixed to every - message. - - """ - - sys.stderr.write("%s - - [%s] %s\n" % - (self.client_address[0], - self.log_date_time_string(), - format%args)) - - def version_string(self): - """Return the server software version string.""" - return self.server_version + ' ' + self.sys_version - - def date_time_string(self, timestamp=None): - """Return the current date and time formatted for a message header.""" - if timestamp is None: - timestamp = time.time() - year, month, day, hh, mm, ss, wd, y, z = time.gmtime(timestamp) - s = "%s, %02d %3s %4d %02d:%02d:%02d GMT" % ( - self.weekdayname[wd], - day, self.monthname[month], year, - hh, mm, ss) - return s - - def log_date_time_string(self): - """Return the current time formatted for logging.""" - now = time.time() - year, month, day, hh, mm, ss, x, y, z = time.localtime(now) - s = "%02d/%3s/%04d %02d:%02d:%02d" % ( - day, self.monthname[month], year, hh, mm, ss) - return s - - weekdayname = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] - - monthname = [None, - 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', - 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] - - def address_string(self): - """Return the client address formatted for logging. - - This version looks up the full hostname using gethostbyaddr(), - and tries to find a name that contains at least one dot. - - """ - - host, port = self.client_address[:2] - return socket.getfqdn(host) - - # Essentially static class variables - - # The version of the HTTP protocol we support. - # Set this to HTTP/1.1 to enable automatic keepalive - protocol_version = "HTTP/1.0" - - # The Message-like class used to parse headers - MessageClass = mimetools.Message - - # Table mapping response codes to messages; entries have the - # form {code: (shortmessage, longmessage)}. - # See RFC 2616. - responses = { - 100: ('Continue', 'Request received, please continue'), - 101: ('Switching Protocols', - 'Switching to new protocol; obey Upgrade header'), - - 200: ('OK', 'Request fulfilled, document follows'), - 201: ('Created', 'Document created, URL follows'), - 202: ('Accepted', - 'Request accepted, processing continues off-line'), - 203: ('Non-Authoritative Information', 'Request fulfilled from cache'), - 204: ('No Content', 'Request fulfilled, nothing follows'), - 205: ('Reset Content', 'Clear input form for further input.'), - 206: ('Partial Content', 'Partial content follows.'), - - 300: ('Multiple Choices', - 'Object has several resources -- see URI list'), - 301: ('Moved Permanently', 'Object moved permanently -- see URI list'), - 302: ('Found', 'Object moved temporarily -- see URI list'), - 303: ('See Other', 'Object moved -- see Method and URL list'), - 304: ('Not Modified', - 'Document has not changed since given time'), - 305: ('Use Proxy', - 'You must use proxy specified in Location to access this ' - 'resource.'), - 307: ('Temporary Redirect', - 'Object moved temporarily -- see URI list'), - - 400: ('Bad Request', - 'Bad request syntax or unsupported method'), - 401: ('Unauthorized', - 'No permission -- see authorization schemes'), - 402: ('Payment Required', - 'No payment -- see charging schemes'), - 403: ('Forbidden', - 'Request forbidden -- authorization will not help'), - 404: ('Not Found', 'Nothing matches the given URI'), - 405: ('Method Not Allowed', - 'Specified method is invalid for this resource.'), - 406: ('Not Acceptable', 'URI not available in preferred format.'), - 407: ('Proxy Authentication Required', 'You must authenticate with ' - 'this proxy before proceeding.'), - 408: ('Request Timeout', 'Request timed out; try again later.'), - 409: ('Conflict', 'Request conflict.'), - 410: ('Gone', - 'URI no longer exists and has been permanently removed.'), - 411: ('Length Required', 'Client must specify Content-Length.'), - 412: ('Precondition Failed', 'Precondition in headers is false.'), - 413: ('Request Entity Too Large', 'Entity is too large.'), - 414: ('Request-URI Too Long', 'URI is too long.'), - 415: ('Unsupported Media Type', 'Entity body in unsupported format.'), - 416: ('Requested Range Not Satisfiable', - 'Cannot satisfy request range.'), - 417: ('Expectation Failed', - 'Expect condition could not be satisfied.'), - - 500: ('Internal Server Error', 'Server got itself in trouble'), - 501: ('Not Implemented', - 'Server does not support this operation'), - 502: ('Bad Gateway', 'Invalid responses from another server/proxy.'), - 503: ('Service Unavailable', - 'The server cannot process the request due to a high load'), - 504: ('Gateway Timeout', - 'The gateway server did not receive a timely response'), - 505: ('HTTP Version Not Supported', 'Cannot fulfill request.'), - } - - -def test(HandlerClass = BaseHTTPRequestHandler, - ServerClass = HTTPServer, protocol="HTTP/1.0"): - """Test the HTTP request handler class. - - This runs an HTTP server on port 8000 (or the first command line - argument). - - """ - - if sys.argv[1:]: - port = int(sys.argv[1]) - else: - port = 8000 - server_address = ('', port) - - HandlerClass.protocol_version = protocol - httpd = ServerClass(server_address, HandlerClass) - - sa = httpd.socket.getsockname() - print "Serving HTTP on", sa[0], "port", sa[1], "..." - httpd.serve_forever() - - -if __name__ == '__main__': - test() diff --git a/PythonHome/Lib/Bastion.py b/PythonHome/Lib/Bastion.py deleted file mode 100644 index d0dddbfdef..0000000000 --- a/PythonHome/Lib/Bastion.py +++ /dev/null @@ -1,180 +0,0 @@ -"""Bastionification utility. - -A bastion (for another object -- the 'original') is an object that has -the same methods as the original but does not give access to its -instance variables. Bastions have a number of uses, but the most -obvious one is to provide code executing in restricted mode with a -safe interface to an object implemented in unrestricted mode. - -The bastionification routine has an optional second argument which is -a filter function. Only those methods for which the filter method -(called with the method name as argument) returns true are accessible. -The default filter method returns true unless the method name begins -with an underscore. - -There are a number of possible implementations of bastions. We use a -'lazy' approach where the bastion's __getattr__() discipline does all -the work for a particular method the first time it is used. This is -usually fastest, especially if the user doesn't call all available -methods. The retrieved methods are stored as instance variables of -the bastion, so the overhead is only occurred on the first use of each -method. - -Detail: the bastion class has a __repr__() discipline which includes -the repr() of the original object. This is precomputed when the -bastion is created. - -""" -from warnings import warnpy3k -warnpy3k("the Bastion module has been removed in Python 3.0", stacklevel=2) -del warnpy3k - -__all__ = ["BastionClass", "Bastion"] - -from types import MethodType - - -class BastionClass: - - """Helper class used by the Bastion() function. - - You could subclass this and pass the subclass as the bastionclass - argument to the Bastion() function, as long as the constructor has - the same signature (a get() function and a name for the object). - - """ - - def __init__(self, get, name): - """Constructor. - - Arguments: - - get - a function that gets the attribute value (by name) - name - a human-readable name for the original object - (suggestion: use repr(object)) - - """ - self._get_ = get - self._name_ = name - - def __repr__(self): - """Return a representation string. - - This includes the name passed in to the constructor, so that - if you print the bastion during debugging, at least you have - some idea of what it is. - - """ - return "" % self._name_ - - def __getattr__(self, name): - """Get an as-yet undefined attribute value. - - This calls the get() function that was passed to the - constructor. The result is stored as an instance variable so - that the next time the same attribute is requested, - __getattr__() won't be invoked. - - If the get() function raises an exception, this is simply - passed on -- exceptions are not cached. - - """ - attribute = self._get_(name) - self.__dict__[name] = attribute - return attribute - - -def Bastion(object, filter = lambda name: name[:1] != '_', - name=None, bastionclass=BastionClass): - """Create a bastion for an object, using an optional filter. - - See the Bastion module's documentation for background. - - Arguments: - - object - the original object - filter - a predicate that decides whether a function name is OK; - by default all names are OK that don't start with '_' - name - the name of the object; default repr(object) - bastionclass - class used to create the bastion; default BastionClass - - """ - - raise RuntimeError, "This code is not secure in Python 2.2 and later" - - # Note: we define *two* ad-hoc functions here, get1 and get2. - # Both are intended to be called in the same way: get(name). - # It is clear that the real work (getting the attribute - # from the object and calling the filter) is done in get1. - # Why can't we pass get1 to the bastion? Because the user - # would be able to override the filter argument! With get2, - # overriding the default argument is no security loophole: - # all it does is call it. - # Also notice that we can't place the object and filter as - # instance variables on the bastion object itself, since - # the user has full access to all instance variables! - - def get1(name, object=object, filter=filter): - """Internal function for Bastion(). See source comments.""" - if filter(name): - attribute = getattr(object, name) - if type(attribute) == MethodType: - return attribute - raise AttributeError, name - - def get2(name, get1=get1): - """Internal function for Bastion(). See source comments.""" - return get1(name) - - if name is None: - name = repr(object) - return bastionclass(get2, name) - - -def _test(): - """Test the Bastion() function.""" - class Original: - def __init__(self): - self.sum = 0 - def add(self, n): - self._add(n) - def _add(self, n): - self.sum = self.sum + n - def total(self): - return self.sum - o = Original() - b = Bastion(o) - testcode = """if 1: - b.add(81) - b.add(18) - print "b.total() =", b.total() - try: - print "b.sum =", b.sum, - except: - print "inaccessible" - else: - print "accessible" - try: - print "b._add =", b._add, - except: - print "inaccessible" - else: - print "accessible" - try: - print "b._get_.func_defaults =", map(type, b._get_.func_defaults), - except: - print "inaccessible" - else: - print "accessible" - \n""" - exec testcode - print '='*20, "Using rexec:", '='*20 - import rexec - r = rexec.RExec() - m = r.add_module('__main__') - m.b = b - r.r_exec(testcode) - - -if __name__ == '__main__': - _test() diff --git a/PythonHome/Lib/CGIHTTPServer.py b/PythonHome/Lib/CGIHTTPServer.py deleted file mode 100644 index 2acf913155..0000000000 --- a/PythonHome/Lib/CGIHTTPServer.py +++ /dev/null @@ -1,377 +0,0 @@ -"""CGI-savvy HTTP Server. - -This module builds on SimpleHTTPServer by implementing GET and POST -requests to cgi-bin scripts. - -If the os.fork() function is not present (e.g. on Windows), -os.popen2() is used as a fallback, with slightly altered semantics; if -that function is not present either (e.g. on Macintosh), only Python -scripts are supported, and they are executed by the current process. - -In all cases, the implementation is intentionally naive -- all -requests are executed sychronously. - -SECURITY WARNING: DON'T USE THIS CODE UNLESS YOU ARE INSIDE A FIREWALL --- it may execute arbitrary Python code or external programs. - -Note that status code 200 is sent prior to execution of a CGI script, so -scripts cannot send other status codes such as 302 (redirect). -""" - - -__version__ = "0.4" - -__all__ = ["CGIHTTPRequestHandler"] - -import os -import sys -import urllib -import BaseHTTPServer -import SimpleHTTPServer -import select -import copy - - -class CGIHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): - - """Complete HTTP server with GET, HEAD and POST commands. - - GET and HEAD also support running CGI scripts. - - The POST command is *only* implemented for CGI scripts. - - """ - - # Determine platform specifics - have_fork = hasattr(os, 'fork') - have_popen2 = hasattr(os, 'popen2') - have_popen3 = hasattr(os, 'popen3') - - # Make rfile unbuffered -- we need to read one line and then pass - # the rest to a subprocess, so we can't use buffered input. - rbufsize = 0 - - def do_POST(self): - """Serve a POST request. - - This is only implemented for CGI scripts. - - """ - - if self.is_cgi(): - self.run_cgi() - else: - self.send_error(501, "Can only POST to CGI scripts") - - def send_head(self): - """Version of send_head that support CGI scripts""" - if self.is_cgi(): - return self.run_cgi() - else: - return SimpleHTTPServer.SimpleHTTPRequestHandler.send_head(self) - - def is_cgi(self): - """Test whether self.path corresponds to a CGI script. - - Returns True and updates the cgi_info attribute to the tuple - (dir, rest) if self.path requires running a CGI script. - Returns False otherwise. - - If any exception is raised, the caller should assume that - self.path was rejected as invalid and act accordingly. - - The default implementation tests whether the normalized url - path begins with one of the strings in self.cgi_directories - (and the next character is a '/' or the end of the string). - """ - collapsed_path = _url_collapse_path(urllib.unquote(self.path)) - dir_sep = collapsed_path.find('/', 1) - head, tail = collapsed_path[:dir_sep], collapsed_path[dir_sep+1:] - if head in self.cgi_directories: - self.cgi_info = head, tail - return True - return False - - cgi_directories = ['/cgi-bin', '/htbin'] - - def is_executable(self, path): - """Test whether argument path is an executable file.""" - return executable(path) - - def is_python(self, path): - """Test whether argument path is a Python script.""" - head, tail = os.path.splitext(path) - return tail.lower() in (".py", ".pyw") - - def run_cgi(self): - """Execute a CGI script.""" - dir, rest = self.cgi_info - - i = rest.find('/') - while i >= 0: - nextdir = rest[:i] - nextrest = rest[i+1:] - - scriptdir = self.translate_path(nextdir) - if os.path.isdir(scriptdir): - dir, rest = nextdir, nextrest - i = rest.find('/') - else: - break - - # find an explicit query string, if present. - i = rest.rfind('?') - if i >= 0: - rest, query = rest[:i], rest[i+1:] - else: - query = '' - - # dissect the part after the directory name into a script name & - # a possible additional path, to be stored in PATH_INFO. - i = rest.find('/') - if i >= 0: - script, rest = rest[:i], rest[i:] - else: - script, rest = rest, '' - - scriptname = dir + '/' + script - scriptfile = self.translate_path(scriptname) - if not os.path.exists(scriptfile): - self.send_error(404, "No such CGI script (%r)" % scriptname) - return - if not os.path.isfile(scriptfile): - self.send_error(403, "CGI script is not a plain file (%r)" % - scriptname) - return - ispy = self.is_python(scriptname) - if not ispy: - if not (self.have_fork or self.have_popen2 or self.have_popen3): - self.send_error(403, "CGI script is not a Python script (%r)" % - scriptname) - return - if not self.is_executable(scriptfile): - self.send_error(403, "CGI script is not executable (%r)" % - scriptname) - return - - # Reference: http://hoohoo.ncsa.uiuc.edu/cgi/env.html - # XXX Much of the following could be prepared ahead of time! - env = copy.deepcopy(os.environ) - env['SERVER_SOFTWARE'] = self.version_string() - env['SERVER_NAME'] = self.server.server_name - env['GATEWAY_INTERFACE'] = 'CGI/1.1' - env['SERVER_PROTOCOL'] = self.protocol_version - env['SERVER_PORT'] = str(self.server.server_port) - env['REQUEST_METHOD'] = self.command - uqrest = urllib.unquote(rest) - env['PATH_INFO'] = uqrest - env['PATH_TRANSLATED'] = self.translate_path(uqrest) - env['SCRIPT_NAME'] = scriptname - if query: - env['QUERY_STRING'] = query - host = self.address_string() - if host != self.client_address[0]: - env['REMOTE_HOST'] = host - env['REMOTE_ADDR'] = self.client_address[0] - authorization = self.headers.getheader("authorization") - if authorization: - authorization = authorization.split() - if len(authorization) == 2: - import base64, binascii - env['AUTH_TYPE'] = authorization[0] - if authorization[0].lower() == "basic": - try: - authorization = base64.decodestring(authorization[1]) - except binascii.Error: - pass - else: - authorization = authorization.split(':') - if len(authorization) == 2: - env['REMOTE_USER'] = authorization[0] - # XXX REMOTE_IDENT - if self.headers.typeheader is None: - env['CONTENT_TYPE'] = self.headers.type - else: - env['CONTENT_TYPE'] = self.headers.typeheader - length = self.headers.getheader('content-length') - if length: - env['CONTENT_LENGTH'] = length - referer = self.headers.getheader('referer') - if referer: - env['HTTP_REFERER'] = referer - accept = [] - for line in self.headers.getallmatchingheaders('accept'): - if line[:1] in "\t\n\r ": - accept.append(line.strip()) - else: - accept = accept + line[7:].split(',') - env['HTTP_ACCEPT'] = ','.join(accept) - ua = self.headers.getheader('user-agent') - if ua: - env['HTTP_USER_AGENT'] = ua - co = filter(None, self.headers.getheaders('cookie')) - if co: - env['HTTP_COOKIE'] = ', '.join(co) - # XXX Other HTTP_* headers - # Since we're setting the env in the parent, provide empty - # values to override previously set values - for k in ('QUERY_STRING', 'REMOTE_HOST', 'CONTENT_LENGTH', - 'HTTP_USER_AGENT', 'HTTP_COOKIE', 'HTTP_REFERER'): - env.setdefault(k, "") - - self.send_response(200, "Script output follows") - - decoded_query = query.replace('+', ' ') - - if self.have_fork: - # Unix -- fork as we should - args = [script] - if '=' not in decoded_query: - args.append(decoded_query) - nobody = nobody_uid() - self.wfile.flush() # Always flush before forking - pid = os.fork() - if pid != 0: - # Parent - pid, sts = os.waitpid(pid, 0) - # throw away additional data [see bug #427345] - while select.select([self.rfile], [], [], 0)[0]: - if not self.rfile.read(1): - break - if sts: - self.log_error("CGI script exit status %#x", sts) - return - # Child - try: - try: - os.setuid(nobody) - except os.error: - pass - os.dup2(self.rfile.fileno(), 0) - os.dup2(self.wfile.fileno(), 1) - os.execve(scriptfile, args, env) - except: - self.server.handle_error(self.request, self.client_address) - os._exit(127) - - else: - # Non Unix - use subprocess - import subprocess - cmdline = [scriptfile] - if self.is_python(scriptfile): - interp = sys.executable - if interp.lower().endswith("w.exe"): - # On Windows, use python.exe, not pythonw.exe - interp = interp[:-5] + interp[-4:] - cmdline = [interp, '-u'] + cmdline - if '=' not in query: - cmdline.append(query) - - self.log_message("command: %s", subprocess.list2cmdline(cmdline)) - try: - nbytes = int(length) - except (TypeError, ValueError): - nbytes = 0 - p = subprocess.Popen(cmdline, - stdin = subprocess.PIPE, - stdout = subprocess.PIPE, - stderr = subprocess.PIPE, - env = env - ) - if self.command.lower() == "post" and nbytes > 0: - data = self.rfile.read(nbytes) - else: - data = None - # throw away additional data [see bug #427345] - while select.select([self.rfile._sock], [], [], 0)[0]: - if not self.rfile._sock.recv(1): - break - stdout, stderr = p.communicate(data) - self.wfile.write(stdout) - if stderr: - self.log_error('%s', stderr) - p.stderr.close() - p.stdout.close() - status = p.returncode - if status: - self.log_error("CGI script exit status %#x", status) - else: - self.log_message("CGI script exited OK") - - -def _url_collapse_path(path): - """ - Given a URL path, remove extra '/'s and '.' path elements and collapse - any '..' references and returns a colllapsed path. - - Implements something akin to RFC-2396 5.2 step 6 to parse relative paths. - The utility of this function is limited to is_cgi method and helps - preventing some security attacks. - - Returns: A tuple of (head, tail) where tail is everything after the final / - and head is everything before it. Head will always start with a '/' and, - if it contains anything else, never have a trailing '/'. - - Raises: IndexError if too many '..' occur within the path. - - """ - # Similar to os.path.split(os.path.normpath(path)) but specific to URL - # path semantics rather than local operating system semantics. - path_parts = path.split('/') - head_parts = [] - for part in path_parts[:-1]: - if part == '..': - head_parts.pop() # IndexError if more '..' than prior parts - elif part and part != '.': - head_parts.append( part ) - if path_parts: - tail_part = path_parts.pop() - if tail_part: - if tail_part == '..': - head_parts.pop() - tail_part = '' - elif tail_part == '.': - tail_part = '' - else: - tail_part = '' - - splitpath = ('/' + '/'.join(head_parts), tail_part) - collapsed_path = "/".join(splitpath) - - return collapsed_path - - -nobody = None - -def nobody_uid(): - """Internal routine to get nobody's uid""" - global nobody - if nobody: - return nobody - try: - import pwd - except ImportError: - return -1 - try: - nobody = pwd.getpwnam('nobody')[2] - except KeyError: - nobody = 1 + max(map(lambda x: x[2], pwd.getpwall())) - return nobody - - -def executable(path): - """Test for executable file.""" - try: - st = os.stat(path) - except os.error: - return False - return st.st_mode & 0111 != 0 - - -def test(HandlerClass = CGIHTTPRequestHandler, - ServerClass = BaseHTTPServer.HTTPServer): - SimpleHTTPServer.test(HandlerClass, ServerClass) - - -if __name__ == '__main__': - test() diff --git a/PythonHome/Lib/ConfigParser.py b/PythonHome/Lib/ConfigParser.py deleted file mode 100644 index 7e6cdbc30a..0000000000 --- a/PythonHome/Lib/ConfigParser.py +++ /dev/null @@ -1,753 +0,0 @@ -"""Configuration file parser. - -A setup file consists of sections, lead by a "[section]" header, -and followed by "name: value" entries, with continuations and such in -the style of RFC 822. - -The option values can contain format strings which refer to other values in -the same section, or values in a special [DEFAULT] section. - -For example: - - something: %(dir)s/whatever - -would resolve the "%(dir)s" to the value of dir. All reference -expansions are done late, on demand. - -Intrinsic defaults can be specified by passing them into the -ConfigParser constructor as a dictionary. - -class: - -ConfigParser -- responsible for parsing a list of - configuration files, and managing the parsed database. - - methods: - - __init__(defaults=None) - create the parser and specify a dictionary of intrinsic defaults. The - keys must be strings, the values must be appropriate for %()s string - interpolation. Note that `__name__' is always an intrinsic default; - its value is the section's name. - - sections() - return all the configuration section names, sans DEFAULT - - has_section(section) - return whether the given section exists - - has_option(section, option) - return whether the given option exists in the given section - - options(section) - return list of configuration options for the named section - - read(filenames) - read and parse the list of named configuration files, given by - name. A single filename is also allowed. Non-existing files - are ignored. Return list of successfully read files. - - readfp(fp, filename=None) - read and parse one configuration file, given as a file object. - The filename defaults to fp.name; it is only used in error - messages (if fp has no `name' attribute, the string `' is used). - - get(section, option, raw=False, vars=None) - return a string value for the named option. All % interpolations are - expanded in the return values, based on the defaults passed into the - constructor and the DEFAULT section. Additional substitutions may be - provided using the `vars' argument, which must be a dictionary whose - contents override any pre-existing defaults. - - getint(section, options) - like get(), but convert value to an integer - - getfloat(section, options) - like get(), but convert value to a float - - getboolean(section, options) - like get(), but convert value to a boolean (currently case - insensitively defined as 0, false, no, off for False, and 1, true, - yes, on for True). Returns False or True. - - items(section, raw=False, vars=None) - return a list of tuples with (name, value) for each option - in the section. - - remove_section(section) - remove the given file section and all its options - - remove_option(section, option) - remove the given option from the given section - - set(section, option, value) - set the given option - - write(fp) - write the configuration state in .ini format -""" - -try: - from collections import OrderedDict as _default_dict -except ImportError: - # fallback for setup.py which hasn't yet built _collections - _default_dict = dict - -import re - -__all__ = ["NoSectionError", "DuplicateSectionError", "NoOptionError", - "InterpolationError", "InterpolationDepthError", - "InterpolationSyntaxError", "ParsingError", - "MissingSectionHeaderError", - "ConfigParser", "SafeConfigParser", "RawConfigParser", - "DEFAULTSECT", "MAX_INTERPOLATION_DEPTH"] - -DEFAULTSECT = "DEFAULT" - -MAX_INTERPOLATION_DEPTH = 10 - - - -# exception classes -class Error(Exception): - """Base class for ConfigParser exceptions.""" - - def _get_message(self): - """Getter for 'message'; needed only to override deprecation in - BaseException.""" - return self.__message - - def _set_message(self, value): - """Setter for 'message'; needed only to override deprecation in - BaseException.""" - self.__message = value - - # BaseException.message has been deprecated since Python 2.6. To prevent - # DeprecationWarning from popping up over this pre-existing attribute, use - # a new property that takes lookup precedence. - message = property(_get_message, _set_message) - - def __init__(self, msg=''): - self.message = msg - Exception.__init__(self, msg) - - def __repr__(self): - return self.message - - __str__ = __repr__ - -class NoSectionError(Error): - """Raised when no section matches a requested option.""" - - def __init__(self, section): - Error.__init__(self, 'No section: %r' % (section,)) - self.section = section - self.args = (section, ) - -class DuplicateSectionError(Error): - """Raised when a section is multiply-created.""" - - def __init__(self, section): - Error.__init__(self, "Section %r already exists" % section) - self.section = section - self.args = (section, ) - -class NoOptionError(Error): - """A requested option was not found.""" - - def __init__(self, option, section): - Error.__init__(self, "No option %r in section: %r" % - (option, section)) - self.option = option - self.section = section - self.args = (option, section) - -class InterpolationError(Error): - """Base class for interpolation-related exceptions.""" - - def __init__(self, option, section, msg): - Error.__init__(self, msg) - self.option = option - self.section = section - self.args = (option, section, msg) - -class InterpolationMissingOptionError(InterpolationError): - """A string substitution required a setting which was not available.""" - - def __init__(self, option, section, rawval, reference): - msg = ("Bad value substitution:\n" - "\tsection: [%s]\n" - "\toption : %s\n" - "\tkey : %s\n" - "\trawval : %s\n" - % (section, option, reference, rawval)) - InterpolationError.__init__(self, option, section, msg) - self.reference = reference - self.args = (option, section, rawval, reference) - -class InterpolationSyntaxError(InterpolationError): - """Raised when the source text into which substitutions are made - does not conform to the required syntax.""" - -class InterpolationDepthError(InterpolationError): - """Raised when substitutions are nested too deeply.""" - - def __init__(self, option, section, rawval): - msg = ("Value interpolation too deeply recursive:\n" - "\tsection: [%s]\n" - "\toption : %s\n" - "\trawval : %s\n" - % (section, option, rawval)) - InterpolationError.__init__(self, option, section, msg) - self.args = (option, section, rawval) - -class ParsingError(Error): - """Raised when a configuration file does not follow legal syntax.""" - - def __init__(self, filename): - Error.__init__(self, 'File contains parsing errors: %s' % filename) - self.filename = filename - self.errors = [] - self.args = (filename, ) - - def append(self, lineno, line): - self.errors.append((lineno, line)) - self.message += '\n\t[line %2d]: %s' % (lineno, line) - -class MissingSectionHeaderError(ParsingError): - """Raised when a key-value pair is found before any section header.""" - - def __init__(self, filename, lineno, line): - Error.__init__( - self, - 'File contains no section headers.\nfile: %s, line: %d\n%r' % - (filename, lineno, line)) - self.filename = filename - self.lineno = lineno - self.line = line - self.args = (filename, lineno, line) - - -class RawConfigParser: - def __init__(self, defaults=None, dict_type=_default_dict, - allow_no_value=False): - self._dict = dict_type - self._sections = self._dict() - self._defaults = self._dict() - if allow_no_value: - self._optcre = self.OPTCRE_NV - else: - self._optcre = self.OPTCRE - if defaults: - for key, value in defaults.items(): - self._defaults[self.optionxform(key)] = value - - def defaults(self): - return self._defaults - - def sections(self): - """Return a list of section names, excluding [DEFAULT]""" - # self._sections will never have [DEFAULT] in it - return self._sections.keys() - - def add_section(self, section): - """Create a new section in the configuration. - - Raise DuplicateSectionError if a section by the specified name - already exists. Raise ValueError if name is DEFAULT or any of it's - case-insensitive variants. - """ - if section.lower() == "default": - raise ValueError, 'Invalid section name: %s' % section - - if section in self._sections: - raise DuplicateSectionError(section) - self._sections[section] = self._dict() - - def has_section(self, section): - """Indicate whether the named section is present in the configuration. - - The DEFAULT section is not acknowledged. - """ - return section in self._sections - - def options(self, section): - """Return a list of option names for the given section name.""" - try: - opts = self._sections[section].copy() - except KeyError: - raise NoSectionError(section) - opts.update(self._defaults) - if '__name__' in opts: - del opts['__name__'] - return opts.keys() - - def read(self, filenames): - """Read and parse a filename or a list of filenames. - - Files that cannot be opened are silently ignored; this is - designed so that you can specify a list of potential - configuration file locations (e.g. current directory, user's - home directory, systemwide directory), and all existing - configuration files in the list will be read. A single - filename may also be given. - - Return list of successfully read files. - """ - if isinstance(filenames, basestring): - filenames = [filenames] - read_ok = [] - for filename in filenames: - try: - fp = open(filename) - except IOError: - continue - self._read(fp, filename) - fp.close() - read_ok.append(filename) - return read_ok - - def readfp(self, fp, filename=None): - """Like read() but the argument must be a file-like object. - - The `fp' argument must have a `readline' method. Optional - second argument is the `filename', which if not given, is - taken from fp.name. If fp has no `name' attribute, `' is - used. - - """ - if filename is None: - try: - filename = fp.name - except AttributeError: - filename = '' - self._read(fp, filename) - - def get(self, section, option): - opt = self.optionxform(option) - if section not in self._sections: - if section != DEFAULTSECT: - raise NoSectionError(section) - if opt in self._defaults: - return self._defaults[opt] - else: - raise NoOptionError(option, section) - elif opt in self._sections[section]: - return self._sections[section][opt] - elif opt in self._defaults: - return self._defaults[opt] - else: - raise NoOptionError(option, section) - - def items(self, section): - try: - d2 = self._sections[section] - except KeyError: - if section != DEFAULTSECT: - raise NoSectionError(section) - d2 = self._dict() - d = self._defaults.copy() - d.update(d2) - if "__name__" in d: - del d["__name__"] - return d.items() - - def _get(self, section, conv, option): - return conv(self.get(section, option)) - - def getint(self, section, option): - return self._get(section, int, option) - - def getfloat(self, section, option): - return self._get(section, float, option) - - _boolean_states = {'1': True, 'yes': True, 'true': True, 'on': True, - '0': False, 'no': False, 'false': False, 'off': False} - - def getboolean(self, section, option): - v = self.get(section, option) - if v.lower() not in self._boolean_states: - raise ValueError, 'Not a boolean: %s' % v - return self._boolean_states[v.lower()] - - def optionxform(self, optionstr): - return optionstr.lower() - - def has_option(self, section, option): - """Check for the existence of a given option in a given section.""" - if not section or section == DEFAULTSECT: - option = self.optionxform(option) - return option in self._defaults - elif section not in self._sections: - return False - else: - option = self.optionxform(option) - return (option in self._sections[section] - or option in self._defaults) - - def set(self, section, option, value=None): - """Set an option.""" - if not section or section == DEFAULTSECT: - sectdict = self._defaults - else: - try: - sectdict = self._sections[section] - except KeyError: - raise NoSectionError(section) - sectdict[self.optionxform(option)] = value - - def write(self, fp): - """Write an .ini-format representation of the configuration state.""" - if self._defaults: - fp.write("[%s]\n" % DEFAULTSECT) - for (key, value) in self._defaults.items(): - fp.write("%s = %s\n" % (key, str(value).replace('\n', '\n\t'))) - fp.write("\n") - for section in self._sections: - fp.write("[%s]\n" % section) - for (key, value) in self._sections[section].items(): - if key == "__name__": - continue - if (value is not None) or (self._optcre == self.OPTCRE): - key = " = ".join((key, str(value).replace('\n', '\n\t'))) - fp.write("%s\n" % (key)) - fp.write("\n") - - def remove_option(self, section, option): - """Remove an option.""" - if not section or section == DEFAULTSECT: - sectdict = self._defaults - else: - try: - sectdict = self._sections[section] - except KeyError: - raise NoSectionError(section) - option = self.optionxform(option) - existed = option in sectdict - if existed: - del sectdict[option] - return existed - - def remove_section(self, section): - """Remove a file section.""" - existed = section in self._sections - if existed: - del self._sections[section] - return existed - - # - # Regular expressions for parsing section headers and options. - # - SECTCRE = re.compile( - r'\[' # [ - r'(?P

[^]]+)' # very permissive! - r'\]' # ] - ) - OPTCRE = re.compile( - r'(?P