From 233066caf4ce273e2ed24c7b55ba83634ab2dabe Mon Sep 17 00:00:00 2001 From: Senad Uka Date: Sun, 20 Oct 2019 13:16:49 +0200 Subject: [PATCH] Initial commit --- Readme.md | 4 + hamo.py | 62 + requirements.txt | 10 + setup.py | 2 + venv/bin/activate | 78 + venv/bin/activate.csh | 42 + venv/bin/activate.fish | 101 + venv/bin/activate.ps1 | 60 + venv/bin/activate.xsh | 39 + venv/bin/activate_this.py | 46 + venv/bin/chardetect | 8 + venv/bin/easy_install | 11 + venv/bin/easy_install-3.7 | 11 + venv/bin/pip | 11 + venv/bin/pip3 | 11 + venv/bin/pip3.7 | 11 + venv/bin/python | 1 + venv/bin/python-config | 78 + venv/bin/python3 | 1 + venv/bin/python3.7 | Bin 0 -> 14088 bytes venv/bin/translate | 40 + venv/bin/wheel | 11 + venv/include/python3.7m | 1 + venv/lib/python3.7/__future__.py | 1 + .../__pycache__/__future__.cpython-37.pyc | Bin 0 -> 4148 bytes .../__pycache__/_bootlocale.cpython-37.pyc | Bin 0 -> 1265 bytes .../_collections_abc.cpython-37.pyc | Bin 0 -> 28958 bytes .../__pycache__/_weakrefset.cpython-37.pyc | Bin 0 -> 7478 bytes .../python3.7/__pycache__/abc.cpython-37.pyc | Bin 0 -> 6467 bytes .../__pycache__/base64.cpython-37.pyc | Bin 0 -> 17004 bytes .../__pycache__/bisect.cpython-37.pyc | Bin 0 -> 2714 bytes .../__pycache__/codecs.cpython-37.pyc | Bin 0 -> 34091 bytes .../python3.7/__pycache__/copy.cpython-37.pyc | Bin 0 -> 7117 bytes .../__pycache__/copyreg.cpython-37.pyc | Bin 0 -> 4260 bytes .../python3.7/__pycache__/enum.cpython-37.pyc | Bin 0 -> 24287 bytes .../__pycache__/fnmatch.cpython-37.pyc | Bin 0 -> 3353 bytes .../__pycache__/functools.cpython-37.pyc | Bin 0 -> 24231 bytes .../__pycache__/genericpath.cpython-37.pyc | Bin 0 -> 3764 bytes .../__pycache__/hashlib.cpython-37.pyc | Bin 0 -> 6607 bytes .../__pycache__/heapq.cpython-37.pyc | Bin 0 -> 14378 bytes .../python3.7/__pycache__/hmac.cpython-37.pyc | Bin 0 -> 6129 bytes .../python3.7/__pycache__/imp.cpython-37.pyc | Bin 0 -> 9769 bytes .../python3.7/__pycache__/io.cpython-37.pyc | Bin 0 -> 3425 bytes .../__pycache__/keyword.cpython-37.pyc | Bin 0 -> 1825 bytes .../__pycache__/linecache.cpython-37.pyc | Bin 0 -> 3805 bytes .../__pycache__/locale.cpython-37.pyc | Bin 0 -> 34571 bytes .../__pycache__/ntpath.cpython-37.pyc | Bin 0 -> 13020 bytes .../__pycache__/operator.cpython-37.pyc | Bin 0 -> 13916 bytes .../python3.7/__pycache__/os.cpython-37.pyc | Bin 0 -> 29709 bytes .../__pycache__/posixpath.cpython-37.pyc | Bin 0 -> 10445 bytes .../__pycache__/random.cpython-37.pyc | Bin 0 -> 19424 bytes .../python3.7/__pycache__/re.cpython-37.pyc | Bin 0 -> 13820 bytes .../__pycache__/reprlib.cpython-37.pyc | Bin 0 -> 5366 bytes .../__pycache__/rlcompleter.cpython-37.pyc | Bin 0 -> 5763 bytes .../__pycache__/shutil.cpython-37.pyc | Bin 0 -> 30996 bytes .../python3.7/__pycache__/site.cpython-37.pyc | Bin 0 -> 22090 bytes .../__pycache__/sre_compile.cpython-37.pyc | Bin 0 -> 15219 bytes .../__pycache__/sre_constants.cpython-37.pyc | Bin 0 -> 6307 bytes .../__pycache__/sre_parse.cpython-37.pyc | Bin 0 -> 21373 bytes .../python3.7/__pycache__/stat.cpython-37.pyc | Bin 0 -> 3889 bytes .../__pycache__/struct.cpython-37.pyc | Bin 0 -> 350 bytes .../__pycache__/tarfile.cpython-37.pyc | Bin 0 -> 61857 bytes .../__pycache__/tempfile.cpython-37.pyc | Bin 0 -> 22161 bytes .../__pycache__/token.cpython-37.pyc | Bin 0 -> 3615 bytes .../__pycache__/tokenize.cpython-37.pyc | Bin 0 -> 17847 bytes .../__pycache__/types.cpython-37.pyc | Bin 0 -> 8992 bytes .../__pycache__/warnings.cpython-37.pyc | Bin 0 -> 13956 bytes .../__pycache__/weakref.cpython-37.pyc | Bin 0 -> 19590 bytes venv/lib/python3.7/_bootlocale.py | 1 + venv/lib/python3.7/_collections_abc.py | 1 + venv/lib/python3.7/_dummy_thread.py | 1 + venv/lib/python3.7/_weakrefset.py | 1 + venv/lib/python3.7/abc.py | 1 + venv/lib/python3.7/base64.py | 1 + venv/lib/python3.7/bisect.py | 1 + venv/lib/python3.7/codecs.py | 1 + venv/lib/python3.7/collections | 1 + .../python3.7/config-3.7m-x86_64-linux-gnu | 1 + venv/lib/python3.7/copy.py | 1 + venv/lib/python3.7/copyreg.py | 1 + venv/lib/python3.7/distutils/__init__.py | 116 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 2791 bytes venv/lib/python3.7/distutils/distutils.cfg | 6 + venv/lib/python3.7/encodings | 1 + venv/lib/python3.7/enum.py | 1 + venv/lib/python3.7/fnmatch.py | 1 + venv/lib/python3.7/functools.py | 1 + venv/lib/python3.7/genericpath.py | 1 + venv/lib/python3.7/hashlib.py | 1 + venv/lib/python3.7/heapq.py | 1 + venv/lib/python3.7/hmac.py | 1 + venv/lib/python3.7/imp.py | 1 + venv/lib/python3.7/importlib | 1 + venv/lib/python3.7/io.py | 1 + venv/lib/python3.7/keyword.py | 1 + venv/lib/python3.7/lib-dynload | 1 + venv/lib/python3.7/linecache.py | 1 + venv/lib/python3.7/locale.py | 1 + .../lib/python3.7/no-global-site-packages.txt | 0 venv/lib/python3.7/ntpath.py | 1 + venv/lib/python3.7/operator.py | 1 + venv/lib/python3.7/orig-prefix.txt | 1 + venv/lib/python3.7/os.py | 1 + venv/lib/python3.7/posixpath.py | 1 + venv/lib/python3.7/random.py | 1 + venv/lib/python3.7/re.py | 1 + venv/lib/python3.7/reprlib.py | 1 + venv/lib/python3.7/rlcompleter.py | 1 + venv/lib/python3.7/shutil.py | 1 + .../__pycache__/easy_install.cpython-37.pyc | Bin 0 -> 281 bytes .../__pycache__/six.cpython-37.pyc | Bin 0 -> 26358 bytes .../DESCRIPTION.rst | 104 + .../beautifulsoup4-4.8.1.dist-info/INSTALLER | 1 + .../beautifulsoup4-4.8.1.dist-info/METADATA | 130 + .../beautifulsoup4-4.8.1.dist-info/RECORD | 45 + .../beautifulsoup4-4.8.1.dist-info/WHEEL | 5 + .../metadata.json | 1 + .../top_level.txt | 1 + .../python3.7/site-packages/bs4/__init__.py | 655 ++ .../bs4/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 17778 bytes .../__pycache__/check_block.cpython-37.pyc | Bin 0 -> 395 bytes .../bs4/__pycache__/dammit.cpython-37.pyc | Bin 0 -> 18546 bytes .../bs4/__pycache__/diagnose.cpython-37.pyc | Bin 0 -> 7748 bytes .../bs4/__pycache__/element.cpython-37.pyc | Bin 0 -> 42125 bytes .../bs4/__pycache__/formatter.cpython-37.pyc | Bin 0 -> 2959 bytes .../bs4/__pycache__/testing.cpython-37.pyc | Bin 0 -> 42071 bytes .../site-packages/bs4/builder/__init__.py | 392 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 11109 bytes .../__pycache__/_html5lib.cpython-37.pyc | Bin 0 -> 11846 bytes .../__pycache__/_htmlparser.cpython-37.pyc | Bin 0 -> 8990 bytes .../builder/__pycache__/_lxml.cpython-37.pyc | Bin 0 -> 7979 bytes .../site-packages/bs4/builder/_html5lib.py | 455 + .../site-packages/bs4/builder/_htmlparser.py | 358 + .../site-packages/bs4/builder/_lxml.py | 302 + .../site-packages/bs4/check_block.py | 4 + .../lib/python3.7/site-packages/bs4/dammit.py | 871 ++ .../python3.7/site-packages/bs4/diagnose.py | 224 + .../python3.7/site-packages/bs4/element.py | 1603 ++++ .../python3.7/site-packages/bs4/formatter.py | 99 + .../python3.7/site-packages/bs4/testing.py | 992 ++ .../site-packages/bs4/tests/__init__.py | 1 + .../tests/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 185 bytes .../test_builder_registry.cpython-37.pyc | Bin 0 -> 5007 bytes .../__pycache__/test_docs.cpython-37.pyc | Bin 0 -> 409 bytes .../__pycache__/test_html5lib.cpython-37.pyc | Bin 0 -> 7109 bytes .../test_htmlparser.cpython-37.pyc | Bin 0 -> 2928 bytes .../__pycache__/test_lxml.cpython-37.pyc | Bin 0 -> 3910 bytes .../__pycache__/test_soup.cpython-37.pyc | Bin 0 -> 27437 bytes .../__pycache__/test_tree.cpython-37.pyc | Bin 0 -> 92291 bytes .../bs4/tests/test_builder_registry.py | 147 + .../site-packages/bs4/tests/test_docs.py | 36 + .../site-packages/bs4/tests/test_html5lib.py | 184 + .../bs4/tests/test_htmlparser.py | 61 + .../site-packages/bs4/tests/test_lxml.py | 115 + .../site-packages/bs4/tests/test_soup.py | 682 ++ .../site-packages/bs4/tests/test_tree.py | 2254 +++++ .../DESCRIPTION.rst | 50 + .../certifi-2019.9.11.dist-info/INSTALLER | 1 + .../certifi-2019.9.11.dist-info/METADATA | 74 + .../certifi-2019.9.11.dist-info/RECORD | 14 + .../certifi-2019.9.11.dist-info/WHEEL | 6 + .../certifi-2019.9.11.dist-info/metadata.json | 1 + .../certifi-2019.9.11.dist-info/top_level.txt | 1 + .../site-packages/certifi/__init__.py | 3 + .../site-packages/certifi/__main__.py | 2 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 205 bytes .../__pycache__/__main__.cpython-37.pyc | Bin 0 -> 196 bytes .../certifi/__pycache__/core.cpython-37.pyc | Bin 0 -> 417 bytes .../site-packages/certifi/cacert.pem | 4558 +++++++++ .../python3.7/site-packages/certifi/core.py | 15 + .../chardet-3.0.4.dist-info/DESCRIPTION.rst | 70 + .../chardet-3.0.4.dist-info/INSTALLER | 1 + .../chardet-3.0.4.dist-info/METADATA | 96 + .../chardet-3.0.4.dist-info/RECORD | 91 + .../chardet-3.0.4.dist-info/WHEEL | 6 + .../chardet-3.0.4.dist-info/entry_points.txt | 3 + .../chardet-3.0.4.dist-info/metadata.json | 1 + .../chardet-3.0.4.dist-info/top_level.txt | 1 + .../site-packages/chardet/__init__.py | 39 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 792 bytes .../__pycache__/big5freq.cpython-37.pyc | Bin 0 -> 27127 bytes .../__pycache__/big5prober.cpython-37.pyc | Bin 0 -> 1068 bytes .../chardistribution.cpython-37.pyc | Bin 0 -> 6254 bytes .../charsetgroupprober.cpython-37.pyc | Bin 0 -> 2175 bytes .../__pycache__/charsetprober.cpython-37.pyc | Bin 0 -> 3385 bytes .../codingstatemachine.cpython-37.pyc | Bin 0 -> 2832 bytes .../chardet/__pycache__/compat.cpython-37.pyc | Bin 0 -> 303 bytes .../__pycache__/cp949prober.cpython-37.pyc | Bin 0 -> 1075 bytes .../chardet/__pycache__/enums.cpython-37.pyc | Bin 0 -> 2566 bytes .../__pycache__/escprober.cpython-37.pyc | Bin 0 -> 2553 bytes .../chardet/__pycache__/escsm.cpython-37.pyc | Bin 0 -> 7014 bytes .../__pycache__/eucjpprober.cpython-37.pyc | Bin 0 -> 2361 bytes .../__pycache__/euckrfreq.cpython-37.pyc | Bin 0 -> 12011 bytes .../__pycache__/euckrprober.cpython-37.pyc | Bin 0 -> 1076 bytes .../__pycache__/euctwfreq.cpython-37.pyc | Bin 0 -> 27131 bytes .../__pycache__/euctwprober.cpython-37.pyc | Bin 0 -> 1076 bytes .../__pycache__/gb2312freq.cpython-37.pyc | Bin 0 -> 19055 bytes .../__pycache__/gb2312prober.cpython-37.pyc | Bin 0 -> 1084 bytes .../__pycache__/hebrewprober.cpython-37.pyc | Bin 0 -> 2918 bytes .../__pycache__/jisfreq.cpython-37.pyc | Bin 0 -> 22083 bytes .../chardet/__pycache__/jpcntx.cpython-37.pyc | Bin 0 -> 37962 bytes .../langbulgarianmodel.cpython-37.pyc | Bin 0 -> 23576 bytes .../langcyrillicmodel.cpython-37.pyc | Bin 0 -> 29032 bytes .../__pycache__/langgreekmodel.cpython-37.pyc | Bin 0 -> 23534 bytes .../langhebrewmodel.cpython-37.pyc | Bin 0 -> 22163 bytes .../langhungarianmodel.cpython-37.pyc | Bin 0 -> 23565 bytes .../__pycache__/langthaimodel.cpython-37.pyc | Bin 0 -> 22142 bytes .../langturkishmodel.cpython-37.pyc | Bin 0 -> 22165 bytes .../__pycache__/latin1prober.cpython-37.pyc | Bin 0 -> 2875 bytes .../mbcharsetprober.cpython-37.pyc | Bin 0 -> 2180 bytes .../mbcsgroupprober.cpython-37.pyc | Bin 0 -> 1071 bytes .../chardet/__pycache__/mbcssm.cpython-37.pyc | Bin 0 -> 15626 bytes .../sbcharsetprober.cpython-37.pyc | Bin 0 -> 2933 bytes .../sbcsgroupprober.cpython-37.pyc | Bin 0 -> 1561 bytes .../__pycache__/sjisprober.cpython-37.pyc | Bin 0 -> 2387 bytes .../universaldetector.cpython-37.pyc | Bin 0 -> 5777 bytes .../__pycache__/utf8prober.cpython-37.pyc | Bin 0 -> 1918 bytes .../__pycache__/version.cpython-37.pyc | Bin 0 -> 387 bytes .../site-packages/chardet/big5freq.py | 386 + .../site-packages/chardet/big5prober.py | 47 + .../site-packages/chardet/chardistribution.py | 233 + .../chardet/charsetgroupprober.py | 106 + .../site-packages/chardet/charsetprober.py | 145 + .../site-packages/chardet/cli/__init__.py | 1 + .../cli/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 144 bytes .../cli/__pycache__/chardetect.cpython-37.pyc | Bin 0 -> 2597 bytes .../site-packages/chardet/cli/chardetect.py | 85 + .../chardet/codingstatemachine.py | 88 + .../python3.7/site-packages/chardet/compat.py | 34 + .../site-packages/chardet/cp949prober.py | 49 + .../python3.7/site-packages/chardet/enums.py | 76 + .../site-packages/chardet/escprober.py | 101 + .../python3.7/site-packages/chardet/escsm.py | 246 + .../site-packages/chardet/eucjpprober.py | 92 + .../site-packages/chardet/euckrfreq.py | 195 + .../site-packages/chardet/euckrprober.py | 47 + .../site-packages/chardet/euctwfreq.py | 387 + .../site-packages/chardet/euctwprober.py | 46 + .../site-packages/chardet/gb2312freq.py | 283 + .../site-packages/chardet/gb2312prober.py | 46 + .../site-packages/chardet/hebrewprober.py | 292 + .../site-packages/chardet/jisfreq.py | 325 + .../python3.7/site-packages/chardet/jpcntx.py | 233 + .../chardet/langbulgarianmodel.py | 228 + .../chardet/langcyrillicmodel.py | 333 + .../site-packages/chardet/langgreekmodel.py | 225 + .../site-packages/chardet/langhebrewmodel.py | 200 + .../chardet/langhungarianmodel.py | 225 + .../site-packages/chardet/langthaimodel.py | 199 + .../site-packages/chardet/langturkishmodel.py | 193 + .../site-packages/chardet/latin1prober.py | 145 + .../site-packages/chardet/mbcharsetprober.py | 91 + .../site-packages/chardet/mbcsgroupprober.py | 54 + .../python3.7/site-packages/chardet/mbcssm.py | 572 ++ .../site-packages/chardet/sbcharsetprober.py | 132 + .../site-packages/chardet/sbcsgroupprober.py | 73 + .../site-packages/chardet/sjisprober.py | 92 + .../chardet/universaldetector.py | 286 + .../site-packages/chardet/utf8prober.py | 82 + .../site-packages/chardet/version.py | 9 + .../python3.7/site-packages/easy_install.py | 5 + .../googletrans-2.4.0.dist-info/INSTALLER | 1 + .../googletrans-2.4.0.dist-info/METADATA | 290 + .../googletrans-2.4.0.dist-info/RECORD | 24 + .../googletrans-2.4.0.dist-info/WHEEL | 5 + .../googletrans-2.4.0.dist-info/top_level.txt | 1 + .../site-packages/googletrans/__init__.py | 7 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 406 bytes .../__pycache__/adapters.cpython-37.pyc | Bin 0 -> 947 bytes .../__pycache__/client.cpython-37.pyc | Bin 0 -> 8684 bytes .../__pycache__/compat.cpython-37.pyc | Bin 0 -> 313 bytes .../__pycache__/constants.cpython-37.pyc | Bin 0 -> 2194 bytes .../__pycache__/gtoken.cpython-37.pyc | Bin 0 -> 5328 bytes .../__pycache__/models.cpython-37.pyc | Bin 0 -> 2032 bytes .../__pycache__/urls.cpython-37.pyc | Bin 0 -> 307 bytes .../__pycache__/utils.cpython-37.pyc | Bin 0 -> 1554 bytes .../site-packages/googletrans/adapters.py | 16 + .../site-packages/googletrans/client.py | 262 + .../site-packages/googletrans/compat.py | 11 + .../site-packages/googletrans/constants.py | 116 + .../site-packages/googletrans/gtoken.py | 202 + .../site-packages/googletrans/models.py | 43 + .../site-packages/googletrans/urls.py | 6 + .../site-packages/googletrans/utils.py | 70 + .../idna-2.8.dist-info/INSTALLER | 1 + .../idna-2.8.dist-info/LICENSE.rst | 80 + .../site-packages/idna-2.8.dist-info/METADATA | 239 + .../site-packages/idna-2.8.dist-info/RECORD | 22 + .../site-packages/idna-2.8.dist-info/WHEEL | 6 + .../idna-2.8.dist-info/top_level.txt | 1 + .../python3.7/site-packages/idna/__init__.py | 2 + .../idna/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 203 bytes .../idna/__pycache__/codec.cpython-37.pyc | Bin 0 -> 3010 bytes .../idna/__pycache__/compat.cpython-37.pyc | Bin 0 -> 563 bytes .../idna/__pycache__/core.cpython-37.pyc | Bin 0 -> 9006 bytes .../idna/__pycache__/idnadata.cpython-37.pyc | Bin 0 -> 21377 bytes .../idna/__pycache__/intranges.cpython-37.pyc | Bin 0 -> 1743 bytes .../__pycache__/package_data.cpython-37.pyc | Bin 0 -> 157 bytes .../idna/__pycache__/uts46data.cpython-37.pyc | Bin 0 -> 176037 bytes .../lib/python3.7/site-packages/idna/codec.py | 118 + .../python3.7/site-packages/idna/compat.py | 12 + venv/lib/python3.7/site-packages/idna/core.py | 396 + .../python3.7/site-packages/idna/idnadata.py | 1979 ++++ .../python3.7/site-packages/idna/intranges.py | 53 + .../site-packages/idna/package_data.py | 2 + .../python3.7/site-packages/idna/uts46data.py | 8205 +++++++++++++++++ .../nltk-3.4.5.dist-info/INSTALLER | 1 + .../nltk-3.4.5.dist-info/LICENSE.txt | 13 + .../nltk-3.4.5.dist-info/METADATA | 62 + .../site-packages/nltk-3.4.5.dist-info/RECORD | 753 ++ .../site-packages/nltk-3.4.5.dist-info/WHEEL | 5 + .../nltk-3.4.5.dist-info/top_level.txt | 1 + venv/lib/python3.7/site-packages/nltk/VERSION | 1 + .../python3.7/site-packages/nltk/__init__.py | 205 + .../nltk/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 4924 bytes .../nltk/__pycache__/book.cpython-37.pyc | Bin 0 -> 3266 bytes .../__pycache__/collections.cpython-37.pyc | Bin 0 -> 23621 bytes .../__pycache__/collocations.cpython-37.pyc | Bin 0 -> 14966 bytes .../nltk/__pycache__/compat.cpython-37.pyc | Bin 0 -> 10160 bytes .../nltk/__pycache__/data.cpython-37.pyc | Bin 0 -> 41346 bytes .../__pycache__/decorators.cpython-37.pyc | Bin 0 -> 5896 bytes .../__pycache__/downloader.cpython-37.pyc | Bin 0 -> 62300 bytes .../__pycache__/featstruct.cpython-37.pyc | Bin 0 -> 75410 bytes .../nltk/__pycache__/grammar.cpython-37.pyc | Bin 0 -> 53917 bytes .../nltk/__pycache__/help.cpython-37.pyc | Bin 0 -> 1636 bytes .../nltk/__pycache__/internals.cpython-37.pyc | Bin 0 -> 28874 bytes .../nltk/__pycache__/jsontags.cpython-37.pyc | Bin 0 -> 2217 bytes .../__pycache__/lazyimport.cpython-37.pyc | Bin 0 -> 3772 bytes .../__pycache__/probability.cpython-37.pyc | Bin 0 -> 86586 bytes .../nltk/__pycache__/text.cpython-37.pyc | Bin 0 -> 27608 bytes .../nltk/__pycache__/tgrep.cpython-37.pyc | Bin 0 -> 37702 bytes .../nltk/__pycache__/toolbox.cpython-37.pyc | Bin 0 -> 15912 bytes .../nltk/__pycache__/tree.cpython-37.pyc | Bin 0 -> 56111 bytes .../treeprettyprinter.cpython-37.pyc | Bin 0 -> 20657 bytes .../__pycache__/treetransforms.cpython-37.pyc | Bin 0 -> 9392 bytes .../nltk/__pycache__/util.cpython-37.pyc | Bin 0 -> 21100 bytes .../nltk/__pycache__/wsd.cpython-37.pyc | Bin 0 -> 1785 bytes .../site-packages/nltk/app/__init__.py | 55 + .../app/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 1507 bytes .../chartparser_app.cpython-37.pyc | Bin 0 -> 63561 bytes .../chunkparser_app.cpython-37.pyc | Bin 0 -> 33314 bytes .../collocations_app.cpython-37.pyc | Bin 0 -> 14686 bytes .../concordance_app.cpython-37.pyc | Bin 0 -> 22727 bytes .../app/__pycache__/nemo_app.cpython-37.pyc | Bin 0 -> 12210 bytes .../__pycache__/rdparser_app.cpython-37.pyc | Bin 0 -> 26009 bytes .../__pycache__/srparser_app.cpython-37.pyc | Bin 0 -> 21934 bytes .../__pycache__/wordfreq_app.cpython-37.pyc | Bin 0 -> 1424 bytes .../__pycache__/wordnet_app.cpython-37.pyc | Bin 0 -> 30852 bytes .../site-packages/nltk/app/chartparser_app.py | 2576 ++++++ .../site-packages/nltk/app/chunkparser_app.py | 1504 +++ .../nltk/app/collocations_app.py | 442 + .../site-packages/nltk/app/concordance_app.py | 711 ++ .../site-packages/nltk/app/nemo_app.py | 174 + .../site-packages/nltk/app/rdparser_app.py | 1053 +++ .../site-packages/nltk/app/srparser_app.py | 937 ++ .../site-packages/nltk/app/wordfreq_app.py | 35 + .../site-packages/nltk/app/wordnet_app.py | 1009 ++ venv/lib/python3.7/site-packages/nltk/book.py | 214 + .../site-packages/nltk/ccg/__init__.py | 34 + .../ccg/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 932 bytes .../nltk/ccg/__pycache__/api.cpython-37.pyc | Bin 0 -> 11948 bytes .../nltk/ccg/__pycache__/chart.cpython-37.pyc | Bin 0 -> 13231 bytes .../ccg/__pycache__/combinator.cpython-37.pyc | Bin 0 -> 9831 bytes .../ccg/__pycache__/lexicon.cpython-37.pyc | Bin 0 -> 7879 bytes .../nltk/ccg/__pycache__/logic.cpython-37.pyc | Bin 0 -> 1494 bytes .../python3.7/site-packages/nltk/ccg/api.py | 366 + .../python3.7/site-packages/nltk/ccg/chart.py | 485 + .../site-packages/nltk/ccg/combinator.py | 352 + .../site-packages/nltk/ccg/lexicon.py | 344 + .../python3.7/site-packages/nltk/ccg/logic.py | 60 + .../site-packages/nltk/chat/__init__.py | 52 + .../chat/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 1426 bytes .../chat/__pycache__/eliza.cpython-37.pyc | Bin 0 -> 5901 bytes .../chat/__pycache__/iesha.cpython-37.pyc | Bin 0 -> 3233 bytes .../nltk/chat/__pycache__/rude.cpython-37.pyc | Bin 0 -> 2387 bytes .../chat/__pycache__/suntsu.cpython-37.pyc | Bin 0 -> 6148 bytes .../nltk/chat/__pycache__/util.cpython-37.pyc | Bin 0 -> 3691 bytes .../nltk/chat/__pycache__/zen.cpython-37.pyc | Bin 0 -> 6516 bytes .../site-packages/nltk/chat/eliza.py | 338 + .../site-packages/nltk/chat/iesha.py | 161 + .../python3.7/site-packages/nltk/chat/rude.py | 126 + .../site-packages/nltk/chat/suntsu.py | 141 + .../python3.7/site-packages/nltk/chat/util.py | 128 + .../python3.7/site-packages/nltk/chat/zen.py | 330 + .../site-packages/nltk/chunk/__init__.py | 199 + .../chunk/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 7266 bytes .../nltk/chunk/__pycache__/api.cpython-37.pyc | Bin 0 -> 1703 bytes .../__pycache__/named_entity.cpython-37.pyc | Bin 0 -> 9342 bytes .../chunk/__pycache__/regexp.cpython-37.pyc | Bin 0 -> 48466 bytes .../chunk/__pycache__/util.cpython-37.pyc | Bin 0 -> 17965 bytes .../python3.7/site-packages/nltk/chunk/api.py | 52 + .../site-packages/nltk/chunk/named_entity.py | 354 + .../site-packages/nltk/chunk/regexp.py | 1488 +++ .../site-packages/nltk/chunk/util.py | 646 ++ .../site-packages/nltk/classify/__init__.py | 101 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 4651 bytes .../classify/__pycache__/api.cpython-37.pyc | Bin 0 -> 5645 bytes .../__pycache__/decisiontree.cpython-37.pyc | Bin 0 -> 9409 bytes .../__pycache__/maxent.cpython-37.pyc | Bin 0 -> 47579 bytes .../classify/__pycache__/megam.cpython-37.pyc | Bin 0 -> 5259 bytes .../__pycache__/naivebayes.cpython-37.pyc | Bin 0 -> 7747 bytes .../positivenaivebayes.cpython-37.pyc | Bin 0 -> 5290 bytes .../__pycache__/rte_classify.cpython-37.pyc | Bin 0 -> 5823 bytes .../__pycache__/scikitlearn.cpython-37.pyc | Bin 0 -> 6305 bytes .../classify/__pycache__/senna.cpython-37.pyc | Bin 0 -> 6088 bytes .../classify/__pycache__/svm.cpython-37.pyc | Bin 0 -> 659 bytes .../classify/__pycache__/tadm.cpython-37.pyc | Bin 0 -> 3376 bytes .../__pycache__/textcat.cpython-37.pyc | Bin 0 -> 4887 bytes .../classify/__pycache__/util.cpython-37.pyc | Bin 0 -> 11251 bytes .../classify/__pycache__/weka.cpython-37.pyc | Bin 0 -> 10098 bytes .../site-packages/nltk/classify/api.py | 195 + .../nltk/classify/decisiontree.py | 350 + .../site-packages/nltk/classify/maxent.py | 1580 ++++ .../site-packages/nltk/classify/megam.py | 189 + .../site-packages/nltk/classify/naivebayes.py | 256 + .../nltk/classify/positivenaivebayes.py | 181 + .../nltk/classify/rte_classify.py | 180 + .../nltk/classify/scikitlearn.py | 157 + .../site-packages/nltk/classify/senna.py | 195 + .../site-packages/nltk/classify/svm.py | 17 + .../site-packages/nltk/classify/tadm.py | 124 + .../site-packages/nltk/classify/textcat.py | 208 + .../site-packages/nltk/classify/util.py | 344 + .../site-packages/nltk/classify/weka.py | 382 + .../site-packages/nltk/cluster/__init__.py | 90 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 4282 bytes .../cluster/__pycache__/api.cpython-37.pyc | Bin 0 -> 2424 bytes .../cluster/__pycache__/em.cpython-37.pyc | Bin 0 -> 6927 bytes .../cluster/__pycache__/gaac.cpython-37.pyc | Bin 0 -> 5090 bytes .../cluster/__pycache__/kmeans.cpython-37.pyc | Bin 0 -> 6800 bytes .../cluster/__pycache__/util.cpython-37.pyc | Bin 0 -> 9941 bytes .../site-packages/nltk/cluster/api.py | 76 + .../site-packages/nltk/cluster/em.py | 257 + .../site-packages/nltk/cluster/gaac.py | 173 + .../site-packages/nltk/cluster/kmeans.py | 234 + .../site-packages/nltk/cluster/util.py | 303 + .../site-packages/nltk/collections.py | 665 ++ .../site-packages/nltk/collocations.py | 408 + .../python3.7/site-packages/nltk/compat.py | 373 + .../site-packages/nltk/corpus/__init__.py | 493 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 9456 bytes .../__pycache__/europarl_raw.cpython-37.pyc | Bin 0 -> 966 bytes .../corpus/__pycache__/util.cpython-37.pyc | Bin 0 -> 4592 bytes .../site-packages/nltk/corpus/europarl_raw.py | 55 + .../nltk/corpus/reader/__init__.py | 183 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 5857 bytes .../reader/__pycache__/aligned.cpython-37.pyc | Bin 0 -> 4816 bytes .../reader/__pycache__/api.cpython-37.pyc | Bin 0 -> 18291 bytes .../reader/__pycache__/bnc.cpython-37.pyc | Bin 0 -> 9375 bytes .../__pycache__/bracket_parse.cpython-37.pyc | Bin 0 -> 10766 bytes .../categorized_sents.cpython-37.pyc | Bin 0 -> 7311 bytes .../reader/__pycache__/chasen.cpython-37.pyc | Bin 0 -> 5805 bytes .../reader/__pycache__/childes.cpython-37.pyc | Bin 0 -> 19342 bytes .../reader/__pycache__/chunked.cpython-37.pyc | Bin 0 -> 9766 bytes .../reader/__pycache__/cmudict.cpython-37.pyc | Bin 0 -> 4161 bytes .../comparative_sents.cpython-37.pyc | Bin 0 -> 10916 bytes .../reader/__pycache__/conll.cpython-37.pyc | Bin 0 -> 17743 bytes .../__pycache__/crubadan.cpython-37.pyc | Bin 0 -> 4156 bytes .../__pycache__/dependency.cpython-37.pyc | Bin 0 -> 4808 bytes .../__pycache__/framenet.cpython-37.pyc | Bin 0 -> 106737 bytes .../reader/__pycache__/ieer.cpython-37.pyc | Bin 0 -> 4356 bytes .../reader/__pycache__/indian.cpython-37.pyc | Bin 0 -> 4161 bytes .../reader/__pycache__/ipipan.cpython-37.pyc | Bin 0 -> 11970 bytes .../reader/__pycache__/knbc.cpython-37.pyc | Bin 0 -> 6024 bytes .../reader/__pycache__/lin.cpython-37.pyc | Bin 0 -> 5949 bytes .../reader/__pycache__/mte.cpython-37.pyc | Bin 0 -> 17330 bytes .../reader/__pycache__/nkjp.cpython-37.pyc | Bin 0 -> 15302 bytes .../reader/__pycache__/nombank.cpython-37.pyc | Bin 0 -> 14507 bytes .../__pycache__/nps_chat.cpython-37.pyc | Bin 0 -> 4030 bytes .../opinion_lexicon.cpython-37.pyc | Bin 0 -> 4360 bytes .../__pycache__/panlex_lite.cpython-37.pyc | Bin 0 -> 5881 bytes .../__pycache__/panlex_swadesh.cpython-37.pyc | Bin 0 -> 4228 bytes .../reader/__pycache__/pl196x.cpython-37.pyc | Bin 0 -> 9521 bytes .../__pycache__/plaintext.cpython-37.pyc | Bin 0 -> 10435 bytes .../__pycache__/ppattach.cpython-37.pyc | Bin 0 -> 3874 bytes .../__pycache__/propbank.cpython-37.pyc | Bin 0 -> 16092 bytes .../__pycache__/pros_cons.cpython-37.pyc | Bin 0 -> 5050 bytes .../reader/__pycache__/reviews.cpython-37.pyc | Bin 0 -> 13050 bytes .../reader/__pycache__/rte.cpython-37.pyc | Bin 0 -> 4986 bytes .../reader/__pycache__/semcor.cpython-37.pyc | Bin 0 -> 9150 bytes .../__pycache__/senseval.cpython-37.pyc | Bin 0 -> 6012 bytes .../__pycache__/sentiwordnet.cpython-37.pyc | Bin 0 -> 5225 bytes .../sinica_treebank.cpython-37.pyc | Bin 0 -> 3019 bytes .../string_category.cpython-37.pyc | Bin 0 -> 2421 bytes .../__pycache__/switchboard.cpython-37.pyc | Bin 0 -> 6220 bytes .../reader/__pycache__/tagged.cpython-37.pyc | Bin 0 -> 12523 bytes .../reader/__pycache__/timit.cpython-37.pyc | Bin 0 -> 17200 bytes .../reader/__pycache__/toolbox.cpython-37.pyc | Bin 0 -> 2629 bytes .../reader/__pycache__/twitter.cpython-37.pyc | Bin 0 -> 5046 bytes .../reader/__pycache__/udhr.cpython-37.pyc | Bin 0 -> 2292 bytes .../reader/__pycache__/util.cpython-37.pyc | Bin 0 -> 23350 bytes .../reader/__pycache__/verbnet.cpython-37.pyc | Bin 0 -> 21498 bytes .../__pycache__/wordlist.cpython-37.pyc | Bin 0 -> 6511 bytes .../reader/__pycache__/wordnet.cpython-37.pyc | Bin 0 -> 64182 bytes .../reader/__pycache__/xmldocs.cpython-37.pyc | Bin 0 -> 11327 bytes .../reader/__pycache__/ycoe.cpython-37.pyc | Bin 0 -> 10683 bytes .../nltk/corpus/reader/aligned.py | 168 + .../site-packages/nltk/corpus/reader/api.py | 484 + .../site-packages/nltk/corpus/reader/bnc.py | 258 + .../nltk/corpus/reader/bracket_parse.py | 271 + .../nltk/corpus/reader/categorized_sents.py | 199 + .../nltk/corpus/reader/chasen.py | 171 + .../nltk/corpus/reader/childes.py | 633 ++ .../nltk/corpus/reader/chunked.py | 285 + .../nltk/corpus/reader/cmudict.py | 99 + .../nltk/corpus/reader/comparative_sents.py | 328 + .../site-packages/nltk/corpus/reader/conll.py | 592 ++ .../nltk/corpus/reader/crubadan.py | 119 + .../nltk/corpus/reader/dependency.py | 134 + .../nltk/corpus/reader/framenet.py | 3459 +++++++ .../site-packages/nltk/corpus/reader/ieer.py | 129 + .../nltk/corpus/reader/indian.py | 103 + .../nltk/corpus/reader/ipipan.py | 368 + .../site-packages/nltk/corpus/reader/knbc.py | 194 + .../site-packages/nltk/corpus/reader/lin.py | 184 + .../site-packages/nltk/corpus/reader/mte.py | 414 + .../site-packages/nltk/corpus/reader/nkjp.py | 489 + .../nltk/corpus/reader/nombank.py | 485 + .../nltk/corpus/reader/nps_chat.py | 92 + .../nltk/corpus/reader/opinion_lexicon.py | 123 + .../nltk/corpus/reader/panlex_lite.py | 174 + .../nltk/corpus/reader/panlex_swadesh.py | 94 + .../nltk/corpus/reader/pl196x.py | 383 + .../nltk/corpus/reader/plaintext.py | 263 + .../nltk/corpus/reader/ppattach.py | 107 + .../nltk/corpus/reader/propbank.py | 539 ++ .../nltk/corpus/reader/pros_cons.py | 143 + .../nltk/corpus/reader/reviews.py | 355 + .../site-packages/nltk/corpus/reader/rte.py | 151 + .../nltk/corpus/reader/semcor.py | 297 + .../nltk/corpus/reader/senseval.py | 212 + .../nltk/corpus/reader/sentiwordnet.py | 139 + .../nltk/corpus/reader/sinica_treebank.py | 76 + .../nltk/corpus/reader/string_category.py | 67 + .../nltk/corpus/reader/switchboard.py | 129 + .../nltk/corpus/reader/tagged.py | 394 + .../site-packages/nltk/corpus/reader/timit.py | 499 + .../nltk/corpus/reader/toolbox.py | 83 + .../nltk/corpus/reader/twitter.py | 153 + .../site-packages/nltk/corpus/reader/udhr.py | 77 + .../site-packages/nltk/corpus/reader/util.py | 870 ++ .../nltk/corpus/reader/verbnet.py | 627 ++ .../nltk/corpus/reader/wordlist.py | 176 + .../nltk/corpus/reader/wordnet.py | 2178 +++++ .../nltk/corpus/reader/xmldocs.py | 411 + .../site-packages/nltk/corpus/reader/ycoe.py | 261 + .../site-packages/nltk/corpus/util.py | 156 + venv/lib/python3.7/site-packages/nltk/data.py | 1555 ++++ .../site-packages/nltk/decorators.py | 236 + .../site-packages/nltk/downloader.py | 2559 +++++ .../site-packages/nltk/draw/__init__.py | 33 + .../draw/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 864 bytes .../nltk/draw/__pycache__/cfg.cpython-37.pyc | Bin 0 -> 20635 bytes .../__pycache__/dispersion.cpython-37.pyc | Bin 0 -> 1695 bytes .../draw/__pycache__/table.cpython-37.pyc | Bin 0 -> 38991 bytes .../nltk/draw/__pycache__/tree.cpython-37.pyc | Bin 0 -> 28800 bytes .../nltk/draw/__pycache__/util.cpython-37.pyc | Bin 0 -> 80459 bytes .../python3.7/site-packages/nltk/draw/cfg.py | 861 ++ .../site-packages/nltk/draw/dispersion.py | 66 + .../site-packages/nltk/draw/table.py | 1183 +++ .../python3.7/site-packages/nltk/draw/tree.py | 1129 +++ .../python3.7/site-packages/nltk/draw/util.py | 2574 ++++++ .../site-packages/nltk/featstruct.py | 2796 ++++++ .../python3.7/site-packages/nltk/grammar.py | 1731 ++++ venv/lib/python3.7/site-packages/nltk/help.py | 65 + .../site-packages/nltk/inference/__init__.py | 24 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 817 bytes .../inference/__pycache__/api.cpython-37.pyc | Bin 0 -> 21441 bytes .../__pycache__/discourse.cpython-37.pyc | Bin 0 -> 20979 bytes .../inference/__pycache__/mace.cpython-37.pyc | Bin 0 -> 10658 bytes .../__pycache__/nonmonotonic.cpython-37.pyc | Bin 0 -> 16673 bytes .../__pycache__/prover9.cpython-37.pyc | Bin 0 -> 12765 bytes .../__pycache__/resolution.cpython-37.pyc | Bin 0 -> 21246 bytes .../__pycache__/tableau.cpython-37.pyc | Bin 0 -> 18841 bytes .../site-packages/nltk/inference/api.py | 620 ++ .../site-packages/nltk/inference/discourse.py | 670 ++ .../site-packages/nltk/inference/mace.py | 385 + .../nltk/inference/nonmonotonic.py | 563 ++ .../site-packages/nltk/inference/prover9.py | 509 + .../nltk/inference/resolution.py | 765 ++ .../site-packages/nltk/inference/tableau.py | 715 ++ .../python3.7/site-packages/nltk/internals.py | 1143 +++ .../python3.7/site-packages/nltk/jsontags.py | 66 + .../site-packages/nltk/lazyimport.py | 145 + .../site-packages/nltk/lm/__init__.py | 240 + .../lm/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 7646 bytes .../nltk/lm/__pycache__/api.cpython-37.pyc | Bin 0 -> 8435 bytes .../lm/__pycache__/counter.cpython-37.pyc | Bin 0 -> 5550 bytes .../nltk/lm/__pycache__/models.cpython-37.pyc | Bin 0 -> 4125 bytes .../__pycache__/preprocessing.cpython-37.pyc | Bin 0 -> 1773 bytes .../lm/__pycache__/smoothing.cpython-37.pyc | Bin 0 -> 2770 bytes .../nltk/lm/__pycache__/util.cpython-37.pyc | Bin 0 -> 468 bytes .../lm/__pycache__/vocabulary.cpython-37.pyc | Bin 0 -> 8248 bytes .../python3.7/site-packages/nltk/lm/api.py | 252 + .../site-packages/nltk/lm/counter.py | 168 + .../python3.7/site-packages/nltk/lm/models.py | 100 + .../site-packages/nltk/lm/preprocessing.py | 51 + .../site-packages/nltk/lm/smoothing.py | 61 + .../python3.7/site-packages/nltk/lm/util.py | 20 + .../site-packages/nltk/lm/vocabulary.py | 248 + .../site-packages/nltk/metrics/__init__.py | 51 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 1276 bytes .../__pycache__/agreement.cpython-37.pyc | Bin 0 -> 16920 bytes .../metrics/__pycache__/aline.cpython-37.pyc | Bin 0 -> 12517 bytes .../__pycache__/association.cpython-37.pyc | Bin 0 -> 15643 bytes .../confusionmatrix.cpython-37.pyc | Bin 0 -> 6986 bytes .../__pycache__/distance.cpython-37.pyc | Bin 0 -> 14283 bytes .../metrics/__pycache__/paice.cpython-37.pyc | Bin 0 -> 11288 bytes .../metrics/__pycache__/scores.cpython-37.pyc | Bin 0 -> 7742 bytes .../__pycache__/segmentation.cpython-37.pyc | Bin 0 -> 6783 bytes .../__pycache__/spearman.cpython-37.pyc | Bin 0 -> 2218 bytes .../site-packages/nltk/metrics/agreement.py | 495 + .../site-packages/nltk/metrics/aline.py | 1356 +++ .../site-packages/nltk/metrics/association.py | 465 + .../nltk/metrics/confusionmatrix.py | 218 + .../site-packages/nltk/metrics/distance.py | 487 + .../site-packages/nltk/metrics/paice.py | 389 + .../site-packages/nltk/metrics/scores.py | 231 + .../nltk/metrics/segmentation.py | 234 + .../site-packages/nltk/metrics/spearman.py | 69 + .../site-packages/nltk/misc/__init__.py | 11 + .../misc/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 366 bytes .../misc/__pycache__/babelfish.cpython-37.pyc | Bin 0 -> 631 bytes .../misc/__pycache__/chomsky.cpython-37.pyc | Bin 0 -> 5140 bytes .../__pycache__/minimalset.cpython-37.pyc | Bin 0 -> 2911 bytes .../nltk/misc/__pycache__/sort.cpython-37.pyc | Bin 0 -> 3478 bytes .../__pycache__/wordfinder.cpython-37.pyc | Bin 0 -> 4079 bytes .../site-packages/nltk/misc/babelfish.py | 11 + .../site-packages/nltk/misc/chomsky.py | 136 + .../site-packages/nltk/misc/minimalset.py | 85 + .../python3.7/site-packages/nltk/misc/sort.py | 180 + .../site-packages/nltk/misc/wordfinder.py | 140 + .../site-packages/nltk/parse/__init__.py | 102 + .../parse/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 3894 bytes .../nltk/parse/__pycache__/api.cpython-37.pyc | Bin 0 -> 2575 bytes .../parse/__pycache__/bllip.cpython-37.pyc | Bin 0 -> 7303 bytes .../parse/__pycache__/chart.cpython-37.pyc | Bin 0 -> 54965 bytes .../parse/__pycache__/corenlp.cpython-37.pyc | Bin 0 -> 23686 bytes .../dependencygraph.cpython-37.pyc | Bin 0 -> 29498 bytes .../__pycache__/earleychart.cpython-37.pyc | Bin 0 -> 16687 bytes .../parse/__pycache__/evaluate.cpython-37.pyc | Bin 0 -> 4057 bytes .../__pycache__/featurechart.cpython-37.pyc | Bin 0 -> 19038 bytes .../parse/__pycache__/generate.cpython-37.pyc | Bin 0 -> 2186 bytes .../parse/__pycache__/malt.cpython-37.pyc | Bin 0 -> 10009 bytes ...nprojectivedependencyparser.cpython-37.pyc | Bin 0 -> 21739 bytes .../parse/__pycache__/pchart.cpython-37.pyc | Bin 0 -> 17492 bytes .../projectivedependencyparser.cpython-37.pyc | Bin 0 -> 18896 bytes .../recursivedescent.cpython-37.pyc | Bin 0 -> 23794 bytes .../__pycache__/shiftreduce.cpython-37.pyc | Bin 0 -> 15470 bytes .../parse/__pycache__/stanford.cpython-37.pyc | Bin 0 -> 18080 bytes .../transitionparser.cpython-37.pyc | Bin 0 -> 21412 bytes .../parse/__pycache__/util.cpython-37.pyc | Bin 0 -> 7341 bytes .../parse/__pycache__/viterbi.cpython-37.pyc | Bin 0 -> 14681 bytes .../python3.7/site-packages/nltk/parse/api.py | 72 + .../site-packages/nltk/parse/bllip.py | 314 + .../site-packages/nltk/parse/chart.py | 1863 ++++ .../site-packages/nltk/parse/corenlp.py | 775 ++ .../nltk/parse/dependencygraph.py | 785 ++ .../site-packages/nltk/parse/earleychart.py | 556 ++ .../site-packages/nltk/parse/evaluate.py | 131 + .../site-packages/nltk/parse/featurechart.py | 681 ++ .../site-packages/nltk/parse/generate.py | 90 + .../site-packages/nltk/parse/malt.py | 399 + .../parse/nonprojectivedependencyparser.py | 778 ++ .../site-packages/nltk/parse/pchart.py | 581 ++ .../nltk/parse/projectivedependencyparser.py | 718 ++ .../nltk/parse/recursivedescent.py | 690 ++ .../site-packages/nltk/parse/shiftreduce.py | 481 + .../site-packages/nltk/parse/stanford.py | 492 + .../nltk/parse/transitionparser.py | 792 ++ .../site-packages/nltk/parse/util.py | 236 + .../site-packages/nltk/parse/viterbi.py | 415 + .../site-packages/nltk/probability.py | 2539 +++++ .../site-packages/nltk/sem/__init__.py | 75 + .../sem/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 2325 bytes .../nltk/sem/__pycache__/boxer.cpython-37.pyc | Bin 0 -> 46850 bytes .../sem/__pycache__/chat80.cpython-37.pyc | Bin 0 -> 21374 bytes .../__pycache__/cooper_storage.cpython-37.pyc | Bin 0 -> 3847 bytes .../nltk/sem/__pycache__/drt.cpython-37.pyc | Bin 0 -> 46165 bytes .../__pycache__/drt_glue_demo.cpython-37.pyc | Bin 0 -> 13247 bytes .../sem/__pycache__/evaluate.cpython-37.pyc | Bin 0 -> 22185 bytes .../nltk/sem/__pycache__/glue.cpython-37.pyc | Bin 0 -> 19910 bytes .../nltk/sem/__pycache__/hole.cpython-37.pyc | Bin 0 -> 11229 bytes .../nltk/sem/__pycache__/lfg.cpython-37.pyc | Bin 0 -> 6170 bytes .../__pycache__/linearlogic.cpython-37.pyc | Bin 0 -> 17817 bytes .../nltk/sem/__pycache__/logic.cpython-37.pyc | Bin 0 -> 66777 bytes .../sem/__pycache__/relextract.cpython-37.pyc | Bin 0 -> 13626 bytes .../sem/__pycache__/skolemize.cpython-37.pyc | Bin 0 -> 2306 bytes .../nltk/sem/__pycache__/util.cpython-37.pyc | Bin 0 -> 8044 bytes .../python3.7/site-packages/nltk/sem/boxer.py | 1613 ++++ .../site-packages/nltk/sem/chat80.py | 863 ++ .../site-packages/nltk/sem/cooper_storage.py | 125 + .../python3.7/site-packages/nltk/sem/drt.py | 1463 +++ .../site-packages/nltk/sem/drt_glue_demo.py | 561 ++ .../site-packages/nltk/sem/evaluate.py | 835 ++ .../python3.7/site-packages/nltk/sem/glue.py | 838 ++ .../python3.7/site-packages/nltk/sem/hole.py | 402 + .../python3.7/site-packages/nltk/sem/lfg.py | 261 + .../site-packages/nltk/sem/linearlogic.py | 495 + .../python3.7/site-packages/nltk/sem/logic.py | 2072 +++++ .../site-packages/nltk/sem/relextract.py | 548 ++ .../site-packages/nltk/sem/skolemize.py | 148 + .../python3.7/site-packages/nltk/sem/util.py | 310 + .../site-packages/nltk/sentiment/__init__.py | 14 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 341 bytes .../sentiment_analyzer.cpython-37.pyc | Bin 0 -> 9409 bytes .../sentiment/__pycache__/util.cpython-37.pyc | Bin 0 -> 23668 bytes .../__pycache__/vader.cpython-37.pyc | Bin 0 -> 12332 bytes .../nltk/sentiment/sentiment_analyzer.py | 248 + .../site-packages/nltk/sentiment/util.py | 938 ++ .../site-packages/nltk/sentiment/vader.py | 626 ++ .../site-packages/nltk/stem/__init__.py | 32 + .../stem/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 1149 bytes .../nltk/stem/__pycache__/api.cpython-37.pyc | Bin 0 -> 816 bytes .../stem/__pycache__/arlstem.cpython-37.pyc | Bin 0 -> 8254 bytes .../stem/__pycache__/cistem.cpython-37.pyc | Bin 0 -> 6017 bytes .../nltk/stem/__pycache__/isri.cpython-37.pyc | Bin 0 -> 9433 bytes .../stem/__pycache__/lancaster.cpython-37.pyc | Bin 0 -> 6480 bytes .../stem/__pycache__/porter.cpython-37.pyc | Bin 0 -> 21574 bytes .../stem/__pycache__/regexp.cpython-37.pyc | Bin 0 -> 1804 bytes .../nltk/stem/__pycache__/rslp.cpython-37.pyc | Bin 0 -> 3068 bytes .../stem/__pycache__/snowball.cpython-37.pyc | Bin 0 -> 99191 bytes .../nltk/stem/__pycache__/util.cpython-37.pyc | Bin 0 -> 650 bytes .../stem/__pycache__/wordnet.cpython-37.pyc | Bin 0 -> 1740 bytes .../python3.7/site-packages/nltk/stem/api.py | 29 + .../site-packages/nltk/stem/arlstem.py | 363 + .../site-packages/nltk/stem/cistem.py | 220 + .../python3.7/site-packages/nltk/stem/isri.py | 397 + .../site-packages/nltk/stem/lancaster.py | 352 + .../site-packages/nltk/stem/porter.py | 713 ++ .../site-packages/nltk/stem/regexp.py | 59 + .../python3.7/site-packages/nltk/stem/rslp.py | 140 + .../site-packages/nltk/stem/snowball.py | 5946 ++++++++++++ .../python3.7/site-packages/nltk/stem/util.py | 24 + .../site-packages/nltk/stem/wordnet.py | 52 + .../site-packages/nltk/tag/__init__.py | 180 + .../tag/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 6874 bytes .../nltk/tag/__pycache__/api.cpython-37.pyc | Bin 0 -> 3452 bytes .../nltk/tag/__pycache__/brill.cpython-37.pyc | Bin 0 -> 14311 bytes .../__pycache__/brill_trainer.cpython-37.pyc | Bin 0 -> 18795 bytes .../nltk/tag/__pycache__/crf.cpython-37.pyc | Bin 0 -> 7610 bytes .../nltk/tag/__pycache__/hmm.cpython-37.pyc | Bin 0 -> 41209 bytes .../tag/__pycache__/hunpos.cpython-37.pyc | Bin 0 -> 4703 bytes .../tag/__pycache__/mapping.cpython-37.pyc | Bin 0 -> 3309 bytes .../tag/__pycache__/perceptron.cpython-37.pyc | Bin 0 -> 10748 bytes .../nltk/tag/__pycache__/senna.cpython-37.pyc | Bin 0 -> 6165 bytes .../tag/__pycache__/sequential.cpython-37.pyc | Bin 0 -> 27107 bytes .../tag/__pycache__/stanford.cpython-37.pyc | Bin 0 -> 7641 bytes .../nltk/tag/__pycache__/tnt.cpython-37.pyc | Bin 0 -> 13036 bytes .../nltk/tag/__pycache__/util.cpython-37.pyc | Bin 0 -> 2402 bytes .../python3.7/site-packages/nltk/tag/api.py | 86 + .../python3.7/site-packages/nltk/tag/brill.py | 452 + .../site-packages/nltk/tag/brill_trainer.py | 631 ++ .../python3.7/site-packages/nltk/tag/crf.py | 205 + .../python3.7/site-packages/nltk/tag/hmm.py | 1344 +++ .../site-packages/nltk/tag/hunpos.py | 151 + .../site-packages/nltk/tag/mapping.py | 137 + .../site-packages/nltk/tag/perceptron.py | 354 + .../python3.7/site-packages/nltk/tag/senna.py | 148 + .../site-packages/nltk/tag/sequential.py | 760 ++ .../site-packages/nltk/tag/stanford.py | 249 + .../python3.7/site-packages/nltk/tag/tnt.py | 588 ++ .../python3.7/site-packages/nltk/tag/util.py | 72 + .../site-packages/nltk/tbl/__init__.py | 30 + .../tbl/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 485 bytes .../nltk/tbl/__pycache__/api.cpython-37.pyc | Bin 0 -> 133 bytes .../nltk/tbl/__pycache__/demo.cpython-37.pyc | Bin 0 -> 12555 bytes .../__pycache__/erroranalysis.cpython-37.pyc | Bin 0 -> 1403 bytes .../tbl/__pycache__/feature.cpython-37.pyc | Bin 0 -> 9859 bytes .../nltk/tbl/__pycache__/rule.cpython-37.pyc | Bin 0 -> 10391 bytes .../tbl/__pycache__/template.cpython-37.pyc | Bin 0 -> 12495 bytes .../python3.7/site-packages/nltk/tbl/api.py | 0 .../python3.7/site-packages/nltk/tbl/demo.py | 424 + .../site-packages/nltk/tbl/erroranalysis.py | 44 + .../site-packages/nltk/tbl/feature.py | 270 + .../python3.7/site-packages/nltk/tbl/rule.py | 328 + .../site-packages/nltk/tbl/template.py | 322 + .../site-packages/nltk/test/__init__.py | 18 + .../test/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 418 bytes .../nltk/test/__pycache__/all.cpython-37.pyc | Bin 0 -> 1045 bytes .../__pycache__/childes_fixt.cpython-37.pyc | Bin 0 -> 646 bytes .../__pycache__/classify_fixt.cpython-37.pyc | Bin 0 -> 452 bytes .../__pycache__/compat_fixt.cpython-37.pyc | Bin 0 -> 436 bytes .../__pycache__/corpus_fixt.cpython-37.pyc | Bin 0 -> 243 bytes .../__pycache__/discourse_fixt.cpython-37.pyc | Bin 0 -> 559 bytes .../doctest_nose_plugin.cpython-37.pyc | Bin 0 -> 5246 bytes .../__pycache__/gensim_fixt.cpython-37.pyc | Bin 0 -> 450 bytes .../gluesemantics_malt_fixt.cpython-37.pyc | Bin 0 -> 530 bytes .../__pycache__/inference_fixt.cpython-37.pyc | Bin 0 -> 562 bytes .../nonmonotonic_fixt.cpython-37.pyc | Bin 0 -> 568 bytes .../portuguese_en_fixt.cpython-37.pyc | Bin 0 -> 640 bytes .../probability_fixt.cpython-37.pyc | Bin 0 -> 458 bytes .../test/__pycache__/runtests.cpython-37.pyc | Bin 0 -> 1979 bytes .../segmentation_fixt.cpython-37.pyc | Bin 0 -> 460 bytes .../__pycache__/semantics_fixt.cpython-37.pyc | Bin 0 -> 374 bytes .../__pycache__/translate_fixt.cpython-37.pyc | Bin 0 -> 246 bytes .../__pycache__/wordnet_fixt.cpython-37.pyc | Bin 0 -> 376 bytes .../python3.7/site-packages/nltk/test/all.py | 24 + .../site-packages/nltk/test/bleu.doctest | 14 + .../site-packages/nltk/test/bnc.doctest | 60 + .../site-packages/nltk/test/ccg.doctest | 376 + .../nltk/test/ccg_semantics.doctest | 553 ++ .../site-packages/nltk/test/chat80.doctest | 234 + .../site-packages/nltk/test/childes.doctest | 184 + .../site-packages/nltk/test/childes_fixt.py | 17 + .../site-packages/nltk/test/chunk.doctest | 373 + .../site-packages/nltk/test/classify.doctest | 183 + .../site-packages/nltk/test/classify_fixt.py | 12 + .../nltk/test/collections.doctest | 20 + .../nltk/test/collocations.doctest | 283 + .../site-packages/nltk/test/compat.doctest | 134 + .../site-packages/nltk/test/compat_fixt.py | 10 + .../nltk/test/concordance.doctest | 68 + .../site-packages/nltk/test/corpus.doctest | 2200 +++++ .../site-packages/nltk/test/corpus_fixt.py | 4 + .../site-packages/nltk/test/crubadan.doctest | 65 + .../site-packages/nltk/test/data.doctest | 379 + .../nltk/test/dependency.doctest | 241 + .../site-packages/nltk/test/discourse.doctest | 546 ++ .../site-packages/nltk/test/discourse_fixt.py | 15 + .../nltk/test/doctest_nose_plugin.py | 164 + .../site-packages/nltk/test/drt.doctest | 517 ++ .../site-packages/nltk/test/featgram.doctest | 607 ++ .../nltk/test/featstruct.doctest | 1229 +++ .../site-packages/nltk/test/framenet.doctest | 288 + .../site-packages/nltk/test/generate.doctest | 67 + .../site-packages/nltk/test/gensim.doctest | 140 + .../site-packages/nltk/test/gensim_fixt.py | 11 + .../nltk/test/gluesemantics.doctest | 384 + .../nltk/test/gluesemantics_malt.doctest | 68 + .../nltk/test/gluesemantics_malt_fixt.py | 12 + .../site-packages/nltk/test/grammar.doctest | 48 + .../nltk/test/grammartestsuites.doctest | 109 + .../site-packages/nltk/test/index.doctest | 100 + .../site-packages/nltk/test/inference.doctest | 534 ++ .../site-packages/nltk/test/inference_fixt.py | 15 + .../site-packages/nltk/test/internals.doctest | 140 + .../site-packages/nltk/test/japanese.doctest | 48 + .../site-packages/nltk/test/lm.doctest | 131 + .../site-packages/nltk/test/logic.doctest | 1098 +++ .../site-packages/nltk/test/meteor.doctest | 45 + .../site-packages/nltk/test/metrics.doctest | 293 + .../site-packages/nltk/test/misc.doctest | 118 + .../nltk/test/nonmonotonic.doctest | 286 + .../nltk/test/nonmonotonic_fixt.py | 15 + .../site-packages/nltk/test/paice.doctest | 35 + .../site-packages/nltk/test/parse.doctest | 884 ++ .../nltk/test/portuguese_en.doctest | 565 ++ .../nltk/test/portuguese_en_fixt.py | 18 + .../nltk/test/probability.doctest | 304 + .../nltk/test/probability_fixt.py | 15 + .../site-packages/nltk/test/propbank.doctest | 176 + .../nltk/test/relextract.doctest | 263 + .../nltk/test/resolution.doctest | 221 + .../site-packages/nltk/test/runtests.py | 81 + .../nltk/test/segmentation_fixt.py | 12 + .../site-packages/nltk/test/semantics.doctest | 665 ++ .../site-packages/nltk/test/semantics_fixt.py | 8 + .../site-packages/nltk/test/sentiment.doctest | 233 + .../nltk/test/sentiwordnet.doctest | 41 + .../site-packages/nltk/test/simple.doctest | 85 + .../site-packages/nltk/test/stem.doctest | 78 + .../site-packages/nltk/test/tag.doctest | 33 + .../site-packages/nltk/test/tokenize.doctest | 290 + .../site-packages/nltk/test/toolbox.doctest | 307 + .../site-packages/nltk/test/translate.doctest | 242 + .../site-packages/nltk/test/translate_fixt.py | 4 + .../site-packages/nltk/test/tree.doctest | 1101 +++ .../nltk/test/treeprettyprinter.doctest | 127 + .../nltk/test/treetransforms.doctest | 156 + .../site-packages/nltk/test/unit/__init__.py | 0 .../unit/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 144 bytes .../__pycache__/test_2x_compat.cpython-37.pyc | Bin 0 -> 2186 bytes .../__pycache__/test_aline.cpython-37.pyc | Bin 0 -> 1596 bytes .../__pycache__/test_brill.cpython-37.pyc | Bin 0 -> 1297 bytes .../test_cfd_mutation.cpython-37.pyc | Bin 0 -> 1345 bytes .../test_cfg2chomsky.cpython-37.pyc | Bin 0 -> 1576 bytes .../__pycache__/test_chunk.cpython-37.pyc | Bin 0 -> 2110 bytes .../__pycache__/test_classify.cpython-37.pyc | Bin 0 -> 1514 bytes .../test_collocations.cpython-37.pyc | Bin 0 -> 3654 bytes .../test_concordance.cpython-37.pyc | Bin 0 -> 5290 bytes .../__pycache__/test_corenlp.cpython-37.pyc | Bin 0 -> 10537 bytes .../__pycache__/test_corpora.cpython-37.pyc | Bin 0 -> 7579 bytes .../test_corpus_views.cpython-37.pyc | Bin 0 -> 1681 bytes .../unit/__pycache__/test_data.cpython-37.pyc | Bin 0 -> 1136 bytes .../test_disagreement.cpython-37.pyc | Bin 0 -> 3852 bytes .../unit/__pycache__/test_hmm.cpython-37.pyc | Bin 0 -> 2219 bytes .../test_json2csv_corpus.cpython-37.pyc | Bin 0 -> 7509 bytes .../test_naivebayes.cpython-37.pyc | Bin 0 -> 956 bytes .../__pycache__/test_nombank.cpython-37.pyc | Bin 0 -> 1359 bytes .../__pycache__/test_pos_tag.cpython-37.pyc | Bin 0 -> 2862 bytes .../test_rte_classify.cpython-37.pyc | Bin 0 -> 3085 bytes ...kable_unicode_stream_reader.cpython-37.pyc | Bin 0 -> 5135 bytes .../__pycache__/test_senna.cpython-37.pyc | Bin 0 -> 3452 bytes .../unit/__pycache__/test_stem.cpython-37.pyc | Bin 0 -> 5159 bytes .../unit/__pycache__/test_tag.cpython-37.pyc | Bin 0 -> 931 bytes .../__pycache__/test_tgrep.cpython-37.pyc | Bin 0 -> 20692 bytes .../__pycache__/test_tokenize.cpython-37.pyc | Bin 0 -> 8862 bytes .../test_twitter_auth.cpython-37.pyc | Bin 0 -> 5989 bytes .../__pycache__/test_wordnet.cpython-37.pyc | Bin 0 -> 7173 bytes .../unit/__pycache__/utils.cpython-37.pyc | Bin 0 -> 1568 bytes .../nltk/test/unit/lm/__init__.py | 0 .../lm/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 147 bytes .../__pycache__/test_counter.cpython-37.pyc | Bin 0 -> 5791 bytes .../lm/__pycache__/test_models.cpython-37.pyc | Bin 0 -> 11320 bytes .../test_preprocessing.cpython-37.pyc | Bin 0 -> 1076 bytes .../test_vocabulary.cpython-37.pyc | Bin 0 -> 6233 bytes .../nltk/test/unit/lm/test_counter.py | 135 + .../nltk/test/unit/lm/test_models.py | 446 + .../nltk/test/unit/lm/test_preprocessing.py | 31 + .../nltk/test/unit/lm/test_vocabulary.py | 141 + .../nltk/test/unit/test_2x_compat.py | 65 + .../nltk/test/unit/test_aline.py | 78 + .../nltk/test/unit/test_brill.py | 37 + .../nltk/test/unit/test_cfd_mutation.py | 39 + .../nltk/test/unit/test_cfg2chomsky.py | 49 + .../nltk/test/unit/test_chunk.py | 87 + .../nltk/test/unit/test_classify.py | 50 + .../nltk/test/unit/test_collocations.py | 159 + .../nltk/test/unit/test_concordance.py | 107 + .../nltk/test/unit/test_corenlp.py | 1419 +++ .../nltk/test/unit/test_corpora.py | 272 + .../nltk/test/unit/test_corpus_views.py | 49 + .../site-packages/nltk/test/unit/test_data.py | 22 + .../nltk/test/unit/test_disagreement.py | 142 + .../site-packages/nltk/test/unit/test_hmm.py | 87 + .../nltk/test/unit/test_json2csv_corpus.py | 237 + .../nltk/test/unit/test_naivebayes.py | 24 + .../nltk/test/unit/test_nombank.py | 28 + .../nltk/test/unit/test_pos_tag.py | 85 + .../nltk/test/unit/test_rte_classify.py | 92 + .../test_seekable_unicode_stream_reader.py | 140 + .../nltk/test/unit/test_senna.py | 116 + .../site-packages/nltk/test/unit/test_stem.py | 146 + .../site-packages/nltk/test/unit/test_tag.py | 30 + .../nltk/test/unit/test_tgrep.py | 790 ++ .../nltk/test/unit/test_tokenize.py | 407 + .../nltk/test/unit/test_twitter_auth.py | 181 + .../nltk/test/unit/test_wordnet.py | 221 + .../nltk/test/unit/translate/__init__.py | 0 .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 154 bytes .../__pycache__/test_bleu.cpython-37.pyc | Bin 0 -> 7727 bytes .../__pycache__/test_gdfa.cpython-37.pyc | Bin 0 -> 3322 bytes .../__pycache__/test_ibm1.cpython-37.pyc | Bin 0 -> 2319 bytes .../__pycache__/test_ibm2.cpython-37.pyc | Bin 0 -> 3077 bytes .../__pycache__/test_ibm3.cpython-37.pyc | Bin 0 -> 3498 bytes .../__pycache__/test_ibm4.cpython-37.pyc | Bin 0 -> 3840 bytes .../__pycache__/test_ibm5.cpython-37.pyc | Bin 0 -> 5023 bytes .../__pycache__/test_ibm_model.cpython-37.pyc | Bin 0 -> 9556 bytes .../__pycache__/test_nist.cpython-37.pyc | Bin 0 -> 1508 bytes .../test_stack_decoder.cpython-37.pyc | Bin 0 -> 8896 bytes .../nltk/test/unit/translate/test_bleu.py | 271 + .../nltk/test/unit/translate/test_gdfa.py | 157 + .../nltk/test/unit/translate/test_ibm1.py | 76 + .../nltk/test/unit/translate/test_ibm2.py | 89 + .../nltk/test/unit/translate/test_ibm3.py | 108 + .../nltk/test/unit/translate/test_ibm4.py | 123 + .../nltk/test/unit/translate/test_ibm5.py | 164 + .../test/unit/translate/test_ibm_model.py | 279 + .../nltk/test/unit/translate/test_nist.py | 37 + .../test/unit/translate/test_stack_decoder.py | 295 + .../site-packages/nltk/test/unit/utils.py | 47 + .../site-packages/nltk/test/util.doctest | 48 + .../site-packages/nltk/test/wordnet.doctest | 605 ++ .../site-packages/nltk/test/wordnet_fixt.py | 8 + .../nltk/test/wordnet_lch.doctest | 53 + .../site-packages/nltk/test/wsd.doctest | 68 + venv/lib/python3.7/site-packages/nltk/text.py | 763 ++ .../lib/python3.7/site-packages/nltk/tgrep.py | 1055 +++ .../site-packages/nltk/tokenize/__init__.py | 147 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 5461 bytes .../tokenize/__pycache__/api.cpython-37.pyc | Bin 0 -> 2749 bytes .../__pycache__/casual.cpython-37.pyc | Bin 0 -> 8203 bytes .../tokenize/__pycache__/mwe.cpython-37.pyc | Bin 0 -> 3617 bytes .../tokenize/__pycache__/nist.cpython-37.pyc | Bin 0 -> 5034 bytes .../tokenize/__pycache__/punkt.cpython-37.pyc | Bin 0 -> 39161 bytes .../__pycache__/regexp.cpython-37.pyc | Bin 0 -> 8109 bytes .../tokenize/__pycache__/repp.cpython-37.pyc | Bin 0 -> 8006 bytes .../tokenize/__pycache__/sexpr.cpython-37.pyc | Bin 0 -> 4917 bytes .../__pycache__/simple.cpython-37.pyc | Bin 0 -> 5510 bytes .../sonority_sequencing.cpython-37.pyc | Bin 0 -> 5642 bytes .../__pycache__/stanford.cpython-37.pyc | Bin 0 -> 3722 bytes .../stanford_segmenter.cpython-37.pyc | Bin 0 -> 6859 bytes .../__pycache__/texttiling.cpython-37.pyc | Bin 0 -> 13619 bytes .../__pycache__/toktok.cpython-37.pyc | Bin 0 -> 4225 bytes .../__pycache__/treebank.cpython-37.pyc | Bin 0 -> 11990 bytes .../tokenize/__pycache__/util.cpython-37.pyc | Bin 0 -> 8255 bytes .../site-packages/nltk/tokenize/api.py | 78 + .../site-packages/nltk/tokenize/casual.py | 347 + .../site-packages/nltk/tokenize/mwe.py | 120 + .../site-packages/nltk/tokenize/nist.py | 183 + .../site-packages/nltk/tokenize/punkt.py | 1666 ++++ .../site-packages/nltk/tokenize/regexp.py | 223 + .../site-packages/nltk/tokenize/repp.py | 155 + .../site-packages/nltk/tokenize/sexpr.py | 140 + .../site-packages/nltk/tokenize/simple.py | 140 + .../nltk/tokenize/sonority_sequencing.py | 187 + .../site-packages/nltk/tokenize/stanford.py | 133 + .../nltk/tokenize/stanford_segmenter.py | 314 + .../site-packages/nltk/tokenize/texttiling.py | 477 + .../site-packages/nltk/tokenize/toktok.py | 181 + .../site-packages/nltk/tokenize/treebank.py | 386 + .../site-packages/nltk/tokenize/util.py | 296 + .../python3.7/site-packages/nltk/toolbox.py | 539 ++ .../site-packages/nltk/translate/__init__.py | 25 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 1010 bytes .../translate/__pycache__/api.cpython-37.pyc | Bin 0 -> 13063 bytes .../__pycache__/bleu_score.cpython-37.pyc | Bin 0 -> 25183 bytes .../__pycache__/chrf_score.cpython-37.pyc | Bin 0 -> 7884 bytes .../__pycache__/gale_church.cpython-37.pyc | Bin 0 -> 7863 bytes .../translate/__pycache__/gdfa.cpython-37.pyc | Bin 0 -> 5168 bytes .../__pycache__/gleu_score.cpython-37.pyc | Bin 0 -> 7650 bytes .../translate/__pycache__/ibm1.cpython-37.pyc | Bin 0 -> 8351 bytes .../translate/__pycache__/ibm2.cpython-37.pyc | Bin 0 -> 11469 bytes .../translate/__pycache__/ibm3.cpython-37.pyc | Bin 0 -> 12925 bytes .../translate/__pycache__/ibm4.cpython-37.pyc | Bin 0 -> 17235 bytes .../translate/__pycache__/ibm5.cpython-37.pyc | Bin 0 -> 22959 bytes .../__pycache__/ibm_model.cpython-37.pyc | Bin 0 -> 16474 bytes .../__pycache__/meteor_score.cpython-37.pyc | Bin 0 -> 15372 bytes .../__pycache__/metrics.cpython-37.pyc | Bin 0 -> 1299 bytes .../__pycache__/nist_score.cpython-37.pyc | Bin 0 -> 5630 bytes .../__pycache__/phrase_based.cpython-37.pyc | Bin 0 -> 6229 bytes .../__pycache__/ribes_score.cpython-37.pyc | Bin 0 -> 10844 bytes .../__pycache__/stack_decoder.cpython-37.pyc | Bin 0 -> 17204 bytes .../site-packages/nltk/translate/api.py | 339 + .../nltk/translate/bleu_score.py | 642 ++ .../nltk/translate/chrf_score.py | 224 + .../nltk/translate/gale_church.py | 275 + .../site-packages/nltk/translate/gdfa.py | 139 + .../nltk/translate/gleu_score.py | 191 + .../site-packages/nltk/translate/ibm1.py | 251 + .../site-packages/nltk/translate/ibm2.py | 321 + .../site-packages/nltk/translate/ibm3.py | 348 + .../site-packages/nltk/translate/ibm4.py | 490 + .../site-packages/nltk/translate/ibm5.py | 664 ++ .../site-packages/nltk/translate/ibm_model.py | 550 ++ .../nltk/translate/meteor_score.py | 378 + .../site-packages/nltk/translate/metrics.py | 42 + .../nltk/translate/nist_score.py | 197 + .../nltk/translate/phrase_based.py | 196 + .../nltk/translate/ribes_score.py | 325 + .../nltk/translate/stack_decoder.py | 516 ++ venv/lib/python3.7/site-packages/nltk/tree.py | 1792 ++++ .../site-packages/nltk/treeprettyprinter.py | 626 ++ .../site-packages/nltk/treetransforms.py | 338 + .../site-packages/nltk/twitter/__init__.py | 36 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 748 bytes .../twitter/__pycache__/api.cpython-37.pyc | Bin 0 -> 4244 bytes .../twitter/__pycache__/common.cpython-37.pyc | Bin 0 -> 7798 bytes .../__pycache__/twitter_demo.cpython-37.pyc | Bin 0 -> 7846 bytes .../__pycache__/twitterclient.cpython-37.pyc | Bin 0 -> 16223 bytes .../twitter/__pycache__/util.cpython-37.pyc | Bin 0 -> 4236 bytes .../site-packages/nltk/twitter/api.py | 151 + .../site-packages/nltk/twitter/common.py | 279 + .../nltk/twitter/twitter_demo.py | 310 + .../nltk/twitter/twitterclient.py | 558 ++ .../site-packages/nltk/twitter/util.py | 152 + venv/lib/python3.7/site-packages/nltk/util.py | 827 ++ venv/lib/python3.7/site-packages/nltk/wsd.py | 51 + .../pip-19.3.1.dist-info/INSTALLER | 1 + .../pip-19.3.1.dist-info/LICENSE.txt | 20 + .../pip-19.3.1.dist-info/METADATA | 82 + .../site-packages/pip-19.3.1.dist-info/RECORD | 670 ++ .../site-packages/pip-19.3.1.dist-info/WHEEL | 6 + .../pip-19.3.1.dist-info/entry_points.txt | 5 + .../pip-19.3.1.dist-info/top_level.txt | 1 + .../python3.7/site-packages/pip/__init__.py | 1 + .../python3.7/site-packages/pip/__main__.py | 19 + .../pip/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 154 bytes .../pip/__pycache__/__main__.cpython-37.pyc | Bin 0 -> 411 bytes .../site-packages/pip/_internal/__init__.py | 2 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 201 bytes .../__pycache__/build_env.cpython-37.pyc | Bin 0 -> 7376 bytes .../__pycache__/cache.cpython-37.pyc | Bin 0 -> 7115 bytes .../__pycache__/collector.cpython-37.pyc | Bin 0 -> 13986 bytes .../__pycache__/configuration.cpython-37.pyc | Bin 0 -> 10510 bytes .../__pycache__/download.cpython-37.pyc | Bin 0 -> 11128 bytes .../__pycache__/exceptions.cpython-37.pyc | Bin 0 -> 12686 bytes .../__pycache__/index.cpython-37.pyc | Bin 0 -> 25052 bytes .../__pycache__/legacy_resolve.cpython-37.pyc | Bin 0 -> 10390 bytes .../__pycache__/locations.cpython-37.pyc | Bin 0 -> 3153 bytes .../_internal/__pycache__/main.cpython-37.pyc | Bin 0 -> 1262 bytes .../__pycache__/pep425tags.cpython-37.pyc | Bin 0 -> 9710 bytes .../__pycache__/pyproject.cpython-37.pyc | Bin 0 -> 3147 bytes .../self_outdated_check.cpython-37.pyc | Bin 0 -> 5427 bytes .../__pycache__/wheel.cpython-37.pyc | Bin 0 -> 27677 bytes .../site-packages/pip/_internal/build_env.py | 221 + .../site-packages/pip/_internal/cache.py | 253 + .../pip/_internal/cli/__init__.py | 4 + .../cli/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 229 bytes .../__pycache__/autocompletion.cpython-37.pyc | Bin 0 -> 4931 bytes .../__pycache__/base_command.cpython-37.pyc | Bin 0 -> 4911 bytes .../cli/__pycache__/cmdoptions.cpython-37.pyc | Bin 0 -> 19103 bytes .../command_context.cpython-37.pyc | Bin 0 -> 1096 bytes .../__pycache__/main_parser.cpython-37.pyc | Bin 0 -> 2136 bytes .../cli/__pycache__/parser.cpython-37.pyc | Bin 0 -> 8893 bytes .../__pycache__/req_command.cpython-37.pyc | Bin 0 -> 7405 bytes .../__pycache__/status_codes.cpython-37.pyc | Bin 0 -> 358 bytes .../pip/_internal/cli/autocompletion.py | 155 + .../pip/_internal/cli/base_command.py | 193 + .../pip/_internal/cli/cmdoptions.py | 909 ++ .../pip/_internal/cli/command_context.py | 29 + .../pip/_internal/cli/main_parser.py | 99 + .../site-packages/pip/_internal/cli/parser.py | 265 + .../pip/_internal/cli/req_command.py | 304 + .../pip/_internal/cli/status_codes.py | 8 + .../site-packages/pip/_internal/collector.py | 548 ++ .../pip/_internal/commands/__init__.py | 114 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 2779 bytes .../commands/__pycache__/check.cpython-37.pyc | Bin 0 -> 1297 bytes .../__pycache__/completion.cpython-37.pyc | Bin 0 -> 2968 bytes .../__pycache__/configuration.cpython-37.pyc | Bin 0 -> 6510 bytes .../commands/__pycache__/debug.cpython-37.pyc | Bin 0 -> 3240 bytes .../__pycache__/download.cpython-37.pyc | Bin 0 -> 4247 bytes .../__pycache__/freeze.cpython-37.pyc | Bin 0 -> 2890 bytes .../commands/__pycache__/hash.cpython-37.pyc | Bin 0 -> 1966 bytes .../commands/__pycache__/help.cpython-37.pyc | Bin 0 -> 1167 bytes .../__pycache__/install.cpython-37.pyc | Bin 0 -> 13722 bytes .../commands/__pycache__/list.cpython-37.pyc | Bin 0 -> 8824 bytes .../__pycache__/search.cpython-37.pyc | Bin 0 -> 4435 bytes .../commands/__pycache__/show.cpython-37.pyc | Bin 0 -> 6322 bytes .../__pycache__/uninstall.cpython-37.pyc | Bin 0 -> 2669 bytes .../commands/__pycache__/wheel.cpython-37.pyc | Bin 0 -> 4562 bytes .../pip/_internal/commands/check.py | 45 + .../pip/_internal/commands/completion.py | 96 + .../pip/_internal/commands/configuration.py | 233 + .../pip/_internal/commands/debug.py | 115 + .../pip/_internal/commands/download.py | 156 + .../pip/_internal/commands/freeze.py | 103 + .../pip/_internal/commands/hash.py | 58 + .../pip/_internal/commands/help.py | 41 + .../pip/_internal/commands/install.py | 631 ++ .../pip/_internal/commands/list.py | 313 + .../pip/_internal/commands/search.py | 145 + .../pip/_internal/commands/show.py | 180 + .../pip/_internal/commands/uninstall.py | 82 + .../pip/_internal/commands/wheel.py | 180 + .../pip/_internal/configuration.py | 422 + .../pip/_internal/distributions/__init__.py | 24 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 809 bytes .../__pycache__/base.cpython-37.pyc | Bin 0 -> 1593 bytes .../__pycache__/installed.cpython-37.pyc | Bin 0 -> 939 bytes .../__pycache__/wheel.cpython-37.pyc | Bin 0 -> 999 bytes .../pip/_internal/distributions/base.py | 36 + .../pip/_internal/distributions/installed.py | 18 + .../distributions/source/__init__.py | 0 .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 163 bytes .../source/__pycache__/legacy.cpython-37.pyc | Bin 0 -> 3417 bytes .../_internal/distributions/source/legacy.py | 98 + .../pip/_internal/distributions/wheel.py | 20 + .../site-packages/pip/_internal/download.py | 578 ++ .../site-packages/pip/_internal/exceptions.py | 308 + .../site-packages/pip/_internal/index.py | 992 ++ .../pip/_internal/legacy_resolve.py | 460 + .../site-packages/pip/_internal/locations.py | 156 + .../site-packages/pip/_internal/main.py | 47 + .../pip/_internal/models/__init__.py | 2 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 217 bytes .../__pycache__/candidate.cpython-37.pyc | Bin 0 -> 1442 bytes .../__pycache__/format_control.cpython-37.pyc | Bin 0 -> 2382 bytes .../models/__pycache__/index.cpython-37.pyc | Bin 0 -> 1121 bytes .../models/__pycache__/link.cpython-37.pyc | Bin 0 -> 6561 bytes .../__pycache__/search_scope.cpython-37.pyc | Bin 0 -> 3211 bytes .../selection_prefs.cpython-37.pyc | Bin 0 -> 1579 bytes .../__pycache__/target_python.cpython-37.pyc | Bin 0 -> 3155 bytes .../pip/_internal/models/candidate.py | 39 + .../pip/_internal/models/format_control.py | 82 + .../pip/_internal/models/index.py | 31 + .../pip/_internal/models/link.py | 227 + .../pip/_internal/models/search_scope.py | 116 + .../pip/_internal/models/selection_prefs.py | 47 + .../pip/_internal/models/target_python.py | 106 + .../pip/_internal/network/__init__.py | 2 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 205 bytes .../network/__pycache__/auth.cpython-37.pyc | Bin 0 -> 6923 bytes .../network/__pycache__/cache.cpython-37.pyc | Bin 0 -> 2428 bytes .../__pycache__/session.cpython-37.pyc | Bin 0 -> 9108 bytes .../network/__pycache__/xmlrpc.cpython-37.pyc | Bin 0 -> 1545 bytes .../pip/_internal/network/auth.py | 298 + .../pip/_internal/network/cache.py | 75 + .../pip/_internal/network/session.py | 426 + .../pip/_internal/network/xmlrpc.py | 44 + .../pip/_internal/operations/__init__.py | 0 .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 153 bytes .../__pycache__/check.cpython-37.pyc | Bin 0 -> 3639 bytes .../__pycache__/freeze.cpython-37.pyc | Bin 0 -> 5643 bytes .../generate_metadata.cpython-37.pyc | Bin 0 -> 3847 bytes .../__pycache__/prepare.cpython-37.pyc | Bin 0 -> 5809 bytes .../pip/_internal/operations/check.py | 163 + .../pip/_internal/operations/freeze.py | 259 + .../_internal/operations/generate_metadata.py | 136 + .../pip/_internal/operations/prepare.py | 295 + .../site-packages/pip/_internal/pep425tags.py | 449 + .../site-packages/pip/_internal/pyproject.py | 171 + .../pip/_internal/req/__init__.py | 82 + .../req/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 1664 bytes .../__pycache__/constructors.cpython-37.pyc | Bin 0 -> 10208 bytes .../req/__pycache__/req_file.cpython-37.pyc | Bin 0 -> 9341 bytes .../__pycache__/req_install.cpython-37.pyc | Bin 0 -> 23600 bytes .../req/__pycache__/req_set.cpython-37.pyc | Bin 0 -> 5958 bytes .../__pycache__/req_tracker.cpython-37.pyc | Bin 0 -> 3156 bytes .../__pycache__/req_uninstall.cpython-37.pyc | Bin 0 -> 17319 bytes .../pip/_internal/req/constructors.py | 436 + .../pip/_internal/req/req_file.py | 403 + .../pip/_internal/req/req_install.py | 966 ++ .../pip/_internal/req/req_set.py | 210 + .../pip/_internal/req/req_tracker.py | 98 + .../pip/_internal/req/req_uninstall.py | 644 ++ .../pip/_internal/self_outdated_check.py | 244 + .../pip/_internal/utils/__init__.py | 0 .../utils/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 148 bytes .../utils/__pycache__/appdirs.cpython-37.pyc | Bin 0 -> 7988 bytes .../utils/__pycache__/compat.cpython-37.pyc | Bin 0 -> 6864 bytes .../__pycache__/deprecation.cpython-37.pyc | Bin 0 -> 2765 bytes .../utils/__pycache__/encoding.cpython-37.pyc | Bin 0 -> 1232 bytes .../__pycache__/filesystem.cpython-37.pyc | Bin 0 -> 2732 bytes .../__pycache__/filetypes.cpython-37.pyc | Bin 0 -> 547 bytes .../utils/__pycache__/glibc.cpython-37.pyc | Bin 0 -> 2212 bytes .../utils/__pycache__/hashes.cpython-37.pyc | Bin 0 -> 4088 bytes .../inject_securetransport.cpython-37.pyc | Bin 0 -> 917 bytes .../utils/__pycache__/logging.cpython-37.pyc | Bin 0 -> 9119 bytes .../__pycache__/marker_files.cpython-37.pyc | Bin 0 -> 913 bytes .../utils/__pycache__/misc.cpython-37.pyc | Bin 0 -> 22691 bytes .../utils/__pycache__/models.cpython-37.pyc | Bin 0 -> 1896 bytes .../__pycache__/packaging.cpython-37.pyc | Bin 0 -> 2583 bytes .../setuptools_build.cpython-37.pyc | Bin 0 -> 1243 bytes .../__pycache__/subprocess.cpython-37.pyc | Bin 0 -> 5528 bytes .../utils/__pycache__/temp_dir.cpython-37.pyc | Bin 0 -> 4930 bytes .../utils/__pycache__/typing.cpython-37.pyc | Bin 0 -> 1278 bytes .../utils/__pycache__/ui.cpython-37.pyc | Bin 0 -> 11697 bytes .../__pycache__/unpacking.cpython-37.pyc | Bin 0 -> 5974 bytes .../utils/__pycache__/urls.cpython-37.pyc | Bin 0 -> 1442 bytes .../__pycache__/virtualenv.cpython-37.pyc | Bin 0 -> 863 bytes .../pip/_internal/utils/appdirs.py | 276 + .../pip/_internal/utils/compat.py | 297 + .../pip/_internal/utils/deprecation.py | 104 + .../pip/_internal/utils/encoding.py | 42 + .../pip/_internal/utils/filesystem.py | 115 + .../pip/_internal/utils/filetypes.py | 16 + .../pip/_internal/utils/glibc.py | 123 + .../pip/_internal/utils/hashes.py | 133 + .../_internal/utils/inject_securetransport.py | 36 + .../pip/_internal/utils/logging.py | 398 + .../pip/_internal/utils/marker_files.py | 27 + .../site-packages/pip/_internal/utils/misc.py | 870 ++ .../pip/_internal/utils/models.py | 42 + .../pip/_internal/utils/packaging.py | 94 + .../pip/_internal/utils/setuptools_build.py | 47 + .../pip/_internal/utils/subprocess.py | 278 + .../pip/_internal/utils/temp_dir.py | 172 + .../pip/_internal/utils/typing.py | 29 + .../site-packages/pip/_internal/utils/ui.py | 428 + .../pip/_internal/utils/unpacking.py | 272 + .../site-packages/pip/_internal/utils/urls.py | 54 + .../pip/_internal/utils/virtualenv.py | 34 + .../pip/_internal/vcs/__init__.py | 15 + .../vcs/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 441 bytes .../vcs/__pycache__/bazaar.cpython-37.pyc | Bin 0 -> 3678 bytes .../vcs/__pycache__/git.cpython-37.pyc | Bin 0 -> 9058 bytes .../vcs/__pycache__/mercurial.cpython-37.pyc | Bin 0 -> 4818 bytes .../vcs/__pycache__/subversion.cpython-37.pyc | Bin 0 -> 8393 bytes .../__pycache__/versioncontrol.cpython-37.pyc | Bin 0 -> 18280 bytes .../site-packages/pip/_internal/vcs/bazaar.py | 120 + .../site-packages/pip/_internal/vcs/git.py | 372 + .../pip/_internal/vcs/mercurial.py | 155 + .../pip/_internal/vcs/subversion.py | 333 + .../pip/_internal/vcs/versioncontrol.py | 665 ++ .../site-packages/pip/_internal/wheel.py | 1181 +++ .../site-packages/pip/_vendor/__init__.py | 109 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 2818 bytes .../__pycache__/appdirs.cpython-37.pyc | Bin 0 -> 20565 bytes .../__pycache__/contextlib2.cpython-37.pyc | Bin 0 -> 15323 bytes .../_vendor/__pycache__/distro.cpython-37.pyc | Bin 0 -> 36278 bytes .../__pycache__/ipaddress.cpython-37.pyc | Bin 0 -> 66408 bytes .../__pycache__/pyparsing.cpython-37.pyc | Bin 0 -> 233975 bytes .../__pycache__/retrying.cpython-37.pyc | Bin 0 -> 8046 bytes .../_vendor/__pycache__/six.cpython-37.pyc | Bin 0 -> 26370 bytes .../site-packages/pip/_vendor/appdirs.py | 604 ++ .../pip/_vendor/cachecontrol/__init__.py | 11 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 506 bytes .../__pycache__/_cmd.cpython-37.pyc | Bin 0 -> 1509 bytes .../__pycache__/adapter.cpython-37.pyc | Bin 0 -> 2992 bytes .../__pycache__/cache.cpython-37.pyc | Bin 0 -> 1722 bytes .../__pycache__/compat.cpython-37.pyc | Bin 0 -> 713 bytes .../__pycache__/controller.cpython-37.pyc | Bin 0 -> 7592 bytes .../__pycache__/filewrapper.cpython-37.pyc | Bin 0 -> 2110 bytes .../__pycache__/heuristics.cpython-37.pyc | Bin 0 -> 4630 bytes .../__pycache__/serialize.cpython-37.pyc | Bin 0 -> 4194 bytes .../__pycache__/wrapper.cpython-37.pyc | Bin 0 -> 614 bytes .../pip/_vendor/cachecontrol/_cmd.py | 57 + .../pip/_vendor/cachecontrol/adapter.py | 133 + .../pip/_vendor/cachecontrol/cache.py | 39 + .../_vendor/cachecontrol/caches/__init__.py | 2 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 250 bytes .../__pycache__/file_cache.cpython-37.pyc | Bin 0 -> 3160 bytes .../__pycache__/redis_cache.cpython-37.pyc | Bin 0 -> 1506 bytes .../_vendor/cachecontrol/caches/file_cache.py | 146 + .../cachecontrol/caches/redis_cache.py | 33 + .../pip/_vendor/cachecontrol/compat.py | 29 + .../pip/_vendor/cachecontrol/controller.py | 367 + .../pip/_vendor/cachecontrol/filewrapper.py | 80 + .../pip/_vendor/cachecontrol/heuristics.py | 135 + .../pip/_vendor/cachecontrol/serialize.py | 186 + .../pip/_vendor/cachecontrol/wrapper.py | 29 + .../pip/_vendor/certifi/__init__.py | 3 + .../pip/_vendor/certifi/__main__.py | 2 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 213 bytes .../__pycache__/__main__.cpython-37.pyc | Bin 0 -> 216 bytes .../certifi/__pycache__/core.cpython-37.pyc | Bin 0 -> 425 bytes .../pip/_vendor/certifi/cacert.pem | 4558 +++++++++ .../site-packages/pip/_vendor/certifi/core.py | 15 + .../pip/_vendor/chardet/__init__.py | 39 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 800 bytes .../__pycache__/big5freq.cpython-37.pyc | Bin 0 -> 27135 bytes .../__pycache__/big5prober.cpython-37.pyc | Bin 0 -> 1076 bytes .../chardistribution.cpython-37.pyc | Bin 0 -> 6262 bytes .../charsetgroupprober.cpython-37.pyc | Bin 0 -> 2183 bytes .../__pycache__/charsetprober.cpython-37.pyc | Bin 0 -> 3393 bytes .../codingstatemachine.cpython-37.pyc | Bin 0 -> 2840 bytes .../chardet/__pycache__/compat.cpython-37.pyc | Bin 0 -> 311 bytes .../__pycache__/cp949prober.cpython-37.pyc | Bin 0 -> 1083 bytes .../chardet/__pycache__/enums.cpython-37.pyc | Bin 0 -> 2574 bytes .../__pycache__/escprober.cpython-37.pyc | Bin 0 -> 2561 bytes .../chardet/__pycache__/escsm.cpython-37.pyc | Bin 0 -> 7022 bytes .../__pycache__/eucjpprober.cpython-37.pyc | Bin 0 -> 2369 bytes .../__pycache__/euckrfreq.cpython-37.pyc | Bin 0 -> 12019 bytes .../__pycache__/euckrprober.cpython-37.pyc | Bin 0 -> 1084 bytes .../__pycache__/euctwfreq.cpython-37.pyc | Bin 0 -> 27139 bytes .../__pycache__/euctwprober.cpython-37.pyc | Bin 0 -> 1084 bytes .../__pycache__/gb2312freq.cpython-37.pyc | Bin 0 -> 19063 bytes .../__pycache__/gb2312prober.cpython-37.pyc | Bin 0 -> 1092 bytes .../__pycache__/hebrewprober.cpython-37.pyc | Bin 0 -> 2926 bytes .../__pycache__/jisfreq.cpython-37.pyc | Bin 0 -> 22091 bytes .../chardet/__pycache__/jpcntx.cpython-37.pyc | Bin 0 -> 37970 bytes .../langbulgarianmodel.cpython-37.pyc | Bin 0 -> 23584 bytes .../langcyrillicmodel.cpython-37.pyc | Bin 0 -> 29040 bytes .../__pycache__/langgreekmodel.cpython-37.pyc | Bin 0 -> 23542 bytes .../langhebrewmodel.cpython-37.pyc | Bin 0 -> 22171 bytes .../langhungarianmodel.cpython-37.pyc | Bin 0 -> 23573 bytes .../__pycache__/langthaimodel.cpython-37.pyc | Bin 0 -> 22150 bytes .../langturkishmodel.cpython-37.pyc | Bin 0 -> 22173 bytes .../__pycache__/latin1prober.cpython-37.pyc | Bin 0 -> 2883 bytes .../mbcharsetprober.cpython-37.pyc | Bin 0 -> 2188 bytes .../mbcsgroupprober.cpython-37.pyc | Bin 0 -> 1079 bytes .../chardet/__pycache__/mbcssm.cpython-37.pyc | Bin 0 -> 15634 bytes .../sbcharsetprober.cpython-37.pyc | Bin 0 -> 2941 bytes .../sbcsgroupprober.cpython-37.pyc | Bin 0 -> 1569 bytes .../__pycache__/sjisprober.cpython-37.pyc | Bin 0 -> 2395 bytes .../universaldetector.cpython-37.pyc | Bin 0 -> 5785 bytes .../__pycache__/utf8prober.cpython-37.pyc | Bin 0 -> 1926 bytes .../__pycache__/version.cpython-37.pyc | Bin 0 -> 395 bytes .../pip/_vendor/chardet/big5freq.py | 386 + .../pip/_vendor/chardet/big5prober.py | 47 + .../pip/_vendor/chardet/chardistribution.py | 233 + .../pip/_vendor/chardet/charsetgroupprober.py | 106 + .../pip/_vendor/chardet/charsetprober.py | 145 + .../pip/_vendor/chardet/cli/__init__.py | 1 + .../cli/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 152 bytes .../cli/__pycache__/chardetect.cpython-37.pyc | Bin 0 -> 2641 bytes .../pip/_vendor/chardet/cli/chardetect.py | 85 + .../pip/_vendor/chardet/codingstatemachine.py | 88 + .../pip/_vendor/chardet/compat.py | 34 + .../pip/_vendor/chardet/cp949prober.py | 49 + .../pip/_vendor/chardet/enums.py | 76 + .../pip/_vendor/chardet/escprober.py | 101 + .../pip/_vendor/chardet/escsm.py | 246 + .../pip/_vendor/chardet/eucjpprober.py | 92 + .../pip/_vendor/chardet/euckrfreq.py | 195 + .../pip/_vendor/chardet/euckrprober.py | 47 + .../pip/_vendor/chardet/euctwfreq.py | 387 + .../pip/_vendor/chardet/euctwprober.py | 46 + .../pip/_vendor/chardet/gb2312freq.py | 283 + .../pip/_vendor/chardet/gb2312prober.py | 46 + .../pip/_vendor/chardet/hebrewprober.py | 292 + .../pip/_vendor/chardet/jisfreq.py | 325 + .../pip/_vendor/chardet/jpcntx.py | 233 + .../pip/_vendor/chardet/langbulgarianmodel.py | 228 + .../pip/_vendor/chardet/langcyrillicmodel.py | 333 + .../pip/_vendor/chardet/langgreekmodel.py | 225 + .../pip/_vendor/chardet/langhebrewmodel.py | 200 + .../pip/_vendor/chardet/langhungarianmodel.py | 225 + .../pip/_vendor/chardet/langthaimodel.py | 199 + .../pip/_vendor/chardet/langturkishmodel.py | 193 + .../pip/_vendor/chardet/latin1prober.py | 145 + .../pip/_vendor/chardet/mbcharsetprober.py | 91 + .../pip/_vendor/chardet/mbcsgroupprober.py | 54 + .../pip/_vendor/chardet/mbcssm.py | 572 ++ .../pip/_vendor/chardet/sbcharsetprober.py | 132 + .../pip/_vendor/chardet/sbcsgroupprober.py | 73 + .../pip/_vendor/chardet/sjisprober.py | 92 + .../pip/_vendor/chardet/universaldetector.py | 286 + .../pip/_vendor/chardet/utf8prober.py | 82 + .../pip/_vendor/chardet/version.py | 9 + .../pip/_vendor/colorama/__init__.py | 6 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 400 bytes .../colorama/__pycache__/ansi.cpython-37.pyc | Bin 0 -> 3298 bytes .../__pycache__/ansitowin32.cpython-37.pyc | Bin 0 -> 7554 bytes .../__pycache__/initialise.cpython-37.pyc | Bin 0 -> 1619 bytes .../colorama/__pycache__/win32.cpython-37.pyc | Bin 0 -> 3813 bytes .../__pycache__/winterm.cpython-37.pyc | Bin 0 -> 4561 bytes .../pip/_vendor/colorama/ansi.py | 102 + .../pip/_vendor/colorama/ansitowin32.py | 257 + .../pip/_vendor/colorama/initialise.py | 80 + .../pip/_vendor/colorama/win32.py | 152 + .../pip/_vendor/colorama/winterm.py | 169 + .../site-packages/pip/_vendor/contextlib2.py | 518 ++ .../pip/_vendor/distlib/__init__.py | 23 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 1004 bytes .../distlib/__pycache__/compat.cpython-37.pyc | Bin 0 -> 32008 bytes .../__pycache__/database.cpython-37.pyc | Bin 0 -> 42529 bytes .../distlib/__pycache__/index.cpython-37.pyc | Bin 0 -> 17287 bytes .../__pycache__/locators.cpython-37.pyc | Bin 0 -> 38659 bytes .../__pycache__/manifest.cpython-37.pyc | Bin 0 -> 10246 bytes .../__pycache__/markers.cpython-37.pyc | Bin 0 -> 4432 bytes .../__pycache__/metadata.cpython-37.pyc | Bin 0 -> 27647 bytes .../__pycache__/resources.cpython-37.pyc | Bin 0 -> 10842 bytes .../__pycache__/scripts.cpython-37.pyc | Bin 0 -> 10642 bytes .../distlib/__pycache__/util.cpython-37.pyc | Bin 0 -> 47955 bytes .../__pycache__/version.cpython-37.pyc | Bin 0 -> 20382 bytes .../distlib/__pycache__/wheel.cpython-37.pyc | Bin 0 -> 25572 bytes .../pip/_vendor/distlib/_backport/__init__.py | 6 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 440 bytes .../_backport/__pycache__/misc.cpython-37.pyc | Bin 0 -> 1037 bytes .../__pycache__/shutil.cpython-37.pyc | Bin 0 -> 21353 bytes .../__pycache__/sysconfig.cpython-37.pyc | Bin 0 -> 15818 bytes .../__pycache__/tarfile.cpython-37.pyc | Bin 0 -> 62683 bytes .../pip/_vendor/distlib/_backport/misc.py | 41 + .../pip/_vendor/distlib/_backport/shutil.py | 761 ++ .../_vendor/distlib/_backport/sysconfig.cfg | 84 + .../_vendor/distlib/_backport/sysconfig.py | 788 ++ .../pip/_vendor/distlib/_backport/tarfile.py | 2607 ++++++ .../pip/_vendor/distlib/compat.py | 1120 +++ .../pip/_vendor/distlib/database.py | 1339 +++ .../pip/_vendor/distlib/index.py | 516 ++ .../pip/_vendor/distlib/locators.py | 1295 +++ .../pip/_vendor/distlib/manifest.py | 393 + .../pip/_vendor/distlib/markers.py | 131 + .../pip/_vendor/distlib/metadata.py | 1096 +++ .../pip/_vendor/distlib/resources.py | 355 + .../pip/_vendor/distlib/scripts.py | 403 + .../site-packages/pip/_vendor/distlib/t32.exe | Bin 0 -> 92672 bytes .../site-packages/pip/_vendor/distlib/t64.exe | Bin 0 -> 102912 bytes .../site-packages/pip/_vendor/distlib/util.py | 1760 ++++ .../pip/_vendor/distlib/version.py | 736 ++ .../site-packages/pip/_vendor/distlib/w32.exe | Bin 0 -> 89088 bytes .../site-packages/pip/_vendor/distlib/w64.exe | Bin 0 -> 99840 bytes .../pip/_vendor/distlib/wheel.py | 1004 ++ .../site-packages/pip/_vendor/distro.py | 1216 +++ .../pip/_vendor/html5lib/__init__.py | 35 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 1269 bytes .../__pycache__/_ihatexml.cpython-37.pyc | Bin 0 -> 13716 bytes .../__pycache__/_inputstream.cpython-37.pyc | Bin 0 -> 22607 bytes .../__pycache__/_tokenizer.cpython-37.pyc | Bin 0 -> 41508 bytes .../__pycache__/_utils.cpython-37.pyc | Bin 0 -> 3261 bytes .../__pycache__/constants.cpython-37.pyc | Bin 0 -> 66173 bytes .../__pycache__/html5parser.cpython-37.pyc | Bin 0 -> 97770 bytes .../__pycache__/serializer.cpython-37.pyc | Bin 0 -> 10786 bytes .../pip/_vendor/html5lib/_ihatexml.py | 288 + .../pip/_vendor/html5lib/_inputstream.py | 923 ++ .../pip/_vendor/html5lib/_tokenizer.py | 1721 ++++ .../pip/_vendor/html5lib/_trie/__init__.py | 14 + .../_trie/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 382 bytes .../_trie/__pycache__/_base.cpython-37.pyc | Bin 0 -> 1539 bytes .../_trie/__pycache__/datrie.cpython-37.pyc | Bin 0 -> 1984 bytes .../_trie/__pycache__/py.cpython-37.pyc | Bin 0 -> 2187 bytes .../pip/_vendor/html5lib/_trie/_base.py | 40 + .../pip/_vendor/html5lib/_trie/datrie.py | 44 + .../pip/_vendor/html5lib/_trie/py.py | 67 + .../pip/_vendor/html5lib/_utils.py | 124 + .../pip/_vendor/html5lib/constants.py | 2947 ++++++ .../pip/_vendor/html5lib/filters/__init__.py | 0 .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 157 bytes .../alphabeticalattributes.cpython-37.pyc | Bin 0 -> 1273 bytes .../filters/__pycache__/base.cpython-37.pyc | Bin 0 -> 807 bytes .../inject_meta_charset.cpython-37.pyc | Bin 0 -> 1827 bytes .../filters/__pycache__/lint.cpython-37.pyc | Bin 0 -> 2591 bytes .../__pycache__/optionaltags.cpython-37.pyc | Bin 0 -> 2718 bytes .../__pycache__/sanitizer.cpython-37.pyc | Bin 0 -> 16393 bytes .../__pycache__/whitespace.cpython-37.pyc | Bin 0 -> 1311 bytes .../filters/alphabeticalattributes.py | 29 + .../pip/_vendor/html5lib/filters/base.py | 12 + .../html5lib/filters/inject_meta_charset.py | 73 + .../pip/_vendor/html5lib/filters/lint.py | 93 + .../_vendor/html5lib/filters/optionaltags.py | 207 + .../pip/_vendor/html5lib/filters/sanitizer.py | 896 ++ .../_vendor/html5lib/filters/whitespace.py | 38 + .../pip/_vendor/html5lib/html5parser.py | 2791 ++++++ .../pip/_vendor/html5lib/serializer.py | 409 + .../_vendor/html5lib/treeadapters/__init__.py | 30 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 896 bytes .../__pycache__/genshi.cpython-37.pyc | Bin 0 -> 1493 bytes .../__pycache__/sax.cpython-37.pyc | Bin 0 -> 1443 bytes .../_vendor/html5lib/treeadapters/genshi.py | 54 + .../pip/_vendor/html5lib/treeadapters/sax.py | 50 + .../_vendor/html5lib/treebuilders/__init__.py | 88 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 3277 bytes .../__pycache__/base.cpython-37.pyc | Bin 0 -> 11200 bytes .../__pycache__/dom.cpython-37.pyc | Bin 0 -> 9304 bytes .../__pycache__/etree.cpython-37.pyc | Bin 0 -> 11809 bytes .../__pycache__/etree_lxml.cpython-37.pyc | Bin 0 -> 11749 bytes .../pip/_vendor/html5lib/treebuilders/base.py | 417 + .../pip/_vendor/html5lib/treebuilders/dom.py | 239 + .../_vendor/html5lib/treebuilders/etree.py | 340 + .../html5lib/treebuilders/etree_lxml.py | 366 + .../_vendor/html5lib/treewalkers/__init__.py | 154 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 3954 bytes .../__pycache__/base.cpython-37.pyc | Bin 0 -> 6950 bytes .../__pycache__/dom.cpython-37.pyc | Bin 0 -> 1679 bytes .../__pycache__/etree.cpython-37.pyc | Bin 0 -> 3486 bytes .../__pycache__/etree_lxml.cpython-37.pyc | Bin 0 -> 6595 bytes .../__pycache__/genshi.cpython-37.pyc | Bin 0 -> 1853 bytes .../pip/_vendor/html5lib/treewalkers/base.py | 252 + .../pip/_vendor/html5lib/treewalkers/dom.py | 43 + .../pip/_vendor/html5lib/treewalkers/etree.py | 130 + .../html5lib/treewalkers/etree_lxml.py | 213 + .../_vendor/html5lib/treewalkers/genshi.py | 69 + .../pip/_vendor/idna/__init__.py | 2 + .../idna/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 214 bytes .../idna/__pycache__/codec.cpython-37.pyc | Bin 0 -> 3021 bytes .../idna/__pycache__/compat.cpython-37.pyc | Bin 0 -> 574 bytes .../idna/__pycache__/core.cpython-37.pyc | Bin 0 -> 9017 bytes .../idna/__pycache__/idnadata.cpython-37.pyc | Bin 0 -> 21388 bytes .../idna/__pycache__/intranges.cpython-37.pyc | Bin 0 -> 1754 bytes .../__pycache__/package_data.cpython-37.pyc | Bin 0 -> 168 bytes .../idna/__pycache__/uts46data.cpython-37.pyc | Bin 0 -> 176048 bytes .../site-packages/pip/_vendor/idna/codec.py | 118 + .../site-packages/pip/_vendor/idna/compat.py | 12 + .../site-packages/pip/_vendor/idna/core.py | 396 + .../pip/_vendor/idna/idnadata.py | 1979 ++++ .../pip/_vendor/idna/intranges.py | 53 + .../pip/_vendor/idna/package_data.py | 2 + .../pip/_vendor/idna/uts46data.py | 8205 +++++++++++++++++ .../site-packages/pip/_vendor/ipaddress.py | 2419 +++++ .../pip/_vendor/msgpack/__init__.py | 65 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 1893 bytes .../__pycache__/_version.cpython-37.pyc | Bin 0 -> 175 bytes .../__pycache__/exceptions.cpython-37.pyc | Bin 0 -> 1823 bytes .../__pycache__/fallback.cpython-37.pyc | Bin 0 -> 26227 bytes .../pip/_vendor/msgpack/_version.py | 1 + .../pip/_vendor/msgpack/exceptions.py | 48 + .../pip/_vendor/msgpack/fallback.py | 1027 +++ .../pip/_vendor/packaging/__about__.py | 27 + .../pip/_vendor/packaging/__init__.py | 26 + .../__pycache__/__about__.cpython-37.pyc | Bin 0 -> 688 bytes .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 526 bytes .../__pycache__/_compat.cpython-37.pyc | Bin 0 -> 966 bytes .../__pycache__/_structures.cpython-37.pyc | Bin 0 -> 2818 bytes .../__pycache__/markers.cpython-37.pyc | Bin 0 -> 8857 bytes .../__pycache__/requirements.cpython-37.pyc | Bin 0 -> 3939 bytes .../__pycache__/specifiers.cpython-37.pyc | Bin 0 -> 19716 bytes .../packaging/__pycache__/tags.cpython-37.pyc | Bin 0 -> 10765 bytes .../__pycache__/utils.cpython-37.pyc | Bin 0 -> 1404 bytes .../__pycache__/version.cpython-37.pyc | Bin 0 -> 11908 bytes .../pip/_vendor/packaging/_compat.py | 31 + .../pip/_vendor/packaging/_structures.py | 68 + .../pip/_vendor/packaging/markers.py | 296 + .../pip/_vendor/packaging/requirements.py | 138 + .../pip/_vendor/packaging/specifiers.py | 749 ++ .../pip/_vendor/packaging/tags.py | 404 + .../pip/_vendor/packaging/utils.py | 57 + .../pip/_vendor/packaging/version.py | 420 + .../pip/_vendor/pep517/__init__.py | 4 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 239 bytes .../__pycache__/_in_process.cpython-37.pyc | Bin 0 -> 7509 bytes .../pep517/__pycache__/build.cpython-37.pyc | Bin 0 -> 3302 bytes .../pep517/__pycache__/check.cpython-37.pyc | Bin 0 -> 4804 bytes .../__pycache__/colorlog.cpython-37.pyc | Bin 0 -> 2871 bytes .../pep517/__pycache__/compat.cpython-37.pyc | Bin 0 -> 1020 bytes .../__pycache__/dirtools.cpython-37.pyc | Bin 0 -> 1284 bytes .../__pycache__/envbuild.cpython-37.pyc | Bin 0 -> 4293 bytes .../pep517/__pycache__/meta.cpython-37.pyc | Bin 0 -> 2771 bytes .../__pycache__/wrappers.cpython-37.pyc | Bin 0 -> 10067 bytes .../pip/_vendor/pep517/_in_process.py | 257 + .../site-packages/pip/_vendor/pep517/build.py | 124 + .../site-packages/pip/_vendor/pep517/check.py | 203 + .../pip/_vendor/pep517/colorlog.py | 115 + .../pip/_vendor/pep517/compat.py | 34 + .../pip/_vendor/pep517/dirtools.py | 44 + .../pip/_vendor/pep517/envbuild.py | 167 + .../site-packages/pip/_vendor/pep517/meta.py | 92 + .../pip/_vendor/pep517/wrappers.py | 298 + .../pip/_vendor/pkg_resources/__init__.py | 3295 +++++++ .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 99681 bytes .../__pycache__/py31compat.cpython-37.pyc | Bin 0 -> 599 bytes .../pip/_vendor/pkg_resources/py31compat.py | 23 + .../pip/_vendor/progress/__init__.py | 177 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 5515 bytes .../progress/__pycache__/bar.cpython-37.pyc | Bin 0 -> 2607 bytes .../__pycache__/counter.cpython-37.pyc | Bin 0 -> 1419 bytes .../__pycache__/spinner.cpython-37.pyc | Bin 0 -> 1384 bytes .../site-packages/pip/_vendor/progress/bar.py | 91 + .../pip/_vendor/progress/counter.py | 41 + .../pip/_vendor/progress/spinner.py | 43 + .../site-packages/pip/_vendor/pyparsing.py | 6894 ++++++++++++++ .../pip/_vendor/pytoml/__init__.py | 4 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 333 bytes .../pytoml/__pycache__/core.cpython-37.pyc | Bin 0 -> 896 bytes .../pytoml/__pycache__/parser.cpython-37.pyc | Bin 0 -> 9981 bytes .../pytoml/__pycache__/test.cpython-37.pyc | Bin 0 -> 1196 bytes .../pytoml/__pycache__/utils.cpython-37.pyc | Bin 0 -> 2095 bytes .../pytoml/__pycache__/writer.cpython-37.pyc | Bin 0 -> 3675 bytes .../site-packages/pip/_vendor/pytoml/core.py | 13 + .../pip/_vendor/pytoml/parser.py | 342 + .../site-packages/pip/_vendor/pytoml/test.py | 30 + .../site-packages/pip/_vendor/pytoml/utils.py | 67 + .../pip/_vendor/pytoml/writer.py | 114 + .../pip/_vendor/requests/__init__.py | 133 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 3444 bytes .../__pycache__/__version__.cpython-37.pyc | Bin 0 -> 507 bytes .../_internal_utils.cpython-37.pyc | Bin 0 -> 1265 bytes .../__pycache__/adapters.cpython-37.pyc | Bin 0 -> 16842 bytes .../requests/__pycache__/api.cpython-37.pyc | Bin 0 -> 6466 bytes .../requests/__pycache__/auth.cpython-37.pyc | Bin 0 -> 8299 bytes .../requests/__pycache__/certs.cpython-37.pyc | Bin 0 -> 590 bytes .../__pycache__/compat.cpython-37.pyc | Bin 0 -> 1569 bytes .../__pycache__/cookies.cpython-37.pyc | Bin 0 -> 18744 bytes .../__pycache__/exceptions.cpython-37.pyc | Bin 0 -> 5462 bytes .../requests/__pycache__/help.cpython-37.pyc | Bin 0 -> 2643 bytes .../requests/__pycache__/hooks.cpython-37.pyc | Bin 0 -> 937 bytes .../__pycache__/models.cpython-37.pyc | Bin 0 -> 24065 bytes .../__pycache__/packages.cpython-37.pyc | Bin 0 -> 467 bytes .../__pycache__/sessions.cpython-37.pyc | Bin 0 -> 19385 bytes .../__pycache__/status_codes.cpython-37.pyc | Bin 0 -> 4123 bytes .../__pycache__/structures.cpython-37.pyc | Bin 0 -> 4336 bytes .../requests/__pycache__/utils.cpython-37.pyc | Bin 0 -> 21996 bytes .../pip/_vendor/requests/__version__.py | 14 + .../pip/_vendor/requests/_internal_utils.py | 42 + .../pip/_vendor/requests/adapters.py | 533 ++ .../site-packages/pip/_vendor/requests/api.py | 158 + .../pip/_vendor/requests/auth.py | 305 + .../pip/_vendor/requests/certs.py | 18 + .../pip/_vendor/requests/compat.py | 74 + .../pip/_vendor/requests/cookies.py | 549 ++ .../pip/_vendor/requests/exceptions.py | 126 + .../pip/_vendor/requests/help.py | 119 + .../pip/_vendor/requests/hooks.py | 34 + .../pip/_vendor/requests/models.py | 953 ++ .../pip/_vendor/requests/packages.py | 16 + .../pip/_vendor/requests/sessions.py | 770 ++ .../pip/_vendor/requests/status_codes.py | 120 + .../pip/_vendor/requests/structures.py | 103 + .../pip/_vendor/requests/utils.py | 977 ++ .../site-packages/pip/_vendor/retrying.py | 267 + .../site-packages/pip/_vendor/six.py | 952 ++ .../pip/_vendor/urllib3/__init__.py | 86 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 2070 bytes .../__pycache__/_collections.cpython-37.pyc | Bin 0 -> 10640 bytes .../__pycache__/connection.cpython-37.pyc | Bin 0 -> 10423 bytes .../__pycache__/connectionpool.cpython-37.pyc | Bin 0 -> 24012 bytes .../__pycache__/exceptions.cpython-37.pyc | Bin 0 -> 10357 bytes .../urllib3/__pycache__/fields.cpython-37.pyc | Bin 0 -> 8051 bytes .../__pycache__/filepost.cpython-37.pyc | Bin 0 -> 2717 bytes .../__pycache__/poolmanager.cpython-37.pyc | Bin 0 -> 12813 bytes .../__pycache__/request.cpython-37.pyc | Bin 0 -> 5549 bytes .../__pycache__/response.cpython-37.pyc | Bin 0 -> 20148 bytes .../pip/_vendor/urllib3/_collections.py | 336 + .../pip/_vendor/urllib3/connection.py | 448 + .../pip/_vendor/urllib3/connectionpool.py | 1051 +++ .../pip/_vendor/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 156 bytes .../_appengine_environ.cpython-37.pyc | Bin 0 -> 1048 bytes .../__pycache__/appengine.cpython-37.pyc | Bin 0 -> 8293 bytes .../__pycache__/ntlmpool.cpython-37.pyc | Bin 0 -> 3204 bytes .../__pycache__/pyopenssl.cpython-37.pyc | Bin 0 -> 14767 bytes .../securetransport.cpython-37.pyc | Bin 0 -> 19695 bytes .../contrib/__pycache__/socks.cpython-37.pyc | Bin 0 -> 5472 bytes .../urllib3/contrib/_appengine_environ.py | 32 + .../contrib/_securetransport/__init__.py | 0 .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 173 bytes .../__pycache__/bindings.cpython-37.pyc | Bin 0 -> 10120 bytes .../__pycache__/low_level.cpython-37.pyc | Bin 0 -> 7417 bytes .../contrib/_securetransport/bindings.py | 492 + .../contrib/_securetransport/low_level.py | 328 + .../pip/_vendor/urllib3/contrib/appengine.py | 321 + .../pip/_vendor/urllib3/contrib/ntlmpool.py | 123 + .../pip/_vendor/urllib3/contrib/pyopenssl.py | 498 + .../urllib3/contrib/securetransport.py | 870 ++ .../pip/_vendor/urllib3/contrib/socks.py | 210 + .../pip/_vendor/urllib3/exceptions.py | 255 + .../pip/_vendor/urllib3/fields.py | 273 + .../pip/_vendor/urllib3/filepost.py | 98 + .../pip/_vendor/urllib3/packages/__init__.py | 5 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 270 bytes .../packages/__pycache__/six.cpython-37.pyc | Bin 0 -> 26413 bytes .../urllib3/packages/backports/__init__.py | 0 .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 167 bytes .../__pycache__/makefile.cpython-37.pyc | Bin 0 -> 1257 bytes .../urllib3/packages/backports/makefile.py | 52 + .../pip/_vendor/urllib3/packages/six.py | 1021 ++ .../packages/ssl_match_hostname/__init__.py | 19 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 511 bytes .../_implementation.cpython-37.pyc | Bin 0 -> 3276 bytes .../ssl_match_hostname/_implementation.py | 162 + .../pip/_vendor/urllib3/poolmanager.py | 470 + .../pip/_vendor/urllib3/request.py | 171 + .../pip/_vendor/urllib3/response.py | 809 ++ .../pip/_vendor/urllib3/util/__init__.py | 46 + .../util/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 976 bytes .../__pycache__/connection.cpython-37.pyc | Bin 0 -> 3125 bytes .../util/__pycache__/queue.cpython-37.pyc | Bin 0 -> 997 bytes .../util/__pycache__/request.cpython-37.pyc | Bin 0 -> 3291 bytes .../util/__pycache__/response.cpython-37.pyc | Bin 0 -> 1924 bytes .../util/__pycache__/retry.cpython-37.pyc | Bin 0 -> 12845 bytes .../util/__pycache__/ssl_.cpython-37.pyc | Bin 0 -> 9718 bytes .../util/__pycache__/timeout.cpython-37.pyc | Bin 0 -> 8784 bytes .../util/__pycache__/url.cpython-37.pyc | Bin 0 -> 10567 bytes .../util/__pycache__/wait.cpython-37.pyc | Bin 0 -> 3089 bytes .../pip/_vendor/urllib3/util/connection.py | 138 + .../pip/_vendor/urllib3/util/queue.py | 21 + .../pip/_vendor/urllib3/util/request.py | 135 + .../pip/_vendor/urllib3/util/response.py | 86 + .../pip/_vendor/urllib3/util/retry.py | 450 + .../pip/_vendor/urllib3/util/ssl_.py | 407 + .../pip/_vendor/urllib3/util/timeout.py | 258 + .../pip/_vendor/urllib3/util/url.py | 439 + .../pip/_vendor/urllib3/util/wait.py | 153 + .../pip/_vendor/webencodings/__init__.py | 342 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 9632 bytes .../__pycache__/labels.cpython-37.pyc | Bin 0 -> 4046 bytes .../__pycache__/mklabels.cpython-37.pyc | Bin 0 -> 1868 bytes .../__pycache__/tests.cpython-37.pyc | Bin 0 -> 5009 bytes .../__pycache__/x_user_defined.cpython-37.pyc | Bin 0 -> 2621 bytes .../pip/_vendor/webencodings/labels.py | 231 + .../pip/_vendor/webencodings/mklabels.py | 59 + .../pip/_vendor/webencodings/tests.py | 153 + .../_vendor/webencodings/x_user_defined.py | 325 + .../site-packages/pkg_resources/__init__.py | 3295 +++++++ .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 99730 bytes .../__pycache__/py31compat.cpython-37.pyc | Bin 0 -> 594 bytes .../pkg_resources/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 157 bytes .../__pycache__/appdirs.cpython-37.pyc | Bin 0 -> 20645 bytes .../__pycache__/pyparsing.cpython-37.pyc | Bin 0 -> 203000 bytes .../_vendor/__pycache__/six.cpython-37.pyc | Bin 0 -> 24358 bytes .../pkg_resources/_vendor/appdirs.py | 608 ++ .../_vendor/packaging/__about__.py | 21 + .../_vendor/packaging/__init__.py | 14 + .../__pycache__/__about__.cpython-37.pyc | Bin 0 -> 693 bytes .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 531 bytes .../__pycache__/_compat.cpython-37.pyc | Bin 0 -> 983 bytes .../__pycache__/_structures.cpython-37.pyc | Bin 0 -> 2835 bytes .../__pycache__/markers.cpython-37.pyc | Bin 0 -> 8843 bytes .../__pycache__/requirements.cpython-37.pyc | Bin 0 -> 3848 bytes .../__pycache__/specifiers.cpython-37.pyc | Bin 0 -> 19761 bytes .../__pycache__/utils.cpython-37.pyc | Bin 0 -> 462 bytes .../__pycache__/version.cpython-37.pyc | Bin 0 -> 10528 bytes .../_vendor/packaging/_compat.py | 30 + .../_vendor/packaging/_structures.py | 68 + .../_vendor/packaging/markers.py | 301 + .../_vendor/packaging/requirements.py | 127 + .../_vendor/packaging/specifiers.py | 774 ++ .../pkg_resources/_vendor/packaging/utils.py | 14 + .../_vendor/packaging/version.py | 393 + .../pkg_resources/_vendor/pyparsing.py | 5742 ++++++++++++ .../pkg_resources/_vendor/six.py | 868 ++ .../pkg_resources/extern/__init__.py | 73 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 2376 bytes .../site-packages/pkg_resources/py31compat.py | 23 + .../requests-2.22.0.dist-info/INSTALLER | 1 + .../requests-2.22.0.dist-info/LICENSE | 13 + .../requests-2.22.0.dist-info/METADATA | 145 + .../requests-2.22.0.dist-info/RECORD | 42 + .../requests-2.22.0.dist-info/WHEEL | 6 + .../requests-2.22.0.dist-info/top_level.txt | 1 + .../site-packages/requests/__init__.py | 131 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 3314 bytes .../__pycache__/__version__.cpython-37.pyc | Bin 0 -> 500 bytes .../_internal_utils.cpython-37.pyc | Bin 0 -> 1258 bytes .../__pycache__/adapters.cpython-37.pyc | Bin 0 -> 16763 bytes .../requests/__pycache__/api.cpython-37.pyc | Bin 0 -> 6459 bytes .../requests/__pycache__/auth.cpython-37.pyc | Bin 0 -> 8292 bytes .../requests/__pycache__/certs.cpython-37.pyc | Bin 0 -> 571 bytes .../__pycache__/compat.cpython-37.pyc | Bin 0 -> 1605 bytes .../__pycache__/cookies.cpython-37.pyc | Bin 0 -> 18737 bytes .../__pycache__/exceptions.cpython-37.pyc | Bin 0 -> 5443 bytes .../requests/__pycache__/help.cpython-37.pyc | Bin 0 -> 2578 bytes .../requests/__pycache__/hooks.cpython-37.pyc | Bin 0 -> 930 bytes .../__pycache__/models.cpython-37.pyc | Bin 0 -> 23986 bytes .../__pycache__/packages.cpython-37.pyc | Bin 0 -> 367 bytes .../__pycache__/sessions.cpython-37.pyc | Bin 0 -> 19378 bytes .../__pycache__/status_codes.cpython-37.pyc | Bin 0 -> 4116 bytes .../__pycache__/structures.cpython-37.pyc | Bin 0 -> 4329 bytes .../requests/__pycache__/utils.cpython-37.pyc | Bin 0 -> 21989 bytes .../site-packages/requests/__version__.py | 14 + .../site-packages/requests/_internal_utils.py | 42 + .../site-packages/requests/adapters.py | 533 ++ .../python3.7/site-packages/requests/api.py | 158 + .../python3.7/site-packages/requests/auth.py | 305 + .../python3.7/site-packages/requests/certs.py | 18 + .../site-packages/requests/compat.py | 70 + .../site-packages/requests/cookies.py | 549 ++ .../site-packages/requests/exceptions.py | 126 + .../python3.7/site-packages/requests/help.py | 119 + .../python3.7/site-packages/requests/hooks.py | 34 + .../site-packages/requests/models.py | 953 ++ .../site-packages/requests/packages.py | 14 + .../site-packages/requests/sessions.py | 770 ++ .../site-packages/requests/status_codes.py | 120 + .../site-packages/requests/structures.py | 103 + .../python3.7/site-packages/requests/utils.py | 977 ++ .../setuptools-41.4.0.dist-info/INSTALLER | 1 + .../setuptools-41.4.0.dist-info/LICENSE | 19 + .../setuptools-41.4.0.dist-info/METADATA | 77 + .../setuptools-41.4.0.dist-info/RECORD | 188 + .../setuptools-41.4.0.dist-info/WHEEL | 6 + .../dependency_links.txt | 2 + .../entry_points.txt | 65 + .../setuptools-41.4.0.dist-info/top_level.txt | 3 + .../setuptools-41.4.0.dist-info/zip-safe | 1 + .../site-packages/setuptools/__init__.py | 228 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 7658 bytes .../_deprecation_warning.cpython-37.pyc | Bin 0 -> 512 bytes .../__pycache__/archive_util.cpython-37.pyc | Bin 0 -> 5093 bytes .../__pycache__/build_meta.cpython-37.pyc | Bin 0 -> 8431 bytes .../__pycache__/config.cpython-37.pyc | Bin 0 -> 17756 bytes .../__pycache__/dep_util.cpython-37.pyc | Bin 0 -> 819 bytes .../__pycache__/depends.cpython-37.pyc | Bin 0 -> 5228 bytes .../__pycache__/dist.cpython-37.pyc | Bin 0 -> 42215 bytes .../__pycache__/extension.cpython-37.pyc | Bin 0 -> 1939 bytes .../__pycache__/glibc.cpython-37.pyc | Bin 0 -> 1504 bytes .../__pycache__/glob.cpython-37.pyc | Bin 0 -> 3714 bytes .../__pycache__/launch.cpython-37.pyc | Bin 0 -> 818 bytes .../__pycache__/lib2to3_ex.cpython-37.pyc | Bin 0 -> 2397 bytes .../__pycache__/monkey.cpython-37.pyc | Bin 0 -> 4598 bytes .../__pycache__/msvc.cpython-37.pyc | Bin 0 -> 34395 bytes .../__pycache__/namespaces.cpython-37.pyc | Bin 0 -> 3576 bytes .../__pycache__/package_index.cpython-37.pyc | Bin 0 -> 32662 bytes .../__pycache__/pep425tags.cpython-37.pyc | Bin 0 -> 7166 bytes .../__pycache__/py27compat.cpython-37.pyc | Bin 0 -> 775 bytes .../__pycache__/py31compat.cpython-37.pyc | Bin 0 -> 1173 bytes .../__pycache__/py33compat.cpython-37.pyc | Bin 0 -> 1400 bytes .../__pycache__/sandbox.cpython-37.pyc | Bin 0 -> 15500 bytes .../__pycache__/site-patch.cpython-37.pyc | Bin 0 -> 1466 bytes .../__pycache__/ssl_support.cpython-37.pyc | Bin 0 -> 6756 bytes .../__pycache__/unicode_utils.cpython-37.pyc | Bin 0 -> 1133 bytes .../__pycache__/version.cpython-37.pyc | Bin 0 -> 292 bytes .../__pycache__/wheel.cpython-37.pyc | Bin 0 -> 6945 bytes .../windows_support.cpython-37.pyc | Bin 0 -> 975 bytes .../setuptools/_deprecation_warning.py | 7 + .../setuptools/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 154 bytes .../__pycache__/ordered_set.cpython-37.pyc | Bin 0 -> 16374 bytes .../__pycache__/pyparsing.cpython-37.pyc | Bin 0 -> 202997 bytes .../_vendor/__pycache__/six.cpython-37.pyc | Bin 0 -> 24355 bytes .../setuptools/_vendor/ordered_set.py | 488 + .../setuptools/_vendor/packaging/__about__.py | 21 + .../setuptools/_vendor/packaging/__init__.py | 14 + .../__pycache__/__about__.cpython-37.pyc | Bin 0 -> 690 bytes .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 528 bytes .../__pycache__/_compat.cpython-37.pyc | Bin 0 -> 980 bytes .../__pycache__/_structures.cpython-37.pyc | Bin 0 -> 2832 bytes .../__pycache__/markers.cpython-37.pyc | Bin 0 -> 8837 bytes .../__pycache__/requirements.cpython-37.pyc | Bin 0 -> 3839 bytes .../__pycache__/specifiers.cpython-37.pyc | Bin 0 -> 19758 bytes .../__pycache__/utils.cpython-37.pyc | Bin 0 -> 459 bytes .../__pycache__/version.cpython-37.pyc | Bin 0 -> 10525 bytes .../setuptools/_vendor/packaging/_compat.py | 30 + .../_vendor/packaging/_structures.py | 68 + .../setuptools/_vendor/packaging/markers.py | 301 + .../_vendor/packaging/requirements.py | 127 + .../_vendor/packaging/specifiers.py | 774 ++ .../setuptools/_vendor/packaging/utils.py | 14 + .../setuptools/_vendor/packaging/version.py | 393 + .../setuptools/_vendor/pyparsing.py | 5742 ++++++++++++ .../site-packages/setuptools/_vendor/six.py | 868 ++ .../site-packages/setuptools/archive_util.py | 173 + .../site-packages/setuptools/build_meta.py | 257 + .../site-packages/setuptools/cli-32.exe | Bin 0 -> 65536 bytes .../site-packages/setuptools/cli-64.exe | Bin 0 -> 74752 bytes .../site-packages/setuptools/cli.exe | Bin 0 -> 65536 bytes .../setuptools/command/__init__.py | 18 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 700 bytes .../command/__pycache__/alias.cpython-37.pyc | Bin 0 -> 2368 bytes .../__pycache__/bdist_egg.cpython-37.pyc | Bin 0 -> 14156 bytes .../__pycache__/bdist_rpm.cpython-37.pyc | Bin 0 -> 1747 bytes .../__pycache__/bdist_wininst.cpython-37.pyc | Bin 0 -> 938 bytes .../__pycache__/build_clib.cpython-37.pyc | Bin 0 -> 2417 bytes .../__pycache__/build_ext.cpython-37.pyc | Bin 0 -> 9720 bytes .../__pycache__/build_py.cpython-37.pyc | Bin 0 -> 8547 bytes .../__pycache__/develop.cpython-37.pyc | Bin 0 -> 6428 bytes .../__pycache__/dist_info.cpython-37.pyc | Bin 0 -> 1343 bytes .../__pycache__/easy_install.cpython-37.pyc | Bin 0 -> 64799 bytes .../__pycache__/egg_info.cpython-37.pyc | Bin 0 -> 21645 bytes .../__pycache__/install.cpython-37.pyc | Bin 0 -> 3975 bytes .../install_egg_info.cpython-37.pyc | Bin 0 -> 2376 bytes .../__pycache__/install_lib.cpython-37.pyc | Bin 0 -> 4070 bytes .../install_scripts.cpython-37.pyc | Bin 0 -> 2255 bytes .../__pycache__/py36compat.cpython-37.pyc | Bin 0 -> 4588 bytes .../__pycache__/register.cpython-37.pyc | Bin 0 -> 745 bytes .../command/__pycache__/rotate.cpython-37.pyc | Bin 0 -> 2494 bytes .../__pycache__/saveopts.cpython-37.pyc | Bin 0 -> 889 bytes .../command/__pycache__/sdist.cpython-37.pyc | Bin 0 -> 6747 bytes .../command/__pycache__/setopt.cpython-37.pyc | Bin 0 -> 4487 bytes .../command/__pycache__/test.cpython-37.pyc | Bin 0 -> 8140 bytes .../command/__pycache__/upload.cpython-37.pyc | Bin 0 -> 5153 bytes .../__pycache__/upload_docs.cpython-37.pyc | Bin 0 -> 6098 bytes .../site-packages/setuptools/command/alias.py | 80 + .../setuptools/command/bdist_egg.py | 502 + .../setuptools/command/bdist_rpm.py | 43 + .../setuptools/command/bdist_wininst.py | 21 + .../setuptools/command/build_clib.py | 98 + .../setuptools/command/build_ext.py | 327 + .../setuptools/command/build_py.py | 270 + .../setuptools/command/develop.py | 221 + .../setuptools/command/dist_info.py | 36 + .../setuptools/command/easy_install.py | 2342 +++++ .../setuptools/command/egg_info.py | 717 ++ .../setuptools/command/install.py | 125 + .../setuptools/command/install_egg_info.py | 62 + .../setuptools/command/install_lib.py | 121 + .../setuptools/command/install_scripts.py | 65 + .../setuptools/command/launcher manifest.xml | 15 + .../setuptools/command/py36compat.py | 136 + .../setuptools/command/register.py | 18 + .../setuptools/command/rotate.py | 66 + .../setuptools/command/saveopts.py | 22 + .../site-packages/setuptools/command/sdist.py | 221 + .../setuptools/command/setopt.py | 149 + .../site-packages/setuptools/command/test.py | 271 + .../setuptools/command/upload.py | 196 + .../setuptools/command/upload_docs.py | 206 + .../site-packages/setuptools/config.py | 658 ++ .../site-packages/setuptools/dep_util.py | 23 + .../site-packages/setuptools/depends.py | 186 + .../site-packages/setuptools/dist.py | 1281 +++ .../site-packages/setuptools/extension.py | 57 + .../setuptools/extern/__init__.py | 73 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 2390 bytes .../site-packages/setuptools/glibc.py | 86 + .../site-packages/setuptools/glob.py | 174 + .../site-packages/setuptools/gui-32.exe | Bin 0 -> 65536 bytes .../site-packages/setuptools/gui-64.exe | Bin 0 -> 75264 bytes .../site-packages/setuptools/gui.exe | Bin 0 -> 65536 bytes .../site-packages/setuptools/launch.py | 35 + .../site-packages/setuptools/lib2to3_ex.py | 62 + .../site-packages/setuptools/monkey.py | 179 + .../site-packages/setuptools/msvc.py | 1301 +++ .../site-packages/setuptools/namespaces.py | 107 + .../site-packages/setuptools/package_index.py | 1136 +++ .../site-packages/setuptools/pep425tags.py | 319 + .../site-packages/setuptools/py27compat.py | 28 + .../site-packages/setuptools/py31compat.py | 32 + .../site-packages/setuptools/py33compat.py | 59 + .../site-packages/setuptools/sandbox.py | 491 + .../setuptools/script (dev).tmpl | 6 + .../site-packages/setuptools/script.tmpl | 3 + .../site-packages/setuptools/site-patch.py | 74 + .../site-packages/setuptools/ssl_support.py | 260 + .../site-packages/setuptools/unicode_utils.py | 44 + .../site-packages/setuptools/version.py | 6 + .../site-packages/setuptools/wheel.py | 211 + .../setuptools/windows_support.py | 29 + .../six-1.12.0.dist-info/INSTALLER | 1 + .../six-1.12.0.dist-info/LICENSE | 18 + .../six-1.12.0.dist-info/METADATA | 52 + .../site-packages/six-1.12.0.dist-info/RECORD | 8 + .../site-packages/six-1.12.0.dist-info/WHEEL | 6 + .../six-1.12.0.dist-info/top_level.txt | 1 + venv/lib/python3.7/site-packages/six.py | 952 ++ .../soupsieve-1.9.4.dist-info/INSTALLER | 1 + .../soupsieve-1.9.4.dist-info/LICENSE.md | 21 + .../soupsieve-1.9.4.dist-info/METADATA | 120 + .../soupsieve-1.9.4.dist-info/RECORD | 18 + .../soupsieve-1.9.4.dist-info/WHEEL | 6 + .../soupsieve-1.9.4.dist-info/top_level.txt | 1 + .../site-packages/soupsieve/__init__.py | 127 + .../site-packages/soupsieve/__meta__.py | 190 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 4433 bytes .../__pycache__/__meta__.cpython-37.pyc | Bin 0 -> 5737 bytes .../__pycache__/css_match.cpython-37.pyc | Bin 0 -> 34153 bytes .../__pycache__/css_parser.cpython-37.pyc | Bin 0 -> 27296 bytes .../__pycache__/css_types.cpython-37.pyc | Bin 0 -> 11042 bytes .../soupsieve/__pycache__/util.cpython-37.pyc | Bin 0 -> 4271 bytes .../site-packages/soupsieve/css_match.py | 1524 +++ .../site-packages/soupsieve/css_parser.py | 1209 +++ .../site-packages/soupsieve/css_types.py | 344 + .../python3.7/site-packages/soupsieve/util.py | 170 + .../urllib3-1.25.6.dist-info/INSTALLER | 1 + .../urllib3-1.25.6.dist-info/LICENSE.txt | 21 + .../urllib3-1.25.6.dist-info/METADATA | 1243 +++ .../urllib3-1.25.6.dist-info/RECORD | 78 + .../urllib3-1.25.6.dist-info/WHEEL | 6 + .../urllib3-1.25.6.dist-info/top_level.txt | 1 + .../site-packages/urllib3/__init__.py | 86 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 2062 bytes .../__pycache__/_collections.cpython-37.pyc | Bin 0 -> 10632 bytes .../__pycache__/connection.cpython-37.pyc | Bin 0 -> 10415 bytes .../__pycache__/connectionpool.cpython-37.pyc | Bin 0 -> 24004 bytes .../__pycache__/exceptions.cpython-37.pyc | Bin 0 -> 10349 bytes .../urllib3/__pycache__/fields.cpython-37.pyc | Bin 0 -> 8043 bytes .../__pycache__/filepost.cpython-37.pyc | Bin 0 -> 2709 bytes .../__pycache__/poolmanager.cpython-37.pyc | Bin 0 -> 12805 bytes .../__pycache__/request.cpython-37.pyc | Bin 0 -> 5541 bytes .../__pycache__/response.cpython-37.pyc | Bin 0 -> 20140 bytes .../site-packages/urllib3/_collections.py | 336 + .../site-packages/urllib3/connection.py | 448 + .../site-packages/urllib3/connectionpool.py | 1051 +++ .../site-packages/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 148 bytes .../_appengine_environ.cpython-37.pyc | Bin 0 -> 1040 bytes .../__pycache__/appengine.cpython-37.pyc | Bin 0 -> 8261 bytes .../__pycache__/ntlmpool.cpython-37.pyc | Bin 0 -> 3196 bytes .../__pycache__/pyopenssl.cpython-37.pyc | Bin 0 -> 14735 bytes .../securetransport.cpython-37.pyc | Bin 0 -> 19687 bytes .../contrib/__pycache__/socks.cpython-37.pyc | Bin 0 -> 5464 bytes .../urllib3/contrib/_appengine_environ.py | 32 + .../contrib/_securetransport/__init__.py | 0 .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 165 bytes .../__pycache__/bindings.cpython-37.pyc | Bin 0 -> 10112 bytes .../__pycache__/low_level.cpython-37.pyc | Bin 0 -> 7409 bytes .../contrib/_securetransport/bindings.py | 492 + .../contrib/_securetransport/low_level.py | 328 + .../urllib3/contrib/appengine.py | 321 + .../site-packages/urllib3/contrib/ntlmpool.py | 123 + .../urllib3/contrib/pyopenssl.py | 498 + .../urllib3/contrib/securetransport.py | 870 ++ .../site-packages/urllib3/contrib/socks.py | 210 + .../site-packages/urllib3/exceptions.py | 255 + .../python3.7/site-packages/urllib3/fields.py | 273 + .../site-packages/urllib3/filepost.py | 98 + .../urllib3/packages/__init__.py | 5 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 262 bytes .../packages/__pycache__/six.cpython-37.pyc | Bin 0 -> 26405 bytes .../urllib3/packages/backports/__init__.py | 0 .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 159 bytes .../__pycache__/makefile.cpython-37.pyc | Bin 0 -> 1249 bytes .../urllib3/packages/backports/makefile.py | 52 + .../site-packages/urllib3/packages/six.py | 1021 ++ .../packages/ssl_match_hostname/__init__.py | 19 + .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 503 bytes .../_implementation.cpython-37.pyc | Bin 0 -> 3244 bytes .../ssl_match_hostname/_implementation.py | 162 + .../site-packages/urllib3/poolmanager.py | 470 + .../site-packages/urllib3/request.py | 171 + .../site-packages/urllib3/response.py | 809 ++ .../site-packages/urllib3/util/__init__.py | 46 + .../util/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 968 bytes .../__pycache__/connection.cpython-37.pyc | Bin 0 -> 3117 bytes .../util/__pycache__/queue.cpython-37.pyc | Bin 0 -> 989 bytes .../util/__pycache__/request.cpython-37.pyc | Bin 0 -> 3283 bytes .../util/__pycache__/response.cpython-37.pyc | Bin 0 -> 1916 bytes .../util/__pycache__/retry.cpython-37.pyc | Bin 0 -> 12837 bytes .../util/__pycache__/ssl_.cpython-37.pyc | Bin 0 -> 9698 bytes .../util/__pycache__/timeout.cpython-37.pyc | Bin 0 -> 8776 bytes .../util/__pycache__/url.cpython-37.pyc | Bin 0 -> 10535 bytes .../util/__pycache__/wait.cpython-37.pyc | Bin 0 -> 3081 bytes .../site-packages/urllib3/util/connection.py | 138 + .../site-packages/urllib3/util/queue.py | 21 + .../site-packages/urllib3/util/request.py | 135 + .../site-packages/urllib3/util/response.py | 86 + .../site-packages/urllib3/util/retry.py | 450 + .../site-packages/urllib3/util/ssl_.py | 407 + .../site-packages/urllib3/util/timeout.py | 258 + .../site-packages/urllib3/util/url.py | 439 + .../site-packages/urllib3/util/wait.py | 153 + .../wheel-0.33.6.dist-info/INSTALLER | 1 + .../wheel-0.33.6.dist-info/LICENSE.txt | 22 + .../wheel-0.33.6.dist-info/METADATA | 61 + .../wheel-0.33.6.dist-info/RECORD | 32 + .../wheel-0.33.6.dist-info/WHEEL | 6 + .../wheel-0.33.6.dist-info/entry_points.txt | 6 + .../wheel-0.33.6.dist-info/top_level.txt | 1 + .../python3.7/site-packages/wheel/__init__.py | 2 + .../python3.7/site-packages/wheel/__main__.py | 19 + .../wheel/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 158 bytes .../wheel/__pycache__/__main__.cpython-37.pyc | Bin 0 -> 551 bytes .../__pycache__/bdist_wheel.cpython-37.pyc | Bin 0 -> 10043 bytes .../wheel/__pycache__/metadata.cpython-37.pyc | Bin 0 -> 3734 bytes .../__pycache__/pep425tags.cpython-37.pyc | Bin 0 -> 4957 bytes .../wheel/__pycache__/pkginfo.cpython-37.pyc | Bin 0 -> 1529 bytes .../wheel/__pycache__/util.cpython-37.pyc | Bin 0 -> 1274 bytes .../__pycache__/wheelfile.cpython-37.pyc | Bin 0 -> 5429 bytes .../site-packages/wheel/bdist_wheel.py | 372 + .../site-packages/wheel/cli/__init__.py | 88 + .../cli/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 3000 bytes .../cli/__pycache__/convert.cpython-37.pyc | Bin 0 -> 6170 bytes .../wheel/cli/__pycache__/pack.cpython-37.pyc | Bin 0 -> 2458 bytes .../cli/__pycache__/unpack.cpython-37.pyc | Bin 0 -> 903 bytes .../site-packages/wheel/cli/convert.py | 269 + .../python3.7/site-packages/wheel/cli/pack.py | 58 + .../site-packages/wheel/cli/unpack.py | 25 + .../python3.7/site-packages/wheel/metadata.py | 141 + .../site-packages/wheel/pep425tags.py | 190 + .../python3.7/site-packages/wheel/pkginfo.py | 43 + .../lib/python3.7/site-packages/wheel/util.py | 46 + .../site-packages/wheel/wheelfile.py | 169 + venv/lib/python3.7/site.py | 833 ++ venv/lib/python3.7/sre_compile.py | 1 + venv/lib/python3.7/sre_constants.py | 1 + venv/lib/python3.7/sre_parse.py | 1 + venv/lib/python3.7/stat.py | 1 + venv/lib/python3.7/struct.py | 1 + venv/lib/python3.7/tarfile.py | 1 + venv/lib/python3.7/tempfile.py | 1 + venv/lib/python3.7/token.py | 1 + venv/lib/python3.7/tokenize.py | 1 + venv/lib/python3.7/types.py | 1 + venv/lib/python3.7/warnings.py | 1 + venv/lib/python3.7/weakref.py | 1 + 2099 files changed, 360824 insertions(+) create mode 100644 Readme.md create mode 100644 hamo.py create mode 100644 requirements.txt create mode 100644 setup.py create mode 100644 venv/bin/activate create mode 100644 venv/bin/activate.csh create mode 100644 venv/bin/activate.fish create mode 100644 venv/bin/activate.ps1 create mode 100644 venv/bin/activate.xsh create mode 100644 venv/bin/activate_this.py create mode 100755 venv/bin/chardetect create mode 100755 venv/bin/easy_install create mode 100755 venv/bin/easy_install-3.7 create mode 100755 venv/bin/pip create mode 100755 venv/bin/pip3 create mode 100755 venv/bin/pip3.7 create mode 120000 venv/bin/python create mode 100755 venv/bin/python-config create mode 120000 venv/bin/python3 create mode 100755 venv/bin/python3.7 create mode 100755 venv/bin/translate create mode 100755 venv/bin/wheel create mode 120000 venv/include/python3.7m create mode 120000 venv/lib/python3.7/__future__.py create mode 100644 venv/lib/python3.7/__pycache__/__future__.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/_bootlocale.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/_collections_abc.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/_weakrefset.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/abc.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/base64.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/bisect.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/codecs.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/copy.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/copyreg.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/enum.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/fnmatch.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/functools.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/genericpath.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/hashlib.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/heapq.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/hmac.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/imp.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/io.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/keyword.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/linecache.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/locale.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/ntpath.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/operator.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/os.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/posixpath.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/random.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/re.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/reprlib.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/rlcompleter.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/shutil.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/site.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/sre_compile.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/sre_constants.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/sre_parse.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/stat.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/struct.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/tarfile.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/tempfile.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/token.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/tokenize.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/types.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/warnings.cpython-37.pyc create mode 100644 venv/lib/python3.7/__pycache__/weakref.cpython-37.pyc create mode 120000 venv/lib/python3.7/_bootlocale.py create mode 120000 venv/lib/python3.7/_collections_abc.py create mode 120000 venv/lib/python3.7/_dummy_thread.py create mode 120000 venv/lib/python3.7/_weakrefset.py create mode 120000 venv/lib/python3.7/abc.py create mode 120000 venv/lib/python3.7/base64.py create mode 120000 venv/lib/python3.7/bisect.py create mode 120000 venv/lib/python3.7/codecs.py create mode 120000 venv/lib/python3.7/collections create mode 120000 venv/lib/python3.7/config-3.7m-x86_64-linux-gnu create mode 120000 venv/lib/python3.7/copy.py create mode 120000 venv/lib/python3.7/copyreg.py create mode 100644 venv/lib/python3.7/distutils/__init__.py create mode 100644 venv/lib/python3.7/distutils/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/distutils/distutils.cfg create mode 120000 venv/lib/python3.7/encodings create mode 120000 venv/lib/python3.7/enum.py create mode 120000 venv/lib/python3.7/fnmatch.py create mode 120000 venv/lib/python3.7/functools.py create mode 120000 venv/lib/python3.7/genericpath.py create mode 120000 venv/lib/python3.7/hashlib.py create mode 120000 venv/lib/python3.7/heapq.py create mode 120000 venv/lib/python3.7/hmac.py create mode 120000 venv/lib/python3.7/imp.py create mode 120000 venv/lib/python3.7/importlib create mode 120000 venv/lib/python3.7/io.py create mode 120000 venv/lib/python3.7/keyword.py create mode 120000 venv/lib/python3.7/lib-dynload create mode 120000 venv/lib/python3.7/linecache.py create mode 120000 venv/lib/python3.7/locale.py create mode 100644 venv/lib/python3.7/no-global-site-packages.txt create mode 120000 venv/lib/python3.7/ntpath.py create mode 120000 venv/lib/python3.7/operator.py create mode 100644 venv/lib/python3.7/orig-prefix.txt create mode 120000 venv/lib/python3.7/os.py create mode 120000 venv/lib/python3.7/posixpath.py create mode 120000 venv/lib/python3.7/random.py create mode 120000 venv/lib/python3.7/re.py create mode 120000 venv/lib/python3.7/reprlib.py create mode 120000 venv/lib/python3.7/rlcompleter.py create mode 120000 venv/lib/python3.7/shutil.py create mode 100644 venv/lib/python3.7/site-packages/__pycache__/easy_install.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/__pycache__/six.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/DESCRIPTION.rst create mode 100644 venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/INSTALLER create mode 100644 venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/METADATA create mode 100644 venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/RECORD create mode 100644 venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/WHEEL create mode 100644 venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/metadata.json create mode 100644 venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/top_level.txt create mode 100644 venv/lib/python3.7/site-packages/bs4/__init__.py create mode 100644 venv/lib/python3.7/site-packages/bs4/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/bs4/__pycache__/check_block.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/bs4/__pycache__/dammit.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/bs4/__pycache__/diagnose.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/bs4/__pycache__/element.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/bs4/__pycache__/formatter.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/bs4/__pycache__/testing.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/bs4/builder/__init__.py create mode 100644 venv/lib/python3.7/site-packages/bs4/builder/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/bs4/builder/__pycache__/_html5lib.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/bs4/builder/__pycache__/_htmlparser.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/bs4/builder/__pycache__/_lxml.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/bs4/builder/_html5lib.py create mode 100644 venv/lib/python3.7/site-packages/bs4/builder/_htmlparser.py create mode 100644 venv/lib/python3.7/site-packages/bs4/builder/_lxml.py create mode 100644 venv/lib/python3.7/site-packages/bs4/check_block.py create mode 100644 venv/lib/python3.7/site-packages/bs4/dammit.py create mode 100644 venv/lib/python3.7/site-packages/bs4/diagnose.py create mode 100644 venv/lib/python3.7/site-packages/bs4/element.py create mode 100644 venv/lib/python3.7/site-packages/bs4/formatter.py create mode 100644 venv/lib/python3.7/site-packages/bs4/testing.py create mode 100644 venv/lib/python3.7/site-packages/bs4/tests/__init__.py create mode 100644 venv/lib/python3.7/site-packages/bs4/tests/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/bs4/tests/__pycache__/test_builder_registry.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/bs4/tests/__pycache__/test_docs.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/bs4/tests/__pycache__/test_html5lib.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/bs4/tests/__pycache__/test_htmlparser.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/bs4/tests/__pycache__/test_lxml.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/bs4/tests/__pycache__/test_soup.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/bs4/tests/__pycache__/test_tree.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/bs4/tests/test_builder_registry.py create mode 100644 venv/lib/python3.7/site-packages/bs4/tests/test_docs.py create mode 100644 venv/lib/python3.7/site-packages/bs4/tests/test_html5lib.py create mode 100644 venv/lib/python3.7/site-packages/bs4/tests/test_htmlparser.py create mode 100644 venv/lib/python3.7/site-packages/bs4/tests/test_lxml.py create mode 100644 venv/lib/python3.7/site-packages/bs4/tests/test_soup.py create mode 100644 venv/lib/python3.7/site-packages/bs4/tests/test_tree.py create mode 100644 venv/lib/python3.7/site-packages/certifi-2019.9.11.dist-info/DESCRIPTION.rst create mode 100644 venv/lib/python3.7/site-packages/certifi-2019.9.11.dist-info/INSTALLER create mode 100644 venv/lib/python3.7/site-packages/certifi-2019.9.11.dist-info/METADATA create mode 100644 venv/lib/python3.7/site-packages/certifi-2019.9.11.dist-info/RECORD create mode 100644 venv/lib/python3.7/site-packages/certifi-2019.9.11.dist-info/WHEEL create mode 100644 venv/lib/python3.7/site-packages/certifi-2019.9.11.dist-info/metadata.json create mode 100644 venv/lib/python3.7/site-packages/certifi-2019.9.11.dist-info/top_level.txt create mode 100644 venv/lib/python3.7/site-packages/certifi/__init__.py create mode 100644 venv/lib/python3.7/site-packages/certifi/__main__.py create mode 100644 venv/lib/python3.7/site-packages/certifi/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/certifi/__pycache__/__main__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/certifi/__pycache__/core.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/certifi/cacert.pem create mode 100644 venv/lib/python3.7/site-packages/certifi/core.py create mode 100644 venv/lib/python3.7/site-packages/chardet-3.0.4.dist-info/DESCRIPTION.rst create mode 100644 venv/lib/python3.7/site-packages/chardet-3.0.4.dist-info/INSTALLER create mode 100644 venv/lib/python3.7/site-packages/chardet-3.0.4.dist-info/METADATA create mode 100644 venv/lib/python3.7/site-packages/chardet-3.0.4.dist-info/RECORD create mode 100644 venv/lib/python3.7/site-packages/chardet-3.0.4.dist-info/WHEEL create mode 100644 venv/lib/python3.7/site-packages/chardet-3.0.4.dist-info/entry_points.txt create mode 100644 venv/lib/python3.7/site-packages/chardet-3.0.4.dist-info/metadata.json create mode 100644 venv/lib/python3.7/site-packages/chardet-3.0.4.dist-info/top_level.txt create mode 100644 venv/lib/python3.7/site-packages/chardet/__init__.py create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/big5freq.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/big5prober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/chardistribution.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/charsetgroupprober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/charsetprober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/codingstatemachine.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/compat.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/cp949prober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/enums.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/escprober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/escsm.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/eucjpprober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/euckrfreq.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/euckrprober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/euctwfreq.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/euctwprober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/gb2312freq.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/gb2312prober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/hebrewprober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/jisfreq.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/jpcntx.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/langbulgarianmodel.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/langcyrillicmodel.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/langgreekmodel.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/langhebrewmodel.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/langhungarianmodel.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/langthaimodel.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/langturkishmodel.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/latin1prober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/mbcharsetprober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/mbcsgroupprober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/mbcssm.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/sbcharsetprober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/sbcsgroupprober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/sjisprober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/universaldetector.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/utf8prober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/__pycache__/version.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/big5freq.py create mode 100644 venv/lib/python3.7/site-packages/chardet/big5prober.py create mode 100644 venv/lib/python3.7/site-packages/chardet/chardistribution.py create mode 100644 venv/lib/python3.7/site-packages/chardet/charsetgroupprober.py create mode 100644 venv/lib/python3.7/site-packages/chardet/charsetprober.py create mode 100644 venv/lib/python3.7/site-packages/chardet/cli/__init__.py create mode 100644 venv/lib/python3.7/site-packages/chardet/cli/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/cli/__pycache__/chardetect.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/chardet/cli/chardetect.py create mode 100644 venv/lib/python3.7/site-packages/chardet/codingstatemachine.py create mode 100644 venv/lib/python3.7/site-packages/chardet/compat.py create mode 100644 venv/lib/python3.7/site-packages/chardet/cp949prober.py create mode 100644 venv/lib/python3.7/site-packages/chardet/enums.py create mode 100644 venv/lib/python3.7/site-packages/chardet/escprober.py create mode 100644 venv/lib/python3.7/site-packages/chardet/escsm.py create mode 100644 venv/lib/python3.7/site-packages/chardet/eucjpprober.py create mode 100644 venv/lib/python3.7/site-packages/chardet/euckrfreq.py create mode 100644 venv/lib/python3.7/site-packages/chardet/euckrprober.py create mode 100644 venv/lib/python3.7/site-packages/chardet/euctwfreq.py create mode 100644 venv/lib/python3.7/site-packages/chardet/euctwprober.py create mode 100644 venv/lib/python3.7/site-packages/chardet/gb2312freq.py create mode 100644 venv/lib/python3.7/site-packages/chardet/gb2312prober.py create mode 100644 venv/lib/python3.7/site-packages/chardet/hebrewprober.py create mode 100644 venv/lib/python3.7/site-packages/chardet/jisfreq.py create mode 100644 venv/lib/python3.7/site-packages/chardet/jpcntx.py create mode 100644 venv/lib/python3.7/site-packages/chardet/langbulgarianmodel.py create mode 100644 venv/lib/python3.7/site-packages/chardet/langcyrillicmodel.py create mode 100644 venv/lib/python3.7/site-packages/chardet/langgreekmodel.py create mode 100644 venv/lib/python3.7/site-packages/chardet/langhebrewmodel.py create mode 100644 venv/lib/python3.7/site-packages/chardet/langhungarianmodel.py create mode 100644 venv/lib/python3.7/site-packages/chardet/langthaimodel.py create mode 100644 venv/lib/python3.7/site-packages/chardet/langturkishmodel.py create mode 100644 venv/lib/python3.7/site-packages/chardet/latin1prober.py create mode 100644 venv/lib/python3.7/site-packages/chardet/mbcharsetprober.py create mode 100644 venv/lib/python3.7/site-packages/chardet/mbcsgroupprober.py create mode 100644 venv/lib/python3.7/site-packages/chardet/mbcssm.py create mode 100644 venv/lib/python3.7/site-packages/chardet/sbcharsetprober.py create mode 100644 venv/lib/python3.7/site-packages/chardet/sbcsgroupprober.py create mode 100644 venv/lib/python3.7/site-packages/chardet/sjisprober.py create mode 100644 venv/lib/python3.7/site-packages/chardet/universaldetector.py create mode 100644 venv/lib/python3.7/site-packages/chardet/utf8prober.py create mode 100644 venv/lib/python3.7/site-packages/chardet/version.py create mode 100644 venv/lib/python3.7/site-packages/easy_install.py create mode 100644 venv/lib/python3.7/site-packages/googletrans-2.4.0.dist-info/INSTALLER create mode 100644 venv/lib/python3.7/site-packages/googletrans-2.4.0.dist-info/METADATA create mode 100644 venv/lib/python3.7/site-packages/googletrans-2.4.0.dist-info/RECORD create mode 100644 venv/lib/python3.7/site-packages/googletrans-2.4.0.dist-info/WHEEL create mode 100644 venv/lib/python3.7/site-packages/googletrans-2.4.0.dist-info/top_level.txt create mode 100644 venv/lib/python3.7/site-packages/googletrans/__init__.py create mode 100644 venv/lib/python3.7/site-packages/googletrans/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/googletrans/__pycache__/adapters.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/googletrans/__pycache__/client.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/googletrans/__pycache__/compat.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/googletrans/__pycache__/constants.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/googletrans/__pycache__/gtoken.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/googletrans/__pycache__/models.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/googletrans/__pycache__/urls.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/googletrans/__pycache__/utils.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/googletrans/adapters.py create mode 100644 venv/lib/python3.7/site-packages/googletrans/client.py create mode 100644 venv/lib/python3.7/site-packages/googletrans/compat.py create mode 100644 venv/lib/python3.7/site-packages/googletrans/constants.py create mode 100644 venv/lib/python3.7/site-packages/googletrans/gtoken.py create mode 100644 venv/lib/python3.7/site-packages/googletrans/models.py create mode 100644 venv/lib/python3.7/site-packages/googletrans/urls.py create mode 100644 venv/lib/python3.7/site-packages/googletrans/utils.py create mode 100644 venv/lib/python3.7/site-packages/idna-2.8.dist-info/INSTALLER create mode 100644 venv/lib/python3.7/site-packages/idna-2.8.dist-info/LICENSE.rst create mode 100644 venv/lib/python3.7/site-packages/idna-2.8.dist-info/METADATA create mode 100644 venv/lib/python3.7/site-packages/idna-2.8.dist-info/RECORD create mode 100644 venv/lib/python3.7/site-packages/idna-2.8.dist-info/WHEEL create mode 100644 venv/lib/python3.7/site-packages/idna-2.8.dist-info/top_level.txt create mode 100644 venv/lib/python3.7/site-packages/idna/__init__.py create mode 100644 venv/lib/python3.7/site-packages/idna/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/idna/__pycache__/codec.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/idna/__pycache__/compat.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/idna/__pycache__/core.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/idna/__pycache__/idnadata.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/idna/__pycache__/intranges.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/idna/__pycache__/package_data.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/idna/__pycache__/uts46data.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/idna/codec.py create mode 100644 venv/lib/python3.7/site-packages/idna/compat.py create mode 100644 venv/lib/python3.7/site-packages/idna/core.py create mode 100644 venv/lib/python3.7/site-packages/idna/idnadata.py create mode 100644 venv/lib/python3.7/site-packages/idna/intranges.py create mode 100644 venv/lib/python3.7/site-packages/idna/package_data.py create mode 100644 venv/lib/python3.7/site-packages/idna/uts46data.py create mode 100644 venv/lib/python3.7/site-packages/nltk-3.4.5.dist-info/INSTALLER create mode 100644 venv/lib/python3.7/site-packages/nltk-3.4.5.dist-info/LICENSE.txt create mode 100644 venv/lib/python3.7/site-packages/nltk-3.4.5.dist-info/METADATA create mode 100644 venv/lib/python3.7/site-packages/nltk-3.4.5.dist-info/RECORD create mode 100644 venv/lib/python3.7/site-packages/nltk-3.4.5.dist-info/WHEEL create mode 100644 venv/lib/python3.7/site-packages/nltk-3.4.5.dist-info/top_level.txt create mode 100644 venv/lib/python3.7/site-packages/nltk/VERSION create mode 100644 venv/lib/python3.7/site-packages/nltk/__init__.py create mode 100644 venv/lib/python3.7/site-packages/nltk/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/__pycache__/book.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/__pycache__/collections.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/__pycache__/collocations.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/__pycache__/compat.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/__pycache__/data.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/__pycache__/decorators.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/__pycache__/downloader.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/__pycache__/featstruct.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/__pycache__/grammar.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/__pycache__/help.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/__pycache__/internals.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/__pycache__/jsontags.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/__pycache__/lazyimport.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/__pycache__/probability.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/__pycache__/text.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/__pycache__/tgrep.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/__pycache__/toolbox.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/__pycache__/tree.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/__pycache__/treeprettyprinter.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/__pycache__/treetransforms.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/__pycache__/util.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/__pycache__/wsd.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/app/__init__.py create mode 100644 venv/lib/python3.7/site-packages/nltk/app/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/app/__pycache__/chartparser_app.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/app/__pycache__/chunkparser_app.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/app/__pycache__/collocations_app.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/app/__pycache__/concordance_app.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/app/__pycache__/nemo_app.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/app/__pycache__/rdparser_app.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/app/__pycache__/srparser_app.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/app/__pycache__/wordfreq_app.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/app/__pycache__/wordnet_app.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/app/chartparser_app.py create mode 100644 venv/lib/python3.7/site-packages/nltk/app/chunkparser_app.py create mode 100644 venv/lib/python3.7/site-packages/nltk/app/collocations_app.py create mode 100644 venv/lib/python3.7/site-packages/nltk/app/concordance_app.py create mode 100644 venv/lib/python3.7/site-packages/nltk/app/nemo_app.py create mode 100644 venv/lib/python3.7/site-packages/nltk/app/rdparser_app.py create mode 100644 venv/lib/python3.7/site-packages/nltk/app/srparser_app.py create mode 100644 venv/lib/python3.7/site-packages/nltk/app/wordfreq_app.py create mode 100644 venv/lib/python3.7/site-packages/nltk/app/wordnet_app.py create mode 100644 venv/lib/python3.7/site-packages/nltk/book.py create mode 100644 venv/lib/python3.7/site-packages/nltk/ccg/__init__.py create mode 100644 venv/lib/python3.7/site-packages/nltk/ccg/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/ccg/__pycache__/api.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/ccg/__pycache__/chart.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/ccg/__pycache__/combinator.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/ccg/__pycache__/lexicon.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/ccg/__pycache__/logic.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/ccg/api.py create mode 100644 venv/lib/python3.7/site-packages/nltk/ccg/chart.py create mode 100644 venv/lib/python3.7/site-packages/nltk/ccg/combinator.py create mode 100644 venv/lib/python3.7/site-packages/nltk/ccg/lexicon.py create mode 100644 venv/lib/python3.7/site-packages/nltk/ccg/logic.py create mode 100644 venv/lib/python3.7/site-packages/nltk/chat/__init__.py create mode 100644 venv/lib/python3.7/site-packages/nltk/chat/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/chat/__pycache__/eliza.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/chat/__pycache__/iesha.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/chat/__pycache__/rude.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/chat/__pycache__/suntsu.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/chat/__pycache__/util.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/chat/__pycache__/zen.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/chat/eliza.py create mode 100644 venv/lib/python3.7/site-packages/nltk/chat/iesha.py create mode 100644 venv/lib/python3.7/site-packages/nltk/chat/rude.py create mode 100644 venv/lib/python3.7/site-packages/nltk/chat/suntsu.py create mode 100644 venv/lib/python3.7/site-packages/nltk/chat/util.py create mode 100644 venv/lib/python3.7/site-packages/nltk/chat/zen.py create mode 100644 venv/lib/python3.7/site-packages/nltk/chunk/__init__.py create mode 100644 venv/lib/python3.7/site-packages/nltk/chunk/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/chunk/__pycache__/api.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/chunk/__pycache__/named_entity.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/chunk/__pycache__/regexp.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/chunk/__pycache__/util.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/chunk/api.py create mode 100644 venv/lib/python3.7/site-packages/nltk/chunk/named_entity.py create mode 100644 venv/lib/python3.7/site-packages/nltk/chunk/regexp.py create mode 100644 venv/lib/python3.7/site-packages/nltk/chunk/util.py create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/__init__.py create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/__pycache__/api.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/__pycache__/decisiontree.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/__pycache__/maxent.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/__pycache__/megam.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/__pycache__/naivebayes.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/__pycache__/positivenaivebayes.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/__pycache__/rte_classify.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/__pycache__/scikitlearn.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/__pycache__/senna.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/__pycache__/svm.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/__pycache__/tadm.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/__pycache__/textcat.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/__pycache__/util.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/__pycache__/weka.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/api.py create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/decisiontree.py create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/maxent.py create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/megam.py create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/naivebayes.py create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/positivenaivebayes.py create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/rte_classify.py create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/scikitlearn.py create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/senna.py create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/svm.py create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/tadm.py create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/textcat.py create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/util.py create mode 100644 venv/lib/python3.7/site-packages/nltk/classify/weka.py create mode 100644 venv/lib/python3.7/site-packages/nltk/cluster/__init__.py create mode 100644 venv/lib/python3.7/site-packages/nltk/cluster/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/cluster/__pycache__/api.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/cluster/__pycache__/em.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/cluster/__pycache__/gaac.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/cluster/__pycache__/kmeans.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/cluster/__pycache__/util.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/cluster/api.py create mode 100644 venv/lib/python3.7/site-packages/nltk/cluster/em.py create mode 100644 venv/lib/python3.7/site-packages/nltk/cluster/gaac.py create mode 100644 venv/lib/python3.7/site-packages/nltk/cluster/kmeans.py create mode 100644 venv/lib/python3.7/site-packages/nltk/cluster/util.py create mode 100644 venv/lib/python3.7/site-packages/nltk/collections.py create mode 100644 venv/lib/python3.7/site-packages/nltk/collocations.py create mode 100644 venv/lib/python3.7/site-packages/nltk/compat.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/__init__.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/__pycache__/europarl_raw.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/__pycache__/util.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/europarl_raw.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__init__.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/aligned.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/api.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/bnc.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/bracket_parse.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/categorized_sents.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/chasen.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/childes.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/chunked.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/cmudict.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/comparative_sents.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/conll.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/crubadan.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/dependency.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/framenet.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/ieer.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/indian.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/ipipan.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/knbc.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/lin.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/mte.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/nkjp.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/nombank.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/nps_chat.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/opinion_lexicon.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/panlex_lite.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/panlex_swadesh.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/pl196x.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/plaintext.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/ppattach.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/propbank.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/pros_cons.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/reviews.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/rte.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/semcor.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/senseval.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/sentiwordnet.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/sinica_treebank.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/string_category.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/switchboard.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/tagged.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/timit.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/toolbox.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/twitter.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/udhr.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/util.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/verbnet.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/wordlist.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/wordnet.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/xmldocs.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/__pycache__/ycoe.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/aligned.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/api.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/bnc.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/bracket_parse.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/categorized_sents.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/chasen.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/childes.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/chunked.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/cmudict.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/comparative_sents.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/conll.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/crubadan.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/dependency.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/framenet.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/ieer.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/indian.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/ipipan.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/knbc.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/lin.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/mte.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/nkjp.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/nombank.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/nps_chat.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/opinion_lexicon.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/panlex_lite.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/panlex_swadesh.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/pl196x.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/plaintext.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/ppattach.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/propbank.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/pros_cons.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/reviews.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/rte.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/semcor.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/senseval.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/sentiwordnet.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/sinica_treebank.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/string_category.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/switchboard.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/tagged.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/timit.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/toolbox.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/twitter.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/udhr.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/util.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/verbnet.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/wordlist.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/wordnet.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/xmldocs.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/reader/ycoe.py create mode 100644 venv/lib/python3.7/site-packages/nltk/corpus/util.py create mode 100644 venv/lib/python3.7/site-packages/nltk/data.py create mode 100644 venv/lib/python3.7/site-packages/nltk/decorators.py create mode 100644 venv/lib/python3.7/site-packages/nltk/downloader.py create mode 100644 venv/lib/python3.7/site-packages/nltk/draw/__init__.py create mode 100644 venv/lib/python3.7/site-packages/nltk/draw/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/draw/__pycache__/cfg.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/draw/__pycache__/dispersion.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/draw/__pycache__/table.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/draw/__pycache__/tree.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/draw/__pycache__/util.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/draw/cfg.py create mode 100644 venv/lib/python3.7/site-packages/nltk/draw/dispersion.py create mode 100644 venv/lib/python3.7/site-packages/nltk/draw/table.py create mode 100644 venv/lib/python3.7/site-packages/nltk/draw/tree.py create mode 100644 venv/lib/python3.7/site-packages/nltk/draw/util.py create mode 100644 venv/lib/python3.7/site-packages/nltk/featstruct.py create mode 100644 venv/lib/python3.7/site-packages/nltk/grammar.py create mode 100644 venv/lib/python3.7/site-packages/nltk/help.py create mode 100644 venv/lib/python3.7/site-packages/nltk/inference/__init__.py create mode 100644 venv/lib/python3.7/site-packages/nltk/inference/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/inference/__pycache__/api.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/inference/__pycache__/discourse.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/inference/__pycache__/mace.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/inference/__pycache__/nonmonotonic.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/inference/__pycache__/prover9.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/inference/__pycache__/resolution.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/inference/__pycache__/tableau.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/inference/api.py create mode 100644 venv/lib/python3.7/site-packages/nltk/inference/discourse.py create mode 100644 venv/lib/python3.7/site-packages/nltk/inference/mace.py create mode 100644 venv/lib/python3.7/site-packages/nltk/inference/nonmonotonic.py create mode 100644 venv/lib/python3.7/site-packages/nltk/inference/prover9.py create mode 100644 venv/lib/python3.7/site-packages/nltk/inference/resolution.py create mode 100644 venv/lib/python3.7/site-packages/nltk/inference/tableau.py create mode 100644 venv/lib/python3.7/site-packages/nltk/internals.py create mode 100644 venv/lib/python3.7/site-packages/nltk/jsontags.py create mode 100644 venv/lib/python3.7/site-packages/nltk/lazyimport.py create mode 100644 venv/lib/python3.7/site-packages/nltk/lm/__init__.py create mode 100644 venv/lib/python3.7/site-packages/nltk/lm/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/lm/__pycache__/api.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/lm/__pycache__/counter.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/lm/__pycache__/models.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/lm/__pycache__/preprocessing.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/lm/__pycache__/smoothing.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/lm/__pycache__/util.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/lm/__pycache__/vocabulary.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/lm/api.py create mode 100644 venv/lib/python3.7/site-packages/nltk/lm/counter.py create mode 100644 venv/lib/python3.7/site-packages/nltk/lm/models.py create mode 100644 venv/lib/python3.7/site-packages/nltk/lm/preprocessing.py create mode 100644 venv/lib/python3.7/site-packages/nltk/lm/smoothing.py create mode 100644 venv/lib/python3.7/site-packages/nltk/lm/util.py create mode 100644 venv/lib/python3.7/site-packages/nltk/lm/vocabulary.py create mode 100644 venv/lib/python3.7/site-packages/nltk/metrics/__init__.py create mode 100644 venv/lib/python3.7/site-packages/nltk/metrics/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/metrics/__pycache__/agreement.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/metrics/__pycache__/aline.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/metrics/__pycache__/association.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/metrics/__pycache__/confusionmatrix.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/metrics/__pycache__/distance.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/metrics/__pycache__/paice.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/metrics/__pycache__/scores.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/metrics/__pycache__/segmentation.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/metrics/__pycache__/spearman.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/metrics/agreement.py create mode 100644 venv/lib/python3.7/site-packages/nltk/metrics/aline.py create mode 100644 venv/lib/python3.7/site-packages/nltk/metrics/association.py create mode 100644 venv/lib/python3.7/site-packages/nltk/metrics/confusionmatrix.py create mode 100644 venv/lib/python3.7/site-packages/nltk/metrics/distance.py create mode 100644 venv/lib/python3.7/site-packages/nltk/metrics/paice.py create mode 100644 venv/lib/python3.7/site-packages/nltk/metrics/scores.py create mode 100644 venv/lib/python3.7/site-packages/nltk/metrics/segmentation.py create mode 100644 venv/lib/python3.7/site-packages/nltk/metrics/spearman.py create mode 100644 venv/lib/python3.7/site-packages/nltk/misc/__init__.py create mode 100644 venv/lib/python3.7/site-packages/nltk/misc/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/misc/__pycache__/babelfish.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/misc/__pycache__/chomsky.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/misc/__pycache__/minimalset.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/misc/__pycache__/sort.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/misc/__pycache__/wordfinder.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/misc/babelfish.py create mode 100644 venv/lib/python3.7/site-packages/nltk/misc/chomsky.py create mode 100644 venv/lib/python3.7/site-packages/nltk/misc/minimalset.py create mode 100644 venv/lib/python3.7/site-packages/nltk/misc/sort.py create mode 100644 venv/lib/python3.7/site-packages/nltk/misc/wordfinder.py create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/__init__.py create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/__pycache__/api.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/__pycache__/bllip.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/__pycache__/chart.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/__pycache__/corenlp.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/__pycache__/dependencygraph.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/__pycache__/earleychart.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/__pycache__/evaluate.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/__pycache__/featurechart.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/__pycache__/generate.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/__pycache__/malt.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/__pycache__/nonprojectivedependencyparser.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/__pycache__/pchart.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/__pycache__/projectivedependencyparser.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/__pycache__/recursivedescent.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/__pycache__/shiftreduce.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/__pycache__/stanford.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/__pycache__/transitionparser.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/__pycache__/util.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/__pycache__/viterbi.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/api.py create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/bllip.py create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/chart.py create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/corenlp.py create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/dependencygraph.py create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/earleychart.py create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/evaluate.py create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/featurechart.py create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/generate.py create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/malt.py create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/nonprojectivedependencyparser.py create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/pchart.py create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/projectivedependencyparser.py create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/recursivedescent.py create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/shiftreduce.py create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/stanford.py create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/transitionparser.py create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/util.py create mode 100644 venv/lib/python3.7/site-packages/nltk/parse/viterbi.py create mode 100644 venv/lib/python3.7/site-packages/nltk/probability.py create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/__init__.py create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/__pycache__/boxer.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/__pycache__/chat80.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/__pycache__/cooper_storage.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/__pycache__/drt.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/__pycache__/drt_glue_demo.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/__pycache__/evaluate.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/__pycache__/glue.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/__pycache__/hole.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/__pycache__/lfg.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/__pycache__/linearlogic.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/__pycache__/logic.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/__pycache__/relextract.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/__pycache__/skolemize.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/__pycache__/util.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/boxer.py create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/chat80.py create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/cooper_storage.py create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/drt.py create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/drt_glue_demo.py create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/evaluate.py create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/glue.py create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/hole.py create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/lfg.py create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/linearlogic.py create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/logic.py create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/relextract.py create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/skolemize.py create mode 100644 venv/lib/python3.7/site-packages/nltk/sem/util.py create mode 100644 venv/lib/python3.7/site-packages/nltk/sentiment/__init__.py create mode 100644 venv/lib/python3.7/site-packages/nltk/sentiment/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/sentiment/__pycache__/sentiment_analyzer.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/sentiment/__pycache__/util.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/sentiment/__pycache__/vader.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/sentiment/sentiment_analyzer.py create mode 100644 venv/lib/python3.7/site-packages/nltk/sentiment/util.py create mode 100644 venv/lib/python3.7/site-packages/nltk/sentiment/vader.py create mode 100644 venv/lib/python3.7/site-packages/nltk/stem/__init__.py create mode 100644 venv/lib/python3.7/site-packages/nltk/stem/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/stem/__pycache__/api.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/stem/__pycache__/arlstem.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/stem/__pycache__/cistem.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/stem/__pycache__/isri.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/stem/__pycache__/lancaster.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/stem/__pycache__/porter.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/stem/__pycache__/regexp.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/stem/__pycache__/rslp.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/stem/__pycache__/snowball.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/stem/__pycache__/util.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/stem/__pycache__/wordnet.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/stem/api.py create mode 100644 venv/lib/python3.7/site-packages/nltk/stem/arlstem.py create mode 100644 venv/lib/python3.7/site-packages/nltk/stem/cistem.py create mode 100644 venv/lib/python3.7/site-packages/nltk/stem/isri.py create mode 100644 venv/lib/python3.7/site-packages/nltk/stem/lancaster.py create mode 100644 venv/lib/python3.7/site-packages/nltk/stem/porter.py create mode 100644 venv/lib/python3.7/site-packages/nltk/stem/regexp.py create mode 100644 venv/lib/python3.7/site-packages/nltk/stem/rslp.py create mode 100644 venv/lib/python3.7/site-packages/nltk/stem/snowball.py create mode 100644 venv/lib/python3.7/site-packages/nltk/stem/util.py create mode 100644 venv/lib/python3.7/site-packages/nltk/stem/wordnet.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/__init__.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/__pycache__/api.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/__pycache__/brill.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/__pycache__/brill_trainer.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/__pycache__/crf.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/__pycache__/hmm.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/__pycache__/hunpos.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/__pycache__/mapping.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/__pycache__/perceptron.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/__pycache__/senna.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/__pycache__/sequential.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/__pycache__/stanford.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/__pycache__/tnt.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/__pycache__/util.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/api.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/brill.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/brill_trainer.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/crf.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/hmm.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/hunpos.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/mapping.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/perceptron.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/senna.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/sequential.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/stanford.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/tnt.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tag/util.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tbl/__init__.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tbl/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tbl/__pycache__/api.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tbl/__pycache__/demo.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tbl/__pycache__/erroranalysis.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tbl/__pycache__/feature.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tbl/__pycache__/rule.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tbl/__pycache__/template.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tbl/api.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tbl/demo.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tbl/erroranalysis.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tbl/feature.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tbl/rule.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tbl/template.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/__init__.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/__pycache__/all.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/__pycache__/childes_fixt.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/__pycache__/classify_fixt.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/__pycache__/compat_fixt.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/__pycache__/corpus_fixt.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/__pycache__/discourse_fixt.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/__pycache__/doctest_nose_plugin.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/__pycache__/gensim_fixt.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/__pycache__/gluesemantics_malt_fixt.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/__pycache__/inference_fixt.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/__pycache__/nonmonotonic_fixt.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/__pycache__/portuguese_en_fixt.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/__pycache__/probability_fixt.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/__pycache__/runtests.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/__pycache__/segmentation_fixt.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/__pycache__/semantics_fixt.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/__pycache__/translate_fixt.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/__pycache__/wordnet_fixt.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/all.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/bleu.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/bnc.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/ccg.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/ccg_semantics.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/chat80.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/childes.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/childes_fixt.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/chunk.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/classify.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/classify_fixt.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/collections.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/collocations.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/compat.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/compat_fixt.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/concordance.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/corpus.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/corpus_fixt.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/crubadan.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/data.doctest create mode 100755 venv/lib/python3.7/site-packages/nltk/test/dependency.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/discourse.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/discourse_fixt.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/doctest_nose_plugin.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/drt.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/featgram.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/featstruct.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/framenet.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/generate.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/gensim.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/gensim_fixt.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/gluesemantics.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/gluesemantics_malt.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/gluesemantics_malt_fixt.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/grammar.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/grammartestsuites.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/index.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/inference.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/inference_fixt.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/internals.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/japanese.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/lm.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/logic.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/meteor.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/metrics.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/misc.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/nonmonotonic.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/nonmonotonic_fixt.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/paice.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/parse.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/portuguese_en.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/portuguese_en_fixt.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/probability.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/probability_fixt.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/propbank.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/relextract.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/resolution.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/runtests.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/segmentation_fixt.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/semantics.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/semantics_fixt.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/sentiment.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/sentiwordnet.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/simple.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/stem.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/tag.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/tokenize.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/toolbox.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/translate.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/translate_fixt.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/tree.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/treeprettyprinter.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/treetransforms.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__init__.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_2x_compat.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_aline.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_brill.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_cfd_mutation.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_cfg2chomsky.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_chunk.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_classify.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_collocations.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_concordance.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_corenlp.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_corpora.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_corpus_views.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_data.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_disagreement.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_hmm.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_json2csv_corpus.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_naivebayes.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_nombank.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_pos_tag.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_rte_classify.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_seekable_unicode_stream_reader.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_senna.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_stem.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_tag.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_tgrep.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_tokenize.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_twitter_auth.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/test_wordnet.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/__pycache__/utils.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/lm/__init__.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/lm/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/lm/__pycache__/test_counter.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/lm/__pycache__/test_models.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/lm/__pycache__/test_preprocessing.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/lm/__pycache__/test_vocabulary.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/lm/test_counter.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/lm/test_models.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/lm/test_preprocessing.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/lm/test_vocabulary.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_2x_compat.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_aline.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_brill.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_cfd_mutation.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_cfg2chomsky.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_chunk.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_classify.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_collocations.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_concordance.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_corenlp.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_corpora.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_corpus_views.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_data.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_disagreement.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_hmm.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_json2csv_corpus.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_naivebayes.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_nombank.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_pos_tag.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_rte_classify.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_seekable_unicode_stream_reader.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_senna.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_stem.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_tag.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_tgrep.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_tokenize.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_twitter_auth.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/test_wordnet.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/translate/__init__.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/translate/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/translate/__pycache__/test_bleu.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/translate/__pycache__/test_gdfa.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/translate/__pycache__/test_ibm1.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/translate/__pycache__/test_ibm2.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/translate/__pycache__/test_ibm3.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/translate/__pycache__/test_ibm4.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/translate/__pycache__/test_ibm5.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/translate/__pycache__/test_ibm_model.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/translate/__pycache__/test_nist.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/translate/__pycache__/test_stack_decoder.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/translate/test_bleu.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/translate/test_gdfa.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/translate/test_ibm1.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/translate/test_ibm2.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/translate/test_ibm3.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/translate/test_ibm4.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/translate/test_ibm5.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/translate/test_ibm_model.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/translate/test_nist.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/translate/test_stack_decoder.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/unit/utils.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/util.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/wordnet.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/wordnet_fixt.py create mode 100644 venv/lib/python3.7/site-packages/nltk/test/wordnet_lch.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/test/wsd.doctest create mode 100644 venv/lib/python3.7/site-packages/nltk/text.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tgrep.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/__init__.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/__pycache__/api.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/__pycache__/casual.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/__pycache__/mwe.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/__pycache__/nist.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/__pycache__/punkt.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/__pycache__/regexp.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/__pycache__/repp.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/__pycache__/sexpr.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/__pycache__/simple.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/__pycache__/sonority_sequencing.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/__pycache__/stanford.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/__pycache__/stanford_segmenter.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/__pycache__/texttiling.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/__pycache__/toktok.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/__pycache__/treebank.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/__pycache__/util.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/api.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/casual.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/mwe.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/nist.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/punkt.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/regexp.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/repp.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/sexpr.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/simple.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/sonority_sequencing.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/stanford.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/stanford_segmenter.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/texttiling.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/toktok.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/treebank.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tokenize/util.py create mode 100644 venv/lib/python3.7/site-packages/nltk/toolbox.py create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/__init__.py create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/__pycache__/api.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/__pycache__/bleu_score.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/__pycache__/chrf_score.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/__pycache__/gale_church.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/__pycache__/gdfa.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/__pycache__/gleu_score.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/__pycache__/ibm1.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/__pycache__/ibm2.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/__pycache__/ibm3.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/__pycache__/ibm4.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/__pycache__/ibm5.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/__pycache__/ibm_model.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/__pycache__/meteor_score.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/__pycache__/metrics.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/__pycache__/nist_score.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/__pycache__/phrase_based.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/__pycache__/ribes_score.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/__pycache__/stack_decoder.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/api.py create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/bleu_score.py create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/chrf_score.py create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/gale_church.py create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/gdfa.py create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/gleu_score.py create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/ibm1.py create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/ibm2.py create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/ibm3.py create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/ibm4.py create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/ibm5.py create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/ibm_model.py create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/meteor_score.py create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/metrics.py create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/nist_score.py create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/phrase_based.py create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/ribes_score.py create mode 100644 venv/lib/python3.7/site-packages/nltk/translate/stack_decoder.py create mode 100644 venv/lib/python3.7/site-packages/nltk/tree.py create mode 100644 venv/lib/python3.7/site-packages/nltk/treeprettyprinter.py create mode 100644 venv/lib/python3.7/site-packages/nltk/treetransforms.py create mode 100644 venv/lib/python3.7/site-packages/nltk/twitter/__init__.py create mode 100644 venv/lib/python3.7/site-packages/nltk/twitter/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/twitter/__pycache__/api.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/twitter/__pycache__/common.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/twitter/__pycache__/twitter_demo.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/twitter/__pycache__/twitterclient.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/twitter/__pycache__/util.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/nltk/twitter/api.py create mode 100644 venv/lib/python3.7/site-packages/nltk/twitter/common.py create mode 100644 venv/lib/python3.7/site-packages/nltk/twitter/twitter_demo.py create mode 100644 venv/lib/python3.7/site-packages/nltk/twitter/twitterclient.py create mode 100644 venv/lib/python3.7/site-packages/nltk/twitter/util.py create mode 100644 venv/lib/python3.7/site-packages/nltk/util.py create mode 100644 venv/lib/python3.7/site-packages/nltk/wsd.py create mode 100644 venv/lib/python3.7/site-packages/pip-19.3.1.dist-info/INSTALLER create mode 100644 venv/lib/python3.7/site-packages/pip-19.3.1.dist-info/LICENSE.txt create mode 100644 venv/lib/python3.7/site-packages/pip-19.3.1.dist-info/METADATA create mode 100644 venv/lib/python3.7/site-packages/pip-19.3.1.dist-info/RECORD create mode 100644 venv/lib/python3.7/site-packages/pip-19.3.1.dist-info/WHEEL create mode 100644 venv/lib/python3.7/site-packages/pip-19.3.1.dist-info/entry_points.txt create mode 100644 venv/lib/python3.7/site-packages/pip-19.3.1.dist-info/top_level.txt create mode 100644 venv/lib/python3.7/site-packages/pip/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/__main__.py create mode 100644 venv/lib/python3.7/site-packages/pip/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/__pycache__/__main__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/__pycache__/build_env.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/__pycache__/cache.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/__pycache__/collector.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/__pycache__/configuration.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/__pycache__/download.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/__pycache__/exceptions.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/__pycache__/index.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/__pycache__/legacy_resolve.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/__pycache__/locations.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/__pycache__/main.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/__pycache__/pep425tags.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/__pycache__/pyproject.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/__pycache__/wheel.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/build_env.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/cache.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/cli/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/cli/__pycache__/parser.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/cli/autocompletion.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/cli/base_command.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/cli/cmdoptions.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/cli/command_context.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/cli/main_parser.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/cli/parser.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/cli/req_command.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/cli/status_codes.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/collector.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/__pycache__/check.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/__pycache__/completion.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/__pycache__/configuration.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/__pycache__/debug.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/__pycache__/download.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/__pycache__/freeze.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/__pycache__/hash.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/__pycache__/help.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/__pycache__/install.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/__pycache__/list.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/__pycache__/search.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/__pycache__/show.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/check.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/completion.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/configuration.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/debug.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/download.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/freeze.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/hash.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/help.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/install.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/list.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/search.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/show.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/uninstall.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/commands/wheel.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/configuration.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/distributions/__pycache__/base.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/distributions/__pycache__/installed.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/distributions/base.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/distributions/installed.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/distributions/source/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/distributions/source/__pycache__/legacy.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/distributions/source/legacy.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/distributions/wheel.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/download.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/exceptions.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/index.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/legacy_resolve.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/locations.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/main.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/models/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/models/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/models/__pycache__/candidate.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/models/__pycache__/format_control.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/models/__pycache__/index.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/models/__pycache__/link.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/models/__pycache__/target_python.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/models/candidate.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/models/format_control.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/models/index.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/models/link.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/models/search_scope.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/models/selection_prefs.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/models/target_python.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/network/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/network/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/network/__pycache__/auth.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/network/__pycache__/cache.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/network/__pycache__/session.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/network/__pycache__/xmlrpc.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/network/auth.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/network/cache.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/network/session.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/network/xmlrpc.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/operations/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/operations/__pycache__/check.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/operations/__pycache__/generate_metadata.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/operations/__pycache__/prepare.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/operations/check.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/operations/freeze.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/operations/generate_metadata.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/operations/prepare.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/pep425tags.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/pyproject.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/req/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/req/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/req/__pycache__/constructors.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/req/__pycache__/req_file.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/req/__pycache__/req_install.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/req/__pycache__/req_set.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/req/__pycache__/req_tracker.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/req/__pycache__/req_uninstall.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/req/constructors.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/req/req_file.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/req/req_install.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/req/req_set.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/req/req_tracker.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/req/req_uninstall.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/self_outdated_check.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/__pycache__/compat.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/__pycache__/deprecation.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/__pycache__/filetypes.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/__pycache__/inject_securetransport.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/__pycache__/logging.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/__pycache__/marker_files.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/__pycache__/misc.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/__pycache__/models.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/__pycache__/typing.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/__pycache__/ui.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/__pycache__/urls.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/appdirs.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/compat.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/deprecation.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/encoding.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/filesystem.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/filetypes.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/glibc.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/hashes.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/inject_securetransport.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/logging.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/marker_files.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/misc.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/models.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/packaging.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/setuptools_build.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/subprocess.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/temp_dir.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/typing.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/ui.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/unpacking.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/urls.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/utils/virtualenv.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/vcs/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/vcs/__pycache__/git.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/vcs/bazaar.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/vcs/git.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/vcs/mercurial.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/vcs/subversion.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/vcs/versioncontrol.py create mode 100644 venv/lib/python3.7/site-packages/pip/_internal/wheel.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/__pycache__/appdirs.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/__pycache__/contextlib2.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/__pycache__/distro.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/__pycache__/ipaddress.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/__pycache__/pyparsing.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/__pycache__/retrying.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/__pycache__/six.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/appdirs.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/cachecontrol/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/cachecontrol/__pycache__/compat.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/cachecontrol/_cmd.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/cachecontrol/adapter.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/cachecontrol/cache.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/cachecontrol/caches/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/cachecontrol/compat.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/cachecontrol/controller.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/cachecontrol/filewrapper.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/cachecontrol/heuristics.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/cachecontrol/serialize.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/cachecontrol/wrapper.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/certifi/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/certifi/__main__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/certifi/__pycache__/core.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/certifi/cacert.pem create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/certifi/core.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/compat.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/cp949prober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/euckrfreq.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/euctwfreq.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/gb2312freq.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/langcyrillicmodel.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/langthaimodel.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/latin1prober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/utf8prober.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/__pycache__/version.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/big5freq.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/big5prober.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/chardistribution.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/charsetgroupprober.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/charsetprober.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/cli/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/cli/chardetect.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/codingstatemachine.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/compat.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/cp949prober.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/enums.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/escprober.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/escsm.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/eucjpprober.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/euckrfreq.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/euckrprober.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/euctwfreq.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/euctwprober.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/gb2312freq.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/gb2312prober.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/hebrewprober.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/jisfreq.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/jpcntx.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/langbulgarianmodel.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/langcyrillicmodel.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/langgreekmodel.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/langhebrewmodel.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/langhungarianmodel.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/langthaimodel.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/langturkishmodel.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/latin1prober.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/mbcharsetprober.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/mbcsgroupprober.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/mbcssm.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/sbcharsetprober.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/sbcsgroupprober.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/sjisprober.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/universaldetector.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/utf8prober.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/chardet/version.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/colorama/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/colorama/ansi.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/colorama/ansitowin32.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/colorama/initialise.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/colorama/win32.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/colorama/winterm.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/contextlib2.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/_backport/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/_backport/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/_backport/__pycache__/misc.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/_backport/__pycache__/shutil.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/_backport/__pycache__/sysconfig.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/_backport/__pycache__/tarfile.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/_backport/misc.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/_backport/shutil.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/_backport/sysconfig.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/_backport/tarfile.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/compat.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/database.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/index.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/locators.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/manifest.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/markers.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/metadata.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/resources.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/scripts.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/t32.exe create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/t64.exe create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/util.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/version.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/w32.exe create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/w64.exe create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distlib/wheel.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/distro.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/__pycache__/_ihatexml.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/__pycache__/_inputstream.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/__pycache__/_tokenizer.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/__pycache__/_utils.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/__pycache__/constants.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/__pycache__/html5parser.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/__pycache__/serializer.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/_ihatexml.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/_inputstream.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/_tokenizer.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/_trie/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/_trie/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/_trie/__pycache__/_base.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/_trie/__pycache__/datrie.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/_trie/__pycache__/py.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/_trie/_base.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/_trie/datrie.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/_trie/py.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/_utils.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/constants.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/filters/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/filters/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/filters/__pycache__/alphabeticalattributes.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/filters/__pycache__/base.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/filters/__pycache__/inject_meta_charset.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/filters/__pycache__/lint.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/filters/__pycache__/optionaltags.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/filters/__pycache__/sanitizer.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/filters/__pycache__/whitespace.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/filters/base.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/filters/lint.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/filters/optionaltags.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/filters/sanitizer.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/filters/whitespace.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/html5parser.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/serializer.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treeadapters/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/genshi.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/sax.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treeadapters/genshi.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treeadapters/sax.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treebuilders/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/base.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/dom.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/etree.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/etree_lxml.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treebuilders/base.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treebuilders/dom.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treebuilders/etree.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treewalkers/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/base.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/dom.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/etree.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/etree_lxml.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/genshi.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treewalkers/base.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treewalkers/dom.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treewalkers/etree.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treewalkers/etree_lxml.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/html5lib/treewalkers/genshi.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/idna/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/idna/__pycache__/core.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/idna/__pycache__/idnadata.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/idna/__pycache__/package_data.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/idna/codec.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/idna/compat.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/idna/core.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/idna/idnadata.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/idna/intranges.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/idna/package_data.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/idna/uts46data.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/ipaddress.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/msgpack/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/msgpack/__pycache__/_version.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/msgpack/__pycache__/fallback.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/msgpack/_version.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/msgpack/exceptions.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/msgpack/fallback.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/packaging/__about__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/packaging/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/packaging/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/packaging/__pycache__/_compat.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/packaging/__pycache__/tags.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/packaging/_compat.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/packaging/_structures.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/packaging/markers.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/packaging/requirements.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/packaging/specifiers.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/packaging/tags.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/packaging/utils.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/packaging/version.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pep517/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pep517/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pep517/__pycache__/_in_process.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pep517/__pycache__/build.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pep517/__pycache__/check.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pep517/__pycache__/colorlog.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pep517/__pycache__/compat.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pep517/__pycache__/dirtools.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pep517/__pycache__/envbuild.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pep517/__pycache__/meta.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pep517/__pycache__/wrappers.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pep517/_in_process.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pep517/build.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pep517/check.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pep517/colorlog.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pep517/compat.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pep517/dirtools.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pep517/envbuild.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pep517/meta.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pep517/wrappers.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pkg_resources/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pkg_resources/__pycache__/py31compat.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pkg_resources/py31compat.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/progress/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/progress/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/progress/__pycache__/bar.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/progress/__pycache__/counter.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/progress/__pycache__/spinner.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/progress/bar.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/progress/counter.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/progress/spinner.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pyparsing.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pytoml/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pytoml/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pytoml/__pycache__/core.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pytoml/__pycache__/parser.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pytoml/__pycache__/test.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pytoml/__pycache__/utils.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pytoml/__pycache__/writer.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pytoml/core.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pytoml/parser.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pytoml/test.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pytoml/utils.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/pytoml/writer.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/__pycache__/__version__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/__pycache__/adapters.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/__pycache__/api.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/__pycache__/help.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/__pycache__/models.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/__version__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/_internal_utils.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/adapters.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/api.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/auth.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/certs.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/compat.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/cookies.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/exceptions.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/help.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/hooks.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/models.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/packages.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/sessions.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/status_codes.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/structures.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/requests/utils.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/retrying.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/six.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/_collections.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/connection.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/connectionpool.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/contrib/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/contrib/appengine.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/contrib/securetransport.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/contrib/socks.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/exceptions.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/fields.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/filepost.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/packages/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/packages/__pycache__/six.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/packages/six.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/_implementation.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/poolmanager.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/request.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/response.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/util/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/util/__pycache__/queue.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/util/__pycache__/timeout.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/util/connection.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/util/queue.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/util/request.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/util/response.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/util/retry.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/util/ssl_.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/util/timeout.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/util/url.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/urllib3/util/wait.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/webencodings/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/webencodings/labels.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/webencodings/mklabels.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/webencodings/tests.py create mode 100644 venv/lib/python3.7/site-packages/pip/_vendor/webencodings/x_user_defined.py create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/__pycache__/py31compat.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/_vendor/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/_vendor/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/_vendor/__pycache__/appdirs.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/_vendor/__pycache__/pyparsing.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/_vendor/__pycache__/six.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/_vendor/appdirs.py create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/_vendor/packaging/__about__.py create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/_vendor/packaging/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/_vendor/packaging/__pycache__/_compat.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/_vendor/packaging/__pycache__/markers.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/_vendor/packaging/__pycache__/utils.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/_vendor/packaging/__pycache__/version.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/_vendor/packaging/_compat.py create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/_vendor/packaging/_structures.py create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/_vendor/packaging/markers.py create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/_vendor/packaging/requirements.py create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/_vendor/packaging/specifiers.py create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/_vendor/packaging/utils.py create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/_vendor/packaging/version.py create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/_vendor/pyparsing.py create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/_vendor/six.py create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/extern/__init__.py create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/extern/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/pkg_resources/py31compat.py create mode 100644 venv/lib/python3.7/site-packages/requests-2.22.0.dist-info/INSTALLER create mode 100644 venv/lib/python3.7/site-packages/requests-2.22.0.dist-info/LICENSE create mode 100644 venv/lib/python3.7/site-packages/requests-2.22.0.dist-info/METADATA create mode 100644 venv/lib/python3.7/site-packages/requests-2.22.0.dist-info/RECORD create mode 100644 venv/lib/python3.7/site-packages/requests-2.22.0.dist-info/WHEEL create mode 100644 venv/lib/python3.7/site-packages/requests-2.22.0.dist-info/top_level.txt create mode 100644 venv/lib/python3.7/site-packages/requests/__init__.py create mode 100644 venv/lib/python3.7/site-packages/requests/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/requests/__pycache__/__version__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/requests/__pycache__/_internal_utils.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/requests/__pycache__/adapters.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/requests/__pycache__/api.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/requests/__pycache__/auth.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/requests/__pycache__/certs.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/requests/__pycache__/compat.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/requests/__pycache__/cookies.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/requests/__pycache__/exceptions.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/requests/__pycache__/help.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/requests/__pycache__/hooks.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/requests/__pycache__/models.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/requests/__pycache__/packages.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/requests/__pycache__/sessions.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/requests/__pycache__/status_codes.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/requests/__pycache__/structures.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/requests/__pycache__/utils.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/requests/__version__.py create mode 100644 venv/lib/python3.7/site-packages/requests/_internal_utils.py create mode 100644 venv/lib/python3.7/site-packages/requests/adapters.py create mode 100644 venv/lib/python3.7/site-packages/requests/api.py create mode 100644 venv/lib/python3.7/site-packages/requests/auth.py create mode 100644 venv/lib/python3.7/site-packages/requests/certs.py create mode 100644 venv/lib/python3.7/site-packages/requests/compat.py create mode 100644 venv/lib/python3.7/site-packages/requests/cookies.py create mode 100644 venv/lib/python3.7/site-packages/requests/exceptions.py create mode 100644 venv/lib/python3.7/site-packages/requests/help.py create mode 100644 venv/lib/python3.7/site-packages/requests/hooks.py create mode 100644 venv/lib/python3.7/site-packages/requests/models.py create mode 100644 venv/lib/python3.7/site-packages/requests/packages.py create mode 100644 venv/lib/python3.7/site-packages/requests/sessions.py create mode 100644 venv/lib/python3.7/site-packages/requests/status_codes.py create mode 100644 venv/lib/python3.7/site-packages/requests/structures.py create mode 100644 venv/lib/python3.7/site-packages/requests/utils.py create mode 100644 venv/lib/python3.7/site-packages/setuptools-41.4.0.dist-info/INSTALLER create mode 100644 venv/lib/python3.7/site-packages/setuptools-41.4.0.dist-info/LICENSE create mode 100644 venv/lib/python3.7/site-packages/setuptools-41.4.0.dist-info/METADATA create mode 100644 venv/lib/python3.7/site-packages/setuptools-41.4.0.dist-info/RECORD create mode 100644 venv/lib/python3.7/site-packages/setuptools-41.4.0.dist-info/WHEEL create mode 100644 venv/lib/python3.7/site-packages/setuptools-41.4.0.dist-info/dependency_links.txt create mode 100644 venv/lib/python3.7/site-packages/setuptools-41.4.0.dist-info/entry_points.txt create mode 100644 venv/lib/python3.7/site-packages/setuptools-41.4.0.dist-info/top_level.txt create mode 100644 venv/lib/python3.7/site-packages/setuptools-41.4.0.dist-info/zip-safe create mode 100644 venv/lib/python3.7/site-packages/setuptools/__init__.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/_deprecation_warning.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/archive_util.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/build_meta.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/config.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/dep_util.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/depends.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/dist.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/extension.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/glibc.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/glob.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/launch.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/lib2to3_ex.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/monkey.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/msvc.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/namespaces.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/package_index.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/pep425tags.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/py27compat.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/py31compat.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/py33compat.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/sandbox.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/site-patch.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/ssl_support.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/unicode_utils.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/version.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/wheel.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/__pycache__/windows_support.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/_deprecation_warning.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/_vendor/__init__.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/_vendor/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/_vendor/__pycache__/ordered_set.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/_vendor/__pycache__/pyparsing.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/_vendor/__pycache__/six.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/_vendor/ordered_set.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/_vendor/packaging/__about__.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/_vendor/packaging/__init__.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/_vendor/packaging/__pycache__/__about__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/_vendor/packaging/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/_vendor/packaging/__pycache__/_compat.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/_vendor/packaging/__pycache__/_structures.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/_vendor/packaging/__pycache__/markers.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/_vendor/packaging/__pycache__/requirements.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/_vendor/packaging/__pycache__/specifiers.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/_vendor/packaging/__pycache__/utils.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/_vendor/packaging/__pycache__/version.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/_vendor/packaging/_compat.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/_vendor/packaging/_structures.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/_vendor/packaging/markers.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/_vendor/packaging/requirements.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/_vendor/packaging/specifiers.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/_vendor/packaging/utils.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/_vendor/packaging/version.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/_vendor/pyparsing.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/_vendor/six.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/archive_util.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/build_meta.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/cli-32.exe create mode 100644 venv/lib/python3.7/site-packages/setuptools/cli-64.exe create mode 100644 venv/lib/python3.7/site-packages/setuptools/cli.exe create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/__init__.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/__pycache__/alias.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/__pycache__/bdist_egg.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/__pycache__/bdist_rpm.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/__pycache__/bdist_wininst.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/__pycache__/build_clib.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/__pycache__/build_ext.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/__pycache__/build_py.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/__pycache__/develop.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/__pycache__/dist_info.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/__pycache__/easy_install.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/__pycache__/egg_info.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/__pycache__/install.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/__pycache__/install_egg_info.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/__pycache__/install_lib.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/__pycache__/install_scripts.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/__pycache__/py36compat.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/__pycache__/register.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/__pycache__/rotate.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/__pycache__/saveopts.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/__pycache__/sdist.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/__pycache__/setopt.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/__pycache__/test.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/__pycache__/upload.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/__pycache__/upload_docs.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/alias.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/bdist_egg.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/bdist_rpm.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/bdist_wininst.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/build_clib.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/build_ext.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/build_py.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/develop.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/dist_info.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/easy_install.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/egg_info.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/install.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/install_egg_info.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/install_lib.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/install_scripts.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/launcher manifest.xml create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/py36compat.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/register.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/rotate.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/saveopts.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/sdist.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/setopt.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/test.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/upload.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/command/upload_docs.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/config.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/dep_util.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/depends.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/dist.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/extension.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/extern/__init__.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/extern/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/setuptools/glibc.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/glob.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/gui-32.exe create mode 100644 venv/lib/python3.7/site-packages/setuptools/gui-64.exe create mode 100644 venv/lib/python3.7/site-packages/setuptools/gui.exe create mode 100644 venv/lib/python3.7/site-packages/setuptools/launch.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/lib2to3_ex.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/monkey.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/msvc.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/namespaces.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/package_index.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/pep425tags.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/py27compat.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/py31compat.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/py33compat.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/sandbox.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/script (dev).tmpl create mode 100644 venv/lib/python3.7/site-packages/setuptools/script.tmpl create mode 100644 venv/lib/python3.7/site-packages/setuptools/site-patch.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/ssl_support.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/unicode_utils.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/version.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/wheel.py create mode 100644 venv/lib/python3.7/site-packages/setuptools/windows_support.py create mode 100644 venv/lib/python3.7/site-packages/six-1.12.0.dist-info/INSTALLER create mode 100644 venv/lib/python3.7/site-packages/six-1.12.0.dist-info/LICENSE create mode 100644 venv/lib/python3.7/site-packages/six-1.12.0.dist-info/METADATA create mode 100644 venv/lib/python3.7/site-packages/six-1.12.0.dist-info/RECORD create mode 100644 venv/lib/python3.7/site-packages/six-1.12.0.dist-info/WHEEL create mode 100644 venv/lib/python3.7/site-packages/six-1.12.0.dist-info/top_level.txt create mode 100644 venv/lib/python3.7/site-packages/six.py create mode 100644 venv/lib/python3.7/site-packages/soupsieve-1.9.4.dist-info/INSTALLER create mode 100644 venv/lib/python3.7/site-packages/soupsieve-1.9.4.dist-info/LICENSE.md create mode 100644 venv/lib/python3.7/site-packages/soupsieve-1.9.4.dist-info/METADATA create mode 100644 venv/lib/python3.7/site-packages/soupsieve-1.9.4.dist-info/RECORD create mode 100644 venv/lib/python3.7/site-packages/soupsieve-1.9.4.dist-info/WHEEL create mode 100644 venv/lib/python3.7/site-packages/soupsieve-1.9.4.dist-info/top_level.txt create mode 100644 venv/lib/python3.7/site-packages/soupsieve/__init__.py create mode 100644 venv/lib/python3.7/site-packages/soupsieve/__meta__.py create mode 100644 venv/lib/python3.7/site-packages/soupsieve/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/soupsieve/__pycache__/__meta__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/soupsieve/__pycache__/css_match.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/soupsieve/__pycache__/css_parser.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/soupsieve/__pycache__/css_types.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/soupsieve/__pycache__/util.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/soupsieve/css_match.py create mode 100644 venv/lib/python3.7/site-packages/soupsieve/css_parser.py create mode 100644 venv/lib/python3.7/site-packages/soupsieve/css_types.py create mode 100644 venv/lib/python3.7/site-packages/soupsieve/util.py create mode 100644 venv/lib/python3.7/site-packages/urllib3-1.25.6.dist-info/INSTALLER create mode 100644 venv/lib/python3.7/site-packages/urllib3-1.25.6.dist-info/LICENSE.txt create mode 100644 venv/lib/python3.7/site-packages/urllib3-1.25.6.dist-info/METADATA create mode 100644 venv/lib/python3.7/site-packages/urllib3-1.25.6.dist-info/RECORD create mode 100644 venv/lib/python3.7/site-packages/urllib3-1.25.6.dist-info/WHEEL create mode 100644 venv/lib/python3.7/site-packages/urllib3-1.25.6.dist-info/top_level.txt create mode 100644 venv/lib/python3.7/site-packages/urllib3/__init__.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/__pycache__/_collections.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/__pycache__/connection.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/__pycache__/connectionpool.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/__pycache__/exceptions.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/__pycache__/fields.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/__pycache__/filepost.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/__pycache__/poolmanager.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/__pycache__/request.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/__pycache__/response.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/_collections.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/connection.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/connectionpool.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/contrib/__init__.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/contrib/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/contrib/__pycache__/_appengine_environ.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/contrib/__pycache__/appengine.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/contrib/__pycache__/ntlmpool.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/contrib/__pycache__/pyopenssl.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/contrib/__pycache__/securetransport.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/contrib/__pycache__/socks.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/contrib/_appengine_environ.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/contrib/_securetransport/__init__.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/contrib/_securetransport/bindings.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/contrib/_securetransport/low_level.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/contrib/appengine.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/contrib/ntlmpool.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/contrib/pyopenssl.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/contrib/securetransport.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/contrib/socks.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/exceptions.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/fields.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/filepost.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/packages/__init__.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/packages/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/packages/__pycache__/six.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/packages/backports/__init__.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/packages/backports/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/packages/backports/__pycache__/makefile.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/packages/backports/makefile.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/packages/six.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/packages/ssl_match_hostname/__init__.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/packages/ssl_match_hostname/_implementation.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/poolmanager.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/request.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/response.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/util/__init__.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/util/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/util/__pycache__/connection.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/util/__pycache__/queue.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/util/__pycache__/request.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/util/__pycache__/response.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/util/__pycache__/retry.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/util/__pycache__/ssl_.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/util/__pycache__/timeout.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/util/__pycache__/url.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/util/__pycache__/wait.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/urllib3/util/connection.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/util/queue.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/util/request.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/util/response.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/util/retry.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/util/ssl_.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/util/timeout.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/util/url.py create mode 100644 venv/lib/python3.7/site-packages/urllib3/util/wait.py create mode 100644 venv/lib/python3.7/site-packages/wheel-0.33.6.dist-info/INSTALLER create mode 100644 venv/lib/python3.7/site-packages/wheel-0.33.6.dist-info/LICENSE.txt create mode 100644 venv/lib/python3.7/site-packages/wheel-0.33.6.dist-info/METADATA create mode 100644 venv/lib/python3.7/site-packages/wheel-0.33.6.dist-info/RECORD create mode 100644 venv/lib/python3.7/site-packages/wheel-0.33.6.dist-info/WHEEL create mode 100644 venv/lib/python3.7/site-packages/wheel-0.33.6.dist-info/entry_points.txt create mode 100644 venv/lib/python3.7/site-packages/wheel-0.33.6.dist-info/top_level.txt create mode 100644 venv/lib/python3.7/site-packages/wheel/__init__.py create mode 100644 venv/lib/python3.7/site-packages/wheel/__main__.py create mode 100644 venv/lib/python3.7/site-packages/wheel/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/wheel/__pycache__/__main__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/wheel/__pycache__/bdist_wheel.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/wheel/__pycache__/metadata.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/wheel/__pycache__/pep425tags.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/wheel/__pycache__/pkginfo.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/wheel/__pycache__/util.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/wheel/__pycache__/wheelfile.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/wheel/bdist_wheel.py create mode 100644 venv/lib/python3.7/site-packages/wheel/cli/__init__.py create mode 100644 venv/lib/python3.7/site-packages/wheel/cli/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/wheel/cli/__pycache__/convert.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/wheel/cli/__pycache__/pack.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/wheel/cli/__pycache__/unpack.cpython-37.pyc create mode 100644 venv/lib/python3.7/site-packages/wheel/cli/convert.py create mode 100644 venv/lib/python3.7/site-packages/wheel/cli/pack.py create mode 100644 venv/lib/python3.7/site-packages/wheel/cli/unpack.py create mode 100644 venv/lib/python3.7/site-packages/wheel/metadata.py create mode 100644 venv/lib/python3.7/site-packages/wheel/pep425tags.py create mode 100644 venv/lib/python3.7/site-packages/wheel/pkginfo.py create mode 100644 venv/lib/python3.7/site-packages/wheel/util.py create mode 100644 venv/lib/python3.7/site-packages/wheel/wheelfile.py create mode 100644 venv/lib/python3.7/site.py create mode 120000 venv/lib/python3.7/sre_compile.py create mode 120000 venv/lib/python3.7/sre_constants.py create mode 120000 venv/lib/python3.7/sre_parse.py create mode 120000 venv/lib/python3.7/stat.py create mode 120000 venv/lib/python3.7/struct.py create mode 120000 venv/lib/python3.7/tarfile.py create mode 120000 venv/lib/python3.7/tempfile.py create mode 120000 venv/lib/python3.7/token.py create mode 120000 venv/lib/python3.7/tokenize.py create mode 120000 venv/lib/python3.7/types.py create mode 120000 venv/lib/python3.7/warnings.py create mode 120000 venv/lib/python3.7/weakref.py diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..0694f8d --- /dev/null +++ b/Readme.md @@ -0,0 +1,4 @@ +== Kivi NLP == + +```$ source ./venv/bin/activate``` +```$ python hamo.py``` diff --git a/hamo.py b/hamo.py new file mode 100644 index 0000000..debd2cf --- /dev/null +++ b/hamo.py @@ -0,0 +1,62 @@ +import requests +from bs4 import BeautifulSoup +from googletrans import Translator +from nltk import sent_tokenize +import re + +# download url +url = 'https://www.olx.ba/artikal/33001845/stan-u-centru-ilidza-sa-balkona/' +res = requests.get(url) +html_page = res.content + +# remove html +soup = BeautifulSoup(html_page, 'html.parser') +text = soup.find_all(text=True) + +output = '' +blacklist = [ + '[document]', + 'noscript', + 'header', + 'html', + 'meta', + 'style', + 'head', + 'input', + 'script', +] + +for t in text: + if t.parent.name not in blacklist: + output += '{}\n'.format(t) + + +# mark local traits (currency etc) + +internationalized = re.sub(r'KM', '_currency_', output) + +print("======================================") +# translate to english +translator = Translator() +en_output = translator.translate(internationalized).text +sentences = sent_tokenize(en_output) +no_whitespace = list(map(lambda s: re.sub(r'[^A-Za-z0-9\.,-_]+', ' ', s),sentences)) + +only_with_numbers = [sentence for sentence in no_whitespace if bool(re.search(r'\d', sentence))] + +lines = [sentence.split(' ') for sentence in only_with_numbers] + +features = [] +for line in lines: + for idx, word in enumerate(line): + if bool(re.search(r'\d+', word)): + features.append(list(filter(None,[ + line[idx-1] if idx > 0 else None, + line[idx], + line[idx+1] if idx < len(line)-1 else None + ]))) + + +for feature in features: + print(feature) + diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..9d1eeba --- /dev/null +++ b/requirements.txt @@ -0,0 +1,10 @@ +beautifulsoup4==4.8.1 +certifi==2019.9.11 +chardet==3.0.4 +googletrans==2.4.0 +idna==2.8 +nltk==3.4.5 +requests==2.22.0 +six==1.12.0 +soupsieve==1.9.4 +urllib3==1.25.6 diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..d66707b --- /dev/null +++ b/setup.py @@ -0,0 +1,2 @@ +import nltk +nltk.download('punkt') diff --git a/venv/bin/activate b/venv/bin/activate new file mode 100644 index 0000000..b305b44 --- /dev/null +++ b/venv/bin/activate @@ -0,0 +1,78 @@ +# This file must be used with "source bin/activate" *from bash* +# you cannot run it directly + +deactivate () { + unset -f pydoc >/dev/null 2>&1 + + # reset old environment variables + # ! [ -z ${VAR+_} ] returns true if VAR is declared at all + if ! [ -z "${_OLD_VIRTUAL_PATH+_}" ] ; then + PATH="$_OLD_VIRTUAL_PATH" + export PATH + unset _OLD_VIRTUAL_PATH + fi + if ! [ -z "${_OLD_VIRTUAL_PYTHONHOME+_}" ] ; then + PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME" + export PYTHONHOME + unset _OLD_VIRTUAL_PYTHONHOME + fi + + # This should detect bash and zsh, which have a hash command that must + # be called to get it to forget past commands. Without forgetting + # past commands the $PATH changes we made may not be respected + if [ -n "${BASH-}" ] || [ -n "${ZSH_VERSION-}" ] ; then + hash -r 2>/dev/null + fi + + if ! [ -z "${_OLD_VIRTUAL_PS1+_}" ] ; then + PS1="$_OLD_VIRTUAL_PS1" + export PS1 + unset _OLD_VIRTUAL_PS1 + fi + + unset VIRTUAL_ENV + if [ ! "${1-}" = "nondestructive" ] ; then + # Self destruct! + unset -f deactivate + fi +} + +# unset irrelevant variables +deactivate nondestructive + +VIRTUAL_ENV="/home/hamo/projects/misc/adreader/venv" +export VIRTUAL_ENV + +_OLD_VIRTUAL_PATH="$PATH" +PATH="$VIRTUAL_ENV/bin:$PATH" +export PATH + +# unset PYTHONHOME if set +if ! [ -z "${PYTHONHOME+_}" ] ; then + _OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME" + unset PYTHONHOME +fi + +if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT-}" ] ; then + _OLD_VIRTUAL_PS1="${PS1-}" + if [ "x" != x ] ; then + PS1="${PS1-}" + else + PS1="(`basename \"$VIRTUAL_ENV\"`) ${PS1-}" + fi + export PS1 +fi + +# Make sure to unalias pydoc if it's already there +alias pydoc 2>/dev/null >/dev/null && unalias pydoc || true + +pydoc () { + python -m pydoc "$@" +} + +# This should detect bash and zsh, which have a hash command that must +# be called to get it to forget past commands. Without forgetting +# past commands the $PATH changes we made may not be respected +if [ -n "${BASH-}" ] || [ -n "${ZSH_VERSION-}" ] ; then + hash -r 2>/dev/null +fi diff --git a/venv/bin/activate.csh b/venv/bin/activate.csh new file mode 100644 index 0000000..778e6b8 --- /dev/null +++ b/venv/bin/activate.csh @@ -0,0 +1,42 @@ +# This file must be used with "source bin/activate.csh" *from csh*. +# You cannot run it directly. +# Created by Davide Di Blasi . + +set newline='\ +' + +alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH:q" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT:q" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate && unalias pydoc' + +# Unset irrelevant variables. +deactivate nondestructive + +setenv VIRTUAL_ENV "/home/hamo/projects/misc/adreader/venv" + +set _OLD_VIRTUAL_PATH="$PATH:q" +setenv PATH "$VIRTUAL_ENV:q/bin:$PATH:q" + + + +if ("" != "") then + set env_name = "" +else + set env_name = "$VIRTUAL_ENV:t:q" +endif + +# Could be in a non-interactive environment, +# in which case, $prompt is undefined and we wouldn't +# care about the prompt anyway. +if ( $?prompt ) then + set _OLD_VIRTUAL_PROMPT="$prompt:q" +if ( "$prompt:q" =~ *"$newline:q"* ) then + : +else + set prompt = "[$env_name:q] $prompt:q" +endif +endif + +unset env_name + +alias pydoc python -m pydoc + +rehash diff --git a/venv/bin/activate.fish b/venv/bin/activate.fish new file mode 100644 index 0000000..133c7ab --- /dev/null +++ b/venv/bin/activate.fish @@ -0,0 +1,101 @@ +# This file must be used using `source bin/activate.fish` *within a running fish ( http://fishshell.com ) session*. +# Do not run it directly. + +function _bashify_path -d "Converts a fish path to something bash can recognize" + set fishy_path $argv + set bashy_path $fishy_path[1] + for path_part in $fishy_path[2..-1] + set bashy_path "$bashy_path:$path_part" + end + echo $bashy_path +end + +function _fishify_path -d "Converts a bash path to something fish can recognize" + echo $argv | tr ':' '\n' +end + +function deactivate -d 'Exit virtualenv mode and return to the normal environment.' + # reset old environment variables + if test -n "$_OLD_VIRTUAL_PATH" + # https://github.com/fish-shell/fish-shell/issues/436 altered PATH handling + if test (echo $FISH_VERSION | tr "." "\n")[1] -lt 3 + set -gx PATH (_fishify_path $_OLD_VIRTUAL_PATH) + else + set -gx PATH $_OLD_VIRTUAL_PATH + end + set -e _OLD_VIRTUAL_PATH + end + + if test -n "$_OLD_VIRTUAL_PYTHONHOME" + set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME + set -e _OLD_VIRTUAL_PYTHONHOME + end + + if test -n "$_OLD_FISH_PROMPT_OVERRIDE" + # Set an empty local `$fish_function_path` to allow the removal of `fish_prompt` using `functions -e`. + set -l fish_function_path + + # Erase virtualenv's `fish_prompt` and restore the original. + functions -e fish_prompt + functions -c _old_fish_prompt fish_prompt + functions -e _old_fish_prompt + set -e _OLD_FISH_PROMPT_OVERRIDE + end + + set -e VIRTUAL_ENV + + if test "$argv[1]" != 'nondestructive' + # Self-destruct! + functions -e pydoc + functions -e deactivate + functions -e _bashify_path + functions -e _fishify_path + end +end + +# Unset irrelevant variables. +deactivate nondestructive + +set -gx VIRTUAL_ENV "/home/hamo/projects/misc/adreader/venv" + +# https://github.com/fish-shell/fish-shell/issues/436 altered PATH handling +if test (echo $FISH_VERSION | tr "." "\n")[1] -lt 3 + set -gx _OLD_VIRTUAL_PATH (_bashify_path $PATH) +else + set -gx _OLD_VIRTUAL_PATH $PATH +end +set -gx PATH "$VIRTUAL_ENV/bin" $PATH + +# Unset `$PYTHONHOME` if set. +if set -q PYTHONHOME + set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME + set -e PYTHONHOME +end + +function pydoc + python -m pydoc $argv +end + +if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" + # Copy the current `fish_prompt` function as `_old_fish_prompt`. + functions -c fish_prompt _old_fish_prompt + + function fish_prompt + # Save the current $status, for fish_prompts that display it. + set -l old_status $status + + # Prompt override provided? + # If not, just prepend the environment name. + if test -n "" + printf '%s%s' "" (set_color normal) + else + printf '%s(%s) ' (set_color normal) (basename "$VIRTUAL_ENV") + end + + # Restore the original $status + echo "exit $old_status" | source + _old_fish_prompt + end + + set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV" +end diff --git a/venv/bin/activate.ps1 b/venv/bin/activate.ps1 new file mode 100644 index 0000000..6d8ae2a --- /dev/null +++ b/venv/bin/activate.ps1 @@ -0,0 +1,60 @@ +# This file must be dot sourced from PoSh; you cannot run it directly. Do this: . ./activate.ps1 + +$script:THIS_PATH = $myinvocation.mycommand.path +$script:BASE_DIR = split-path (resolve-path "$THIS_PATH/..") -Parent + +function global:deactivate([switch] $NonDestructive) +{ + if (test-path variable:_OLD_VIRTUAL_PATH) + { + $env:PATH = $variable:_OLD_VIRTUAL_PATH + remove-variable "_OLD_VIRTUAL_PATH" -scope global + } + + if (test-path function:_old_virtual_prompt) + { + $function:prompt = $function:_old_virtual_prompt + remove-item function:\_old_virtual_prompt + } + + if ($env:VIRTUAL_ENV) + { + $old_env = split-path $env:VIRTUAL_ENV -leaf + remove-item env:VIRTUAL_ENV -erroraction silentlycontinue + } + + if (!$NonDestructive) + { + # Self destruct! + remove-item function:deactivate + remove-item function:pydoc + } +} + +function global:pydoc +{ + python -m pydoc $args +} + +# unset irrelevant variables +deactivate -nondestructive + +$VIRTUAL_ENV = $BASE_DIR +$env:VIRTUAL_ENV = $VIRTUAL_ENV + +$global:_OLD_VIRTUAL_PATH = $env:PATH +$env:PATH = "$env:VIRTUAL_ENV/bin:" + $env:PATH +if (!$env:VIRTUAL_ENV_DISABLE_PROMPT) +{ + function global:_old_virtual_prompt + { + "" + } + $function:_old_virtual_prompt = $function:prompt + function global:prompt + { + # Add a prefix to the current prompt, but don't discard it. + write-host "($( split-path $env:VIRTUAL_ENV -leaf )) " -nonewline + & $function:_old_virtual_prompt + } +} diff --git a/venv/bin/activate.xsh b/venv/bin/activate.xsh new file mode 100644 index 0000000..2f42979 --- /dev/null +++ b/venv/bin/activate.xsh @@ -0,0 +1,39 @@ +"""Xonsh activate script for virtualenv""" +from xonsh.tools import get_sep as _get_sep + +def _deactivate(args): + if "pydoc" in aliases: + del aliases["pydoc"] + + if ${...}.get("_OLD_VIRTUAL_PATH", ""): + $PATH = $_OLD_VIRTUAL_PATH + del $_OLD_VIRTUAL_PATH + + if ${...}.get("_OLD_VIRTUAL_PYTHONHOME", ""): + $PYTHONHOME = $_OLD_VIRTUAL_PYTHONHOME + del $_OLD_VIRTUAL_PYTHONHOME + + if "VIRTUAL_ENV" in ${...}: + del $VIRTUAL_ENV + + if "nondestructive" not in args: + # Self destruct! + del aliases["deactivate"] + + +# unset irrelevant variables +_deactivate(["nondestructive"]) +aliases["deactivate"] = _deactivate + +$VIRTUAL_ENV = r"/home/hamo/projects/misc/adreader/venv" + +$_OLD_VIRTUAL_PATH = $PATH +$PATH = $PATH[:] +$PATH.add($VIRTUAL_ENV + _get_sep() + "bin", front=True, replace=True) + +if ${...}.get("PYTHONHOME", ""): + # unset PYTHONHOME if set + $_OLD_VIRTUAL_PYTHONHOME = $PYTHONHOME + del $PYTHONHOME + +aliases["pydoc"] = ["python", "-m", "pydoc"] diff --git a/venv/bin/activate_this.py b/venv/bin/activate_this.py new file mode 100644 index 0000000..59b5d72 --- /dev/null +++ b/venv/bin/activate_this.py @@ -0,0 +1,46 @@ +"""Activate virtualenv for current interpreter: + +Use exec(open(this_file).read(), {'__file__': this_file}). + +This can be used when you must use an existing Python interpreter, not the virtualenv bin/python. +""" +import os +import site +import sys + +try: + __file__ +except NameError: + raise AssertionError("You must use exec(open(this_file).read(), {'__file__': this_file}))") + +# prepend bin to PATH (this file is inside the bin directory) +bin_dir = os.path.dirname(os.path.abspath(__file__)) +os.environ["PATH"] = os.pathsep.join([bin_dir] + os.environ.get("PATH", "").split(os.pathsep)) + +base = os.path.dirname(bin_dir) + +# virtual env is right above bin directory +os.environ["VIRTUAL_ENV"] = base + +# add the virtual environments site-package to the host python import mechanism +IS_PYPY = hasattr(sys, "pypy_version_info") +IS_JYTHON = sys.platform.startswith("java") +if IS_JYTHON: + site_packages = os.path.join(base, "Lib", "site-packages") +elif IS_PYPY: + site_packages = os.path.join(base, "site-packages") +else: + IS_WIN = sys.platform == "win32" + if IS_WIN: + site_packages = os.path.join(base, "Lib", "site-packages") + else: + site_packages = os.path.join(base, "lib", "python{}".format(sys.version[:3]), "site-packages") + +prev = set(sys.path) +site.addsitedir(site_packages) +sys.real_prefix = sys.prefix +sys.prefix = base + +# Move the added items to the front of the path, in place +new = list(sys.path) +sys.path[:] = [i for i in new if i not in prev] + [i for i in new if i in prev] diff --git a/venv/bin/chardetect b/venv/bin/chardetect new file mode 100755 index 0000000..30e9a43 --- /dev/null +++ b/venv/bin/chardetect @@ -0,0 +1,8 @@ +#!/home/hamo/projects/misc/adreader/venv/bin/python3.7 +# -*- coding: utf-8 -*- +import re +import sys +from chardet.cli.chardetect import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/venv/bin/easy_install b/venv/bin/easy_install new file mode 100755 index 0000000..e55d4e2 --- /dev/null +++ b/venv/bin/easy_install @@ -0,0 +1,11 @@ +#!/home/hamo/projects/misc/adreader/venv/bin/python3.7 + +# -*- coding: utf-8 -*- +import re +import sys + +from setuptools.command.easy_install import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/venv/bin/easy_install-3.7 b/venv/bin/easy_install-3.7 new file mode 100755 index 0000000..e55d4e2 --- /dev/null +++ b/venv/bin/easy_install-3.7 @@ -0,0 +1,11 @@ +#!/home/hamo/projects/misc/adreader/venv/bin/python3.7 + +# -*- coding: utf-8 -*- +import re +import sys + +from setuptools.command.easy_install import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/venv/bin/pip b/venv/bin/pip new file mode 100755 index 0000000..fb48463 --- /dev/null +++ b/venv/bin/pip @@ -0,0 +1,11 @@ +#!/home/hamo/projects/misc/adreader/venv/bin/python3.7 + +# -*- coding: utf-8 -*- +import re +import sys + +from pip._internal.main import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/venv/bin/pip3 b/venv/bin/pip3 new file mode 100755 index 0000000..fb48463 --- /dev/null +++ b/venv/bin/pip3 @@ -0,0 +1,11 @@ +#!/home/hamo/projects/misc/adreader/venv/bin/python3.7 + +# -*- coding: utf-8 -*- +import re +import sys + +from pip._internal.main import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/venv/bin/pip3.7 b/venv/bin/pip3.7 new file mode 100755 index 0000000..fb48463 --- /dev/null +++ b/venv/bin/pip3.7 @@ -0,0 +1,11 @@ +#!/home/hamo/projects/misc/adreader/venv/bin/python3.7 + +# -*- coding: utf-8 -*- +import re +import sys + +from pip._internal.main import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/venv/bin/python b/venv/bin/python new file mode 120000 index 0000000..940bee3 --- /dev/null +++ b/venv/bin/python @@ -0,0 +1 @@ +python3.7 \ No newline at end of file diff --git a/venv/bin/python-config b/venv/bin/python-config new file mode 100755 index 0000000..66d61d3 --- /dev/null +++ b/venv/bin/python-config @@ -0,0 +1,78 @@ +#!/home/hamo/projects/misc/adreader/venv/bin/python + +import sys +import getopt +import sysconfig + +valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags', + 'ldflags', 'help'] + +if sys.version_info >= (3, 2): + valid_opts.insert(-1, 'extension-suffix') + valid_opts.append('abiflags') +if sys.version_info >= (3, 3): + valid_opts.append('configdir') + + +def exit_with_usage(code=1): + sys.stderr.write("Usage: {0} [{1}]\n".format( + sys.argv[0], '|'.join('--'+opt for opt in valid_opts))) + sys.exit(code) + +try: + opts, args = getopt.getopt(sys.argv[1:], '', valid_opts) +except getopt.error: + exit_with_usage() + +if not opts: + exit_with_usage() + +pyver = sysconfig.get_config_var('VERSION') +getvar = sysconfig.get_config_var + +opt_flags = [flag for (flag, val) in opts] + +if '--help' in opt_flags: + exit_with_usage(code=0) + +for opt in opt_flags: + if opt == '--prefix': + print(sysconfig.get_config_var('prefix')) + + elif opt == '--exec-prefix': + print(sysconfig.get_config_var('exec_prefix')) + + elif opt in ('--includes', '--cflags'): + flags = ['-I' + sysconfig.get_path('include'), + '-I' + sysconfig.get_path('platinclude')] + if opt == '--cflags': + flags.extend(getvar('CFLAGS').split()) + print(' '.join(flags)) + + elif opt in ('--libs', '--ldflags'): + abiflags = getattr(sys, 'abiflags', '') + libs = ['-lpython' + pyver + abiflags] + libs += getvar('LIBS').split() + libs += getvar('SYSLIBS').split() + # add the prefix/lib/pythonX.Y/config dir, but only if there is no + # shared library in prefix/lib/. + if opt == '--ldflags': + if not getvar('Py_ENABLE_SHARED'): + libs.insert(0, '-L' + getvar('LIBPL')) + if not getvar('PYTHONFRAMEWORK'): + libs.extend(getvar('LINKFORSHARED').split()) + print(' '.join(libs)) + + elif opt == '--extension-suffix': + ext_suffix = sysconfig.get_config_var('EXT_SUFFIX') + if ext_suffix is None: + ext_suffix = sysconfig.get_config_var('SO') + print(ext_suffix) + + elif opt == '--abiflags': + if not getattr(sys, 'abiflags', None): + exit_with_usage() + print(sys.abiflags) + + elif opt == '--configdir': + print(sysconfig.get_config_var('LIBPL')) diff --git a/venv/bin/python3 b/venv/bin/python3 new file mode 120000 index 0000000..940bee3 --- /dev/null +++ b/venv/bin/python3 @@ -0,0 +1 @@ +python3.7 \ No newline at end of file diff --git a/venv/bin/python3.7 b/venv/bin/python3.7 new file mode 100755 index 0000000000000000000000000000000000000000..e278b8c752921d535ba70ee04f18fda0d0291bee GIT binary patch literal 14088 zcmeHOeP|qI8hfH$<99K||_98w1P-qXX*Q1EhDn_XqKZ#!%pJ(RzZKl%{{GoL}B%(m&>RQE8Q?;*&iy^vN7=pOks20;_ow`t+L-GPo z=iB2xkkzMwvQsfC`f@^!+b8xgE*C!_X2{5KXQKE*-vU%}9voM}CXvJVcNqW(ducp_ zgNY39vxLV)1P0@{HdBqh!&LLB*dXWKB#1Z`Ic`ScW+V=HK;{WVJ-H@)yeav@*hV%c zAp0_H`^ZT#zrbMWbX@7H6%cVZQ5?_n*AmKpvy6A9y41=1fpWTP)nKM)!@5<2sm8%f zc6g+5WaEa$4eQK8&RpZ2cMVO1*VL99y47RvPd{;Q`SmZIREs9=b#`uR|8e#!o;S~d z^RW*T`=k8l6VFSB?R;Jj-E?V%k$#{-mXkuA7mz9(!%i z@y}kl{=|XS_Wz!|YfR}S&|TWvNeQuZ>xLD_ciNYd`hWRruLU1<{8WEY%d z-m!<0nXIxqy0+S>bUxjmDLCnT*Vfj-TsGa6>=|V5{-In}ylvlge#dR2c6T;2venDz zkI`Eg=5aI1PN$Mil9Dm_$tcy0#HBJ>d$^EJVOktQ5e|i9S=m!4i2s((j+Rz?jk(5L zPlX`DJ}Fa?d471`MAQZ3C*@MZ7iVazl&O!sXu1!|eGL1^kn1oV(jS%t(YPN7f5?Zg z^Ywf^B0lSV9t-F(S2j!r^t|6eQvp5hX>6Mg=&?pvKNHZG)&d(e=?dry=nCix=nCix z=nDMCD)4pHB|lhWC!^NG6-VfAck96ePMLey8hbN3;hl;5hkuc}&#bC{z?0d3^=BQ$ zBX?NE53I2dr?+)=j#q4_KgF!^%J;~{8gG8fC92&;ao;>n;>(bdERwm7a(b+dGO!6WtxfZxdaK;!oYyc;jAD|FLt$&s@`~=Vo2kI{0(B zQ@{GS#CI0I>MVZVR{S{O*1TtpO+>6s?+$;;^}cOK;`YRj#2pDcI0qh&uLPraok~}R zl$vw}bOm$;bOm$;bOm$;bOm$;bOm$;bOm$;eq{wB^o}O7to-T*^5^#;%couUcEXi} z^jNJ{e(Aan;aCrLQ)Ji8Dl$?XS+-B*Oi{d*V?Mg!a%{v zJINkpX0p_=x>K3ioRc>Dv%_Z3aE3avGbvFeS~?n?WWVxk1IfaGGE<}3!sw8XPTsfN zlg<}1x$G%|O}2b`Fv$Tt5H+QmPI`nsy`EMxpYxhp&GdlXmro9*?ST|UK=LE(WImr9 z^&`Mjy5vx%m&VFbEW*FceG{^AC-j*d_>~0PqCkn_F7`N28hSLEuow+ zZx3b>kA1h9bUY;DaUTF;-;;|+;riV`THce0$36sJCUKZQ{D8NSo%c9o>~o+Y@!|Q4 zTHQ$u*A(%%?*MV%!T90x=Y`1U#Q8l!BefvzuP}$N-!3u)wrqY{t$EkK+gwbh(Lh=X!3F?@=MZ!&xfaGx)hK2d)t zULuCSuYvnDey`zsDq(-fz}G0YDiDv~d((}iB!ZtW&B@UJlMHd#qBVPXODCrR&M2uZ>BIZ&_I2lwDk2t7*0YHZ+x&QzG literal 0 HcmV?d00001 diff --git a/venv/bin/translate b/venv/bin/translate new file mode 100755 index 0000000..11bd86d --- /dev/null +++ b/venv/bin/translate @@ -0,0 +1,40 @@ +#!/home/hamo/projects/misc/adreader/venv/bin/python3.7 +# -*- coding: utf-8 -*- +import argparse +import sys +from googletrans import Translator + +def main(): + parser = argparse.ArgumentParser( + description='Python Google Translator as a command-line tool') + parser.add_argument('text', help='The text you want to translate.') + parser.add_argument('-d', '--dest', default='en', + help='The destination language you want to translate. (Default: en)') + parser.add_argument('-s', '--src', default='auto', + help='The source language you want to translate. (Default: auto)') + parser.add_argument('-c', '--detect', action='store_true', default=False, + help='') + args = parser.parse_args() + translator = Translator() + + if args.detect: + result = translator.detect(args.text) + result = """ +[{lang}, {confidence}] {text} + """.strip().format(text=args.text, + lang=result.lang, confidence=result.confidence) + print(result) + return + + result = translator.translate(args.text, dest=args.dest, src=args.src) + result = u""" +[{src}] {original} + -> +[{dest}] {text} +[pron.] {pronunciation} + """.strip().format(src=result.src, dest=result.dest, original=result.origin, + text=result.text, pronunciation=result.pronunciation) + print(result) + +if __name__ == '__main__': + main() diff --git a/venv/bin/wheel b/venv/bin/wheel new file mode 100755 index 0000000..aff15b2 --- /dev/null +++ b/venv/bin/wheel @@ -0,0 +1,11 @@ +#!/home/hamo/projects/misc/adreader/venv/bin/python3.7 + +# -*- coding: utf-8 -*- +import re +import sys + +from wheel.cli import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/venv/include/python3.7m b/venv/include/python3.7m new file mode 120000 index 0000000..4fe7f6c --- /dev/null +++ b/venv/include/python3.7m @@ -0,0 +1 @@ +/usr/include/python3.7m \ No newline at end of file diff --git a/venv/lib/python3.7/__future__.py b/venv/lib/python3.7/__future__.py new file mode 120000 index 0000000..f8b4fc8 --- /dev/null +++ b/venv/lib/python3.7/__future__.py @@ -0,0 +1 @@ +/usr/lib/python3.7/__future__.py \ No newline at end of file diff --git a/venv/lib/python3.7/__pycache__/__future__.cpython-37.pyc b/venv/lib/python3.7/__pycache__/__future__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3f394d5678845de6c30e48993fb0642e3bd246f8 GIT binary patch literal 4148 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 Rl&6D$Cw#(_Fb!|U?*LQ@Dk}g0 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/__pycache__/_collections_abc.cpython-37.pyc b/venv/lib/python3.7/__pycache__/_collections_abc.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e9325fdf32945bce3394153a2cfae903a2d6b1e3 GIT binary patch literal 28958 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/__pycache__/_weakrefset.cpython-37.pyc b/venv/lib/python3.7/__pycache__/_weakrefset.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7eaa5b1af424ca4b6cfec61b4fb2431306a7863d GIT binary patch literal 7478 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/__pycache__/base64.cpython-37.pyc b/venv/lib/python3.7/__pycache__/base64.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..71e7c10ca3f94fe6e766169ff4405c9e1fe6a536 GIT binary patch literal 17004 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 G>;DB4IP%p1 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/__pycache__/bisect.cpython-37.pyc b/venv/lib/python3.7/__pycache__/bisect.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bb0eada8b8be8a7c1578250f3483cc6817d06910 GIT binary patch literal 2714 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/__pycache__/copy.cpython-37.pyc b/venv/lib/python3.7/__pycache__/copy.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ba6baf5a4e17de9d68f9178e6c399d8a9725dec5 GIT binary patch literal 7117 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 Xj5>k`0XhO~%yCT9tR5}1`lbH@HK0FD literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/__pycache__/copyreg.cpython-37.pyc b/venv/lib/python3.7/__pycache__/copyreg.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a1e41859651391f5e467fccaa819bd7dd03d980d GIT binary patch literal 4260 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/__pycache__/enum.cpython-37.pyc b/venv/lib/python3.7/__pycache__/enum.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..93c0f81a6165bb673dc8656662b533de20a58f24 GIT binary patch literal 24287 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/__pycache__/fnmatch.cpython-37.pyc b/venv/lib/python3.7/__pycache__/fnmatch.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a321e100ff0175c66501e87d607aa4d21be7595c GIT binary patch literal 3353 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/__pycache__/hashlib.cpython-37.pyc b/venv/lib/python3.7/__pycache__/hashlib.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d3d05e2344613632f4c77f95066f5b982084730d GIT binary patch literal 6607 zcmbVQ&2!vFb_Xz+FAP716h%_9HjA~hMU7V`MN%VCUYW5htxI0pw6b*U4I~$WLHBUL z!2sh1M&z(Cm!)z^s#3nEDn%YQRY~RF*h@}1p>o)&oK&?p-&}jh?=>*wh_tgwW(p4v z-LGH2_xkng_xgkBX+y#9yTf_NZ zhS&CIPgP6*QVDM83a@t!@lsXj&#Ry+Tho871lq5aVI8Aq{913$no|`}|1zikeNH{k zW?B8E!mqHoWA(9eOtLQUc{YEk^(wo@uCN8jG&jNfDtIqii<0+Z#`_ypR5I=v-Qg!3 zoWFW(Ee+@SG+#Pa`SP*CmmZKjZ)420u7NR6voTWJ>(+IC{p1a{$d^tvRmu2#qkdig zQhBC6TY5JAtoqD&R$g&>X@?Xhl!kiC{4!?l^&& z%`vu5<6Xn(vF6RjEi>vk>-l?Qg>#NL3y z0Q7_O%-iEpd=rw>?^iN;zWZovCkKu+H%Dkxiv1&hF#lsgy~Q;${1wUkP~E{W>H1;78)IWkEbOZJc?YuPn`4k|jmuK; zcH4737#;H?*7vdHCX5^rWAdK}jo5l{RSFbDiBsV+w>$=$(V&%?0iOCHHX0P87>@uM z!f8qAiAl!7(?XcpFmq)mY=vwHcZ~WtB4~PUM17~%^WgUaz8NFhhrtShDY?h?_BI_O zp@`*n#zsAB?wRk6+g4@VJ?~k~9i{c=h3VdGd>@gN`Fn(Tje6`ll0j?b`C+TYo*&+K zpC4{*K0jo@*ZK29r}_NQy^n8t@J+b04jS~gZ{uk{KjimU^2iKFVLZSRPH0O@4K-J> zBy@IMQsIY%U7c`nDdmcDXLIvj%e~Wdw%Ts<&K>vmX1lq;+-CE(%kJ`ZzIE^R#(K-$ zx_`I1wbf$x?(_S%*ZBtIYs{ntST)rl$9h`Iq{-gRyYh|LCf^8bX*oZ^#z>S_FhZVQ zV+^CRHX4^xs6je4`Fm6J({`l6cI}?rWn$QrIu( zN}{sD1A_VkPz5@uilFL9Dt)9U`hHPTl_XX9ffD>4G!@YNlcXt)ib-+5ENQBe#sDnt zS7b{~woGBvKV#H1M*W8zRUMU*(!L>SW+crlU}?W5Tk5i94x?g>n#ZW`6JMZu+C0hL-BPPadud4a@Ti zk0P!RpilG_K7HI2w36Z~0m9%JC5(WN2pyl<$HpB|Ac7?V5?dsU2y%LOnkeB@(!&8o zkqE94kk~R|M9|PgnQ-!%b8MTs1l2ZTn!pT!8i6SS3j^Q|w z(L5gZx!G7w->~i0!1IwK+Y|Yy?K*CUr-eNpr$w9gpfpOV+t`%S5^0&5$q-UwX${## zx=N*_!eu+#n&--7{5Jn*fz#SYGV1<9h)|@)7mh#R5^q#fozks940spO0kA2;Kdq(;97r( ztS8u9y$A9vEcS=#HQR<+zRzkOfq(Q%07cbRL#+VnfE9I7!UYNE)z{yKI;9#~1@z

tofKiWu9jm*_a5+|EjcL-+H3~JyC_5AMV6zlr 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 L1MhJzu%7wfRmK0} literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/__pycache__/hmac.cpython-37.pyc b/venv/lib/python3.7/__pycache__/hmac.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..80c8de36d4ce6f68381137d89005f04d4b39697c GIT binary patch literal 6129 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/__pycache__/imp.cpython-37.pyc b/venv/lib/python3.7/__pycache__/imp.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f1b981a59753155bd8d087a9bb6361f9f16dc5c1 GIT binary patch literal 9769 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 UCi3O|)}-}v`7N|oAs_qy8%*Gmod5s; literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/__pycache__/io.cpython-37.pyc b/venv/lib/python3.7/__pycache__/io.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..53062bf1d59822a9ba8be121f268b8739b5e73a6 GIT binary patch literal 3425 zcmbtXOK%*x5$>M1T5ntST7J^n0BZr-nL`c%Ho`)ZEp3F&N{(blNhgb5PLrdd)Q?%R zN2BpIxdzyukR0(E4YfeV~!JhIJyJtoM?1PaR3`G{n;#XB)6{)?&MbE+K=j$)O z|JS19{D%gU&mDAj@H3I?IKuHA;rgzqh^nZGx@d@|Xo)%DiFvUg7R8cS7As;^+!1%r z@Awt5ChkR5ziR*1{2Kn=kE(Iqug49)5jXv2-11xToIe+Pz8BB?^YMbe5HI?R@sht3 zFZ;{!ioX)C`m3%Zs~0W*j`&PAgS%qQUlR}fdt%+c|BWLairQZtQNxPQWbNXCc=WfL zzYh6hQHQ(^`9rz>mzw_wvL|8=vN^~eTiFxHo{A;NmLPj-WzXcJzcV@a57%|BH>4*Q zY?q{%j!{2b7 zGbg!UbL8ij-cPRnv+L0Jk501i2gjbeL3+i#Q)iR$f7c!7O|IEFH*%^@d59DcWe5kUf=1 z0UgkYadAxB^L8_PM3xR%+Oyrm&N1sNsksjOW7Z& zgQ0As70f%I*>8T$R6K}eER)P`GmLBL@hHL(g4SuSfS4!j_;g?ER5NAG95a#Pz>JyU zV36tz7|+!ej)Ut80C3L!btV&gcwsAnJmI5qFzTzY56|+*FheNDY^1Wj_16v1-UKxK ztNDm^$5|1DehTp(KL`Bc>c6(~eJB4?7Kz?hSiAsii2P6`(Ad zuAL#LfeCzyV8Wjl(~~wSlE#~X*kTi{XK*`(Ycf7TNN7wUnaa*ybER2voL8`u2!Q}2 zA~uS=8zK1Qj-p4~yD2=Tr5Q+Y^-4zL_SBXW%%}0hdIYvqZfRVmLJ?uRj)%w$;J0~U z+H8;f46h<)@U&&g#Arl9C11uePW8Bm2W0}-(3iTT^)wh;?2Ww63cqfZ(Vm7`CSf`y zr;x?KgZhd6h*!!oC_sK%HD{U+z%aPMvIjCS%rKR06+jFB5p^-;-3s>&`-w-z5$wee zlL!)SZos0y7&I1!y)tvBl=b*p`aiD{_pkrF`*L zzU6Cgld{rFaXcyUfU>{;ZE(8(rtH0Zds6oHk6yi}r_s^oVt)4nl+<`7IeM9z3N^UF z9o?X&NzEKJ^w`q#)GVOM*AJ6W7dKUOBuBWl<~NIJz|^q!H7 z6nu+ciRP05w6GVB{UCtl;5LIlj>2mBKTzPg{!tY3!HoAGM?e~WH$$-L=BvS(!qqu4 zFVh5t15c36U)cRVsKbYNbZSrs^uT2j1lHw#m3Ko;H2m}g(D!JYrTRQlFe$IXBB(1g zw@MBDBcdOp@teDQFTVqEETJ?bIR#Tcr-mG=H>e@Q@|Kq8%AjQV^-Fr4>d#3!e;Cu_ z&Q_=okt1(y7b)^JX)@brYSmiPa~t-%P;I%b%67d`ZB%P6zV!#yHT(4{p6j_Ql_ht@ MtyC&#SKLPBe+47eTL1t6 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/__pycache__/keyword.cpython-37.pyc b/venv/lib/python3.7/__pycache__/keyword.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7d01bc90b03b8a53f97a511a5f44801584a8481f GIT binary patch literal 1825 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 G&i?_MufEa% literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/__pycache__/locale.cpython-37.pyc b/venv/lib/python3.7/__pycache__/locale.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a24cf2da8213258c1714272c89a18be406cd8eee GIT binary patch literal 34571 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 Bk?jBg literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/__pycache__/ntpath.cpython-37.pyc b/venv/lib/python3.7/__pycache__/ntpath.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8f5d41507d28fbc19b03509e3be522977713a9ad GIT binary patch literal 13020 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 X=bYyab2lPxjy{zsT1E!(H{*W*SrxsD literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/__pycache__/operator.cpython-37.pyc b/venv/lib/python3.7/__pycache__/operator.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..da53438a17c65c001f6f6bf8e570c4dc9f0949fc GIT binary patch literal 13916 zcmcgz%X8dDdIvC=2Zt2(rrs7Li{cDL4)vC0Q?w-8vc0w`+mdA)vJ7M9>mi4l2i3qx z)MS)OR!UY|No~2dY7aT2NImiYg*I(jURe{7jbhHmsdz>8fmshIvJEAlhTx- zEahl~@-#|gw2j7TJMEyIw2OAr9@vV!9=_E~2 zfr>Our)Y*|sYG*hn$FN!I!EW}0$p6XXzO%|-l!Xmlx^x7U8a-IG&@ai((9-*^cIbv z&eA-cLY<>4G>UqJ7HAvlJiSe`s7L84T|hlX*XRi9ZFHSpLp@IKkd8Vquwoc+k5Ckn#BEH`UMqHPtZp+jd~w_OjD@$(B1vhZZ#X&O%s z74THR(<%Cn#_{b8xwIYiER|^o>Jn9GC+ayO+J*Ww3EG4D3{`0_>a(;&yHTH`WjcuZ zJk{tB>I<|&hf!ao`*albC92ag)NfFOj-$T(cnq`ItiO3%`%-I8n3{O&e*SwymUWH) zeXTXeztYg6Re!SqNz*lvw&z90z9O>rg2>r#ixK;($lKS%sC`|e?03X=`(3faeoySQ zZ-`y?`r;Dp;-W3YCA%u#u$RPTdzn^mX+`OJx~AoCt_tb;Eopt&^o6Xt6_L;1Uaomoqebny zu*BMGOZuMWTAuK&R@JJun-#y-YI;_sC8h9ITTQApmn^?!`OCtpHGNrYdbLWv74_`# zSD!xims`z}W!(UjSaTbzbunZ0nv`6k!rF}WxM%@cJZRS*x^>a?^HHZD0!SWEt+i8+ z(aUWh^$4+=ZbN`TDL_EW6IR<3WL1IVt%^#`t>+s8FUWh#dg#iU+XOd{YWSt?TXo?o z;@u`$zI1DK=48rorc`%s-D_E^vh}bA>B@7Dl~(hiXx2otB1+LXfner)wGI4`ORL7* zH9)`11I6rfi*P_o`5@(%JrqQN30x=0yS^`%gpctLGC-)fevm`$yBNqITWPhM{>^HT zB~h>Wq7fM4L6ED~TP;bohk>yqf-JrcUoH88SyNquQ3|rPsK1d~|ATC;?k(4&S;7t z)f7vC2{0!}wIqtw7Dkgv%0v`pA*pIKQcO&?ho8oczZ|4M#gA+{in_!C&?*K$;E!v* z-ofSNP;|AfeqX~<(L3X}AY+!x%V6FrmwvAmjX-w;y)55ALsk5Ab#A%U5Od3JqcsPi zSrHZAn`_j(%A89Qawg;)War^ry;h!ERmC#+(39LSrC(+j-Mpq;mub@meu zb_JvD&akn}Lf zLL!h+05DK8PD}+7la_@fQ?d>H&&4oUEcuUXzLZ2}aMRVshU5|Jz;dHW*TYHgOQclu zJ&W%y;Oa53Y3F0AbD1Lu74e*>I@6yEzb%{AZ7g4_R)yrVro+RGbpwh~SS=_u`KacJ z((N0e)NM`xgR?aD2-teP<%XvTs0pO{2mr1m1{qNxy9Y}LAUu)@fL;U0wHQ!*IM-

r@gpxX+K0VqD#TaWV-; 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 g`9i*bSE`Wa^;;b+)PLTRl@V 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 Q)4q~FWs0#Ta~1Rd0xRug>i_@% literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/__pycache__/re.cpython-37.pyc b/venv/lib/python3.7/__pycache__/re.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b966850d018ae25d19108f7411c112eb7a77e95b GIT binary patch literal 13820 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 HH5~p=*s6gt literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/__pycache__/rlcompleter.cpython-37.pyc b/venv/lib/python3.7/__pycache__/rlcompleter.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2aa7fc46ec60d6631c45300e3de18a2ff4884177 GIT binary patch literal 5763 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/__pycache__/site.cpython-37.pyc b/venv/lib/python3.7/__pycache__/site.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4bbebdca554dec4eaf477166ce3e4396b2267207 GIT binary patch literal 22090 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 ab=yfgDQAo0I8QqVoljs!`tZD`<^DGZZwzz* literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/__pycache__/sre_constants.cpython-37.pyc b/venv/lib/python3.7/__pycache__/sre_constants.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f5bc28167e2f59917345b3cd91c72ff78a7ce04f GIT binary patch literal 6307 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 G_x}I{GcNl8 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/__pycache__/stat.cpython-37.pyc b/venv/lib/python3.7/__pycache__/stat.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c0f37f9ab00ae52d0c5a88ad5a1f43806b7ad7f4 GIT binary patch literal 3889 zcmb7G%~#t<5?2dhjQLDL$Ok0RBw@fwurtXdVG<^Tv1QN(f2<@2=(qE{#wCLWe@#nd zAdkE^@9p09GJit$xR?DK=D2@@u6yFP=UjHHB$G8JA&F)Ex~i+X^{eVuwU$RlViNw| z?a%-C&kK_DZ&HqbBPcB4?cS6n2_!B7;|ydjLm%%0g)7j{`ys+3Fu(^O%A+vI2O-8| zFa*PYmG}^hz$muEFvdql{O)!9=I!g~_Z(-s4nH8yhkmsfe+o;G z!Yn<*C>AkO-(wb@V^lxjN-SZdDU56xvy;YE$zXIEu1FTMu!0#~#cb-Bi9cWlUtsiW z2gAT%xt_D6b*VY2NOpcV_M0rGnMBv7)RZ?QNSjhT^SYI8HC?aL^xR}^uUYjRRMlEb zs7}+fMO)aO)7(~t?e5h*S8dhQmYYC-Z!WG@nm}4TR1>k7xwpM-yPgf|o?F?rpQ<&{ zYN%vZokqJQJoQfOh_>nxBfu>x9rY0?1pNdNf&qdk!5~7Foasj`jY;F}lKBv~_mYHR z$ggvT?d^%C>h0JnJqg1gvZU6Wx;^WvjTYFbBbREWsczY-YkTU}K}^LTMp4~Chq-tn z(4GH|Nzy;0IP(=6CWi1~0lZsG?z9?qa;MU0CEKF)lU>EcH5|8^tbnj9=$m|HH(w>| z&Q`L0;O(@U4--$4l!8S2z#lNndajVsE>Z*(ilm59#Lo(G?F&K#+pP*`%XTRPK}eJZ z)jMe0od~7>bV7sWn44%dae_YCH8F9sf8=#;O?VcQ&GVYnBA5*NW^79&koX;&FIEQC{uP# zG$+tEt?KTl2`;a_I4g^2e%wWn_UmV7@$T6Kg}uF3uZZBaJef2@TRDppnxA%Y zy7VQS?w`#mt7i-9T(i=^($#j_cKjqUw0?wGl(rm=e%{6G%9k*^cQ!Nkpt04eJ5{yr zG|&#djl;4CSkur0k|`%9jbk$zlwBkw;rlu=UuB){oy=8~W-x-sN($5p?66wH5|2eiUf&5lJL=Ed(-|J_1w7#x*&nCnSa`JH&f2>TUn~tHfSJ|rDex%ZF+fDG5pIS~c-XBzNuC#5@ z;QfII@7r=bu28w^t?JR^x&DUJyOdE$R#=RUvSGxCJj%o)?8AeP-O0xb{y@15t!lZ< z2TZF>Cl`;Ppyvxgo6%nKDC+q&J^v!;De0M@UBQ-ym^#-2mz1UFLMiuNN|O|ve?fT{ zL`R$_m>`%WxJ+=BV48r+xu9|>s3Zxh0fJsPLEBry3mYU1ma^r1Aydi~`7nxlE?2Tr%WGO-NEM4(J`;$AV(O12jSmIxr7+zisH6+I zqM@0l7P_tKnT(d_LuR&|GSaL1OY9#;rE6X?h4YeEzR;PB6f>VHnyUp%(9slZ13sD6 z*R*oVvJ8E>WT6z!%CGeFck#H`W5PY6r!{`Lw_7)~v{f)RPg%5l+Sn{wNWFKePIxzZ zrqc74wt{Q8SvDZC+W_f!n#rfF%pQ^~@Y%*iMfRdp&Q@QQL_#=L)S5ExGP9&{n zDbLTAY{ie8O-_8Azph^>CFD00m&m+4_}AZg009aSForetjART0J9HmL4?S<{UULO#6d2@3(;m64UwL;LD%alZZuzou*PW*9zHu;GvuA!~UwY&; LVi8MNMoan+S!iER literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/__pycache__/tarfile.cpython-37.pyc b/venv/lib/python3.7/__pycache__/tarfile.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..55fabccbbf7483c2c1c696cc8c41f170e3065228 GIT binary patch literal 61857 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 F{4bOv03rYY literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/__pycache__/tempfile.cpython-37.pyc b/venv/lib/python3.7/__pycache__/tempfile.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..259d31b31210b642499e0d6345a91e125aac31ac GIT binary patch literal 22161 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/__pycache__/types.cpython-37.pyc b/venv/lib/python3.7/__pycache__/types.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2a60e6fc4f467d299dedeb463e06230079c48d5c GIT binary patch literal 8992 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/__pycache__/warnings.cpython-37.pyc b/venv/lib/python3.7/__pycache__/warnings.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..af6d74355de97a5eefe8340bd5c3e70494df281a GIT binary patch literal 13956 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 Kg^ArZo&OEjZ%{D+ literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/__pycache__/weakref.cpython-37.pyc b/venv/lib/python3.7/__pycache__/weakref.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..60b8bbd2f46d3c40baba6ba672523d87fb015c49 GIT binary patch literal 19590 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/_bootlocale.py b/venv/lib/python3.7/_bootlocale.py new file mode 120000 index 0000000..e04cb13 --- /dev/null +++ b/venv/lib/python3.7/_bootlocale.py @@ -0,0 +1 @@ +/usr/lib/python3.7/_bootlocale.py \ No newline at end of file diff --git a/venv/lib/python3.7/_collections_abc.py b/venv/lib/python3.7/_collections_abc.py new file mode 120000 index 0000000..e72b399 --- /dev/null +++ b/venv/lib/python3.7/_collections_abc.py @@ -0,0 +1 @@ +/usr/lib/python3.7/_collections_abc.py \ No newline at end of file diff --git a/venv/lib/python3.7/_dummy_thread.py b/venv/lib/python3.7/_dummy_thread.py new file mode 120000 index 0000000..ef6d8b0 --- /dev/null +++ b/venv/lib/python3.7/_dummy_thread.py @@ -0,0 +1 @@ +/usr/lib/python3.7/_dummy_thread.py \ No newline at end of file diff --git a/venv/lib/python3.7/_weakrefset.py b/venv/lib/python3.7/_weakrefset.py new file mode 120000 index 0000000..922c8c5 --- /dev/null +++ b/venv/lib/python3.7/_weakrefset.py @@ -0,0 +1 @@ +/usr/lib/python3.7/_weakrefset.py \ No newline at end of file diff --git a/venv/lib/python3.7/abc.py b/venv/lib/python3.7/abc.py new file mode 120000 index 0000000..f95e00f --- /dev/null +++ b/venv/lib/python3.7/abc.py @@ -0,0 +1 @@ +/usr/lib/python3.7/abc.py \ No newline at end of file diff --git a/venv/lib/python3.7/base64.py b/venv/lib/python3.7/base64.py new file mode 120000 index 0000000..5a53c06 --- /dev/null +++ b/venv/lib/python3.7/base64.py @@ -0,0 +1 @@ +/usr/lib/python3.7/base64.py \ No newline at end of file diff --git a/venv/lib/python3.7/bisect.py b/venv/lib/python3.7/bisect.py new file mode 120000 index 0000000..06caa65 --- /dev/null +++ b/venv/lib/python3.7/bisect.py @@ -0,0 +1 @@ +/usr/lib/python3.7/bisect.py \ No newline at end of file diff --git a/venv/lib/python3.7/codecs.py b/venv/lib/python3.7/codecs.py new file mode 120000 index 0000000..06b4520 --- /dev/null +++ b/venv/lib/python3.7/codecs.py @@ -0,0 +1 @@ +/usr/lib/python3.7/codecs.py \ No newline at end of file diff --git a/venv/lib/python3.7/collections b/venv/lib/python3.7/collections new file mode 120000 index 0000000..9b59f26 --- /dev/null +++ b/venv/lib/python3.7/collections @@ -0,0 +1 @@ +/usr/lib/python3.7/collections \ No newline at end of file diff --git a/venv/lib/python3.7/config-3.7m-x86_64-linux-gnu b/venv/lib/python3.7/config-3.7m-x86_64-linux-gnu new file mode 120000 index 0000000..9e6ede4 --- /dev/null +++ b/venv/lib/python3.7/config-3.7m-x86_64-linux-gnu @@ -0,0 +1 @@ +/usr/lib/python3.7/config-3.7m-x86_64-linux-gnu \ No newline at end of file diff --git a/venv/lib/python3.7/copy.py b/venv/lib/python3.7/copy.py new file mode 120000 index 0000000..3c1771f --- /dev/null +++ b/venv/lib/python3.7/copy.py @@ -0,0 +1 @@ +/usr/lib/python3.7/copy.py \ No newline at end of file diff --git a/venv/lib/python3.7/copyreg.py b/venv/lib/python3.7/copyreg.py new file mode 120000 index 0000000..f1c47ed --- /dev/null +++ b/venv/lib/python3.7/copyreg.py @@ -0,0 +1 @@ +/usr/lib/python3.7/copyreg.py \ No newline at end of file diff --git a/venv/lib/python3.7/distutils/__init__.py b/venv/lib/python3.7/distutils/__init__.py new file mode 100644 index 0000000..59f55f1 --- /dev/null +++ b/venv/lib/python3.7/distutils/__init__.py @@ -0,0 +1,116 @@ +import imp +import os +import sys +import warnings + +# opcode is not a virtualenv module, so we can use it to find the stdlib +# Important! To work on pypy, this must be a module that resides in the +# lib-python/modified-x.y.z directory +import opcode + +dirname = os.path.dirname + +distutils_path = os.path.join(os.path.dirname(opcode.__file__), "distutils") +if os.path.normpath(distutils_path) == os.path.dirname(os.path.normpath(__file__)): + warnings.warn("The virtualenv distutils package at %s appears to be in the same location as the system distutils?") +else: + __path__.insert(0, distutils_path) # noqa: F821 + real_distutils = imp.load_module("_virtualenv_distutils", None, distutils_path, ("", "", imp.PKG_DIRECTORY)) + # Copy the relevant attributes + try: + __revision__ = real_distutils.__revision__ + except AttributeError: + pass + __version__ = real_distutils.__version__ + +from distutils import dist, sysconfig # isort:skip + +try: + basestring +except NameError: + basestring = str + +# patch build_ext (distutils doesn't know how to get the libs directory +# path on windows - it hardcodes the paths around the patched sys.prefix) + +if sys.platform == "win32": + from distutils.command.build_ext import build_ext as old_build_ext + + class build_ext(old_build_ext): + def finalize_options(self): + if self.library_dirs is None: + self.library_dirs = [] + elif isinstance(self.library_dirs, basestring): + self.library_dirs = self.library_dirs.split(os.pathsep) + + self.library_dirs.insert(0, os.path.join(sys.real_prefix, "Libs")) + old_build_ext.finalize_options(self) + + from distutils.command import build_ext as build_ext_module + + build_ext_module.build_ext = build_ext + +# distutils.dist patches: + +old_find_config_files = dist.Distribution.find_config_files + + +def find_config_files(self): + found = old_find_config_files(self) + if os.name == "posix": + user_filename = ".pydistutils.cfg" + else: + user_filename = "pydistutils.cfg" + user_filename = os.path.join(sys.prefix, user_filename) + if os.path.isfile(user_filename): + for item in list(found): + if item.endswith("pydistutils.cfg"): + found.remove(item) + found.append(user_filename) + return found + + +dist.Distribution.find_config_files = find_config_files + +# distutils.sysconfig patches: + +old_get_python_inc = sysconfig.get_python_inc + + +def sysconfig_get_python_inc(plat_specific=0, prefix=None): + if prefix is None: + prefix = sys.real_prefix + return old_get_python_inc(plat_specific, prefix) + + +sysconfig_get_python_inc.__doc__ = old_get_python_inc.__doc__ +sysconfig.get_python_inc = sysconfig_get_python_inc + +old_get_python_lib = sysconfig.get_python_lib + + +def sysconfig_get_python_lib(plat_specific=0, standard_lib=0, prefix=None): + if standard_lib and prefix is None: + prefix = sys.real_prefix + return old_get_python_lib(plat_specific, standard_lib, prefix) + + +sysconfig_get_python_lib.__doc__ = old_get_python_lib.__doc__ +sysconfig.get_python_lib = sysconfig_get_python_lib + +old_get_config_vars = sysconfig.get_config_vars + + +def sysconfig_get_config_vars(*args): + real_vars = old_get_config_vars(*args) + if sys.platform == "win32": + lib_dir = os.path.join(sys.real_prefix, "libs") + if isinstance(real_vars, dict) and "LIBDIR" not in real_vars: + real_vars["LIBDIR"] = lib_dir # asked for all + elif isinstance(real_vars, list) and "LIBDIR" in args: + real_vars = real_vars + [lib_dir] # asked for list + return real_vars + + +sysconfig_get_config_vars.__doc__ = old_get_config_vars.__doc__ +sysconfig.get_config_vars = sysconfig_get_config_vars diff --git a/venv/lib/python3.7/distutils/__pycache__/__init__.cpython-37.pyc b/venv/lib/python3.7/distutils/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e91bf57a6fd3b5e294c1bfcd5884134d257faa92 GIT binary patch literal 2791 zcma)8&2JmW6`$E%E|;I8BuiFoIi?dkHf>h~nnQsia8t*Dkq@Xr8YIo2>0q@plyFI z5}b48oI9dX%`|o6oG)ag*VK@o^Fzm!+MTtOd(Jt_KG*G8M=|I+oM|@eDo=6UP&HN4 zELj=3=bq@DG<7do6|3K|?3%~)+F{fDoiqA<&obwC4AOP64(t5%+IT~3j5oz5XD5Na z&KcHhVa*oS{A<2Ozay?M);Y-yRX=q8#LYvj4$_+m-BH z$Zo^NZGBsA>y4zJ+!61omTJFd;*P#UGxCn!Ox_oF)w=4a?rSdY>AT4X`kqA5oAP}~ z?~4cOnp#mkNC)}>qytC?klu&%p?IWL)f#qutRF%47_!HZJyiU+Y_Rc9irTJisJJMP z$~Y}f_r5vM{o~k_M`5b7e^2-0tY2bX5sq~~ z&7-i4^Q<32N|Pr=smE_N`jyy_Zw`>l11uXj)}x_qU`>=~qj=xeUc}jlKOb=0*gJ|- zCH2cPBBL)p2c3^mifgDeBZvWBfDNwfDi@dZOdX;KXskYJY2p)<;#*WxmH?lJfmz!} zU$ShwPE zjQ5H`N3_#;&xGa#7dC}$#zmYJWtc_UHuu6p7o~|aT(_8{acP~ru=Pn;9u#_FeQ0V^ zT8}2Im*jC~U3kd0j1E&dF?tlgw4EH@S^CKKMsXIV@u`;igrZTvgwaVh1_ z zrU>O?Tt}aqgO_*9V9L+6Fi!(~5F_eEJ>3s73l5J;L0stxfVG zetFu1f0j<$iAMXUD_154ZM#9SgMXBqqaOWK7p4WXtw(M!U|D8XsOr(AzX-Y?7o=*v zl+q^9nJQky0Eut(I6v0br!>tJa)8pq)<*eJrbOomc&g5zy{#7`Kd(5~uKvWFUt))X z9M2HmCifkW_YmeT`c%w4NFoXaebl-rmHW5QnIbWfW8IP^6a;6AnKK8j;=2R4x|CUk znq4DT?CVm_F$a)EpoPvP4NF-}bQF)`$lQYFRfD&doN;COS5Pi|RAjf$4FNSG+vuZq z36pm*m~yi=#rs5jP}%CtZJj!2L?-{kS|kf@L!cCG%5D`JB`NX$e~Y30d#qnr+$M`3 zVjQ7V--X4`F)IFmih%t`b_v*`bQ5n@1E_uCCcwEqk^N{-chMPH6}NRp)Meg?X!OoD|~;+vbaxcheEnh!8p<(sWbsq%;} zb4i5~V?ZhdaJxd1OEEQ%NJR0wgadlI43UrxKAOK5Pbj1XC3%4S#;+DQfwRT?yzR94 omg7|XdnklyC-Lc|I7;Z%)7-;bV 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/DESCRIPTION.rst b/venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/DESCRIPTION.rst new file mode 100644 index 0000000..d0c3bb7 --- /dev/null +++ b/venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/DESCRIPTION.rst @@ -0,0 +1,104 @@ +Beautiful Soup is a library that makes it easy to scrape information +from web pages. It sits atop an HTML or XML parser, providing Pythonic +idioms for iterating, searching, and modifying the parse tree. + +# Quick start + +``` +>>> from bs4 import BeautifulSoup +>>> soup = BeautifulSoup("

SomebadHTML") +>>> print soup.prettify() + + +

+Some + +bad + +HTML + + +

+ + +>>> soup.find(text="bad") +u'bad' +>>> soup.i +HTML +# +>>> soup = BeautifulSoup("SomebadXML", "xml") +# +>>> print soup.prettify() + + +Some + +bad + +XML + + +``` + +To go beyond the basics, [comprehensive documentation is available](http://www.crummy.com/software/BeautifulSoup/bs4/doc/). + +# Links + +* [Homepage](http://www.crummy.com/software/BeautifulSoup/bs4/) +* [Documentation](http://www.crummy.com/software/BeautifulSoup/bs4/doc/) +* [Discussion group](http://groups.google.com/group/beautifulsoup/) +* [Development](https://code.launchpad.net/beautifulsoup/) +* [Bug tracker](https://bugs.launchpad.net/beautifulsoup/) +* [Complete changelog](https://bazaar.launchpad.net/~leonardr/beautifulsoup/bs4/view/head:/CHANGELOG) + +# Note on Python 2 sunsetting + +Since 2012, Beautiful Soup has been developed as a Python 2 library +which is automatically converted to Python 3 code as necessary. This +makes it impossible to take advantages of some features of Python +3. + +For this reason, I plan to discontinue Beautiful Soup's Python 2 +support at some point after January 1, 2021: one year after the sunset +date for Python 2 itself. Beyond that point, new Beautiful Soup +development will exclusively target Python 3. Of course, older +releases of Beautiful Soup, which support both versions, will continue +to be available. + +# Supporting the project + +If you use Beautiful Soup as part of your professional work, please consider a +[Tidelift subscription](https://tidelift.com/subscription/pkg/pypi-beautifulsoup4?utm_source=pypi-beautifulsoup4&utm_medium=referral&utm_campaign=readme). +This will support many of the free software projects your organization +depends on, not just Beautiful Soup. + +If you use Beautiful Soup for personal projects, the best way to say +thank you is to read +[Tool Safety](https://www.crummy.com/software/BeautifulSoup/zine/), a zine I +wrote about what Beautiful Soup has taught me about software +development. + +# Building the documentation + +The bs4/doc/ directory contains full documentation in Sphinx +format. Run `make html` in that directory to create HTML +documentation. + +# Running the unit tests + +Beautiful Soup supports unit test discovery from the project root directory: + +``` +$ nosetests +``` + +``` +$ python -m unittest discover -s bs4 +``` + +If you checked out the source tree, you should see a script in the +home directory called test-all-versions. This script will run the unit +tests under Python 2, then create a temporary Python 3 conversion of +the source and run the unit tests again under Python 3. + + diff --git a/venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/INSTALLER b/venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/METADATA b/venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/METADATA new file mode 100644 index 0000000..7bee053 --- /dev/null +++ b/venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/METADATA @@ -0,0 +1,130 @@ +Metadata-Version: 2.0 +Name: beautifulsoup4 +Version: 4.8.1 +Summary: Screen-scraping library +Home-page: http://www.crummy.com/software/BeautifulSoup/bs4/ +Author: Leonard Richardson +Author-email: leonardr@segfault.org +License: MIT +Download-URL: http://www.crummy.com/software/BeautifulSoup/bs4/download/ +Platform: UNKNOWN +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: MIT License +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Topic :: Text Processing :: Markup :: HTML +Classifier: Topic :: Text Processing :: Markup :: XML +Classifier: Topic :: Text Processing :: Markup :: SGML +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Requires-Dist: soupsieve (>=1.2) +Provides-Extra: html5lib +Requires-Dist: html5lib; extra == 'html5lib' +Provides-Extra: lxml +Requires-Dist: lxml; extra == 'lxml' + +Beautiful Soup is a library that makes it easy to scrape information +from web pages. It sits atop an HTML or XML parser, providing Pythonic +idioms for iterating, searching, and modifying the parse tree. + +# Quick start + +``` +>>> from bs4 import BeautifulSoup +>>> soup = BeautifulSoup("

SomebadHTML") +>>> print soup.prettify() + + +

+Some + +bad + +HTML + + +

+ + +>>> soup.find(text="bad") +u'bad' +>>> soup.i +HTML +# +>>> soup = BeautifulSoup("SomebadXML", "xml") +# +>>> print soup.prettify() + + +Some + +bad + +XML + + +``` + +To go beyond the basics, [comprehensive documentation is available](http://www.crummy.com/software/BeautifulSoup/bs4/doc/). + +# Links + +* [Homepage](http://www.crummy.com/software/BeautifulSoup/bs4/) +* [Documentation](http://www.crummy.com/software/BeautifulSoup/bs4/doc/) +* [Discussion group](http://groups.google.com/group/beautifulsoup/) +* [Development](https://code.launchpad.net/beautifulsoup/) +* [Bug tracker](https://bugs.launchpad.net/beautifulsoup/) +* [Complete changelog](https://bazaar.launchpad.net/~leonardr/beautifulsoup/bs4/view/head:/CHANGELOG) + +# Note on Python 2 sunsetting + +Since 2012, Beautiful Soup has been developed as a Python 2 library +which is automatically converted to Python 3 code as necessary. This +makes it impossible to take advantages of some features of Python +3. + +For this reason, I plan to discontinue Beautiful Soup's Python 2 +support at some point after January 1, 2021: one year after the sunset +date for Python 2 itself. Beyond that point, new Beautiful Soup +development will exclusively target Python 3. Of course, older +releases of Beautiful Soup, which support both versions, will continue +to be available. + +# Supporting the project + +If you use Beautiful Soup as part of your professional work, please consider a +[Tidelift subscription](https://tidelift.com/subscription/pkg/pypi-beautifulsoup4?utm_source=pypi-beautifulsoup4&utm_medium=referral&utm_campaign=readme). +This will support many of the free software projects your organization +depends on, not just Beautiful Soup. + +If you use Beautiful Soup for personal projects, the best way to say +thank you is to read +[Tool Safety](https://www.crummy.com/software/BeautifulSoup/zine/), a zine I +wrote about what Beautiful Soup has taught me about software +development. + +# Building the documentation + +The bs4/doc/ directory contains full documentation in Sphinx +format. Run `make html` in that directory to create HTML +documentation. + +# Running the unit tests + +Beautiful Soup supports unit test discovery from the project root directory: + +``` +$ nosetests +``` + +``` +$ python -m unittest discover -s bs4 +``` + +If you checked out the source tree, you should see a script in the +home directory called test-all-versions. This script will run the unit +tests under Python 2, then create a temporary Python 3 conversion of +the source and run the unit tests again under Python 3. + + diff --git a/venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/RECORD b/venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/RECORD new file mode 100644 index 0000000..cc12602 --- /dev/null +++ b/venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/RECORD @@ -0,0 +1,45 @@ +beautifulsoup4-4.8.1.dist-info/DESCRIPTION.rst,sha256=TUEndO1FnBoCMGIeuX9tkAhKSylXB1t_NUSYxDo6ce4,3010 +beautifulsoup4-4.8.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +beautifulsoup4-4.8.1.dist-info/METADATA,sha256=ZQSTtI3Y6TP3LVrckhEel5QhfhqT8pwwvBuronGBz34,4020 +beautifulsoup4-4.8.1.dist-info/RECORD,, +beautifulsoup4-4.8.1.dist-info/WHEEL,sha256=rNo05PbNqwnXiIHFsYm0m22u4Zm6YJtugFG2THx4w3g,92 +beautifulsoup4-4.8.1.dist-info/metadata.json,sha256=RNf83TEq3M65TUoCk_oElvbCdiLyo_AQuj0f7SNVEGc,1144 +beautifulsoup4-4.8.1.dist-info/top_level.txt,sha256=H8VT-IuPWLzQqwG9_eChjXDJ1z0H9RRebdSR90Bjnkw,4 +bs4/__init__.py,sha256=VF0X3wc9hsmeJiMt630mwChrwIc58DYt4c9vP2ky-w4,25903 +bs4/__pycache__/__init__.cpython-37.pyc,, +bs4/__pycache__/check_block.cpython-37.pyc,, +bs4/__pycache__/dammit.cpython-37.pyc,, +bs4/__pycache__/diagnose.cpython-37.pyc,, +bs4/__pycache__/element.cpython-37.pyc,, +bs4/__pycache__/formatter.cpython-37.pyc,, +bs4/__pycache__/testing.cpython-37.pyc,, +bs4/builder/__init__.py,sha256=e_vTLD3AkgUTjUXkc04b0FZHJBRaVM8SDxvVNMnLXtE,14749 +bs4/builder/__pycache__/__init__.cpython-37.pyc,, +bs4/builder/__pycache__/_html5lib.cpython-37.pyc,, +bs4/builder/__pycache__/_htmlparser.cpython-37.pyc,, +bs4/builder/__pycache__/_lxml.cpython-37.pyc,, +bs4/builder/_html5lib.py,sha256=105ocel2oFeApKaPem5XtjL67kO5rKJxM5_6B2gxBw0,18088 +bs4/builder/_htmlparser.py,sha256=AKpOnUAoPBYi7x0Y1fTb1Uxrxb2EFroWIdCWgwShcF4,13653 +bs4/builder/_lxml.py,sha256=BsJBgIoyIZYY001TSHLtEsJtYD5hCXhldwpUEaYaJkg,11114 +bs4/check_block.py,sha256=ltAO73VRGrGcO0bVPMd0GdTlIg9eVTCGnnZiPbKzFI0,132 +bs4/dammit.py,sha256=VcHa3eSGP6bL3UuCrjMy_auYO7tTH42I-lhNDbrMsy8,31028 +bs4/diagnose.py,sha256=wvGDZf6VNj6rwDjU3xOsz90z2KZiBWgpu-GRqWfR6is,6966 +bs4/element.py,sha256=ebosrK3jVgnZ4Dr7kmrJdfRUu8JkENXKQHwNKPcA2QE,59447 +bs4/formatter.py,sha256=G2AYBRjeX404vLNwIPbjiG8KDjuoCqrgi9NHua6o34M,3199 +bs4/testing.py,sha256=MBsN77WRpB1Z78Y0pV7RlwbMWGfEU1iPySFKE-JJIgc,41306 +bs4/tests/__init__.py,sha256=bdUBDE750n7qNEfue7-3a1fBaUxJlvZMkvJvZa-lbYs,27 +bs4/tests/__pycache__/__init__.cpython-37.pyc,, +bs4/tests/__pycache__/test_builder_registry.cpython-37.pyc,, +bs4/tests/__pycache__/test_docs.cpython-37.pyc,, +bs4/tests/__pycache__/test_html5lib.cpython-37.pyc,, +bs4/tests/__pycache__/test_htmlparser.cpython-37.pyc,, +bs4/tests/__pycache__/test_lxml.cpython-37.pyc,, +bs4/tests/__pycache__/test_soup.cpython-37.pyc,, +bs4/tests/__pycache__/test_tree.cpython-37.pyc,, +bs4/tests/test_builder_registry.py,sha256=pllfRpArh9TYhjjRUiu1wITr9Ryyv4hiaAtRjij-k4E,5582 +bs4/tests/test_docs.py,sha256=FXfz2bGL4Xe0q6duwpmg9hmFiZuU4DVJPNZ0hTb6aH4,1067 +bs4/tests/test_html5lib.py,sha256=R2zNUUbUa3WnSqGGOiARKDWH1TLguogluqQDr10Gick,6493 +bs4/tests/test_htmlparser.py,sha256=N-wPX5jDOy7b8xUv9pHEIEfEFjOitLuD9V1blKcbscM,2354 +bs4/tests/test_lxml.py,sha256=xJr8eDrtHSb_vQw88lYEKyfdM1Hel4-dBaz14vQq78M,4105 +bs4/tests/test_soup.py,sha256=JbjlyIKCmUnVNfEHq3aPjyj-w7WZEgE9cAV-LOx6xwo,27613 +bs4/tests/test_tree.py,sha256=XBRpEOpAEvDhOeSSN857U5OcjdvfqmYT3bDNN8Qbabw,86259 diff --git a/venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/WHEEL b/venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/WHEEL new file mode 100644 index 0000000..bb7f7db --- /dev/null +++ b/venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.29.0) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/metadata.json b/venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/metadata.json new file mode 100644 index 0000000..e9062e8 --- /dev/null +++ b/venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/metadata.json @@ -0,0 +1 @@ +{"classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Topic :: Text Processing :: Markup :: HTML", "Topic :: Text Processing :: Markup :: XML", "Topic :: Text Processing :: Markup :: SGML", "Topic :: Software Development :: Libraries :: Python Modules"], "download_url": "http://www.crummy.com/software/BeautifulSoup/bs4/download/", "extensions": {"python.details": {"contacts": [{"email": "leonardr@segfault.org", "name": "Leonard Richardson", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "http://www.crummy.com/software/BeautifulSoup/bs4/"}}}, "extras": ["html5lib", "lxml"], "generator": "bdist_wheel (0.29.0)", "license": "MIT", "metadata_version": "2.0", "name": "beautifulsoup4", "run_requires": [{"extra": "html5lib", "requires": ["html5lib"]}, {"extra": "lxml", "requires": ["lxml"]}, {"requires": ["soupsieve (>=1.2)"]}], "summary": "Screen-scraping library", "version": "4.8.1"} \ No newline at end of file diff --git a/venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/top_level.txt b/venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/top_level.txt new file mode 100644 index 0000000..1315442 --- /dev/null +++ b/venv/lib/python3.7/site-packages/beautifulsoup4-4.8.1.dist-info/top_level.txt @@ -0,0 +1 @@ +bs4 diff --git a/venv/lib/python3.7/site-packages/bs4/__init__.py b/venv/lib/python3.7/site-packages/bs4/__init__.py new file mode 100644 index 0000000..fcc2745 --- /dev/null +++ b/venv/lib/python3.7/site-packages/bs4/__init__.py @@ -0,0 +1,655 @@ +"""Beautiful Soup +Elixir and Tonic +"The Screen-Scraper's Friend" +http://www.crummy.com/software/BeautifulSoup/ + +Beautiful Soup uses a pluggable XML or HTML parser to parse a +(possibly invalid) document into a tree representation. Beautiful Soup +provides methods and Pythonic idioms that make it easy to navigate, +search, and modify the parse tree. + +Beautiful Soup works with Python 2.7 and up. It works better if lxml +and/or html5lib is installed. + +For more than you ever wanted to know about Beautiful Soup, see the +documentation: +http://www.crummy.com/software/BeautifulSoup/bs4/doc/ + +""" + +__author__ = "Leonard Richardson (leonardr@segfault.org)" +__version__ = "4.8.1" +__copyright__ = "Copyright (c) 2004-2019 Leonard Richardson" +# Use of this source code is governed by the MIT license. +__license__ = "MIT" + +__all__ = ['BeautifulSoup'] + +import os +import re +import sys +import traceback +import warnings + +from .builder import builder_registry, ParserRejectedMarkup +from .dammit import UnicodeDammit +from .element import ( + CData, + Comment, + DEFAULT_OUTPUT_ENCODING, + Declaration, + Doctype, + NavigableString, + PageElement, + ProcessingInstruction, + ResultSet, + SoupStrainer, + Tag, + ) + +# The very first thing we do is give a useful error if someone is +# running this code under Python 3 without converting it. +'You are trying to run the Python 2 version of Beautiful Soup under Python 3. This will not work.'!='You need to convert the code, either by installing it (`python setup.py install`) or by running 2to3 (`2to3 -w bs4`).' + +class BeautifulSoup(Tag): + """ + This class defines the basic interface called by the tree builders. + + These methods will be called by the parser: + reset() + feed(markup) + + The tree builder may call these methods from its feed() implementation: + handle_starttag(name, attrs) # See note about return value + handle_endtag(name) + handle_data(data) # Appends to the current data node + endData(containerClass) # Ends the current data node + + No matter how complicated the underlying parser is, you should be + able to build a tree using 'start tag' events, 'end tag' events, + 'data' events, and "done with data" events. + + If you encounter an empty-element tag (aka a self-closing tag, + like HTML's
tag), call handle_starttag and then + handle_endtag. + """ + ROOT_TAG_NAME = '[document]' + + # If the end-user gives no indication which tree builder they + # want, look for one with these features. + DEFAULT_BUILDER_FEATURES = ['html', 'fast'] + + ASCII_SPACES = '\x20\x0a\x09\x0c\x0d' + + NO_PARSER_SPECIFIED_WARNING = "No parser was explicitly specified, so I'm using the best available %(markup_type)s parser for this system (\"%(parser)s\"). This usually isn't a problem, but if you run this code on another system, or in a different virtual environment, it may use a different parser and behave differently.\n\nThe code that caused this warning is on line %(line_number)s of the file %(filename)s. To get rid of this warning, pass the additional argument 'features=\"%(parser)s\"' to the BeautifulSoup constructor.\n" + + def __init__(self, markup="", features=None, builder=None, + parse_only=None, from_encoding=None, exclude_encodings=None, + element_classes=None, **kwargs): + """Constructor. + + :param markup: A string or a file-like object representing + markup to be parsed. + + :param features: Desirable features of the parser to be used. This + may be the name of a specific parser ("lxml", "lxml-xml", + "html.parser", or "html5lib") or it may be the type of markup + to be used ("html", "html5", "xml"). It's recommended that you + name a specific parser, so that Beautiful Soup gives you the + same results across platforms and virtual environments. + + :param builder: A TreeBuilder subclass to instantiate (or + instance to use) instead of looking one up based on + `features`. You only need to use this if you've implemented a + custom TreeBuilder. + + :param parse_only: A SoupStrainer. Only parts of the document + matching the SoupStrainer will be considered. This is useful + when parsing part of a document that would otherwise be too + large to fit into memory. + + :param from_encoding: A string indicating the encoding of the + document to be parsed. Pass this in if Beautiful Soup is + guessing wrongly about the document's encoding. + + :param exclude_encodings: A list of strings indicating + encodings known to be wrong. Pass this in if you don't know + the document's encoding but you know Beautiful Soup's guess is + wrong. + + :param element_classes: A dictionary mapping BeautifulSoup + classes like Tag and NavigableString to other classes you'd + like to be instantiated instead as the parse tree is + built. This is useful for using subclasses to modify the + default behavior of Tag or NavigableString. + + :param kwargs: For backwards compatibility purposes, the + constructor accepts certain keyword arguments used in + Beautiful Soup 3. None of these arguments do anything in + Beautiful Soup 4; they will result in a warning and then be ignored. + + Apart from this, any keyword arguments passed into the BeautifulSoup + constructor are propagated to the TreeBuilder constructor. This + makes it possible to configure a TreeBuilder beyond saying + which one to use. + + """ + + if 'convertEntities' in kwargs: + del kwargs['convertEntities'] + warnings.warn( + "BS4 does not respect the convertEntities argument to the " + "BeautifulSoup constructor. Entities are always converted " + "to Unicode characters.") + + if 'markupMassage' in kwargs: + del kwargs['markupMassage'] + warnings.warn( + "BS4 does not respect the markupMassage argument to the " + "BeautifulSoup constructor. The tree builder is responsible " + "for any necessary markup massage.") + + if 'smartQuotesTo' in kwargs: + del kwargs['smartQuotesTo'] + warnings.warn( + "BS4 does not respect the smartQuotesTo argument to the " + "BeautifulSoup constructor. Smart quotes are always converted " + "to Unicode characters.") + + if 'selfClosingTags' in kwargs: + del kwargs['selfClosingTags'] + warnings.warn( + "BS4 does not respect the selfClosingTags argument to the " + "BeautifulSoup constructor. The tree builder is responsible " + "for understanding self-closing tags.") + + if 'isHTML' in kwargs: + del kwargs['isHTML'] + warnings.warn( + "BS4 does not respect the isHTML argument to the " + "BeautifulSoup constructor. Suggest you use " + "features='lxml' for HTML and features='lxml-xml' for " + "XML.") + + def deprecated_argument(old_name, new_name): + if old_name in kwargs: + warnings.warn( + 'The "%s" argument to the BeautifulSoup constructor ' + 'has been renamed to "%s."' % (old_name, new_name)) + value = kwargs[old_name] + del kwargs[old_name] + return value + return None + + parse_only = parse_only or deprecated_argument( + "parseOnlyThese", "parse_only") + + from_encoding = from_encoding or deprecated_argument( + "fromEncoding", "from_encoding") + + if from_encoding and isinstance(markup, str): + warnings.warn("You provided Unicode markup but also provided a value for from_encoding. Your from_encoding will be ignored.") + from_encoding = None + + self.element_classes = element_classes or dict() + + # We need this information to track whether or not the builder + # was specified well enough that we can omit the 'you need to + # specify a parser' warning. + original_builder = builder + original_features = features + + if isinstance(builder, type): + # A builder class was passed in; it needs to be instantiated. + builder_class = builder + builder = None + elif builder is None: + if isinstance(features, str): + features = [features] + if features is None or len(features) == 0: + features = self.DEFAULT_BUILDER_FEATURES + builder_class = builder_registry.lookup(*features) + if builder_class is None: + raise FeatureNotFound( + "Couldn't find a tree builder with the features you " + "requested: %s. Do you need to install a parser library?" + % ",".join(features)) + + # At this point either we have a TreeBuilder instance in + # builder, or we have a builder_class that we can instantiate + # with the remaining **kwargs. + if builder is None: + builder = builder_class(**kwargs) + if not original_builder and not ( + original_features == builder.NAME or + original_features in builder.ALTERNATE_NAMES + ): + if builder.is_xml: + markup_type = "XML" + else: + markup_type = "HTML" + + # This code adapted from warnings.py so that we get the same line + # of code as our warnings.warn() call gets, even if the answer is wrong + # (as it may be in a multithreading situation). + caller = None + try: + caller = sys._getframe(1) + except ValueError: + pass + if caller: + globals = caller.f_globals + line_number = caller.f_lineno + else: + globals = sys.__dict__ + line_number= 1 + filename = globals.get('__file__') + if filename: + fnl = filename.lower() + if fnl.endswith((".pyc", ".pyo")): + filename = filename[:-1] + if filename: + # If there is no filename at all, the user is most likely in a REPL, + # and the warning is not necessary. + values = dict( + filename=filename, + line_number=line_number, + parser=builder.NAME, + markup_type=markup_type + ) + warnings.warn(self.NO_PARSER_SPECIFIED_WARNING % values, stacklevel=2) + else: + if kwargs: + warnings.warn("Keyword arguments to the BeautifulSoup constructor will be ignored. These would normally be passed into the TreeBuilder constructor, but a TreeBuilder instance was passed in as `builder`.") + + self.builder = builder + self.is_xml = builder.is_xml + self.known_xml = self.is_xml + self._namespaces = dict() + self.parse_only = parse_only + + self.builder.initialize_soup(self) + + if hasattr(markup, 'read'): # It's a file-type object. + markup = markup.read() + elif len(markup) <= 256 and ( + (isinstance(markup, bytes) and not b'<' in markup) + or (isinstance(markup, str) and not '<' in markup) + ): + # Print out warnings for a couple beginner problems + # involving passing non-markup to Beautiful Soup. + # Beautiful Soup will still parse the input as markup, + # just in case that's what the user really wants. + if (isinstance(markup, str) + and not os.path.supports_unicode_filenames): + possible_filename = markup.encode("utf8") + else: + possible_filename = markup + is_file = False + try: + is_file = os.path.exists(possible_filename) + except Exception as e: + # This is almost certainly a problem involving + # characters not valid in filenames on this + # system. Just let it go. + pass + if is_file: + if isinstance(markup, str): + markup = markup.encode("utf8") + warnings.warn( + '"%s" looks like a filename, not markup. You should' + ' probably open this file and pass the filehandle into' + ' Beautiful Soup.' % markup) + self._check_markup_is_url(markup) + + rejections = [] + success = False + for (self.markup, self.original_encoding, self.declared_html_encoding, + self.contains_replacement_characters) in ( + self.builder.prepare_markup( + markup, from_encoding, exclude_encodings=exclude_encodings)): + self.reset() + try: + self._feed() + success = True + break + except ParserRejectedMarkup as e: + rejections.append(e) + pass + + if not success: + other_exceptions = [str(e) for e in rejections] + raise ParserRejectedMarkup( + "The markup you provided was rejected by the parser. Trying a different parser or a different encoding may help.\n\nOriginal exception(s) from parser:\n " + "\n ".join(other_exceptions) + ) + + # Clear out the markup and remove the builder's circular + # reference to this object. + self.markup = None + self.builder.soup = None + + def __copy__(self): + copy = type(self)( + self.encode('utf-8'), builder=self.builder, from_encoding='utf-8' + ) + + # Although we encoded the tree to UTF-8, that may not have + # been the encoding of the original markup. Set the copy's + # .original_encoding to reflect the original object's + # .original_encoding. + copy.original_encoding = self.original_encoding + return copy + + def __getstate__(self): + # Frequently a tree builder can't be pickled. + d = dict(self.__dict__) + if 'builder' in d and not self.builder.picklable: + d['builder'] = None + return d + + @staticmethod + def _check_markup_is_url(markup): + """ + Check if markup looks like it's actually a url and raise a warning + if so. Markup can be unicode or str (py2) / bytes (py3). + """ + if isinstance(markup, bytes): + space = b' ' + cant_start_with = (b"http:", b"https:") + elif isinstance(markup, str): + space = ' ' + cant_start_with = ("http:", "https:") + else: + return + + if any(markup.startswith(prefix) for prefix in cant_start_with): + if not space in markup: + if isinstance(markup, bytes): + decoded_markup = markup.decode('utf-8', 'replace') + else: + decoded_markup = markup + warnings.warn( + '"%s" looks like a URL. Beautiful Soup is not an' + ' HTTP client. You should probably use an HTTP client like' + ' requests to get the document behind the URL, and feed' + ' that document to Beautiful Soup.' % decoded_markup + ) + + def _feed(self): + # Convert the document to Unicode. + self.builder.reset() + + self.builder.feed(self.markup) + # Close out any unfinished strings and close all the open tags. + self.endData() + while self.currentTag.name != self.ROOT_TAG_NAME: + self.popTag() + + def reset(self): + Tag.__init__(self, self, self.builder, self.ROOT_TAG_NAME) + self.hidden = 1 + self.builder.reset() + self.current_data = [] + self.currentTag = None + self.tagStack = [] + self.preserve_whitespace_tag_stack = [] + self.pushTag(self) + + def new_tag(self, name, namespace=None, nsprefix=None, attrs={}, + sourceline=None, sourcepos=None, **kwattrs): + """Create a new tag associated with this soup.""" + kwattrs.update(attrs) + return self.element_classes.get(Tag, Tag)( + None, self.builder, name, namespace, nsprefix, kwattrs, + sourceline=sourceline, sourcepos=sourcepos + ) + + def new_string(self, s, subclass=None): + """Create a new NavigableString associated with this soup.""" + subclass = subclass or self.element_classes.get( + NavigableString, NavigableString + ) + return subclass(s) + + def insert_before(self, successor): + raise NotImplementedError("BeautifulSoup objects don't support insert_before().") + + def insert_after(self, successor): + raise NotImplementedError("BeautifulSoup objects don't support insert_after().") + + def popTag(self): + tag = self.tagStack.pop() + if self.preserve_whitespace_tag_stack and tag == self.preserve_whitespace_tag_stack[-1]: + self.preserve_whitespace_tag_stack.pop() + #print "Pop", tag.name + if self.tagStack: + self.currentTag = self.tagStack[-1] + return self.currentTag + + def pushTag(self, tag): + #print "Push", tag.name + if self.currentTag is not None: + self.currentTag.contents.append(tag) + self.tagStack.append(tag) + self.currentTag = self.tagStack[-1] + if tag.name in self.builder.preserve_whitespace_tags: + self.preserve_whitespace_tag_stack.append(tag) + + def endData(self, containerClass=None): + + # Default container is NavigableString. + containerClass = containerClass or NavigableString + + # The user may want us to instantiate some alias for the + # container class. + containerClass = self.element_classes.get( + containerClass, containerClass + ) + + if self.current_data: + current_data = ''.join(self.current_data) + # If whitespace is not preserved, and this string contains + # nothing but ASCII spaces, replace it with a single space + # or newline. + if not self.preserve_whitespace_tag_stack: + strippable = True + for i in current_data: + if i not in self.ASCII_SPACES: + strippable = False + break + if strippable: + if '\n' in current_data: + current_data = '\n' + else: + current_data = ' ' + + # Reset the data collector. + self.current_data = [] + + # Should we add this string to the tree at all? + if self.parse_only and len(self.tagStack) <= 1 and \ + (not self.parse_only.text or \ + not self.parse_only.search(current_data)): + return + + o = containerClass(current_data) + self.object_was_parsed(o) + + def object_was_parsed(self, o, parent=None, most_recent_element=None): + """Add an object to the parse tree.""" + if parent is None: + parent = self.currentTag + if most_recent_element is not None: + previous_element = most_recent_element + else: + previous_element = self._most_recent_element + + next_element = previous_sibling = next_sibling = None + if isinstance(o, Tag): + next_element = o.next_element + next_sibling = o.next_sibling + previous_sibling = o.previous_sibling + if previous_element is None: + previous_element = o.previous_element + + fix = parent.next_element is not None + + o.setup(parent, previous_element, next_element, previous_sibling, next_sibling) + + self._most_recent_element = o + parent.contents.append(o) + + # Check if we are inserting into an already parsed node. + if fix: + self._linkage_fixer(parent) + + def _linkage_fixer(self, el): + """Make sure linkage of this fragment is sound.""" + + first = el.contents[0] + child = el.contents[-1] + descendant = child + + if child is first and el.parent is not None: + # Parent should be linked to first child + el.next_element = child + # We are no longer linked to whatever this element is + prev_el = child.previous_element + if prev_el is not None and prev_el is not el: + prev_el.next_element = None + # First child should be linked to the parent, and no previous siblings. + child.previous_element = el + child.previous_sibling = None + + # We have no sibling as we've been appended as the last. + child.next_sibling = None + + # This index is a tag, dig deeper for a "last descendant" + if isinstance(child, Tag) and child.contents: + descendant = child._last_descendant(False) + + # As the final step, link last descendant. It should be linked + # to the parent's next sibling (if found), else walk up the chain + # and find a parent with a sibling. It should have no next sibling. + descendant.next_element = None + descendant.next_sibling = None + target = el + while True: + if target is None: + break + elif target.next_sibling is not None: + descendant.next_element = target.next_sibling + target.next_sibling.previous_element = child + break + target = target.parent + + def _popToTag(self, name, nsprefix=None, inclusivePop=True): + """Pops the tag stack up to and including the most recent + instance of the given tag. If inclusivePop is false, pops the tag + stack up to but *not* including the most recent instqance of + the given tag.""" + #print "Popping to %s" % name + if name == self.ROOT_TAG_NAME: + # The BeautifulSoup object itself can never be popped. + return + + most_recently_popped = None + + stack_size = len(self.tagStack) + for i in range(stack_size - 1, 0, -1): + t = self.tagStack[i] + if (name == t.name and nsprefix == t.prefix): + if inclusivePop: + most_recently_popped = self.popTag() + break + most_recently_popped = self.popTag() + + return most_recently_popped + + def handle_starttag(self, name, namespace, nsprefix, attrs, sourceline=None, + sourcepos=None): + """Push a start tag on to the stack. + + If this method returns None, the tag was rejected by the + SoupStrainer. You should proceed as if the tag had not occurred + in the document. For instance, if this was a self-closing tag, + don't call handle_endtag. + """ + + # print "Start tag %s: %s" % (name, attrs) + self.endData() + + if (self.parse_only and len(self.tagStack) <= 1 + and (self.parse_only.text + or not self.parse_only.search_tag(name, attrs))): + return None + + tag = self.element_classes.get(Tag, Tag)( + self, self.builder, name, namespace, nsprefix, attrs, + self.currentTag, self._most_recent_element, + sourceline=sourceline, sourcepos=sourcepos + ) + if tag is None: + return tag + if self._most_recent_element is not None: + self._most_recent_element.next_element = tag + self._most_recent_element = tag + self.pushTag(tag) + return tag + + def handle_endtag(self, name, nsprefix=None): + #print "End tag: " + name + self.endData() + self._popToTag(name, nsprefix) + + def handle_data(self, data): + self.current_data.append(data) + + def decode(self, pretty_print=False, + eventual_encoding=DEFAULT_OUTPUT_ENCODING, + formatter="minimal"): + """Returns a string or Unicode representation of this document. + To get Unicode, pass None for encoding.""" + + if self.is_xml: + # Print the XML declaration + encoding_part = '' + if eventual_encoding != None: + encoding_part = ' encoding="%s"' % eventual_encoding + prefix = '\n' % encoding_part + else: + prefix = '' + if not pretty_print: + indent_level = None + else: + indent_level = 0 + return prefix + super(BeautifulSoup, self).decode( + indent_level, eventual_encoding, formatter) + +# Alias to make it easier to type import: 'from bs4 import _soup' +_s = BeautifulSoup +_soup = BeautifulSoup + +class BeautifulStoneSoup(BeautifulSoup): + """Deprecated interface to an XML parser.""" + + def __init__(self, *args, **kwargs): + kwargs['features'] = 'xml' + warnings.warn( + 'The BeautifulStoneSoup class is deprecated. Instead of using ' + 'it, pass features="xml" into the BeautifulSoup constructor.') + super(BeautifulStoneSoup, self).__init__(*args, **kwargs) + + +class StopParsing(Exception): + pass + +class FeatureNotFound(ValueError): + pass + + +#By default, act as an HTML pretty-printer. +if __name__ == '__main__': + import sys + soup = BeautifulSoup(sys.stdin) + print(soup.prettify()) diff --git a/venv/lib/python3.7/site-packages/bs4/__pycache__/__init__.cpython-37.pyc b/venv/lib/python3.7/site-packages/bs4/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b3aa55e15b2dc63a15d4d6c1ab471823fc5bb4ee GIT binary patch literal 17778 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 DMZ&IV literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/site-packages/bs4/__pycache__/check_block.cpython-37.pyc b/venv/lib/python3.7/site-packages/bs4/__pycache__/check_block.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6c871b536ce8fa4fe5049cc2e0877856b9b1fb00 GIT binary patch literal 395 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 HEFAbn^w literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/site-packages/bs4/__pycache__/diagnose.cpython-37.pyc b/venv/lib/python3.7/site-packages/bs4/__pycache__/diagnose.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..09e1af2b6c638591302e64bbfebf3a354c1db6a9 GIT binary patch literal 7748 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/site-packages/bs4/__pycache__/formatter.cpython-37.pyc b/venv/lib/python3.7/site-packages/bs4/__pycache__/formatter.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c964988d921c84579163d484f5150035f97a160d GIT binary patch literal 2959 zcmbtWTaOz>7VfHU-#WHu$OUZ{w6xFyYBBM^Do6`EiU^Pdq{OVov(nN6wR*bBPCM;x zZ&i6FV|ld?6N#tr6HxMq#LwV$|3JU;#9!cv@04$|5xgvA)v2n}r%s*v&ZYcOr{gzd?PyI9vn z1M7xedlGWvnrJ>{(jC`D>%duYd~xY1x4ia>*VssPh$H;X+Q-`4=79NNR_ zH*VUU{G3VRW3TWBPT2hkH*rE%UA|M8%$yBo#~S0zWMz@kr*-o%`4C-y2_l_{2`A!$ zMQ-Lq9(qmis4m>7A)B&AmmlFMQGd!JU%;FvPIO6J5tl^!35(jIBf8*p#E#g-*cC5{ z%NTb=3npEyT6aq|NsN(d{@+iePE~d+b&v$wsKm(8SzyXwre$#YP!>TsGt-$dSuujd zG*RFiB|*yN4t(hOet^$P?Rm095ter7mxYscYSwD0u7j{;zmZs{E@$n~j?%w{#{i8wXRi2jluxjQ>F`6YK zS=COGe1_rCX`)8oIcgV2{rvvEnN0Vm+4M$MXp`jmjrj5V#Yrmj{bQLRT86V+m$T{3 z{bPM|f4FvEZ+ccWVI-6hKc)GV1>;KI5Q%W>yG*aJQ8W)Xm zbx^i&K{0#g;`*Lo&uQ%mz!AFh#nR{G_YdInWD=Z|nTTaBC$cbcnwMI}QzeJl;}3$5 z&VrSZdx4VRYRK3P)@`I@wGm#{!2ukze=9&R!tZc#Qdriljj(FM=6+aH9gNi#C_`$+ z`a*71*MHL-bs3wi1}H!Ua;z3b@TqI-Pu49<@)CGJIY!KwIDQ4ICCaTj5UvC1|3P^r zmQpBDb64FWd>0D}B<(NQ0Od{aoK5(@IdcqQ%+I+xSg^4tTm+t-jcbsvKdRG;!tNPD z@i}IpH~-t;Rhde?N?giMAZ3C=N}+8A7ecC087$EWE~3->iNO-js$wrh+1EZj# zA2uuyRb%B3^#=%6ex_|)7OAZ2@HSLdUXe`X5=Pg;Sn)zz@fWf4H%H62p-of7JDiYf zBT9YNn4(Z16PgNGydE;Cx@~5-k~fNd=ex90{ksF zZf%|p9+s!_1fR~zS#X*ZriY?Z*QGL2R5g;*RV_1eqE|PlT&Q^Q2L4vz!3E9oaXH~{?{zYS6>=&EXp*Fqb_P)eE0Li2e*%o?i>!H z9b56XjLIX1YC(79i7YjW9HuT2v8nem&Bz<-H6ni|LNRfHP|hiGICcF;kY>%}9$R+K zcHL&vVScySX?j*Jg~+DSCTcnWS-+)tL*1{PA)~B&(u};XQSqZ1)v{&H-gr2r+@Q8T ze+P4GgK-SX<2gs|cgF6JE!ekw!N0NI?W5G!^lU1Xq99lHk|Ac{Dmy%sdtKFS+1E(D zR*WK|KSj&GGl5NDs#@zoKNVP{c{)LEzkwR$&qq;%d z9x+x|v5~U@?=yT^gLmzsF~5zSdWTfngWjdtCKT5vSmk8RJyN~_i#QOm?*=jZNX^Y7 zQq}06$a_&^f@for~ISJb`0#orp6R$CLd jp;I*vmWg|d!dFvLwfXL?-TH0=>B2eO+XbcBdZhU;1CzG1 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/site-packages/bs4/__pycache__/testing.cpython-37.pyc b/venv/lib/python3.7/site-packages/bs4/__pycache__/testing.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a023f54c4a0a782393784401d1351c57b84247b3 GIT binary patch literal 42071 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

Nnt+zvITFguM=u;NfR#iVu{p*Gyw^=h;T*FRMj z@fhHX0;}$a9 z&f_2USn;Xd&=u%N!Y6d=NrKQ{w%e;Sk-+jdc~(VYEScV~^M;rnMnrvG>+92ck=f|R z^{|D5>37T01<0DREFJ z*;6PsoDyv?8Rd&USAg6a8b#JgFwZ@Ok%?~bs>N1_9Z;U07z(Y;Mv5IqZ`X1t?g)7m zn~0k^h^UI#p4&MOTYq9WYyK%!K9hlvf%peiK2-)o#0OCF3kYlOUhxSOYBxW7bY^zy z=o3>%XXj^+o;r5y)bZJZ(QL1nU0zeF)r#z8h=vf8MUORf*_!tBD$wju%gWmF){sKSsx@_TCtq!I(k@gv z*E@RBkOym%Y{aiWkI?&FITpo&k8L>gxq~}T24OH}o44@yD2o+r7JwB*T-(WWZqA`M zgJZ6@*h{u9!p)UFHMEb2gV}Wb77BcaH7A|KMW104)_5Ja53_H0BLPI0L6@Ma^)7*%e>It zS^(j#Iu$NfZR&4;) zz$f0OvA_;?>TIwjaCT;zj;)Zn`smEj6GyQNLSVpVg#Q}Dvuwe0kA`P{nqsZtd6m%8 zAq8UDA8vLYT*tQ$CtsG0YDnGiD;AeS-_pX43p3VJJQ{b~GdVwrGNY&wHJ0Grien*U2`kv&nbMFbC+>y!=!d zFXTn`kzh*yqgiHj@P+BXU9P|Bz>l9v4Y_R4sr=ZtfC2cd1MY`DiN-4j_xXV|Dbq=c z-yOloaa7yG*2rGHGLir*f1Ni5#RzFil<%r7+~n^4i zR&Q8s7W8yy60gqV=YIzSjJ;pN3pR=?mblihv7^KWi6wq?C|ZR>iTCz}66@gMf6mwb z8k0pP3rzk6liy$>!MVT1v)^X&J52s1liy|Xub6z3$?q}wH%u5@yMFlXuj1)LZ2tsK z(lLa_CgtBaf@jBZmcl=V%Z`})d(&GymMPM2)E}IHuJ&^nk6M{S3oCF(`z!JuA_y@`(b83NOhnhW5jF^0hU;)!@hT zeEE*^iD`>5R7Uta&n9x5gjGl91f>US7XtQQAY9nDNL(*?8rU=)X1Y-XmSq+hzF&61 z3CC9si2Hz2giRI>7&$Q{{B(D*>fx1NM8%y^OML;y>`KoA1!pdiAOT~2AXg38;=jzk zheSd7+U=13uUC&91OmVU;S+0sfIS4bf;oy0423r*)Ytg3yp2u3z5;u4*kLQ5D_1;h zYsaOqyd1VMm*Ib!;l+{L`?qL7A*E{o6h*)6LW)oO`JGC_3MO|usRd50X0MR zr5ggVb*lPK0PLf(omxJpcT+oo-PB}THNC4^{$4gg>w#c`o3UvSCZ(o(gP`7mN^j&g z2#CKk0EqH|ks&}_zcvd;)Y?_TFRwv7BAwRP_zm=C!Y(9CGUAB$bYKkfCC&bRxQ9(y zyWhIPnxA9CC-NYE!>k_E+x*L?)Z2%j!i>Ao$BFgkacMmGhYdF$~Zs!)9$+;eM;bc+7Z|!7(&!iG`*x<-p@;z=s9%>?6*BRlLWuRLB z5nCv2iMAi~uT>h)FHYz1Q5}5cGe2$e*p~(~6j_kZYQ7Zl(qF#5=7s)$Px~4zuz91dnmh%1-xh5a-II^8BMeNd7c5B#Zt?0>05Q?6i(M5dc zvRSWJ{X!bM3t$&rEN?(Hh@M;Uk4rFUVGGWtjZMU(!0idDkMNAzpWdX6Tvul`AIbH$ z@Yz--BEb<$I;r}?RqoDyl(#9r2(Cy=Lj!1Wtdq{I)Kv@L=H>{>I)_9Yh=$-${^L&2 c&gghFaX1m*_4&yD9iNZrf6w9Up&f_*H!B~UY5)KL literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/site-packages/bs4/builder/__init__.py b/venv/lib/python3.7/site-packages/bs4/builder/__init__.py new file mode 100644 index 0000000..03a4c1e --- /dev/null +++ b/venv/lib/python3.7/site-packages/bs4/builder/__init__.py @@ -0,0 +1,392 @@ +# Use of this source code is governed by the MIT license. +__license__ = "MIT" + +from collections import defaultdict +import itertools +import sys +from bs4.element import ( + CharsetMetaAttributeValue, + ContentMetaAttributeValue, + nonwhitespace_re + ) + +__all__ = [ + 'HTMLTreeBuilder', + 'SAXTreeBuilder', + 'TreeBuilder', + 'TreeBuilderRegistry', + ] + +# Some useful features for a TreeBuilder to have. +FAST = 'fast' +PERMISSIVE = 'permissive' +STRICT = 'strict' +XML = 'xml' +HTML = 'html' +HTML_5 = 'html5' + + +class TreeBuilderRegistry(object): + + def __init__(self): + self.builders_for_feature = defaultdict(list) + self.builders = [] + + def register(self, treebuilder_class): + """Register a treebuilder based on its advertised features.""" + for feature in treebuilder_class.features: + self.builders_for_feature[feature].insert(0, treebuilder_class) + self.builders.insert(0, treebuilder_class) + + def lookup(self, *features): + if len(self.builders) == 0: + # There are no builders at all. + return None + + if len(features) == 0: + # They didn't ask for any features. Give them the most + # recently registered builder. + return self.builders[0] + + # Go down the list of features in order, and eliminate any builders + # that don't match every feature. + features = list(features) + features.reverse() + candidates = None + candidate_set = None + while len(features) > 0: + feature = features.pop() + we_have_the_feature = self.builders_for_feature.get(feature, []) + if len(we_have_the_feature) > 0: + if candidates is None: + candidates = we_have_the_feature + candidate_set = set(candidates) + else: + # Eliminate any candidates that don't have this feature. + candidate_set = candidate_set.intersection( + set(we_have_the_feature)) + + # The only valid candidates are the ones in candidate_set. + # Go through the original list of candidates and pick the first one + # that's in candidate_set. + if candidate_set is None: + return None + for candidate in candidates: + if candidate in candidate_set: + return candidate + return None + +# The BeautifulSoup class will take feature lists from developers and use them +# to look up builders in this registry. +builder_registry = TreeBuilderRegistry() + +class TreeBuilder(object): + """Turn a document into a Beautiful Soup object tree.""" + + NAME = "[Unknown tree builder]" + ALTERNATE_NAMES = [] + features = [] + + is_xml = False + picklable = False + empty_element_tags = None # A tag will be considered an empty-element + # tag when and only when it has no contents. + + # A value for these tag/attribute combinations is a space- or + # comma-separated list of CDATA, rather than a single CDATA. + DEFAULT_CDATA_LIST_ATTRIBUTES = {} + + DEFAULT_PRESERVE_WHITESPACE_TAGS = set() + + USE_DEFAULT = object() + + # Most parsers don't keep track of line numbers. + TRACKS_LINE_NUMBERS = False + + def __init__(self, multi_valued_attributes=USE_DEFAULT, + preserve_whitespace_tags=USE_DEFAULT, + store_line_numbers=USE_DEFAULT): + """Constructor. + + :param multi_valued_attributes: If this is set to None, the + TreeBuilder will not turn any values for attributes like + 'class' into lists. Setting this do a dictionary will + customize this behavior; look at DEFAULT_CDATA_LIST_ATTRIBUTES + for an example. + + Internally, these are called "CDATA list attributes", but that + probably doesn't make sense to an end-user, so the argument name + is `multi_valued_attributes`. + + :param preserve_whitespace_tags: A list of tags to treat + the way

 tags are treated in HTML. Tags in this list
+        will have 
+
+        :param store_line_numbers: If the parser keeps track of the
+        line numbers and positions of the original markup, that
+        information will, by default, be stored in each corresponding
+        `Tag` object. You can turn this off by passing
+        store_line_numbers=False. If the parser you're using doesn't 
+        keep track of this information, then setting store_line_numbers=True
+        will do nothing.
+        """
+        self.soup = None
+        if multi_valued_attributes is self.USE_DEFAULT:
+            multi_valued_attributes = self.DEFAULT_CDATA_LIST_ATTRIBUTES
+        self.cdata_list_attributes = multi_valued_attributes
+        if preserve_whitespace_tags is self.USE_DEFAULT:
+            preserve_whitespace_tags = self.DEFAULT_PRESERVE_WHITESPACE_TAGS
+        self.preserve_whitespace_tags = preserve_whitespace_tags
+        if store_line_numbers == self.USE_DEFAULT:
+            store_line_numbers = self.TRACKS_LINE_NUMBERS
+        self.store_line_numbers = store_line_numbers
+        
+    def initialize_soup(self, soup):
+        """The BeautifulSoup object has been initialized and is now
+        being associated with the TreeBuilder.
+        """
+        self.soup = soup
+        
+    def reset(self):
+        pass
+
+    def can_be_empty_element(self, tag_name):
+        """Might a tag with this name be an empty-element tag?
+
+        The final markup may or may not actually present this tag as
+        self-closing.
+
+        For instance: an HTMLBuilder does not consider a 

tag to be + an empty-element tag (it's not in + HTMLBuilder.empty_element_tags). This means an empty

tag + will be presented as "

", not "

". + + The default implementation has no opinion about which tags are + empty-element tags, so a tag will be presented as an + empty-element tag if and only if it has no contents. + "" will become "", and "bar" will + be left alone. + """ + if self.empty_element_tags is None: + return True + return tag_name in self.empty_element_tags + + def feed(self, markup): + raise NotImplementedError() + + def prepare_markup(self, markup, user_specified_encoding=None, + document_declared_encoding=None, exclude_encodings=None): + yield markup, None, None, False + + def test_fragment_to_document(self, fragment): + """Wrap an HTML fragment to make it look like a document. + + Different parsers do this differently. For instance, lxml + introduces an empty tag, and html5lib + doesn't. Abstracting this away lets us write simple tests + which run HTML fragments through the parser and compare the + results against other HTML fragments. + + This method should not be used outside of tests. + """ + return fragment + + def set_up_substitutions(self, tag): + return False + + def _replace_cdata_list_attribute_values(self, tag_name, attrs): + """Replaces class="foo bar" with class=["foo", "bar"] + + Modifies its input in place. + """ + if not attrs: + return attrs + if self.cdata_list_attributes: + universal = self.cdata_list_attributes.get('*', []) + tag_specific = self.cdata_list_attributes.get( + tag_name.lower(), None) + for attr in list(attrs.keys()): + if attr in universal or (tag_specific and attr in tag_specific): + # We have a "class"-type attribute whose string + # value is a whitespace-separated list of + # values. Split it into a list. + value = attrs[attr] + if isinstance(value, str): + values = nonwhitespace_re.findall(value) + else: + # html5lib sometimes calls setAttributes twice + # for the same tag when rearranging the parse + # tree. On the second call the attribute value + # here is already a list. If this happens, + # leave the value alone rather than trying to + # split it again. + values = value + attrs[attr] = values + return attrs + +class SAXTreeBuilder(TreeBuilder): + """A Beautiful Soup treebuilder that listens for SAX events.""" + + def feed(self, markup): + raise NotImplementedError() + + def close(self): + pass + + def startElement(self, name, attrs): + attrs = dict((key[1], value) for key, value in list(attrs.items())) + #print "Start %s, %r" % (name, attrs) + self.soup.handle_starttag(name, attrs) + + def endElement(self, name): + #print "End %s" % name + self.soup.handle_endtag(name) + + def startElementNS(self, nsTuple, nodeName, attrs): + # Throw away (ns, nodeName) for now. + self.startElement(nodeName, attrs) + + def endElementNS(self, nsTuple, nodeName): + # Throw away (ns, nodeName) for now. + self.endElement(nodeName) + #handler.endElementNS((ns, node.nodeName), node.nodeName) + + def startPrefixMapping(self, prefix, nodeValue): + # Ignore the prefix for now. + pass + + def endPrefixMapping(self, prefix): + # Ignore the prefix for now. + # handler.endPrefixMapping(prefix) + pass + + def characters(self, content): + self.soup.handle_data(content) + + def startDocument(self): + pass + + def endDocument(self): + pass + + +class HTMLTreeBuilder(TreeBuilder): + """This TreeBuilder knows facts about HTML. + + Such as which tags are empty-element tags. + """ + + empty_element_tags = set([ + # These are from HTML5. + 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'menuitem', 'meta', 'param', 'source', 'track', 'wbr', + + # These are from earlier versions of HTML and are removed in HTML5. + 'basefont', 'bgsound', 'command', 'frame', 'image', 'isindex', 'nextid', 'spacer' + ]) + + # The HTML standard defines these as block-level elements. Beautiful + # Soup does not treat these elements differently from other elements, + # but it may do so eventually, and this information is available if + # you need to use it. + block_elements = set(["address", "article", "aside", "blockquote", "canvas", "dd", "div", "dl", "dt", "fieldset", "figcaption", "figure", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "header", "hr", "li", "main", "nav", "noscript", "ol", "output", "p", "pre", "section", "table", "tfoot", "ul", "video"]) + + # The HTML standard defines these attributes as containing a + # space-separated list of values, not a single value. That is, + # class="foo bar" means that the 'class' attribute has two values, + # 'foo' and 'bar', not the single value 'foo bar'. When we + # encounter one of these attributes, we will parse its value into + # a list of values if possible. Upon output, the list will be + # converted back into a string. + DEFAULT_CDATA_LIST_ATTRIBUTES = { + "*" : ['class', 'accesskey', 'dropzone'], + "a" : ['rel', 'rev'], + "link" : ['rel', 'rev'], + "td" : ["headers"], + "th" : ["headers"], + "td" : ["headers"], + "form" : ["accept-charset"], + "object" : ["archive"], + + # These are HTML5 specific, as are *.accesskey and *.dropzone above. + "area" : ["rel"], + "icon" : ["sizes"], + "iframe" : ["sandbox"], + "output" : ["for"], + } + + DEFAULT_PRESERVE_WHITESPACE_TAGS = set(['pre', 'textarea']) + + def set_up_substitutions(self, tag): + # We are only interested in tags + if tag.name != 'meta': + return False + + http_equiv = tag.get('http-equiv') + content = tag.get('content') + charset = tag.get('charset') + + # We are interested in tags that say what encoding the + # document was originally in. This means HTML 5-style + # tags that provide the "charset" attribute. It also means + # HTML 4-style tags that provide the "content" + # attribute and have "http-equiv" set to "content-type". + # + # In both cases we will replace the value of the appropriate + # attribute with a standin object that can take on any + # encoding. + meta_encoding = None + if charset is not None: + # HTML 5 style: + # + meta_encoding = charset + tag['charset'] = CharsetMetaAttributeValue(charset) + + elif (content is not None and http_equiv is not None + and http_equiv.lower() == 'content-type'): + # HTML 4 style: + # + tag['content'] = ContentMetaAttributeValue(content) + + return (meta_encoding is not None) + +def register_treebuilders_from(module): + """Copy TreeBuilders from the given module into this module.""" + # I'm fairly sure this is not the best way to do this. + this_module = sys.modules['bs4.builder'] + for name in module.__all__: + obj = getattr(module, name) + + if issubclass(obj, TreeBuilder): + setattr(this_module, name, obj) + this_module.__all__.append(name) + # Register the builder while we're at it. + this_module.builder_registry.register(obj) + +class ParserRejectedMarkup(Exception): + def __init__(self, message_or_exception): + """Explain why the parser rejected the given markup, either + with a textual explanation or another exception. + """ + if isinstance(message_or_exception, Exception): + e = message_or_exception + message_or_exception = "%s: %s" % (e.__class__.__name__, str(e)) + super(ParserRejectedMarkup, self).__init__(message_or_exception) + +# Builders are registered in reverse order of priority, so that custom +# builder registrations will take precedence. In general, we want lxml +# to take precedence over html5lib, because it's faster. And we only +# want to use HTMLParser as a last result. +from . import _htmlparser +register_treebuilders_from(_htmlparser) +try: + from . import _html5lib + register_treebuilders_from(_html5lib) +except ImportError: + # They don't have html5lib installed. + pass +try: + from . import _lxml + register_treebuilders_from(_lxml) +except ImportError: + # They don't have lxml installed. + pass diff --git a/venv/lib/python3.7/site-packages/bs4/builder/__pycache__/__init__.cpython-37.pyc b/venv/lib/python3.7/site-packages/bs4/builder/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6d6564efd1c02ebffd05d1b989e486c2e14e083b GIT binary patch literal 11109 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/site-packages/bs4/builder/_html5lib.py b/venv/lib/python3.7/site-packages/bs4/builder/_html5lib.py new file mode 100644 index 0000000..4319918 --- /dev/null +++ b/venv/lib/python3.7/site-packages/bs4/builder/_html5lib.py @@ -0,0 +1,455 @@ +# Use of this source code is governed by the MIT license. +__license__ = "MIT" + +__all__ = [ + 'HTML5TreeBuilder', + ] + +import warnings +import re +from bs4.builder import ( + PERMISSIVE, + HTML, + HTML_5, + HTMLTreeBuilder, + ) +from bs4.element import ( + NamespacedAttribute, + nonwhitespace_re, +) +import html5lib +from html5lib.constants import ( + namespaces, + prefixes, + ) +from bs4.element import ( + Comment, + Doctype, + NavigableString, + Tag, + ) + +try: + # Pre-0.99999999 + from html5lib.treebuilders import _base as treebuilder_base + new_html5lib = False +except ImportError as e: + # 0.99999999 and up + from html5lib.treebuilders import base as treebuilder_base + new_html5lib = True + +class HTML5TreeBuilder(HTMLTreeBuilder): + """Use html5lib to build a tree.""" + + NAME = "html5lib" + + features = [NAME, PERMISSIVE, HTML_5, HTML] + + # html5lib can tell us which line number and position in the + # original file is the source of an element. + TRACKS_LINE_NUMBERS = True + + def prepare_markup(self, markup, user_specified_encoding, + document_declared_encoding=None, exclude_encodings=None): + # Store the user-specified encoding for use later on. + self.user_specified_encoding = user_specified_encoding + + # document_declared_encoding and exclude_encodings aren't used + # ATM because the html5lib TreeBuilder doesn't use + # UnicodeDammit. + if exclude_encodings: + warnings.warn("You provided a value for exclude_encoding, but the html5lib tree builder doesn't support exclude_encoding.") + yield (markup, None, None, False) + + # These methods are defined by Beautiful Soup. + def feed(self, markup): + if self.soup.parse_only is not None: + warnings.warn("You provided a value for parse_only, but the html5lib tree builder doesn't support parse_only. The entire document will be parsed.") + parser = html5lib.HTMLParser(tree=self.create_treebuilder) + self.underlying_builder.parser = parser + extra_kwargs = dict() + if not isinstance(markup, str): + if new_html5lib: + extra_kwargs['override_encoding'] = self.user_specified_encoding + else: + extra_kwargs['encoding'] = self.user_specified_encoding + doc = parser.parse(markup, **extra_kwargs) + + # Set the character encoding detected by the tokenizer. + if isinstance(markup, str): + # We need to special-case this because html5lib sets + # charEncoding to UTF-8 if it gets Unicode input. + doc.original_encoding = None + else: + original_encoding = parser.tokenizer.stream.charEncoding[0] + if not isinstance(original_encoding, str): + # In 0.99999999 and up, the encoding is an html5lib + # Encoding object. We want to use a string for compatibility + # with other tree builders. + original_encoding = original_encoding.name + doc.original_encoding = original_encoding + self.underlying_builder.parser = None + + def create_treebuilder(self, namespaceHTMLElements): + self.underlying_builder = TreeBuilderForHtml5lib( + namespaceHTMLElements, self.soup, + store_line_numbers=self.store_line_numbers + ) + return self.underlying_builder + + def test_fragment_to_document(self, fragment): + """See `TreeBuilder`.""" + return '%s' % fragment + + +class TreeBuilderForHtml5lib(treebuilder_base.TreeBuilder): + + def __init__(self, namespaceHTMLElements, soup=None, + store_line_numbers=True, **kwargs): + if soup: + self.soup = soup + else: + from bs4 import BeautifulSoup + # TODO: Why is the parser 'html.parser' here? To avoid an + # infinite loop? + self.soup = BeautifulSoup( + "", "html.parser", store_line_numbers=store_line_numbers, + **kwargs + ) + super(TreeBuilderForHtml5lib, self).__init__(namespaceHTMLElements) + + # This will be set later to an html5lib.html5parser.HTMLParser + # object, which we can use to track the current line number. + self.parser = None + self.store_line_numbers = store_line_numbers + + def documentClass(self): + self.soup.reset() + return Element(self.soup, self.soup, None) + + def insertDoctype(self, token): + name = token["name"] + publicId = token["publicId"] + systemId = token["systemId"] + + doctype = Doctype.for_name_and_ids(name, publicId, systemId) + self.soup.object_was_parsed(doctype) + + def elementClass(self, name, namespace): + kwargs = {} + if self.parser and self.store_line_numbers: + # This represents the point immediately after the end of the + # tag. We don't know when the tag started, but we do know + # where it ended -- the character just before this one. + sourceline, sourcepos = self.parser.tokenizer.stream.position() + kwargs['sourceline'] = sourceline + kwargs['sourcepos'] = sourcepos-1 + tag = self.soup.new_tag(name, namespace, **kwargs) + + return Element(tag, self.soup, namespace) + + def commentClass(self, data): + return TextNode(Comment(data), self.soup) + + def fragmentClass(self): + from bs4 import BeautifulSoup + # TODO: Why is the parser 'html.parser' here? To avoid an + # infinite loop? + self.soup = BeautifulSoup("", "html.parser") + self.soup.name = "[document_fragment]" + return Element(self.soup, self.soup, None) + + def appendChild(self, node): + # XXX This code is not covered by the BS4 tests. + self.soup.append(node.element) + + def getDocument(self): + return self.soup + + def getFragment(self): + return treebuilder_base.TreeBuilder.getFragment(self).element + + def testSerializer(self, element): + from bs4 import BeautifulSoup + rv = [] + doctype_re = re.compile(r'^(.*?)(?: PUBLIC "(.*?)"(?: "(.*?)")?| SYSTEM "(.*?)")?$') + + def serializeElement(element, indent=0): + if isinstance(element, BeautifulSoup): + pass + if isinstance(element, Doctype): + m = doctype_re.match(element) + if m: + name = m.group(1) + if m.lastindex > 1: + publicId = m.group(2) or "" + systemId = m.group(3) or m.group(4) or "" + rv.append("""|%s""" % + (' ' * indent, name, publicId, systemId)) + else: + rv.append("|%s" % (' ' * indent, name)) + else: + rv.append("|%s" % (' ' * indent,)) + elif isinstance(element, Comment): + rv.append("|%s" % (' ' * indent, element)) + elif isinstance(element, NavigableString): + rv.append("|%s\"%s\"" % (' ' * indent, element)) + else: + if element.namespace: + name = "%s %s" % (prefixes[element.namespace], + element.name) + else: + name = element.name + rv.append("|%s<%s>" % (' ' * indent, name)) + if element.attrs: + attributes = [] + for name, value in list(element.attrs.items()): + if isinstance(name, NamespacedAttribute): + name = "%s %s" % (prefixes[name.namespace], name.name) + if isinstance(value, list): + value = " ".join(value) + attributes.append((name, value)) + + for name, value in sorted(attributes): + rv.append('|%s%s="%s"' % (' ' * (indent + 2), name, value)) + indent += 2 + for child in element.children: + serializeElement(child, indent) + serializeElement(element, 0) + + return "\n".join(rv) + +class AttrList(object): + def __init__(self, element): + self.element = element + self.attrs = dict(self.element.attrs) + def __iter__(self): + return list(self.attrs.items()).__iter__() + def __setitem__(self, name, value): + # If this attribute is a multi-valued attribute for this element, + # turn its value into a list. + list_attr = self.element.cdata_list_attributes + if (name in list_attr['*'] + or (self.element.name in list_attr + and name in list_attr[self.element.name])): + # A node that is being cloned may have already undergone + # this procedure. + if not isinstance(value, list): + value = nonwhitespace_re.findall(value) + self.element[name] = value + def items(self): + return list(self.attrs.items()) + def keys(self): + return list(self.attrs.keys()) + def __len__(self): + return len(self.attrs) + def __getitem__(self, name): + return self.attrs[name] + def __contains__(self, name): + return name in list(self.attrs.keys()) + + +class Element(treebuilder_base.Node): + def __init__(self, element, soup, namespace): + treebuilder_base.Node.__init__(self, element.name) + self.element = element + self.soup = soup + self.namespace = namespace + + def appendChild(self, node): + string_child = child = None + if isinstance(node, str): + # Some other piece of code decided to pass in a string + # instead of creating a TextElement object to contain the + # string. + string_child = child = node + elif isinstance(node, Tag): + # Some other piece of code decided to pass in a Tag + # instead of creating an Element object to contain the + # Tag. + child = node + elif node.element.__class__ == NavigableString: + string_child = child = node.element + node.parent = self + else: + child = node.element + node.parent = self + + if not isinstance(child, str) and child.parent is not None: + node.element.extract() + + if (string_child is not None and self.element.contents + and self.element.contents[-1].__class__ == NavigableString): + # We are appending a string onto another string. + # TODO This has O(n^2) performance, for input like + # "aaa..." + old_element = self.element.contents[-1] + new_element = self.soup.new_string(old_element + string_child) + old_element.replace_with(new_element) + self.soup._most_recent_element = new_element + else: + if isinstance(node, str): + # Create a brand new NavigableString from this string. + child = self.soup.new_string(node) + + # Tell Beautiful Soup to act as if it parsed this element + # immediately after the parent's last descendant. (Or + # immediately after the parent, if it has no children.) + if self.element.contents: + most_recent_element = self.element._last_descendant(False) + elif self.element.next_element is not None: + # Something from further ahead in the parse tree is + # being inserted into this earlier element. This is + # very annoying because it means an expensive search + # for the last element in the tree. + most_recent_element = self.soup._last_descendant() + else: + most_recent_element = self.element + + self.soup.object_was_parsed( + child, parent=self.element, + most_recent_element=most_recent_element) + + def getAttributes(self): + if isinstance(self.element, Comment): + return {} + return AttrList(self.element) + + def setAttributes(self, attributes): + + if attributes is not None and len(attributes) > 0: + + converted_attributes = [] + for name, value in list(attributes.items()): + if isinstance(name, tuple): + new_name = NamespacedAttribute(*name) + del attributes[name] + attributes[new_name] = value + + self.soup.builder._replace_cdata_list_attribute_values( + self.name, attributes) + for name, value in list(attributes.items()): + self.element[name] = value + + # The attributes may contain variables that need substitution. + # Call set_up_substitutions manually. + # + # The Tag constructor called this method when the Tag was created, + # but we just set/changed the attributes, so call it again. + self.soup.builder.set_up_substitutions(self.element) + attributes = property(getAttributes, setAttributes) + + def insertText(self, data, insertBefore=None): + text = TextNode(self.soup.new_string(data), self.soup) + if insertBefore: + self.insertBefore(text, insertBefore) + else: + self.appendChild(text) + + def insertBefore(self, node, refNode): + index = self.element.index(refNode.element) + if (node.element.__class__ == NavigableString and self.element.contents + and self.element.contents[index-1].__class__ == NavigableString): + # (See comments in appendChild) + old_node = self.element.contents[index-1] + new_str = self.soup.new_string(old_node + node.element) + old_node.replace_with(new_str) + else: + self.element.insert(index, node.element) + node.parent = self + + def removeChild(self, node): + node.element.extract() + + def reparentChildren(self, new_parent): + """Move all of this tag's children into another tag.""" + # print "MOVE", self.element.contents + # print "FROM", self.element + # print "TO", new_parent.element + + element = self.element + new_parent_element = new_parent.element + # Determine what this tag's next_element will be once all the children + # are removed. + final_next_element = element.next_sibling + + new_parents_last_descendant = new_parent_element._last_descendant(False, False) + if len(new_parent_element.contents) > 0: + # The new parent already contains children. We will be + # appending this tag's children to the end. + new_parents_last_child = new_parent_element.contents[-1] + new_parents_last_descendant_next_element = new_parents_last_descendant.next_element + else: + # The new parent contains no children. + new_parents_last_child = None + new_parents_last_descendant_next_element = new_parent_element.next_element + + to_append = element.contents + if len(to_append) > 0: + # Set the first child's previous_element and previous_sibling + # to elements within the new parent + first_child = to_append[0] + if new_parents_last_descendant is not None: + first_child.previous_element = new_parents_last_descendant + else: + first_child.previous_element = new_parent_element + first_child.previous_sibling = new_parents_last_child + if new_parents_last_descendant is not None: + new_parents_last_descendant.next_element = first_child + else: + new_parent_element.next_element = first_child + if new_parents_last_child is not None: + new_parents_last_child.next_sibling = first_child + + # Find the very last element being moved. It is now the + # parent's last descendant. It has no .next_sibling and + # its .next_element is whatever the previous last + # descendant had. + last_childs_last_descendant = to_append[-1]._last_descendant(False, True) + + last_childs_last_descendant.next_element = new_parents_last_descendant_next_element + if new_parents_last_descendant_next_element is not None: + # TODO: This code has no test coverage and I'm not sure + # how to get html5lib to go through this path, but it's + # just the other side of the previous line. + new_parents_last_descendant_next_element.previous_element = last_childs_last_descendant + last_childs_last_descendant.next_sibling = None + + for child in to_append: + child.parent = new_parent_element + new_parent_element.contents.append(child) + + # Now that this element has no children, change its .next_element. + element.contents = [] + element.next_element = final_next_element + + # print "DONE WITH MOVE" + # print "FROM", self.element + # print "TO", new_parent_element + + def cloneNode(self): + tag = self.soup.new_tag(self.element.name, self.namespace) + node = Element(tag, self.soup, self.namespace) + for key,value in self.attributes: + node.attributes[key] = value + return node + + def hasContent(self): + return self.element.contents + + def getNameTuple(self): + if self.namespace == None: + return namespaces["html"], self.name + else: + return self.namespace, self.name + + nameTuple = property(getNameTuple) + +class TextNode(Element): + def __init__(self, element, soup): + treebuilder_base.Node.__init__(self, None) + self.element = element + self.soup = soup + + def cloneNode(self): + raise NotImplementedError diff --git a/venv/lib/python3.7/site-packages/bs4/builder/_htmlparser.py b/venv/lib/python3.7/site-packages/bs4/builder/_htmlparser.py new file mode 100644 index 0000000..12e1c9e --- /dev/null +++ b/venv/lib/python3.7/site-packages/bs4/builder/_htmlparser.py @@ -0,0 +1,358 @@ +# encoding: utf-8 +"""Use the HTMLParser library to parse HTML files that aren't too bad.""" + +# Use of this source code is governed by the MIT license. +__license__ = "MIT" + +__all__ = [ + 'HTMLParserTreeBuilder', + ] + +from html.parser import HTMLParser + +try: + from html.parser import HTMLParseError +except ImportError as e: + # HTMLParseError is removed in Python 3.5. Since it can never be + # thrown in 3.5, we can just define our own class as a placeholder. + class HTMLParseError(Exception): + pass + +import sys +import warnings + +# Starting in Python 3.2, the HTMLParser constructor takes a 'strict' +# argument, which we'd like to set to False. Unfortunately, +# http://bugs.python.org/issue13273 makes strict=True a better bet +# before Python 3.2.3. +# +# At the end of this file, we monkeypatch HTMLParser so that +# strict=True works well on Python 3.2.2. +major, minor, release = sys.version_info[:3] +CONSTRUCTOR_TAKES_STRICT = major == 3 and minor == 2 and release >= 3 +CONSTRUCTOR_STRICT_IS_DEPRECATED = major == 3 and minor == 3 +CONSTRUCTOR_TAKES_CONVERT_CHARREFS = major == 3 and minor >= 4 + + +from bs4.element import ( + CData, + Comment, + Declaration, + Doctype, + ProcessingInstruction, + ) +from bs4.dammit import EntitySubstitution, UnicodeDammit + +from bs4.builder import ( + HTML, + HTMLTreeBuilder, + STRICT, + ) + + +HTMLPARSER = 'html.parser' + +class BeautifulSoupHTMLParser(HTMLParser): + + def __init__(self, *args, **kwargs): + HTMLParser.__init__(self, *args, **kwargs) + + # Keep a list of empty-element tags that were encountered + # without an explicit closing tag. If we encounter a closing tag + # of this type, we'll associate it with one of those entries. + # + # This isn't a stack because we don't care about the + # order. It's a list of closing tags we've already handled and + # will ignore, assuming they ever show up. + self.already_closed_empty_element = [] + + def error(self, msg): + """In Python 3, HTMLParser subclasses must implement error(), although this + requirement doesn't appear to be documented. + + In Python 2, HTMLParser implements error() as raising an exception. + + In any event, this method is called only on very strange markup and our best strategy + is to pretend it didn't happen and keep going. + """ + warnings.warn(msg) + + def handle_startendtag(self, name, attrs): + # This is only called when the markup looks like + # . + + # is_startend() tells handle_starttag not to close the tag + # just because its name matches a known empty-element tag. We + # know that this is an empty-element tag and we want to call + # handle_endtag ourselves. + tag = self.handle_starttag(name, attrs, handle_empty_element=False) + self.handle_endtag(name) + + def handle_starttag(self, name, attrs, handle_empty_element=True): + # XXX namespace + attr_dict = {} + for key, value in attrs: + # Change None attribute values to the empty string + # for consistency with the other tree builders. + if value is None: + value = '' + attr_dict[key] = value + attrvalue = '""' + #print "START", name + sourceline, sourcepos = self.getpos() + tag = self.soup.handle_starttag( + name, None, None, attr_dict, sourceline=sourceline, + sourcepos=sourcepos + ) + if tag and tag.is_empty_element and handle_empty_element: + # Unlike other parsers, html.parser doesn't send separate end tag + # events for empty-element tags. (It's handled in + # handle_startendtag, but only if the original markup looked like + # .) + # + # So we need to call handle_endtag() ourselves. Since we + # know the start event is identical to the end event, we + # don't want handle_endtag() to cross off any previous end + # events for tags of this name. + self.handle_endtag(name, check_already_closed=False) + + # But we might encounter an explicit closing tag for this tag + # later on. If so, we want to ignore it. + self.already_closed_empty_element.append(name) + + def handle_endtag(self, name, check_already_closed=True): + #print "END", name + if check_already_closed and name in self.already_closed_empty_element: + # This is a redundant end tag for an empty-element tag. + # We've already called handle_endtag() for it, so just + # check it off the list. + # print "ALREADY CLOSED", name + self.already_closed_empty_element.remove(name) + else: + self.soup.handle_endtag(name) + + def handle_data(self, data): + self.soup.handle_data(data) + + def handle_charref(self, name): + # XXX workaround for a bug in HTMLParser. Remove this once + # it's fixed in all supported versions. + # http://bugs.python.org/issue13633 + if name.startswith('x'): + real_name = int(name.lstrip('x'), 16) + elif name.startswith('X'): + real_name = int(name.lstrip('X'), 16) + else: + real_name = int(name) + + data = None + if real_name < 256: + # HTML numeric entities are supposed to reference Unicode + # code points, but sometimes they reference code points in + # some other encoding (ahem, Windows-1252). E.g. “ + # instead of É for LEFT DOUBLE QUOTATION MARK. This + # code tries to detect this situation and compensate. + for encoding in (self.soup.original_encoding, 'windows-1252'): + if not encoding: + continue + try: + data = bytearray([real_name]).decode(encoding) + except UnicodeDecodeError as e: + pass + if not data: + try: + data = chr(real_name) + except (ValueError, OverflowError) as e: + pass + data = data or "\N{REPLACEMENT CHARACTER}" + self.handle_data(data) + + def handle_entityref(self, name): + character = EntitySubstitution.HTML_ENTITY_TO_CHARACTER.get(name) + if character is not None: + data = character + else: + # If this were XML, it would be ambiguous whether "&foo" + # was an character entity reference with a missing + # semicolon or the literal string "&foo". Since this is + # HTML, we have a complete list of all character entity references, + # and this one wasn't found, so assume it's the literal string "&foo". + data = "&%s" % name + self.handle_data(data) + + def handle_comment(self, data): + self.soup.endData() + self.soup.handle_data(data) + self.soup.endData(Comment) + + def handle_decl(self, data): + self.soup.endData() + if data.startswith("DOCTYPE "): + data = data[len("DOCTYPE "):] + elif data == 'DOCTYPE': + # i.e. "" + data = '' + self.soup.handle_data(data) + self.soup.endData(Doctype) + + def unknown_decl(self, data): + if data.upper().startswith('CDATA['): + cls = CData + data = data[len('CDATA['):] + else: + cls = Declaration + self.soup.endData() + self.soup.handle_data(data) + self.soup.endData(cls) + + def handle_pi(self, data): + self.soup.endData() + self.soup.handle_data(data) + self.soup.endData(ProcessingInstruction) + + +class HTMLParserTreeBuilder(HTMLTreeBuilder): + + is_xml = False + picklable = True + NAME = HTMLPARSER + features = [NAME, HTML, STRICT] + + # The html.parser knows which line number and position in the + # original file is the source of an element. + TRACKS_LINE_NUMBERS = True + + def __init__(self, parser_args=None, parser_kwargs=None, **kwargs): + super(HTMLParserTreeBuilder, self).__init__(**kwargs) + parser_args = parser_args or [] + parser_kwargs = parser_kwargs or {} + if CONSTRUCTOR_TAKES_STRICT and not CONSTRUCTOR_STRICT_IS_DEPRECATED: + parser_kwargs['strict'] = False + if CONSTRUCTOR_TAKES_CONVERT_CHARREFS: + parser_kwargs['convert_charrefs'] = False + self.parser_args = (parser_args, parser_kwargs) + + def prepare_markup(self, markup, user_specified_encoding=None, + document_declared_encoding=None, exclude_encodings=None): + """ + :return: A 4-tuple (markup, original encoding, encoding + declared within markup, whether any characters had to be + replaced with REPLACEMENT CHARACTER). + """ + if isinstance(markup, str): + yield (markup, None, None, False) + return + + try_encodings = [user_specified_encoding, document_declared_encoding] + dammit = UnicodeDammit(markup, try_encodings, is_html=True, + exclude_encodings=exclude_encodings) + yield (dammit.markup, dammit.original_encoding, + dammit.declared_html_encoding, + dammit.contains_replacement_characters) + + def feed(self, markup): + args, kwargs = self.parser_args + parser = BeautifulSoupHTMLParser(*args, **kwargs) + parser.soup = self.soup + try: + parser.feed(markup) + parser.close() + except HTMLParseError as e: + warnings.warn(RuntimeWarning( + "Python's built-in HTMLParser cannot parse the given document. This is not a bug in Beautiful Soup. The best solution is to install an external parser (lxml or html5lib), and use Beautiful Soup with that parser. See http://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser for help.")) + raise e + parser.already_closed_empty_element = [] + +# Patch 3.2 versions of HTMLParser earlier than 3.2.3 to use some +# 3.2.3 code. This ensures they don't treat markup like

as a +# string. +# +# XXX This code can be removed once most Python 3 users are on 3.2.3. +if major == 3 and minor == 2 and not CONSTRUCTOR_TAKES_STRICT: + import re + attrfind_tolerant = re.compile( + r'\s*((?<=[\'"\s])[^\s/>][^\s/=>]*)(\s*=+\s*' + r'(\'[^\']*\'|"[^"]*"|(?![\'"])[^>\s]*))?') + HTMLParserTreeBuilder.attrfind_tolerant = attrfind_tolerant + + locatestarttagend = re.compile(r""" + <[a-zA-Z][-.a-zA-Z0-9:_]* # tag name + (?:\s+ # whitespace before attribute name + (?:[a-zA-Z_][-.:a-zA-Z0-9_]* # attribute name + (?:\s*=\s* # value indicator + (?:'[^']*' # LITA-enclosed value + |\"[^\"]*\" # LIT-enclosed value + |[^'\">\s]+ # bare value + ) + )? + ) + )* + \s* # trailing whitespace +""", re.VERBOSE) + BeautifulSoupHTMLParser.locatestarttagend = locatestarttagend + + from html.parser import tagfind, attrfind + + def parse_starttag(self, i): + self.__starttag_text = None + endpos = self.check_for_whole_start_tag(i) + if endpos < 0: + return endpos + rawdata = self.rawdata + self.__starttag_text = rawdata[i:endpos] + + # Now parse the data between i+1 and j into a tag and attrs + attrs = [] + match = tagfind.match(rawdata, i+1) + assert match, 'unexpected call to parse_starttag()' + k = match.end() + self.lasttag = tag = rawdata[i+1:k].lower() + while k < endpos: + if self.strict: + m = attrfind.match(rawdata, k) + else: + m = attrfind_tolerant.match(rawdata, k) + if not m: + break + attrname, rest, attrvalue = m.group(1, 2, 3) + if not rest: + attrvalue = None + elif attrvalue[:1] == '\'' == attrvalue[-1:] or \ + attrvalue[:1] == '"' == attrvalue[-1:]: + attrvalue = attrvalue[1:-1] + if attrvalue: + attrvalue = self.unescape(attrvalue) + attrs.append((attrname.lower(), attrvalue)) + k = m.end() + + end = rawdata[k:endpos].strip() + if end not in (">", "/>"): + lineno, offset = self.getpos() + if "\n" in self.__starttag_text: + lineno = lineno + self.__starttag_text.count("\n") + offset = len(self.__starttag_text) \ + - self.__starttag_text.rfind("\n") + else: + offset = offset + len(self.__starttag_text) + if self.strict: + self.error("junk characters in start tag: %r" + % (rawdata[k:endpos][:20],)) + self.handle_data(rawdata[i:endpos]) + return endpos + if end.endswith('/>'): + # XHTML-style empty tag: + self.handle_startendtag(tag, attrs) + else: + self.handle_starttag(tag, attrs) + if tag in self.CDATA_CONTENT_ELEMENTS: + self.set_cdata_mode(tag) + return endpos + + def set_cdata_mode(self, elem): + self.cdata_elem = elem.lower() + self.interesting = re.compile(r'' % self.cdata_elem, re.I) + + BeautifulSoupHTMLParser.parse_starttag = parse_starttag + BeautifulSoupHTMLParser.set_cdata_mode = set_cdata_mode + + CONSTRUCTOR_TAKES_STRICT = True diff --git a/venv/lib/python3.7/site-packages/bs4/builder/_lxml.py b/venv/lib/python3.7/site-packages/bs4/builder/_lxml.py new file mode 100644 index 0000000..f525796 --- /dev/null +++ b/venv/lib/python3.7/site-packages/bs4/builder/_lxml.py @@ -0,0 +1,302 @@ +# Use of this source code is governed by the MIT license. +__license__ = "MIT" + +__all__ = [ + 'LXMLTreeBuilderForXML', + 'LXMLTreeBuilder', + ] + +try: + from collections.abc import Callable # Python 3.6 +except ImportError as e: + from collections import Callable + +from io import BytesIO +from io import StringIO +from lxml import etree +from bs4.element import ( + Comment, + Doctype, + NamespacedAttribute, + ProcessingInstruction, + XMLProcessingInstruction, +) +from bs4.builder import ( + FAST, + HTML, + HTMLTreeBuilder, + PERMISSIVE, + ParserRejectedMarkup, + TreeBuilder, + XML) +from bs4.dammit import EncodingDetector + +LXML = 'lxml' + +def _invert(d): + "Invert a dictionary." + return dict((v,k) for k, v in list(d.items())) + +class LXMLTreeBuilderForXML(TreeBuilder): + DEFAULT_PARSER_CLASS = etree.XMLParser + + is_xml = True + processing_instruction_class = XMLProcessingInstruction + + NAME = "lxml-xml" + ALTERNATE_NAMES = ["xml"] + + # Well, it's permissive by XML parser standards. + features = [NAME, LXML, XML, FAST, PERMISSIVE] + + CHUNK_SIZE = 512 + + # This namespace mapping is specified in the XML Namespace + # standard. + DEFAULT_NSMAPS = dict(xml='http://www.w3.org/XML/1998/namespace') + + DEFAULT_NSMAPS_INVERTED = _invert(DEFAULT_NSMAPS) + + # NOTE: If we parsed Element objects and looked at .sourceline, + # we'd be able to see the line numbers from the original document. + # But instead we build an XMLParser or HTMLParser object to serve + # as the target of parse messages, and those messages don't include + # line numbers. + + def initialize_soup(self, soup): + """Let the BeautifulSoup object know about the standard namespace + mapping. + """ + super(LXMLTreeBuilderForXML, self).initialize_soup(soup) + self._register_namespaces(self.DEFAULT_NSMAPS) + + def _register_namespaces(self, mapping): + """Let the BeautifulSoup object know about namespaces encountered + while parsing the document. + + This might be useful later on when creating CSS selectors. + """ + for key, value in list(mapping.items()): + if key and key not in self.soup._namespaces: + # Let the BeautifulSoup object know about a new namespace. + # If there are multiple namespaces defined with the same + # prefix, the first one in the document takes precedence. + self.soup._namespaces[key] = value + + def default_parser(self, encoding): + # This can either return a parser object or a class, which + # will be instantiated with default arguments. + if self._default_parser is not None: + return self._default_parser + return etree.XMLParser( + target=self, strip_cdata=False, recover=True, encoding=encoding) + + def parser_for(self, encoding): + # Use the default parser. + parser = self.default_parser(encoding) + + if isinstance(parser, Callable): + # Instantiate the parser with default arguments + parser = parser(target=self, strip_cdata=False, encoding=encoding) + return parser + + def __init__(self, parser=None, empty_element_tags=None, **kwargs): + # TODO: Issue a warning if parser is present but not a + # callable, since that means there's no way to create new + # parsers for different encodings. + self._default_parser = parser + if empty_element_tags is not None: + self.empty_element_tags = set(empty_element_tags) + self.soup = None + self.nsmaps = [self.DEFAULT_NSMAPS_INVERTED] + super(LXMLTreeBuilderForXML, self).__init__(**kwargs) + + def _getNsTag(self, tag): + # Split the namespace URL out of a fully-qualified lxml tag + # name. Copied from lxml's src/lxml/sax.py. + if tag[0] == '{': + return tuple(tag[1:].split('}', 1)) + else: + return (None, tag) + + def prepare_markup(self, markup, user_specified_encoding=None, + exclude_encodings=None, + document_declared_encoding=None): + """ + :yield: A series of 4-tuples. + (markup, encoding, declared encoding, + has undergone character replacement) + + Each 4-tuple represents a strategy for parsing the document. + """ + # Instead of using UnicodeDammit to convert the bytestring to + # Unicode using different encodings, use EncodingDetector to + # iterate over the encodings, and tell lxml to try to parse + # the document as each one in turn. + is_html = not self.is_xml + if is_html: + self.processing_instruction_class = ProcessingInstruction + else: + self.processing_instruction_class = XMLProcessingInstruction + + if isinstance(markup, str): + # We were given Unicode. Maybe lxml can parse Unicode on + # this system? + yield markup, None, document_declared_encoding, False + + if isinstance(markup, str): + # No, apparently not. Convert the Unicode to UTF-8 and + # tell lxml to parse it as UTF-8. + yield (markup.encode("utf8"), "utf8", + document_declared_encoding, False) + + try_encodings = [user_specified_encoding, document_declared_encoding] + detector = EncodingDetector( + markup, try_encodings, is_html, exclude_encodings) + for encoding in detector.encodings: + yield (detector.markup, encoding, document_declared_encoding, False) + + def feed(self, markup): + if isinstance(markup, bytes): + markup = BytesIO(markup) + elif isinstance(markup, str): + markup = StringIO(markup) + + # Call feed() at least once, even if the markup is empty, + # or the parser won't be initialized. + data = markup.read(self.CHUNK_SIZE) + try: + self.parser = self.parser_for(self.soup.original_encoding) + self.parser.feed(data) + while len(data) != 0: + # Now call feed() on the rest of the data, chunk by chunk. + data = markup.read(self.CHUNK_SIZE) + if len(data) != 0: + self.parser.feed(data) + self.parser.close() + except (UnicodeDecodeError, LookupError, etree.ParserError) as e: + raise ParserRejectedMarkup(e) + + def close(self): + self.nsmaps = [self.DEFAULT_NSMAPS_INVERTED] + + def start(self, name, attrs, nsmap={}): + # Make sure attrs is a mutable dict--lxml may send an immutable dictproxy. + attrs = dict(attrs) + nsprefix = None + # Invert each namespace map as it comes in. + if len(nsmap) == 0 and len(self.nsmaps) > 1: + # There are no new namespaces for this tag, but + # non-default namespaces are in play, so we need a + # separate tag stack to know when they end. + self.nsmaps.append(None) + elif len(nsmap) > 0: + # A new namespace mapping has come into play. + + # First, Let the BeautifulSoup object know about it. + self._register_namespaces(nsmap) + + # Then, add it to our running list of inverted namespace + # mappings. + self.nsmaps.append(_invert(nsmap)) + + # Also treat the namespace mapping as a set of attributes on the + # tag, so we can recreate it later. + attrs = attrs.copy() + for prefix, namespace in list(nsmap.items()): + attribute = NamespacedAttribute( + "xmlns", prefix, "http://www.w3.org/2000/xmlns/") + attrs[attribute] = namespace + + # Namespaces are in play. Find any attributes that came in + # from lxml with namespaces attached to their names, and + # turn then into NamespacedAttribute objects. + new_attrs = {} + for attr, value in list(attrs.items()): + namespace, attr = self._getNsTag(attr) + if namespace is None: + new_attrs[attr] = value + else: + nsprefix = self._prefix_for_namespace(namespace) + attr = NamespacedAttribute(nsprefix, attr, namespace) + new_attrs[attr] = value + attrs = new_attrs + + namespace, name = self._getNsTag(name) + nsprefix = self._prefix_for_namespace(namespace) + self.soup.handle_starttag(name, namespace, nsprefix, attrs) + + def _prefix_for_namespace(self, namespace): + """Find the currently active prefix for the given namespace.""" + if namespace is None: + return None + for inverted_nsmap in reversed(self.nsmaps): + if inverted_nsmap is not None and namespace in inverted_nsmap: + return inverted_nsmap[namespace] + return None + + def end(self, name): + self.soup.endData() + completed_tag = self.soup.tagStack[-1] + namespace, name = self._getNsTag(name) + nsprefix = None + if namespace is not None: + for inverted_nsmap in reversed(self.nsmaps): + if inverted_nsmap is not None and namespace in inverted_nsmap: + nsprefix = inverted_nsmap[namespace] + break + self.soup.handle_endtag(name, nsprefix) + if len(self.nsmaps) > 1: + # This tag, or one of its parents, introduced a namespace + # mapping, so pop it off the stack. + self.nsmaps.pop() + + def pi(self, target, data): + self.soup.endData() + self.soup.handle_data(target + ' ' + data) + self.soup.endData(self.processing_instruction_class) + + def data(self, content): + self.soup.handle_data(content) + + def doctype(self, name, pubid, system): + self.soup.endData() + doctype = Doctype.for_name_and_ids(name, pubid, system) + self.soup.object_was_parsed(doctype) + + def comment(self, content): + "Handle comments as Comment objects." + self.soup.endData() + self.soup.handle_data(content) + self.soup.endData(Comment) + + def test_fragment_to_document(self, fragment): + """See `TreeBuilder`.""" + return '\n%s' % fragment + + +class LXMLTreeBuilder(HTMLTreeBuilder, LXMLTreeBuilderForXML): + + NAME = LXML + ALTERNATE_NAMES = ["lxml-html"] + + features = ALTERNATE_NAMES + [NAME, HTML, FAST, PERMISSIVE] + is_xml = False + processing_instruction_class = ProcessingInstruction + + def default_parser(self, encoding): + return etree.HTMLParser + + def feed(self, markup): + encoding = self.soup.original_encoding + try: + self.parser = self.parser_for(encoding) + self.parser.feed(markup) + self.parser.close() + except (UnicodeDecodeError, LookupError, etree.ParserError) as e: + raise ParserRejectedMarkup(e) + + + def test_fragment_to_document(self, fragment): + """See `TreeBuilder`.""" + return '%s' % fragment diff --git a/venv/lib/python3.7/site-packages/bs4/check_block.py b/venv/lib/python3.7/site-packages/bs4/check_block.py new file mode 100644 index 0000000..a60a7b7 --- /dev/null +++ b/venv/lib/python3.7/site-packages/bs4/check_block.py @@ -0,0 +1,4 @@ +import requests +data = requests.get("https://www.crummy.com/").content +from bs4 import _s +data = [x for x in _s(data).block_text()] diff --git a/venv/lib/python3.7/site-packages/bs4/dammit.py b/venv/lib/python3.7/site-packages/bs4/dammit.py new file mode 100644 index 0000000..5fc6f93 --- /dev/null +++ b/venv/lib/python3.7/site-packages/bs4/dammit.py @@ -0,0 +1,871 @@ +# -*- coding: utf-8 -*- +"""Beautiful Soup bonus library: Unicode, Dammit + +This library converts a bytestream to Unicode through any means +necessary. It is heavily based on code from Mark Pilgrim's Universal +Feed Parser. It works best on XML and HTML, but it does not rewrite the +XML or HTML to reflect a new encoding; that's the tree builder's job. +""" +# Use of this source code is governed by the MIT license. +__license__ = "MIT" + +import codecs +from html.entities import codepoint2name +import re +import logging +import string + +# Import a library to autodetect character encodings. +chardet_type = None +try: + # First try the fast C implementation. + # PyPI package: cchardet + import cchardet + def chardet_dammit(s): + if isinstance(s, str): + return None + return cchardet.detect(s)['encoding'] +except ImportError: + try: + # Fall back to the pure Python implementation + # Debian package: python-chardet + # PyPI package: chardet + import chardet + def chardet_dammit(s): + if isinstance(s, str): + return None + return chardet.detect(s)['encoding'] + #import chardet.constants + #chardet.constants._debug = 1 + except ImportError: + # No chardet available. + def chardet_dammit(s): + return None + +# Available from http://cjkpython.i18n.org/. +try: + import iconv_codec +except ImportError: + pass + +# Build bytestring and Unicode versions of regular expressions for finding +# a declared encoding inside an XML or HTML document. +xml_encoding = '^\s*<\\?.*encoding=[\'"](.*?)[\'"].*\\?>' +html_meta = '<\\s*meta[^>]+charset\\s*=\\s*["\']?([^>]*?)[ /;\'">]' +encoding_res = dict() +encoding_res[bytes] = { + 'html' : re.compile(html_meta.encode("ascii"), re.I), + 'xml' : re.compile(xml_encoding.encode("ascii"), re.I), +} +encoding_res[str] = { + 'html' : re.compile(html_meta, re.I), + 'xml' : re.compile(xml_encoding, re.I) +} + +class EntitySubstitution(object): + + """Substitute XML or HTML entities for the corresponding characters.""" + + def _populate_class_variables(): + lookup = {} + reverse_lookup = {} + characters_for_re = [] + + # &apos is an XHTML entity and an HTML 5, but not an HTML 4 + # entity. We don't want to use it, but we want to recognize it on the way in. + # + # TODO: Ideally we would be able to recognize all HTML 5 named + # entities, but that's a little tricky. + extra = [(39, 'apos')] + for codepoint, name in list(codepoint2name.items()) + extra: + character = chr(codepoint) + if codepoint not in (34, 39): + # There's no point in turning the quotation mark into + # " or the single quote into ', unless it + # happens within an attribute value, which is handled + # elsewhere. + characters_for_re.append(character) + lookup[character] = name + # But we do want to recognize those entities on the way in and + # convert them to Unicode characters. + reverse_lookup[name] = character + re_definition = "[%s]" % "".join(characters_for_re) + return lookup, reverse_lookup, re.compile(re_definition) + (CHARACTER_TO_HTML_ENTITY, HTML_ENTITY_TO_CHARACTER, + CHARACTER_TO_HTML_ENTITY_RE) = _populate_class_variables() + + CHARACTER_TO_XML_ENTITY = { + "'": "apos", + '"': "quot", + "&": "amp", + "<": "lt", + ">": "gt", + } + + BARE_AMPERSAND_OR_BRACKET = re.compile("([<>]|" + "&(?!#\\d+;|#x[0-9a-fA-F]+;|\\w+;)" + ")") + + AMPERSAND_OR_BRACKET = re.compile("([<>&])") + + @classmethod + def _substitute_html_entity(cls, matchobj): + entity = cls.CHARACTER_TO_HTML_ENTITY.get(matchobj.group(0)) + return "&%s;" % entity + + @classmethod + def _substitute_xml_entity(cls, matchobj): + """Used with a regular expression to substitute the + appropriate XML entity for an XML special character.""" + entity = cls.CHARACTER_TO_XML_ENTITY[matchobj.group(0)] + return "&%s;" % entity + + @classmethod + def quoted_attribute_value(self, value): + """Make a value into a quoted XML attribute, possibly escaping it. + + Most strings will be quoted using double quotes. + + Bob's Bar -> "Bob's Bar" + + If a string contains double quotes, it will be quoted using + single quotes. + + Welcome to "my bar" -> 'Welcome to "my bar"' + + If a string contains both single and double quotes, the + double quotes will be escaped, and the string will be quoted + using double quotes. + + Welcome to "Bob's Bar" -> "Welcome to "Bob's bar" + """ + quote_with = '"' + if '"' in value: + if "'" in value: + # The string contains both single and double + # quotes. Turn the double quotes into + # entities. We quote the double quotes rather than + # the single quotes because the entity name is + # """ whether this is HTML or XML. If we + # quoted the single quotes, we'd have to decide + # between ' and &squot;. + replace_with = """ + value = value.replace('"', replace_with) + else: + # There are double quotes but no single quotes. + # We can use single quotes to quote the attribute. + quote_with = "'" + return quote_with + value + quote_with + + @classmethod + def substitute_xml(cls, value, make_quoted_attribute=False): + """Substitute XML entities for special XML characters. + + :param value: A string to be substituted. The less-than sign + will become <, the greater-than sign will become >, + and any ampersands will become &. If you want ampersands + that appear to be part of an entity definition to be left + alone, use substitute_xml_containing_entities() instead. + + :param make_quoted_attribute: If True, then the string will be + quoted, as befits an attribute value. + """ + # Escape angle brackets and ampersands. + value = cls.AMPERSAND_OR_BRACKET.sub( + cls._substitute_xml_entity, value) + + if make_quoted_attribute: + value = cls.quoted_attribute_value(value) + return value + + @classmethod + def substitute_xml_containing_entities( + cls, value, make_quoted_attribute=False): + """Substitute XML entities for special XML characters. + + :param value: A string to be substituted. The less-than sign will + become <, the greater-than sign will become >, and any + ampersands that are not part of an entity defition will + become &. + + :param make_quoted_attribute: If True, then the string will be + quoted, as befits an attribute value. + """ + # Escape angle brackets, and ampersands that aren't part of + # entities. + value = cls.BARE_AMPERSAND_OR_BRACKET.sub( + cls._substitute_xml_entity, value) + + if make_quoted_attribute: + value = cls.quoted_attribute_value(value) + return value + + @classmethod + def substitute_html(cls, s): + """Replace certain Unicode characters with named HTML entities. + + This differs from data.encode(encoding, 'xmlcharrefreplace') + in that the goal is to make the result more readable (to those + with ASCII displays) rather than to recover from + errors. There's absolutely nothing wrong with a UTF-8 string + containg a LATIN SMALL LETTER E WITH ACUTE, but replacing that + character with "é" will make it more readable to some + people. + """ + return cls.CHARACTER_TO_HTML_ENTITY_RE.sub( + cls._substitute_html_entity, s) + + +class EncodingDetector: + """Suggests a number of possible encodings for a bytestring. + + Order of precedence: + + 1. Encodings you specifically tell EncodingDetector to try first + (the override_encodings argument to the constructor). + + 2. An encoding declared within the bytestring itself, either in an + XML declaration (if the bytestring is to be interpreted as an XML + document), or in a tag (if the bytestring is to be + interpreted as an HTML document.) + + 3. An encoding detected through textual analysis by chardet, + cchardet, or a similar external library. + + 4. UTF-8. + + 5. Windows-1252. + """ + def __init__(self, markup, override_encodings=None, is_html=False, + exclude_encodings=None): + self.override_encodings = override_encodings or [] + exclude_encodings = exclude_encodings or [] + self.exclude_encodings = set([x.lower() for x in exclude_encodings]) + self.chardet_encoding = None + self.is_html = is_html + self.declared_encoding = None + + # First order of business: strip a byte-order mark. + self.markup, self.sniffed_encoding = self.strip_byte_order_mark(markup) + + def _usable(self, encoding, tried): + if encoding is not None: + encoding = encoding.lower() + if encoding in self.exclude_encodings: + return False + if encoding not in tried: + tried.add(encoding) + return True + return False + + @property + def encodings(self): + """Yield a number of encodings that might work for this markup.""" + tried = set() + for e in self.override_encodings: + if self._usable(e, tried): + yield e + + # Did the document originally start with a byte-order mark + # that indicated its encoding? + if self._usable(self.sniffed_encoding, tried): + yield self.sniffed_encoding + + # Look within the document for an XML or HTML encoding + # declaration. + if self.declared_encoding is None: + self.declared_encoding = self.find_declared_encoding( + self.markup, self.is_html) + if self._usable(self.declared_encoding, tried): + yield self.declared_encoding + + # Use third-party character set detection to guess at the + # encoding. + if self.chardet_encoding is None: + self.chardet_encoding = chardet_dammit(self.markup) + if self._usable(self.chardet_encoding, tried): + yield self.chardet_encoding + + # As a last-ditch effort, try utf-8 and windows-1252. + for e in ('utf-8', 'windows-1252'): + if self._usable(e, tried): + yield e + + @classmethod + def strip_byte_order_mark(cls, data): + """If a byte-order mark is present, strip it and return the encoding it implies.""" + encoding = None + if isinstance(data, str): + # Unicode data cannot have a byte-order mark. + return data, encoding + if (len(data) >= 4) and (data[:2] == b'\xfe\xff') \ + and (data[2:4] != '\x00\x00'): + encoding = 'utf-16be' + data = data[2:] + elif (len(data) >= 4) and (data[:2] == b'\xff\xfe') \ + and (data[2:4] != '\x00\x00'): + encoding = 'utf-16le' + data = data[2:] + elif data[:3] == b'\xef\xbb\xbf': + encoding = 'utf-8' + data = data[3:] + elif data[:4] == b'\x00\x00\xfe\xff': + encoding = 'utf-32be' + data = data[4:] + elif data[:4] == b'\xff\xfe\x00\x00': + encoding = 'utf-32le' + data = data[4:] + return data, encoding + + @classmethod + def find_declared_encoding(cls, markup, is_html=False, search_entire_document=False): + """Given a document, tries to find its declared encoding. + + An XML encoding is declared at the beginning of the document. + + An HTML encoding is declared in a tag, hopefully near the + beginning of the document. + """ + if search_entire_document: + xml_endpos = html_endpos = len(markup) + else: + xml_endpos = 1024 + html_endpos = max(2048, int(len(markup) * 0.05)) + + if isinstance(markup, bytes): + res = encoding_res[bytes] + else: + res = encoding_res[str] + + xml_re = res['xml'] + html_re = res['html'] + declared_encoding = None + declared_encoding_match = xml_re.search(markup, endpos=xml_endpos) + if not declared_encoding_match and is_html: + declared_encoding_match = html_re.search(markup, endpos=html_endpos) + if declared_encoding_match is not None: + declared_encoding = declared_encoding_match.groups()[0] + if declared_encoding: + if isinstance(declared_encoding, bytes): + declared_encoding = declared_encoding.decode('ascii', 'replace') + return declared_encoding.lower() + return None + +class UnicodeDammit: + """A class for detecting the encoding of a *ML document and + converting it to a Unicode string. If the source encoding is + windows-1252, can replace MS smart quotes with their HTML or XML + equivalents.""" + + # This dictionary maps commonly seen values for "charset" in HTML + # meta tags to the corresponding Python codec names. It only covers + # values that aren't in Python's aliases and can't be determined + # by the heuristics in find_codec. + CHARSET_ALIASES = {"macintosh": "mac-roman", + "x-sjis": "shift-jis"} + + ENCODINGS_WITH_SMART_QUOTES = [ + "windows-1252", + "iso-8859-1", + "iso-8859-2", + ] + + def __init__(self, markup, override_encodings=[], + smart_quotes_to=None, is_html=False, exclude_encodings=[]): + self.smart_quotes_to = smart_quotes_to + self.tried_encodings = [] + self.contains_replacement_characters = False + self.is_html = is_html + self.log = logging.getLogger(__name__) + self.detector = EncodingDetector( + markup, override_encodings, is_html, exclude_encodings) + + # Short-circuit if the data is in Unicode to begin with. + if isinstance(markup, str) or markup == '': + self.markup = markup + self.unicode_markup = str(markup) + self.original_encoding = None + return + + # The encoding detector may have stripped a byte-order mark. + # Use the stripped markup from this point on. + self.markup = self.detector.markup + + u = None + for encoding in self.detector.encodings: + markup = self.detector.markup + u = self._convert_from(encoding) + if u is not None: + break + + if not u: + # None of the encodings worked. As an absolute last resort, + # try them again with character replacement. + + for encoding in self.detector.encodings: + if encoding != "ascii": + u = self._convert_from(encoding, "replace") + if u is not None: + self.log.warning( + "Some characters could not be decoded, and were " + "replaced with REPLACEMENT CHARACTER." + ) + self.contains_replacement_characters = True + break + + # If none of that worked, we could at this point force it to + # ASCII, but that would destroy so much data that I think + # giving up is better. + self.unicode_markup = u + if not u: + self.original_encoding = None + + def _sub_ms_char(self, match): + """Changes a MS smart quote character to an XML or HTML + entity, or an ASCII character.""" + orig = match.group(1) + if self.smart_quotes_to == 'ascii': + sub = self.MS_CHARS_TO_ASCII.get(orig).encode() + else: + sub = self.MS_CHARS.get(orig) + if type(sub) == tuple: + if self.smart_quotes_to == 'xml': + sub = '&#x'.encode() + sub[1].encode() + ';'.encode() + else: + sub = '&'.encode() + sub[0].encode() + ';'.encode() + else: + sub = sub.encode() + return sub + + def _convert_from(self, proposed, errors="strict"): + proposed = self.find_codec(proposed) + if not proposed or (proposed, errors) in self.tried_encodings: + return None + self.tried_encodings.append((proposed, errors)) + markup = self.markup + # Convert smart quotes to HTML if coming from an encoding + # that might have them. + if (self.smart_quotes_to is not None + and proposed in self.ENCODINGS_WITH_SMART_QUOTES): + smart_quotes_re = b"([\x80-\x9f])" + smart_quotes_compiled = re.compile(smart_quotes_re) + markup = smart_quotes_compiled.sub(self._sub_ms_char, markup) + + try: + #print "Trying to convert document to %s (errors=%s)" % ( + # proposed, errors) + u = self._to_unicode(markup, proposed, errors) + self.markup = u + self.original_encoding = proposed + except Exception as e: + #print "That didn't work!" + #print e + return None + #print "Correct encoding: %s" % proposed + return self.markup + + def _to_unicode(self, data, encoding, errors="strict"): + '''Given a string and its encoding, decodes the string into Unicode. + %encoding is a string recognized by encodings.aliases''' + return str(data, encoding, errors) + + @property + def declared_html_encoding(self): + if not self.is_html: + return None + return self.detector.declared_encoding + + def find_codec(self, charset): + value = (self._codec(self.CHARSET_ALIASES.get(charset, charset)) + or (charset and self._codec(charset.replace("-", ""))) + or (charset and self._codec(charset.replace("-", "_"))) + or (charset and charset.lower()) + or charset + ) + if value: + return value.lower() + return None + + def _codec(self, charset): + if not charset: + return charset + codec = None + try: + codecs.lookup(charset) + codec = charset + except (LookupError, ValueError): + pass + return codec + + + # A partial mapping of ISO-Latin-1 to HTML entities/XML numeric entities. + MS_CHARS = {b'\x80': ('euro', '20AC'), + b'\x81': ' ', + b'\x82': ('sbquo', '201A'), + b'\x83': ('fnof', '192'), + b'\x84': ('bdquo', '201E'), + b'\x85': ('hellip', '2026'), + b'\x86': ('dagger', '2020'), + b'\x87': ('Dagger', '2021'), + b'\x88': ('circ', '2C6'), + b'\x89': ('permil', '2030'), + b'\x8A': ('Scaron', '160'), + b'\x8B': ('lsaquo', '2039'), + b'\x8C': ('OElig', '152'), + b'\x8D': '?', + b'\x8E': ('#x17D', '17D'), + b'\x8F': '?', + b'\x90': '?', + b'\x91': ('lsquo', '2018'), + b'\x92': ('rsquo', '2019'), + b'\x93': ('ldquo', '201C'), + b'\x94': ('rdquo', '201D'), + b'\x95': ('bull', '2022'), + b'\x96': ('ndash', '2013'), + b'\x97': ('mdash', '2014'), + b'\x98': ('tilde', '2DC'), + b'\x99': ('trade', '2122'), + b'\x9a': ('scaron', '161'), + b'\x9b': ('rsaquo', '203A'), + b'\x9c': ('oelig', '153'), + b'\x9d': '?', + b'\x9e': ('#x17E', '17E'), + b'\x9f': ('Yuml', ''),} + + # A parochial partial mapping of ISO-Latin-1 to ASCII. Contains + # horrors like stripping diacritical marks to turn á into a, but also + # contains non-horrors like turning “ into ". + MS_CHARS_TO_ASCII = { + b'\x80' : 'EUR', + b'\x81' : ' ', + b'\x82' : ',', + b'\x83' : 'f', + b'\x84' : ',,', + b'\x85' : '...', + b'\x86' : '+', + b'\x87' : '++', + b'\x88' : '^', + b'\x89' : '%', + b'\x8a' : 'S', + b'\x8b' : '<', + b'\x8c' : 'OE', + b'\x8d' : '?', + b'\x8e' : 'Z', + b'\x8f' : '?', + b'\x90' : '?', + b'\x91' : "'", + b'\x92' : "'", + b'\x93' : '"', + b'\x94' : '"', + b'\x95' : '*', + b'\x96' : '-', + b'\x97' : '--', + b'\x98' : '~', + b'\x99' : '(TM)', + b'\x9a' : 's', + b'\x9b' : '>', + b'\x9c' : 'oe', + b'\x9d' : '?', + b'\x9e' : 'z', + b'\x9f' : 'Y', + b'\xa0' : ' ', + b'\xa1' : '!', + b'\xa2' : 'c', + b'\xa3' : 'GBP', + b'\xa4' : '$', #This approximation is especially parochial--this is the + #generic currency symbol. + b'\xa5' : 'YEN', + b'\xa6' : '|', + b'\xa7' : 'S', + b'\xa8' : '..', + b'\xa9' : '', + b'\xaa' : '(th)', + b'\xab' : '<<', + b'\xac' : '!', + b'\xad' : ' ', + b'\xae' : '(R)', + b'\xaf' : '-', + b'\xb0' : 'o', + b'\xb1' : '+-', + b'\xb2' : '2', + b'\xb3' : '3', + b'\xb4' : ("'", 'acute'), + b'\xb5' : 'u', + b'\xb6' : 'P', + b'\xb7' : '*', + b'\xb8' : ',', + b'\xb9' : '1', + b'\xba' : '(th)', + b'\xbb' : '>>', + b'\xbc' : '1/4', + b'\xbd' : '1/2', + b'\xbe' : '3/4', + b'\xbf' : '?', + b'\xc0' : 'A', + b'\xc1' : 'A', + b'\xc2' : 'A', + b'\xc3' : 'A', + b'\xc4' : 'A', + b'\xc5' : 'A', + b'\xc6' : 'AE', + b'\xc7' : 'C', + b'\xc8' : 'E', + b'\xc9' : 'E', + b'\xca' : 'E', + b'\xcb' : 'E', + b'\xcc' : 'I', + b'\xcd' : 'I', + b'\xce' : 'I', + b'\xcf' : 'I', + b'\xd0' : 'D', + b'\xd1' : 'N', + b'\xd2' : 'O', + b'\xd3' : 'O', + b'\xd4' : 'O', + b'\xd5' : 'O', + b'\xd6' : 'O', + b'\xd7' : '*', + b'\xd8' : 'O', + b'\xd9' : 'U', + b'\xda' : 'U', + b'\xdb' : 'U', + b'\xdc' : 'U', + b'\xdd' : 'Y', + b'\xde' : 'b', + b'\xdf' : 'B', + b'\xe0' : 'a', + b'\xe1' : 'a', + b'\xe2' : 'a', + b'\xe3' : 'a', + b'\xe4' : 'a', + b'\xe5' : 'a', + b'\xe6' : 'ae', + b'\xe7' : 'c', + b'\xe8' : 'e', + b'\xe9' : 'e', + b'\xea' : 'e', + b'\xeb' : 'e', + b'\xec' : 'i', + b'\xed' : 'i', + b'\xee' : 'i', + b'\xef' : 'i', + b'\xf0' : 'o', + b'\xf1' : 'n', + b'\xf2' : 'o', + b'\xf3' : 'o', + b'\xf4' : 'o', + b'\xf5' : 'o', + b'\xf6' : 'o', + b'\xf7' : '/', + b'\xf8' : 'o', + b'\xf9' : 'u', + b'\xfa' : 'u', + b'\xfb' : 'u', + b'\xfc' : 'u', + b'\xfd' : 'y', + b'\xfe' : 'b', + b'\xff' : 'y', + } + + # A map used when removing rogue Windows-1252/ISO-8859-1 + # characters in otherwise UTF-8 documents. + # + # Note that \x81, \x8d, \x8f, \x90, and \x9d are undefined in + # Windows-1252. + WINDOWS_1252_TO_UTF8 = { + 0x80 : b'\xe2\x82\xac', # € + 0x82 : b'\xe2\x80\x9a', # ‚ + 0x83 : b'\xc6\x92', # ƒ + 0x84 : b'\xe2\x80\x9e', # „ + 0x85 : b'\xe2\x80\xa6', # … + 0x86 : b'\xe2\x80\xa0', # † + 0x87 : b'\xe2\x80\xa1', # ‡ + 0x88 : b'\xcb\x86', # ˆ + 0x89 : b'\xe2\x80\xb0', # ‰ + 0x8a : b'\xc5\xa0', # Š + 0x8b : b'\xe2\x80\xb9', # ‹ + 0x8c : b'\xc5\x92', # Œ + 0x8e : b'\xc5\xbd', # Ž + 0x91 : b'\xe2\x80\x98', # ‘ + 0x92 : b'\xe2\x80\x99', # ’ + 0x93 : b'\xe2\x80\x9c', # “ + 0x94 : b'\xe2\x80\x9d', # ” + 0x95 : b'\xe2\x80\xa2', # • + 0x96 : b'\xe2\x80\x93', # – + 0x97 : b'\xe2\x80\x94', # — + 0x98 : b'\xcb\x9c', # ˜ + 0x99 : b'\xe2\x84\xa2', # ™ + 0x9a : b'\xc5\xa1', # š + 0x9b : b'\xe2\x80\xba', # › + 0x9c : b'\xc5\x93', # œ + 0x9e : b'\xc5\xbe', # ž + 0x9f : b'\xc5\xb8', # Ÿ + 0xa0 : b'\xc2\xa0', #   + 0xa1 : b'\xc2\xa1', # ¡ + 0xa2 : b'\xc2\xa2', # ¢ + 0xa3 : b'\xc2\xa3', # £ + 0xa4 : b'\xc2\xa4', # ¤ + 0xa5 : b'\xc2\xa5', # ¥ + 0xa6 : b'\xc2\xa6', # ¦ + 0xa7 : b'\xc2\xa7', # § + 0xa8 : b'\xc2\xa8', # ¨ + 0xa9 : b'\xc2\xa9', # © + 0xaa : b'\xc2\xaa', # ª + 0xab : b'\xc2\xab', # « + 0xac : b'\xc2\xac', # ¬ + 0xad : b'\xc2\xad', # ­ + 0xae : b'\xc2\xae', # ® + 0xaf : b'\xc2\xaf', # ¯ + 0xb0 : b'\xc2\xb0', # ° + 0xb1 : b'\xc2\xb1', # ± + 0xb2 : b'\xc2\xb2', # ² + 0xb3 : b'\xc2\xb3', # ³ + 0xb4 : b'\xc2\xb4', # ´ + 0xb5 : b'\xc2\xb5', # µ + 0xb6 : b'\xc2\xb6', # ¶ + 0xb7 : b'\xc2\xb7', # · + 0xb8 : b'\xc2\xb8', # ¸ + 0xb9 : b'\xc2\xb9', # ¹ + 0xba : b'\xc2\xba', # º + 0xbb : b'\xc2\xbb', # » + 0xbc : b'\xc2\xbc', # ¼ + 0xbd : b'\xc2\xbd', # ½ + 0xbe : b'\xc2\xbe', # ¾ + 0xbf : b'\xc2\xbf', # ¿ + 0xc0 : b'\xc3\x80', # À + 0xc1 : b'\xc3\x81', # Á + 0xc2 : b'\xc3\x82', #  + 0xc3 : b'\xc3\x83', # à + 0xc4 : b'\xc3\x84', # Ä + 0xc5 : b'\xc3\x85', # Å + 0xc6 : b'\xc3\x86', # Æ + 0xc7 : b'\xc3\x87', # Ç + 0xc8 : b'\xc3\x88', # È + 0xc9 : b'\xc3\x89', # É + 0xca : b'\xc3\x8a', # Ê + 0xcb : b'\xc3\x8b', # Ë + 0xcc : b'\xc3\x8c', # Ì + 0xcd : b'\xc3\x8d', # Í + 0xce : b'\xc3\x8e', # Î + 0xcf : b'\xc3\x8f', # Ï + 0xd0 : b'\xc3\x90', # Ð + 0xd1 : b'\xc3\x91', # Ñ + 0xd2 : b'\xc3\x92', # Ò + 0xd3 : b'\xc3\x93', # Ó + 0xd4 : b'\xc3\x94', # Ô + 0xd5 : b'\xc3\x95', # Õ + 0xd6 : b'\xc3\x96', # Ö + 0xd7 : b'\xc3\x97', # × + 0xd8 : b'\xc3\x98', # Ø + 0xd9 : b'\xc3\x99', # Ù + 0xda : b'\xc3\x9a', # Ú + 0xdb : b'\xc3\x9b', # Û + 0xdc : b'\xc3\x9c', # Ü + 0xdd : b'\xc3\x9d', # Ý + 0xde : b'\xc3\x9e', # Þ + 0xdf : b'\xc3\x9f', # ß + 0xe0 : b'\xc3\xa0', # à + 0xe1 : b'\xa1', # á + 0xe2 : b'\xc3\xa2', # â + 0xe3 : b'\xc3\xa3', # ã + 0xe4 : b'\xc3\xa4', # ä + 0xe5 : b'\xc3\xa5', # å + 0xe6 : b'\xc3\xa6', # æ + 0xe7 : b'\xc3\xa7', # ç + 0xe8 : b'\xc3\xa8', # è + 0xe9 : b'\xc3\xa9', # é + 0xea : b'\xc3\xaa', # ê + 0xeb : b'\xc3\xab', # ë + 0xec : b'\xc3\xac', # ì + 0xed : b'\xc3\xad', # í + 0xee : b'\xc3\xae', # î + 0xef : b'\xc3\xaf', # ï + 0xf0 : b'\xc3\xb0', # ð + 0xf1 : b'\xc3\xb1', # ñ + 0xf2 : b'\xc3\xb2', # ò + 0xf3 : b'\xc3\xb3', # ó + 0xf4 : b'\xc3\xb4', # ô + 0xf5 : b'\xc3\xb5', # õ + 0xf6 : b'\xc3\xb6', # ö + 0xf7 : b'\xc3\xb7', # ÷ + 0xf8 : b'\xc3\xb8', # ø + 0xf9 : b'\xc3\xb9', # ù + 0xfa : b'\xc3\xba', # ú + 0xfb : b'\xc3\xbb', # û + 0xfc : b'\xc3\xbc', # ü + 0xfd : b'\xc3\xbd', # ý + 0xfe : b'\xc3\xbe', # þ + } + + MULTIBYTE_MARKERS_AND_SIZES = [ + (0xc2, 0xdf, 2), # 2-byte characters start with a byte C2-DF + (0xe0, 0xef, 3), # 3-byte characters start with E0-EF + (0xf0, 0xf4, 4), # 4-byte characters start with F0-F4 + ] + + FIRST_MULTIBYTE_MARKER = MULTIBYTE_MARKERS_AND_SIZES[0][0] + LAST_MULTIBYTE_MARKER = MULTIBYTE_MARKERS_AND_SIZES[-1][1] + + @classmethod + def detwingle(cls, in_bytes, main_encoding="utf8", + embedded_encoding="windows-1252"): + """Fix characters from one encoding embedded in some other encoding. + + Currently the only situation supported is Windows-1252 (or its + subset ISO-8859-1), embedded in UTF-8. + + The input must be a bytestring. If you've already converted + the document to Unicode, you're too late. + + The output is a bytestring in which `embedded_encoding` + characters have been converted to their `main_encoding` + equivalents. + """ + if embedded_encoding.replace('_', '-').lower() not in ( + 'windows-1252', 'windows_1252'): + raise NotImplementedError( + "Windows-1252 and ISO-8859-1 are the only currently supported " + "embedded encodings.") + + if main_encoding.lower() not in ('utf8', 'utf-8'): + raise NotImplementedError( + "UTF-8 is the only currently supported main encoding.") + + byte_chunks = [] + + chunk_start = 0 + pos = 0 + while pos < len(in_bytes): + byte = in_bytes[pos] + if not isinstance(byte, int): + # Python 2.x + byte = ord(byte) + if (byte >= cls.FIRST_MULTIBYTE_MARKER + and byte <= cls.LAST_MULTIBYTE_MARKER): + # This is the start of a UTF-8 multibyte character. Skip + # to the end. + for start, end, size in cls.MULTIBYTE_MARKERS_AND_SIZES: + if byte >= start and byte <= end: + pos += size + break + elif byte >= 0x80 and byte in cls.WINDOWS_1252_TO_UTF8: + # We found a Windows-1252 character! + # Save the string up to this point as a chunk. + byte_chunks.append(in_bytes[chunk_start:pos]) + + # Now translate the Windows-1252 character into UTF-8 + # and add it as another, one-byte chunk. + byte_chunks.append(cls.WINDOWS_1252_TO_UTF8[byte]) + pos += 1 + chunk_start = pos + else: + # Go on to the next character. + pos += 1 + if chunk_start == 0: + # The string is unchanged. + return in_bytes + else: + # Store the final chunk. + byte_chunks.append(in_bytes[chunk_start:]) + return b''.join(byte_chunks) + diff --git a/venv/lib/python3.7/site-packages/bs4/diagnose.py b/venv/lib/python3.7/site-packages/bs4/diagnose.py new file mode 100644 index 0000000..a1ae23d --- /dev/null +++ b/venv/lib/python3.7/site-packages/bs4/diagnose.py @@ -0,0 +1,224 @@ +"""Diagnostic functions, mainly for use when doing tech support.""" + +# Use of this source code is governed by the MIT license. +__license__ = "MIT" + +import cProfile +from io import StringIO +from html.parser import HTMLParser +import bs4 +from bs4 import BeautifulSoup, __version__ +from bs4.builder import builder_registry + +import os +import pstats +import random +import tempfile +import time +import traceback +import sys +import cProfile + +def diagnose(data): + """Diagnostic suite for isolating common problems.""" + print("Diagnostic running on Beautiful Soup %s" % __version__) + print("Python version %s" % sys.version) + + basic_parsers = ["html.parser", "html5lib", "lxml"] + for name in basic_parsers: + for builder in builder_registry.builders: + if name in builder.features: + break + else: + basic_parsers.remove(name) + print(( + "I noticed that %s is not installed. Installing it may help." % + name)) + + if 'lxml' in basic_parsers: + basic_parsers.append("lxml-xml") + try: + from lxml import etree + print("Found lxml version %s" % ".".join(map(str,etree.LXML_VERSION))) + except ImportError as e: + print ( + "lxml is not installed or couldn't be imported.") + + + if 'html5lib' in basic_parsers: + try: + import html5lib + print("Found html5lib version %s" % html5lib.__version__) + except ImportError as e: + print ( + "html5lib is not installed or couldn't be imported.") + + if hasattr(data, 'read'): + data = data.read() + elif data.startswith("http:") or data.startswith("https:"): + print('"%s" looks like a URL. Beautiful Soup is not an HTTP client.' % data) + print("You need to use some other library to get the document behind the URL, and feed that document to Beautiful Soup.") + return + else: + try: + if os.path.exists(data): + print('"%s" looks like a filename. Reading data from the file.' % data) + with open(data) as fp: + data = fp.read() + except ValueError: + # This can happen on some platforms when the 'filename' is + # too long. Assume it's data and not a filename. + pass + print() + + for parser in basic_parsers: + print("Trying to parse your markup with %s" % parser) + success = False + try: + soup = BeautifulSoup(data, features=parser) + success = True + except Exception as e: + print("%s could not parse the markup." % parser) + traceback.print_exc() + if success: + print("Here's what %s did with the markup:" % parser) + print(soup.prettify()) + + print("-" * 80) + +def lxml_trace(data, html=True, **kwargs): + """Print out the lxml events that occur during parsing. + + This lets you see how lxml parses a document when no Beautiful + Soup code is running. + """ + from lxml import etree + for event, element in etree.iterparse(StringIO(data), html=html, **kwargs): + print(("%s, %4s, %s" % (event, element.tag, element.text))) + +class AnnouncingParser(HTMLParser): + """Announces HTMLParser parse events, without doing anything else.""" + + def _p(self, s): + print(s) + + def handle_starttag(self, name, attrs): + self._p("%s START" % name) + + def handle_endtag(self, name): + self._p("%s END" % name) + + def handle_data(self, data): + self._p("%s DATA" % data) + + def handle_charref(self, name): + self._p("%s CHARREF" % name) + + def handle_entityref(self, name): + self._p("%s ENTITYREF" % name) + + def handle_comment(self, data): + self._p("%s COMMENT" % data) + + def handle_decl(self, data): + self._p("%s DECL" % data) + + def unknown_decl(self, data): + self._p("%s UNKNOWN-DECL" % data) + + def handle_pi(self, data): + self._p("%s PI" % data) + +def htmlparser_trace(data): + """Print out the HTMLParser events that occur during parsing. + + This lets you see how HTMLParser parses a document when no + Beautiful Soup code is running. + """ + parser = AnnouncingParser() + parser.feed(data) + +_vowels = "aeiou" +_consonants = "bcdfghjklmnpqrstvwxyz" + +def rword(length=5): + "Generate a random word-like string." + s = '' + for i in range(length): + if i % 2 == 0: + t = _consonants + else: + t = _vowels + s += random.choice(t) + return s + +def rsentence(length=4): + "Generate a random sentence-like string." + return " ".join(rword(random.randint(4,9)) for i in range(length)) + +def rdoc(num_elements=1000): + """Randomly generate an invalid HTML document.""" + tag_names = ['p', 'div', 'span', 'i', 'b', 'script', 'table'] + elements = [] + for i in range(num_elements): + choice = random.randint(0,3) + if choice == 0: + # New tag. + tag_name = random.choice(tag_names) + elements.append("<%s>" % tag_name) + elif choice == 1: + elements.append(rsentence(random.randint(1,4))) + elif choice == 2: + # Close a tag. + tag_name = random.choice(tag_names) + elements.append("" % tag_name) + return "" + "\n".join(elements) + "" + +def benchmark_parsers(num_elements=100000): + """Very basic head-to-head performance benchmark.""" + print("Comparative parser benchmark on Beautiful Soup %s" % __version__) + data = rdoc(num_elements) + print("Generated a large invalid HTML document (%d bytes)." % len(data)) + + for parser in ["lxml", ["lxml", "html"], "html5lib", "html.parser"]: + success = False + try: + a = time.time() + soup = BeautifulSoup(data, parser) + b = time.time() + success = True + except Exception as e: + print("%s could not parse the markup." % parser) + traceback.print_exc() + if success: + print("BS4+%s parsed the markup in %.2fs." % (parser, b-a)) + + from lxml import etree + a = time.time() + etree.HTML(data) + b = time.time() + print("Raw lxml parsed the markup in %.2fs." % (b-a)) + + import html5lib + parser = html5lib.HTMLParser() + a = time.time() + parser.parse(data) + b = time.time() + print("Raw html5lib parsed the markup in %.2fs." % (b-a)) + +def profile(num_elements=100000, parser="lxml"): + + filehandle = tempfile.NamedTemporaryFile() + filename = filehandle.name + + data = rdoc(num_elements) + vars = dict(bs4=bs4, data=data, parser=parser) + cProfile.runctx('bs4.BeautifulSoup(data, parser)' , vars, vars, filename) + + stats = pstats.Stats(filename) + # stats.strip_dirs() + stats.sort_stats("cumulative") + stats.print_stats('_html5lib|bs4', 50) + +if __name__ == '__main__': + diagnose(sys.stdin.read()) diff --git a/venv/lib/python3.7/site-packages/bs4/element.py b/venv/lib/python3.7/site-packages/bs4/element.py new file mode 100644 index 0000000..de6ddaf --- /dev/null +++ b/venv/lib/python3.7/site-packages/bs4/element.py @@ -0,0 +1,1603 @@ +# Use of this source code is governed by the MIT license. +__license__ = "MIT" + +try: + from collections.abc import Callable # Python 3.6 +except ImportError as e: + from collections import Callable +import re +import sys +import warnings +import collections +try: + import soupsieve +except ImportError as e: + soupsieve = None + warnings.warn( + 'The soupsieve package is not installed. CSS selectors cannot be used.' + ) + +from bs4.formatter import ( + Formatter, + HTMLFormatter, + XMLFormatter, +) + +DEFAULT_OUTPUT_ENCODING = "utf-8" +PY3K = (sys.version_info[0] > 2) + +nonwhitespace_re = re.compile(r"\S+") + +# NOTE: This isn't used as of 4.7.0. I'm leaving it for a little bit on +# the off chance someone imported it for their own use. +whitespace_re = re.compile(r"\s+") + +def _alias(attr): + """Alias one attribute name to another for backward compatibility""" + @property + def alias(self): + return getattr(self, attr) + + @alias.setter + def alias(self): + return setattr(self, attr) + return alias + + +class NamespacedAttribute(str): + + def __new__(cls, prefix, name=None, namespace=None): + if not name: + # This is the default namespace. Its name "has no value" + # per https://www.w3.org/TR/xml-names/#defaulting + name = None + + if name is None: + obj = str.__new__(cls, prefix) + elif prefix is None: + # Not really namespaced. + obj = str.__new__(cls, name) + else: + obj = str.__new__(cls, prefix + ":" + name) + obj.prefix = prefix + obj.name = name + obj.namespace = namespace + return obj + +class AttributeValueWithCharsetSubstitution(str): + """A stand-in object for a character encoding specified in HTML.""" + +class CharsetMetaAttributeValue(AttributeValueWithCharsetSubstitution): + """A generic stand-in for the value of a meta tag's 'charset' attribute. + + When Beautiful Soup parses the markup '', the + value of the 'charset' attribute will be one of these objects. + """ + + def __new__(cls, original_value): + obj = str.__new__(cls, original_value) + obj.original_value = original_value + return obj + + def encode(self, encoding): + return encoding + + +class ContentMetaAttributeValue(AttributeValueWithCharsetSubstitution): + """A generic stand-in for the value of a meta tag's 'content' attribute. + + When Beautiful Soup parses the markup: + + + The value of the 'content' attribute will be one of these objects. + """ + + CHARSET_RE = re.compile(r"((^|;)\s*charset=)([^;]*)", re.M) + + def __new__(cls, original_value): + match = cls.CHARSET_RE.search(original_value) + if match is None: + # No substitution necessary. + return str.__new__(str, original_value) + + obj = str.__new__(cls, original_value) + obj.original_value = original_value + return obj + + def encode(self, encoding): + def rewrite(match): + return match.group(1) + encoding + return self.CHARSET_RE.sub(rewrite, self.original_value) + + +class PageElement(object): + """Contains the navigational information for some part of the page + (either a tag or a piece of text)""" + + def setup(self, parent=None, previous_element=None, next_element=None, + previous_sibling=None, next_sibling=None): + """Sets up the initial relations between this element and + other elements.""" + self.parent = parent + + self.previous_element = previous_element + if previous_element is not None: + self.previous_element.next_element = self + + self.next_element = next_element + if self.next_element is not None: + self.next_element.previous_element = self + + self.next_sibling = next_sibling + if self.next_sibling is not None: + self.next_sibling.previous_sibling = self + + if (previous_sibling is None + and self.parent is not None and self.parent.contents): + previous_sibling = self.parent.contents[-1] + + self.previous_sibling = previous_sibling + if previous_sibling is not None: + self.previous_sibling.next_sibling = self + + def format_string(self, s, formatter): + """Format the given string using the given formatter.""" + if formatter is None: + return s + if not isinstance(formatter, Formatter): + formatter = self.formatter_for_name(formatter) + output = formatter.substitute(s) + return output + + def formatter_for_name(self, formatter): + """Look up or create a Formatter for the given identifier, + if necessary. + + :param formatter: Can be a Formatter object (used as-is), a + function (used as the entity substitution hook for an + XMLFormatter or HTMLFormatter), or a string (used to look up + an XMLFormatter or HTMLFormatter in the appropriate registry. + """ + if isinstance(formatter, Formatter): + return formatter + if self._is_xml: + c = XMLFormatter + else: + c = HTMLFormatter + if isinstance(formatter, collections.Callable): + return c(entity_substitution=formatter) + return c.REGISTRY[formatter] + + @property + def _is_xml(self): + """Is this element part of an XML tree or an HTML tree? + + This is used in formatter_for_name, when deciding whether an + XMLFormatter or HTMLFormatter is more appropriate. It can be + inefficient, but it should be called very rarely. + """ + if self.known_xml is not None: + # Most of the time we will have determined this when the + # document is parsed. + return self.known_xml + + # Otherwise, it's likely that this element was created by + # direct invocation of the constructor from within the user's + # Python code. + if self.parent is None: + # This is the top-level object. It should have .known_xml set + # from tree creation. If not, take a guess--BS is usually + # used on HTML markup. + return getattr(self, 'is_xml', False) + return self.parent._is_xml + + nextSibling = _alias("next_sibling") # BS3 + previousSibling = _alias("previous_sibling") # BS3 + + def replace_with(self, replace_with): + if self.parent is None: + raise ValueError( + "Cannot replace one element with another when the " + "element to be replaced is not part of a tree.") + if replace_with is self: + return + if replace_with is self.parent: + raise ValueError("Cannot replace a Tag with its parent.") + old_parent = self.parent + my_index = self.parent.index(self) + self.extract() + old_parent.insert(my_index, replace_with) + return self + replaceWith = replace_with # BS3 + + def unwrap(self): + my_parent = self.parent + if self.parent is None: + raise ValueError( + "Cannot replace an element with its contents when that" + "element is not part of a tree.") + my_index = self.parent.index(self) + self.extract() + for child in reversed(self.contents[:]): + my_parent.insert(my_index, child) + return self + replace_with_children = unwrap + replaceWithChildren = unwrap # BS3 + + def wrap(self, wrap_inside): + me = self.replace_with(wrap_inside) + wrap_inside.append(me) + return wrap_inside + + def extract(self): + """Destructively rips this element out of the tree.""" + if self.parent is not None: + del self.parent.contents[self.parent.index(self)] + + #Find the two elements that would be next to each other if + #this element (and any children) hadn't been parsed. Connect + #the two. + last_child = self._last_descendant() + next_element = last_child.next_element + + if (self.previous_element is not None and + self.previous_element is not next_element): + self.previous_element.next_element = next_element + if next_element is not None and next_element is not self.previous_element: + next_element.previous_element = self.previous_element + self.previous_element = None + last_child.next_element = None + + self.parent = None + if (self.previous_sibling is not None + and self.previous_sibling is not self.next_sibling): + self.previous_sibling.next_sibling = self.next_sibling + if (self.next_sibling is not None + and self.next_sibling is not self.previous_sibling): + self.next_sibling.previous_sibling = self.previous_sibling + self.previous_sibling = self.next_sibling = None + return self + + def _last_descendant(self, is_initialized=True, accept_self=True): + "Finds the last element beneath this object to be parsed." + if is_initialized and self.next_sibling is not None: + last_child = self.next_sibling.previous_element + else: + last_child = self + while isinstance(last_child, Tag) and last_child.contents: + last_child = last_child.contents[-1] + if not accept_self and last_child is self: + last_child = None + return last_child + # BS3: Not part of the API! + _lastRecursiveChild = _last_descendant + + def insert(self, position, new_child): + if new_child is None: + raise ValueError("Cannot insert None into a tag.") + if new_child is self: + raise ValueError("Cannot insert a tag into itself.") + if (isinstance(new_child, str) + and not isinstance(new_child, NavigableString)): + new_child = NavigableString(new_child) + + from bs4 import BeautifulSoup + if isinstance(new_child, BeautifulSoup): + # We don't want to end up with a situation where one BeautifulSoup + # object contains another. Insert the children one at a time. + for subchild in list(new_child.contents): + self.insert(position, subchild) + position += 1 + return + position = min(position, len(self.contents)) + if hasattr(new_child, 'parent') and new_child.parent is not None: + # We're 'inserting' an element that's already one + # of this object's children. + if new_child.parent is self: + current_index = self.index(new_child) + if current_index < position: + # We're moving this element further down the list + # of this object's children. That means that when + # we extract this element, our target index will + # jump down one. + position -= 1 + new_child.extract() + + new_child.parent = self + previous_child = None + if position == 0: + new_child.previous_sibling = None + new_child.previous_element = self + else: + previous_child = self.contents[position - 1] + new_child.previous_sibling = previous_child + new_child.previous_sibling.next_sibling = new_child + new_child.previous_element = previous_child._last_descendant(False) + if new_child.previous_element is not None: + new_child.previous_element.next_element = new_child + + new_childs_last_element = new_child._last_descendant(False) + + if position >= len(self.contents): + new_child.next_sibling = None + + parent = self + parents_next_sibling = None + while parents_next_sibling is None and parent is not None: + parents_next_sibling = parent.next_sibling + parent = parent.parent + if parents_next_sibling is not None: + # We found the element that comes next in the document. + break + if parents_next_sibling is not None: + new_childs_last_element.next_element = parents_next_sibling + else: + # The last element of this tag is the last element in + # the document. + new_childs_last_element.next_element = None + else: + next_child = self.contents[position] + new_child.next_sibling = next_child + if new_child.next_sibling is not None: + new_child.next_sibling.previous_sibling = new_child + new_childs_last_element.next_element = next_child + + if new_childs_last_element.next_element is not None: + new_childs_last_element.next_element.previous_element = new_childs_last_element + self.contents.insert(position, new_child) + + def append(self, tag): + """Appends the given tag to the contents of this tag.""" + self.insert(len(self.contents), tag) + + def extend(self, tags): + """Appends the given tags to the contents of this tag.""" + for tag in tags: + self.append(tag) + + def insert_before(self, *args): + """Makes the given element(s) the immediate predecessor of this one. + + The elements will have the same parent, and the given elements + will be immediately before this one. + """ + parent = self.parent + if parent is None: + raise ValueError( + "Element has no parent, so 'before' has no meaning.") + if any(x is self for x in args): + raise ValueError("Can't insert an element before itself.") + for predecessor in args: + # Extract first so that the index won't be screwed up if they + # are siblings. + if isinstance(predecessor, PageElement): + predecessor.extract() + index = parent.index(self) + parent.insert(index, predecessor) + + def insert_after(self, *args): + """Makes the given element(s) the immediate successor of this one. + + The elements will have the same parent, and the given elements + will be immediately after this one. + """ + # Do all error checking before modifying the tree. + parent = self.parent + if parent is None: + raise ValueError( + "Element has no parent, so 'after' has no meaning.") + if any(x is self for x in args): + raise ValueError("Can't insert an element after itself.") + + offset = 0 + for successor in args: + # Extract first so that the index won't be screwed up if they + # are siblings. + if isinstance(successor, PageElement): + successor.extract() + index = parent.index(self) + parent.insert(index+1+offset, successor) + offset += 1 + + def find_next(self, name=None, attrs={}, text=None, **kwargs): + """Returns the first item that matches the given criteria and + appears after this Tag in the document.""" + return self._find_one(self.find_all_next, name, attrs, text, **kwargs) + findNext = find_next # BS3 + + def find_all_next(self, name=None, attrs={}, text=None, limit=None, + **kwargs): + """Returns all items that match the given criteria and appear + after this Tag in the document.""" + return self._find_all(name, attrs, text, limit, self.next_elements, + **kwargs) + findAllNext = find_all_next # BS3 + + def find_next_sibling(self, name=None, attrs={}, text=None, **kwargs): + """Returns the closest sibling to this Tag that matches the + given criteria and appears after this Tag in the document.""" + return self._find_one(self.find_next_siblings, name, attrs, text, + **kwargs) + findNextSibling = find_next_sibling # BS3 + + def find_next_siblings(self, name=None, attrs={}, text=None, limit=None, + **kwargs): + """Returns the siblings of this Tag that match the given + criteria and appear after this Tag in the document.""" + return self._find_all(name, attrs, text, limit, + self.next_siblings, **kwargs) + findNextSiblings = find_next_siblings # BS3 + fetchNextSiblings = find_next_siblings # BS2 + + def find_previous(self, name=None, attrs={}, text=None, **kwargs): + """Returns the first item that matches the given criteria and + appears before this Tag in the document.""" + return self._find_one( + self.find_all_previous, name, attrs, text, **kwargs) + findPrevious = find_previous # BS3 + + def find_all_previous(self, name=None, attrs={}, text=None, limit=None, + **kwargs): + """Returns all items that match the given criteria and appear + before this Tag in the document.""" + return self._find_all(name, attrs, text, limit, self.previous_elements, + **kwargs) + findAllPrevious = find_all_previous # BS3 + fetchPrevious = find_all_previous # BS2 + + def find_previous_sibling(self, name=None, attrs={}, text=None, **kwargs): + """Returns the closest sibling to this Tag that matches the + given criteria and appears before this Tag in the document.""" + return self._find_one(self.find_previous_siblings, name, attrs, text, + **kwargs) + findPreviousSibling = find_previous_sibling # BS3 + + def find_previous_siblings(self, name=None, attrs={}, text=None, + limit=None, **kwargs): + """Returns the siblings of this Tag that match the given + criteria and appear before this Tag in the document.""" + return self._find_all(name, attrs, text, limit, + self.previous_siblings, **kwargs) + findPreviousSiblings = find_previous_siblings # BS3 + fetchPreviousSiblings = find_previous_siblings # BS2 + + def find_parent(self, name=None, attrs={}, **kwargs): + """Returns the closest parent of this Tag that matches the given + criteria.""" + # NOTE: We can't use _find_one because findParents takes a different + # set of arguments. + r = None + l = self.find_parents(name, attrs, 1, **kwargs) + if l: + r = l[0] + return r + findParent = find_parent # BS3 + + def find_parents(self, name=None, attrs={}, limit=None, **kwargs): + """Returns the parents of this Tag that match the given + criteria.""" + + return self._find_all(name, attrs, None, limit, self.parents, + **kwargs) + findParents = find_parents # BS3 + fetchParents = find_parents # BS2 + + @property + def next(self): + return self.next_element + + @property + def previous(self): + return self.previous_element + + #These methods do the real heavy lifting. + + def _find_one(self, method, name, attrs, text, **kwargs): + r = None + l = method(name, attrs, text, 1, **kwargs) + if l: + r = l[0] + return r + + def _find_all(self, name, attrs, text, limit, generator, **kwargs): + "Iterates over a generator looking for things that match." + + if text is None and 'string' in kwargs: + text = kwargs['string'] + del kwargs['string'] + + if isinstance(name, SoupStrainer): + strainer = name + else: + strainer = SoupStrainer(name, attrs, text, **kwargs) + + if text is None and not limit and not attrs and not kwargs: + if name is True or name is None: + # Optimization to find all tags. + result = (element for element in generator + if isinstance(element, Tag)) + return ResultSet(strainer, result) + elif isinstance(name, str): + # Optimization to find all tags with a given name. + if name.count(':') == 1: + # This is a name with a prefix. If this is a namespace-aware document, + # we need to match the local name against tag.name. If not, + # we need to match the fully-qualified name against tag.name. + prefix, local_name = name.split(':', 1) + else: + prefix = None + local_name = name + result = (element for element in generator + if isinstance(element, Tag) + and ( + element.name == name + ) or ( + element.name == local_name + and (prefix is None or element.prefix == prefix) + ) + ) + return ResultSet(strainer, result) + results = ResultSet(strainer) + while True: + try: + i = next(generator) + except StopIteration: + break + if i: + found = strainer.search(i) + if found: + results.append(found) + if limit and len(results) >= limit: + break + return results + + #These generators can be used to navigate starting from both + #NavigableStrings and Tags. + @property + def next_elements(self): + i = self.next_element + while i is not None: + yield i + i = i.next_element + + @property + def next_siblings(self): + i = self.next_sibling + while i is not None: + yield i + i = i.next_sibling + + @property + def previous_elements(self): + i = self.previous_element + while i is not None: + yield i + i = i.previous_element + + @property + def previous_siblings(self): + i = self.previous_sibling + while i is not None: + yield i + i = i.previous_sibling + + @property + def parents(self): + i = self.parent + while i is not None: + yield i + i = i.parent + + # Old non-property versions of the generators, for backwards + # compatibility with BS3. + def nextGenerator(self): + return self.next_elements + + def nextSiblingGenerator(self): + return self.next_siblings + + def previousGenerator(self): + return self.previous_elements + + def previousSiblingGenerator(self): + return self.previous_siblings + + def parentGenerator(self): + return self.parents + + +class NavigableString(str, PageElement): + + PREFIX = '' + SUFFIX = '' + + # We can't tell just by looking at a string whether it's contained + # in an XML document or an HTML document. + + known_xml = None + + def __new__(cls, value): + """Create a new NavigableString. + + When unpickling a NavigableString, this method is called with + the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be + passed in to the superclass's __new__ or the superclass won't know + how to handle non-ASCII characters. + """ + if isinstance(value, str): + u = str.__new__(cls, value) + else: + u = str.__new__(cls, value, DEFAULT_OUTPUT_ENCODING) + u.setup() + return u + + def __copy__(self): + """A copy of a NavigableString has the same contents and class + as the original, but it is not connected to the parse tree. + """ + return type(self)(self) + + def __getnewargs__(self): + return (str(self),) + + def __getattr__(self, attr): + """text.string gives you text. This is for backwards + compatibility for Navigable*String, but for CData* it lets you + get the string without the CData wrapper.""" + if attr == 'string': + return self + else: + raise AttributeError( + "'%s' object has no attribute '%s'" % ( + self.__class__.__name__, attr)) + + def output_ready(self, formatter="minimal"): + """Run the string through the provided formatter.""" + output = self.format_string(self, formatter) + return self.PREFIX + output + self.SUFFIX + + @property + def name(self): + return None + + @name.setter + def name(self, name): + raise AttributeError("A NavigableString cannot be given a name.") + +class PreformattedString(NavigableString): + """A NavigableString not subject to the normal formatting rules. + + The string will be passed into the formatter (to trigger side effects), + but the return value will be ignored. + """ + + def output_ready(self, formatter=None): + """CData strings are passed into the formatter, purely + for any side effects. The return value is ignored. + """ + if formatter is not None: + ignore = self.format_string(self, formatter) + return self.PREFIX + self + self.SUFFIX + +class CData(PreformattedString): + + PREFIX = '' + +class ProcessingInstruction(PreformattedString): + """A SGML processing instruction.""" + + PREFIX = '' + +class XMLProcessingInstruction(ProcessingInstruction): + """An XML processing instruction.""" + PREFIX = '' + +class Comment(PreformattedString): + + PREFIX = '' + + +class Declaration(PreformattedString): + PREFIX = '' + + +class Doctype(PreformattedString): + + @classmethod + def for_name_and_ids(cls, name, pub_id, system_id): + value = name or '' + if pub_id is not None: + value += ' PUBLIC "%s"' % pub_id + if system_id is not None: + value += ' "%s"' % system_id + elif system_id is not None: + value += ' SYSTEM "%s"' % system_id + + return Doctype(value) + + PREFIX = '\n' + + +class Tag(PageElement): + + """Represents a found HTML tag with its attributes and contents.""" + + def __init__(self, parser=None, builder=None, name=None, namespace=None, + prefix=None, attrs=None, parent=None, previous=None, + is_xml=None, sourceline=None, sourcepos=None, + can_be_empty_element=None, cdata_list_attributes=None, + preserve_whitespace_tags=None + ): + "Basic constructor." + + if parser is None: + self.parser_class = None + else: + # We don't actually store the parser object: that lets extracted + # chunks be garbage-collected. + self.parser_class = parser.__class__ + if name is None: + raise ValueError("No value provided for new tag's name.") + self.name = name + self.namespace = namespace + self.prefix = prefix + if ((not builder or builder.store_line_numbers) + and (sourceline is not None or sourcepos is not None)): + self.sourceline = sourceline + self.sourcepos = sourcepos + if attrs is None: + attrs = {} + elif attrs: + if builder is not None and builder.cdata_list_attributes: + attrs = builder._replace_cdata_list_attribute_values( + self.name, attrs) + else: + attrs = dict(attrs) + else: + attrs = dict(attrs) + + # If possible, determine ahead of time whether this tag is an + # XML tag. + if builder: + self.known_xml = builder.is_xml + else: + self.known_xml = is_xml + self.attrs = attrs + self.contents = [] + self.setup(parent, previous) + self.hidden = False + + if builder is None: + # In the absence of a TreeBuilder, use whatever values were + # passed in here. They're probably None, unless this is a copy of some + # other tag. + self.can_be_empty_element = can_be_empty_element + self.cdata_list_attributes = cdata_list_attributes + self.preserve_whitespace_tags = preserve_whitespace_tags + else: + # Set up any substitutions for this tag, such as the charset in a META tag. + builder.set_up_substitutions(self) + + # Ask the TreeBuilder whether this tag might be an empty-element tag. + self.can_be_empty_element = builder.can_be_empty_element(name) + + # Keep track of the list of attributes of this tag that + # might need to be treated as a list. + # + # For performance reasons, we store the whole data structure + # rather than asking the question of every tag. Asking would + # require building a new data structure every time, and + # (unlike can_be_empty_element), we almost never need + # to check this. + self.cdata_list_attributes = builder.cdata_list_attributes + + # Keep track of the names that might cause this tag to be treated as a + # whitespace-preserved tag. + self.preserve_whitespace_tags = builder.preserve_whitespace_tags + + parserClass = _alias("parser_class") # BS3 + + def __copy__(self): + """A copy of a Tag is a new Tag, unconnected to the parse tree. + Its contents are a copy of the old Tag's contents. + """ + clone = type(self)( + None, self.builder, self.name, self.namespace, + self.prefix, self.attrs, is_xml=self._is_xml, + sourceline=self.sourceline, sourcepos=self.sourcepos, + can_be_empty_element=self.can_be_empty_element, + cdata_list_attributes=self.cdata_list_attributes, + preserve_whitespace_tags=self.preserve_whitespace_tags + ) + for attr in ('can_be_empty_element', 'hidden'): + setattr(clone, attr, getattr(self, attr)) + for child in self.contents: + clone.append(child.__copy__()) + return clone + + @property + def is_empty_element(self): + """Is this tag an empty-element tag? (aka a self-closing tag) + + A tag that has contents is never an empty-element tag. + + A tag that has no contents may or may not be an empty-element + tag. It depends on the builder used to create the tag. If the + builder has a designated list of empty-element tags, then only + a tag whose name shows up in that list is considered an + empty-element tag. + + If the builder has no designated list of empty-element tags, + then any tag with no contents is an empty-element tag. + """ + return len(self.contents) == 0 and self.can_be_empty_element + isSelfClosing = is_empty_element # BS3 + + @property + def string(self): + """Convenience property to get the single string within this tag. + + :Return: If this tag has a single string child, return value + is that string. If this tag has no children, or more than one + child, return value is None. If this tag has one child tag, + return value is the 'string' attribute of the child tag, + recursively. + """ + if len(self.contents) != 1: + return None + child = self.contents[0] + if isinstance(child, NavigableString): + return child + return child.string + + @string.setter + def string(self, string): + self.clear() + self.append(string.__class__(string)) + + def _all_strings(self, strip=False, types=(NavigableString, CData)): + """Yield all strings of certain classes, possibly stripping them. + + By default, yields only NavigableString and CData objects. So + no comments, processing instructions, etc. + """ + for descendant in self.descendants: + if ( + (types is None and not isinstance(descendant, NavigableString)) + or + (types is not None and type(descendant) not in types)): + continue + if strip: + descendant = descendant.strip() + if len(descendant) == 0: + continue + yield descendant + + strings = property(_all_strings) + + @property + def stripped_strings(self): + for string in self._all_strings(True): + yield string + + def get_text(self, separator="", strip=False, + types=(NavigableString, CData)): + """ + Get all child strings, concatenated using the given separator. + """ + return separator.join([s for s in self._all_strings( + strip, types=types)]) + getText = get_text + text = property(get_text) + + def decompose(self): + """Recursively destroys the contents of this tree.""" + self.extract() + i = self + while i is not None: + next = i.next_element + i.__dict__.clear() + i.contents = [] + i = next + + def clear(self, decompose=False): + """ + Extract all children. If decompose is True, decompose instead. + """ + if decompose: + for element in self.contents[:]: + if isinstance(element, Tag): + element.decompose() + else: + element.extract() + else: + for element in self.contents[:]: + element.extract() + + def smooth(self): + """Smooth out this element's children by consolidating consecutive strings. + + This makes pretty-printed output look more natural following a + lot of operations that modified the tree. + """ + # Mark the first position of every pair of children that need + # to be consolidated. Do this rather than making a copy of + # self.contents, since in most cases very few strings will be + # affected. + marked = [] + for i, a in enumerate(self.contents): + if isinstance(a, Tag): + # Recursively smooth children. + a.smooth() + if i == len(self.contents)-1: + # This is the last item in .contents, and it's not a + # tag. There's no chance it needs any work. + continue + b = self.contents[i+1] + if (isinstance(a, NavigableString) + and isinstance(b, NavigableString) + and not isinstance(a, PreformattedString) + and not isinstance(b, PreformattedString) + ): + marked.append(i) + + # Go over the marked positions in reverse order, so that + # removing items from .contents won't affect the remaining + # positions. + for i in reversed(marked): + a = self.contents[i] + b = self.contents[i+1] + b.extract() + n = NavigableString(a+b) + a.replace_with(n) + + def index(self, element): + """ + Find the index of a child by identity, not value. Avoids issues with + tag.contents.index(element) getting the index of equal elements. + """ + for i, child in enumerate(self.contents): + if child is element: + return i + raise ValueError("Tag.index: element not in tag") + + def get(self, key, default=None): + """Returns the value of the 'key' attribute for the tag, or + the value given for 'default' if it doesn't have that + attribute.""" + return self.attrs.get(key, default) + + def get_attribute_list(self, key, default=None): + """The same as get(), but always returns a list.""" + value = self.get(key, default) + if not isinstance(value, list): + value = [value] + return value + + def has_attr(self, key): + return key in self.attrs + + def __hash__(self): + return str(self).__hash__() + + def __getitem__(self, key): + """tag[key] returns the value of the 'key' attribute for the tag, + and throws an exception if it's not there.""" + return self.attrs[key] + + def __iter__(self): + "Iterating over a tag iterates over its contents." + return iter(self.contents) + + def __len__(self): + "The length of a tag is the length of its list of contents." + return len(self.contents) + + def __contains__(self, x): + return x in self.contents + + def __bool__(self): + "A tag is non-None even if it has no contents." + return True + + def __setitem__(self, key, value): + """Setting tag[key] sets the value of the 'key' attribute for the + tag.""" + self.attrs[key] = value + + def __delitem__(self, key): + "Deleting tag[key] deletes all 'key' attributes for the tag." + self.attrs.pop(key, None) + + def __call__(self, *args, **kwargs): + """Calling a tag like a function is the same as calling its + find_all() method. Eg. tag('a') returns a list of all the A tags + found within this tag.""" + return self.find_all(*args, **kwargs) + + def __getattr__(self, tag): + #print "Getattr %s.%s" % (self.__class__, tag) + if len(tag) > 3 and tag.endswith('Tag'): + # BS3: soup.aTag -> "soup.find("a") + tag_name = tag[:-3] + warnings.warn( + '.%(name)sTag is deprecated, use .find("%(name)s") instead. If you really were looking for a tag called %(name)sTag, use .find("%(name)sTag")' % dict( + name=tag_name + ) + ) + return self.find(tag_name) + # We special case contents to avoid recursion. + elif not tag.startswith("__") and not tag == "contents": + return self.find(tag) + raise AttributeError( + "'%s' object has no attribute '%s'" % (self.__class__, tag)) + + def __eq__(self, other): + """Returns true iff this tag has the same name, the same attributes, + and the same contents (recursively) as the given tag.""" + if self is other: + return True + if (not hasattr(other, 'name') or + not hasattr(other, 'attrs') or + not hasattr(other, 'contents') or + self.name != other.name or + self.attrs != other.attrs or + len(self) != len(other)): + return False + for i, my_child in enumerate(self.contents): + if my_child != other.contents[i]: + return False + return True + + def __ne__(self, other): + """Returns true iff this tag is not identical to the other tag, + as defined in __eq__.""" + return not self == other + + def __repr__(self, encoding="unicode-escape"): + """Renders this tag as a string.""" + if PY3K: + # "The return value must be a string object", i.e. Unicode + return self.decode() + else: + # "The return value must be a string object", i.e. a bytestring. + # By convention, the return value of __repr__ should also be + # an ASCII string. + return self.encode(encoding) + + def __unicode__(self): + return self.decode() + + def __str__(self): + if PY3K: + return self.decode() + else: + return self.encode() + + if PY3K: + __str__ = __repr__ = __unicode__ + + def encode(self, encoding=DEFAULT_OUTPUT_ENCODING, + indent_level=None, formatter="minimal", + errors="xmlcharrefreplace"): + # Turn the data structure into Unicode, then encode the + # Unicode. + u = self.decode(indent_level, encoding, formatter) + return u.encode(encoding, errors) + + def decode(self, indent_level=None, + eventual_encoding=DEFAULT_OUTPUT_ENCODING, + formatter="minimal"): + """Returns a Unicode representation of this tag and its contents. + + :param eventual_encoding: The tag is destined to be + encoded into this encoding. This method is _not_ + responsible for performing that encoding. This information + is passed in so that it can be substituted in if the + document contains a tag that mentions the document's + encoding. + """ + + # First off, turn a non-Formatter `formatter` into a Formatter + # object. This will stop the lookup from happening over and + # over again. + if not isinstance(formatter, Formatter): + formatter = self.formatter_for_name(formatter) + attributes = formatter.attributes(self) + attrs = [] + for key, val in attributes: + if val is None: + decoded = key + else: + if isinstance(val, list) or isinstance(val, tuple): + val = ' '.join(val) + elif not isinstance(val, str): + val = str(val) + elif ( + isinstance(val, AttributeValueWithCharsetSubstitution) + and eventual_encoding is not None + ): + val = val.encode(eventual_encoding) + + text = formatter.attribute_value(val) + decoded = ( + str(key) + '=' + + formatter.quoted_attribute_value(text)) + attrs.append(decoded) + close = '' + closeTag = '' + + prefix = '' + if self.prefix: + prefix = self.prefix + ":" + + if self.is_empty_element: + close = formatter.void_element_close_prefix or '' + else: + closeTag = '' % (prefix, self.name) + + pretty_print = self._should_pretty_print(indent_level) + space = '' + indent_space = '' + if indent_level is not None: + indent_space = (' ' * (indent_level - 1)) + if pretty_print: + space = indent_space + indent_contents = indent_level + 1 + else: + indent_contents = None + contents = self.decode_contents( + indent_contents, eventual_encoding, formatter + ) + + if self.hidden: + # This is the 'document root' object. + s = contents + else: + s = [] + attribute_string = '' + if attrs: + attribute_string = ' ' + ' '.join(attrs) + if indent_level is not None: + # Even if this particular tag is not pretty-printed, + # we should indent up to the start of the tag. + s.append(indent_space) + s.append('<%s%s%s%s>' % ( + prefix, self.name, attribute_string, close)) + if pretty_print: + s.append("\n") + s.append(contents) + if pretty_print and contents and contents[-1] != "\n": + s.append("\n") + if pretty_print and closeTag: + s.append(space) + s.append(closeTag) + if indent_level is not None and closeTag and self.next_sibling: + # Even if this particular tag is not pretty-printed, + # we're now done with the tag, and we should add a + # newline if appropriate. + s.append("\n") + s = ''.join(s) + return s + + def _should_pretty_print(self, indent_level): + """Should this tag be pretty-printed?""" + return ( + indent_level is not None + and ( + not self.preserve_whitespace_tags + or self.name not in self.preserve_whitespace_tags + ) + ) + + def prettify(self, encoding=None, formatter="minimal"): + if encoding is None: + return self.decode(True, formatter=formatter) + else: + return self.encode(encoding, True, formatter=formatter) + + def decode_contents(self, indent_level=None, + eventual_encoding=DEFAULT_OUTPUT_ENCODING, + formatter="minimal"): + """Renders the contents of this tag as a Unicode string. + + :param indent_level: Each line of the rendering will be + indented this many spaces. + + :param eventual_encoding: The tag is destined to be + encoded into this encoding. decode_contents() is _not_ + responsible for performing that encoding. This information + is passed in so that it can be substituted in if the + document contains a tag that mentions the document's + encoding. + + :param formatter: A Formatter object, or a string naming one of + the standard Formatters. + """ + # First off, turn a string formatter into a Formatter object. This + # will stop the lookup from happening over and over again. + if not isinstance(formatter, Formatter): + formatter = self.formatter_for_name(formatter) + + pretty_print = (indent_level is not None) + s = [] + for c in self: + text = None + if isinstance(c, NavigableString): + text = c.output_ready(formatter) + elif isinstance(c, Tag): + s.append(c.decode(indent_level, eventual_encoding, + formatter)) + preserve_whitespace = ( + self.preserve_whitespace_tags and self.name in self.preserve_whitespace_tags + ) + if text and indent_level and not preserve_whitespace: + text = text.strip() + if text: + if pretty_print and not preserve_whitespace: + s.append(" " * (indent_level - 1)) + s.append(text) + if pretty_print and not preserve_whitespace: + s.append("\n") + return ''.join(s) + + def encode_contents( + self, indent_level=None, encoding=DEFAULT_OUTPUT_ENCODING, + formatter="minimal"): + """Renders the contents of this tag as a bytestring. + + :param indent_level: Each line of the rendering will be + indented this many spaces. + + :param eventual_encoding: The bytestring will be in this encoding. + + :param formatter: The output formatter responsible for converting + entities to Unicode characters. + """ + + contents = self.decode_contents(indent_level, encoding, formatter) + return contents.encode(encoding) + + # Old method for BS3 compatibility + def renderContents(self, encoding=DEFAULT_OUTPUT_ENCODING, + prettyPrint=False, indentLevel=0): + if not prettyPrint: + indentLevel = None + return self.encode_contents( + indent_level=indentLevel, encoding=encoding) + + #Soup methods + + def find(self, name=None, attrs={}, recursive=True, text=None, + **kwargs): + """Return only the first child of this Tag matching the given + criteria.""" + r = None + l = self.find_all(name, attrs, recursive, text, 1, **kwargs) + if l: + r = l[0] + return r + findChild = find + + def find_all(self, name=None, attrs={}, recursive=True, text=None, + limit=None, **kwargs): + """Extracts a list of Tag objects that match the given + criteria. You can specify the name of the Tag and any + attributes you want the Tag to have. + + The value of a key-value pair in the 'attrs' map can be a + string, a list of strings, a regular expression object, or a + callable that takes a string and returns whether or not the + string matches for some custom definition of 'matches'. The + same is true of the tag name.""" + + generator = self.descendants + if not recursive: + generator = self.children + return self._find_all(name, attrs, text, limit, generator, **kwargs) + findAll = find_all # BS3 + findChildren = find_all # BS2 + + #Generator methods + @property + def children(self): + # return iter() to make the purpose of the method clear + return iter(self.contents) # XXX This seems to be untested. + + @property + def descendants(self): + if not len(self.contents): + return + stopNode = self._last_descendant().next_element + current = self.contents[0] + while current is not stopNode: + yield current + current = current.next_element + + # CSS selector code + def select_one(self, selector, namespaces=None, **kwargs): + """Perform a CSS selection operation on the current element.""" + value = self.select(selector, namespaces, 1, **kwargs) + if value: + return value[0] + return None + + def select(self, selector, namespaces=None, limit=None, **kwargs): + """Perform a CSS selection operation on the current element. + + This uses the SoupSieve library. + + :param selector: A string containing a CSS selector. + + :param namespaces: A dictionary mapping namespace prefixes + used in the CSS selector to namespace URIs. By default, + Beautiful Soup will use the prefixes it encountered while + parsing the document. + + :param limit: After finding this number of results, stop looking. + + :param kwargs: Any extra arguments you'd like to pass in to + soupsieve.select(). + """ + if namespaces is None: + namespaces = self._namespaces + + if limit is None: + limit = 0 + if soupsieve is None: + raise NotImplementedError( + "Cannot execute CSS selectors because the soupsieve package is not installed." + ) + + return soupsieve.select(selector, self, namespaces, limit, **kwargs) + + # Old names for backwards compatibility + def childGenerator(self): + return self.children + + def recursiveChildGenerator(self): + return self.descendants + + def has_key(self, key): + """This was kind of misleading because has_key() (attributes) + was different from __in__ (contents). has_key() is gone in + Python 3, anyway.""" + warnings.warn('has_key is deprecated. Use has_attr("%s") instead.' % ( + key)) + return self.has_attr(key) + +# Next, a couple classes to represent queries and their results. +class SoupStrainer(object): + """Encapsulates a number of ways of matching a markup element (tag or + text).""" + + def __init__(self, name=None, attrs={}, text=None, **kwargs): + self.name = self._normalize_search_value(name) + if not isinstance(attrs, dict): + # Treat a non-dict value for attrs as a search for the 'class' + # attribute. + kwargs['class'] = attrs + attrs = None + + if 'class_' in kwargs: + # Treat class_="foo" as a search for the 'class' + # attribute, overriding any non-dict value for attrs. + kwargs['class'] = kwargs['class_'] + del kwargs['class_'] + + if kwargs: + if attrs: + attrs = attrs.copy() + attrs.update(kwargs) + else: + attrs = kwargs + normalized_attrs = {} + for key, value in list(attrs.items()): + normalized_attrs[key] = self._normalize_search_value(value) + + self.attrs = normalized_attrs + self.text = self._normalize_search_value(text) + + def _normalize_search_value(self, value): + # Leave it alone if it's a Unicode string, a callable, a + # regular expression, a boolean, or None. + if (isinstance(value, str) or isinstance(value, Callable) or hasattr(value, 'match') + or isinstance(value, bool) or value is None): + return value + + # If it's a bytestring, convert it to Unicode, treating it as UTF-8. + if isinstance(value, bytes): + return value.decode("utf8") + + # If it's listlike, convert it into a list of strings. + if hasattr(value, '__iter__'): + new_value = [] + for v in value: + if (hasattr(v, '__iter__') and not isinstance(v, bytes) + and not isinstance(v, str)): + # This is almost certainly the user's mistake. In the + # interests of avoiding infinite loops, we'll let + # it through as-is rather than doing a recursive call. + new_value.append(v) + else: + new_value.append(self._normalize_search_value(v)) + return new_value + + # Otherwise, convert it into a Unicode string. + # The unicode(str()) thing is so this will do the same thing on Python 2 + # and Python 3. + return str(str(value)) + + def __str__(self): + if self.text: + return self.text + else: + return "%s|%s" % (self.name, self.attrs) + + def search_tag(self, markup_name=None, markup_attrs={}): + found = None + markup = None + if isinstance(markup_name, Tag): + markup = markup_name + markup_attrs = markup + call_function_with_tag_data = ( + isinstance(self.name, Callable) + and not isinstance(markup_name, Tag)) + + if ((not self.name) + or call_function_with_tag_data + or (markup and self._matches(markup, self.name)) + or (not markup and self._matches(markup_name, self.name))): + if call_function_with_tag_data: + match = self.name(markup_name, markup_attrs) + else: + match = True + markup_attr_map = None + for attr, match_against in list(self.attrs.items()): + if not markup_attr_map: + if hasattr(markup_attrs, 'get'): + markup_attr_map = markup_attrs + else: + markup_attr_map = {} + for k, v in markup_attrs: + markup_attr_map[k] = v + attr_value = markup_attr_map.get(attr) + if not self._matches(attr_value, match_against): + match = False + break + if match: + if markup: + found = markup + else: + found = markup_name + if found and self.text and not self._matches(found.string, self.text): + found = None + return found + searchTag = search_tag + + def search(self, markup): + # print 'looking for %s in %s' % (self, markup) + found = None + # If given a list of items, scan it for a text element that + # matches. + if hasattr(markup, '__iter__') and not isinstance(markup, (Tag, str)): + for element in markup: + if isinstance(element, NavigableString) \ + and self.search(element): + found = element + break + # If it's a Tag, make sure its name or attributes match. + # Don't bother with Tags if we're searching for text. + elif isinstance(markup, Tag): + if not self.text or self.name or self.attrs: + found = self.search_tag(markup) + # If it's text, make sure the text matches. + elif isinstance(markup, NavigableString) or \ + isinstance(markup, str): + if not self.name and not self.attrs and self._matches(markup, self.text): + found = markup + else: + raise Exception( + "I don't know how to match against a %s" % markup.__class__) + return found + + def _matches(self, markup, match_against, already_tried=None): + # print u"Matching %s against %s" % (markup, match_against) + result = False + if isinstance(markup, list) or isinstance(markup, tuple): + # This should only happen when searching a multi-valued attribute + # like 'class'. + for item in markup: + if self._matches(item, match_against): + return True + # We didn't match any particular value of the multivalue + # attribute, but maybe we match the attribute value when + # considered as a string. + if self._matches(' '.join(markup), match_against): + return True + return False + + if match_against is True: + # True matches any non-None value. + return markup is not None + + if isinstance(match_against, Callable): + return match_against(markup) + + # Custom callables take the tag as an argument, but all + # other ways of matching match the tag name as a string. + original_markup = markup + if isinstance(markup, Tag): + markup = markup.name + + # Ensure that `markup` is either a Unicode string, or None. + markup = self._normalize_search_value(markup) + + if markup is None: + # None matches None, False, an empty string, an empty list, and so on. + return not match_against + + if (hasattr(match_against, '__iter__') + and not isinstance(match_against, str)): + # We're asked to match against an iterable of items. + # The markup must be match at least one item in the + # iterable. We'll try each one in turn. + # + # To avoid infinite recursion we need to keep track of + # items we've already seen. + if not already_tried: + already_tried = set() + for item in match_against: + if item.__hash__: + key = item + else: + key = id(item) + if key in already_tried: + continue + else: + already_tried.add(key) + if self._matches(original_markup, item, already_tried): + return True + else: + return False + + # Beyond this point we might need to run the test twice: once against + # the tag's name and once against its prefixed name. + match = False + + if not match and isinstance(match_against, str): + # Exact string match + match = markup == match_against + + if not match and hasattr(match_against, 'search'): + # Regexp match + return match_against.search(markup) + + if (not match + and isinstance(original_markup, Tag) + and original_markup.prefix): + # Try the whole thing again with the prefixed tag name. + return self._matches( + original_markup.prefix + ':' + original_markup.name, match_against + ) + + return match + + +class ResultSet(list): + """A ResultSet is just a list that keeps track of the SoupStrainer + that created it.""" + def __init__(self, source, result=()): + super(ResultSet, self).__init__(result) + self.source = source + + def __getattr__(self, key): + raise AttributeError( + "ResultSet object has no attribute '%s'. You're probably treating a list of items like a single item. Did you call find_all() when you meant to call find()?" % key + ) diff --git a/venv/lib/python3.7/site-packages/bs4/formatter.py b/venv/lib/python3.7/site-packages/bs4/formatter.py new file mode 100644 index 0000000..7dbaa38 --- /dev/null +++ b/venv/lib/python3.7/site-packages/bs4/formatter.py @@ -0,0 +1,99 @@ +from bs4.dammit import EntitySubstitution + +class Formatter(EntitySubstitution): + """Describes a strategy to use when outputting a parse tree to a string. + + Some parts of this strategy come from the distinction between + HTML4, HTML5, and XML. Others are configurable by the user. + """ + # Registries of XML and HTML formatters. + XML_FORMATTERS = {} + HTML_FORMATTERS = {} + + HTML = 'html' + XML = 'xml' + + HTML_DEFAULTS = dict( + cdata_containing_tags=set(["script", "style"]), + ) + + def _default(self, language, value, kwarg): + if value is not None: + return value + if language == self.XML: + return set() + return self.HTML_DEFAULTS[kwarg] + + def __init__( + self, language=None, entity_substitution=None, + void_element_close_prefix='/', cdata_containing_tags=None, + ): + """ + + :param void_element_close_prefix: By default, represent void + elements as rather than + """ + self.language = language + self.entity_substitution = entity_substitution + self.void_element_close_prefix = void_element_close_prefix + self.cdata_containing_tags = self._default( + language, cdata_containing_tags, 'cdata_containing_tags' + ) + + def substitute(self, ns): + """Process a string that needs to undergo entity substitution.""" + if not self.entity_substitution: + return ns + from .element import NavigableString + if (isinstance(ns, NavigableString) + and ns.parent is not None + and ns.parent.name in self.cdata_containing_tags): + # Do nothing. + return ns + # Substitute. + return self.entity_substitution(ns) + + def attribute_value(self, value): + """Process the value of an attribute.""" + return self.substitute(value) + + def attributes(self, tag): + """Reorder a tag's attributes however you want.""" + return sorted(tag.attrs.items()) + + +class HTMLFormatter(Formatter): + REGISTRY = {} + def __init__(self, *args, **kwargs): + return super(HTMLFormatter, self).__init__(self.HTML, *args, **kwargs) + + +class XMLFormatter(Formatter): + REGISTRY = {} + def __init__(self, *args, **kwargs): + return super(XMLFormatter, self).__init__(self.XML, *args, **kwargs) + + +# Set up aliases for the default formatters. +HTMLFormatter.REGISTRY['html'] = HTMLFormatter( + entity_substitution=EntitySubstitution.substitute_html +) +HTMLFormatter.REGISTRY["html5"] = HTMLFormatter( + entity_substitution=EntitySubstitution.substitute_html, + void_element_close_prefix = None +) +HTMLFormatter.REGISTRY["minimal"] = HTMLFormatter( + entity_substitution=EntitySubstitution.substitute_xml +) +HTMLFormatter.REGISTRY[None] = HTMLFormatter( + entity_substitution=None +) +XMLFormatter.REGISTRY["html"] = XMLFormatter( + entity_substitution=EntitySubstitution.substitute_html +) +XMLFormatter.REGISTRY["minimal"] = XMLFormatter( + entity_substitution=EntitySubstitution.substitute_xml +) +XMLFormatter.REGISTRY[None] = Formatter( + Formatter(Formatter.XML, entity_substitution=None) +) diff --git a/venv/lib/python3.7/site-packages/bs4/testing.py b/venv/lib/python3.7/site-packages/bs4/testing.py new file mode 100644 index 0000000..cc99666 --- /dev/null +++ b/venv/lib/python3.7/site-packages/bs4/testing.py @@ -0,0 +1,992 @@ +# encoding: utf-8 +"""Helper classes for tests.""" + +# Use of this source code is governed by the MIT license. +__license__ = "MIT" + +import pickle +import copy +import functools +import unittest +from unittest import TestCase +from bs4 import BeautifulSoup +from bs4.element import ( + CharsetMetaAttributeValue, + Comment, + ContentMetaAttributeValue, + Doctype, + SoupStrainer, + Tag +) + +from bs4.builder import HTMLParserTreeBuilder +default_builder = HTMLParserTreeBuilder + +BAD_DOCUMENT = """A bare string + + +
+
HTML5 does allow CDATA sections in SVG
+
A tag
+
A
tag that supposedly has contents.
+
AT&T
+
+
+
This numeric entity is missing the final semicolon:
+ +
a
+
This document contains (do you see it?)
+
This document ends with That attribute value was bogus
+The doctype is invalid because it contains extra whitespace +
That boolean attribute had no value
+
Here's a nonexistent entity: &#foo; (do you see it?)
+
This document ends before the entity finishes: > +

Paragraphs shouldn't contain block display elements, but this one does:

you see?

+Multiple values for the same attribute. +
Here's a table
+
+
This tag contains nothing but whitespace:
+

This p tag is cut off by

the end of the blockquote tag
+
Here's a nested table:
foo
This table contains bare markup
+ +
This document contains a surprise doctype
+ +
Tag name contains Unicode characters
+ + +""" + + +class SoupTest(unittest.TestCase): + + @property + def default_builder(self): + return default_builder + + def soup(self, markup, **kwargs): + """Build a Beautiful Soup object from markup.""" + builder = kwargs.pop('builder', self.default_builder) + return BeautifulSoup(markup, builder=builder, **kwargs) + + def document_for(self, markup, **kwargs): + """Turn an HTML fragment into a document. + + The details depend on the builder. + """ + return self.default_builder(**kwargs).test_fragment_to_document(markup) + + def assertSoupEquals(self, to_parse, compare_parsed_to=None): + builder = self.default_builder + obj = BeautifulSoup(to_parse, builder=builder) + if compare_parsed_to is None: + compare_parsed_to = to_parse + + self.assertEqual(obj.decode(), self.document_for(compare_parsed_to)) + + def assertConnectedness(self, element): + """Ensure that next_element and previous_element are properly + set for all descendants of the given element. + """ + earlier = None + for e in element.descendants: + if earlier: + self.assertEqual(e, earlier.next_element) + self.assertEqual(earlier, e.previous_element) + earlier = e + + def linkage_validator(self, el, _recursive_call=False): + """Ensure proper linkage throughout the document.""" + descendant = None + # Document element should have no previous element or previous sibling. + # It also shouldn't have a next sibling. + if el.parent is None: + assert el.previous_element is None,\ + "Bad previous_element\nNODE: {}\nPREV: {}\nEXPECTED: {}".format( + el, el.previous_element, None + ) + assert el.previous_sibling is None,\ + "Bad previous_sibling\nNODE: {}\nPREV: {}\nEXPECTED: {}".format( + el, el.previous_sibling, None + ) + assert el.next_sibling is None,\ + "Bad next_sibling\nNODE: {}\nNEXT: {}\nEXPECTED: {}".format( + el, el.next_sibling, None + ) + + idx = 0 + child = None + last_child = None + last_idx = len(el.contents) - 1 + for child in el.contents: + descendant = None + + # Parent should link next element to their first child + # That child should have no previous sibling + if idx == 0: + if el.parent is not None: + assert el.next_element is child,\ + "Bad next_element\nNODE: {}\nNEXT: {}\nEXPECTED: {}".format( + el, el.next_element, child + ) + assert child.previous_element is el,\ + "Bad previous_element\nNODE: {}\nPREV: {}\nEXPECTED: {}".format( + child, child.previous_element, el + ) + assert child.previous_sibling is None,\ + "Bad previous_sibling\nNODE: {}\nPREV {}\nEXPECTED: {}".format( + child, child.previous_sibling, None + ) + + # If not the first child, previous index should link as sibling to this index + # Previous element should match the last index or the last bubbled up descendant + else: + assert child.previous_sibling is el.contents[idx - 1],\ + "Bad previous_sibling\nNODE: {}\nPREV {}\nEXPECTED {}".format( + child, child.previous_sibling, el.contents[idx - 1] + ) + assert el.contents[idx - 1].next_sibling is child,\ + "Bad next_sibling\nNODE: {}\nNEXT {}\nEXPECTED {}".format( + el.contents[idx - 1], el.contents[idx - 1].next_sibling, child + ) + + if last_child is not None: + assert child.previous_element is last_child,\ + "Bad previous_element\nNODE: {}\nPREV {}\nEXPECTED {}\nCONTENTS {}".format( + child, child.previous_element, last_child, child.parent.contents + ) + assert last_child.next_element is child,\ + "Bad next_element\nNODE: {}\nNEXT {}\nEXPECTED {}".format( + last_child, last_child.next_element, child + ) + + if isinstance(child, Tag) and child.contents: + descendant = self.linkage_validator(child, True) + # A bubbled up descendant should have no next siblings + assert descendant.next_sibling is None,\ + "Bad next_sibling\nNODE: {}\nNEXT {}\nEXPECTED {}".format( + descendant, descendant.next_sibling, None + ) + + # Mark last child as either the bubbled up descendant or the current child + if descendant is not None: + last_child = descendant + else: + last_child = child + + # If last child, there are non next siblings + if idx == last_idx: + assert child.next_sibling is None,\ + "Bad next_sibling\nNODE: {}\nNEXT {}\nEXPECTED {}".format( + child, child.next_sibling, None + ) + idx += 1 + + child = descendant if descendant is not None else child + if child is None: + child = el + + if not _recursive_call and child is not None: + target = el + while True: + if target is None: + assert child.next_element is None, \ + "Bad next_element\nNODE: {}\nNEXT {}\nEXPECTED {}".format( + child, child.next_element, None + ) + break + elif target.next_sibling is not None: + assert child.next_element is target.next_sibling, \ + "Bad next_element\nNODE: {}\nNEXT {}\nEXPECTED {}".format( + child, child.next_element, target.next_sibling + ) + break + target = target.parent + + # We are done, so nothing to return + return None + else: + # Return the child to the recursive caller + return child + + +class HTMLTreeBuilderSmokeTest(object): + + """A basic test of a treebuilder's competence. + + Any HTML treebuilder, present or future, should be able to pass + these tests. With invalid markup, there's room for interpretation, + and different parsers can handle it differently. But with the + markup in these tests, there's not much room for interpretation. + """ + + def test_empty_element_tags(self): + """Verify that all HTML4 and HTML5 empty element (aka void element) tags + are handled correctly. + """ + for name in [ + 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'menuitem', 'meta', 'param', 'source', 'track', 'wbr', + 'spacer', 'frame' + ]: + soup = self.soup("") + new_tag = soup.new_tag(name) + self.assertEqual(True, new_tag.is_empty_element) + + def test_pickle_and_unpickle_identity(self): + # Pickling a tree, then unpickling it, yields a tree identical + # to the original. + tree = self.soup("foo") + dumped = pickle.dumps(tree, 2) + loaded = pickle.loads(dumped) + self.assertEqual(loaded.__class__, BeautifulSoup) + self.assertEqual(loaded.decode(), tree.decode()) + + def assertDoctypeHandled(self, doctype_fragment): + """Assert that a given doctype string is handled correctly.""" + doctype_str, soup = self._document_with_doctype(doctype_fragment) + + # Make sure a Doctype object was created. + doctype = soup.contents[0] + self.assertEqual(doctype.__class__, Doctype) + self.assertEqual(doctype, doctype_fragment) + self.assertEqual(str(soup)[:len(doctype_str)], doctype_str) + + # Make sure that the doctype was correctly associated with the + # parse tree and that the rest of the document parsed. + self.assertEqual(soup.p.contents[0], 'foo') + + def _document_with_doctype(self, doctype_fragment): + """Generate and parse a document with the given doctype.""" + doctype = '' % doctype_fragment + markup = doctype + '\n

foo

' + soup = self.soup(markup) + return doctype, soup + + def test_normal_doctypes(self): + """Make sure normal, everyday HTML doctypes are handled correctly.""" + self.assertDoctypeHandled("html") + self.assertDoctypeHandled( + 'html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"') + + def test_empty_doctype(self): + soup = self.soup("") + doctype = soup.contents[0] + self.assertEqual("", doctype.strip()) + + def test_public_doctype_with_url(self): + doctype = 'html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"' + self.assertDoctypeHandled(doctype) + + def test_system_doctype(self): + self.assertDoctypeHandled('foo SYSTEM "http://www.example.com/"') + + def test_namespaced_system_doctype(self): + # We can handle a namespaced doctype with a system ID. + self.assertDoctypeHandled('xsl:stylesheet SYSTEM "htmlent.dtd"') + + def test_namespaced_public_doctype(self): + # Test a namespaced doctype with a public id. + self.assertDoctypeHandled('xsl:stylesheet PUBLIC "htmlent.dtd"') + + def test_real_xhtml_document(self): + """A real XHTML document should come out more or less the same as it went in.""" + markup = b""" + + +Hello. +Goodbye. +""" + soup = self.soup(markup) + self.assertEqual( + soup.encode("utf-8").replace(b"\n", b""), + markup.replace(b"\n", b"")) + + def test_namespaced_html(self): + """When a namespaced XML document is parsed as HTML it should + be treated as HTML with weird tag names. + """ + markup = b"""content""" + soup = self.soup(markup) + self.assertEqual(2, len(soup.find_all("ns1:foo"))) + + def test_processing_instruction(self): + # We test both Unicode and bytestring to verify that + # process_markup correctly sets processing_instruction_class + # even when the markup is already Unicode and there is no + # need to process anything. + markup = """""" + soup = self.soup(markup) + self.assertEqual(markup, soup.decode()) + + markup = b"""""" + soup = self.soup(markup) + self.assertEqual(markup, soup.encode("utf8")) + + def test_deepcopy(self): + """Make sure you can copy the tree builder. + + This is important because the builder is part of a + BeautifulSoup object, and we want to be able to copy that. + """ + copy.deepcopy(self.default_builder) + + def test_p_tag_is_never_empty_element(self): + """A

tag is never designated as an empty-element tag. + + Even if the markup shows it as an empty-element tag, it + shouldn't be presented that way. + """ + soup = self.soup("

") + self.assertFalse(soup.p.is_empty_element) + self.assertEqual(str(soup.p), "

") + + def test_unclosed_tags_get_closed(self): + """A tag that's not closed by the end of the document should be closed. + + This applies to all tags except empty-element tags. + """ + self.assertSoupEquals("

", "

") + self.assertSoupEquals("", "") + + self.assertSoupEquals("
", "
") + + def test_br_is_always_empty_element_tag(self): + """A
tag is designated as an empty-element tag. + + Some parsers treat

as one
tag, some parsers as + two tags, but it should always be an empty-element tag. + """ + soup = self.soup("

") + self.assertTrue(soup.br.is_empty_element) + self.assertEqual(str(soup.br), "
") + + def test_nested_formatting_elements(self): + self.assertSoupEquals("") + + def test_double_head(self): + html = ''' + + +Ordinary HEAD element test + + + +Hello, world! + + +''' + soup = self.soup(html) + self.assertEqual("text/javascript", soup.find('script')['type']) + + def test_comment(self): + # Comments are represented as Comment objects. + markup = "

foobaz

" + self.assertSoupEquals(markup) + + soup = self.soup(markup) + comment = soup.find(text="foobar") + self.assertEqual(comment.__class__, Comment) + + # The comment is properly integrated into the tree. + foo = soup.find(text="foo") + self.assertEqual(comment, foo.next_element) + baz = soup.find(text="baz") + self.assertEqual(comment, baz.previous_element) + + def test_preserved_whitespace_in_pre_and_textarea(self): + """Whitespace must be preserved in
 and "
+        self.assertSoupEquals(pre_markup)
+        self.assertSoupEquals(textarea_markup)
+
+        soup = self.soup(pre_markup)
+        self.assertEqual(soup.pre.prettify(), pre_markup)
+
+        soup = self.soup(textarea_markup)
+        self.assertEqual(soup.textarea.prettify(), textarea_markup)
+
+        soup = self.soup("")
+        self.assertEqual(soup.textarea.prettify(), "")
+
+    def test_nested_inline_elements(self):
+        """Inline elements can be nested indefinitely."""
+        b_tag = "Inside a B tag"
+        self.assertSoupEquals(b_tag)
+
+        nested_b_tag = "

A nested tag

" + self.assertSoupEquals(nested_b_tag) + + double_nested_b_tag = "

A doubly nested tag

" + self.assertSoupEquals(nested_b_tag) + + def test_nested_block_level_elements(self): + """Block elements can be nested.""" + soup = self.soup('

Foo

') + blockquote = soup.blockquote + self.assertEqual(blockquote.p.b.string, 'Foo') + self.assertEqual(blockquote.b.string, 'Foo') + + def test_correctly_nested_tables(self): + """One table can go inside another one.""" + markup = ('' + '' + "') + + self.assertSoupEquals( + markup, + '
Here's another table:" + '' + '' + '
foo
Here\'s another table:' + '
foo
' + '
') + + self.assertSoupEquals( + "" + "" + "
Foo
Bar
Baz
") + + def test_multivalued_attribute_with_whitespace(self): + # Whitespace separating the values of a multi-valued attribute + # should be ignored. + + markup = '
' + soup = self.soup(markup) + self.assertEqual(['foo', 'bar'], soup.div['class']) + + # If you search by the literal name of the class it's like the whitespace + # wasn't there. + self.assertEqual(soup.div, soup.find('div', class_="foo bar")) + + def test_deeply_nested_multivalued_attribute(self): + # html5lib can set the attributes of the same tag many times + # as it rearranges the tree. This has caused problems with + # multivalued attributes. + markup = '
' + soup = self.soup(markup) + self.assertEqual(["css"], soup.div.div['class']) + + def test_multivalued_attribute_on_html(self): + # html5lib uses a different API to set the attributes ot the + # tag. This has caused problems with multivalued + # attributes. + markup = '' + soup = self.soup(markup) + self.assertEqual(["a", "b"], soup.html['class']) + + def test_angle_brackets_in_attribute_values_are_escaped(self): + self.assertSoupEquals('', '') + + def test_strings_resembling_character_entity_references(self): + # "&T" and "&p" look like incomplete character entities, but they are + # not. + self.assertSoupEquals( + "

• AT&T is in the s&p 500

", + "

\u2022 AT&T is in the s&p 500

" + ) + + def test_apos_entity(self): + self.assertSoupEquals( + "

Bob's Bar

", + "

Bob's Bar

", + ) + + def test_entities_in_foreign_document_encoding(self): + # “ and ” are invalid numeric entities referencing + # Windows-1252 characters. - references a character common + # to Windows-1252 and Unicode, and ☃ references a + # character only found in Unicode. + # + # All of these entities should be converted to Unicode + # characters. + markup = "

“Hello” -☃

" + soup = self.soup(markup) + self.assertEqual("“Hello” -☃", soup.p.string) + + def test_entities_in_attributes_converted_to_unicode(self): + expect = '

' + self.assertSoupEquals('

', expect) + self.assertSoupEquals('

', expect) + self.assertSoupEquals('

', expect) + self.assertSoupEquals('

', expect) + + def test_entities_in_text_converted_to_unicode(self): + expect = '

pi\N{LATIN SMALL LETTER N WITH TILDE}ata

' + self.assertSoupEquals("

piñata

", expect) + self.assertSoupEquals("

piñata

", expect) + self.assertSoupEquals("

piñata

", expect) + self.assertSoupEquals("

piñata

", expect) + + def test_quot_entity_converted_to_quotation_mark(self): + self.assertSoupEquals("

I said "good day!"

", + '

I said "good day!"

') + + def test_out_of_range_entity(self): + expect = "\N{REPLACEMENT CHARACTER}" + self.assertSoupEquals("�", expect) + self.assertSoupEquals("�", expect) + self.assertSoupEquals("�", expect) + + def test_multipart_strings(self): + "Mostly to prevent a recurrence of a bug in the html5lib treebuilder." + soup = self.soup("

\nfoo

") + self.assertEqual("p", soup.h2.string.next_element.name) + self.assertEqual("p", soup.p.name) + self.assertConnectedness(soup) + + def test_empty_element_tags(self): + """Verify consistent handling of empty-element tags, + no matter how they come in through the markup. + """ + self.assertSoupEquals('


', "


") + self.assertSoupEquals('


', "


") + + def test_head_tag_between_head_and_body(self): + "Prevent recurrence of a bug in the html5lib treebuilder." + content = """ + + foo + +""" + soup = self.soup(content) + self.assertNotEqual(None, soup.html.body) + self.assertConnectedness(soup) + + def test_multiple_copies_of_a_tag(self): + "Prevent recurrence of a bug in the html5lib treebuilder." + content = """ + + + + + +""" + soup = self.soup(content) + self.assertConnectedness(soup.article) + + def test_basic_namespaces(self): + """Parsers don't need to *understand* namespaces, but at the + very least they should not choke on namespaces or lose + data.""" + + markup = b'4' + soup = self.soup(markup) + self.assertEqual(markup, soup.encode()) + html = soup.html + self.assertEqual('http://www.w3.org/1999/xhtml', soup.html['xmlns']) + self.assertEqual( + 'http://www.w3.org/1998/Math/MathML', soup.html['xmlns:mathml']) + self.assertEqual( + 'http://www.w3.org/2000/svg', soup.html['xmlns:svg']) + + def test_multivalued_attribute_value_becomes_list(self): + markup = b'' + soup = self.soup(markup) + self.assertEqual(['foo', 'bar'], soup.a['class']) + + # + # Generally speaking, tests below this point are more tests of + # Beautiful Soup than tests of the tree builders. But parsers are + # weird, so we run these tests separately for every tree builder + # to detect any differences between them. + # + + def test_can_parse_unicode_document(self): + # A seemingly innocuous document... but it's in Unicode! And + # it contains characters that can't be represented in the + # encoding found in the declaration! The horror! + markup = 'Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!' + soup = self.soup(markup) + self.assertEqual('Sacr\xe9 bleu!', soup.body.string) + + def test_soupstrainer(self): + """Parsers should be able to work with SoupStrainers.""" + strainer = SoupStrainer("b") + soup = self.soup("A bold statement", + parse_only=strainer) + self.assertEqual(soup.decode(), "bold") + + def test_single_quote_attribute_values_become_double_quotes(self): + self.assertSoupEquals("", + '') + + def test_attribute_values_with_nested_quotes_are_left_alone(self): + text = """a""" + self.assertSoupEquals(text) + + def test_attribute_values_with_double_nested_quotes_get_quoted(self): + text = """a""" + soup = self.soup(text) + soup.foo['attr'] = 'Brawls happen at "Bob\'s Bar"' + self.assertSoupEquals( + soup.foo.decode(), + """a""") + + def test_ampersand_in_attribute_value_gets_escaped(self): + self.assertSoupEquals('', + '') + + self.assertSoupEquals( + 'foo', + 'foo') + + def test_escaped_ampersand_in_attribute_value_is_left_alone(self): + self.assertSoupEquals('') + + def test_entities_in_strings_converted_during_parsing(self): + # Both XML and HTML entities are converted to Unicode characters + # during parsing. + text = "

<<sacré bleu!>>

" + expected = "

<<sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!>>

" + self.assertSoupEquals(text, expected) + + def test_smart_quotes_converted_on_the_way_in(self): + # Microsoft smart quotes are converted to Unicode characters during + # parsing. + quote = b"

\x91Foo\x92

" + soup = self.soup(quote) + self.assertEqual( + soup.p.string, + "\N{LEFT SINGLE QUOTATION MARK}Foo\N{RIGHT SINGLE QUOTATION MARK}") + + def test_non_breaking_spaces_converted_on_the_way_in(self): + soup = self.soup("  ") + self.assertEqual(soup.a.string, "\N{NO-BREAK SPACE}" * 2) + + def test_entities_converted_on_the_way_out(self): + text = "

<<sacré bleu!>>

" + expected = "

<<sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!>>

".encode("utf-8") + soup = self.soup(text) + self.assertEqual(soup.p.encode("utf-8"), expected) + + def test_real_iso_latin_document(self): + # Smoke test of interrelated functionality, using an + # easy-to-understand document. + + # Here it is in Unicode. Note that it claims to be in ISO-Latin-1. + unicode_html = '

Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!

' + + # That's because we're going to encode it into ISO-Latin-1, and use + # that to test. + iso_latin_html = unicode_html.encode("iso-8859-1") + + # Parse the ISO-Latin-1 HTML. + soup = self.soup(iso_latin_html) + # Encode it to UTF-8. + result = soup.encode("utf-8") + + # What do we expect the result to look like? Well, it would + # look like unicode_html, except that the META tag would say + # UTF-8 instead of ISO-Latin-1. + expected = unicode_html.replace("ISO-Latin-1", "utf-8") + + # And, of course, it would be in UTF-8, not Unicode. + expected = expected.encode("utf-8") + + # Ta-da! + self.assertEqual(result, expected) + + def test_real_shift_jis_document(self): + # Smoke test to make sure the parser can handle a document in + # Shift-JIS encoding, without choking. + shift_jis_html = ( + b'
'
+            b'\x82\xb1\x82\xea\x82\xcdShift-JIS\x82\xc5\x83R\x81[\x83f'
+            b'\x83B\x83\x93\x83O\x82\xb3\x82\xea\x82\xbd\x93\xfa\x96{\x8c'
+            b'\xea\x82\xcc\x83t\x83@\x83C\x83\x8b\x82\xc5\x82\xb7\x81B'
+            b'
') + unicode_html = shift_jis_html.decode("shift-jis") + soup = self.soup(unicode_html) + + # Make sure the parse tree is correctly encoded to various + # encodings. + self.assertEqual(soup.encode("utf-8"), unicode_html.encode("utf-8")) + self.assertEqual(soup.encode("euc_jp"), unicode_html.encode("euc_jp")) + + def test_real_hebrew_document(self): + # A real-world test to make sure we can convert ISO-8859-9 (a + # Hebrew encoding) to UTF-8. + hebrew_document = b'Hebrew (ISO 8859-8) in Visual Directionality

Hebrew (ISO 8859-8) in Visual Directionality

\xed\xe5\xec\xf9' + soup = self.soup( + hebrew_document, from_encoding="iso8859-8") + # Some tree builders call it iso8859-8, others call it iso-8859-9. + # That's not a difference we really care about. + assert soup.original_encoding in ('iso8859-8', 'iso-8859-8') + self.assertEqual( + soup.encode('utf-8'), + hebrew_document.decode("iso8859-8").encode("utf-8")) + + def test_meta_tag_reflects_current_encoding(self): + # Here's the tag saying that a document is + # encoded in Shift-JIS. + meta_tag = ('') + + # Here's a document incorporating that meta tag. + shift_jis_html = ( + '\n%s\n' + '' + 'Shift-JIS markup goes here.') % meta_tag + soup = self.soup(shift_jis_html) + + # Parse the document, and the charset is seemingly unaffected. + parsed_meta = soup.find('meta', {'http-equiv': 'Content-type'}) + content = parsed_meta['content'] + self.assertEqual('text/html; charset=x-sjis', content) + + # But that value is actually a ContentMetaAttributeValue object. + self.assertTrue(isinstance(content, ContentMetaAttributeValue)) + + # And it will take on a value that reflects its current + # encoding. + self.assertEqual('text/html; charset=utf8', content.encode("utf8")) + + # For the rest of the story, see TestSubstitutions in + # test_tree.py. + + def test_html5_style_meta_tag_reflects_current_encoding(self): + # Here's the tag saying that a document is + # encoded in Shift-JIS. + meta_tag = ('') + + # Here's a document incorporating that meta tag. + shift_jis_html = ( + '\n%s\n' + '' + 'Shift-JIS markup goes here.') % meta_tag + soup = self.soup(shift_jis_html) + + # Parse the document, and the charset is seemingly unaffected. + parsed_meta = soup.find('meta', id="encoding") + charset = parsed_meta['charset'] + self.assertEqual('x-sjis', charset) + + # But that value is actually a CharsetMetaAttributeValue object. + self.assertTrue(isinstance(charset, CharsetMetaAttributeValue)) + + # And it will take on a value that reflects its current + # encoding. + self.assertEqual('utf8', charset.encode("utf8")) + + def test_tag_with_no_attributes_can_have_attributes_added(self): + data = self.soup("text") + data.a['foo'] = 'bar' + self.assertEqual('text', data.a.decode()) + + def test_worst_case(self): + """Test the worst case (currently) for linking issues.""" + + soup = self.soup(BAD_DOCUMENT) + self.linkage_validator(soup) + + +class XMLTreeBuilderSmokeTest(object): + + def test_pickle_and_unpickle_identity(self): + # Pickling a tree, then unpickling it, yields a tree identical + # to the original. + tree = self.soup("foo") + dumped = pickle.dumps(tree, 2) + loaded = pickle.loads(dumped) + self.assertEqual(loaded.__class__, BeautifulSoup) + self.assertEqual(loaded.decode(), tree.decode()) + + def test_docstring_generated(self): + soup = self.soup("") + self.assertEqual( + soup.encode(), b'\n') + + def test_xml_declaration(self): + markup = b"""\n""" + soup = self.soup(markup) + self.assertEqual(markup, soup.encode("utf8")) + + def test_processing_instruction(self): + markup = b"""\n""" + soup = self.soup(markup) + self.assertEqual(markup, soup.encode("utf8")) + + def test_real_xhtml_document(self): + """A real XHTML document should come out *exactly* the same as it went in.""" + markup = b""" + + +Hello. +Goodbye. +""" + soup = self.soup(markup) + self.assertEqual( + soup.encode("utf-8"), markup) + + def test_nested_namespaces(self): + doc = b""" + + + + + +""" + soup = self.soup(doc) + self.assertEqual(doc, soup.encode()) + + def test_formatter_processes_script_tag_for_xml_documents(self): + doc = """ + +""" + soup = BeautifulSoup(doc, "lxml-xml") + # lxml would have stripped this while parsing, but we can add + # it later. + soup.script.string = 'console.log("< < hey > > ");' + encoded = soup.encode() + self.assertTrue(b"< < hey > >" in encoded) + + def test_can_parse_unicode_document(self): + markup = 'Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!' + soup = self.soup(markup) + self.assertEqual('Sacr\xe9 bleu!', soup.root.string) + + def test_popping_namespaced_tag(self): + markup = 'b2012-07-02T20:33:42Zcd' + soup = self.soup(markup) + self.assertEqual( + str(soup.rss), markup) + + def test_docstring_includes_correct_encoding(self): + soup = self.soup("") + self.assertEqual( + soup.encode("latin1"), + b'\n') + + def test_large_xml_document(self): + """A large XML document should come out the same as it went in.""" + markup = (b'\n' + + b'0' * (2**12) + + b'') + soup = self.soup(markup) + self.assertEqual(soup.encode("utf-8"), markup) + + + def test_tags_are_empty_element_if_and_only_if_they_are_empty(self): + self.assertSoupEquals("

", "

") + self.assertSoupEquals("

foo

") + + def test_namespaces_are_preserved(self): + markup = 'This tag is in the a namespaceThis tag is in the b namespace' + soup = self.soup(markup) + root = soup.root + self.assertEqual("http://example.com/", root['xmlns:a']) + self.assertEqual("http://example.net/", root['xmlns:b']) + + def test_closing_namespaced_tag(self): + markup = '

20010504

' + soup = self.soup(markup) + self.assertEqual(str(soup.p), markup) + + def test_namespaced_attributes(self): + markup = '' + soup = self.soup(markup) + self.assertEqual(str(soup.foo), markup) + + def test_namespaced_attributes_xml_namespace(self): + markup = 'bar' + soup = self.soup(markup) + self.assertEqual(str(soup.foo), markup) + + def test_find_by_prefixed_name(self): + doc = """ +foo + bar + baz + +""" + soup = self.soup(doc) + + # There are three tags. + self.assertEqual(3, len(soup.find_all('tag'))) + + # But two of them are ns1:tag and one of them is ns2:tag. + self.assertEqual(2, len(soup.find_all('ns1:tag'))) + self.assertEqual(1, len(soup.find_all('ns2:tag'))) + + self.assertEqual(1, len(soup.find_all('ns2:tag', key='value'))) + self.assertEqual(3, len(soup.find_all(['ns1:tag', 'ns2:tag']))) + + def test_copy_tag_preserves_namespace(self): + xml = """ +""" + + soup = self.soup(xml) + tag = soup.document + duplicate = copy.copy(tag) + + # The two tags have the same namespace prefix. + self.assertEqual(tag.prefix, duplicate.prefix) + + def test_worst_case(self): + """Test the worst case (currently) for linking issues.""" + + soup = self.soup(BAD_DOCUMENT) + self.linkage_validator(soup) + + +class HTML5TreeBuilderSmokeTest(HTMLTreeBuilderSmokeTest): + """Smoke test for a tree builder that supports HTML5.""" + + def test_real_xhtml_document(self): + # Since XHTML is not HTML5, HTML5 parsers are not tested to handle + # XHTML documents in any particular way. + pass + + def test_html_tags_have_namespace(self): + markup = "" + soup = self.soup(markup) + self.assertEqual("http://www.w3.org/1999/xhtml", soup.a.namespace) + + def test_svg_tags_have_namespace(self): + markup = '' + soup = self.soup(markup) + namespace = "http://www.w3.org/2000/svg" + self.assertEqual(namespace, soup.svg.namespace) + self.assertEqual(namespace, soup.circle.namespace) + + + def test_mathml_tags_have_namespace(self): + markup = '5' + soup = self.soup(markup) + namespace = 'http://www.w3.org/1998/Math/MathML' + self.assertEqual(namespace, soup.math.namespace) + self.assertEqual(namespace, soup.msqrt.namespace) + + def test_xml_declaration_becomes_comment(self): + markup = '' + soup = self.soup(markup) + self.assertTrue(isinstance(soup.contents[0], Comment)) + self.assertEqual(soup.contents[0], '?xml version="1.0" encoding="utf-8"?') + self.assertEqual("html", soup.contents[0].next_element.name) + +def skipIf(condition, reason): + def nothing(test, *args, **kwargs): + return None + + def decorator(test_item): + if condition: + return nothing + else: + return test_item + + return decorator diff --git a/venv/lib/python3.7/site-packages/bs4/tests/__init__.py b/venv/lib/python3.7/site-packages/bs4/tests/__init__.py new file mode 100644 index 0000000..142c8cc --- /dev/null +++ b/venv/lib/python3.7/site-packages/bs4/tests/__init__.py @@ -0,0 +1 @@ +"The beautifulsoup tests." diff --git a/venv/lib/python3.7/site-packages/bs4/tests/__pycache__/__init__.cpython-37.pyc b/venv/lib/python3.7/site-packages/bs4/tests/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..27b6c5f28904511af6fa1e5d4f060b8d22fe8d4d GIT binary patch literal 185 zcmZ?b<>g`k0tMAIvC=^LF^B^Lj6jA15EpX*i4=w?h7`tN22G|aiI9v`g{0KP(vr-y z(wyS_(gKB&)Z&t2JwHvxTkP@iDf!9q@hcgMn1I^A#4kJjlH3CQg3JQl%)H`~#GD-6 z_zKIsvgFhpeH3#{^plEB^udPd$H!;pWtPOp>lIYq;;_lhPbtkwwF5cnGY~TX05M%M A0ssI2 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/site-packages/bs4/tests/__pycache__/test_builder_registry.cpython-37.pyc b/venv/lib/python3.7/site-packages/bs4/tests/__pycache__/test_builder_registry.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bd2d9e8a9ee8daf237948acfc6517a7f7b9fc565 GIT binary patch literal 5007 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/site-packages/bs4/tests/__pycache__/test_htmlparser.cpython-37.pyc b/venv/lib/python3.7/site-packages/bs4/tests/__pycache__/test_htmlparser.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4a9a2b60c18aa9da9377fa077a7ee8644d638a04 GIT binary patch literal 2928 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/site-packages/bs4/tests/__pycache__/test_soup.cpython-37.pyc b/venv/lib/python3.7/site-packages/bs4/tests/__pycache__/test_soup.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e113910c81cd42fccf3ed0bf20424789676e9ec9 GIT binary patch literal 27437 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 DX@!^K literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/site-packages/bs4/tests/__pycache__/test_tree.cpython-37.pyc b/venv/lib/python3.7/site-packages/bs4/tests/__pycache__/test_tree.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dd3c1b814cd653d670e9b79b8ae14c024b350563 GIT binary patch literal 92291 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
8%&k~RQ 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 Kcx7kh(Ek8+>+bsi literal 0 HcmV?d00001 diff --git a/venv/lib/python3.7/site-packages/bs4/tests/test_builder_registry.py b/venv/lib/python3.7/site-packages/bs4/tests/test_builder_registry.py new file mode 100644 index 0000000..90cad82 --- /dev/null +++ b/venv/lib/python3.7/site-packages/bs4/tests/test_builder_registry.py @@ -0,0 +1,147 @@ +"""Tests of the builder registry.""" + +import unittest +import warnings + +from bs4 import BeautifulSoup +from bs4.builder import ( + builder_registry as registry, + HTMLParserTreeBuilder, + TreeBuilderRegistry, +) + +try: + from bs4.builder import HTML5TreeBuilder + HTML5LIB_PRESENT = True +except ImportError: + HTML5LIB_PRESENT = False + +try: + from bs4.builder import ( + LXMLTreeBuilderForXML, + LXMLTreeBuilder, + ) + LXML_PRESENT = True +except ImportError: + LXML_PRESENT = False + + +class BuiltInRegistryTest(unittest.TestCase): + """Test the built-in registry with the default builders registered.""" + + def test_combination(self): + if LXML_PRESENT: + self.assertEqual(registry.lookup('fast', 'html'), + LXMLTreeBuilder) + + if LXML_PRESENT: + self.assertEqual(registry.lookup('permissive', 'xml'), + LXMLTreeBuilderForXML) + self.assertEqual(registry.lookup('strict', 'html'), + HTMLParserTreeBuilder) + if HTML5LIB_PRESENT: + self.assertEqual(registry.lookup('html5lib', 'html'), + HTML5TreeBuilder) + + def test_lookup_by_markup_type(self): + if LXML_PRESENT: + self.assertEqual(registry.lookup('html'), LXMLTreeBuilder) + self.assertEqual(registry.lookup('xml'), LXMLTreeBuilderForXML) + else: + self.assertEqual(registry.lookup('xml'), None) + if HTML5LIB_PRESENT: + self.assertEqual(registry.lookup('html'), HTML5TreeBuilder) + else: + self.assertEqual(registry.lookup('html'), HTMLParserTreeBuilder) + + def test_named_library(self): + if LXML_PRESENT: + self.assertEqual(registry.lookup('lxml', 'xml'), + LXMLTreeBuilderForXML) + self.assertEqual(registry.lookup('lxml', 'html'), + LXMLTreeBuilder) + if HTML5LIB_PRESENT: + self.assertEqual(registry.lookup('html5lib'), + HTML5TreeBuilder) + + self.assertEqual(registry.lookup('html.parser'), + HTMLParserTreeBuilder) + + def test_beautifulsoup_constructor_does_lookup(self): + + with warnings.catch_warnings(record=True) as w: + # This will create a warning about not explicitly + # specifying a parser, but we'll ignore it. + + # You can pass in a string. + BeautifulSoup("", features="html") + # Or a list of strings. + BeautifulSoup("", features=["html", "fast"]) + + # You'll get an exception if BS can't find an appropriate + # builder. + self.assertRaises(ValueError, BeautifulSoup, + "", features="no-such-feature") + +class RegistryTest(unittest.TestCase): + """Test the TreeBuilderRegistry class in general.""" + + def setUp(self): + self.registry = TreeBuilderRegistry() + + def builder_for_features(self, *feature_list): + cls = type('Builder_' + '_'.join(feature_list), + (object,), {'features' : feature_list}) + + self.registry.register(cls) + return cls + + def test_register_with_no_features(self): + builder = self.builder_for_features() + + # Since the builder advertises no features, you can't find it + # by looking up features. + self.assertEqual(self.registry.lookup('foo'), None) + + # But you can find it by doing a lookup with no features, if + # this happens to be the only registered builder. + self.assertEqual(self.registry.lookup(), builder) + + def test_register_with_features_makes_lookup_succeed(self): + builder = self.builder_for_features('foo', 'bar') + self.assertEqual(self.registry.lookup('foo'), builder) + self.assertEqual(self.registry.lookup('bar'), builder) + + def test_lookup_fails_when_no_builder_implements_feature(self): + builder = self.builder_for_features('foo', 'bar') + self.assertEqual(self.registry.lookup('baz'), None) + + def test_lookup_gets_most_recent_registration_when_no_feature_specified(self): + builder1 = self.builder_for_features('foo') + builder2 = self.builder_for_features('bar') + self.assertEqual(self.registry.lookup(), builder2) + + def test_lookup_fails_when_no_tree_builders_registered(self): + self.assertEqual(self.registry.lookup(), None) + + def test_lookup_gets_most_recent_builder_supporting_all_features(self): + has_one = self.builder_for_features('foo') + has_the_other = self.builder_for_features('bar') + has_both_early = self.builder_for_features('foo', 'bar', 'baz') + has_both_late = self.builder_for_features('foo', 'bar', 'quux') + lacks_one = self.builder_for_features('bar') + has_the_other = self.builder_for_features('foo') + + # There are two builders featuring 'foo' and 'bar', but + # the one that also features 'quux' was registered later. + self.assertEqual(self.registry.lookup('foo', 'bar'), + has_both_late) + + # There is only one builder featuring 'foo', 'bar', and 'baz'. + self.assertEqual(self.registry.lookup('foo', 'bar', 'baz'), + has_both_early) + + def test_lookup_fails_when_cannot_reconcile_requested_features(self): + builder1 = self.builder_for_features('foo', 'bar') + builder2 = self.builder_for_features('foo', 'baz') + self.assertEqual(self.registry.lookup('bar', 'baz'), None) diff --git a/venv/lib/python3.7/site-packages/bs4/tests/test_docs.py b/venv/lib/python3.7/site-packages/bs4/tests/test_docs.py new file mode 100644 index 0000000..5b9f677 --- /dev/null +++ b/venv/lib/python3.7/site-packages/bs4/tests/test_docs.py @@ -0,0 +1,36 @@ +"Test harness for doctests." + +# pylint: disable-msg=E0611,W0142 + +__metaclass__ = type +__all__ = [ + 'additional_tests', + ] + +import atexit +import doctest +import os +#from pkg_resources import ( +# resource_filename, resource_exists, resource_listdir, cleanup_resources) +import unittest + +DOCTEST_FLAGS = ( + doctest.ELLIPSIS | + doctest.NORMALIZE_WHITESPACE | + doctest.REPORT_NDIFF) + + +# def additional_tests(): +# "Run the doc tests (README.txt and docs/*, if any exist)" +# doctest_files = [ +# os.path.abspath(resource_filename('bs4', 'README.txt'))] +# if resource_exists('bs4', 'docs'): +# for name in resource_listdir('bs4', 'docs'): +# if name.endswith('.txt'): +# doctest_files.append( +# os.path.abspath( +# resource_filename('bs4', 'docs/%s' % name))) +# kwargs = dict(module_relative=False, optionflags=DOCTEST_FLAGS) +# atexit.register(cleanup_resources) +# return unittest.TestSuite(( +# doctest.DocFileSuite(*doctest_files, **kwargs))) diff --git a/venv/lib/python3.7/site-packages/bs4/tests/test_html5lib.py b/venv/lib/python3.7/site-packages/bs4/tests/test_html5lib.py new file mode 100644 index 0000000..d7a0b29 --- /dev/null +++ b/venv/lib/python3.7/site-packages/bs4/tests/test_html5lib.py @@ -0,0 +1,184 @@ +"""Tests to ensure that the html5lib tree builder generates good trees.""" + +import warnings + +try: + from bs4.builder import HTML5TreeBuilder + HTML5LIB_PRESENT = True +except ImportError as e: + HTML5LIB_PRESENT = False +from bs4.element import SoupStrainer +from bs4.testing import ( + HTML5TreeBuilderSmokeTest, + SoupTest, + skipIf, +) + +@skipIf( + not HTML5LIB_PRESENT, + "html5lib seems not to be present, not testing its tree builder.") +class HTML5LibBuilderSmokeTest(SoupTest, HTML5TreeBuilderSmokeTest): + """See ``HTML5TreeBuilderSmokeTest``.""" + + @property + def default_builder(self): + return HTML5TreeBuilder + + def test_soupstrainer(self): + # The html5lib tree builder does not support SoupStrainers. + strainer = SoupStrainer("b") + markup = "

A bold statement.

" + with warnings.catch_warnings(record=True) as w: + soup = self.soup(markup, parse_only=strainer) + self.assertEqual( + soup.decode(), self.document_for(markup)) + + self.assertTrue( + "the html5lib tree builder doesn't support parse_only" in + str(w[0].message)) + + def test_correctly_nested_tables(self): + """html5lib inserts tags where other parsers don't.""" + markup = ('' + '' + "') + + self.assertSoupEquals( + markup, + '
Here's another table:" + '' + '' + '
foo
Here\'s another table:' + '
foo
' + '
') + + self.assertSoupEquals( + "" + "" + "
Foo
Bar
Baz
") + + def test_xml_declaration_followed_by_doctype(self): + markup = ''' + + + + + +

foo

+ +''' + soup = self.soup(markup) + # Verify that we can reach the

tag; this means the tree is connected. + self.assertEqual(b"

foo

", soup.p.encode()) + + def test_reparented_markup(self): + markup = '

foo

\n

bar

' + soup = self.soup(markup) + self.assertEqual("

foo

\n

bar

", soup.body.decode()) + self.assertEqual(2, len(soup.find_all('p'))) + + + def test_reparented_markup_ends_with_whitespace(self): + markup = '

foo

\n

bar

\n' + soup = self.soup(markup) + self.assertEqual("

foo

\n

bar

\n", soup.body.decode()) + self.assertEqual(2, len(soup.find_all('p'))) + + def test_reparented_markup_containing_identical_whitespace_nodes(self): + """Verify that we keep the two whitespace nodes in this + document distinct when reparenting the adjacent tags. + """ + markup = '
' + soup = self.soup(markup) + space1, space2 = soup.find_all(string=' ') + tbody1, tbody2 = soup.find_all('tbody') + assert space1.next_element is tbody1 + assert tbody2.next_element is space2 + + def test_reparented_markup_containing_children(self): + markup = '' + soup = self.soup(markup) + noscript = soup.noscript + self.assertEqual("target", noscript.next_element) + target = soup.find(string='target') + + # The 'aftermath' string was duplicated; we want the second one. + final_aftermath = soup.find_all(string='aftermath')[-1] + + # The