├── .DS_Store ├── LICENSE ├── README.en.md ├── README.md ├── __init__.py ├── app ├── BinanceAPI.py ├── __init__.py ├── __pycache__ │ ├── BinanceAPI.cpython-38.pyc │ ├── __init__.cpython-38.pyc │ ├── authorization.cpython-38.pyc │ └── dingding.cpython-38.pyc ├── authorization.py └── dingding.py ├── data ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-38.pyc │ └── runBetData.cpython-38.pyc ├── data.json └── runBetData.py ├── run.py └── venv ├── bin ├── Activate.ps1 ├── activate ├── activate.csh ├── activate.fish ├── chardetect ├── easy_install ├── easy_install-3.8 ├── pip ├── pip3 ├── pip3.8 ├── python ├── python3 └── python3.8 ├── lib └── python3.8 │ └── site-packages │ ├── certifi-2020.11.8.dist-info │ ├── INSTALLER │ ├── LICENSE │ ├── METADATA │ ├── RECORD │ ├── WHEEL │ └── top_level.txt │ ├── certifi │ ├── __init__.py │ ├── __main__.py │ ├── __pycache__ │ │ ├── __init__.cpython-38.pyc │ │ ├── __main__.cpython-38.pyc │ │ └── core.cpython-38.pyc │ ├── cacert.pem │ └── core.py │ ├── chardet-3.0.4.dist-info │ ├── DESCRIPTION.rst │ ├── INSTALLER │ ├── METADATA │ ├── RECORD │ ├── WHEEL │ ├── entry_points.txt │ ├── metadata.json │ └── top_level.txt │ ├── chardet │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-38.pyc │ │ ├── big5freq.cpython-38.pyc │ │ ├── big5prober.cpython-38.pyc │ │ ├── chardistribution.cpython-38.pyc │ │ ├── charsetgroupprober.cpython-38.pyc │ │ ├── charsetprober.cpython-38.pyc │ │ ├── codingstatemachine.cpython-38.pyc │ │ ├── compat.cpython-38.pyc │ │ ├── cp949prober.cpython-38.pyc │ │ ├── enums.cpython-38.pyc │ │ ├── escprober.cpython-38.pyc │ │ ├── escsm.cpython-38.pyc │ │ ├── eucjpprober.cpython-38.pyc │ │ ├── euckrfreq.cpython-38.pyc │ │ ├── euckrprober.cpython-38.pyc │ │ ├── euctwfreq.cpython-38.pyc │ │ ├── euctwprober.cpython-38.pyc │ │ ├── gb2312freq.cpython-38.pyc │ │ ├── gb2312prober.cpython-38.pyc │ │ ├── hebrewprober.cpython-38.pyc │ │ ├── jisfreq.cpython-38.pyc │ │ ├── jpcntx.cpython-38.pyc │ │ ├── langbulgarianmodel.cpython-38.pyc │ │ ├── langcyrillicmodel.cpython-38.pyc │ │ ├── langgreekmodel.cpython-38.pyc │ │ ├── langhebrewmodel.cpython-38.pyc │ │ ├── langhungarianmodel.cpython-38.pyc │ │ ├── langthaimodel.cpython-38.pyc │ │ ├── langturkishmodel.cpython-38.pyc │ │ ├── latin1prober.cpython-38.pyc │ │ ├── mbcharsetprober.cpython-38.pyc │ │ ├── mbcsgroupprober.cpython-38.pyc │ │ ├── mbcssm.cpython-38.pyc │ │ ├── sbcharsetprober.cpython-38.pyc │ │ ├── sbcsgroupprober.cpython-38.pyc │ │ ├── sjisprober.cpython-38.pyc │ │ ├── universaldetector.cpython-38.pyc │ │ ├── utf8prober.cpython-38.pyc │ │ └── version.cpython-38.pyc │ ├── big5freq.py │ ├── big5prober.py │ ├── chardistribution.py │ ├── charsetgroupprober.py │ ├── charsetprober.py │ ├── cli │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-38.pyc │ │ │ └── chardetect.cpython-38.pyc │ │ └── chardetect.py │ ├── codingstatemachine.py │ ├── compat.py │ ├── cp949prober.py │ ├── enums.py │ ├── escprober.py │ ├── escsm.py │ ├── eucjpprober.py │ ├── euckrfreq.py │ ├── euckrprober.py │ ├── euctwfreq.py │ ├── euctwprober.py │ ├── gb2312freq.py │ ├── gb2312prober.py │ ├── hebrewprober.py │ ├── jisfreq.py │ ├── jpcntx.py │ ├── langbulgarianmodel.py │ ├── langcyrillicmodel.py │ ├── langgreekmodel.py │ ├── langhebrewmodel.py │ ├── langhungarianmodel.py │ ├── langthaimodel.py │ ├── langturkishmodel.py │ ├── latin1prober.py │ ├── mbcharsetprober.py │ ├── mbcsgroupprober.py │ ├── mbcssm.py │ ├── sbcharsetprober.py │ ├── sbcsgroupprober.py │ ├── sjisprober.py │ ├── universaldetector.py │ ├── utf8prober.py │ └── version.py │ ├── easy-install.pth │ ├── idna-2.10.dist-info │ ├── INSTALLER │ ├── LICENSE.rst │ ├── METADATA │ ├── RECORD │ ├── WHEEL │ └── top_level.txt │ ├── idna │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-38.pyc │ │ ├── codec.cpython-38.pyc │ │ ├── compat.cpython-38.pyc │ │ ├── core.cpython-38.pyc │ │ ├── idnadata.cpython-38.pyc │ │ ├── intranges.cpython-38.pyc │ │ ├── package_data.cpython-38.pyc │ │ └── uts46data.cpython-38.pyc │ ├── codec.py │ ├── compat.py │ ├── core.py │ ├── idnadata.py │ ├── intranges.py │ ├── package_data.py │ └── uts46data.py │ ├── pip-10.0.1-py3.8.egg │ ├── EGG-INFO │ │ ├── PKG-INFO │ │ ├── SOURCES.txt │ │ ├── dependency_links.txt │ │ ├── entry_points.txt │ │ ├── not-zip-safe │ │ ├── requires.txt │ │ └── top_level.txt │ └── pip │ │ ├── __init__.py │ │ ├── __main__.py │ │ ├── _internal │ │ ├── __init__.py │ │ ├── basecommand.py │ │ ├── baseparser.py │ │ ├── build_env.py │ │ ├── cache.py │ │ ├── cmdoptions.py │ │ ├── commands │ │ │ ├── __init__.py │ │ │ ├── check.py │ │ │ ├── completion.py │ │ │ ├── configuration.py │ │ │ ├── download.py │ │ │ ├── freeze.py │ │ │ ├── hash.py │ │ │ ├── help.py │ │ │ ├── install.py │ │ │ ├── list.py │ │ │ ├── search.py │ │ │ ├── show.py │ │ │ ├── uninstall.py │ │ │ └── wheel.py │ │ ├── compat.py │ │ ├── configuration.py │ │ ├── download.py │ │ ├── exceptions.py │ │ ├── index.py │ │ ├── locations.py │ │ ├── models │ │ │ ├── __init__.py │ │ │ └── index.py │ │ ├── operations │ │ │ ├── __init__.py │ │ │ ├── check.py │ │ │ ├── freeze.py │ │ │ └── prepare.py │ │ ├── pep425tags.py │ │ ├── req │ │ │ ├── __init__.py │ │ │ ├── req_file.py │ │ │ ├── req_install.py │ │ │ ├── req_set.py │ │ │ └── req_uninstall.py │ │ ├── resolve.py │ │ ├── status_codes.py │ │ ├── utils │ │ │ ├── __init__.py │ │ │ ├── appdirs.py │ │ │ ├── deprecation.py │ │ │ ├── encoding.py │ │ │ ├── filesystem.py │ │ │ ├── glibc.py │ │ │ ├── hashes.py │ │ │ ├── logging.py │ │ │ ├── misc.py │ │ │ ├── outdated.py │ │ │ ├── packaging.py │ │ │ ├── setuptools_build.py │ │ │ ├── temp_dir.py │ │ │ ├── typing.py │ │ │ └── ui.py │ │ ├── vcs │ │ │ ├── __init__.py │ │ │ ├── bazaar.py │ │ │ ├── git.py │ │ │ ├── mercurial.py │ │ │ └── subversion.py │ │ └── wheel.py │ │ └── _vendor │ │ ├── __init__.py │ │ ├── appdirs.py │ │ ├── cachecontrol │ │ ├── __init__.py │ │ ├── _cmd.py │ │ ├── adapter.py │ │ ├── cache.py │ │ ├── caches │ │ │ ├── __init__.py │ │ │ ├── file_cache.py │ │ │ └── redis_cache.py │ │ ├── compat.py │ │ ├── controller.py │ │ ├── filewrapper.py │ │ ├── heuristics.py │ │ ├── serialize.py │ │ └── wrapper.py │ │ ├── certifi │ │ ├── __init__.py │ │ ├── __main__.py │ │ ├── cacert.pem │ │ └── core.py │ │ ├── chardet │ │ ├── __init__.py │ │ ├── big5freq.py │ │ ├── big5prober.py │ │ ├── chardistribution.py │ │ ├── charsetgroupprober.py │ │ ├── charsetprober.py │ │ ├── cli │ │ │ ├── __init__.py │ │ │ └── chardetect.py │ │ ├── codingstatemachine.py │ │ ├── compat.py │ │ ├── cp949prober.py │ │ ├── enums.py │ │ ├── escprober.py │ │ ├── escsm.py │ │ ├── eucjpprober.py │ │ ├── euckrfreq.py │ │ ├── euckrprober.py │ │ ├── euctwfreq.py │ │ ├── euctwprober.py │ │ ├── gb2312freq.py │ │ ├── gb2312prober.py │ │ ├── hebrewprober.py │ │ ├── jisfreq.py │ │ ├── jpcntx.py │ │ ├── langbulgarianmodel.py │ │ ├── langcyrillicmodel.py │ │ ├── langgreekmodel.py │ │ ├── langhebrewmodel.py │ │ ├── langhungarianmodel.py │ │ ├── langthaimodel.py │ │ ├── langturkishmodel.py │ │ ├── latin1prober.py │ │ ├── mbcharsetprober.py │ │ ├── mbcsgroupprober.py │ │ ├── mbcssm.py │ │ ├── sbcharsetprober.py │ │ ├── sbcsgroupprober.py │ │ ├── sjisprober.py │ │ ├── universaldetector.py │ │ ├── utf8prober.py │ │ └── version.py │ │ ├── colorama │ │ ├── __init__.py │ │ ├── ansi.py │ │ ├── ansitowin32.py │ │ ├── initialise.py │ │ ├── win32.py │ │ └── winterm.py │ │ ├── distlib │ │ ├── __init__.py │ │ ├── _backport │ │ │ ├── __init__.py │ │ │ ├── misc.py │ │ │ ├── shutil.py │ │ │ ├── sysconfig.cfg │ │ │ ├── sysconfig.py │ │ │ └── tarfile.py │ │ ├── compat.py │ │ ├── database.py │ │ ├── index.py │ │ ├── locators.py │ │ ├── manifest.py │ │ ├── markers.py │ │ ├── metadata.py │ │ ├── resources.py │ │ ├── scripts.py │ │ ├── t32.exe │ │ ├── t64.exe │ │ ├── util.py │ │ ├── version.py │ │ ├── w32.exe │ │ ├── w64.exe │ │ └── wheel.py │ │ ├── distro.py │ │ ├── html5lib │ │ ├── __init__.py │ │ ├── _ihatexml.py │ │ ├── _inputstream.py │ │ ├── _tokenizer.py │ │ ├── _trie │ │ │ ├── __init__.py │ │ │ ├── _base.py │ │ │ ├── datrie.py │ │ │ └── py.py │ │ ├── _utils.py │ │ ├── constants.py │ │ ├── filters │ │ │ ├── __init__.py │ │ │ ├── alphabeticalattributes.py │ │ │ ├── base.py │ │ │ ├── inject_meta_charset.py │ │ │ ├── lint.py │ │ │ ├── optionaltags.py │ │ │ ├── sanitizer.py │ │ │ └── whitespace.py │ │ ├── html5parser.py │ │ ├── serializer.py │ │ ├── treeadapters │ │ │ ├── __init__.py │ │ │ ├── genshi.py │ │ │ └── sax.py │ │ ├── treebuilders │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── dom.py │ │ │ ├── etree.py │ │ │ └── etree_lxml.py │ │ └── treewalkers │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── dom.py │ │ │ ├── etree.py │ │ │ ├── etree_lxml.py │ │ │ └── genshi.py │ │ ├── idna │ │ ├── __init__.py │ │ ├── codec.py │ │ ├── compat.py │ │ ├── core.py │ │ ├── idnadata.py │ │ ├── intranges.py │ │ ├── package_data.py │ │ └── uts46data.py │ │ ├── ipaddress.py │ │ ├── lockfile │ │ ├── __init__.py │ │ ├── linklockfile.py │ │ ├── mkdirlockfile.py │ │ ├── pidlockfile.py │ │ ├── sqlitelockfile.py │ │ └── symlinklockfile.py │ │ ├── msgpack │ │ ├── __init__.py │ │ ├── _version.py │ │ ├── exceptions.py │ │ └── fallback.py │ │ ├── packaging │ │ ├── __about__.py │ │ ├── __init__.py │ │ ├── _compat.py │ │ ├── _structures.py │ │ ├── markers.py │ │ ├── requirements.py │ │ ├── specifiers.py │ │ ├── utils.py │ │ └── version.py │ │ ├── pkg_resources │ │ ├── __init__.py │ │ └── py31compat.py │ │ ├── progress │ │ ├── __init__.py │ │ ├── bar.py │ │ ├── counter.py │ │ ├── helpers.py │ │ └── spinner.py │ │ ├── pyparsing.py │ │ ├── pytoml │ │ ├── __init__.py │ │ ├── core.py │ │ ├── parser.py │ │ └── writer.py │ │ ├── requests │ │ ├── __init__.py │ │ ├── __version__.py │ │ ├── _internal_utils.py │ │ ├── adapters.py │ │ ├── api.py │ │ ├── auth.py │ │ ├── certs.py │ │ ├── compat.py │ │ ├── cookies.py │ │ ├── exceptions.py │ │ ├── help.py │ │ ├── hooks.py │ │ ├── models.py │ │ ├── packages.py │ │ ├── sessions.py │ │ ├── status_codes.py │ │ ├── structures.py │ │ └── utils.py │ │ ├── retrying.py │ │ ├── six.py │ │ ├── urllib3 │ │ ├── __init__.py │ │ ├── _collections.py │ │ ├── connection.py │ │ ├── connectionpool.py │ │ ├── contrib │ │ │ ├── __init__.py │ │ │ ├── _securetransport │ │ │ │ ├── __init__.py │ │ │ │ ├── bindings.py │ │ │ │ └── low_level.py │ │ │ ├── appengine.py │ │ │ ├── ntlmpool.py │ │ │ ├── pyopenssl.py │ │ │ ├── securetransport.py │ │ │ └── socks.py │ │ ├── exceptions.py │ │ ├── fields.py │ │ ├── filepost.py │ │ ├── packages │ │ │ ├── __init__.py │ │ │ ├── backports │ │ │ │ ├── __init__.py │ │ │ │ └── makefile.py │ │ │ ├── ordered_dict.py │ │ │ ├── six.py │ │ │ └── ssl_match_hostname │ │ │ │ ├── __init__.py │ │ │ │ └── _implementation.py │ │ ├── poolmanager.py │ │ ├── request.py │ │ ├── response.py │ │ └── util │ │ │ ├── __init__.py │ │ │ ├── connection.py │ │ │ ├── request.py │ │ │ ├── response.py │ │ │ ├── retry.py │ │ │ ├── selectors.py │ │ │ ├── ssl_.py │ │ │ ├── timeout.py │ │ │ ├── url.py │ │ │ └── wait.py │ │ └── webencodings │ │ ├── __init__.py │ │ ├── labels.py │ │ ├── mklabels.py │ │ ├── tests.py │ │ └── x_user_defined.py │ ├── requests-2.25.0.dist-info │ ├── INSTALLER │ ├── LICENSE │ ├── METADATA │ ├── RECORD │ ├── WHEEL │ └── top_level.txt │ ├── requests │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-38.pyc │ │ ├── __version__.cpython-38.pyc │ │ ├── _internal_utils.cpython-38.pyc │ │ ├── adapters.cpython-38.pyc │ │ ├── api.cpython-38.pyc │ │ ├── auth.cpython-38.pyc │ │ ├── certs.cpython-38.pyc │ │ ├── compat.cpython-38.pyc │ │ ├── cookies.cpython-38.pyc │ │ ├── exceptions.cpython-38.pyc │ │ ├── help.cpython-38.pyc │ │ ├── hooks.cpython-38.pyc │ │ ├── models.cpython-38.pyc │ │ ├── packages.cpython-38.pyc │ │ ├── sessions.cpython-38.pyc │ │ ├── status_codes.cpython-38.pyc │ │ ├── structures.cpython-38.pyc │ │ └── utils.cpython-38.pyc │ ├── __version__.py │ ├── _internal_utils.py │ ├── adapters.py │ ├── api.py │ ├── auth.py │ ├── certs.py │ ├── compat.py │ ├── cookies.py │ ├── exceptions.py │ ├── help.py │ ├── hooks.py │ ├── models.py │ ├── packages.py │ ├── sessions.py │ ├── status_codes.py │ ├── structures.py │ └── utils.py │ ├── setuptools-39.1.0-py3.8.egg │ ├── setuptools.pth │ ├── urllib3-1.26.2.dist-info │ ├── INSTALLER │ ├── LICENSE.txt │ ├── METADATA │ ├── RECORD │ ├── WHEEL │ └── top_level.txt │ └── urllib3 │ ├── __init__.py │ ├── __pycache__ │ ├── __init__.cpython-38.pyc │ ├── _collections.cpython-38.pyc │ ├── _version.cpython-38.pyc │ ├── connection.cpython-38.pyc │ ├── connectionpool.cpython-38.pyc │ ├── exceptions.cpython-38.pyc │ ├── fields.cpython-38.pyc │ ├── filepost.cpython-38.pyc │ ├── poolmanager.cpython-38.pyc │ ├── request.cpython-38.pyc │ └── response.cpython-38.pyc │ ├── _collections.py │ ├── _version.py │ ├── connection.py │ ├── connectionpool.py │ ├── contrib │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-38.pyc │ │ ├── _appengine_environ.cpython-38.pyc │ │ ├── appengine.cpython-38.pyc │ │ ├── ntlmpool.cpython-38.pyc │ │ ├── pyopenssl.cpython-38.pyc │ │ ├── securetransport.cpython-38.pyc │ │ └── socks.cpython-38.pyc │ ├── _appengine_environ.py │ ├── _securetransport │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-38.pyc │ │ │ ├── bindings.cpython-38.pyc │ │ │ └── low_level.cpython-38.pyc │ │ ├── bindings.py │ │ └── low_level.py │ ├── appengine.py │ ├── ntlmpool.py │ ├── pyopenssl.py │ ├── securetransport.py │ └── socks.py │ ├── exceptions.py │ ├── fields.py │ ├── filepost.py │ ├── packages │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-38.pyc │ │ └── six.cpython-38.pyc │ ├── backports │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-38.pyc │ │ │ └── makefile.cpython-38.pyc │ │ └── makefile.py │ ├── six.py │ └── ssl_match_hostname │ │ ├── __init__.py │ │ ├── __pycache__ │ │ ├── __init__.cpython-38.pyc │ │ └── _implementation.cpython-38.pyc │ │ └── _implementation.py │ ├── poolmanager.py │ ├── request.py │ ├── response.py │ └── util │ ├── __init__.py │ ├── __pycache__ │ ├── __init__.cpython-38.pyc │ ├── connection.cpython-38.pyc │ ├── proxy.cpython-38.pyc │ ├── queue.cpython-38.pyc │ ├── request.cpython-38.pyc │ ├── response.cpython-38.pyc │ ├── retry.cpython-38.pyc │ ├── ssl_.cpython-38.pyc │ ├── ssltransport.cpython-38.pyc │ ├── timeout.cpython-38.pyc │ ├── url.cpython-38.pyc │ └── wait.cpython-38.pyc │ ├── connection.py │ ├── proxy.py │ ├── queue.py │ ├── request.py │ ├── response.py │ ├── retry.py │ ├── ssl_.py │ ├── ssltransport.py │ ├── timeout.py │ ├── url.py │ └── wait.py ├── pip-selfcheck.json └── pyvenv.cfg /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/.DS_Store -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 幸福村的码农 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.en.md: -------------------------------------------------------------------------------- 1 | # 币安量化-网格交易 2 | 3 | #### Description 4 | 币安交易所-量化交易-网格策略实践 5 | 6 | #### Software Architecture 7 | Software architecture description 8 | 9 | #### Installation 10 | 11 | 1. xxxx 12 | 2. xxxx 13 | 3. xxxx 14 | 15 | #### Instructions 16 | 17 | 1. xxxx 18 | 2. xxxx 19 | 3. xxxx 20 | 21 | #### Contribution 22 | 23 | 1. Fork the repository 24 | 2. Create Feat_xxx branch 25 | 3. Commit your code 26 | 4. Create Pull Request 27 | 28 | 29 | #### Gitee Feature 30 | 31 | 1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md 32 | 2. Gitee blog [blog.gitee.com](https://blog.gitee.com) 33 | 3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) 34 | 4. The most valuable open source project [GVP](https://gitee.com/gvp) 35 | 5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) 36 | 6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) 37 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | > 如果你还未使用过该项目,请通过[该链接](https://github.com/hengxuZ/binance-quantization),查看第一版本。有助于你更好的了解本项目。 2 | 3 | ## 🎉第二版本🎉 期现套利(现货做多 期货做空) 4 | > 背景:在量化运行的过程中,每当价格回落到满足买入价格时,🤖️ 会主动下一个买入订单。如果一直📉 那么就一直买一直买,直到账户没有💰 或 设置了停止补仓的策略。 5 | > 那么在这个价格下跌过程中,为什么不去利用下这个下跌的过程。而是坐以待毙等着上涨盈利?我们完全可以收集下跌过程中的势能,转化为我们需要的能量。 6 | 7 | > 结论:所以我选择了在下跌的过程开启了该交易对的做空,这样就能够很好的运用上每一次的波动率。 8 | 9 | ### 使用介绍 10 | 11 | 1.调整需要执行的交易对的杠杆倍数为x1,这样才能和现货形成数量上的对冲效应(你也可以使用更高的倍数,但是你一定要清楚每一个仓位买入量是多少,现货的买入量又是多少) 12 | 2. 修改配置data.json (位置在于./data/data.json) 13 | ``` 14 | { 15 | "runBet": { 16 | "next_buy_price": 2.71, <-- 现货买入价格,期货卖出价格 17 | "grid_sell_price": 2.87, <-- 现货卖出价格, 期货买入价格 18 | "spot_step": 0, <-- 现货当前持仓手数(你买了几手仓) 19 | "future_step": 2 <-- 期货当前持仓手数(你开了几手仓) 20 | }, 21 | "config": { 22 | "profit_ratio": 3, <-- 现货下次补仓比率,期货止盈比率 23 | "double_throw_ratio": 3, <-- 现货止盈比率,期货下次补仓比率 24 | "cointype": "EOSUSDT", 25 | "spot_quantity": [ 26 | 50 <-- 现货买入量(可以自定义每手买入量,超出手数后,每手买入量均按照最后一位购买) 27 | ], 28 | "future_quantity": [ 29 | 50 <-- 期货买入量(可以自定义每手买入量,超出手数后,每手买入量均按照最后一位购买) 30 | ] 31 | } 32 | } 33 | 34 | ⬆️ 面配置还有很多可玩性,比如 35 | "config": { 36 | "profit_ratio": 5, 37 | "double_throw_ratio": 10, 38 | } 39 | ``` 40 | 表达的意思是:趋势向上的网格(profit_ratio:5,double_throw_ratio:10) 41 | 42 | ![如果看不到图,请到wx群获取](https://s3.ax1x.com/2021/01/15/s0kMtg.png) 43 | 44 | 3.运行脚本 45 | python3 eos.py 46 | -------------------------------------------------------------------------------- /__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/__init__.py -------------------------------------------------------------------------------- /app/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/app/__init__.py -------------------------------------------------------------------------------- /app/__pycache__/BinanceAPI.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/app/__pycache__/BinanceAPI.cpython-38.pyc -------------------------------------------------------------------------------- /app/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/app/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /app/__pycache__/authorization.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/app/__pycache__/authorization.cpython-38.pyc -------------------------------------------------------------------------------- /app/__pycache__/dingding.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/app/__pycache__/dingding.cpython-38.pyc -------------------------------------------------------------------------------- /app/authorization.py: -------------------------------------------------------------------------------- 1 | # Get an Key and Secret 2 | # author-wechat:findpanpan 3 | 4 | api_key = '' 5 | api_secret = '' 6 | recv_window = 5000 7 | 8 | dingding_token = "" 9 | -------------------------------------------------------------------------------- /data/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/data/__init__.py -------------------------------------------------------------------------------- /data/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/data/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /data/__pycache__/runBetData.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/data/__pycache__/runBetData.cpython-38.pyc -------------------------------------------------------------------------------- /data/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "runBet": { 3 | "next_buy_price": 2, 4 | "grid_sell_price": 3, 5 | "spot_step": 0, 6 | "future_step": 0 7 | }, 8 | "config": { 9 | "profit_ratio": 5, 10 | "double_throw_ratio": 5, 11 | "cointype": "EOSUSDT", 12 | "spot_quantity": [ 13 | 7 14 | ], 15 | "future_quantity": [ 16 | 7 17 | ] 18 | } 19 | } -------------------------------------------------------------------------------- /venv/bin/activate: -------------------------------------------------------------------------------- 1 | # This file must be used with "source bin/activate" *from bash* 2 | # you cannot run it directly 3 | 4 | deactivate () { 5 | # reset old environment variables 6 | if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then 7 | PATH="${_OLD_VIRTUAL_PATH:-}" 8 | export PATH 9 | unset _OLD_VIRTUAL_PATH 10 | fi 11 | if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then 12 | PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}" 13 | export PYTHONHOME 14 | unset _OLD_VIRTUAL_PYTHONHOME 15 | fi 16 | 17 | # This should detect bash and zsh, which have a hash command that must 18 | # be called to get it to forget past commands. Without forgetting 19 | # past commands the $PATH changes we made may not be respected 20 | if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then 21 | hash -r 22 | fi 23 | 24 | if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then 25 | PS1="${_OLD_VIRTUAL_PS1:-}" 26 | export PS1 27 | unset _OLD_VIRTUAL_PS1 28 | fi 29 | 30 | unset VIRTUAL_ENV 31 | if [ ! "${1:-}" = "nondestructive" ] ; then 32 | # Self destruct! 33 | unset -f deactivate 34 | fi 35 | } 36 | 37 | # unset irrelevant variables 38 | deactivate nondestructive 39 | 40 | VIRTUAL_ENV="/Users/xingfucundeerwa/Desktop/github/binance/binance-quantization/venv" 41 | export VIRTUAL_ENV 42 | 43 | _OLD_VIRTUAL_PATH="$PATH" 44 | PATH="$VIRTUAL_ENV/bin:$PATH" 45 | export PATH 46 | 47 | # unset PYTHONHOME if set 48 | # this will fail if PYTHONHOME is set to the empty string (which is bad anyway) 49 | # could use `if (set -u; : $PYTHONHOME) ;` in bash 50 | if [ -n "${PYTHONHOME:-}" ] ; then 51 | _OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}" 52 | unset PYTHONHOME 53 | fi 54 | 55 | if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then 56 | _OLD_VIRTUAL_PS1="${PS1:-}" 57 | if [ "x(venv) " != x ] ; then 58 | PS1="(venv) ${PS1:-}" 59 | else 60 | if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then 61 | # special case for Aspen magic directories 62 | # see http://www.zetadev.com/software/aspen/ 63 | PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1" 64 | else 65 | PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1" 66 | fi 67 | fi 68 | export PS1 69 | fi 70 | 71 | # This should detect bash and zsh, which have a hash command that must 72 | # be called to get it to forget past commands. Without forgetting 73 | # past commands the $PATH changes we made may not be respected 74 | if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then 75 | hash -r 76 | fi 77 | -------------------------------------------------------------------------------- /venv/bin/activate.csh: -------------------------------------------------------------------------------- 1 | # This file must be used with "source bin/activate.csh" *from csh*. 2 | # You cannot run it directly. 3 | # Created by Davide Di Blasi . 4 | # Ported to Python 3.3 venv by Andrew Svetlov 5 | 6 | alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate' 7 | 8 | # Unset irrelevant variables. 9 | deactivate nondestructive 10 | 11 | setenv VIRTUAL_ENV "/Users/xingfucundeerwa/Desktop/github/binance/binance-quantization/venv" 12 | 13 | set _OLD_VIRTUAL_PATH="$PATH" 14 | setenv PATH "$VIRTUAL_ENV/bin:$PATH" 15 | 16 | 17 | set _OLD_VIRTUAL_PROMPT="$prompt" 18 | 19 | if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then 20 | if ("venv" != "") then 21 | set env_name = "venv" 22 | else 23 | if (`basename "VIRTUAL_ENV"` == "__") then 24 | # special case for Aspen magic directories 25 | # see http://www.zetadev.com/software/aspen/ 26 | set env_name = `basename \`dirname "$VIRTUAL_ENV"\`` 27 | else 28 | set env_name = `basename "$VIRTUAL_ENV"` 29 | endif 30 | endif 31 | set prompt = "[$env_name] $prompt" 32 | unset env_name 33 | endif 34 | 35 | alias pydoc python -m pydoc 36 | 37 | rehash 38 | -------------------------------------------------------------------------------- /venv/bin/chardetect: -------------------------------------------------------------------------------- 1 | #!/Users/xingfucundeerwa/Desktop/github/binance/binance-quantization/venv/bin/python 2 | 3 | # -*- coding: utf-8 -*- 4 | import re 5 | import sys 6 | 7 | from chardet.cli.chardetect import main 8 | 9 | if __name__ == '__main__': 10 | sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) 11 | sys.exit(main()) 12 | -------------------------------------------------------------------------------- /venv/bin/easy_install: -------------------------------------------------------------------------------- 1 | #!/Users/xingfucundeerwa/Desktop/github/binance/binance-quantization/venv/bin/python 2 | # EASY-INSTALL-ENTRY-SCRIPT: 'setuptools==39.1.0','console_scripts','easy_install' 3 | __requires__ = 'setuptools==39.1.0' 4 | import re 5 | import sys 6 | from pkg_resources import load_entry_point 7 | 8 | if __name__ == '__main__': 9 | sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) 10 | sys.exit( 11 | load_entry_point('setuptools==39.1.0', 'console_scripts', 'easy_install')() 12 | ) 13 | -------------------------------------------------------------------------------- /venv/bin/easy_install-3.8: -------------------------------------------------------------------------------- 1 | #!/Users/xingfucundeerwa/Desktop/github/binance/binance-quantization/venv/bin/python 2 | # EASY-INSTALL-ENTRY-SCRIPT: 'setuptools==39.1.0','console_scripts','easy_install-3.8' 3 | __requires__ = 'setuptools==39.1.0' 4 | import re 5 | import sys 6 | from pkg_resources import load_entry_point 7 | 8 | if __name__ == '__main__': 9 | sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) 10 | sys.exit( 11 | load_entry_point('setuptools==39.1.0', 'console_scripts', 'easy_install-3.8')() 12 | ) 13 | -------------------------------------------------------------------------------- /venv/bin/pip: -------------------------------------------------------------------------------- 1 | #!/Users/xingfucundeerwa/Desktop/github/binance/binance-quantization/venv/bin/python 2 | # EASY-INSTALL-ENTRY-SCRIPT: 'pip==10.0.1','console_scripts','pip' 3 | __requires__ = 'pip==10.0.1' 4 | import re 5 | import sys 6 | from pkg_resources import load_entry_point 7 | 8 | if __name__ == '__main__': 9 | sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) 10 | sys.exit( 11 | load_entry_point('pip==10.0.1', 'console_scripts', 'pip')() 12 | ) 13 | -------------------------------------------------------------------------------- /venv/bin/pip3: -------------------------------------------------------------------------------- 1 | #!/Users/xingfucundeerwa/Desktop/github/binance/binance-quantization/venv/bin/python 2 | # EASY-INSTALL-ENTRY-SCRIPT: 'pip==10.0.1','console_scripts','pip3' 3 | __requires__ = 'pip==10.0.1' 4 | import re 5 | import sys 6 | from pkg_resources import load_entry_point 7 | 8 | if __name__ == '__main__': 9 | sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) 10 | sys.exit( 11 | load_entry_point('pip==10.0.1', 'console_scripts', 'pip3')() 12 | ) 13 | -------------------------------------------------------------------------------- /venv/bin/pip3.8: -------------------------------------------------------------------------------- 1 | #!/Users/xingfucundeerwa/Desktop/github/binance/binance-quantization/venv/bin/python 2 | # EASY-INSTALL-ENTRY-SCRIPT: 'pip==10.0.1','console_scripts','pip3.8' 3 | __requires__ = 'pip==10.0.1' 4 | import re 5 | import sys 6 | from pkg_resources import load_entry_point 7 | 8 | if __name__ == '__main__': 9 | sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) 10 | sys.exit( 11 | load_entry_point('pip==10.0.1', 'console_scripts', 'pip3.8')() 12 | ) 13 | -------------------------------------------------------------------------------- /venv/bin/python: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/bin/python -------------------------------------------------------------------------------- /venv/bin/python3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/bin/python3 -------------------------------------------------------------------------------- /venv/bin/python3.8: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/bin/python3.8 -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/certifi-2020.11.8.dist-info/INSTALLER: -------------------------------------------------------------------------------- 1 | pip 2 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/certifi-2020.11.8.dist-info/LICENSE: -------------------------------------------------------------------------------- 1 | This packge contains a modified version of ca-bundle.crt: 2 | 3 | ca-bundle.crt -- Bundle of CA Root Certificates 4 | 5 | Certificate data from Mozilla as of: Thu Nov 3 19:04:19 2011# 6 | This is a bundle of X.509 certificates of public Certificate Authorities 7 | (CA). These were automatically extracted from Mozilla's root certificates 8 | file (certdata.txt). This file can be found in the mozilla source tree: 9 | http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1# 10 | It contains the certificates in PEM format and therefore 11 | can be directly used with curl / libcurl / php_curl, or with 12 | an Apache+mod_ssl webserver for SSL client authentication. 13 | Just configure this file as the SSLCACertificateFile.# 14 | 15 | ***** BEGIN LICENSE BLOCK ***** 16 | This Source Code Form is subject to the terms of the Mozilla Public License, 17 | v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain 18 | one at http://mozilla.org/MPL/2.0/. 19 | 20 | ***** END LICENSE BLOCK ***** 21 | @(#) $RCSfile: certdata.txt,v $ $Revision: 1.80 $ $Date: 2011/11/03 15:11:58 $ 22 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/certifi-2020.11.8.dist-info/RECORD: -------------------------------------------------------------------------------- 1 | certifi/__init__.py,sha256=TocBfHrqAkQK91W5jNYhRH8KKizxkkXZBk68DTHj0xo,62 2 | certifi/__main__.py,sha256=xBBoj905TUWBLRGANOcf7oi6e-3dMP4cEoG9OyMs11g,243 3 | certifi/cacert.pem,sha256=U7iFT4_n-7XCfHpc8I46ad5kHuGvDSedla2fdbQoQUo,281608 4 | certifi/core.py,sha256=V0uyxKOYdz6ulDSusclrLmjbPgOXsD0BnEf0SQ7OnoE,2303 5 | certifi-2020.11.8.dist-info/LICENSE,sha256=anCkv2sBABbVmmS4rkrY3H9e8W8ftFPMLs13HFo0ETE,1048 6 | certifi-2020.11.8.dist-info/METADATA,sha256=LBPr6g1-mGhOtrMGg8DFzNp-V76vs5J38EKLzzJDbOM,2994 7 | certifi-2020.11.8.dist-info/WHEEL,sha256=ADKeyaGyKF5DwBNE0sRE5pvW-bSkFMJfBuhzZ3rceP4,110 8 | certifi-2020.11.8.dist-info/top_level.txt,sha256=KMu4vUCfsjLrkPbSNdgdekS-pVJzBAJFO__nI8NF6-U,8 9 | certifi-2020.11.8.dist-info/RECORD,, 10 | certifi-2020.11.8.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 11 | certifi/__pycache__/__init__.cpython-38.pyc,, 12 | certifi/__pycache__/core.cpython-38.pyc,, 13 | certifi/__pycache__/__main__.cpython-38.pyc,, 14 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/certifi-2020.11.8.dist-info/WHEEL: -------------------------------------------------------------------------------- 1 | Wheel-Version: 1.0 2 | Generator: bdist_wheel (0.35.1) 3 | Root-Is-Purelib: true 4 | Tag: py2-none-any 5 | Tag: py3-none-any 6 | 7 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/certifi-2020.11.8.dist-info/top_level.txt: -------------------------------------------------------------------------------- 1 | certifi 2 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/certifi/__init__.py: -------------------------------------------------------------------------------- 1 | from .core import contents, where 2 | 3 | __version__ = "2020.11.08" 4 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/certifi/__main__.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | 3 | from certifi import contents, where 4 | 5 | parser = argparse.ArgumentParser() 6 | parser.add_argument("-c", "--contents", action="store_true") 7 | args = parser.parse_args() 8 | 9 | if args.contents: 10 | print(contents()) 11 | else: 12 | print(where()) 13 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/certifi/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/certifi/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/certifi/__pycache__/__main__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/certifi/__pycache__/__main__.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/certifi/__pycache__/core.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/certifi/__pycache__/core.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/certifi/core.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | """ 4 | certifi.py 5 | ~~~~~~~~~~ 6 | 7 | This module returns the installation location of cacert.pem or its contents. 8 | """ 9 | import os 10 | 11 | try: 12 | from importlib.resources import path as get_path, read_text 13 | 14 | _CACERT_CTX = None 15 | _CACERT_PATH = None 16 | 17 | def where(): 18 | # This is slightly terrible, but we want to delay extracting the file 19 | # in cases where we're inside of a zipimport situation until someone 20 | # actually calls where(), but we don't want to re-extract the file 21 | # on every call of where(), so we'll do it once then store it in a 22 | # global variable. 23 | global _CACERT_CTX 24 | global _CACERT_PATH 25 | if _CACERT_PATH is None: 26 | # This is slightly janky, the importlib.resources API wants you to 27 | # manage the cleanup of this file, so it doesn't actually return a 28 | # path, it returns a context manager that will give you the path 29 | # when you enter it and will do any cleanup when you leave it. In 30 | # the common case of not needing a temporary file, it will just 31 | # return the file system location and the __exit__() is a no-op. 32 | # 33 | # We also have to hold onto the actual context manager, because 34 | # it will do the cleanup whenever it gets garbage collected, so 35 | # we will also store that at the global level as well. 36 | _CACERT_CTX = get_path("certifi", "cacert.pem") 37 | _CACERT_PATH = str(_CACERT_CTX.__enter__()) 38 | 39 | return _CACERT_PATH 40 | 41 | 42 | except ImportError: 43 | # This fallback will work for Python versions prior to 3.7 that lack the 44 | # importlib.resources module but relies on the existing `where` function 45 | # so won't address issues with environments like PyOxidizer that don't set 46 | # __file__ on modules. 47 | def read_text(_module, _path, encoding="ascii"): 48 | with open(where(), "r", encoding=encoding) as data: 49 | return data.read() 50 | 51 | # If we don't have importlib.resources, then we will just do the old logic 52 | # of assuming we're on the filesystem and munge the path directly. 53 | def where(): 54 | f = os.path.dirname(__file__) 55 | 56 | return os.path.join(f, "cacert.pem") 57 | 58 | 59 | def contents(): 60 | return read_text("certifi", "cacert.pem", encoding="ascii") 61 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet-3.0.4.dist-info/DESCRIPTION.rst: -------------------------------------------------------------------------------- 1 | Chardet: The Universal Character Encoding Detector 2 | -------------------------------------------------- 3 | 4 | .. image:: https://img.shields.io/travis/chardet/chardet/stable.svg 5 | :alt: Build status 6 | :target: https://travis-ci.org/chardet/chardet 7 | 8 | .. image:: https://img.shields.io/coveralls/chardet/chardet/stable.svg 9 | :target: https://coveralls.io/r/chardet/chardet 10 | 11 | .. image:: https://img.shields.io/pypi/v/chardet.svg 12 | :target: https://warehouse.python.org/project/chardet/ 13 | :alt: Latest version on PyPI 14 | 15 | .. image:: https://img.shields.io/pypi/l/chardet.svg 16 | :alt: License 17 | 18 | 19 | Detects 20 | - ASCII, UTF-8, UTF-16 (2 variants), UTF-32 (4 variants) 21 | - Big5, GB2312, EUC-TW, HZ-GB-2312, ISO-2022-CN (Traditional and Simplified Chinese) 22 | - EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP (Japanese) 23 | - EUC-KR, ISO-2022-KR (Korean) 24 | - KOI8-R, MacCyrillic, IBM855, IBM866, ISO-8859-5, windows-1251 (Cyrillic) 25 | - ISO-8859-5, windows-1251 (Bulgarian) 26 | - ISO-8859-1, windows-1252 (Western European languages) 27 | - ISO-8859-7, windows-1253 (Greek) 28 | - ISO-8859-8, windows-1255 (Visual and Logical Hebrew) 29 | - TIS-620 (Thai) 30 | 31 | .. note:: 32 | Our ISO-8859-2 and windows-1250 (Hungarian) probers have been temporarily 33 | disabled until we can retrain the models. 34 | 35 | Requires Python 2.6, 2.7, or 3.3+. 36 | 37 | Installation 38 | ------------ 39 | 40 | Install from `PyPI `_:: 41 | 42 | pip install chardet 43 | 44 | Documentation 45 | ------------- 46 | 47 | For users, docs are now available at https://chardet.readthedocs.io/. 48 | 49 | Command-line Tool 50 | ----------------- 51 | 52 | chardet comes with a command-line script which reports on the encodings of one 53 | or more files:: 54 | 55 | % chardetect somefile someotherfile 56 | somefile: windows-1252 with confidence 0.5 57 | someotherfile: ascii with confidence 1.0 58 | 59 | About 60 | ----- 61 | 62 | This is a continuation of Mark Pilgrim's excellent chardet. Previously, two 63 | versions needed to be maintained: one that supported python 2.x and one that 64 | supported python 3.x. We've recently merged with `Ian Cordasco `_'s 65 | `charade `_ fork, so now we have one 66 | coherent version that works for Python 2.6+. 67 | 68 | :maintainer: Dan Blanchard 69 | 70 | 71 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet-3.0.4.dist-info/INSTALLER: -------------------------------------------------------------------------------- 1 | pip 2 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet-3.0.4.dist-info/WHEEL: -------------------------------------------------------------------------------- 1 | Wheel-Version: 1.0 2 | Generator: bdist_wheel (0.29.0) 3 | Root-Is-Purelib: true 4 | Tag: py2-none-any 5 | Tag: py3-none-any 6 | 7 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet-3.0.4.dist-info/entry_points.txt: -------------------------------------------------------------------------------- 1 | [console_scripts] 2 | chardetect = chardet.cli.chardetect:main 3 | 4 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet-3.0.4.dist-info/metadata.json: -------------------------------------------------------------------------------- 1 | {"classifiers": ["Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Text Processing :: Linguistic"], "extensions": {"python.commands": {"wrap_console": {"chardetect": "chardet.cli.chardetect:main"}}, "python.details": {"contacts": [{"email": "dan.blanchard@gmail.com", "name": "Daniel Blanchard", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://github.com/chardet/chardet"}}, "python.exports": {"console_scripts": {"chardetect": "chardet.cli.chardetect:main"}}}, "generator": "bdist_wheel (0.29.0)", "keywords": ["encoding", "i18n", "xml"], "license": "LGPL", "metadata_version": "2.0", "name": "chardet", "summary": "Universal encoding detector for Python 2 and 3", "test_requires": [{"requires": ["hypothesis", "pytest"]}], "version": "3.0.4"} -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet-3.0.4.dist-info/top_level.txt: -------------------------------------------------------------------------------- 1 | chardet 2 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__init__.py: -------------------------------------------------------------------------------- 1 | ######################## BEGIN LICENSE BLOCK ######################## 2 | # This library is free software; you can redistribute it and/or 3 | # modify it under the terms of the GNU Lesser General Public 4 | # License as published by the Free Software Foundation; either 5 | # version 2.1 of the License, or (at your option) any later version. 6 | # 7 | # This library is distributed in the hope that it will be useful, 8 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 10 | # Lesser General Public License for more details. 11 | # 12 | # You should have received a copy of the GNU Lesser General Public 13 | # License along with this library; if not, write to the Free Software 14 | # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 15 | # 02110-1301 USA 16 | ######################### END LICENSE BLOCK ######################### 17 | 18 | 19 | from .compat import PY2, PY3 20 | from .universaldetector import UniversalDetector 21 | from .version import __version__, VERSION 22 | 23 | 24 | def detect(byte_str): 25 | """ 26 | Detect the encoding of the given byte string. 27 | 28 | :param byte_str: The byte sequence to examine. 29 | :type byte_str: ``bytes`` or ``bytearray`` 30 | """ 31 | if not isinstance(byte_str, bytearray): 32 | if not isinstance(byte_str, bytes): 33 | raise TypeError('Expected object of type bytes or bytearray, got: ' 34 | '{0}'.format(type(byte_str))) 35 | else: 36 | byte_str = bytearray(byte_str) 37 | detector = UniversalDetector() 38 | detector.feed(byte_str) 39 | return detector.close() 40 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/big5freq.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/big5freq.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/big5prober.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/big5prober.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/chardistribution.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/chardistribution.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/charsetgroupprober.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/charsetgroupprober.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/charsetprober.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/charsetprober.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/codingstatemachine.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/codingstatemachine.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/compat.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/compat.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/cp949prober.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/cp949prober.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/enums.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/enums.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/escprober.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/escprober.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/escsm.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/escsm.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/eucjpprober.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/eucjpprober.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/euckrfreq.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/euckrfreq.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/euckrprober.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/euckrprober.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/euctwfreq.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/euctwfreq.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/euctwprober.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/euctwprober.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/gb2312freq.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/gb2312freq.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/gb2312prober.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/gb2312prober.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/hebrewprober.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/hebrewprober.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/jisfreq.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/jisfreq.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/jpcntx.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/jpcntx.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/langbulgarianmodel.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/langbulgarianmodel.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/langcyrillicmodel.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/langcyrillicmodel.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/langgreekmodel.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/langgreekmodel.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/langhebrewmodel.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/langhebrewmodel.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/langhungarianmodel.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/langhungarianmodel.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/langthaimodel.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/langthaimodel.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/langturkishmodel.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/langturkishmodel.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/latin1prober.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/latin1prober.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/mbcharsetprober.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/mbcharsetprober.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/mbcsgroupprober.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/mbcsgroupprober.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/mbcssm.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/mbcssm.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/sbcharsetprober.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/sbcharsetprober.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/sbcsgroupprober.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/sbcsgroupprober.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/sjisprober.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/sjisprober.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/universaldetector.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/universaldetector.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/utf8prober.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/utf8prober.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/__pycache__/version.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/__pycache__/version.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/big5prober.py: -------------------------------------------------------------------------------- 1 | ######################## BEGIN LICENSE BLOCK ######################## 2 | # The Original Code is Mozilla Communicator client code. 3 | # 4 | # The Initial Developer of the Original Code is 5 | # Netscape Communications Corporation. 6 | # Portions created by the Initial Developer are Copyright (C) 1998 7 | # the Initial Developer. All Rights Reserved. 8 | # 9 | # Contributor(s): 10 | # Mark Pilgrim - port to Python 11 | # 12 | # This library is free software; you can redistribute it and/or 13 | # modify it under the terms of the GNU Lesser General Public 14 | # License as published by the Free Software Foundation; either 15 | # version 2.1 of the License, or (at your option) any later version. 16 | # 17 | # This library is distributed in the hope that it will be useful, 18 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 20 | # Lesser General Public License for more details. 21 | # 22 | # You should have received a copy of the GNU Lesser General Public 23 | # License along with this library; if not, write to the Free Software 24 | # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 25 | # 02110-1301 USA 26 | ######################### END LICENSE BLOCK ######################### 27 | 28 | from .mbcharsetprober import MultiByteCharSetProber 29 | from .codingstatemachine import CodingStateMachine 30 | from .chardistribution import Big5DistributionAnalysis 31 | from .mbcssm import BIG5_SM_MODEL 32 | 33 | 34 | class Big5Prober(MultiByteCharSetProber): 35 | def __init__(self): 36 | super(Big5Prober, self).__init__() 37 | self.coding_sm = CodingStateMachine(BIG5_SM_MODEL) 38 | self.distribution_analyzer = Big5DistributionAnalysis() 39 | self.reset() 40 | 41 | @property 42 | def charset_name(self): 43 | return "Big5" 44 | 45 | @property 46 | def language(self): 47 | return "Chinese" 48 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/cli/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/cli/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/cli/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/cli/__pycache__/chardetect.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/chardet/cli/__pycache__/chardetect.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/compat.py: -------------------------------------------------------------------------------- 1 | ######################## BEGIN LICENSE BLOCK ######################## 2 | # Contributor(s): 3 | # Dan Blanchard 4 | # Ian Cordasco 5 | # 6 | # This library is free software; you can redistribute it and/or 7 | # modify it under the terms of the GNU Lesser General Public 8 | # License as published by the Free Software Foundation; either 9 | # version 2.1 of the License, or (at your option) any later version. 10 | # 11 | # This library is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | # Lesser General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU Lesser General Public 17 | # License along with this library; if not, write to the Free Software 18 | # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 19 | # 02110-1301 USA 20 | ######################### END LICENSE BLOCK ######################### 21 | 22 | import sys 23 | 24 | 25 | if sys.version_info < (3, 0): 26 | PY2 = True 27 | PY3 = False 28 | base_str = (str, unicode) 29 | text_type = unicode 30 | else: 31 | PY2 = False 32 | PY3 = True 33 | base_str = (bytes, str) 34 | text_type = str 35 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/cp949prober.py: -------------------------------------------------------------------------------- 1 | ######################## BEGIN LICENSE BLOCK ######################## 2 | # The Original Code is mozilla.org code. 3 | # 4 | # The Initial Developer of the Original Code is 5 | # Netscape Communications Corporation. 6 | # Portions created by the Initial Developer are Copyright (C) 1998 7 | # the Initial Developer. All Rights Reserved. 8 | # 9 | # Contributor(s): 10 | # Mark Pilgrim - port to Python 11 | # 12 | # This library is free software; you can redistribute it and/or 13 | # modify it under the terms of the GNU Lesser General Public 14 | # License as published by the Free Software Foundation; either 15 | # version 2.1 of the License, or (at your option) any later version. 16 | # 17 | # This library is distributed in the hope that it will be useful, 18 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 20 | # Lesser General Public License for more details. 21 | # 22 | # You should have received a copy of the GNU Lesser General Public 23 | # License along with this library; if not, write to the Free Software 24 | # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 25 | # 02110-1301 USA 26 | ######################### END LICENSE BLOCK ######################### 27 | 28 | from .chardistribution import EUCKRDistributionAnalysis 29 | from .codingstatemachine import CodingStateMachine 30 | from .mbcharsetprober import MultiByteCharSetProber 31 | from .mbcssm import CP949_SM_MODEL 32 | 33 | 34 | class CP949Prober(MultiByteCharSetProber): 35 | def __init__(self): 36 | super(CP949Prober, self).__init__() 37 | self.coding_sm = CodingStateMachine(CP949_SM_MODEL) 38 | # NOTE: CP949 is a superset of EUC-KR, so the distribution should be 39 | # not different. 40 | self.distribution_analyzer = EUCKRDistributionAnalysis() 41 | self.reset() 42 | 43 | @property 44 | def charset_name(self): 45 | return "CP949" 46 | 47 | @property 48 | def language(self): 49 | return "Korean" 50 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/enums.py: -------------------------------------------------------------------------------- 1 | """ 2 | All of the Enums that are used throughout the chardet package. 3 | 4 | :author: Dan Blanchard (dan.blanchard@gmail.com) 5 | """ 6 | 7 | 8 | class InputState(object): 9 | """ 10 | This enum represents the different states a universal detector can be in. 11 | """ 12 | PURE_ASCII = 0 13 | ESC_ASCII = 1 14 | HIGH_BYTE = 2 15 | 16 | 17 | class LanguageFilter(object): 18 | """ 19 | This enum represents the different language filters we can apply to a 20 | ``UniversalDetector``. 21 | """ 22 | CHINESE_SIMPLIFIED = 0x01 23 | CHINESE_TRADITIONAL = 0x02 24 | JAPANESE = 0x04 25 | KOREAN = 0x08 26 | NON_CJK = 0x10 27 | ALL = 0x1F 28 | CHINESE = CHINESE_SIMPLIFIED | CHINESE_TRADITIONAL 29 | CJK = CHINESE | JAPANESE | KOREAN 30 | 31 | 32 | class ProbingState(object): 33 | """ 34 | This enum represents the different states a prober can be in. 35 | """ 36 | DETECTING = 0 37 | FOUND_IT = 1 38 | NOT_ME = 2 39 | 40 | 41 | class MachineState(object): 42 | """ 43 | This enum represents the different states a state machine can be in. 44 | """ 45 | START = 0 46 | ERROR = 1 47 | ITS_ME = 2 48 | 49 | 50 | class SequenceLikelihood(object): 51 | """ 52 | This enum represents the likelihood of a character following the previous one. 53 | """ 54 | NEGATIVE = 0 55 | UNLIKELY = 1 56 | LIKELY = 2 57 | POSITIVE = 3 58 | 59 | @classmethod 60 | def get_num_categories(cls): 61 | """:returns: The number of likelihood categories in the enum.""" 62 | return 4 63 | 64 | 65 | class CharacterCategory(object): 66 | """ 67 | This enum represents the different categories language models for 68 | ``SingleByteCharsetProber`` put characters into. 69 | 70 | Anything less than CONTROL is considered a letter. 71 | """ 72 | UNDEFINED = 255 73 | LINE_BREAK = 254 74 | SYMBOL = 253 75 | DIGIT = 252 76 | CONTROL = 251 77 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/euckrprober.py: -------------------------------------------------------------------------------- 1 | ######################## BEGIN LICENSE BLOCK ######################## 2 | # The Original Code is mozilla.org code. 3 | # 4 | # The Initial Developer of the Original Code is 5 | # Netscape Communications Corporation. 6 | # Portions created by the Initial Developer are Copyright (C) 1998 7 | # the Initial Developer. All Rights Reserved. 8 | # 9 | # Contributor(s): 10 | # Mark Pilgrim - port to Python 11 | # 12 | # This library is free software; you can redistribute it and/or 13 | # modify it under the terms of the GNU Lesser General Public 14 | # License as published by the Free Software Foundation; either 15 | # version 2.1 of the License, or (at your option) any later version. 16 | # 17 | # This library is distributed in the hope that it will be useful, 18 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 20 | # Lesser General Public License for more details. 21 | # 22 | # You should have received a copy of the GNU Lesser General Public 23 | # License along with this library; if not, write to the Free Software 24 | # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 25 | # 02110-1301 USA 26 | ######################### END LICENSE BLOCK ######################### 27 | 28 | from .mbcharsetprober import MultiByteCharSetProber 29 | from .codingstatemachine import CodingStateMachine 30 | from .chardistribution import EUCKRDistributionAnalysis 31 | from .mbcssm import EUCKR_SM_MODEL 32 | 33 | 34 | class EUCKRProber(MultiByteCharSetProber): 35 | def __init__(self): 36 | super(EUCKRProber, self).__init__() 37 | self.coding_sm = CodingStateMachine(EUCKR_SM_MODEL) 38 | self.distribution_analyzer = EUCKRDistributionAnalysis() 39 | self.reset() 40 | 41 | @property 42 | def charset_name(self): 43 | return "EUC-KR" 44 | 45 | @property 46 | def language(self): 47 | return "Korean" 48 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/euctwprober.py: -------------------------------------------------------------------------------- 1 | ######################## BEGIN LICENSE BLOCK ######################## 2 | # The Original Code is mozilla.org code. 3 | # 4 | # The Initial Developer of the Original Code is 5 | # Netscape Communications Corporation. 6 | # Portions created by the Initial Developer are Copyright (C) 1998 7 | # the Initial Developer. All Rights Reserved. 8 | # 9 | # Contributor(s): 10 | # Mark Pilgrim - port to Python 11 | # 12 | # This library is free software; you can redistribute it and/or 13 | # modify it under the terms of the GNU Lesser General Public 14 | # License as published by the Free Software Foundation; either 15 | # version 2.1 of the License, or (at your option) any later version. 16 | # 17 | # This library is distributed in the hope that it will be useful, 18 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 20 | # Lesser General Public License for more details. 21 | # 22 | # You should have received a copy of the GNU Lesser General Public 23 | # License along with this library; if not, write to the Free Software 24 | # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 25 | # 02110-1301 USA 26 | ######################### END LICENSE BLOCK ######################### 27 | 28 | from .mbcharsetprober import MultiByteCharSetProber 29 | from .codingstatemachine import CodingStateMachine 30 | from .chardistribution import EUCTWDistributionAnalysis 31 | from .mbcssm import EUCTW_SM_MODEL 32 | 33 | class EUCTWProber(MultiByteCharSetProber): 34 | def __init__(self): 35 | super(EUCTWProber, self).__init__() 36 | self.coding_sm = CodingStateMachine(EUCTW_SM_MODEL) 37 | self.distribution_analyzer = EUCTWDistributionAnalysis() 38 | self.reset() 39 | 40 | @property 41 | def charset_name(self): 42 | return "EUC-TW" 43 | 44 | @property 45 | def language(self): 46 | return "Taiwan" 47 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/gb2312prober.py: -------------------------------------------------------------------------------- 1 | ######################## BEGIN LICENSE BLOCK ######################## 2 | # The Original Code is mozilla.org code. 3 | # 4 | # The Initial Developer of the Original Code is 5 | # Netscape Communications Corporation. 6 | # Portions created by the Initial Developer are Copyright (C) 1998 7 | # the Initial Developer. All Rights Reserved. 8 | # 9 | # Contributor(s): 10 | # Mark Pilgrim - port to Python 11 | # 12 | # This library is free software; you can redistribute it and/or 13 | # modify it under the terms of the GNU Lesser General Public 14 | # License as published by the Free Software Foundation; either 15 | # version 2.1 of the License, or (at your option) any later version. 16 | # 17 | # This library is distributed in the hope that it will be useful, 18 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 20 | # Lesser General Public License for more details. 21 | # 22 | # You should have received a copy of the GNU Lesser General Public 23 | # License along with this library; if not, write to the Free Software 24 | # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 25 | # 02110-1301 USA 26 | ######################### END LICENSE BLOCK ######################### 27 | 28 | from .mbcharsetprober import MultiByteCharSetProber 29 | from .codingstatemachine import CodingStateMachine 30 | from .chardistribution import GB2312DistributionAnalysis 31 | from .mbcssm import GB2312_SM_MODEL 32 | 33 | class GB2312Prober(MultiByteCharSetProber): 34 | def __init__(self): 35 | super(GB2312Prober, self).__init__() 36 | self.coding_sm = CodingStateMachine(GB2312_SM_MODEL) 37 | self.distribution_analyzer = GB2312DistributionAnalysis() 38 | self.reset() 39 | 40 | @property 41 | def charset_name(self): 42 | return "GB2312" 43 | 44 | @property 45 | def language(self): 46 | return "Chinese" 47 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/mbcsgroupprober.py: -------------------------------------------------------------------------------- 1 | ######################## BEGIN LICENSE BLOCK ######################## 2 | # The Original Code is Mozilla Universal charset detector code. 3 | # 4 | # The Initial Developer of the Original Code is 5 | # Netscape Communications Corporation. 6 | # Portions created by the Initial Developer are Copyright (C) 2001 7 | # the Initial Developer. All Rights Reserved. 8 | # 9 | # Contributor(s): 10 | # Mark Pilgrim - port to Python 11 | # Shy Shalom - original C code 12 | # Proofpoint, Inc. 13 | # 14 | # This library is free software; you can redistribute it and/or 15 | # modify it under the terms of the GNU Lesser General Public 16 | # License as published by the Free Software Foundation; either 17 | # version 2.1 of the License, or (at your option) any later version. 18 | # 19 | # This library is distributed in the hope that it will be useful, 20 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 21 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 22 | # Lesser General Public License for more details. 23 | # 24 | # You should have received a copy of the GNU Lesser General Public 25 | # License along with this library; if not, write to the Free Software 26 | # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 27 | # 02110-1301 USA 28 | ######################### END LICENSE BLOCK ######################### 29 | 30 | from .charsetgroupprober import CharSetGroupProber 31 | from .utf8prober import UTF8Prober 32 | from .sjisprober import SJISProber 33 | from .eucjpprober import EUCJPProber 34 | from .gb2312prober import GB2312Prober 35 | from .euckrprober import EUCKRProber 36 | from .cp949prober import CP949Prober 37 | from .big5prober import Big5Prober 38 | from .euctwprober import EUCTWProber 39 | 40 | 41 | class MBCSGroupProber(CharSetGroupProber): 42 | def __init__(self, lang_filter=None): 43 | super(MBCSGroupProber, self).__init__(lang_filter=lang_filter) 44 | self.probers = [ 45 | UTF8Prober(), 46 | SJISProber(), 47 | EUCJPProber(), 48 | GB2312Prober(), 49 | EUCKRProber(), 50 | CP949Prober(), 51 | Big5Prober(), 52 | EUCTWProber() 53 | ] 54 | self.reset() 55 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/chardet/version.py: -------------------------------------------------------------------------------- 1 | """ 2 | This module exists only to simplify retrieving the version number of chardet 3 | from within setup.py and from chardet subpackages. 4 | 5 | :author: Dan Blanchard (dan.blanchard@gmail.com) 6 | """ 7 | 8 | __version__ = "3.0.4" 9 | VERSION = __version__.split('.') 10 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/easy-install.pth: -------------------------------------------------------------------------------- 1 | ./setuptools-39.1.0-py3.8.egg 2 | ./pip-10.0.1-py3.8.egg 3 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/idna-2.10.dist-info/INSTALLER: -------------------------------------------------------------------------------- 1 | pip 2 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/idna-2.10.dist-info/LICENSE.rst: -------------------------------------------------------------------------------- 1 | License 2 | ------- 3 | 4 | License: bsd-3-clause 5 | 6 | Copyright (c) 2013-2020, Kim Davies. All rights reserved. 7 | 8 | Redistribution and use in source and binary forms, with or without 9 | modification, are permitted provided that the following conditions are met: 10 | 11 | #. Redistributions of source code must retain the above copyright 12 | notice, this list of conditions and the following disclaimer. 13 | 14 | #. Redistributions in binary form must reproduce the above 15 | copyright notice, this list of conditions and the following 16 | disclaimer in the documentation and/or other materials provided with 17 | the distribution. 18 | 19 | #. Neither the name of the copyright holder nor the names of the 20 | contributors may be used to endorse or promote products derived 21 | from this software without specific prior written permission. 22 | 23 | #. THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS "AS IS" AND ANY 24 | EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 25 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 26 | PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR 27 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 28 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 29 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 30 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 31 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 32 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 33 | USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 34 | DAMAGE. 35 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/idna-2.10.dist-info/RECORD: -------------------------------------------------------------------------------- 1 | idna/__init__.py,sha256=9Nt7xpyet3DmOrPUGooDdAwmHZZu1qUAy2EaJ93kGiQ,58 2 | idna/codec.py,sha256=lvYb7yu7PhAqFaAIAdWcwgaWI2UmgseUua-1c0AsG0A,3299 3 | idna/compat.py,sha256=R-h29D-6mrnJzbXxymrWUW7iZUvy-26TQwZ0ij57i4U,232 4 | idna/core.py,sha256=jCoaLb3bA2tS_DDx9PpGuNTEZZN2jAzB369aP-IHYRE,11951 5 | idna/idnadata.py,sha256=gmzFwZWjdms3kKZ_M_vwz7-LP_SCgYfSeE03B21Qpsk,42350 6 | idna/intranges.py,sha256=TY1lpxZIQWEP6tNqjZkFA5hgoMWOj1OBmnUG8ihT87E,1749 7 | idna/package_data.py,sha256=bxBjpLnE06_1jSYKEy5svOMu1zM3OMztXVUb1tPlcp0,22 8 | idna/uts46data.py,sha256=lMdw2zdjkH1JUWXPPEfFUSYT3Fyj60bBmfLvvy5m7ko,202084 9 | idna-2.10.dist-info/LICENSE.rst,sha256=QSAUQg0kc9ugYRfD1Nng7sqm3eDKMM2VH07CvjlCbzI,1565 10 | idna-2.10.dist-info/METADATA,sha256=ZWCaQDBjdmSvx5EU7Cv6ORC-9NUQ6nXh1eXx38ySe40,9104 11 | idna-2.10.dist-info/WHEEL,sha256=8zNYZbwQSXoB9IfXOjPfeNwvAsALAjffgk27FqvCWbo,110 12 | idna-2.10.dist-info/top_level.txt,sha256=jSag9sEDqvSPftxOQy-ABfGV_RSy7oFh4zZJpODV8k0,5 13 | idna-2.10.dist-info/RECORD,, 14 | idna-2.10.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 15 | idna/__pycache__/__init__.cpython-38.pyc,, 16 | idna/__pycache__/uts46data.cpython-38.pyc,, 17 | idna/__pycache__/intranges.cpython-38.pyc,, 18 | idna/__pycache__/package_data.cpython-38.pyc,, 19 | idna/__pycache__/core.cpython-38.pyc,, 20 | idna/__pycache__/idnadata.cpython-38.pyc,, 21 | idna/__pycache__/compat.cpython-38.pyc,, 22 | idna/__pycache__/codec.cpython-38.pyc,, 23 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/idna-2.10.dist-info/WHEEL: -------------------------------------------------------------------------------- 1 | Wheel-Version: 1.0 2 | Generator: bdist_wheel (0.33.6) 3 | Root-Is-Purelib: true 4 | Tag: py2-none-any 5 | Tag: py3-none-any 6 | 7 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/idna-2.10.dist-info/top_level.txt: -------------------------------------------------------------------------------- 1 | idna 2 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/idna/__init__.py: -------------------------------------------------------------------------------- 1 | from .package_data import __version__ 2 | from .core import * 3 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/idna/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/idna/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/idna/__pycache__/codec.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/idna/__pycache__/codec.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/idna/__pycache__/compat.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/idna/__pycache__/compat.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/idna/__pycache__/core.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/idna/__pycache__/core.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/idna/__pycache__/idnadata.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/idna/__pycache__/idnadata.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/idna/__pycache__/intranges.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/idna/__pycache__/intranges.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/idna/__pycache__/package_data.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/idna/__pycache__/package_data.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/idna/__pycache__/uts46data.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/idna/__pycache__/uts46data.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/idna/compat.py: -------------------------------------------------------------------------------- 1 | from .core import * 2 | from .codec import * 3 | 4 | def ToASCII(label): 5 | return encode(label) 6 | 7 | def ToUnicode(label): 8 | return decode(label) 9 | 10 | def nameprep(s): 11 | raise NotImplementedError("IDNA 2008 does not utilise nameprep protocol") 12 | 13 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/idna/intranges.py: -------------------------------------------------------------------------------- 1 | """ 2 | Given a list of integers, made up of (hopefully) a small number of long runs 3 | of consecutive integers, compute a representation of the form 4 | ((start1, end1), (start2, end2) ...). Then answer the question "was x present 5 | in the original list?" in time O(log(# runs)). 6 | """ 7 | 8 | import bisect 9 | 10 | def intranges_from_list(list_): 11 | """Represent a list of integers as a sequence of ranges: 12 | ((start_0, end_0), (start_1, end_1), ...), such that the original 13 | integers are exactly those x such that start_i <= x < end_i for some i. 14 | 15 | Ranges are encoded as single integers (start << 32 | end), not as tuples. 16 | """ 17 | 18 | sorted_list = sorted(list_) 19 | ranges = [] 20 | last_write = -1 21 | for i in range(len(sorted_list)): 22 | if i+1 < len(sorted_list): 23 | if sorted_list[i] == sorted_list[i+1]-1: 24 | continue 25 | current_range = sorted_list[last_write+1:i+1] 26 | ranges.append(_encode_range(current_range[0], current_range[-1] + 1)) 27 | last_write = i 28 | 29 | return tuple(ranges) 30 | 31 | def _encode_range(start, end): 32 | return (start << 32) | end 33 | 34 | def _decode_range(r): 35 | return (r >> 32), (r & ((1 << 32) - 1)) 36 | 37 | 38 | def intranges_contain(int_, ranges): 39 | """Determine if `int_` falls into one of the ranges in `ranges`.""" 40 | tuple_ = _encode_range(int_, 0) 41 | pos = bisect.bisect_left(ranges, tuple_) 42 | # we could be immediately ahead of a tuple (start, end) 43 | # with start < int_ <= end 44 | if pos > 0: 45 | left, right = _decode_range(ranges[pos-1]) 46 | if left <= int_ < right: 47 | return True 48 | # or we could be immediately behind a tuple (int_, end) 49 | if pos < len(ranges): 50 | left, _ = _decode_range(ranges[pos]) 51 | if left == int_: 52 | return True 53 | return False 54 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/idna/package_data.py: -------------------------------------------------------------------------------- 1 | __version__ = '2.10' 2 | 3 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/EGG-INFO/dependency_links.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/EGG-INFO/entry_points.txt: -------------------------------------------------------------------------------- 1 | [console_scripts] 2 | pip = pip._internal:main 3 | pip3 = pip._internal:main 4 | pip3.8 = pip._internal:main 5 | 6 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/EGG-INFO/not-zip-safe: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/EGG-INFO/requires.txt: -------------------------------------------------------------------------------- 1 | 2 | [testing] 3 | pytest 4 | mock 5 | pretend 6 | scripttest>=1.3 7 | virtualenv>=1.10 8 | freezegun 9 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/EGG-INFO/top_level.txt: -------------------------------------------------------------------------------- 1 | pip 2 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/__init__.py: -------------------------------------------------------------------------------- 1 | __version__ = "10.0.1" 2 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/__main__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | import os 4 | import sys 5 | 6 | # If we are running from a wheel, add the wheel to sys.path 7 | # This allows the usage python pip-*.whl/pip install pip-*.whl 8 | if __package__ == '': 9 | # __file__ is pip-*.whl/pip/__main__.py 10 | # first dirname call strips of '/__main__.py', second strips off '/pip' 11 | # Resulting path is the name of the wheel itself 12 | # Add that to sys.path so we can import pip 13 | path = os.path.dirname(os.path.dirname(__file__)) 14 | sys.path.insert(0, path) 15 | 16 | from pip._internal import main as _main # noqa 17 | 18 | if __name__ == '__main__': 19 | sys.exit(_main()) 20 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_internal/commands/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | Package containing all pip commands 3 | """ 4 | from __future__ import absolute_import 5 | 6 | from pip._internal.commands.completion import CompletionCommand 7 | from pip._internal.commands.configuration import ConfigurationCommand 8 | from pip._internal.commands.download import DownloadCommand 9 | from pip._internal.commands.freeze import FreezeCommand 10 | from pip._internal.commands.hash import HashCommand 11 | from pip._internal.commands.help import HelpCommand 12 | from pip._internal.commands.list import ListCommand 13 | from pip._internal.commands.check import CheckCommand 14 | from pip._internal.commands.search import SearchCommand 15 | from pip._internal.commands.show import ShowCommand 16 | from pip._internal.commands.install import InstallCommand 17 | from pip._internal.commands.uninstall import UninstallCommand 18 | from pip._internal.commands.wheel import WheelCommand 19 | 20 | from pip._internal.utils.typing import MYPY_CHECK_RUNNING 21 | 22 | if MYPY_CHECK_RUNNING: 23 | from typing import List, Type 24 | from pip._internal.basecommand import Command 25 | 26 | commands_order = [ 27 | InstallCommand, 28 | DownloadCommand, 29 | UninstallCommand, 30 | FreezeCommand, 31 | ListCommand, 32 | ShowCommand, 33 | CheckCommand, 34 | ConfigurationCommand, 35 | SearchCommand, 36 | WheelCommand, 37 | HashCommand, 38 | CompletionCommand, 39 | HelpCommand, 40 | ] # type: List[Type[Command]] 41 | 42 | commands_dict = {c.name: c for c in commands_order} 43 | 44 | 45 | def get_summaries(ordered=True): 46 | """Yields sorted (command name, command summary) tuples.""" 47 | 48 | if ordered: 49 | cmditems = _sort_commands(commands_dict, commands_order) 50 | else: 51 | cmditems = commands_dict.items() 52 | 53 | for name, command_class in cmditems: 54 | yield (name, command_class.summary) 55 | 56 | 57 | def get_similar_commands(name): 58 | """Command name auto-correct.""" 59 | from difflib import get_close_matches 60 | 61 | name = name.lower() 62 | 63 | close_commands = get_close_matches(name, commands_dict.keys()) 64 | 65 | if close_commands: 66 | return close_commands[0] 67 | else: 68 | return False 69 | 70 | 71 | def _sort_commands(cmddict, order): 72 | def keyfn(key): 73 | try: 74 | return order.index(key[1]) 75 | except ValueError: 76 | # unordered items should come last 77 | return 0xff 78 | 79 | return sorted(cmddict.items(), key=keyfn) 80 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_internal/commands/check.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from pip._internal.basecommand import Command 4 | from pip._internal.operations.check import ( 5 | check_package_set, create_package_set_from_installed, 6 | ) 7 | from pip._internal.utils.misc import get_installed_distributions 8 | 9 | logger = logging.getLogger(__name__) 10 | 11 | 12 | class CheckCommand(Command): 13 | """Verify installed packages have compatible dependencies.""" 14 | name = 'check' 15 | usage = """ 16 | %prog [options]""" 17 | summary = 'Verify installed packages have compatible dependencies.' 18 | 19 | def run(self, options, args): 20 | package_set = create_package_set_from_installed() 21 | missing, conflicting = check_package_set(package_set) 22 | 23 | for project_name in missing: 24 | version = package_set[project_name].version 25 | for dependency in missing[project_name]: 26 | logger.info( 27 | "%s %s requires %s, which is not installed.", 28 | project_name, version, dependency[0], 29 | ) 30 | 31 | for project_name in conflicting: 32 | version = package_set[project_name].version 33 | for dep_name, dep_version, req in conflicting[project_name]: 34 | logger.info( 35 | "%s %s has requirement %s, but you have %s %s.", 36 | project_name, version, req, dep_name, dep_version, 37 | ) 38 | 39 | if missing or conflicting: 40 | return 1 41 | else: 42 | logger.info("No broken requirements found.") 43 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_internal/commands/hash.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | import hashlib 4 | import logging 5 | import sys 6 | 7 | from pip._internal.basecommand import Command 8 | from pip._internal.status_codes import ERROR 9 | from pip._internal.utils.hashes import FAVORITE_HASH, STRONG_HASHES 10 | from pip._internal.utils.misc import read_chunks 11 | 12 | logger = logging.getLogger(__name__) 13 | 14 | 15 | class HashCommand(Command): 16 | """ 17 | Compute a hash of a local package archive. 18 | 19 | These can be used with --hash in a requirements file to do repeatable 20 | installs. 21 | 22 | """ 23 | name = 'hash' 24 | usage = '%prog [options] ...' 25 | summary = 'Compute hashes of package archives.' 26 | ignore_require_venv = True 27 | 28 | def __init__(self, *args, **kw): 29 | super(HashCommand, self).__init__(*args, **kw) 30 | self.cmd_opts.add_option( 31 | '-a', '--algorithm', 32 | dest='algorithm', 33 | choices=STRONG_HASHES, 34 | action='store', 35 | default=FAVORITE_HASH, 36 | help='The hash algorithm to use: one of %s' % 37 | ', '.join(STRONG_HASHES)) 38 | self.parser.insert_option_group(0, self.cmd_opts) 39 | 40 | def run(self, options, args): 41 | if not args: 42 | self.parser.print_usage(sys.stderr) 43 | return ERROR 44 | 45 | algorithm = options.algorithm 46 | for path in args: 47 | logger.info('%s:\n--hash=%s:%s', 48 | path, algorithm, _hash_of_file(path, algorithm)) 49 | 50 | 51 | def _hash_of_file(path, algorithm): 52 | """Return the hash digest of a file.""" 53 | with open(path, 'rb') as archive: 54 | hash = hashlib.new(algorithm) 55 | for chunk in read_chunks(archive): 56 | hash.update(chunk) 57 | return hash.hexdigest() 58 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_internal/commands/help.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | from pip._internal.basecommand import SUCCESS, Command 4 | from pip._internal.exceptions import CommandError 5 | 6 | 7 | class HelpCommand(Command): 8 | """Show help for commands""" 9 | name = 'help' 10 | usage = """ 11 | %prog """ 12 | summary = 'Show help for commands.' 13 | ignore_require_venv = True 14 | 15 | def run(self, options, args): 16 | from pip._internal.commands import commands_dict, get_similar_commands 17 | 18 | try: 19 | # 'pip help' with no args is handled by pip.__init__.parseopt() 20 | cmd_name = args[0] # the command we need help for 21 | except IndexError: 22 | return SUCCESS 23 | 24 | if cmd_name not in commands_dict: 25 | guess = get_similar_commands(cmd_name) 26 | 27 | msg = ['unknown command "%s"' % cmd_name] 28 | if guess: 29 | msg.append('maybe you meant "%s"' % guess) 30 | 31 | raise CommandError(' - '.join(msg)) 32 | 33 | command = commands_dict[cmd_name]() 34 | command.parser.print_help() 35 | 36 | return SUCCESS 37 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_internal/models/__init__.py: -------------------------------------------------------------------------------- 1 | from pip._internal.models.index import Index, PyPI 2 | 3 | 4 | __all__ = ["Index", "PyPI"] 5 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_internal/models/index.py: -------------------------------------------------------------------------------- 1 | from pip._vendor.six.moves.urllib import parse as urllib_parse 2 | 3 | 4 | class Index(object): 5 | def __init__(self, url): 6 | self.url = url 7 | self.netloc = urllib_parse.urlsplit(url).netloc 8 | self.simple_url = self.url_to_path('simple') 9 | self.pypi_url = self.url_to_path('pypi') 10 | 11 | def url_to_path(self, path): 12 | return urllib_parse.urljoin(self.url, path) 13 | 14 | 15 | PyPI = Index('https://pypi.org/') 16 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_internal/operations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_internal/operations/__init__.py -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_internal/req/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | import logging 4 | 5 | from .req_install import InstallRequirement 6 | from .req_set import RequirementSet 7 | from .req_file import parse_requirements 8 | from pip._internal.utils.logging import indent_log 9 | 10 | 11 | __all__ = [ 12 | "RequirementSet", "InstallRequirement", 13 | "parse_requirements", "install_given_reqs", 14 | ] 15 | 16 | logger = logging.getLogger(__name__) 17 | 18 | 19 | def install_given_reqs(to_install, install_options, global_options=(), 20 | *args, **kwargs): 21 | """ 22 | Install everything in the given list. 23 | 24 | (to be called after having downloaded and unpacked the packages) 25 | """ 26 | 27 | if to_install: 28 | logger.info( 29 | 'Installing collected packages: %s', 30 | ', '.join([req.name for req in to_install]), 31 | ) 32 | 33 | with indent_log(): 34 | for requirement in to_install: 35 | if requirement.conflicts_with: 36 | logger.info( 37 | 'Found existing installation: %s', 38 | requirement.conflicts_with, 39 | ) 40 | with indent_log(): 41 | uninstalled_pathset = requirement.uninstall( 42 | auto_confirm=True 43 | ) 44 | try: 45 | requirement.install( 46 | install_options, 47 | global_options, 48 | *args, 49 | **kwargs 50 | ) 51 | except: 52 | should_rollback = ( 53 | requirement.conflicts_with and 54 | not requirement.install_succeeded 55 | ) 56 | # if install did not succeed, rollback previous uninstall 57 | if should_rollback: 58 | uninstalled_pathset.rollback() 59 | raise 60 | else: 61 | should_commit = ( 62 | requirement.conflicts_with and 63 | requirement.install_succeeded 64 | ) 65 | if should_commit: 66 | uninstalled_pathset.commit() 67 | requirement.remove_temporary_source() 68 | 69 | return to_install 70 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_internal/status_codes.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | SUCCESS = 0 4 | ERROR = 1 5 | UNKNOWN_ERROR = 2 6 | VIRTUALENV_NOT_FOUND = 3 7 | PREVIOUS_BUILD_DIR_ERROR = 4 8 | NO_MATCHES_FOUND = 23 9 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_internal/utils/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_internal/utils/__init__.py -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_internal/utils/encoding.py: -------------------------------------------------------------------------------- 1 | import codecs 2 | import locale 3 | import re 4 | import sys 5 | 6 | BOMS = [ 7 | (codecs.BOM_UTF8, 'utf8'), 8 | (codecs.BOM_UTF16, 'utf16'), 9 | (codecs.BOM_UTF16_BE, 'utf16-be'), 10 | (codecs.BOM_UTF16_LE, 'utf16-le'), 11 | (codecs.BOM_UTF32, 'utf32'), 12 | (codecs.BOM_UTF32_BE, 'utf32-be'), 13 | (codecs.BOM_UTF32_LE, 'utf32-le'), 14 | ] 15 | 16 | ENCODING_RE = re.compile(br'coding[:=]\s*([-\w.]+)') 17 | 18 | 19 | def auto_decode(data): 20 | """Check a bytes string for a BOM to correctly detect the encoding 21 | 22 | Fallback to locale.getpreferredencoding(False) like open() on Python3""" 23 | for bom, encoding in BOMS: 24 | if data.startswith(bom): 25 | return data[len(bom):].decode(encoding) 26 | # Lets check the first two lines as in PEP263 27 | for line in data.split(b'\n')[:2]: 28 | if line[0:1] == b'#' and ENCODING_RE.search(line): 29 | encoding = ENCODING_RE.search(line).groups()[0].decode('ascii') 30 | return data.decode(encoding) 31 | return data.decode( 32 | locale.getpreferredencoding(False) or sys.getdefaultencoding(), 33 | ) 34 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_internal/utils/filesystem.py: -------------------------------------------------------------------------------- 1 | import os 2 | import os.path 3 | 4 | from pip._internal.compat import get_path_uid 5 | 6 | 7 | def check_path_owner(path): 8 | # If we don't have a way to check the effective uid of this process, then 9 | # we'll just assume that we own the directory. 10 | if not hasattr(os, "geteuid"): 11 | return True 12 | 13 | previous = None 14 | while path != previous: 15 | if os.path.lexists(path): 16 | # Check if path is writable by current user. 17 | if os.geteuid() == 0: 18 | # Special handling for root user in order to handle properly 19 | # cases where users use sudo without -H flag. 20 | try: 21 | path_uid = get_path_uid(path) 22 | except OSError: 23 | return False 24 | return path_uid == 0 25 | else: 26 | return os.access(path, os.W_OK) 27 | else: 28 | previous, path = path, os.path.dirname(path) 29 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_internal/utils/setuptools_build.py: -------------------------------------------------------------------------------- 1 | # Shim to wrap setup.py invocation with setuptools 2 | SETUPTOOLS_SHIM = ( 3 | "import setuptools, tokenize;__file__=%r;" 4 | "f=getattr(tokenize, 'open', open)(__file__);" 5 | "code=f.read().replace('\\r\\n', '\\n');" 6 | "f.close();" 7 | "exec(compile(code, __file__, 'exec'))" 8 | ) 9 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_internal/utils/typing.py: -------------------------------------------------------------------------------- 1 | """For neatly implementing static typing in pip. 2 | 3 | `mypy` - the static type analysis tool we use - uses the `typing` module, which 4 | provides core functionality fundamental to mypy's functioning. 5 | 6 | Generally, `typing` would be imported at runtime and used in that fashion - 7 | it acts as a no-op at runtime and does not have any run-time overhead by 8 | design. 9 | 10 | As it turns out, `typing` is not vendorable - it uses separate sources for 11 | Python 2/Python 3. Thus, this codebase can not expect it to be present. 12 | To work around this, mypy allows the typing import to be behind a False-y 13 | optional to prevent it from running at runtime and type-comments can be used 14 | to remove the need for the types to be accessible directly during runtime. 15 | 16 | This module provides the False-y guard in a nicely named fashion so that a 17 | curious maintainer can reach here to read this. 18 | 19 | In pip, all static-typing related imports should be guarded as follows: 20 | 21 | from pip.utils.typing import MYPY_CHECK_RUNNING 22 | 23 | if MYPY_CHECK_RUNNING: 24 | from typing import ... 25 | 26 | Ref: https://github.com/python/mypy/issues/3216 27 | """ 28 | 29 | MYPY_CHECK_RUNNING = False 30 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/cachecontrol/__init__.py: -------------------------------------------------------------------------------- 1 | """CacheControl import Interface. 2 | 3 | Make it easy to import from cachecontrol without long namespaces. 4 | """ 5 | __author__ = 'Eric Larson' 6 | __email__ = 'eric@ionrock.org' 7 | __version__ = '0.12.4' 8 | 9 | from .wrapper import CacheControl 10 | from .adapter import CacheControlAdapter 11 | from .controller import CacheController 12 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/cachecontrol/_cmd.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from pip._vendor import requests 4 | 5 | from pip._vendor.cachecontrol.adapter import CacheControlAdapter 6 | from pip._vendor.cachecontrol.cache import DictCache 7 | from pip._vendor.cachecontrol.controller import logger 8 | 9 | from argparse import ArgumentParser 10 | 11 | 12 | def setup_logging(): 13 | logger.setLevel(logging.DEBUG) 14 | handler = logging.StreamHandler() 15 | logger.addHandler(handler) 16 | 17 | 18 | def get_session(): 19 | adapter = CacheControlAdapter( 20 | DictCache(), 21 | cache_etags=True, 22 | serializer=None, 23 | heuristic=None, 24 | ) 25 | sess = requests.Session() 26 | sess.mount('http://', adapter) 27 | sess.mount('https://', adapter) 28 | 29 | sess.cache_controller = adapter.controller 30 | return sess 31 | 32 | 33 | def get_args(): 34 | parser = ArgumentParser() 35 | parser.add_argument('url', help='The URL to try and cache') 36 | return parser.parse_args() 37 | 38 | 39 | def main(args=None): 40 | args = get_args() 41 | sess = get_session() 42 | 43 | # Make a request to get a response 44 | resp = sess.get(args.url) 45 | 46 | # Turn on logging 47 | setup_logging() 48 | 49 | # try setting the cache 50 | sess.cache_controller.cache_response(resp.request, resp.raw) 51 | 52 | # Now try to get it 53 | if sess.cache_controller.cached_request(resp.request): 54 | print('Cached!') 55 | else: 56 | print('Not cached :(') 57 | 58 | 59 | if __name__ == '__main__': 60 | main() 61 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/cachecontrol/cache.py: -------------------------------------------------------------------------------- 1 | """ 2 | The cache object API for implementing caches. The default is a thread 3 | safe in-memory dictionary. 4 | """ 5 | from threading import Lock 6 | 7 | 8 | class BaseCache(object): 9 | 10 | def get(self, key): 11 | raise NotImplemented() 12 | 13 | def set(self, key, value): 14 | raise NotImplemented() 15 | 16 | def delete(self, key): 17 | raise NotImplemented() 18 | 19 | def close(self): 20 | pass 21 | 22 | 23 | class DictCache(BaseCache): 24 | 25 | def __init__(self, init_dict=None): 26 | self.lock = Lock() 27 | self.data = init_dict or {} 28 | 29 | def get(self, key): 30 | return self.data.get(key, None) 31 | 32 | def set(self, key, value): 33 | with self.lock: 34 | self.data.update({key: value}) 35 | 36 | def delete(self, key): 37 | with self.lock: 38 | if key in self.data: 39 | self.data.pop(key) 40 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/cachecontrol/caches/__init__.py: -------------------------------------------------------------------------------- 1 | from .file_cache import FileCache # noqa 2 | from .redis_cache import RedisCache # noqa 3 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/cachecontrol/caches/redis_cache.py: -------------------------------------------------------------------------------- 1 | from __future__ import division 2 | 3 | from datetime import datetime 4 | from pip._vendor.cachecontrol.cache import BaseCache 5 | 6 | 7 | def total_seconds(td): 8 | """Python 2.6 compatability""" 9 | if hasattr(td, 'total_seconds'): 10 | return int(td.total_seconds()) 11 | 12 | ms = td.microseconds 13 | secs = (td.seconds + td.days * 24 * 3600) 14 | return int((ms + secs * 10**6) / 10**6) 15 | 16 | 17 | class RedisCache(BaseCache): 18 | 19 | def __init__(self, conn): 20 | self.conn = conn 21 | 22 | def get(self, key): 23 | return self.conn.get(key) 24 | 25 | def set(self, key, value, expires=None): 26 | if not expires: 27 | self.conn.set(key, value) 28 | else: 29 | expires = expires - datetime.utcnow() 30 | self.conn.setex(key, total_seconds(expires), value) 31 | 32 | def delete(self, key): 33 | self.conn.delete(key) 34 | 35 | def clear(self): 36 | """Helper for clearing all the keys in a database. Use with 37 | caution!""" 38 | for key in self.conn.keys(): 39 | self.conn.delete(key) 40 | 41 | def close(self): 42 | """Redis uses connection pooling, no need to close the connection.""" 43 | pass 44 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/cachecontrol/compat.py: -------------------------------------------------------------------------------- 1 | try: 2 | from urllib.parse import urljoin 3 | except ImportError: 4 | from urlparse import urljoin 5 | 6 | 7 | try: 8 | import cPickle as pickle 9 | except ImportError: 10 | import pickle 11 | 12 | 13 | # Handle the case where the requests module has been patched to not have 14 | # urllib3 bundled as part of its source. 15 | try: 16 | from pip._vendor.requests.packages.urllib3.response import HTTPResponse 17 | except ImportError: 18 | from pip._vendor.urllib3.response import HTTPResponse 19 | 20 | try: 21 | from pip._vendor.requests.packages.urllib3.util import is_fp_closed 22 | except ImportError: 23 | from pip._vendor.urllib3.util import is_fp_closed 24 | 25 | # Replicate some six behaviour 26 | try: 27 | text_type = unicode 28 | except NameError: 29 | text_type = str 30 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/cachecontrol/wrapper.py: -------------------------------------------------------------------------------- 1 | from .adapter import CacheControlAdapter 2 | from .cache import DictCache 3 | 4 | 5 | def CacheControl(sess, 6 | cache=None, 7 | cache_etags=True, 8 | serializer=None, 9 | heuristic=None, 10 | controller_class=None, 11 | adapter_class=None, 12 | cacheable_methods=None): 13 | 14 | cache = cache or DictCache() 15 | adapter_class = adapter_class or CacheControlAdapter 16 | adapter = adapter_class( 17 | cache, 18 | cache_etags=cache_etags, 19 | serializer=serializer, 20 | heuristic=heuristic, 21 | controller_class=controller_class, 22 | cacheable_methods=cacheable_methods 23 | ) 24 | sess.mount('http://', adapter) 25 | sess.mount('https://', adapter) 26 | 27 | return sess 28 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/certifi/__init__.py: -------------------------------------------------------------------------------- 1 | from .core import where, old_where 2 | 3 | __version__ = "2018.01.18" 4 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/certifi/__main__.py: -------------------------------------------------------------------------------- 1 | from certifi import where 2 | print(where()) 3 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/certifi/core.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | certifi.py 6 | ~~~~~~~~~~ 7 | 8 | This module returns the installation location of cacert.pem. 9 | """ 10 | import os 11 | import warnings 12 | 13 | 14 | class DeprecatedBundleWarning(DeprecationWarning): 15 | """ 16 | The weak security bundle is being deprecated. Please bother your service 17 | provider to get them to stop using cross-signed roots. 18 | """ 19 | 20 | 21 | def where(): 22 | f = os.path.dirname(__file__) 23 | 24 | return os.path.join(f, 'cacert.pem') 25 | 26 | 27 | def old_where(): 28 | warnings.warn( 29 | "The weak security bundle has been removed. certifi.old_where() is now an alias " 30 | "of certifi.where(). Please update your code to use certifi.where() instead. " 31 | "certifi.old_where() will be removed in 2018.", 32 | DeprecatedBundleWarning 33 | ) 34 | return where() 35 | 36 | if __name__ == '__main__': 37 | print(where()) 38 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/chardet/__init__.py: -------------------------------------------------------------------------------- 1 | ######################## BEGIN LICENSE BLOCK ######################## 2 | # This library is free software; you can redistribute it and/or 3 | # modify it under the terms of the GNU Lesser General Public 4 | # License as published by the Free Software Foundation; either 5 | # version 2.1 of the License, or (at your option) any later version. 6 | # 7 | # This library is distributed in the hope that it will be useful, 8 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 10 | # Lesser General Public License for more details. 11 | # 12 | # You should have received a copy of the GNU Lesser General Public 13 | # License along with this library; if not, write to the Free Software 14 | # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 15 | # 02110-1301 USA 16 | ######################### END LICENSE BLOCK ######################### 17 | 18 | 19 | from .compat import PY2, PY3 20 | from .universaldetector import UniversalDetector 21 | from .version import __version__, VERSION 22 | 23 | 24 | def detect(byte_str): 25 | """ 26 | Detect the encoding of the given byte string. 27 | 28 | :param byte_str: The byte sequence to examine. 29 | :type byte_str: ``bytes`` or ``bytearray`` 30 | """ 31 | if not isinstance(byte_str, bytearray): 32 | if not isinstance(byte_str, bytes): 33 | raise TypeError('Expected object of type bytes or bytearray, got: ' 34 | '{0}'.format(type(byte_str))) 35 | else: 36 | byte_str = bytearray(byte_str) 37 | detector = UniversalDetector() 38 | detector.feed(byte_str) 39 | return detector.close() 40 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/chardet/big5prober.py: -------------------------------------------------------------------------------- 1 | ######################## BEGIN LICENSE BLOCK ######################## 2 | # The Original Code is Mozilla Communicator client code. 3 | # 4 | # The Initial Developer of the Original Code is 5 | # Netscape Communications Corporation. 6 | # Portions created by the Initial Developer are Copyright (C) 1998 7 | # the Initial Developer. All Rights Reserved. 8 | # 9 | # Contributor(s): 10 | # Mark Pilgrim - port to Python 11 | # 12 | # This library is free software; you can redistribute it and/or 13 | # modify it under the terms of the GNU Lesser General Public 14 | # License as published by the Free Software Foundation; either 15 | # version 2.1 of the License, or (at your option) any later version. 16 | # 17 | # This library is distributed in the hope that it will be useful, 18 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 20 | # Lesser General Public License for more details. 21 | # 22 | # You should have received a copy of the GNU Lesser General Public 23 | # License along with this library; if not, write to the Free Software 24 | # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 25 | # 02110-1301 USA 26 | ######################### END LICENSE BLOCK ######################### 27 | 28 | from .mbcharsetprober import MultiByteCharSetProber 29 | from .codingstatemachine import CodingStateMachine 30 | from .chardistribution import Big5DistributionAnalysis 31 | from .mbcssm import BIG5_SM_MODEL 32 | 33 | 34 | class Big5Prober(MultiByteCharSetProber): 35 | def __init__(self): 36 | super(Big5Prober, self).__init__() 37 | self.coding_sm = CodingStateMachine(BIG5_SM_MODEL) 38 | self.distribution_analyzer = Big5DistributionAnalysis() 39 | self.reset() 40 | 41 | @property 42 | def charset_name(self): 43 | return "Big5" 44 | 45 | @property 46 | def language(self): 47 | return "Chinese" 48 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/chardet/cli/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/chardet/compat.py: -------------------------------------------------------------------------------- 1 | ######################## BEGIN LICENSE BLOCK ######################## 2 | # Contributor(s): 3 | # Dan Blanchard 4 | # Ian Cordasco 5 | # 6 | # This library is free software; you can redistribute it and/or 7 | # modify it under the terms of the GNU Lesser General Public 8 | # License as published by the Free Software Foundation; either 9 | # version 2.1 of the License, or (at your option) any later version. 10 | # 11 | # This library is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | # Lesser General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU Lesser General Public 17 | # License along with this library; if not, write to the Free Software 18 | # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 19 | # 02110-1301 USA 20 | ######################### END LICENSE BLOCK ######################### 21 | 22 | import sys 23 | 24 | 25 | if sys.version_info < (3, 0): 26 | PY2 = True 27 | PY3 = False 28 | base_str = (str, unicode) 29 | text_type = unicode 30 | else: 31 | PY2 = False 32 | PY3 = True 33 | base_str = (bytes, str) 34 | text_type = str 35 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/chardet/cp949prober.py: -------------------------------------------------------------------------------- 1 | ######################## BEGIN LICENSE BLOCK ######################## 2 | # The Original Code is mozilla.org code. 3 | # 4 | # The Initial Developer of the Original Code is 5 | # Netscape Communications Corporation. 6 | # Portions created by the Initial Developer are Copyright (C) 1998 7 | # the Initial Developer. All Rights Reserved. 8 | # 9 | # Contributor(s): 10 | # Mark Pilgrim - port to Python 11 | # 12 | # This library is free software; you can redistribute it and/or 13 | # modify it under the terms of the GNU Lesser General Public 14 | # License as published by the Free Software Foundation; either 15 | # version 2.1 of the License, or (at your option) any later version. 16 | # 17 | # This library is distributed in the hope that it will be useful, 18 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 20 | # Lesser General Public License for more details. 21 | # 22 | # You should have received a copy of the GNU Lesser General Public 23 | # License along with this library; if not, write to the Free Software 24 | # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 25 | # 02110-1301 USA 26 | ######################### END LICENSE BLOCK ######################### 27 | 28 | from .chardistribution import EUCKRDistributionAnalysis 29 | from .codingstatemachine import CodingStateMachine 30 | from .mbcharsetprober import MultiByteCharSetProber 31 | from .mbcssm import CP949_SM_MODEL 32 | 33 | 34 | class CP949Prober(MultiByteCharSetProber): 35 | def __init__(self): 36 | super(CP949Prober, self).__init__() 37 | self.coding_sm = CodingStateMachine(CP949_SM_MODEL) 38 | # NOTE: CP949 is a superset of EUC-KR, so the distribution should be 39 | # not different. 40 | self.distribution_analyzer = EUCKRDistributionAnalysis() 41 | self.reset() 42 | 43 | @property 44 | def charset_name(self): 45 | return "CP949" 46 | 47 | @property 48 | def language(self): 49 | return "Korean" 50 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/chardet/enums.py: -------------------------------------------------------------------------------- 1 | """ 2 | All of the Enums that are used throughout the chardet package. 3 | 4 | :author: Dan Blanchard (dan.blanchard@gmail.com) 5 | """ 6 | 7 | 8 | class InputState(object): 9 | """ 10 | This enum represents the different states a universal detector can be in. 11 | """ 12 | PURE_ASCII = 0 13 | ESC_ASCII = 1 14 | HIGH_BYTE = 2 15 | 16 | 17 | class LanguageFilter(object): 18 | """ 19 | This enum represents the different language filters we can apply to a 20 | ``UniversalDetector``. 21 | """ 22 | CHINESE_SIMPLIFIED = 0x01 23 | CHINESE_TRADITIONAL = 0x02 24 | JAPANESE = 0x04 25 | KOREAN = 0x08 26 | NON_CJK = 0x10 27 | ALL = 0x1F 28 | CHINESE = CHINESE_SIMPLIFIED | CHINESE_TRADITIONAL 29 | CJK = CHINESE | JAPANESE | KOREAN 30 | 31 | 32 | class ProbingState(object): 33 | """ 34 | This enum represents the different states a prober can be in. 35 | """ 36 | DETECTING = 0 37 | FOUND_IT = 1 38 | NOT_ME = 2 39 | 40 | 41 | class MachineState(object): 42 | """ 43 | This enum represents the different states a state machine can be in. 44 | """ 45 | START = 0 46 | ERROR = 1 47 | ITS_ME = 2 48 | 49 | 50 | class SequenceLikelihood(object): 51 | """ 52 | This enum represents the likelihood of a character following the previous one. 53 | """ 54 | NEGATIVE = 0 55 | UNLIKELY = 1 56 | LIKELY = 2 57 | POSITIVE = 3 58 | 59 | @classmethod 60 | def get_num_categories(cls): 61 | """:returns: The number of likelihood categories in the enum.""" 62 | return 4 63 | 64 | 65 | class CharacterCategory(object): 66 | """ 67 | This enum represents the different categories language models for 68 | ``SingleByteCharsetProber`` put characters into. 69 | 70 | Anything less than CONTROL is considered a letter. 71 | """ 72 | UNDEFINED = 255 73 | LINE_BREAK = 254 74 | SYMBOL = 253 75 | DIGIT = 252 76 | CONTROL = 251 77 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/chardet/euckrprober.py: -------------------------------------------------------------------------------- 1 | ######################## BEGIN LICENSE BLOCK ######################## 2 | # The Original Code is mozilla.org code. 3 | # 4 | # The Initial Developer of the Original Code is 5 | # Netscape Communications Corporation. 6 | # Portions created by the Initial Developer are Copyright (C) 1998 7 | # the Initial Developer. All Rights Reserved. 8 | # 9 | # Contributor(s): 10 | # Mark Pilgrim - port to Python 11 | # 12 | # This library is free software; you can redistribute it and/or 13 | # modify it under the terms of the GNU Lesser General Public 14 | # License as published by the Free Software Foundation; either 15 | # version 2.1 of the License, or (at your option) any later version. 16 | # 17 | # This library is distributed in the hope that it will be useful, 18 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 20 | # Lesser General Public License for more details. 21 | # 22 | # You should have received a copy of the GNU Lesser General Public 23 | # License along with this library; if not, write to the Free Software 24 | # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 25 | # 02110-1301 USA 26 | ######################### END LICENSE BLOCK ######################### 27 | 28 | from .mbcharsetprober import MultiByteCharSetProber 29 | from .codingstatemachine import CodingStateMachine 30 | from .chardistribution import EUCKRDistributionAnalysis 31 | from .mbcssm import EUCKR_SM_MODEL 32 | 33 | 34 | class EUCKRProber(MultiByteCharSetProber): 35 | def __init__(self): 36 | super(EUCKRProber, self).__init__() 37 | self.coding_sm = CodingStateMachine(EUCKR_SM_MODEL) 38 | self.distribution_analyzer = EUCKRDistributionAnalysis() 39 | self.reset() 40 | 41 | @property 42 | def charset_name(self): 43 | return "EUC-KR" 44 | 45 | @property 46 | def language(self): 47 | return "Korean" 48 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/chardet/euctwprober.py: -------------------------------------------------------------------------------- 1 | ######################## BEGIN LICENSE BLOCK ######################## 2 | # The Original Code is mozilla.org code. 3 | # 4 | # The Initial Developer of the Original Code is 5 | # Netscape Communications Corporation. 6 | # Portions created by the Initial Developer are Copyright (C) 1998 7 | # the Initial Developer. All Rights Reserved. 8 | # 9 | # Contributor(s): 10 | # Mark Pilgrim - port to Python 11 | # 12 | # This library is free software; you can redistribute it and/or 13 | # modify it under the terms of the GNU Lesser General Public 14 | # License as published by the Free Software Foundation; either 15 | # version 2.1 of the License, or (at your option) any later version. 16 | # 17 | # This library is distributed in the hope that it will be useful, 18 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 20 | # Lesser General Public License for more details. 21 | # 22 | # You should have received a copy of the GNU Lesser General Public 23 | # License along with this library; if not, write to the Free Software 24 | # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 25 | # 02110-1301 USA 26 | ######################### END LICENSE BLOCK ######################### 27 | 28 | from .mbcharsetprober import MultiByteCharSetProber 29 | from .codingstatemachine import CodingStateMachine 30 | from .chardistribution import EUCTWDistributionAnalysis 31 | from .mbcssm import EUCTW_SM_MODEL 32 | 33 | class EUCTWProber(MultiByteCharSetProber): 34 | def __init__(self): 35 | super(EUCTWProber, self).__init__() 36 | self.coding_sm = CodingStateMachine(EUCTW_SM_MODEL) 37 | self.distribution_analyzer = EUCTWDistributionAnalysis() 38 | self.reset() 39 | 40 | @property 41 | def charset_name(self): 42 | return "EUC-TW" 43 | 44 | @property 45 | def language(self): 46 | return "Taiwan" 47 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/chardet/gb2312prober.py: -------------------------------------------------------------------------------- 1 | ######################## BEGIN LICENSE BLOCK ######################## 2 | # The Original Code is mozilla.org code. 3 | # 4 | # The Initial Developer of the Original Code is 5 | # Netscape Communications Corporation. 6 | # Portions created by the Initial Developer are Copyright (C) 1998 7 | # the Initial Developer. All Rights Reserved. 8 | # 9 | # Contributor(s): 10 | # Mark Pilgrim - port to Python 11 | # 12 | # This library is free software; you can redistribute it and/or 13 | # modify it under the terms of the GNU Lesser General Public 14 | # License as published by the Free Software Foundation; either 15 | # version 2.1 of the License, or (at your option) any later version. 16 | # 17 | # This library is distributed in the hope that it will be useful, 18 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 20 | # Lesser General Public License for more details. 21 | # 22 | # You should have received a copy of the GNU Lesser General Public 23 | # License along with this library; if not, write to the Free Software 24 | # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 25 | # 02110-1301 USA 26 | ######################### END LICENSE BLOCK ######################### 27 | 28 | from .mbcharsetprober import MultiByteCharSetProber 29 | from .codingstatemachine import CodingStateMachine 30 | from .chardistribution import GB2312DistributionAnalysis 31 | from .mbcssm import GB2312_SM_MODEL 32 | 33 | class GB2312Prober(MultiByteCharSetProber): 34 | def __init__(self): 35 | super(GB2312Prober, self).__init__() 36 | self.coding_sm = CodingStateMachine(GB2312_SM_MODEL) 37 | self.distribution_analyzer = GB2312DistributionAnalysis() 38 | self.reset() 39 | 40 | @property 41 | def charset_name(self): 42 | return "GB2312" 43 | 44 | @property 45 | def language(self): 46 | return "Chinese" 47 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/chardet/mbcsgroupprober.py: -------------------------------------------------------------------------------- 1 | ######################## BEGIN LICENSE BLOCK ######################## 2 | # The Original Code is Mozilla Universal charset detector code. 3 | # 4 | # The Initial Developer of the Original Code is 5 | # Netscape Communications Corporation. 6 | # Portions created by the Initial Developer are Copyright (C) 2001 7 | # the Initial Developer. All Rights Reserved. 8 | # 9 | # Contributor(s): 10 | # Mark Pilgrim - port to Python 11 | # Shy Shalom - original C code 12 | # Proofpoint, Inc. 13 | # 14 | # This library is free software; you can redistribute it and/or 15 | # modify it under the terms of the GNU Lesser General Public 16 | # License as published by the Free Software Foundation; either 17 | # version 2.1 of the License, or (at your option) any later version. 18 | # 19 | # This library is distributed in the hope that it will be useful, 20 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 21 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 22 | # Lesser General Public License for more details. 23 | # 24 | # You should have received a copy of the GNU Lesser General Public 25 | # License along with this library; if not, write to the Free Software 26 | # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 27 | # 02110-1301 USA 28 | ######################### END LICENSE BLOCK ######################### 29 | 30 | from .charsetgroupprober import CharSetGroupProber 31 | from .utf8prober import UTF8Prober 32 | from .sjisprober import SJISProber 33 | from .eucjpprober import EUCJPProber 34 | from .gb2312prober import GB2312Prober 35 | from .euckrprober import EUCKRProber 36 | from .cp949prober import CP949Prober 37 | from .big5prober import Big5Prober 38 | from .euctwprober import EUCTWProber 39 | 40 | 41 | class MBCSGroupProber(CharSetGroupProber): 42 | def __init__(self, lang_filter=None): 43 | super(MBCSGroupProber, self).__init__(lang_filter=lang_filter) 44 | self.probers = [ 45 | UTF8Prober(), 46 | SJISProber(), 47 | EUCJPProber(), 48 | GB2312Prober(), 49 | EUCKRProber(), 50 | CP949Prober(), 51 | Big5Prober(), 52 | EUCTWProber() 53 | ] 54 | self.reset() 55 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/chardet/version.py: -------------------------------------------------------------------------------- 1 | """ 2 | This module exists only to simplify retrieving the version number of chardet 3 | from within setup.py and from chardet subpackages. 4 | 5 | :author: Dan Blanchard (dan.blanchard@gmail.com) 6 | """ 7 | 8 | __version__ = "3.0.4" 9 | VERSION = __version__.split('.') 10 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/colorama/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. 2 | from .initialise import init, deinit, reinit, colorama_text 3 | from .ansi import Fore, Back, Style, Cursor 4 | from .ansitowin32 import AnsiToWin32 5 | 6 | __version__ = '0.3.9' 7 | 8 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/colorama/initialise.py: -------------------------------------------------------------------------------- 1 | # Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. 2 | import atexit 3 | import contextlib 4 | import sys 5 | 6 | from .ansitowin32 import AnsiToWin32 7 | 8 | 9 | orig_stdout = None 10 | orig_stderr = None 11 | 12 | wrapped_stdout = None 13 | wrapped_stderr = None 14 | 15 | atexit_done = False 16 | 17 | 18 | def reset_all(): 19 | if AnsiToWin32 is not None: # Issue #74: objects might become None at exit 20 | AnsiToWin32(orig_stdout).reset_all() 21 | 22 | 23 | def init(autoreset=False, convert=None, strip=None, wrap=True): 24 | 25 | if not wrap and any([autoreset, convert, strip]): 26 | raise ValueError('wrap=False conflicts with any other arg=True') 27 | 28 | global wrapped_stdout, wrapped_stderr 29 | global orig_stdout, orig_stderr 30 | 31 | orig_stdout = sys.stdout 32 | orig_stderr = sys.stderr 33 | 34 | if sys.stdout is None: 35 | wrapped_stdout = None 36 | else: 37 | sys.stdout = wrapped_stdout = \ 38 | wrap_stream(orig_stdout, convert, strip, autoreset, wrap) 39 | if sys.stderr is None: 40 | wrapped_stderr = None 41 | else: 42 | sys.stderr = wrapped_stderr = \ 43 | wrap_stream(orig_stderr, convert, strip, autoreset, wrap) 44 | 45 | global atexit_done 46 | if not atexit_done: 47 | atexit.register(reset_all) 48 | atexit_done = True 49 | 50 | 51 | def deinit(): 52 | if orig_stdout is not None: 53 | sys.stdout = orig_stdout 54 | if orig_stderr is not None: 55 | sys.stderr = orig_stderr 56 | 57 | 58 | @contextlib.contextmanager 59 | def colorama_text(*args, **kwargs): 60 | init(*args, **kwargs) 61 | try: 62 | yield 63 | finally: 64 | deinit() 65 | 66 | 67 | def reinit(): 68 | if wrapped_stdout is not None: 69 | sys.stdout = wrapped_stdout 70 | if wrapped_stderr is not None: 71 | sys.stderr = wrapped_stderr 72 | 73 | 74 | def wrap_stream(stream, convert, strip, autoreset, wrap): 75 | if wrap: 76 | wrapper = AnsiToWin32(stream, 77 | convert=convert, strip=strip, autoreset=autoreset) 78 | if wrapper.should_wrap(): 79 | stream = wrapper.stream 80 | return stream 81 | 82 | 83 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/distlib/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 3 | # Copyright (C) 2012-2017 Vinay Sajip. 4 | # Licensed to the Python Software Foundation under a contributor agreement. 5 | # See LICENSE.txt and CONTRIBUTORS.txt. 6 | # 7 | import logging 8 | 9 | __version__ = '0.2.7' 10 | 11 | class DistlibException(Exception): 12 | pass 13 | 14 | try: 15 | from logging import NullHandler 16 | except ImportError: # pragma: no cover 17 | class NullHandler(logging.Handler): 18 | def handle(self, record): pass 19 | def emit(self, record): pass 20 | def createLock(self): self.lock = None 21 | 22 | logger = logging.getLogger(__name__) 23 | logger.addHandler(NullHandler()) 24 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/distlib/_backport/__init__.py: -------------------------------------------------------------------------------- 1 | """Modules copied from Python 3 standard libraries, for internal use only. 2 | 3 | Individual classes and functions are found in d2._backport.misc. Intended 4 | usage is to always import things missing from 3.1 from that module: the 5 | built-in/stdlib objects will be used if found. 6 | """ 7 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/distlib/_backport/misc.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 3 | # Copyright (C) 2012 The Python Software Foundation. 4 | # See LICENSE.txt and CONTRIBUTORS.txt. 5 | # 6 | """Backports for individual classes and functions.""" 7 | 8 | import os 9 | import sys 10 | 11 | __all__ = ['cache_from_source', 'callable', 'fsencode'] 12 | 13 | 14 | try: 15 | from imp import cache_from_source 16 | except ImportError: 17 | def cache_from_source(py_file, debug=__debug__): 18 | ext = debug and 'c' or 'o' 19 | return py_file + ext 20 | 21 | 22 | try: 23 | callable = callable 24 | except NameError: 25 | from collections import Callable 26 | 27 | def callable(obj): 28 | return isinstance(obj, Callable) 29 | 30 | 31 | try: 32 | fsencode = os.fsencode 33 | except AttributeError: 34 | def fsencode(filename): 35 | if isinstance(filename, bytes): 36 | return filename 37 | elif isinstance(filename, str): 38 | return filename.encode(sys.getfilesystemencoding()) 39 | else: 40 | raise TypeError("expect bytes or str, not %s" % 41 | type(filename).__name__) 42 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/distlib/t32.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/distlib/t32.exe -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/distlib/t64.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/distlib/t64.exe -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/distlib/w32.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/distlib/w32.exe -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/distlib/w64.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/distlib/w64.exe -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/html5lib/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | HTML parsing library based on the `WHATWG HTML specification 3 | `_. The parser is designed to be compatible with 4 | existing HTML found in the wild and implements well-defined error recovery that 5 | is largely compatible with modern desktop web browsers. 6 | 7 | Example usage:: 8 | 9 | from pip._vendor import html5lib 10 | with open("my_document.html", "rb") as f: 11 | tree = html5lib.parse(f) 12 | 13 | For convenience, this module re-exports the following names: 14 | 15 | * :func:`~.html5parser.parse` 16 | * :func:`~.html5parser.parseFragment` 17 | * :class:`~.html5parser.HTMLParser` 18 | * :func:`~.treebuilders.getTreeBuilder` 19 | * :func:`~.treewalkers.getTreeWalker` 20 | * :func:`~.serializer.serialize` 21 | """ 22 | 23 | from __future__ import absolute_import, division, unicode_literals 24 | 25 | from .html5parser import HTMLParser, parse, parseFragment 26 | from .treebuilders import getTreeBuilder 27 | from .treewalkers import getTreeWalker 28 | from .serializer import serialize 29 | 30 | __all__ = ["HTMLParser", "parse", "parseFragment", "getTreeBuilder", 31 | "getTreeWalker", "serialize"] 32 | 33 | # this has to be at the top level, see how setup.py parses this 34 | #: Distribution version number. 35 | __version__ = "1.0.1" 36 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/html5lib/_trie/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import, division, unicode_literals 2 | 3 | from .py import Trie as PyTrie 4 | 5 | Trie = PyTrie 6 | 7 | # pylint:disable=wrong-import-position 8 | try: 9 | from .datrie import Trie as DATrie 10 | except ImportError: 11 | pass 12 | else: 13 | Trie = DATrie 14 | # pylint:enable=wrong-import-position 15 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/html5lib/_trie/_base.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import, division, unicode_literals 2 | 3 | from collections import Mapping 4 | 5 | 6 | class Trie(Mapping): 7 | """Abstract base class for tries""" 8 | 9 | def keys(self, prefix=None): 10 | # pylint:disable=arguments-differ 11 | keys = super(Trie, self).keys() 12 | 13 | if prefix is None: 14 | return set(keys) 15 | 16 | return {x for x in keys if x.startswith(prefix)} 17 | 18 | def has_keys_with_prefix(self, prefix): 19 | for key in self.keys(): 20 | if key.startswith(prefix): 21 | return True 22 | 23 | return False 24 | 25 | def longest_prefix(self, prefix): 26 | if prefix in self: 27 | return prefix 28 | 29 | for i in range(1, len(prefix) + 1): 30 | if prefix[:-i] in self: 31 | return prefix[:-i] 32 | 33 | raise KeyError(prefix) 34 | 35 | def longest_prefix_item(self, prefix): 36 | lprefix = self.longest_prefix(prefix) 37 | return (lprefix, self[lprefix]) 38 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/html5lib/_trie/datrie.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import, division, unicode_literals 2 | 3 | from datrie import Trie as DATrie 4 | from pip._vendor.six import text_type 5 | 6 | from ._base import Trie as ABCTrie 7 | 8 | 9 | class Trie(ABCTrie): 10 | def __init__(self, data): 11 | chars = set() 12 | for key in data.keys(): 13 | if not isinstance(key, text_type): 14 | raise TypeError("All keys must be strings") 15 | for char in key: 16 | chars.add(char) 17 | 18 | self._data = DATrie("".join(chars)) 19 | for key, value in data.items(): 20 | self._data[key] = value 21 | 22 | def __contains__(self, key): 23 | return key in self._data 24 | 25 | def __len__(self): 26 | return len(self._data) 27 | 28 | def __iter__(self): 29 | raise NotImplementedError() 30 | 31 | def __getitem__(self, key): 32 | return self._data[key] 33 | 34 | def keys(self, prefix=None): 35 | return self._data.keys(prefix) 36 | 37 | def has_keys_with_prefix(self, prefix): 38 | return self._data.has_keys_with_prefix(prefix) 39 | 40 | def longest_prefix(self, prefix): 41 | return self._data.longest_prefix(prefix) 42 | 43 | def longest_prefix_item(self, prefix): 44 | return self._data.longest_prefix_item(prefix) 45 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/html5lib/_trie/py.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import, division, unicode_literals 2 | from pip._vendor.six import text_type 3 | 4 | from bisect import bisect_left 5 | 6 | from ._base import Trie as ABCTrie 7 | 8 | 9 | class Trie(ABCTrie): 10 | def __init__(self, data): 11 | if not all(isinstance(x, text_type) for x in data.keys()): 12 | raise TypeError("All keys must be strings") 13 | 14 | self._data = data 15 | self._keys = sorted(data.keys()) 16 | self._cachestr = "" 17 | self._cachepoints = (0, len(data)) 18 | 19 | def __contains__(self, key): 20 | return key in self._data 21 | 22 | def __len__(self): 23 | return len(self._data) 24 | 25 | def __iter__(self): 26 | return iter(self._data) 27 | 28 | def __getitem__(self, key): 29 | return self._data[key] 30 | 31 | def keys(self, prefix=None): 32 | if prefix is None or prefix == "" or not self._keys: 33 | return set(self._keys) 34 | 35 | if prefix.startswith(self._cachestr): 36 | lo, hi = self._cachepoints 37 | start = i = bisect_left(self._keys, prefix, lo, hi) 38 | else: 39 | start = i = bisect_left(self._keys, prefix) 40 | 41 | keys = set() 42 | if start == len(self._keys): 43 | return keys 44 | 45 | while self._keys[i].startswith(prefix): 46 | keys.add(self._keys[i]) 47 | i += 1 48 | 49 | self._cachestr = prefix 50 | self._cachepoints = (start, i) 51 | 52 | return keys 53 | 54 | def has_keys_with_prefix(self, prefix): 55 | if prefix in self._data: 56 | return True 57 | 58 | if prefix.startswith(self._cachestr): 59 | lo, hi = self._cachepoints 60 | i = bisect_left(self._keys, prefix, lo, hi) 61 | else: 62 | i = bisect_left(self._keys, prefix) 63 | 64 | if i == len(self._keys): 65 | return False 66 | 67 | return self._keys[i].startswith(prefix) 68 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/html5lib/filters/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/html5lib/filters/__init__.py -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/html5lib/filters/alphabeticalattributes.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import, division, unicode_literals 2 | 3 | from . import base 4 | 5 | from collections import OrderedDict 6 | 7 | 8 | def _attr_key(attr): 9 | """Return an appropriate key for an attribute for sorting 10 | 11 | Attributes have a namespace that can be either ``None`` or a string. We 12 | can't compare the two because they're different types, so we convert 13 | ``None`` to an empty string first. 14 | 15 | """ 16 | return (attr[0][0] or ''), attr[0][1] 17 | 18 | 19 | class Filter(base.Filter): 20 | """Alphabetizes attributes for elements""" 21 | def __iter__(self): 22 | for token in base.Filter.__iter__(self): 23 | if token["type"] in ("StartTag", "EmptyTag"): 24 | attrs = OrderedDict() 25 | for name, value in sorted(token["data"].items(), 26 | key=_attr_key): 27 | attrs[name] = value 28 | token["data"] = attrs 29 | yield token 30 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/html5lib/filters/base.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import, division, unicode_literals 2 | 3 | 4 | class Filter(object): 5 | def __init__(self, source): 6 | self.source = source 7 | 8 | def __iter__(self): 9 | return iter(self.source) 10 | 11 | def __getattr__(self, name): 12 | return getattr(self.source, name) 13 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/html5lib/filters/whitespace.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import, division, unicode_literals 2 | 3 | import re 4 | 5 | from . import base 6 | from ..constants import rcdataElements, spaceCharacters 7 | spaceCharacters = "".join(spaceCharacters) 8 | 9 | SPACES_REGEX = re.compile("[%s]+" % spaceCharacters) 10 | 11 | 12 | class Filter(base.Filter): 13 | """Collapses whitespace except in pre, textarea, and script elements""" 14 | spacePreserveElements = frozenset(["pre", "textarea"] + list(rcdataElements)) 15 | 16 | def __iter__(self): 17 | preserve = 0 18 | for token in base.Filter.__iter__(self): 19 | type = token["type"] 20 | if type == "StartTag" \ 21 | and (preserve or token["name"] in self.spacePreserveElements): 22 | preserve += 1 23 | 24 | elif type == "EndTag" and preserve: 25 | preserve -= 1 26 | 27 | elif not preserve and type == "SpaceCharacters" and token["data"]: 28 | # Test on token["data"] above to not introduce spaces where there were not 29 | token["data"] = " " 30 | 31 | elif not preserve and type == "Characters": 32 | token["data"] = collapse_spaces(token["data"]) 33 | 34 | yield token 35 | 36 | 37 | def collapse_spaces(text): 38 | return SPACES_REGEX.sub(' ', text) 39 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/html5lib/treeadapters/__init__.py: -------------------------------------------------------------------------------- 1 | """Tree adapters let you convert from one tree structure to another 2 | 3 | Example: 4 | 5 | .. code-block:: python 6 | 7 | from pip._vendor import html5lib 8 | from pip._vendor.html5lib.treeadapters import genshi 9 | 10 | doc = 'Hi!' 11 | treebuilder = html5lib.getTreeBuilder('etree') 12 | parser = html5lib.HTMLParser(tree=treebuilder) 13 | tree = parser.parse(doc) 14 | TreeWalker = html5lib.getTreeWalker('etree') 15 | 16 | genshi_tree = genshi.to_genshi(TreeWalker(tree)) 17 | 18 | """ 19 | from __future__ import absolute_import, division, unicode_literals 20 | 21 | from . import sax 22 | 23 | __all__ = ["sax"] 24 | 25 | try: 26 | from . import genshi # noqa 27 | except ImportError: 28 | pass 29 | else: 30 | __all__.append("genshi") 31 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/html5lib/treeadapters/genshi.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import, division, unicode_literals 2 | 3 | from genshi.core import QName, Attrs 4 | from genshi.core import START, END, TEXT, COMMENT, DOCTYPE 5 | 6 | 7 | def to_genshi(walker): 8 | """Convert a tree to a genshi tree 9 | 10 | :arg walker: the treewalker to use to walk the tree to convert it 11 | 12 | :returns: generator of genshi nodes 13 | 14 | """ 15 | text = [] 16 | for token in walker: 17 | type = token["type"] 18 | if type in ("Characters", "SpaceCharacters"): 19 | text.append(token["data"]) 20 | elif text: 21 | yield TEXT, "".join(text), (None, -1, -1) 22 | text = [] 23 | 24 | if type in ("StartTag", "EmptyTag"): 25 | if token["namespace"]: 26 | name = "{%s}%s" % (token["namespace"], token["name"]) 27 | else: 28 | name = token["name"] 29 | attrs = Attrs([(QName("{%s}%s" % attr if attr[0] is not None else attr[1]), value) 30 | for attr, value in token["data"].items()]) 31 | yield (START, (QName(name), attrs), (None, -1, -1)) 32 | if type == "EmptyTag": 33 | type = "EndTag" 34 | 35 | if type == "EndTag": 36 | if token["namespace"]: 37 | name = "{%s}%s" % (token["namespace"], token["name"]) 38 | else: 39 | name = token["name"] 40 | 41 | yield END, QName(name), (None, -1, -1) 42 | 43 | elif type == "Comment": 44 | yield COMMENT, token["data"], (None, -1, -1) 45 | 46 | elif type == "Doctype": 47 | yield DOCTYPE, (token["name"], token["publicId"], 48 | token["systemId"]), (None, -1, -1) 49 | 50 | else: 51 | pass # FIXME: What to do? 52 | 53 | if text: 54 | yield TEXT, "".join(text), (None, -1, -1) 55 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/html5lib/treeadapters/sax.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import, division, unicode_literals 2 | 3 | from xml.sax.xmlreader import AttributesNSImpl 4 | 5 | from ..constants import adjustForeignAttributes, unadjustForeignAttributes 6 | 7 | prefix_mapping = {} 8 | for prefix, localName, namespace in adjustForeignAttributes.values(): 9 | if prefix is not None: 10 | prefix_mapping[prefix] = namespace 11 | 12 | 13 | def to_sax(walker, handler): 14 | """Call SAX-like content handler based on treewalker walker 15 | 16 | :arg walker: the treewalker to use to walk the tree to convert it 17 | 18 | :arg handler: SAX handler to use 19 | 20 | """ 21 | handler.startDocument() 22 | for prefix, namespace in prefix_mapping.items(): 23 | handler.startPrefixMapping(prefix, namespace) 24 | 25 | for token in walker: 26 | type = token["type"] 27 | if type == "Doctype": 28 | continue 29 | elif type in ("StartTag", "EmptyTag"): 30 | attrs = AttributesNSImpl(token["data"], 31 | unadjustForeignAttributes) 32 | handler.startElementNS((token["namespace"], token["name"]), 33 | token["name"], 34 | attrs) 35 | if type == "EmptyTag": 36 | handler.endElementNS((token["namespace"], token["name"]), 37 | token["name"]) 38 | elif type == "EndTag": 39 | handler.endElementNS((token["namespace"], token["name"]), 40 | token["name"]) 41 | elif type in ("Characters", "SpaceCharacters"): 42 | handler.characters(token["data"]) 43 | elif type == "Comment": 44 | pass 45 | else: 46 | assert False, "Unknown token type" 47 | 48 | for prefix, namespace in prefix_mapping.items(): 49 | handler.endPrefixMapping(prefix) 50 | handler.endDocument() 51 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/html5lib/treewalkers/dom.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import, division, unicode_literals 2 | 3 | from xml.dom import Node 4 | 5 | from . import base 6 | 7 | 8 | class TreeWalker(base.NonRecursiveTreeWalker): 9 | def getNodeDetails(self, node): 10 | if node.nodeType == Node.DOCUMENT_TYPE_NODE: 11 | return base.DOCTYPE, node.name, node.publicId, node.systemId 12 | 13 | elif node.nodeType in (Node.TEXT_NODE, Node.CDATA_SECTION_NODE): 14 | return base.TEXT, node.nodeValue 15 | 16 | elif node.nodeType == Node.ELEMENT_NODE: 17 | attrs = {} 18 | for attr in list(node.attributes.keys()): 19 | attr = node.getAttributeNode(attr) 20 | if attr.namespaceURI: 21 | attrs[(attr.namespaceURI, attr.localName)] = attr.value 22 | else: 23 | attrs[(None, attr.name)] = attr.value 24 | return (base.ELEMENT, node.namespaceURI, node.nodeName, 25 | attrs, node.hasChildNodes()) 26 | 27 | elif node.nodeType == Node.COMMENT_NODE: 28 | return base.COMMENT, node.nodeValue 29 | 30 | elif node.nodeType in (Node.DOCUMENT_NODE, Node.DOCUMENT_FRAGMENT_NODE): 31 | return (base.DOCUMENT,) 32 | 33 | else: 34 | return base.UNKNOWN, node.nodeType 35 | 36 | def getFirstChild(self, node): 37 | return node.firstChild 38 | 39 | def getNextSibling(self, node): 40 | return node.nextSibling 41 | 42 | def getParentNode(self, node): 43 | return node.parentNode 44 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/idna/__init__.py: -------------------------------------------------------------------------------- 1 | from .package_data import __version__ 2 | from .core import * 3 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/idna/compat.py: -------------------------------------------------------------------------------- 1 | from .core import * 2 | from .codec import * 3 | 4 | def ToASCII(label): 5 | return encode(label) 6 | 7 | def ToUnicode(label): 8 | return decode(label) 9 | 10 | def nameprep(s): 11 | raise NotImplementedError("IDNA 2008 does not utilise nameprep protocol") 12 | 13 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/idna/intranges.py: -------------------------------------------------------------------------------- 1 | """ 2 | Given a list of integers, made up of (hopefully) a small number of long runs 3 | of consecutive integers, compute a representation of the form 4 | ((start1, end1), (start2, end2) ...). Then answer the question "was x present 5 | in the original list?" in time O(log(# runs)). 6 | """ 7 | 8 | import bisect 9 | 10 | def intranges_from_list(list_): 11 | """Represent a list of integers as a sequence of ranges: 12 | ((start_0, end_0), (start_1, end_1), ...), such that the original 13 | integers are exactly those x such that start_i <= x < end_i for some i. 14 | 15 | Ranges are encoded as single integers (start << 32 | end), not as tuples. 16 | """ 17 | 18 | sorted_list = sorted(list_) 19 | ranges = [] 20 | last_write = -1 21 | for i in range(len(sorted_list)): 22 | if i+1 < len(sorted_list): 23 | if sorted_list[i] == sorted_list[i+1]-1: 24 | continue 25 | current_range = sorted_list[last_write+1:i+1] 26 | ranges.append(_encode_range(current_range[0], current_range[-1] + 1)) 27 | last_write = i 28 | 29 | return tuple(ranges) 30 | 31 | def _encode_range(start, end): 32 | return (start << 32) | end 33 | 34 | def _decode_range(r): 35 | return (r >> 32), (r & ((1 << 32) - 1)) 36 | 37 | 38 | def intranges_contain(int_, ranges): 39 | """Determine if `int_` falls into one of the ranges in `ranges`.""" 40 | tuple_ = _encode_range(int_, 0) 41 | pos = bisect.bisect_left(ranges, tuple_) 42 | # we could be immediately ahead of a tuple (start, end) 43 | # with start < int_ <= end 44 | if pos > 0: 45 | left, right = _decode_range(ranges[pos-1]) 46 | if left <= int_ < right: 47 | return True 48 | # or we could be immediately behind a tuple (int_, end) 49 | if pos < len(ranges): 50 | left, _ = _decode_range(ranges[pos]) 51 | if left == int_: 52 | return True 53 | return False 54 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/idna/package_data.py: -------------------------------------------------------------------------------- 1 | __version__ = '2.6' 2 | 3 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/msgpack/__init__.py: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | from pip._vendor.msgpack._version import version 3 | from pip._vendor.msgpack.exceptions import * 4 | 5 | from collections import namedtuple 6 | 7 | 8 | class ExtType(namedtuple('ExtType', 'code data')): 9 | """ExtType represents ext type in msgpack.""" 10 | def __new__(cls, code, data): 11 | if not isinstance(code, int): 12 | raise TypeError("code must be int") 13 | if not isinstance(data, bytes): 14 | raise TypeError("data must be bytes") 15 | if not 0 <= code <= 127: 16 | raise ValueError("code must be 0~127") 17 | return super(ExtType, cls).__new__(cls, code, data) 18 | 19 | 20 | import os 21 | if os.environ.get('MSGPACK_PUREPYTHON'): 22 | from pip._vendor.msgpack.fallback import Packer, unpackb, Unpacker 23 | else: 24 | try: 25 | from pip._vendor.msgpack._packer import Packer 26 | from pip._vendor.msgpack._unpacker import unpackb, Unpacker 27 | except ImportError: 28 | from pip._vendor.msgpack.fallback import Packer, unpackb, Unpacker 29 | 30 | 31 | def pack(o, stream, **kwargs): 32 | """ 33 | Pack object `o` and write it to `stream` 34 | 35 | See :class:`Packer` for options. 36 | """ 37 | packer = Packer(**kwargs) 38 | stream.write(packer.pack(o)) 39 | 40 | 41 | def packb(o, **kwargs): 42 | """ 43 | Pack object `o` and return packed bytes 44 | 45 | See :class:`Packer` for options. 46 | """ 47 | return Packer(**kwargs).pack(o) 48 | 49 | 50 | def unpack(stream, **kwargs): 51 | """ 52 | Unpack an object from `stream`. 53 | 54 | Raises `ExtraData` when `stream` contains extra bytes. 55 | See :class:`Unpacker` for options. 56 | """ 57 | data = stream.read() 58 | return unpackb(data, **kwargs) 59 | 60 | 61 | # alias for compatibility to simplejson/marshal/pickle. 62 | load = unpack 63 | loads = unpackb 64 | 65 | dump = pack 66 | dumps = packb 67 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/msgpack/_version.py: -------------------------------------------------------------------------------- 1 | version = (0, 5, 6) 2 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/msgpack/exceptions.py: -------------------------------------------------------------------------------- 1 | class UnpackException(Exception): 2 | """Deprecated. Use Exception instead to catch all exception during unpacking.""" 3 | 4 | 5 | class BufferFull(UnpackException): 6 | pass 7 | 8 | 9 | class OutOfData(UnpackException): 10 | pass 11 | 12 | 13 | class UnpackValueError(UnpackException, ValueError): 14 | """Deprecated. Use ValueError instead.""" 15 | 16 | 17 | class ExtraData(UnpackValueError): 18 | def __init__(self, unpacked, extra): 19 | self.unpacked = unpacked 20 | self.extra = extra 21 | 22 | def __str__(self): 23 | return "unpack(b) received extra data." 24 | 25 | 26 | class PackException(Exception): 27 | """Deprecated. Use Exception instead to catch all exception during packing.""" 28 | 29 | 30 | class PackValueError(PackException, ValueError): 31 | """PackValueError is raised when type of input data is supported but it's value is unsupported. 32 | 33 | Deprecated. Use ValueError instead. 34 | """ 35 | 36 | 37 | class PackOverflowError(PackValueError, OverflowError): 38 | """PackOverflowError is raised when integer value is out of range of msgpack support [-2**31, 2**32). 39 | 40 | Deprecated. Use ValueError instead. 41 | """ 42 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/packaging/__about__.py: -------------------------------------------------------------------------------- 1 | # This file is dual licensed under the terms of the Apache License, Version 2 | # 2.0, and the BSD License. See the LICENSE file in the root of this repository 3 | # for complete details. 4 | from __future__ import absolute_import, division, print_function 5 | 6 | __all__ = [ 7 | "__title__", "__summary__", "__uri__", "__version__", "__author__", 8 | "__email__", "__license__", "__copyright__", 9 | ] 10 | 11 | __title__ = "packaging" 12 | __summary__ = "Core utilities for Python packages" 13 | __uri__ = "https://github.com/pypa/packaging" 14 | 15 | __version__ = "17.1" 16 | 17 | __author__ = "Donald Stufft and individual contributors" 18 | __email__ = "donald@stufft.io" 19 | 20 | __license__ = "BSD or Apache License, Version 2.0" 21 | __copyright__ = "Copyright 2014-2016 %s" % __author__ 22 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/packaging/__init__.py: -------------------------------------------------------------------------------- 1 | # This file is dual licensed under the terms of the Apache License, Version 2 | # 2.0, and the BSD License. See the LICENSE file in the root of this repository 3 | # for complete details. 4 | from __future__ import absolute_import, division, print_function 5 | 6 | from .__about__ import ( 7 | __author__, __copyright__, __email__, __license__, __summary__, __title__, 8 | __uri__, __version__ 9 | ) 10 | 11 | __all__ = [ 12 | "__title__", "__summary__", "__uri__", "__version__", "__author__", 13 | "__email__", "__license__", "__copyright__", 14 | ] 15 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/packaging/_compat.py: -------------------------------------------------------------------------------- 1 | # This file is dual licensed under the terms of the Apache License, Version 2 | # 2.0, and the BSD License. See the LICENSE file in the root of this repository 3 | # for complete details. 4 | from __future__ import absolute_import, division, print_function 5 | 6 | import sys 7 | 8 | 9 | PY2 = sys.version_info[0] == 2 10 | PY3 = sys.version_info[0] == 3 11 | 12 | # flake8: noqa 13 | 14 | if PY3: 15 | string_types = str, 16 | else: 17 | string_types = basestring, 18 | 19 | 20 | def with_metaclass(meta, *bases): 21 | """ 22 | Create a base class with a metaclass. 23 | """ 24 | # This requires a bit of explanation: the basic idea is to make a dummy 25 | # metaclass for one level of class instantiation that replaces itself with 26 | # the actual metaclass. 27 | class metaclass(meta): 28 | def __new__(cls, name, this_bases, d): 29 | return meta(name, bases, d) 30 | return type.__new__(metaclass, 'temporary_class', (), {}) 31 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/packaging/_structures.py: -------------------------------------------------------------------------------- 1 | # This file is dual licensed under the terms of the Apache License, Version 2 | # 2.0, and the BSD License. See the LICENSE file in the root of this repository 3 | # for complete details. 4 | from __future__ import absolute_import, division, print_function 5 | 6 | 7 | class Infinity(object): 8 | 9 | def __repr__(self): 10 | return "Infinity" 11 | 12 | def __hash__(self): 13 | return hash(repr(self)) 14 | 15 | def __lt__(self, other): 16 | return False 17 | 18 | def __le__(self, other): 19 | return False 20 | 21 | def __eq__(self, other): 22 | return isinstance(other, self.__class__) 23 | 24 | def __ne__(self, other): 25 | return not isinstance(other, self.__class__) 26 | 27 | def __gt__(self, other): 28 | return True 29 | 30 | def __ge__(self, other): 31 | return True 32 | 33 | def __neg__(self): 34 | return NegativeInfinity 35 | 36 | 37 | Infinity = Infinity() 38 | 39 | 40 | class NegativeInfinity(object): 41 | 42 | def __repr__(self): 43 | return "-Infinity" 44 | 45 | def __hash__(self): 46 | return hash(repr(self)) 47 | 48 | def __lt__(self, other): 49 | return True 50 | 51 | def __le__(self, other): 52 | return True 53 | 54 | def __eq__(self, other): 55 | return isinstance(other, self.__class__) 56 | 57 | def __ne__(self, other): 58 | return not isinstance(other, self.__class__) 59 | 60 | def __gt__(self, other): 61 | return False 62 | 63 | def __ge__(self, other): 64 | return False 65 | 66 | def __neg__(self): 67 | return Infinity 68 | 69 | 70 | NegativeInfinity = NegativeInfinity() 71 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/packaging/utils.py: -------------------------------------------------------------------------------- 1 | # This file is dual licensed under the terms of the Apache License, Version 2 | # 2.0, and the BSD License. See the LICENSE file in the root of this repository 3 | # for complete details. 4 | from __future__ import absolute_import, division, print_function 5 | 6 | import re 7 | 8 | from .version import InvalidVersion, Version 9 | 10 | 11 | _canonicalize_regex = re.compile(r"[-_.]+") 12 | 13 | 14 | def canonicalize_name(name): 15 | # This is taken from PEP 503. 16 | return _canonicalize_regex.sub("-", name).lower() 17 | 18 | 19 | def canonicalize_version(version): 20 | """ 21 | This is very similar to Version.__str__, but has one subtle differences 22 | with the way it handles the release segment. 23 | """ 24 | 25 | try: 26 | version = Version(version) 27 | except InvalidVersion: 28 | # Legacy versions cannot be normalized 29 | return version 30 | 31 | parts = [] 32 | 33 | # Epoch 34 | if version.epoch != 0: 35 | parts.append("{0}!".format(version.epoch)) 36 | 37 | # Release segment 38 | # NB: This strips trailing '.0's to normalize 39 | parts.append( 40 | re.sub( 41 | r'(\.0)+$', 42 | '', 43 | ".".join(str(x) for x in version.release) 44 | ) 45 | ) 46 | 47 | # Pre-release 48 | if version.pre is not None: 49 | parts.append("".join(str(x) for x in version.pre)) 50 | 51 | # Post-release 52 | if version.post is not None: 53 | parts.append(".post{0}".format(version.post)) 54 | 55 | # Development release 56 | if version.dev is not None: 57 | parts.append(".dev{0}".format(version.dev)) 58 | 59 | # Local version segment 60 | if version.local is not None: 61 | parts.append("+{0}".format(version.local)) 62 | 63 | return "".join(parts) 64 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/pkg_resources/py31compat.py: -------------------------------------------------------------------------------- 1 | import os 2 | import errno 3 | import sys 4 | 5 | 6 | def _makedirs_31(path, exist_ok=False): 7 | try: 8 | os.makedirs(path) 9 | except OSError as exc: 10 | if not exist_ok or exc.errno != errno.EEXIST: 11 | raise 12 | 13 | 14 | # rely on compatibility behavior until mode considerations 15 | # and exists_ok considerations are disentangled. 16 | # See https://github.com/pypa/setuptools/pull/1083#issuecomment-315168663 17 | needs_makedirs = ( 18 | sys.version_info < (3, 2, 5) or 19 | (3, 3) <= sys.version_info < (3, 3, 6) or 20 | (3, 4) <= sys.version_info < (3, 4, 1) 21 | ) 22 | makedirs = _makedirs_31 if needs_makedirs else os.makedirs 23 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/progress/counter.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Copyright (c) 2012 Giorgos Verigakis 4 | # 5 | # Permission to use, copy, modify, and distribute this software for any 6 | # purpose with or without fee is hereby granted, provided that the above 7 | # copyright notice and this permission notice appear in all copies. 8 | # 9 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 | 17 | from __future__ import unicode_literals 18 | from . import Infinite, Progress 19 | from .helpers import WriteMixin 20 | 21 | 22 | class Counter(WriteMixin, Infinite): 23 | message = '' 24 | hide_cursor = True 25 | 26 | def update(self): 27 | self.write(str(self.index)) 28 | 29 | 30 | class Countdown(WriteMixin, Progress): 31 | hide_cursor = True 32 | 33 | def update(self): 34 | self.write(str(self.remaining)) 35 | 36 | 37 | class Stack(WriteMixin, Progress): 38 | phases = (' ', '▁', '▂', '▃', '▄', '▅', '▆', '▇', '█') 39 | hide_cursor = True 40 | 41 | def update(self): 42 | nphases = len(self.phases) 43 | i = min(nphases - 1, int(self.progress * nphases)) 44 | self.write(self.phases[i]) 45 | 46 | 47 | class Pie(Stack): 48 | phases = ('○', '◔', '◑', '◕', '●') 49 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/progress/spinner.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Copyright (c) 2012 Giorgos Verigakis 4 | # 5 | # Permission to use, copy, modify, and distribute this software for any 6 | # purpose with or without fee is hereby granted, provided that the above 7 | # copyright notice and this permission notice appear in all copies. 8 | # 9 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 | 17 | from __future__ import unicode_literals 18 | from . import Infinite 19 | from .helpers import WriteMixin 20 | 21 | 22 | class Spinner(WriteMixin, Infinite): 23 | message = '' 24 | phases = ('-', '\\', '|', '/') 25 | hide_cursor = True 26 | 27 | def update(self): 28 | i = self.index % len(self.phases) 29 | self.write(self.phases[i]) 30 | 31 | 32 | class PieSpinner(Spinner): 33 | phases = ['◷', '◶', '◵', '◴'] 34 | 35 | 36 | class MoonSpinner(Spinner): 37 | phases = ['◑', '◒', '◐', '◓'] 38 | 39 | 40 | class LineSpinner(Spinner): 41 | phases = ['⎺', '⎻', '⎼', '⎽', '⎼', '⎻'] 42 | 43 | class PixelSpinner(Spinner): 44 | phases = ['⣾','⣷', '⣯', '⣟', '⡿', '⢿', '⣻', '⣽'] 45 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/pytoml/__init__.py: -------------------------------------------------------------------------------- 1 | from .core import TomlError 2 | from .parser import load, loads 3 | from .writer import dump, dumps 4 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/pytoml/core.py: -------------------------------------------------------------------------------- 1 | class TomlError(RuntimeError): 2 | def __init__(self, message, line, col, filename): 3 | RuntimeError.__init__(self, message, line, col, filename) 4 | self.message = message 5 | self.line = line 6 | self.col = col 7 | self.filename = filename 8 | 9 | def __str__(self): 10 | return '{}({}, {}): {}'.format(self.filename, self.line, self.col, self.message) 11 | 12 | def __repr__(self): 13 | return 'TomlError({!r}, {!r}, {!r}, {!r})'.format(self.message, self.line, self.col, self.filename) 14 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/requests/__version__.py: -------------------------------------------------------------------------------- 1 | # .-. .-. .-. . . .-. .-. .-. .-. 2 | # |( |- |.| | | |- `-. | `-. 3 | # ' ' `-' `-`.`-' `-' `-' ' `-' 4 | 5 | __title__ = 'requests' 6 | __description__ = 'Python HTTP for Humans.' 7 | __url__ = 'http://python-requests.org' 8 | __version__ = '2.18.4' 9 | __build__ = 0x021804 10 | __author__ = 'Kenneth Reitz' 11 | __author_email__ = 'me@kennethreitz.org' 12 | __license__ = 'Apache 2.0' 13 | __copyright__ = 'Copyright 2017 Kenneth Reitz' 14 | __cake__ = u'\u2728 \U0001f370 \u2728' 15 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/requests/_internal_utils.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | """ 4 | requests._internal_utils 5 | ~~~~~~~~~~~~~~ 6 | 7 | Provides utility functions that are consumed internally by Requests 8 | which depend on extremely few external helpers (such as compat) 9 | """ 10 | 11 | from .compat import is_py2, builtin_str, str 12 | 13 | 14 | def to_native_string(string, encoding='ascii'): 15 | """Given a string object, regardless of type, returns a representation of 16 | that string in the native string type, encoding and decoding where 17 | necessary. This assumes ASCII unless told otherwise. 18 | """ 19 | if isinstance(string, builtin_str): 20 | out = string 21 | else: 22 | if is_py2: 23 | out = string.encode(encoding) 24 | else: 25 | out = string.decode(encoding) 26 | 27 | return out 28 | 29 | 30 | def unicode_is_ascii(u_string): 31 | """Determine if unicode string only contains ASCII characters. 32 | 33 | :param str u_string: unicode string to check. Must be unicode 34 | and not Python 2 `str`. 35 | :rtype: bool 36 | """ 37 | assert isinstance(u_string, str) 38 | try: 39 | u_string.encode('ascii') 40 | return True 41 | except UnicodeEncodeError: 42 | return False 43 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/requests/certs.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | requests.certs 6 | ~~~~~~~~~~~~~~ 7 | 8 | This module returns the preferred default CA certificate bundle. There is 9 | only one — the one from the certifi package. 10 | 11 | If you are packaging Requests, e.g., for a Linux distribution or a managed 12 | environment, you can change the definition of where() to return a separately 13 | packaged CA bundle. 14 | """ 15 | from pip._vendor.certifi import where 16 | 17 | if __name__ == '__main__': 18 | print(where()) 19 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/requests/compat.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | """ 4 | requests.compat 5 | ~~~~~~~~~~~~~~~ 6 | 7 | This module handles import compatibility issues between Python 2 and 8 | Python 3. 9 | """ 10 | 11 | from pip._vendor import chardet 12 | 13 | import sys 14 | 15 | # ------- 16 | # Pythons 17 | # ------- 18 | 19 | # Syntax sugar. 20 | _ver = sys.version_info 21 | 22 | #: Python 2.x? 23 | is_py2 = (_ver[0] == 2) 24 | 25 | #: Python 3.x? 26 | is_py3 = (_ver[0] == 3) 27 | 28 | # Note: We've patched out simplejson support in pip because it prevents 29 | # upgrading simplejson on Windows. 30 | # try: 31 | # import simplejson as json 32 | # except (ImportError, SyntaxError): 33 | # # simplejson does not support Python 3.2, it throws a SyntaxError 34 | # # because of u'...' Unicode literals. 35 | import json 36 | 37 | # --------- 38 | # Specifics 39 | # --------- 40 | 41 | if is_py2: 42 | from urllib import ( 43 | quote, unquote, quote_plus, unquote_plus, urlencode, getproxies, 44 | proxy_bypass, proxy_bypass_environment, getproxies_environment) 45 | from urlparse import urlparse, urlunparse, urljoin, urlsplit, urldefrag 46 | from urllib2 import parse_http_list 47 | import cookielib 48 | from Cookie import Morsel 49 | from StringIO import StringIO 50 | 51 | from pip._vendor.urllib3.packages.ordered_dict import OrderedDict 52 | 53 | builtin_str = str 54 | bytes = str 55 | str = unicode 56 | basestring = basestring 57 | numeric_types = (int, long, float) 58 | integer_types = (int, long) 59 | 60 | elif is_py3: 61 | from urllib.parse import urlparse, urlunparse, urljoin, urlsplit, urlencode, quote, unquote, quote_plus, unquote_plus, urldefrag 62 | from urllib.request import parse_http_list, getproxies, proxy_bypass, proxy_bypass_environment, getproxies_environment 63 | from http import cookiejar as cookielib 64 | from http.cookies import Morsel 65 | from io import StringIO 66 | from collections import OrderedDict 67 | 68 | builtin_str = str 69 | str = str 70 | bytes = bytes 71 | basestring = (str, bytes) 72 | numeric_types = (int, float) 73 | integer_types = (int,) 74 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/requests/hooks.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | """ 4 | requests.hooks 5 | ~~~~~~~~~~~~~~ 6 | 7 | This module provides the capabilities for the Requests hooks system. 8 | 9 | Available hooks: 10 | 11 | ``response``: 12 | The response generated from a Request. 13 | """ 14 | HOOKS = ['response'] 15 | 16 | 17 | def default_hooks(): 18 | return dict((event, []) for event in HOOKS) 19 | 20 | # TODO: response is the only one 21 | 22 | 23 | def dispatch_hook(key, hooks, hook_data, **kwargs): 24 | """Dispatches a hook dictionary on a given piece of data.""" 25 | hooks = hooks or dict() 26 | hooks = hooks.get(key) 27 | if hooks: 28 | if hasattr(hooks, '__call__'): 29 | hooks = [hooks] 30 | for hook in hooks: 31 | _hook_data = hook(hook_data, **kwargs) 32 | if _hook_data is not None: 33 | hook_data = _hook_data 34 | return hook_data 35 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/requests/packages.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | # This code exists for backwards compatibility reasons. 4 | # I don't like it either. Just look the other way. :) 5 | 6 | for package in ('urllib3', 'idna', 'chardet'): 7 | vendored_package = "pip._vendor." + package 8 | locals()[package] = __import__(vendored_package) 9 | # This traversal is apparently necessary such that the identities are 10 | # preserved (requests.packages.urllib3.* is urllib3.*) 11 | for mod in list(sys.modules): 12 | if mod == vendored_package or mod.startswith(vendored_package + '.'): 13 | unprefixed_mod = mod[len("pip._vendor."):] 14 | sys.modules['pip._vendor.requests.packages.' + unprefixed_mod] = sys.modules[mod] 15 | 16 | # Kinda cool, though, right? 17 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/urllib3/contrib/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/urllib3/contrib/__init__.py -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/urllib3/contrib/_securetransport/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/urllib3/contrib/_securetransport/__init__.py -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/urllib3/packages/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | from . import ssl_match_hostname 4 | 5 | __all__ = ('ssl_match_hostname', ) 6 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/urllib3/packages/backports/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/urllib3/packages/backports/__init__.py -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/urllib3/packages/backports/makefile.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | backports.makefile 4 | ~~~~~~~~~~~~~~~~~~ 5 | 6 | Backports the Python 3 ``socket.makefile`` method for use with anything that 7 | wants to create a "fake" socket object. 8 | """ 9 | import io 10 | 11 | from socket import SocketIO 12 | 13 | 14 | def backport_makefile(self, mode="r", buffering=None, encoding=None, 15 | errors=None, newline=None): 16 | """ 17 | Backport of ``socket.makefile`` from Python 3.5. 18 | """ 19 | if not set(mode) <= set(["r", "w", "b"]): 20 | raise ValueError( 21 | "invalid mode %r (only r, w, b allowed)" % (mode,) 22 | ) 23 | writing = "w" in mode 24 | reading = "r" in mode or not writing 25 | assert reading or writing 26 | binary = "b" in mode 27 | rawmode = "" 28 | if reading: 29 | rawmode += "r" 30 | if writing: 31 | rawmode += "w" 32 | raw = SocketIO(self, rawmode) 33 | self._makefile_refs += 1 34 | if buffering is None: 35 | buffering = -1 36 | if buffering < 0: 37 | buffering = io.DEFAULT_BUFFER_SIZE 38 | if buffering == 0: 39 | if not binary: 40 | raise ValueError("unbuffered streams must be binary") 41 | return raw 42 | if reading and writing: 43 | buffer = io.BufferedRWPair(raw, raw, buffering) 44 | elif reading: 45 | buffer = io.BufferedReader(raw, buffering) 46 | else: 47 | assert writing 48 | buffer = io.BufferedWriter(raw, buffering) 49 | if binary: 50 | return buffer 51 | text = io.TextIOWrapper(buffer, encoding, errors, newline) 52 | text.mode = mode 53 | return text 54 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/urllib3/packages/ssl_match_hostname/__init__.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | try: 4 | # Our match_hostname function is the same as 3.5's, so we only want to 5 | # import the match_hostname function if it's at least that good. 6 | if sys.version_info < (3, 5): 7 | raise ImportError("Fallback to vendored code") 8 | 9 | from ssl import CertificateError, match_hostname 10 | except ImportError: 11 | try: 12 | # Backport of the function from a pypi module 13 | from backports.ssl_match_hostname import CertificateError, match_hostname 14 | except ImportError: 15 | # Our vendored copy 16 | from ._implementation import CertificateError, match_hostname 17 | 18 | # Not needed, but documenting what we provide. 19 | __all__ = ('CertificateError', 'match_hostname') 20 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/urllib3/util/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | # For backwards compatibility, provide imports that used to be here. 3 | from .connection import is_connection_dropped 4 | from .request import make_headers 5 | from .response import is_fp_closed 6 | from .ssl_ import ( 7 | SSLContext, 8 | HAS_SNI, 9 | IS_PYOPENSSL, 10 | IS_SECURETRANSPORT, 11 | assert_fingerprint, 12 | resolve_cert_reqs, 13 | resolve_ssl_version, 14 | ssl_wrap_socket, 15 | ) 16 | from .timeout import ( 17 | current_time, 18 | Timeout, 19 | ) 20 | 21 | from .retry import Retry 22 | from .url import ( 23 | get_host, 24 | parse_url, 25 | split_first, 26 | Url, 27 | ) 28 | from .wait import ( 29 | wait_for_read, 30 | wait_for_write 31 | ) 32 | 33 | __all__ = ( 34 | 'HAS_SNI', 35 | 'IS_PYOPENSSL', 36 | 'IS_SECURETRANSPORT', 37 | 'SSLContext', 38 | 'Retry', 39 | 'Timeout', 40 | 'Url', 41 | 'assert_fingerprint', 42 | 'current_time', 43 | 'is_connection_dropped', 44 | 'is_fp_closed', 45 | 'get_host', 46 | 'parse_url', 47 | 'make_headers', 48 | 'resolve_cert_reqs', 49 | 'resolve_ssl_version', 50 | 'split_first', 51 | 'ssl_wrap_socket', 52 | 'wait_for_read', 53 | 'wait_for_write' 54 | ) 55 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/urllib3/util/wait.py: -------------------------------------------------------------------------------- 1 | from .selectors import ( 2 | HAS_SELECT, 3 | DefaultSelector, 4 | EVENT_READ, 5 | EVENT_WRITE 6 | ) 7 | 8 | 9 | def _wait_for_io_events(socks, events, timeout=None): 10 | """ Waits for IO events to be available from a list of sockets 11 | or optionally a single socket if passed in. Returns a list of 12 | sockets that can be interacted with immediately. """ 13 | if not HAS_SELECT: 14 | raise ValueError('Platform does not have a selector') 15 | if not isinstance(socks, list): 16 | # Probably just a single socket. 17 | if hasattr(socks, "fileno"): 18 | socks = [socks] 19 | # Otherwise it might be a non-list iterable. 20 | else: 21 | socks = list(socks) 22 | with DefaultSelector() as selector: 23 | for sock in socks: 24 | selector.register(sock, events) 25 | return [key[0].fileobj for key in 26 | selector.select(timeout) if key[1] & events] 27 | 28 | 29 | def wait_for_read(socks, timeout=None): 30 | """ Waits for reading to be available from a list of sockets 31 | or optionally a single socket if passed in. Returns a list of 32 | sockets that can be read from immediately. """ 33 | return _wait_for_io_events(socks, EVENT_READ, timeout) 34 | 35 | 36 | def wait_for_write(socks, timeout=None): 37 | """ Waits for writing to be available from a list of sockets 38 | or optionally a single socket if passed in. Returns a list of 39 | sockets that can be written to immediately. """ 40 | return _wait_for_io_events(socks, EVENT_WRITE, timeout) 41 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/pip-10.0.1-py3.8.egg/pip/_vendor/webencodings/mklabels.py: -------------------------------------------------------------------------------- 1 | """ 2 | 3 | webencodings.mklabels 4 | ~~~~~~~~~~~~~~~~~~~~~ 5 | 6 | Regenarate the webencodings.labels module. 7 | 8 | :copyright: Copyright 2012 by Simon Sapin 9 | :license: BSD, see LICENSE for details. 10 | 11 | """ 12 | 13 | import json 14 | try: 15 | from urllib import urlopen 16 | except ImportError: 17 | from urllib.request import urlopen 18 | 19 | 20 | def assert_lower(string): 21 | assert string == string.lower() 22 | return string 23 | 24 | 25 | def generate(url): 26 | parts = ['''\ 27 | """ 28 | 29 | webencodings.labels 30 | ~~~~~~~~~~~~~~~~~~~ 31 | 32 | Map encoding labels to their name. 33 | 34 | :copyright: Copyright 2012 by Simon Sapin 35 | :license: BSD, see LICENSE for details. 36 | 37 | """ 38 | 39 | # XXX Do not edit! 40 | # This file is automatically generated by mklabels.py 41 | 42 | LABELS = { 43 | '''] 44 | labels = [ 45 | (repr(assert_lower(label)).lstrip('u'), 46 | repr(encoding['name']).lstrip('u')) 47 | for category in json.loads(urlopen(url).read().decode('ascii')) 48 | for encoding in category['encodings'] 49 | for label in encoding['labels']] 50 | max_len = max(len(label) for label, name in labels) 51 | parts.extend( 52 | ' %s:%s %s,\n' % (label, ' ' * (max_len - len(label)), name) 53 | for label, name in labels) 54 | parts.append('}') 55 | return ''.join(parts) 56 | 57 | 58 | if __name__ == '__main__': 59 | print(generate('http://encoding.spec.whatwg.org/encodings.json')) 60 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/requests-2.25.0.dist-info/INSTALLER: -------------------------------------------------------------------------------- 1 | pip 2 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/requests-2.25.0.dist-info/WHEEL: -------------------------------------------------------------------------------- 1 | Wheel-Version: 1.0 2 | Generator: bdist_wheel (0.35.1) 3 | Root-Is-Purelib: true 4 | Tag: py2-none-any 5 | Tag: py3-none-any 6 | 7 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/requests-2.25.0.dist-info/top_level.txt: -------------------------------------------------------------------------------- 1 | requests 2 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/requests/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/requests/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/requests/__pycache__/__version__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/requests/__pycache__/__version__.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/requests/__pycache__/_internal_utils.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/requests/__pycache__/_internal_utils.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/requests/__pycache__/adapters.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/requests/__pycache__/adapters.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/requests/__pycache__/api.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/requests/__pycache__/api.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/requests/__pycache__/auth.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/requests/__pycache__/auth.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/requests/__pycache__/certs.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/requests/__pycache__/certs.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/requests/__pycache__/compat.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/requests/__pycache__/compat.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/requests/__pycache__/cookies.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/requests/__pycache__/cookies.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/requests/__pycache__/exceptions.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/requests/__pycache__/exceptions.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/requests/__pycache__/help.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/requests/__pycache__/help.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/requests/__pycache__/hooks.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/requests/__pycache__/hooks.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/requests/__pycache__/models.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/requests/__pycache__/models.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/requests/__pycache__/packages.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/requests/__pycache__/packages.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/requests/__pycache__/sessions.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/requests/__pycache__/sessions.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/requests/__pycache__/status_codes.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/requests/__pycache__/status_codes.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/requests/__pycache__/structures.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/requests/__pycache__/structures.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/requests/__pycache__/utils.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/requests/__pycache__/utils.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/requests/__version__.py: -------------------------------------------------------------------------------- 1 | # .-. .-. .-. . . .-. .-. .-. .-. 2 | # |( |- |.| | | |- `-. | `-. 3 | # ' ' `-' `-`.`-' `-' `-' ' `-' 4 | 5 | __title__ = 'requests' 6 | __description__ = 'Python HTTP for Humans.' 7 | __url__ = 'https://requests.readthedocs.io' 8 | __version__ = '2.25.0' 9 | __build__ = 0x022500 10 | __author__ = 'Kenneth Reitz' 11 | __author_email__ = 'me@kennethreitz.org' 12 | __license__ = 'Apache 2.0' 13 | __copyright__ = 'Copyright 2020 Kenneth Reitz' 14 | __cake__ = u'\u2728 \U0001f370 \u2728' 15 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/requests/_internal_utils.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | """ 4 | requests._internal_utils 5 | ~~~~~~~~~~~~~~ 6 | 7 | Provides utility functions that are consumed internally by Requests 8 | which depend on extremely few external helpers (such as compat) 9 | """ 10 | 11 | from .compat import is_py2, builtin_str, str 12 | 13 | 14 | def to_native_string(string, encoding='ascii'): 15 | """Given a string object, regardless of type, returns a representation of 16 | that string in the native string type, encoding and decoding where 17 | necessary. This assumes ASCII unless told otherwise. 18 | """ 19 | if isinstance(string, builtin_str): 20 | out = string 21 | else: 22 | if is_py2: 23 | out = string.encode(encoding) 24 | else: 25 | out = string.decode(encoding) 26 | 27 | return out 28 | 29 | 30 | def unicode_is_ascii(u_string): 31 | """Determine if unicode string only contains ASCII characters. 32 | 33 | :param str u_string: unicode string to check. Must be unicode 34 | and not Python 2 `str`. 35 | :rtype: bool 36 | """ 37 | assert isinstance(u_string, str) 38 | try: 39 | u_string.encode('ascii') 40 | return True 41 | except UnicodeEncodeError: 42 | return False 43 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/requests/certs.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | requests.certs 6 | ~~~~~~~~~~~~~~ 7 | 8 | This module returns the preferred default CA certificate bundle. There is 9 | only one — the one from the certifi package. 10 | 11 | If you are packaging Requests, e.g., for a Linux distribution or a managed 12 | environment, you can change the definition of where() to return a separately 13 | packaged CA bundle. 14 | """ 15 | from certifi import where 16 | 17 | if __name__ == '__main__': 18 | print(where()) 19 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/requests/compat.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | """ 4 | requests.compat 5 | ~~~~~~~~~~~~~~~ 6 | 7 | This module handles import compatibility issues between Python 2 and 8 | Python 3. 9 | """ 10 | 11 | import chardet 12 | 13 | import sys 14 | 15 | # ------- 16 | # Pythons 17 | # ------- 18 | 19 | # Syntax sugar. 20 | _ver = sys.version_info 21 | 22 | #: Python 2.x? 23 | is_py2 = (_ver[0] == 2) 24 | 25 | #: Python 3.x? 26 | is_py3 = (_ver[0] == 3) 27 | 28 | try: 29 | import simplejson as json 30 | except ImportError: 31 | import json 32 | 33 | # --------- 34 | # Specifics 35 | # --------- 36 | 37 | if is_py2: 38 | from urllib import ( 39 | quote, unquote, quote_plus, unquote_plus, urlencode, getproxies, 40 | proxy_bypass, proxy_bypass_environment, getproxies_environment) 41 | from urlparse import urlparse, urlunparse, urljoin, urlsplit, urldefrag 42 | from urllib2 import parse_http_list 43 | import cookielib 44 | from Cookie import Morsel 45 | from StringIO import StringIO 46 | # Keep OrderedDict for backwards compatibility. 47 | from collections import Callable, Mapping, MutableMapping, OrderedDict 48 | 49 | 50 | builtin_str = str 51 | bytes = str 52 | str = unicode 53 | basestring = basestring 54 | numeric_types = (int, long, float) 55 | integer_types = (int, long) 56 | 57 | elif is_py3: 58 | from urllib.parse import urlparse, urlunparse, urljoin, urlsplit, urlencode, quote, unquote, quote_plus, unquote_plus, urldefrag 59 | from urllib.request import parse_http_list, getproxies, proxy_bypass, proxy_bypass_environment, getproxies_environment 60 | from http import cookiejar as cookielib 61 | from http.cookies import Morsel 62 | from io import StringIO 63 | # Keep OrderedDict for backwards compatibility. 64 | from collections import OrderedDict 65 | from collections.abc import Callable, Mapping, MutableMapping 66 | 67 | builtin_str = str 68 | str = str 69 | bytes = bytes 70 | basestring = (str, bytes) 71 | numeric_types = (int, float) 72 | integer_types = (int,) 73 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/requests/hooks.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | """ 4 | requests.hooks 5 | ~~~~~~~~~~~~~~ 6 | 7 | This module provides the capabilities for the Requests hooks system. 8 | 9 | Available hooks: 10 | 11 | ``response``: 12 | The response generated from a Request. 13 | """ 14 | HOOKS = ['response'] 15 | 16 | 17 | def default_hooks(): 18 | return {event: [] for event in HOOKS} 19 | 20 | # TODO: response is the only one 21 | 22 | 23 | def dispatch_hook(key, hooks, hook_data, **kwargs): 24 | """Dispatches a hook dictionary on a given piece of data.""" 25 | hooks = hooks or {} 26 | hooks = hooks.get(key) 27 | if hooks: 28 | if hasattr(hooks, '__call__'): 29 | hooks = [hooks] 30 | for hook in hooks: 31 | _hook_data = hook(hook_data, **kwargs) 32 | if _hook_data is not None: 33 | hook_data = _hook_data 34 | return hook_data 35 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/requests/packages.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | # This code exists for backwards compatibility reasons. 4 | # I don't like it either. Just look the other way. :) 5 | 6 | for package in ('urllib3', 'idna', 'chardet'): 7 | locals()[package] = __import__(package) 8 | # This traversal is apparently necessary such that the identities are 9 | # preserved (requests.packages.urllib3.* is urllib3.*) 10 | for mod in list(sys.modules): 11 | if mod == package or mod.startswith(package + '.'): 12 | sys.modules['requests.packages.' + mod] = sys.modules[mod] 13 | 14 | # Kinda cool, though, right? 15 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/setuptools-39.1.0-py3.8.egg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/setuptools-39.1.0-py3.8.egg -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/setuptools.pth: -------------------------------------------------------------------------------- 1 | ./setuptools-39.1.0-py3.8.egg 2 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3-1.26.2.dist-info/INSTALLER: -------------------------------------------------------------------------------- 1 | pip 2 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3-1.26.2.dist-info/LICENSE.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2008-2020 Andrey Petrov and contributors (see CONTRIBUTORS.txt) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3-1.26.2.dist-info/WHEEL: -------------------------------------------------------------------------------- 1 | Wheel-Version: 1.0 2 | Generator: bdist_wheel (0.35.1) 3 | Root-Is-Purelib: true 4 | Tag: py2-none-any 5 | Tag: py3-none-any 6 | 7 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3-1.26.2.dist-info/top_level.txt: -------------------------------------------------------------------------------- 1 | urllib3 2 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/__pycache__/_collections.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/__pycache__/_collections.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/__pycache__/_version.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/__pycache__/_version.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/__pycache__/connection.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/__pycache__/connection.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/__pycache__/connectionpool.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/__pycache__/connectionpool.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/__pycache__/exceptions.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/__pycache__/exceptions.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/__pycache__/fields.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/__pycache__/fields.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/__pycache__/filepost.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/__pycache__/filepost.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/__pycache__/poolmanager.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/__pycache__/poolmanager.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/__pycache__/request.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/__pycache__/request.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/__pycache__/response.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/__pycache__/response.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/_version.py: -------------------------------------------------------------------------------- 1 | # This file is protected via CODEOWNERS 2 | __version__ = "1.26.2" 3 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/contrib/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/contrib/__init__.py -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/contrib/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/contrib/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/contrib/__pycache__/_appengine_environ.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/contrib/__pycache__/_appengine_environ.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/contrib/__pycache__/appengine.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/contrib/__pycache__/appengine.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/contrib/__pycache__/ntlmpool.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/contrib/__pycache__/ntlmpool.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/contrib/__pycache__/pyopenssl.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/contrib/__pycache__/pyopenssl.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/contrib/__pycache__/securetransport.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/contrib/__pycache__/securetransport.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/contrib/__pycache__/socks.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/contrib/__pycache__/socks.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/contrib/_appengine_environ.py: -------------------------------------------------------------------------------- 1 | """ 2 | This module provides means to detect the App Engine environment. 3 | """ 4 | 5 | import os 6 | 7 | 8 | def is_appengine(): 9 | return is_local_appengine() or is_prod_appengine() 10 | 11 | 12 | def is_appengine_sandbox(): 13 | """Reports if the app is running in the first generation sandbox. 14 | 15 | The second generation runtimes are technically still in a sandbox, but it 16 | is much less restrictive, so generally you shouldn't need to check for it. 17 | see https://cloud.google.com/appengine/docs/standard/runtimes 18 | """ 19 | return is_appengine() and os.environ["APPENGINE_RUNTIME"] == "python27" 20 | 21 | 22 | def is_local_appengine(): 23 | return "APPENGINE_RUNTIME" in os.environ and os.environ.get( 24 | "SERVER_SOFTWARE", "" 25 | ).startswith("Development/") 26 | 27 | 28 | def is_prod_appengine(): 29 | return "APPENGINE_RUNTIME" in os.environ and os.environ.get( 30 | "SERVER_SOFTWARE", "" 31 | ).startswith("Google App Engine/") 32 | 33 | 34 | def is_prod_appengine_mvms(): 35 | """Deprecated.""" 36 | return False 37 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/contrib/_securetransport/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/contrib/_securetransport/__init__.py -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/packages/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | from . import ssl_match_hostname 4 | 5 | __all__ = ("ssl_match_hostname",) 6 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/packages/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/packages/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/packages/__pycache__/six.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/packages/__pycache__/six.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/packages/backports/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/packages/backports/__init__.py -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/packages/backports/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/packages/backports/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/packages/backports/__pycache__/makefile.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/packages/backports/__pycache__/makefile.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/packages/backports/makefile.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | backports.makefile 4 | ~~~~~~~~~~~~~~~~~~ 5 | 6 | Backports the Python 3 ``socket.makefile`` method for use with anything that 7 | wants to create a "fake" socket object. 8 | """ 9 | import io 10 | from socket import SocketIO 11 | 12 | 13 | def backport_makefile( 14 | self, mode="r", buffering=None, encoding=None, errors=None, newline=None 15 | ): 16 | """ 17 | Backport of ``socket.makefile`` from Python 3.5. 18 | """ 19 | if not set(mode) <= {"r", "w", "b"}: 20 | raise ValueError("invalid mode %r (only r, w, b allowed)" % (mode,)) 21 | writing = "w" in mode 22 | reading = "r" in mode or not writing 23 | assert reading or writing 24 | binary = "b" in mode 25 | rawmode = "" 26 | if reading: 27 | rawmode += "r" 28 | if writing: 29 | rawmode += "w" 30 | raw = SocketIO(self, rawmode) 31 | self._makefile_refs += 1 32 | if buffering is None: 33 | buffering = -1 34 | if buffering < 0: 35 | buffering = io.DEFAULT_BUFFER_SIZE 36 | if buffering == 0: 37 | if not binary: 38 | raise ValueError("unbuffered streams must be binary") 39 | return raw 40 | if reading and writing: 41 | buffer = io.BufferedRWPair(raw, raw, buffering) 42 | elif reading: 43 | buffer = io.BufferedReader(raw, buffering) 44 | else: 45 | assert writing 46 | buffer = io.BufferedWriter(raw, buffering) 47 | if binary: 48 | return buffer 49 | text = io.TextIOWrapper(buffer, encoding, errors, newline) 50 | text.mode = mode 51 | return text 52 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/packages/ssl_match_hostname/__init__.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | try: 4 | # Our match_hostname function is the same as 3.5's, so we only want to 5 | # import the match_hostname function if it's at least that good. 6 | if sys.version_info < (3, 5): 7 | raise ImportError("Fallback to vendored code") 8 | 9 | from ssl import CertificateError, match_hostname 10 | except ImportError: 11 | try: 12 | # Backport of the function from a pypi module 13 | from backports.ssl_match_hostname import ( # type: ignore 14 | CertificateError, 15 | match_hostname, 16 | ) 17 | except ImportError: 18 | # Our vendored copy 19 | from ._implementation import CertificateError, match_hostname # type: ignore 20 | 21 | # Not needed, but documenting what we provide. 22 | __all__ = ("CertificateError", "match_hostname") 23 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/util/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | # For backwards compatibility, provide imports that used to be here. 4 | from .connection import is_connection_dropped 5 | from .request import SKIP_HEADER, SKIPPABLE_HEADERS, make_headers 6 | from .response import is_fp_closed 7 | from .retry import Retry 8 | from .ssl_ import ( 9 | ALPN_PROTOCOLS, 10 | HAS_SNI, 11 | IS_PYOPENSSL, 12 | IS_SECURETRANSPORT, 13 | PROTOCOL_TLS, 14 | SSLContext, 15 | assert_fingerprint, 16 | resolve_cert_reqs, 17 | resolve_ssl_version, 18 | ssl_wrap_socket, 19 | ) 20 | from .timeout import Timeout, current_time 21 | from .url import Url, get_host, parse_url, split_first 22 | from .wait import wait_for_read, wait_for_write 23 | 24 | __all__ = ( 25 | "HAS_SNI", 26 | "IS_PYOPENSSL", 27 | "IS_SECURETRANSPORT", 28 | "SSLContext", 29 | "PROTOCOL_TLS", 30 | "ALPN_PROTOCOLS", 31 | "Retry", 32 | "Timeout", 33 | "Url", 34 | "assert_fingerprint", 35 | "current_time", 36 | "is_connection_dropped", 37 | "is_fp_closed", 38 | "get_host", 39 | "parse_url", 40 | "make_headers", 41 | "resolve_cert_reqs", 42 | "resolve_ssl_version", 43 | "split_first", 44 | "ssl_wrap_socket", 45 | "wait_for_read", 46 | "wait_for_write", 47 | "SKIP_HEADER", 48 | "SKIPPABLE_HEADERS", 49 | ) 50 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/util/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/util/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/util/__pycache__/connection.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/util/__pycache__/connection.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/util/__pycache__/proxy.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/util/__pycache__/proxy.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/util/__pycache__/queue.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/util/__pycache__/queue.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/util/__pycache__/request.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/util/__pycache__/request.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/util/__pycache__/response.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/util/__pycache__/response.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/util/__pycache__/retry.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/util/__pycache__/retry.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/util/__pycache__/ssl_.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/util/__pycache__/ssl_.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/util/__pycache__/ssltransport.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/util/__pycache__/ssltransport.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/util/__pycache__/timeout.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/util/__pycache__/timeout.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/util/__pycache__/url.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/util/__pycache__/url.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/util/__pycache__/wait.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/walker061/grid-futures-spot/037b7d0eb623f2229d255ebd206ed34c62d2ee67/venv/lib/python3.8/site-packages/urllib3/util/__pycache__/wait.cpython-38.pyc -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/util/proxy.py: -------------------------------------------------------------------------------- 1 | from .ssl_ import create_urllib3_context, resolve_cert_reqs, resolve_ssl_version 2 | 3 | 4 | def connection_requires_http_tunnel( 5 | proxy_url=None, proxy_config=None, destination_scheme=None 6 | ): 7 | """ 8 | Returns True if the connection requires an HTTP CONNECT through the proxy. 9 | 10 | :param URL proxy_url: 11 | URL of the proxy. 12 | :param ProxyConfig proxy_config: 13 | Proxy configuration from poolmanager.py 14 | :param str destination_scheme: 15 | The scheme of the destination. (i.e https, http, etc) 16 | """ 17 | # If we're not using a proxy, no way to use a tunnel. 18 | if proxy_url is None: 19 | return False 20 | 21 | # HTTP destinations never require tunneling, we always forward. 22 | if destination_scheme == "http": 23 | return False 24 | 25 | # Support for forwarding with HTTPS proxies and HTTPS destinations. 26 | if ( 27 | proxy_url.scheme == "https" 28 | and proxy_config 29 | and proxy_config.use_forwarding_for_https 30 | ): 31 | return False 32 | 33 | # Otherwise always use a tunnel. 34 | return True 35 | 36 | 37 | def create_proxy_ssl_context( 38 | ssl_version, cert_reqs, ca_certs=None, ca_cert_dir=None, ca_cert_data=None 39 | ): 40 | """ 41 | Generates a default proxy ssl context if one hasn't been provided by the 42 | user. 43 | """ 44 | ssl_context = create_urllib3_context( 45 | ssl_version=resolve_ssl_version(ssl_version), 46 | cert_reqs=resolve_cert_reqs(cert_reqs), 47 | ) 48 | if ( 49 | not ca_certs 50 | and not ca_cert_dir 51 | and not ca_cert_data 52 | and hasattr(ssl_context, "load_default_certs") 53 | ): 54 | ssl_context.load_default_certs() 55 | 56 | return ssl_context 57 | -------------------------------------------------------------------------------- /venv/lib/python3.8/site-packages/urllib3/util/queue.py: -------------------------------------------------------------------------------- 1 | import collections 2 | 3 | from ..packages import six 4 | from ..packages.six.moves import queue 5 | 6 | if six.PY2: 7 | # Queue is imported for side effects on MS Windows. See issue #229. 8 | import Queue as _unused_module_Queue # noqa: F401 9 | 10 | 11 | class LifoQueue(queue.Queue): 12 | def _init(self, _): 13 | self.queue = collections.deque() 14 | 15 | def _qsize(self, len=len): 16 | return len(self.queue) 17 | 18 | def _put(self, item): 19 | self.queue.append(item) 20 | 21 | def _get(self): 22 | return self.queue.pop() 23 | -------------------------------------------------------------------------------- /venv/pip-selfcheck.json: -------------------------------------------------------------------------------- 1 | {"last_check":"2020-12-03T06:46:18Z","pypi_version":"20.3"} -------------------------------------------------------------------------------- /venv/pyvenv.cfg: -------------------------------------------------------------------------------- 1 | home = /usr/local/bin 2 | include-system-site-packages = false 3 | version = 3.8.3 4 | --------------------------------------------------------------------------------