├── LICENSE ├── readme.md ├── src ├── .ipynb_checkpoints │ └── plot_acc_loss-checkpoint.ipynb ├── Common_utils │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-36.pyc │ │ ├── basic_module.cpython-36.pyc │ │ ├── basic_utils.cpython-36.pyc │ │ ├── model_evaluation.cpython-36.pyc │ │ └── model_training.cpython-36.pyc │ ├── basic_module.py │ ├── basic_utils.py │ ├── model_evaluation.py │ ├── model_training.py │ └── visualize_raw_feature_data.py ├── EEG_Emotion_Classifier_DEAP-master │ ├── .gitignore │ ├── Preprocess_Deap.ipynb │ ├── Readme.md │ └── Untitled.ipynb ├── GlobalConfig │ ├── __init__.py │ ├── exp_executor.py │ └── svm_classifier_config.py ├── Multimodal_Processor │ ├── __init__.py │ ├── process_mat.py │ └── signal_visualization.py ├── OYTX_Recog │ ├── Hierarchical_Attn.py │ ├── Hierarchical_Attn_With_Senti_Map.py │ ├── Hierarchical_Attn_With_Senti_Map_on_deap.py │ ├── __init__.py │ ├── __pycache__ │ │ └── Hierarchical_Attn.cpython-36.pyc │ └── deap_exps.py ├── Unimodal_Recognition │ ├── R2G-STNN.py │ ├── __init__.py │ ├── svm_classifier.py │ └── utils.py ├── __init__.py ├── baseline │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-36.pyc │ │ └── simpleDNN.cpython-36.pyc │ ├── simpleDNN.py │ ├── svm_classifier.py │ └── xgb_boost.py ├── data_set │ ├── .ipynb_checkpoints │ │ └── Untitled-checkpoint.ipynb │ ├── Untitled.ipynb │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-36.pyc │ │ ├── deap.cpython-36.pyc │ │ ├── deap_feature.cpython-36.pyc │ │ └── seed_iv.cpython-36.pyc │ ├── deap.py │ ├── deap_feature.py │ ├── seed.py │ └── seed_iv.py └── fundamental_models │ ├── BDAE.py │ ├── DBN.py │ ├── GaussianBernoulliRBM.py │ ├── Multimodal_RBM_Binary.py │ ├── RBM.py │ ├── __init__.py │ └── eeg_eye_BDAE.py └── venv ├── Lib ├── site-packages │ ├── easy-install.pth │ ├── pip-10.0.1-py3.6.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 │ ├── setuptools-39.1.0-py3.6.egg │ └── setuptools.pth └── tcl8.5 │ └── init.tcl ├── Scripts ├── Activate.ps1 ├── _asyncio.pyd ├── _bz2.pyd ├── _ctypes.pyd ├── _ctypes_test.pyd ├── _decimal.pyd ├── _elementtree.pyd ├── _hashlib.pyd ├── _lzma.pyd ├── _msi.pyd ├── _multiprocessing.pyd ├── _overlapped.pyd ├── _socket.pyd ├── _sqlite3.pyd ├── _ssl.pyd ├── _testbuffer.pyd ├── _testcapi.pyd ├── _testconsole.pyd ├── _testimportmultiple.pyd ├── _testmultiphase.pyd ├── _tkinter.pyd ├── activate.bat ├── api-ms-win-core-console-l1-1-0.dll ├── api-ms-win-core-datetime-l1-1-0.dll ├── api-ms-win-core-debug-l1-1-0.dll ├── api-ms-win-core-errorhandling-l1-1-0.dll ├── api-ms-win-core-file-l1-1-0.dll ├── api-ms-win-core-file-l1-2-0.dll ├── api-ms-win-core-file-l2-1-0.dll ├── api-ms-win-core-handle-l1-1-0.dll ├── api-ms-win-core-heap-l1-1-0.dll ├── api-ms-win-core-interlocked-l1-1-0.dll ├── api-ms-win-core-libraryloader-l1-1-0.dll ├── api-ms-win-core-localization-l1-2-0.dll ├── api-ms-win-core-memory-l1-1-0.dll ├── api-ms-win-core-namedpipe-l1-1-0.dll ├── api-ms-win-core-processenvironment-l1-1-0.dll ├── api-ms-win-core-processthreads-l1-1-0.dll ├── api-ms-win-core-processthreads-l1-1-1.dll ├── api-ms-win-core-profile-l1-1-0.dll ├── api-ms-win-core-rtlsupport-l1-1-0.dll ├── api-ms-win-core-string-l1-1-0.dll ├── api-ms-win-core-synch-l1-1-0.dll ├── api-ms-win-core-synch-l1-2-0.dll ├── api-ms-win-core-sysinfo-l1-1-0.dll ├── api-ms-win-core-timezone-l1-1-0.dll ├── api-ms-win-core-util-l1-1-0.dll ├── api-ms-win-crt-conio-l1-1-0.dll ├── api-ms-win-crt-convert-l1-1-0.dll ├── api-ms-win-crt-environment-l1-1-0.dll ├── api-ms-win-crt-filesystem-l1-1-0.dll ├── api-ms-win-crt-heap-l1-1-0.dll ├── api-ms-win-crt-locale-l1-1-0.dll ├── api-ms-win-crt-math-l1-1-0.dll ├── api-ms-win-crt-multibyte-l1-1-0.dll ├── api-ms-win-crt-private-l1-1-0.dll ├── api-ms-win-crt-process-l1-1-0.dll ├── api-ms-win-crt-runtime-l1-1-0.dll ├── api-ms-win-crt-stdio-l1-1-0.dll ├── api-ms-win-crt-string-l1-1-0.dll ├── api-ms-win-crt-time-l1-1-0.dll ├── api-ms-win-crt-utility-l1-1-0.dll ├── concrt140.dll ├── deactivate.bat ├── easy_install-3.6-script.py ├── easy_install-3.6.exe ├── easy_install-script.py ├── easy_install.exe ├── msvcp140.dll ├── pip-script.py ├── pip.exe ├── pip3-script.py ├── pip3.6-script.py ├── pip3.6.exe ├── pip3.exe ├── pyexpat.pyd ├── python.exe ├── python36.dll ├── pythoncom36.dll ├── pythonw.exe ├── pywintypes36.dll ├── select.pyd ├── sqlite3.dll ├── tcl86t.dll ├── tk86t.dll ├── ucrtbase.dll ├── unicodedata.pyd ├── vccorlib140.dll ├── vcomp140.dll ├── vcruntime140.dll ├── winsound.pyd ├── xlwings32.dll └── xlwings64.dll └── pyvenv.cfg /readme.md: -------------------------------------------------------------------------------- 1 | ###**the implementation of multimodal emotion recognizer —— CTCNet which is proposed in "Learning Regional-Level Feature Fusion and Sentiment-Region relevance: A Novel Coupled Three-Components Networks for EEG-based Multimodal Emotion Recognition."** 2 | 3 | **Note:** This primary version code mainly enclose the implementation of model, since the data used in our paper, we have no right to redistributed, you can‘t run this code directly. We are trying to clean up our experimental code. The final runnable version should be uploaded when our paper was accepted. -------------------------------------------------------------------------------- /src/Common_utils/__init__.py: -------------------------------------------------------------------------------- 1 | import sys 2 | sys.path.append('../') -------------------------------------------------------------------------------- /src/Common_utils/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/src/Common_utils/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /src/Common_utils/__pycache__/basic_module.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/src/Common_utils/__pycache__/basic_module.cpython-36.pyc -------------------------------------------------------------------------------- /src/Common_utils/__pycache__/basic_utils.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/src/Common_utils/__pycache__/basic_utils.cpython-36.pyc -------------------------------------------------------------------------------- /src/Common_utils/__pycache__/model_evaluation.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/src/Common_utils/__pycache__/model_evaluation.cpython-36.pyc -------------------------------------------------------------------------------- /src/Common_utils/__pycache__/model_training.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/src/Common_utils/__pycache__/model_training.cpython-36.pyc -------------------------------------------------------------------------------- /src/Common_utils/basic_module.py: -------------------------------------------------------------------------------- 1 | """ 2 | author: ouyangtianxiong 3 | date:2019/12/24 4 | des: this file contains basic neural network module that can be used as fundamental component 5 | """ 6 | import sys 7 | sys.path.append('../') 8 | import torch 9 | import torch.nn as nn 10 | from torch.nn.utils import weight_norm 11 | class Fusion(nn.Module): 12 | """ Crazy multi-modal fusion: negative squared difference minus relu'd sum 13 | """ 14 | 15 | def __init__(self): 16 | super().__init__() 17 | 18 | def forward(self, x, y): 19 | # found through grad student descent ;) 20 | return - (x - y) ** 2 + torch.relu(x + y) 21 | 22 | 23 | class FCNet(nn.Module): 24 | def __init__(self, in_size, out_size, activate=None, drop=0.0): 25 | super(FCNet, self).__init__() 26 | #self.lin = weight_norm(nn.Linear(in_size, out_size), dim=None) 27 | self.lin = nn.Linear(in_size, out_size) 28 | self.drop_value = drop 29 | self.drop = nn.Dropout(drop) 30 | 31 | # in case of using upper character by mistake 32 | self.activate = activate.lower() if (activate is not None) else None 33 | if activate == 'relu': 34 | self.ac_fn = nn.ReLU() 35 | elif activate == 'sigmoid': 36 | self.ac_fn = nn.Sigmoid() 37 | elif activate == 'tanh': 38 | self.ac_fn = nn.Tanh() 39 | 40 | def forward(self, x): 41 | if self.drop_value > 0: 42 | x = self.drop(x) 43 | 44 | x = self.lin(x) 45 | 46 | if self.activate is not None: 47 | x = self.ac_fn(x) 48 | return x 49 | -------------------------------------------------------------------------------- /src/EEG_Emotion_Classifier_DEAP-master/.gitignore: -------------------------------------------------------------------------------- 1 | .ipynb_checkpoints/ 2 | *.dat 3 | *.npy 4 | 5 | -------------------------------------------------------------------------------- /src/EEG_Emotion_Classifier_DEAP-master/Readme.md: -------------------------------------------------------------------------------- 1 | # EEG Classifier based on DEAP database 2 | 3 | ## This repo only include code to proceed DEAP data, no data from DEAP contained! 4 | 5 | For access of DEAP dataset, please sign EULA and send a request to DEAP team: http://www.eecs.qmul.ac.uk/mmv/datasets/deap/download.html 6 | 7 | ## Dependency 8 | * python >= 3.5 9 | * numpy 10 | * pyEEG: https://github.com/forrestbao/pyeeg, need manual fix of source code, refers to issue: https://github.com/forrestbao/pyeeg/issues/26 11 | * scikit-learn 12 | * tensorflow-gpu 13 | 14 | ## ERD/ERS analysis 15 | Fast Fourier Transformation: 16 | * Windows size = 2 sec 17 | * Windows step = 0.125 sec 18 | 19 | ## Model attempted 20 | * Support Vector Machine 21 | * Adaboost 22 | * Random Forest 23 | * Artificial neural network 24 | 25 | ## Best AC rate of Classification on Arousal, Valence, Domaince, Like dimension 26 | * Arousal/Not: 82.6% 27 | * Valence/Not: 83.6% 28 | * Domaince/Not: 81.9% 29 | * Like/Not: 85.1% 30 | -------------------------------------------------------------------------------- /src/GlobalConfig/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/src/GlobalConfig/__init__.py -------------------------------------------------------------------------------- /src/GlobalConfig/exp_executor.py: -------------------------------------------------------------------------------- 1 | """ 2 | author: ouyangtianxiong 3 | date: 2019/12/25 4 | des: implement some experiment executors 5 | """ 6 | class BasicExecutor: 7 | """ 8 | the base class of all executors 9 | """ 10 | def __init__(self, net_name, dataset_name, hyper_parameters): 11 | """ 12 | to execute a series experiment, model, data, and parameters is necessary 13 | :param net_name: the model training 14 | :param dataset_name: the dataset used 15 | :param hyper_parameters: hyper_parameters of training 16 | """ 17 | self.net_name = net_name 18 | self.dataset_name = dataset_name 19 | self.hyper_parameters = hyper_parameters 20 | @TODO 21 | def execute_one_session(self, session, mode): 22 | pass 23 | 24 | def execute(self): 25 | for mode in ['subject_dependent', 'subject_independent']: 26 | for i in range(1, 4): 27 | self.execute_one_session(session=i, mode=mode) -------------------------------------------------------------------------------- /src/GlobalConfig/svm_classifier_config.py: -------------------------------------------------------------------------------- 1 | class svm_classifier_config: 2 | def __init__(self): 3 | self.kernel = 'linear' 4 | self.normalization = 'maxmin' 5 | -------------------------------------------------------------------------------- /src/Multimodal_Processor/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/src/Multimodal_Processor/__init__.py -------------------------------------------------------------------------------- /src/Multimodal_Processor/signal_visualization.py: -------------------------------------------------------------------------------- 1 | from pyecharts.charts import Line 2 | from pyecharts import options as opts 3 | 4 | bar = ( 5 | Line() 6 | .add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]) 7 | .add_yaxis('商家A',[5, 20, 36, 10, 75, 90]) 8 | .set_global_opts(title_opts=opts.TitleOpts(title="主标题", subtitle="副标题")) 9 | ) 10 | 11 | bar.render() -------------------------------------------------------------------------------- /src/OYTX_Recog/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | author: ouyangtianxiong 3 | date: 2019/12/23 4 | des: this algorithm package implements my personal innovation for my master thesis 5 | """ 6 | __author__ = 'ouyangtianxiong.bupt.edu.cn' 7 | import sys 8 | sys.path.append('../') -------------------------------------------------------------------------------- /src/OYTX_Recog/__pycache__/Hierarchical_Attn.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/src/OYTX_Recog/__pycache__/Hierarchical_Attn.cpython-36.pyc -------------------------------------------------------------------------------- /src/Unimodal_Recognition/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | author: ouyangtianxiong 3 | date: 2019/11/20 4 | des: this algorithm package implements recognition model based on single modality 5 | """ -------------------------------------------------------------------------------- /src/Unimodal_Recognition/utils.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | def plot_confusion_by_heat_map(matrix, xaxis, yaxis, fig_name): 3 | """ 4 | drawing confusion matrix with heatmap 5 | :param matrix: confusion matrix 6 | :param xaxis: x axis label 7 | :param yaxis: y axis label 8 | :return: 9 | """ 10 | from pyecharts import options as opts 11 | from pyecharts.charts import HeatMap 12 | (row, col) = matrix.shape 13 | data = [] 14 | for i in range(row): 15 | for j in range(col): 16 | data.append([i, j, np.float32(matrix[i][j]).item()]) 17 | heat_map = ( 18 | HeatMap() 19 | .add_xaxis(xaxis) 20 | .add_yaxis('f1_score', yaxis, data) 21 | .set_global_opts( 22 | title_opts=opts.TitleOpts(title=fig_name), 23 | visualmap_opts=opts.VisualMapOpts(range_color=['#121122', 'rgba(3,4,5,0.4)', 'red']), 24 | ) 25 | ) 26 | heat_map.render(path='../chart/' + fig_name + '.html') -------------------------------------------------------------------------------- /src/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/src/__init__.py -------------------------------------------------------------------------------- /src/baseline/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | author: ouyangtianxiong 3 | date:2019/12/24 4 | des: this package implements some baseline 5 | """ 6 | import sys 7 | sys.path.append('../') 8 | from sklearn import svm 9 | from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier 10 | from sklearn.metrics import accuracy_score, confusion_matrix, classification_report 11 | from data_set.deap_feature import DEAP 12 | 13 | def get_svm_clf(): 14 | return svm.SVC() 15 | 16 | def get_rf_clf(): 17 | return RandomForestClassifier(n_estimators=512, n_jobs=6) 18 | 19 | def get_ab_clf(): 20 | return AdaBoostClassifier(n_estimators=512) 21 | def testing(model, test_X, test_Y): 22 | predict = model.predict(test_X) 23 | print("classification report:\n{}".format(classification_report(test_Y, predict))) 24 | print("accuracy score:\n{}".format(accuracy_score(test_Y, predict))) 25 | print("confusion matrix:\n{}".format(confusion_matrix(test_Y, predict))) 26 | 27 | 28 | if __name__ == '__main__': 29 | individual = 11 30 | nor_method = 0 31 | target = 4 32 | data = DEAP(individual, nor_method) 33 | train_X, train_Y = data.get_train_data() 34 | test_X, test_Y = data.get_test_data() 35 | model = get_rf_clf() 36 | model.fit(train_X, train_Y[:, target]) 37 | testing(model, test_X, test_Y[:, target]) 38 | -------------------------------------------------------------------------------- /src/baseline/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/src/baseline/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /src/baseline/__pycache__/simpleDNN.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/src/baseline/__pycache__/simpleDNN.cpython-36.pyc -------------------------------------------------------------------------------- /src/baseline/xgb_boost.py: -------------------------------------------------------------------------------- 1 | """ 2 | author: ouyangtianxiong 3 | date:2019/12/26 4 | des:implement a baseline using xgbboost for classification 5 | """ 6 | import sys 7 | sys.path.append('../') 8 | import os 9 | from sklearn.metrics import accuracy_score,confusion_matrix,classification_report 10 | import xgboost as xgb 11 | import numpy as np 12 | from xgboost import plot_importance 13 | from data_set.seed_iv import SEED_IV 14 | from data_set.deap_feature import DEAP 15 | 16 | 17 | # eeg = SEED_IV(session=1, individual=1, modal='concat', shuffle=False, balance=True, 18 | # normalization=1) 19 | eeg = DEAP() 20 | 21 | train_X, train_Y = eeg.get_train_data() 22 | test_X, test_Y = eeg.get_test_data() 23 | train_Y = train_Y[:, -1] 24 | test_Y = test_Y[:, -1] 25 | dtrain = xgb.DMatrix(train_X, train_Y) 26 | dtest = xgb.DMatrix(test_X) 27 | 28 | param = {'max_depth': 2, 'eta': 1, 'objective': 'multi:softmax'} 29 | 30 | evallist = [(dtest, 'eval'), (dtrain, 'train')] 31 | 32 | num_round = 4 33 | model = xgb.XGBClassifier(max_depth=5, learning_rate=0.01, n_estimators=160, silent=True, objective='multi:softmax') 34 | 35 | model.fit(train_X, train_Y) 36 | plot_importance(model) 37 | y_pred = model.predict(test_X) 38 | print("classification report:\n",classification_report(test_Y, y_pred)) 39 | print("confusion matrix:\n", confusion_matrix(test_Y, y_pred)) 40 | print("accuracy score\n", accuracy_score(test_Y, y_pred)) 41 | plot_importance(model) 42 | 43 | -------------------------------------------------------------------------------- /src/data_set/.ipynb_checkpoints/Untitled-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /src/data_set/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/src/data_set/__init__.py -------------------------------------------------------------------------------- /src/data_set/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/src/data_set/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /src/data_set/__pycache__/deap.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/src/data_set/__pycache__/deap.cpython-36.pyc -------------------------------------------------------------------------------- /src/data_set/__pycache__/deap_feature.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/src/data_set/__pycache__/deap_feature.cpython-36.pyc -------------------------------------------------------------------------------- /src/data_set/__pycache__/seed_iv.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/src/data_set/__pycache__/seed_iv.cpython-36.pyc -------------------------------------------------------------------------------- /src/fundamental_models/GaussianBernoulliRBM.py: -------------------------------------------------------------------------------- 1 | """ 2 | author: ouyangtianxiong 3 | date:19/12/04 4 | des:RBM With GaussianBernoulli 5 | """ 6 | from RBM import RBM 7 | import torch 8 | class GaussianBernoulliRBM(RBM): 9 | """ 10 | Visible later can assume real value 11 | Hidden layer assumes Binary values only 12 | """ 13 | def to_visible(self,x): 14 | """ 15 | this visible units follow gaussian distribution 16 | :param x: the torch tensor with shape = (n_samples, features) 17 | :return: X_prob the new constructed layers (probabilities) sample_X_prob - sample of new layer (Gibbs Sampling) 18 | """ 19 | X_prob = torch.matmul(x, self.W.transpose(0, 1)) 20 | X_prob = torch.add(X_prob, self.v_bias) 21 | sample_X_prob = X_prob + torch.randn(X_prob.shape) 22 | 23 | return X_prob, sample_X_prob 24 | -------------------------------------------------------------------------------- /src/fundamental_models/Multimodal_RBM_Binary.py: -------------------------------------------------------------------------------- 1 | from RBM import RBM 2 | import torch 3 | import torchvision 4 | from torchvision import transforms 5 | from torch.utils.data import Dataset, DataLoader 6 | import os 7 | import math 8 | import numpy as np 9 | import pickle 10 | import codecs 11 | class DATASET(Dataset): 12 | def __init__(self,x): 13 | self.data = x 14 | def __len__(self): 15 | return self.data.shape[0] 16 | def __getitem__(self, item): 17 | return self.data[item] 18 | 19 | 20 | with codecs.open('../../multimodal_feature_extracted/SEED_IV/1/fusion_feature.pk','rb') as f: 21 | DATA = pickle.load(f) 22 | 23 | indis = DATA.keys() 24 | data = DATA[list(indis)[1]] 25 | 26 | TRAIN = data[:17] 27 | TEST = data[17:] 28 | 29 | for i, item in enumerate(TRAIN): 30 | if i == 0: 31 | train = item 32 | else: 33 | train = np.vstack((train, item)) 34 | for i, item in enumerate(TEST): 35 | if i == 0: 36 | test = item 37 | else: 38 | test = np.vstack((test, item)) 39 | 40 | eeg_train_data = train[:, :310] 41 | eeg_test_data = test[:, :310] 42 | eye_train_data = train[:, 310:-1] 43 | eye_test_data = test[:, 310:-1] 44 | train_Y = train[:, -1] 45 | test_Y = test[:, -1] 46 | 47 | eeg_train_data = (eeg_train_data - eeg_train_data.min()) / (eeg_train_data.max() - eeg_train_data.min()) 48 | eeg_test_data = (eeg_test_data - eeg_test_data.min()) / (eeg_test_data.max() - eeg_test_data.min()) 49 | eye_train_data = (eye_train_data - eye_train_data.min()) / (eye_train_data.max() - eye_train_data.min()) 50 | eye_test_data = (eye_test_data - eye_test_data.mean()) / (eye_test_data.max() - eye_test_data.min()) 51 | 52 | # eeg_loader = DataLoader(dataset=DATASET(torch.Tensor(eeg_train_data).bernoulli()), batch_size=32, shuffle=True, num_workers=0) 53 | # eye_loader = DataLoader(dataset=DATASET(torch.Tensor(eye_train_data).bernoulli()), batch_size=32, shuffle=True, num_workers=0) 54 | 55 | eeg_loader = DataLoader(dataset=torch.utils.data.TensorDataset(torch.Tensor(eeg_train_data).bernoulli(),torch.Tensor(train_Y)), batch_size=32, shuffle=True, num_workers=0) 56 | eye_loader = DataLoader(dataset=torch.utils.data.TensorDataset(torch.Tensor(eye_train_data).bernoulli(),torch.Tensor(train_Y)), batch_size=32, shuffle=True, num_workers=0) 57 | 58 | visible__eeg_units = 310 59 | visible__eye_units = 31 60 | hidden_units = 50 61 | k = 2 62 | learning_rate = 0.001 63 | learning_rate_decay = True 64 | xavier_init = True 65 | increas_to_cd_k = False 66 | use_gpu = False 67 | 68 | rbm_eeg = RBM(visible__eeg_units, hidden_units, int(k), learning_rate, learning_rate_decay, xavier_init, increas_to_cd_k, use_gpu) 69 | rbm_eye = RBM(visible__eye_units, hidden_units, int(k), learning_rate, learning_rate_decay, xavier_init, increas_to_cd_k, use_gpu) 70 | 71 | epochs = 30 72 | batch_size = 32 73 | rbm_eeg.train(eeg_loader, epochs, batch_size) 74 | rbm_eye.train(eye_loader, epochs, batch_size) 75 | if not os.path.exists('../../saved_models/RBM'): 76 | os.makedirs('../../saved_models/RBM') 77 | torch.save(rbm_eeg, '../../saved_models/RBM/rbm_eeg') 78 | torch.save(rbm_eye, '../../saved_models/RBM/rbm_eye') 79 | 80 | 81 | -------------------------------------------------------------------------------- /src/fundamental_models/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/src/fundamental_models/__init__.py -------------------------------------------------------------------------------- /venv/Lib/site-packages/easy-install.pth: -------------------------------------------------------------------------------- 1 | ./setuptools-39.1.0-py3.6.egg 2 | ./pip-10.0.1-py3.6.egg 3 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.egg/EGG-INFO/PKG-INFO: -------------------------------------------------------------------------------- 1 | Metadata-Version: 2.1 2 | Name: pip 3 | Version: 10.0.1 4 | Summary: The PyPA recommended tool for installing Python packages. 5 | Home-page: https://pip.pypa.io/ 6 | Author: The pip developers 7 | Author-email: python-virtualenv@groups.google.com 8 | License: MIT 9 | Description: pip 10 | === 11 | 12 | The `PyPA recommended`_ tool for installing Python packages. 13 | 14 | .. image:: https://img.shields.io/pypi/v/pip.svg 15 | :target: https://pypi.org/project/pip/ 16 | 17 | .. image:: https://img.shields.io/travis/pypa/pip/master.svg 18 | :target: http://travis-ci.org/pypa/pip 19 | 20 | .. image:: https://img.shields.io/appveyor/ci/pypa/pip.svg 21 | :target: https://ci.appveyor.com/project/pypa/pip/history 22 | 23 | .. image:: https://readthedocs.org/projects/pip/badge/?version=latest 24 | :target: https://pip.pypa.io/en/latest 25 | 26 | * `Installation`_ 27 | * `Documentation`_ 28 | * `Changelog`_ 29 | * `GitHub Page`_ 30 | * `Issue Tracking`_ 31 | * `User mailing list`_ 32 | * `Dev mailing list`_ 33 | * User IRC: #pypa on Freenode. 34 | * Dev IRC: #pypa-dev on Freenode. 35 | 36 | Code of Conduct 37 | --------------- 38 | 39 | Everyone interacting in the pip project's codebases, issue trackers, chat 40 | rooms and mailing lists is expected to follow the `PyPA Code of Conduct`_. 41 | 42 | .. _PyPA recommended: https://packaging.python.org/en/latest/current/ 43 | .. _Installation: https://pip.pypa.io/en/stable/installing.html 44 | .. _Documentation: https://pip.pypa.io/en/stable/ 45 | .. _Changelog: https://pip.pypa.io/en/stable/news.html 46 | .. _GitHub Page: https://github.com/pypa/pip 47 | .. _Issue Tracking: https://github.com/pypa/pip/issues 48 | .. _User mailing list: http://groups.google.com/group/python-virtualenv 49 | .. _Dev mailing list: http://groups.google.com/group/pypa-dev 50 | .. _PyPA Code of Conduct: https://www.pypa.io/en/latest/code-of-conduct/ 51 | 52 | Keywords: easy_install distutils setuptools egg virtualenv 53 | Platform: UNKNOWN 54 | Classifier: Development Status :: 5 - Production/Stable 55 | Classifier: Intended Audience :: Developers 56 | Classifier: License :: OSI Approved :: MIT License 57 | Classifier: Topic :: Software Development :: Build Tools 58 | Classifier: Programming Language :: Python 59 | Classifier: Programming Language :: Python :: 2 60 | Classifier: Programming Language :: Python :: 2.7 61 | Classifier: Programming Language :: Python :: 3 62 | Classifier: Programming Language :: Python :: 3.3 63 | Classifier: Programming Language :: Python :: 3.4 64 | Classifier: Programming Language :: Python :: 3.5 65 | Classifier: Programming Language :: Python :: 3.6 66 | Classifier: Programming Language :: Python :: Implementation :: CPython 67 | Classifier: Programming Language :: Python :: Implementation :: PyPy 68 | Requires-Python: >=2.7,!=3.0.*,!=3.1.*,!=3.2.* 69 | Provides-Extra: testing 70 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.egg/EGG-INFO/dependency_links.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.egg/EGG-INFO/entry_points.txt: -------------------------------------------------------------------------------- 1 | [console_scripts] 2 | pip = pip._internal:main 3 | pip3 = pip._internal:main 4 | pip3.6 = pip._internal:main 5 | 6 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.egg/EGG-INFO/not-zip-safe: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.egg/EGG-INFO/top_level.txt: -------------------------------------------------------------------------------- 1 | pip 2 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.egg/pip/__init__.py: -------------------------------------------------------------------------------- 1 | __version__ = "10.0.1" 2 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.egg/pip/_internal/build_env.py: -------------------------------------------------------------------------------- 1 | """Build Environment used for isolation during sdist building 2 | """ 3 | 4 | import os 5 | from distutils.sysconfig import get_python_lib 6 | from sysconfig import get_paths 7 | 8 | from pip._internal.utils.temp_dir import TempDirectory 9 | 10 | 11 | class BuildEnvironment(object): 12 | """Creates and manages an isolated environment to install build deps 13 | """ 14 | 15 | def __init__(self, no_clean): 16 | self._temp_dir = TempDirectory(kind="build-env") 17 | self._no_clean = no_clean 18 | 19 | @property 20 | def path(self): 21 | return self._temp_dir.path 22 | 23 | def __enter__(self): 24 | self._temp_dir.create() 25 | 26 | self.save_path = os.environ.get('PATH', None) 27 | self.save_pythonpath = os.environ.get('PYTHONPATH', None) 28 | self.save_nousersite = os.environ.get('PYTHONNOUSERSITE', None) 29 | 30 | install_scheme = 'nt' if (os.name == 'nt') else 'posix_prefix' 31 | install_dirs = get_paths(install_scheme, vars={ 32 | 'base': self.path, 33 | 'platbase': self.path, 34 | }) 35 | 36 | scripts = install_dirs['scripts'] 37 | if self.save_path: 38 | os.environ['PATH'] = scripts + os.pathsep + self.save_path 39 | else: 40 | os.environ['PATH'] = scripts + os.pathsep + os.defpath 41 | 42 | # Note: prefer distutils' sysconfig to get the 43 | # library paths so PyPy is correctly supported. 44 | purelib = get_python_lib(plat_specific=0, prefix=self.path) 45 | platlib = get_python_lib(plat_specific=1, prefix=self.path) 46 | if purelib == platlib: 47 | lib_dirs = purelib 48 | else: 49 | lib_dirs = purelib + os.pathsep + platlib 50 | if self.save_pythonpath: 51 | os.environ['PYTHONPATH'] = lib_dirs + os.pathsep + \ 52 | self.save_pythonpath 53 | else: 54 | os.environ['PYTHONPATH'] = lib_dirs 55 | 56 | os.environ['PYTHONNOUSERSITE'] = '1' 57 | 58 | return self.path 59 | 60 | def __exit__(self, exc_type, exc_val, exc_tb): 61 | if not self._no_clean: 62 | self._temp_dir.cleanup() 63 | 64 | def restore_var(varname, old_value): 65 | if old_value is None: 66 | os.environ.pop(varname, None) 67 | else: 68 | os.environ[varname] = old_value 69 | 70 | restore_var('PATH', self.save_path) 71 | restore_var('PYTHONPATH', self.save_pythonpath) 72 | restore_var('PYTHONNOUSERSITE', self.save_nousersite) 73 | 74 | def cleanup(self): 75 | self._temp_dir.cleanup() 76 | 77 | 78 | class NoOpBuildEnvironment(BuildEnvironment): 79 | """A no-op drop-in replacement for BuildEnvironment 80 | """ 81 | 82 | def __init__(self, no_clean): 83 | pass 84 | 85 | def __enter__(self): 86 | pass 87 | 88 | def __exit__(self, exc_type, exc_val, exc_tb): 89 | pass 90 | 91 | def cleanup(self): 92 | pass 93 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.egg/pip/_internal/commands/completion.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | import sys 4 | import textwrap 5 | 6 | from pip._internal.basecommand import Command 7 | from pip._internal.utils.misc import get_prog 8 | 9 | BASE_COMPLETION = """ 10 | # pip %(shell)s completion start%(script)s# pip %(shell)s completion end 11 | """ 12 | 13 | COMPLETION_SCRIPTS = { 14 | 'bash': """ 15 | _pip_completion() 16 | { 17 | COMPREPLY=( $( COMP_WORDS="${COMP_WORDS[*]}" \\ 18 | COMP_CWORD=$COMP_CWORD \\ 19 | PIP_AUTO_COMPLETE=1 $1 ) ) 20 | } 21 | complete -o default -F _pip_completion %(prog)s 22 | """, 23 | 'zsh': """ 24 | function _pip_completion { 25 | local words cword 26 | read -Ac words 27 | read -cn cword 28 | reply=( $( COMP_WORDS="$words[*]" \\ 29 | COMP_CWORD=$(( cword-1 )) \\ 30 | PIP_AUTO_COMPLETE=1 $words[1] ) ) 31 | } 32 | compctl -K _pip_completion %(prog)s 33 | """, 34 | 'fish': """ 35 | function __fish_complete_pip 36 | set -lx COMP_WORDS (commandline -o) "" 37 | set -lx COMP_CWORD ( \\ 38 | math (contains -i -- (commandline -t) $COMP_WORDS)-1 \\ 39 | ) 40 | set -lx PIP_AUTO_COMPLETE 1 41 | string split \\ -- (eval $COMP_WORDS[1]) 42 | end 43 | complete -fa "(__fish_complete_pip)" -c %(prog)s 44 | """, 45 | } 46 | 47 | 48 | class CompletionCommand(Command): 49 | """A helper command to be used for command completion.""" 50 | name = 'completion' 51 | summary = 'A helper command used for command completion.' 52 | ignore_require_venv = True 53 | 54 | def __init__(self, *args, **kw): 55 | super(CompletionCommand, self).__init__(*args, **kw) 56 | 57 | cmd_opts = self.cmd_opts 58 | 59 | cmd_opts.add_option( 60 | '--bash', '-b', 61 | action='store_const', 62 | const='bash', 63 | dest='shell', 64 | help='Emit completion code for bash') 65 | cmd_opts.add_option( 66 | '--zsh', '-z', 67 | action='store_const', 68 | const='zsh', 69 | dest='shell', 70 | help='Emit completion code for zsh') 71 | cmd_opts.add_option( 72 | '--fish', '-f', 73 | action='store_const', 74 | const='fish', 75 | dest='shell', 76 | help='Emit completion code for fish') 77 | 78 | self.parser.insert_option_group(0, cmd_opts) 79 | 80 | def run(self, options, args): 81 | """Prints the completion code of the given shell""" 82 | shells = COMPLETION_SCRIPTS.keys() 83 | shell_options = ['--' + shell for shell in sorted(shells)] 84 | if options.shell in shells: 85 | script = textwrap.dedent( 86 | COMPLETION_SCRIPTS.get(options.shell, '') % { 87 | 'prog': get_prog(), 88 | } 89 | ) 90 | print(BASE_COMPLETION % {'script': script, 'shell': options.shell}) 91 | else: 92 | sys.stderr.write( 93 | 'ERROR: You must pass %s\n' % ' or '.join(shell_options) 94 | ) 95 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.egg/pip/_internal/commands/uninstall.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | from pip._vendor.packaging.utils import canonicalize_name 4 | 5 | from pip._internal.basecommand import Command 6 | from pip._internal.exceptions import InstallationError 7 | from pip._internal.req import InstallRequirement, parse_requirements 8 | 9 | 10 | class UninstallCommand(Command): 11 | """ 12 | Uninstall packages. 13 | 14 | pip is able to uninstall most installed packages. Known exceptions are: 15 | 16 | - Pure distutils packages installed with ``python setup.py install``, which 17 | leave behind no metadata to determine what files were installed. 18 | - Script wrappers installed by ``python setup.py develop``. 19 | """ 20 | name = 'uninstall' 21 | usage = """ 22 | %prog [options] ... 23 | %prog [options] -r ...""" 24 | summary = 'Uninstall packages.' 25 | 26 | def __init__(self, *args, **kw): 27 | super(UninstallCommand, self).__init__(*args, **kw) 28 | self.cmd_opts.add_option( 29 | '-r', '--requirement', 30 | dest='requirements', 31 | action='append', 32 | default=[], 33 | metavar='file', 34 | help='Uninstall all the packages listed in the given requirements ' 35 | 'file. This option can be used multiple times.', 36 | ) 37 | self.cmd_opts.add_option( 38 | '-y', '--yes', 39 | dest='yes', 40 | action='store_true', 41 | help="Don't ask for confirmation of uninstall deletions.") 42 | 43 | self.parser.insert_option_group(0, self.cmd_opts) 44 | 45 | def run(self, options, args): 46 | with self._build_session(options) as session: 47 | reqs_to_uninstall = {} 48 | for name in args: 49 | req = InstallRequirement.from_line( 50 | name, isolated=options.isolated_mode, 51 | ) 52 | if req.name: 53 | reqs_to_uninstall[canonicalize_name(req.name)] = req 54 | for filename in options.requirements: 55 | for req in parse_requirements( 56 | filename, 57 | options=options, 58 | session=session): 59 | if req.name: 60 | reqs_to_uninstall[canonicalize_name(req.name)] = req 61 | if not reqs_to_uninstall: 62 | raise InstallationError( 63 | 'You must give at least one requirement to %(name)s (see ' 64 | '"pip help %(name)s")' % dict(name=self.name) 65 | ) 66 | for req in reqs_to_uninstall.values(): 67 | uninstall_pathset = req.uninstall( 68 | auto_confirm=options.yes, verbose=self.verbosity > 0, 69 | ) 70 | if uninstall_pathset: 71 | uninstall_pathset.commit() 72 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.egg/pip/_internal/models/__init__.py: -------------------------------------------------------------------------------- 1 | from pip._internal.models.index import Index, PyPI 2 | 3 | 4 | __all__ = ["Index", "PyPI"] 5 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.egg/pip/_internal/operations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Lib/site-packages/pip-10.0.1-py3.6.egg/pip/_internal/operations/__init__.py -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.egg/pip/_internal/utils/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Lib/site-packages/pip-10.0.1-py3.6.egg/pip/_internal/utils/__init__.py -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.egg/pip/_internal/utils/deprecation.py: -------------------------------------------------------------------------------- 1 | """ 2 | A module that implements tooling to enable easy warnings about deprecations. 3 | """ 4 | from __future__ import absolute_import 5 | 6 | import logging 7 | import warnings 8 | 9 | from pip._internal.utils.typing import MYPY_CHECK_RUNNING 10 | 11 | if MYPY_CHECK_RUNNING: 12 | from typing import Any 13 | 14 | 15 | class PipDeprecationWarning(Warning): 16 | pass 17 | 18 | 19 | class Pending(object): 20 | pass 21 | 22 | 23 | class RemovedInPip11Warning(PipDeprecationWarning): 24 | pass 25 | 26 | 27 | class RemovedInPip12Warning(PipDeprecationWarning, Pending): 28 | pass 29 | 30 | 31 | # Warnings <-> Logging Integration 32 | 33 | 34 | _warnings_showwarning = None # type: Any 35 | 36 | 37 | def _showwarning(message, category, filename, lineno, file=None, line=None): 38 | if file is not None: 39 | if _warnings_showwarning is not None: 40 | _warnings_showwarning( 41 | message, category, filename, lineno, file, line, 42 | ) 43 | else: 44 | if issubclass(category, PipDeprecationWarning): 45 | # We use a specially named logger which will handle all of the 46 | # deprecation messages for pip. 47 | logger = logging.getLogger("pip._internal.deprecations") 48 | 49 | # This is purposely using the % formatter here instead of letting 50 | # the logging module handle the interpolation. This is because we 51 | # want it to appear as if someone typed this entire message out. 52 | log_message = "DEPRECATION: %s" % message 53 | 54 | # PipDeprecationWarnings that are Pending still have at least 2 55 | # versions to go until they are removed so they can just be 56 | # warnings. Otherwise, they will be removed in the very next 57 | # version of pip. We want these to be more obvious so we use the 58 | # ERROR logging level. 59 | if issubclass(category, Pending): 60 | logger.warning(log_message) 61 | else: 62 | logger.error(log_message) 63 | else: 64 | _warnings_showwarning( 65 | message, category, filename, lineno, file, line, 66 | ) 67 | 68 | 69 | def install_warning_logger(): 70 | # Enable our Deprecation Warnings 71 | warnings.simplefilter("default", PipDeprecationWarning, append=True) 72 | 73 | global _warnings_showwarning 74 | 75 | if _warnings_showwarning is None: 76 | _warnings_showwarning = warnings.showwarning 77 | warnings.showwarning = _showwarning 78 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.egg/pip/_internal/utils/hashes.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | import hashlib 4 | 5 | from pip._vendor.six import iteritems, iterkeys, itervalues 6 | 7 | from pip._internal.exceptions import ( 8 | HashMismatch, HashMissing, InstallationError, 9 | ) 10 | from pip._internal.utils.misc import read_chunks 11 | 12 | # The recommended hash algo of the moment. Change this whenever the state of 13 | # the art changes; it won't hurt backward compatibility. 14 | FAVORITE_HASH = 'sha256' 15 | 16 | 17 | # Names of hashlib algorithms allowed by the --hash option and ``pip hash`` 18 | # Currently, those are the ones at least as collision-resistant as sha256. 19 | STRONG_HASHES = ['sha256', 'sha384', 'sha512'] 20 | 21 | 22 | class Hashes(object): 23 | """A wrapper that builds multiple hashes at once and checks them against 24 | known-good values 25 | 26 | """ 27 | def __init__(self, hashes=None): 28 | """ 29 | :param hashes: A dict of algorithm names pointing to lists of allowed 30 | hex digests 31 | """ 32 | self._allowed = {} if hashes is None else hashes 33 | 34 | def check_against_chunks(self, chunks): 35 | """Check good hashes against ones built from iterable of chunks of 36 | data. 37 | 38 | Raise HashMismatch if none match. 39 | 40 | """ 41 | gots = {} 42 | for hash_name in iterkeys(self._allowed): 43 | try: 44 | gots[hash_name] = hashlib.new(hash_name) 45 | except (ValueError, TypeError): 46 | raise InstallationError('Unknown hash name: %s' % hash_name) 47 | 48 | for chunk in chunks: 49 | for hash in itervalues(gots): 50 | hash.update(chunk) 51 | 52 | for hash_name, got in iteritems(gots): 53 | if got.hexdigest() in self._allowed[hash_name]: 54 | return 55 | self._raise(gots) 56 | 57 | def _raise(self, gots): 58 | raise HashMismatch(self._allowed, gots) 59 | 60 | def check_against_file(self, file): 61 | """Check good hashes against a file-like object 62 | 63 | Raise HashMismatch if none match. 64 | 65 | """ 66 | return self.check_against_chunks(read_chunks(file)) 67 | 68 | def check_against_path(self, path): 69 | with open(path, 'rb') as file: 70 | return self.check_against_file(file) 71 | 72 | def __nonzero__(self): 73 | """Return whether I know any known-good hashes.""" 74 | return bool(self._allowed) 75 | 76 | def __bool__(self): 77 | return self.__nonzero__() 78 | 79 | 80 | class MissingHashes(Hashes): 81 | """A workalike for Hashes used when we're missing a hash for a requirement 82 | 83 | It computes the actual hash of the requirement and raises a HashMissing 84 | exception showing it to the user. 85 | 86 | """ 87 | def __init__(self): 88 | """Don't offer the ``hashes`` kwarg.""" 89 | # Pass our favorite hash in to generate a "gotten hash". With the 90 | # empty list, it will never match, so an error will always raise. 91 | super(MissingHashes, self).__init__(hashes={FAVORITE_HASH: []}) 92 | 93 | def _raise(self, gots): 94 | raise HashMissing(gots[FAVORITE_HASH].hexdigest()) 95 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.egg/pip/_internal/utils/packaging.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | import logging 4 | import sys 5 | from email.parser import FeedParser # type: ignore 6 | 7 | from pip._vendor import pkg_resources 8 | from pip._vendor.packaging import specifiers, version 9 | 10 | from pip._internal import exceptions 11 | 12 | logger = logging.getLogger(__name__) 13 | 14 | 15 | def check_requires_python(requires_python): 16 | """ 17 | Check if the python version in use match the `requires_python` specifier. 18 | 19 | Returns `True` if the version of python in use matches the requirement. 20 | Returns `False` if the version of python in use does not matches the 21 | requirement. 22 | 23 | Raises an InvalidSpecifier if `requires_python` have an invalid format. 24 | """ 25 | if requires_python is None: 26 | # The package provides no information 27 | return True 28 | requires_python_specifier = specifiers.SpecifierSet(requires_python) 29 | 30 | # We only use major.minor.micro 31 | python_version = version.parse('.'.join(map(str, sys.version_info[:3]))) 32 | return python_version in requires_python_specifier 33 | 34 | 35 | def get_metadata(dist): 36 | if (isinstance(dist, pkg_resources.DistInfoDistribution) and 37 | dist.has_metadata('METADATA')): 38 | return dist.get_metadata('METADATA') 39 | elif dist.has_metadata('PKG-INFO'): 40 | return dist.get_metadata('PKG-INFO') 41 | 42 | 43 | def check_dist_requires_python(dist): 44 | metadata = get_metadata(dist) 45 | feed_parser = FeedParser() 46 | feed_parser.feed(metadata) 47 | pkg_info_dict = feed_parser.close() 48 | requires_python = pkg_info_dict.get('Requires-Python') 49 | try: 50 | if not check_requires_python(requires_python): 51 | raise exceptions.UnsupportedPythonVersion( 52 | "%s requires Python '%s' but the running Python is %s" % ( 53 | dist.project_name, 54 | requires_python, 55 | '.'.join(map(str, sys.version_info[:3])),) 56 | ) 57 | except specifiers.InvalidSpecifier as e: 58 | logger.warning( 59 | "Package %s has an invalid Requires-Python entry %s - %s", 60 | dist.project_name, requires_python, e, 61 | ) 62 | return 63 | 64 | 65 | def get_installer(dist): 66 | if dist.has_metadata('INSTALLER'): 67 | for line in dist.get_metadata_lines('INSTALLER'): 68 | if line.strip(): 69 | return line.strip() 70 | return '' 71 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.egg/pip/_internal/utils/temp_dir.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | import logging 4 | import os.path 5 | import tempfile 6 | 7 | from pip._internal.utils.misc import rmtree 8 | 9 | logger = logging.getLogger(__name__) 10 | 11 | 12 | class TempDirectory(object): 13 | """Helper class that owns and cleans up a temporary directory. 14 | 15 | This class can be used as a context manager or as an OO representation of a 16 | temporary directory. 17 | 18 | Attributes: 19 | path 20 | Location to the created temporary directory or None 21 | delete 22 | Whether the directory should be deleted when exiting 23 | (when used as a contextmanager) 24 | 25 | Methods: 26 | create() 27 | Creates a temporary directory and stores its path in the path 28 | attribute. 29 | cleanup() 30 | Deletes the temporary directory and sets path attribute to None 31 | 32 | When used as a context manager, a temporary directory is created on 33 | entering the context and, if the delete attribute is True, on exiting the 34 | context the created directory is deleted. 35 | """ 36 | 37 | def __init__(self, path=None, delete=None, kind="temp"): 38 | super(TempDirectory, self).__init__() 39 | 40 | if path is None and delete is None: 41 | # If we were not given an explicit directory, and we were not given 42 | # an explicit delete option, then we'll default to deleting. 43 | delete = True 44 | 45 | self.path = path 46 | self.delete = delete 47 | self.kind = kind 48 | 49 | def __repr__(self): 50 | return "<{} {!r}>".format(self.__class__.__name__, self.path) 51 | 52 | def __enter__(self): 53 | self.create() 54 | return self 55 | 56 | def __exit__(self, exc, value, tb): 57 | if self.delete: 58 | self.cleanup() 59 | 60 | def create(self): 61 | """Create a temporary directory and store it's path in self.path 62 | """ 63 | if self.path is not None: 64 | logger.debug( 65 | "Skipped creation of temporary directory: {}".format(self.path) 66 | ) 67 | return 68 | # We realpath here because some systems have their default tmpdir 69 | # symlinked to another directory. This tends to confuse build 70 | # scripts, so we canonicalize the path by traversing potential 71 | # symlinks here. 72 | self.path = os.path.realpath( 73 | tempfile.mkdtemp(prefix="pip-{}-".format(self.kind)) 74 | ) 75 | logger.debug("Created temporary directory: {}".format(self.path)) 76 | 77 | def cleanup(self): 78 | """Remove the temporary directory created and reset state 79 | """ 80 | if self.path is not None and os.path.exists(self.path): 81 | rmtree(self.path) 82 | self.path = None 83 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.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.Common_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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/cachecontrol/caches/__init__.py: -------------------------------------------------------------------------------- 1 | from .file_cache import FileCache # noqa 2 | from .redis_cache import RedisCache # noqa 3 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/cachecontrol/filewrapper.py: -------------------------------------------------------------------------------- 1 | from io import BytesIO 2 | 3 | 4 | class CallbackFileWrapper(object): 5 | """ 6 | Small wrapper around a fp object which will tee everything read into a 7 | buffer, and when that file is closed it will execute a callback with the 8 | contents of that buffer. 9 | 10 | All attributes are proxied to the underlying file object. 11 | 12 | This class uses members with a double underscore (__) leading prefix so as 13 | not to accidentally shadow an attribute. 14 | """ 15 | 16 | def __init__(self, fp, callback): 17 | self.__buf = BytesIO() 18 | self.__fp = fp 19 | self.__callback = callback 20 | 21 | def __getattr__(self, name): 22 | # The vaguaries of garbage collection means that self.__fp is 23 | # not always set. By using __getattribute__ and the private 24 | # name[0] allows looking up the attribute value and raising an 25 | # AttributeError when it doesn't exist. This stop thigns from 26 | # infinitely recursing calls to getattr in the case where 27 | # self.__fp hasn't been set. 28 | # 29 | # [0] https://docs.python.org/2/reference/expressions.html#atom-identifiers 30 | fp = self.__getattribute__('_CallbackFileWrapper__fp') 31 | return getattr(fp, name) 32 | 33 | def __is_fp_closed(self): 34 | try: 35 | return self.__fp.fp is None 36 | except AttributeError: 37 | pass 38 | 39 | try: 40 | return self.__fp.closed 41 | except AttributeError: 42 | pass 43 | 44 | # We just don't cache it then. 45 | # TODO: Add some logging here... 46 | return False 47 | 48 | def _close(self): 49 | if self.__callback: 50 | self.__callback(self.__buf.getvalue()) 51 | 52 | # We assign this to None here, because otherwise we can get into 53 | # really tricky problems where the CPython interpreter dead locks 54 | # because the callback is holding a reference to something which 55 | # has a __del__ method. Setting this to None breaks the cycle 56 | # and allows the garbage collector to do it's thing normally. 57 | self.__callback = None 58 | 59 | def read(self, amt=None): 60 | data = self.__fp.read(amt) 61 | self.__buf.write(data) 62 | if self.__is_fp_closed(): 63 | self._close() 64 | 65 | return data 66 | 67 | def _safe_read(self, amt): 68 | data = self.__fp._safe_read(amt) 69 | if amt == 2 and data == b'\r\n': 70 | # urllib executes this read to toss the CRLF at the end 71 | # of the chunk. 72 | return data 73 | 74 | self.__buf.write(data) 75 | if self.__is_fp_closed(): 76 | self._close() 77 | 78 | return data 79 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/certifi/__init__.py: -------------------------------------------------------------------------------- 1 | from .core import where, old_where 2 | 3 | __version__ = "2018.01.18" 4 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/certifi/__main__.py: -------------------------------------------------------------------------------- 1 | from certifi import where 2 | print(where()) 3 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/chardet/cli/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/chardet/cli/chardetect.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | """ 3 | Script which takes one or more file paths and reports on their detected 4 | encodings 5 | 6 | Example:: 7 | 8 | % chardetect somefile someotherfile 9 | somefile: windows-1252 with confidence 0.5 10 | someotherfile: ascii with confidence 1.0 11 | 12 | If no paths are provided, it takes its input from stdin. 13 | 14 | """ 15 | 16 | from __future__ import absolute_import, print_function, unicode_literals 17 | 18 | import argparse 19 | import sys 20 | 21 | from pip._vendor.chardet import __version__ 22 | from pip._vendor.chardet.compat import PY2 23 | from pip._vendor.chardet.universaldetector import UniversalDetector 24 | 25 | 26 | def description_of(lines, name='stdin'): 27 | """ 28 | Return a string describing the probable encoding of a file or 29 | list of strings. 30 | 31 | :param lines: The lines to get the encoding of. 32 | :type lines: Iterable of bytes 33 | :param name: Name of file or collection of lines 34 | :type name: str 35 | """ 36 | u = UniversalDetector() 37 | for line in lines: 38 | line = bytearray(line) 39 | u.feed(line) 40 | # shortcut out of the loop to save reading further - particularly useful if we read a BOM. 41 | if u.done: 42 | break 43 | u.close() 44 | result = u.result 45 | if PY2: 46 | name = name.decode(sys.getfilesystemencoding(), 'ignore') 47 | if result['encoding']: 48 | return '{0}: {1} with confidence {2}'.format(name, result['encoding'], 49 | result['confidence']) 50 | else: 51 | return '{0}: no result'.format(name) 52 | 53 | 54 | def main(argv=None): 55 | """ 56 | Handles command line arguments and gets things started. 57 | 58 | :param argv: List of arguments, as if specified on the command-line. 59 | If None, ``sys.argv[1:]`` is used instead. 60 | :type argv: list of str 61 | """ 62 | # Get command line arguments 63 | parser = argparse.ArgumentParser( 64 | description="Takes one or more file paths and reports their detected \ 65 | encodings") 66 | parser.add_argument('input', 67 | help='File whose encoding we would like to determine. \ 68 | (default: stdin)', 69 | type=argparse.FileType('rb'), nargs='*', 70 | default=[sys.stdin if PY2 else sys.stdin.buffer]) 71 | parser.add_argument('--version', action='version', 72 | version='%(prog)s {0}'.format(__version__)) 73 | args = parser.parse_args(argv) 74 | 75 | for f in args.input: 76 | if f.isatty(): 77 | print("You are running chardetect interactively. Press " + 78 | "CTRL-D twice at the start of a blank line to signal the " + 79 | "end of your input. If you want help, run chardetect " + 80 | "--help\n", file=sys.stderr) 81 | print(description_of(f, f.name)) 82 | 83 | 84 | if __name__ == '__main__': 85 | main() 86 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/chardet/utf8prober.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 .charsetprober import CharSetProber 29 | from .enums import ProbingState, MachineState 30 | from .codingstatemachine import CodingStateMachine 31 | from .mbcssm import UTF8_SM_MODEL 32 | 33 | 34 | 35 | class UTF8Prober(CharSetProber): 36 | ONE_CHAR_PROB = 0.5 37 | 38 | def __init__(self): 39 | super(UTF8Prober, self).__init__() 40 | self.coding_sm = CodingStateMachine(UTF8_SM_MODEL) 41 | self._num_mb_chars = None 42 | self.reset() 43 | 44 | def reset(self): 45 | super(UTF8Prober, self).reset() 46 | self.coding_sm.reset() 47 | self._num_mb_chars = 0 48 | 49 | @property 50 | def charset_name(self): 51 | return "utf-8" 52 | 53 | @property 54 | def language(self): 55 | return "" 56 | 57 | def feed(self, byte_str): 58 | for c in byte_str: 59 | coding_state = self.coding_sm.next_state(c) 60 | if coding_state == MachineState.ERROR: 61 | self._state = ProbingState.NOT_ME 62 | break 63 | elif coding_state == MachineState.ITS_ME: 64 | self._state = ProbingState.FOUND_IT 65 | break 66 | elif coding_state == MachineState.START: 67 | if self.coding_sm.get_current_charlen() >= 2: 68 | self._num_mb_chars += 1 69 | 70 | if self.state == ProbingState.DETECTING: 71 | if self.get_confidence() > self.SHORTCUT_THRESHOLD: 72 | self._state = ProbingState.FOUND_IT 73 | 74 | return self.state 75 | 76 | def get_confidence(self): 77 | unlike = 0.99 78 | if self._num_mb_chars < 6: 79 | unlike *= self.ONE_CHAR_PROB ** self._num_mb_chars 80 | return 1.0 - unlike 81 | else: 82 | return unlike 83 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/colorama/ansi.py: -------------------------------------------------------------------------------- 1 | # Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. 2 | ''' 3 | This module generates ANSI character codes to printing colors to terminals. 4 | See: http://en.wikipedia.org/wiki/ANSI_escape_code 5 | ''' 6 | 7 | CSI = '\033[' 8 | OSC = '\033]' 9 | BEL = '\007' 10 | 11 | 12 | def code_to_chars(code): 13 | return CSI + str(code) + 'm' 14 | 15 | def set_title(title): 16 | return OSC + '2;' + title + BEL 17 | 18 | def clear_screen(mode=2): 19 | return CSI + str(mode) + 'J' 20 | 21 | def clear_line(mode=2): 22 | return CSI + str(mode) + 'K' 23 | 24 | 25 | class AnsiCodes(object): 26 | def __init__(self): 27 | # the subclasses declare class attributes which are numbers. 28 | # Upon instantiation we define instance attributes, which are the same 29 | # as the class attributes but wrapped with the ANSI escape sequence 30 | for name in dir(self): 31 | if not name.startswith('_'): 32 | value = getattr(self, name) 33 | setattr(self, name, code_to_chars(value)) 34 | 35 | 36 | class AnsiCursor(object): 37 | def UP(self, n=1): 38 | return CSI + str(n) + 'A' 39 | def DOWN(self, n=1): 40 | return CSI + str(n) + 'B' 41 | def FORWARD(self, n=1): 42 | return CSI + str(n) + 'C' 43 | def BACK(self, n=1): 44 | return CSI + str(n) + 'D' 45 | def POS(self, x=1, y=1): 46 | return CSI + str(y) + ';' + str(x) + 'H' 47 | 48 | 49 | class AnsiFore(AnsiCodes): 50 | BLACK = 30 51 | RED = 31 52 | GREEN = 32 53 | YELLOW = 33 54 | BLUE = 34 55 | MAGENTA = 35 56 | CYAN = 36 57 | WHITE = 37 58 | RESET = 39 59 | 60 | # These are fairly well supported, but not part of the standard. 61 | LIGHTBLACK_EX = 90 62 | LIGHTRED_EX = 91 63 | LIGHTGREEN_EX = 92 64 | LIGHTYELLOW_EX = 93 65 | LIGHTBLUE_EX = 94 66 | LIGHTMAGENTA_EX = 95 67 | LIGHTCYAN_EX = 96 68 | LIGHTWHITE_EX = 97 69 | 70 | 71 | class AnsiBack(AnsiCodes): 72 | BLACK = 40 73 | RED = 41 74 | GREEN = 42 75 | YELLOW = 43 76 | BLUE = 44 77 | MAGENTA = 45 78 | CYAN = 46 79 | WHITE = 47 80 | RESET = 49 81 | 82 | # These are fairly well supported, but not part of the standard. 83 | LIGHTBLACK_EX = 100 84 | LIGHTRED_EX = 101 85 | LIGHTGREEN_EX = 102 86 | LIGHTYELLOW_EX = 103 87 | LIGHTBLUE_EX = 104 88 | LIGHTMAGENTA_EX = 105 89 | LIGHTCYAN_EX = 106 90 | LIGHTWHITE_EX = 107 91 | 92 | 93 | class AnsiStyle(AnsiCodes): 94 | BRIGHT = 1 95 | DIM = 2 96 | NORMAL = 22 97 | RESET_ALL = 0 98 | 99 | Fore = AnsiFore() 100 | Back = AnsiBack() 101 | Style = AnsiStyle() 102 | Cursor = AnsiCursor() 103 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/distlib/_backport/sysconfig.cfg: -------------------------------------------------------------------------------- 1 | [posix_prefix] 2 | # Configuration directories. Some of these come straight out of the 3 | # configure script. They are for implementing the other variables, not to 4 | # be used directly in [resource_locations]. 5 | confdir = /etc 6 | datadir = /usr/share 7 | libdir = /usr/lib 8 | statedir = /var 9 | # User resource directory 10 | local = ~/.local/{distribution.name} 11 | 12 | stdlib = {base}/lib/python{py_version_short} 13 | platstdlib = {platbase}/lib/python{py_version_short} 14 | purelib = {base}/lib/python{py_version_short}/site-packages 15 | platlib = {platbase}/lib/python{py_version_short}/site-packages 16 | include = {base}/include/python{py_version_short}{abiflags} 17 | platinclude = {platbase}/include/python{py_version_short}{abiflags} 18 | data = {base} 19 | 20 | [posix_home] 21 | stdlib = {base}/lib/python 22 | platstdlib = {base}/lib/python 23 | purelib = {base}/lib/python 24 | platlib = {base}/lib/python 25 | include = {base}/include/python 26 | platinclude = {base}/include/python 27 | scripts = {base}/bin 28 | data = {base} 29 | 30 | [nt] 31 | stdlib = {base}/Lib 32 | platstdlib = {base}/Lib 33 | purelib = {base}/Lib/site-packages 34 | platlib = {base}/Lib/site-packages 35 | include = {base}/Include 36 | platinclude = {base}/Include 37 | scripts = {base}/Scripts 38 | data = {base} 39 | 40 | [os2] 41 | stdlib = {base}/Lib 42 | platstdlib = {base}/Lib 43 | purelib = {base}/Lib/site-packages 44 | platlib = {base}/Lib/site-packages 45 | include = {base}/Include 46 | platinclude = {base}/Include 47 | scripts = {base}/Scripts 48 | data = {base} 49 | 50 | [os2_home] 51 | stdlib = {userbase}/lib/python{py_version_short} 52 | platstdlib = {userbase}/lib/python{py_version_short} 53 | purelib = {userbase}/lib/python{py_version_short}/site-packages 54 | platlib = {userbase}/lib/python{py_version_short}/site-packages 55 | include = {userbase}/include/python{py_version_short} 56 | scripts = {userbase}/bin 57 | data = {userbase} 58 | 59 | [nt_user] 60 | stdlib = {userbase}/Python{py_version_nodot} 61 | platstdlib = {userbase}/Python{py_version_nodot} 62 | purelib = {userbase}/Python{py_version_nodot}/site-packages 63 | platlib = {userbase}/Python{py_version_nodot}/site-packages 64 | include = {userbase}/Python{py_version_nodot}/Include 65 | scripts = {userbase}/Scripts 66 | data = {userbase} 67 | 68 | [posix_user] 69 | stdlib = {userbase}/lib/python{py_version_short} 70 | platstdlib = {userbase}/lib/python{py_version_short} 71 | purelib = {userbase}/lib/python{py_version_short}/site-packages 72 | platlib = {userbase}/lib/python{py_version_short}/site-packages 73 | include = {userbase}/include/python{py_version_short} 74 | scripts = {userbase}/bin 75 | data = {userbase} 76 | 77 | [osx_framework_user] 78 | stdlib = {userbase}/lib/python 79 | platstdlib = {userbase}/lib/python 80 | purelib = {userbase}/lib/python/site-packages 81 | platlib = {userbase}/lib/python/site-packages 82 | include = {userbase}/include 83 | scripts = {userbase}/bin 84 | data = {userbase} 85 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/distlib/t32.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Lib/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/distlib/t32.exe -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/distlib/t64.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Lib/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/distlib/t64.exe -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/distlib/w32.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Lib/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/distlib/w32.exe -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/distlib/w64.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Lib/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/distlib/w64.exe -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/html5lib/filters/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Lib/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/html5lib/filters/__init__.py -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/html5lib/filters/inject_meta_charset.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import, division, unicode_literals 2 | 3 | from . import base 4 | 5 | 6 | class Filter(base.Filter): 7 | """Injects ```` tag into head of document""" 8 | def __init__(self, source, encoding): 9 | """Creates a Filter 10 | 11 | :arg source: the source token stream 12 | 13 | :arg encoding: the encoding to set 14 | 15 | """ 16 | base.Filter.__init__(self, source) 17 | self.encoding = encoding 18 | 19 | def __iter__(self): 20 | state = "pre_head" 21 | meta_found = (self.encoding is None) 22 | pending = [] 23 | 24 | for token in base.Filter.__iter__(self): 25 | type = token["type"] 26 | if type == "StartTag": 27 | if token["name"].lower() == "head": 28 | state = "in_head" 29 | 30 | elif type == "EmptyTag": 31 | if token["name"].lower() == "meta": 32 | # replace charset with actual encoding 33 | has_http_equiv_content_type = False 34 | for (namespace, name), value in token["data"].items(): 35 | if namespace is not None: 36 | continue 37 | elif name.lower() == 'charset': 38 | token["data"][(namespace, name)] = self.encoding 39 | meta_found = True 40 | break 41 | elif name == 'http-equiv' and value.lower() == 'content-type': 42 | has_http_equiv_content_type = True 43 | else: 44 | if has_http_equiv_content_type and (None, "content") in token["data"]: 45 | token["data"][(None, "content")] = 'text/html; charset=%s' % self.encoding 46 | meta_found = True 47 | 48 | elif token["name"].lower() == "head" and not meta_found: 49 | # insert meta into empty head 50 | yield {"type": "StartTag", "name": "head", 51 | "data": token["data"]} 52 | yield {"type": "EmptyTag", "name": "meta", 53 | "data": {(None, "charset"): self.encoding}} 54 | yield {"type": "EndTag", "name": "head"} 55 | meta_found = True 56 | continue 57 | 58 | elif type == "EndTag": 59 | if token["name"].lower() == "head" and pending: 60 | # insert meta into head (if necessary) and flush pending queue 61 | yield pending.pop(0) 62 | if not meta_found: 63 | yield {"type": "EmptyTag", "name": "meta", 64 | "data": {(None, "charset"): self.encoding}} 65 | while pending: 66 | yield pending.pop(0) 67 | meta_found = True 68 | state = "post_head" 69 | 70 | if state == "in_head": 71 | pending.append(token) 72 | else: 73 | yield token 74 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/html5lib/treewalkers/genshi.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import, division, unicode_literals 2 | 3 | from genshi.core import QName 4 | from genshi.core import START, END, XML_NAMESPACE, DOCTYPE, TEXT 5 | from genshi.core import START_NS, END_NS, START_CDATA, END_CDATA, PI, COMMENT 6 | 7 | from . import base 8 | 9 | from ..constants import voidElements, namespaces 10 | 11 | 12 | class TreeWalker(base.TreeWalker): 13 | def __iter__(self): 14 | # Buffer the events so we can pass in the following one 15 | previous = None 16 | for event in self.tree: 17 | if previous is not None: 18 | for token in self.tokens(previous, event): 19 | yield token 20 | previous = event 21 | 22 | # Don't forget the final event! 23 | if previous is not None: 24 | for token in self.tokens(previous, None): 25 | yield token 26 | 27 | def tokens(self, event, next): 28 | kind, data, _ = event 29 | if kind == START: 30 | tag, attribs = data 31 | name = tag.localname 32 | namespace = tag.namespace 33 | converted_attribs = {} 34 | for k, v in attribs: 35 | if isinstance(k, QName): 36 | converted_attribs[(k.namespace, k.localname)] = v 37 | else: 38 | converted_attribs[(None, k)] = v 39 | 40 | if namespace == namespaces["html"] and name in voidElements: 41 | for token in self.emptyTag(namespace, name, converted_attribs, 42 | not next or next[0] != END or 43 | next[1] != tag): 44 | yield token 45 | else: 46 | yield self.startTag(namespace, name, converted_attribs) 47 | 48 | elif kind == END: 49 | name = data.localname 50 | namespace = data.namespace 51 | if namespace != namespaces["html"] or name not in voidElements: 52 | yield self.endTag(namespace, name) 53 | 54 | elif kind == COMMENT: 55 | yield self.comment(data) 56 | 57 | elif kind == TEXT: 58 | for token in self.text(data): 59 | yield token 60 | 61 | elif kind == DOCTYPE: 62 | yield self.doctype(*data) 63 | 64 | elif kind in (XML_NAMESPACE, DOCTYPE, START_NS, END_NS, 65 | START_CDATA, END_CDATA, PI): 66 | pass 67 | 68 | else: 69 | yield self.unknown(kind) 70 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/idna/__init__.py: -------------------------------------------------------------------------------- 1 | from .package_data import __version__ 2 | from .core import * 3 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/idna/package_data.py: -------------------------------------------------------------------------------- 1 | __version__ = '2.6' 2 | 3 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/lockfile/linklockfile.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | import time 4 | import os 5 | 6 | from . import (LockBase, LockFailed, NotLocked, NotMyLock, LockTimeout, 7 | AlreadyLocked) 8 | 9 | 10 | class LinkLockFile(LockBase): 11 | """Lock access to a file using atomic property of link(2). 12 | 13 | >>> lock = LinkLockFile('somefile') 14 | >>> lock = LinkLockFile('somefile', threaded=False) 15 | """ 16 | 17 | def acquire(self, timeout=None): 18 | try: 19 | open(self.unique_name, "wb").close() 20 | except IOError: 21 | raise LockFailed("failed to create %s" % self.unique_name) 22 | 23 | timeout = timeout if timeout is not None else self.timeout 24 | end_time = time.time() 25 | if timeout is not None and timeout > 0: 26 | end_time += timeout 27 | 28 | while True: 29 | # Try and create a hard link to it. 30 | try: 31 | os.link(self.unique_name, self.lock_file) 32 | except OSError: 33 | # Link creation failed. Maybe we've double-locked? 34 | nlinks = os.stat(self.unique_name).st_nlink 35 | if nlinks == 2: 36 | # The original link plus the one I created == 2. We're 37 | # good to go. 38 | return 39 | else: 40 | # Otherwise the lock creation failed. 41 | if timeout is not None and time.time() > end_time: 42 | os.unlink(self.unique_name) 43 | if timeout > 0: 44 | raise LockTimeout("Timeout waiting to acquire" 45 | " lock for %s" % 46 | self.path) 47 | else: 48 | raise AlreadyLocked("%s is already locked" % 49 | self.path) 50 | time.sleep(timeout is not None and timeout / 10 or 0.1) 51 | else: 52 | # Link creation succeeded. We're good to go. 53 | return 54 | 55 | def release(self): 56 | if not self.is_locked(): 57 | raise NotLocked("%s is not locked" % self.path) 58 | elif not os.path.exists(self.unique_name): 59 | raise NotMyLock("%s is locked, but not by me" % self.path) 60 | os.unlink(self.unique_name) 61 | os.unlink(self.lock_file) 62 | 63 | def is_locked(self): 64 | return os.path.exists(self.lock_file) 65 | 66 | def i_am_locking(self): 67 | return (self.is_locked() and 68 | os.path.exists(self.unique_name) and 69 | os.stat(self.unique_name).st_nlink == 2) 70 | 71 | def break_lock(self): 72 | if os.path.exists(self.lock_file): 73 | os.unlink(self.lock_file) 74 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/lockfile/symlinklockfile.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | import os 4 | import time 5 | 6 | from . import (LockBase, NotLocked, NotMyLock, LockTimeout, 7 | AlreadyLocked) 8 | 9 | 10 | class SymlinkLockFile(LockBase): 11 | """Lock access to a file using symlink(2).""" 12 | 13 | def __init__(self, path, threaded=True, timeout=None): 14 | # super(SymlinkLockFile).__init(...) 15 | LockBase.__init__(self, path, threaded, timeout) 16 | # split it back! 17 | self.unique_name = os.path.split(self.unique_name)[1] 18 | 19 | def acquire(self, timeout=None): 20 | # Hopefully unnecessary for symlink. 21 | # try: 22 | # open(self.unique_name, "wb").close() 23 | # except IOError: 24 | # raise LockFailed("failed to create %s" % self.unique_name) 25 | timeout = timeout if timeout is not None else self.timeout 26 | end_time = time.time() 27 | if timeout is not None and timeout > 0: 28 | end_time += timeout 29 | 30 | while True: 31 | # Try and create a symbolic link to it. 32 | try: 33 | os.symlink(self.unique_name, self.lock_file) 34 | except OSError: 35 | # Link creation failed. Maybe we've double-locked? 36 | if self.i_am_locking(): 37 | # Linked to out unique name. Proceed. 38 | return 39 | else: 40 | # Otherwise the lock creation failed. 41 | if timeout is not None and time.time() > end_time: 42 | if timeout > 0: 43 | raise LockTimeout("Timeout waiting to acquire" 44 | " lock for %s" % 45 | self.path) 46 | else: 47 | raise AlreadyLocked("%s is already locked" % 48 | self.path) 49 | time.sleep(timeout / 10 if timeout is not None else 0.1) 50 | else: 51 | # Link creation succeeded. We're good to go. 52 | return 53 | 54 | def release(self): 55 | if not self.is_locked(): 56 | raise NotLocked("%s is not locked" % self.path) 57 | elif not self.i_am_locking(): 58 | raise NotMyLock("%s is locked, but not by me" % self.path) 59 | os.unlink(self.lock_file) 60 | 61 | def is_locked(self): 62 | return os.path.islink(self.lock_file) 63 | 64 | def i_am_locking(self): 65 | return (os.path.islink(self.lock_file) 66 | and os.readlink(self.lock_file) == self.unique_name) 67 | 68 | def break_lock(self): 69 | if os.path.islink(self.lock_file): # exists && link 70 | os.unlink(self.lock_file) 71 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/msgpack/_version.py: -------------------------------------------------------------------------------- 1 | version = (0, 5, 6) 2 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/progress/bar.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 Progress 19 | from .helpers import WritelnMixin 20 | 21 | 22 | class Bar(WritelnMixin, Progress): 23 | width = 32 24 | message = '' 25 | suffix = '%(index)d/%(max)d' 26 | bar_prefix = ' |' 27 | bar_suffix = '| ' 28 | empty_fill = ' ' 29 | fill = '#' 30 | hide_cursor = True 31 | 32 | def update(self): 33 | filled_length = int(self.width * self.progress) 34 | empty_length = self.width - filled_length 35 | 36 | message = self.message % self 37 | bar = self.fill * filled_length 38 | empty = self.empty_fill * empty_length 39 | suffix = self.suffix % self 40 | line = ''.join([message, self.bar_prefix, bar, empty, self.bar_suffix, 41 | suffix]) 42 | self.writeln(line) 43 | 44 | 45 | class ChargingBar(Bar): 46 | suffix = '%(percent)d%%' 47 | bar_prefix = ' ' 48 | bar_suffix = ' ' 49 | empty_fill = '∙' 50 | fill = '█' 51 | 52 | 53 | class FillingSquaresBar(ChargingBar): 54 | empty_fill = '▢' 55 | fill = '▣' 56 | 57 | 58 | class FillingCirclesBar(ChargingBar): 59 | empty_fill = '◯' 60 | fill = '◉' 61 | 62 | 63 | class IncrementalBar(Bar): 64 | phases = (' ', '▏', '▎', '▍', '▌', '▋', '▊', '▉', '█') 65 | 66 | def update(self): 67 | nphases = len(self.phases) 68 | filled_len = self.width * self.progress 69 | nfull = int(filled_len) # Number of full chars 70 | phase = int((filled_len - nfull) * nphases) # Phase of last char 71 | nempty = self.width - nfull # Number of empty chars 72 | 73 | message = self.message % self 74 | bar = self.phases[-1] * nfull 75 | current = self.phases[phase] if phase > 0 else '' 76 | empty = self.empty_fill * max(0, nempty - len(current)) 77 | suffix = self.suffix % self 78 | line = ''.join([message, self.bar_prefix, bar, current, empty, 79 | self.bar_suffix, suffix]) 80 | self.writeln(line) 81 | 82 | 83 | class PixelBar(IncrementalBar): 84 | phases = ('⡀', '⡄', '⡆', '⡇', '⣇', '⣧', '⣷', '⣿') 85 | 86 | 87 | class ShadyBar(IncrementalBar): 88 | phases = (' ', '░', '▒', '▓', '█') 89 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/progress/helpers.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2012 Giorgos Verigakis 2 | # 3 | # Permission to use, copy, modify, and distribute this software for any 4 | # purpose with or without fee is hereby granted, provided that the above 5 | # copyright notice and this permission notice appear in all copies. 6 | # 7 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 8 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 9 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 10 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 11 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 12 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 13 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 14 | 15 | from __future__ import print_function 16 | 17 | 18 | HIDE_CURSOR = '\x1b[?25l' 19 | SHOW_CURSOR = '\x1b[?25h' 20 | 21 | 22 | class WriteMixin(object): 23 | hide_cursor = False 24 | 25 | def __init__(self, message=None, **kwargs): 26 | super(WriteMixin, self).__init__(**kwargs) 27 | self._width = 0 28 | if message: 29 | self.message = message 30 | 31 | if self.file.isatty(): 32 | if self.hide_cursor: 33 | print(HIDE_CURSOR, end='', file=self.file) 34 | print(self.message, end='', file=self.file) 35 | self.file.flush() 36 | 37 | def write(self, s): 38 | if self.file.isatty(): 39 | b = '\b' * self._width 40 | c = s.ljust(self._width) 41 | print(b + c, end='', file=self.file) 42 | self._width = max(self._width, len(s)) 43 | self.file.flush() 44 | 45 | def finish(self): 46 | if self.file.isatty() and self.hide_cursor: 47 | print(SHOW_CURSOR, end='', file=self.file) 48 | 49 | 50 | class WritelnMixin(object): 51 | hide_cursor = False 52 | 53 | def __init__(self, message=None, **kwargs): 54 | super(WritelnMixin, self).__init__(**kwargs) 55 | if message: 56 | self.message = message 57 | 58 | if self.file.isatty() and self.hide_cursor: 59 | print(HIDE_CURSOR, end='', file=self.file) 60 | 61 | def clearln(self): 62 | if self.file.isatty(): 63 | print('\r\x1b[K', end='', file=self.file) 64 | 65 | def writeln(self, line): 66 | if self.file.isatty(): 67 | self.clearln() 68 | print(line, end='', file=self.file) 69 | self.file.flush() 70 | 71 | def finish(self): 72 | if self.file.isatty(): 73 | print(file=self.file) 74 | if self.hide_cursor: 75 | print(SHOW_CURSOR, end='', file=self.file) 76 | 77 | 78 | from signal import signal, SIGINT 79 | from sys import exit 80 | 81 | 82 | class SigIntMixin(object): 83 | """Registers a signal handler that calls finish on SIGINT""" 84 | 85 | def __init__(self, *args, **kwargs): 86 | super(SigIntMixin, self).__init__(*args, **kwargs) 87 | signal(SIGINT, self._sigint_handler) 88 | 89 | def _sigint_handler(self, signum, frame): 90 | self.finish() 91 | exit(0) 92 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/urllib3/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | urllib3 - Thread-safe connection pooling and re-using. 3 | """ 4 | 5 | from __future__ import absolute_import 6 | import warnings 7 | 8 | from .connectionpool import ( 9 | HTTPConnectionPool, 10 | HTTPSConnectionPool, 11 | connection_from_url 12 | ) 13 | 14 | from . import exceptions 15 | from .filepost import encode_multipart_formdata 16 | from .poolmanager import PoolManager, ProxyManager, proxy_from_url 17 | from .response import HTTPResponse 18 | from .util.request import make_headers 19 | from .util.url import get_host 20 | from .util.timeout import Timeout 21 | from .util.retry import Retry 22 | 23 | 24 | # Set default logging handler to avoid "No handler found" warnings. 25 | import logging 26 | try: # Python 2.7+ 27 | from logging import NullHandler 28 | except ImportError: 29 | class NullHandler(logging.Handler): 30 | def emit(self, record): 31 | pass 32 | 33 | __author__ = 'Andrey Petrov (andrey.petrov@shazow.net)' 34 | __license__ = 'MIT' 35 | __version__ = '1.22' 36 | 37 | __all__ = ( 38 | 'HTTPConnectionPool', 39 | 'HTTPSConnectionPool', 40 | 'PoolManager', 41 | 'ProxyManager', 42 | 'HTTPResponse', 43 | 'Retry', 44 | 'Timeout', 45 | 'add_stderr_logger', 46 | 'connection_from_url', 47 | 'disable_warnings', 48 | 'encode_multipart_formdata', 49 | 'get_host', 50 | 'make_headers', 51 | 'proxy_from_url', 52 | ) 53 | 54 | logging.getLogger(__name__).addHandler(NullHandler()) 55 | 56 | 57 | def add_stderr_logger(level=logging.DEBUG): 58 | """ 59 | Helper for quickly adding a StreamHandler to the logger. Useful for 60 | debugging. 61 | 62 | Returns the handler after adding it. 63 | """ 64 | # This method needs to be in this __init__.py to get the __name__ correct 65 | # even if urllib3 is vendored within another package. 66 | logger = logging.getLogger(__name__) 67 | handler = logging.StreamHandler() 68 | handler.setFormatter(logging.Formatter('%(asctime)s %(levelname)s %(message)s')) 69 | logger.addHandler(handler) 70 | logger.setLevel(level) 71 | logger.debug('Added a stderr logging handler to logger: %s', __name__) 72 | return handler 73 | 74 | 75 | # ... Clean up. 76 | del NullHandler 77 | 78 | 79 | # All warning filters *must* be appended unless you're really certain that they 80 | # shouldn't be: otherwise, it's very hard for users to use most Python 81 | # mechanisms to silence them. 82 | # SecurityWarning's always go off by default. 83 | warnings.simplefilter('always', exceptions.SecurityWarning, append=True) 84 | # SubjectAltNameWarning's should go off once per host 85 | warnings.simplefilter('default', exceptions.SubjectAltNameWarning, append=True) 86 | # InsecurePlatformWarning's don't vary between requests, so we keep it default. 87 | warnings.simplefilter('default', exceptions.InsecurePlatformWarning, 88 | append=True) 89 | # SNIMissingWarnings should go off only once. 90 | warnings.simplefilter('default', exceptions.SNIMissingWarning, append=True) 91 | 92 | 93 | def disable_warnings(category=exceptions.HTTPWarning): 94 | """ 95 | Helper for quickly disabling all urllib3 warnings. 96 | """ 97 | warnings.simplefilter('ignore', category) 98 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/urllib3/contrib/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Lib/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/urllib3/contrib/__init__.py -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/urllib3/contrib/_securetransport/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Lib/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/urllib3/contrib/_securetransport/__init__.py -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/urllib3/filepost.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | import codecs 3 | 4 | from uuid import uuid4 5 | from io import BytesIO 6 | 7 | from .packages import six 8 | from .packages.six import b 9 | from .fields import RequestField 10 | 11 | writer = codecs.lookup('utf-8')[3] 12 | 13 | 14 | def choose_boundary(): 15 | """ 16 | Our embarrassingly-simple replacement for mimetools.choose_boundary. 17 | """ 18 | return uuid4().hex 19 | 20 | 21 | def iter_field_objects(fields): 22 | """ 23 | Iterate over fields. 24 | 25 | Supports list of (k, v) tuples and dicts, and lists of 26 | :class:`~urllib3.fields.RequestField`. 27 | 28 | """ 29 | if isinstance(fields, dict): 30 | i = six.iteritems(fields) 31 | else: 32 | i = iter(fields) 33 | 34 | for field in i: 35 | if isinstance(field, RequestField): 36 | yield field 37 | else: 38 | yield RequestField.from_tuples(*field) 39 | 40 | 41 | def iter_fields(fields): 42 | """ 43 | .. deprecated:: 1.6 44 | 45 | Iterate over fields. 46 | 47 | The addition of :class:`~urllib3.fields.RequestField` makes this function 48 | obsolete. Instead, use :func:`iter_field_objects`, which returns 49 | :class:`~urllib3.fields.RequestField` objects. 50 | 51 | Supports list of (k, v) tuples and dicts. 52 | """ 53 | if isinstance(fields, dict): 54 | return ((k, v) for k, v in six.iteritems(fields)) 55 | 56 | return ((k, v) for k, v in fields) 57 | 58 | 59 | def encode_multipart_formdata(fields, boundary=None): 60 | """ 61 | Encode a dictionary of ``fields`` using the multipart/form-data MIME format. 62 | 63 | :param fields: 64 | Dictionary of fields or list of (key, :class:`~urllib3.fields.RequestField`). 65 | 66 | :param boundary: 67 | If not specified, then a random boundary will be generated using 68 | :func:`mimetools.choose_boundary`. 69 | """ 70 | body = BytesIO() 71 | if boundary is None: 72 | boundary = choose_boundary() 73 | 74 | for field in iter_field_objects(fields): 75 | body.write(b('--%s\r\n' % (boundary))) 76 | 77 | writer(body).write(field.render_headers()) 78 | data = field.data 79 | 80 | if isinstance(data, int): 81 | data = str(data) # Backwards compatibility 82 | 83 | if isinstance(data, six.text_type): 84 | writer(body).write(data) 85 | else: 86 | body.write(data) 87 | 88 | body.write(b'\r\n') 89 | 90 | body.write(b('--%s--\r\n' % (boundary))) 91 | 92 | content_type = str('multipart/form-data; boundary=%s' % boundary) 93 | 94 | return body.getvalue(), content_type 95 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/urllib3/packages/backports/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Lib/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/urllib3/packages/backports/__init__.py -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.egg/pip/_vendor/urllib3/util/response.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | from ..packages.six.moves import http_client as httplib 3 | 4 | from ..exceptions import HeaderParsingError 5 | 6 | 7 | def is_fp_closed(obj): 8 | """ 9 | Checks whether a given file-like object is closed. 10 | 11 | :param obj: 12 | The file-like object to check. 13 | """ 14 | 15 | try: 16 | # Check `isclosed()` first, in case Python3 doesn't set `closed`. 17 | # GH Issue #928 18 | return obj.isclosed() 19 | except AttributeError: 20 | pass 21 | 22 | try: 23 | # Check via the official file-like-object way. 24 | return obj.closed 25 | except AttributeError: 26 | pass 27 | 28 | try: 29 | # Check if the object is a container for another file-like object that 30 | # gets released on exhaustion (e.g. HTTPResponse). 31 | return obj.fp is None 32 | except AttributeError: 33 | pass 34 | 35 | raise ValueError("Unable to determine whether fp is closed.") 36 | 37 | 38 | def assert_header_parsing(headers): 39 | """ 40 | Asserts whether all headers have been successfully parsed. 41 | Extracts encountered errors from the result of parsing headers. 42 | 43 | Only works on Python 3. 44 | 45 | :param headers: Headers to verify. 46 | :type headers: `httplib.HTTPMessage`. 47 | 48 | :raises urllib3.exceptions.HeaderParsingError: 49 | If parsing errors are found. 50 | """ 51 | 52 | # This will fail silently if we pass in the wrong kind of parameter. 53 | # To make debugging easier add an explicit check. 54 | if not isinstance(headers, httplib.HTTPMessage): 55 | raise TypeError('expected httplib.Message, got {0}.'.format( 56 | type(headers))) 57 | 58 | defects = getattr(headers, 'defects', None) 59 | get_payload = getattr(headers, 'get_payload', None) 60 | 61 | unparsed_data = None 62 | if get_payload: # Platform-specific: Python 3. 63 | unparsed_data = get_payload() 64 | 65 | if defects or unparsed_data: 66 | raise HeaderParsingError(defects=defects, unparsed_data=unparsed_data) 67 | 68 | 69 | def is_response_to_head(response): 70 | """ 71 | Checks whether the request of a response has been a HEAD-request. 72 | Handles the quirks of AppEngine. 73 | 74 | :param conn: 75 | :type conn: :class:`httplib.HTTPResponse` 76 | """ 77 | # FIXME: Can we do this somehow without accessing private httplib _method? 78 | method = response._method 79 | if isinstance(method, int): # Platform-specific: Appengine 80 | return method == 3 81 | return method.upper() == 'HEAD' 82 | -------------------------------------------------------------------------------- /venv/Lib/site-packages/pip-10.0.1-py3.6.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/site-packages/pip-10.0.1-py3.6.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/site-packages/setuptools-39.1.0-py3.6.egg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Lib/site-packages/setuptools-39.1.0-py3.6.egg -------------------------------------------------------------------------------- /venv/Lib/site-packages/setuptools.pth: -------------------------------------------------------------------------------- 1 | ./setuptools-39.1.0-py3.6.egg 2 | -------------------------------------------------------------------------------- /venv/Scripts/Activate.ps1: -------------------------------------------------------------------------------- 1 | function global:deactivate ([switch]$NonDestructive) { 2 | # Revert to original values 3 | if (Test-Path function:_OLD_VIRTUAL_PROMPT) { 4 | copy-item function:_OLD_VIRTUAL_PROMPT function:prompt 5 | remove-item function:_OLD_VIRTUAL_PROMPT 6 | } 7 | 8 | if (Test-Path env:_OLD_VIRTUAL_PYTHONHOME) { 9 | copy-item env:_OLD_VIRTUAL_PYTHONHOME env:PYTHONHOME 10 | remove-item env:_OLD_VIRTUAL_PYTHONHOME 11 | } 12 | 13 | if (Test-Path env:_OLD_VIRTUAL_PATH) { 14 | copy-item env:_OLD_VIRTUAL_PATH env:PATH 15 | remove-item env:_OLD_VIRTUAL_PATH 16 | } 17 | 18 | if (Test-Path env:VIRTUAL_ENV) { 19 | remove-item env:VIRTUAL_ENV 20 | } 21 | 22 | if (!$NonDestructive) { 23 | # Self destruct! 24 | remove-item function:deactivate 25 | } 26 | } 27 | 28 | deactivate -nondestructive 29 | 30 | $env:VIRTUAL_ENV="D:\workPlace\PyCharm_workplace\FacialExpressionRecgnition\venv" 31 | 32 | # Set the prompt to include the env name 33 | # Make sure _OLD_VIRTUAL_PROMPT is global 34 | function global:_OLD_VIRTUAL_PROMPT {""} 35 | copy-item function:prompt function:_OLD_VIRTUAL_PROMPT 36 | function global:prompt { 37 | Write-Host -NoNewline -ForegroundColor Green '(venv) ' 38 | _OLD_VIRTUAL_PROMPT 39 | } 40 | 41 | # Clear PYTHONHOME 42 | if (Test-Path env:PYTHONHOME) { 43 | copy-item env:PYTHONHOME env:_OLD_VIRTUAL_PYTHONHOME 44 | remove-item env:PYTHONHOME 45 | } 46 | 47 | # Add the venv to the PATH 48 | copy-item env:PATH env:_OLD_VIRTUAL_PATH 49 | $env:PATH = "$env:VIRTUAL_ENV\Scripts;$env:PATH" 50 | -------------------------------------------------------------------------------- /venv/Scripts/_asyncio.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/_asyncio.pyd -------------------------------------------------------------------------------- /venv/Scripts/_bz2.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/_bz2.pyd -------------------------------------------------------------------------------- /venv/Scripts/_ctypes.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/_ctypes.pyd -------------------------------------------------------------------------------- /venv/Scripts/_ctypes_test.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/_ctypes_test.pyd -------------------------------------------------------------------------------- /venv/Scripts/_decimal.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/_decimal.pyd -------------------------------------------------------------------------------- /venv/Scripts/_elementtree.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/_elementtree.pyd -------------------------------------------------------------------------------- /venv/Scripts/_hashlib.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/_hashlib.pyd -------------------------------------------------------------------------------- /venv/Scripts/_lzma.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/_lzma.pyd -------------------------------------------------------------------------------- /venv/Scripts/_msi.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/_msi.pyd -------------------------------------------------------------------------------- /venv/Scripts/_multiprocessing.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/_multiprocessing.pyd -------------------------------------------------------------------------------- /venv/Scripts/_overlapped.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/_overlapped.pyd -------------------------------------------------------------------------------- /venv/Scripts/_socket.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/_socket.pyd -------------------------------------------------------------------------------- /venv/Scripts/_sqlite3.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/_sqlite3.pyd -------------------------------------------------------------------------------- /venv/Scripts/_ssl.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/_ssl.pyd -------------------------------------------------------------------------------- /venv/Scripts/_testbuffer.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/_testbuffer.pyd -------------------------------------------------------------------------------- /venv/Scripts/_testcapi.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/_testcapi.pyd -------------------------------------------------------------------------------- /venv/Scripts/_testconsole.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/_testconsole.pyd -------------------------------------------------------------------------------- /venv/Scripts/_testimportmultiple.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/_testimportmultiple.pyd -------------------------------------------------------------------------------- /venv/Scripts/_testmultiphase.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/_testmultiphase.pyd -------------------------------------------------------------------------------- /venv/Scripts/_tkinter.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/_tkinter.pyd -------------------------------------------------------------------------------- /venv/Scripts/activate.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | set "VIRTUAL_ENV=D:\workPlace\PyCharm_workplace\FacialExpressionRecgnition\venv" 3 | 4 | if not defined PROMPT ( 5 | set "PROMPT=$P$G" 6 | ) 7 | 8 | if defined _OLD_VIRTUAL_PROMPT ( 9 | set "PROMPT=%_OLD_VIRTUAL_PROMPT%" 10 | ) 11 | 12 | if defined _OLD_VIRTUAL_PYTHONHOME ( 13 | set "PYTHONHOME=%_OLD_VIRTUAL_PYTHONHOME%" 14 | ) 15 | 16 | set "_OLD_VIRTUAL_PROMPT=%PROMPT%" 17 | set "PROMPT=(venv) %PROMPT%" 18 | 19 | if defined PYTHONHOME ( 20 | set "_OLD_VIRTUAL_PYTHONHOME=%PYTHONHOME%" 21 | set PYTHONHOME= 22 | ) 23 | 24 | if defined _OLD_VIRTUAL_PATH ( 25 | set "PATH=%_OLD_VIRTUAL_PATH%" 26 | ) else ( 27 | set "_OLD_VIRTUAL_PATH=%PATH%" 28 | ) 29 | 30 | set "PATH=%VIRTUAL_ENV%\Scripts;%PATH%" 31 | 32 | :END 33 | -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-core-console-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-core-console-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-core-datetime-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-core-datetime-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-core-debug-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-core-debug-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-core-errorhandling-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-core-errorhandling-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-core-file-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-core-file-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-core-file-l1-2-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-core-file-l1-2-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-core-file-l2-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-core-file-l2-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-core-handle-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-core-handle-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-core-heap-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-core-heap-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-core-interlocked-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-core-interlocked-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-core-libraryloader-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-core-libraryloader-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-core-localization-l1-2-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-core-localization-l1-2-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-core-memory-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-core-memory-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-core-namedpipe-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-core-namedpipe-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-core-processenvironment-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-core-processenvironment-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-core-processthreads-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-core-processthreads-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-core-processthreads-l1-1-1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-core-processthreads-l1-1-1.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-core-profile-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-core-profile-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-core-rtlsupport-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-core-rtlsupport-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-core-string-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-core-string-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-core-synch-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-core-synch-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-core-synch-l1-2-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-core-synch-l1-2-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-core-sysinfo-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-core-sysinfo-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-core-timezone-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-core-timezone-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-core-util-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-core-util-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-crt-conio-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-crt-conio-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-crt-convert-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-crt-convert-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-crt-environment-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-crt-environment-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-crt-filesystem-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-crt-filesystem-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-crt-heap-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-crt-heap-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-crt-locale-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-crt-locale-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-crt-math-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-crt-math-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-crt-multibyte-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-crt-multibyte-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-crt-private-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-crt-private-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-crt-process-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-crt-process-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-crt-runtime-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-crt-runtime-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-crt-stdio-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-crt-stdio-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-crt-string-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-crt-string-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-crt-time-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-crt-time-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/api-ms-win-crt-utility-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/api-ms-win-crt-utility-l1-1-0.dll -------------------------------------------------------------------------------- /venv/Scripts/concrt140.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/concrt140.dll -------------------------------------------------------------------------------- /venv/Scripts/deactivate.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | if defined _OLD_VIRTUAL_PROMPT ( 4 | set "PROMPT=%_OLD_VIRTUAL_PROMPT%" 5 | ) 6 | set _OLD_VIRTUAL_PROMPT= 7 | 8 | if defined _OLD_VIRTUAL_PYTHONHOME ( 9 | set "PYTHONHOME=%_OLD_VIRTUAL_PYTHONHOME%" 10 | set _OLD_VIRTUAL_PYTHONHOME= 11 | ) 12 | 13 | if defined _OLD_VIRTUAL_PATH ( 14 | set "PATH=%_OLD_VIRTUAL_PATH%" 15 | ) 16 | 17 | set _OLD_VIRTUAL_PATH= 18 | 19 | set VIRTUAL_ENV= 20 | 21 | :END 22 | -------------------------------------------------------------------------------- /venv/Scripts/easy_install-3.6-script.py: -------------------------------------------------------------------------------- 1 | #!D:\workPlace\PyCharm_workplace\FacialExpressionRecgnition\venv\Scripts\python.exe 2 | # EASY-INSTALL-ENTRY-SCRIPT: 'setuptools==39.1.0','console_scripts','easy_install-3.6' 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.6')() 12 | ) 13 | -------------------------------------------------------------------------------- /venv/Scripts/easy_install-3.6.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/easy_install-3.6.exe -------------------------------------------------------------------------------- /venv/Scripts/easy_install-script.py: -------------------------------------------------------------------------------- 1 | #!D:\workPlace\PyCharm_workplace\FacialExpressionRecgnition\venv\Scripts\python.exe 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/Scripts/easy_install.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/easy_install.exe -------------------------------------------------------------------------------- /venv/Scripts/msvcp140.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/msvcp140.dll -------------------------------------------------------------------------------- /venv/Scripts/pip-script.py: -------------------------------------------------------------------------------- 1 | #!D:\workPlace\PyCharm_workplace\FacialExpressionRecgnition\venv\Scripts\python.exe 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/Scripts/pip.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/pip.exe -------------------------------------------------------------------------------- /venv/Scripts/pip3-script.py: -------------------------------------------------------------------------------- 1 | #!D:\workPlace\PyCharm_workplace\FacialExpressionRecgnition\venv\Scripts\python.exe 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/Scripts/pip3.6-script.py: -------------------------------------------------------------------------------- 1 | #!D:\workPlace\PyCharm_workplace\FacialExpressionRecgnition\venv\Scripts\python.exe 2 | # EASY-INSTALL-ENTRY-SCRIPT: 'pip==10.0.1','console_scripts','pip3.6' 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.6')() 12 | ) 13 | -------------------------------------------------------------------------------- /venv/Scripts/pip3.6.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/pip3.6.exe -------------------------------------------------------------------------------- /venv/Scripts/pip3.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/pip3.exe -------------------------------------------------------------------------------- /venv/Scripts/pyexpat.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/pyexpat.pyd -------------------------------------------------------------------------------- /venv/Scripts/python.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/python.exe -------------------------------------------------------------------------------- /venv/Scripts/python36.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/python36.dll -------------------------------------------------------------------------------- /venv/Scripts/pythoncom36.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/pythoncom36.dll -------------------------------------------------------------------------------- /venv/Scripts/pythonw.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/pythonw.exe -------------------------------------------------------------------------------- /venv/Scripts/pywintypes36.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/pywintypes36.dll -------------------------------------------------------------------------------- /venv/Scripts/select.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/select.pyd -------------------------------------------------------------------------------- /venv/Scripts/sqlite3.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/sqlite3.dll -------------------------------------------------------------------------------- /venv/Scripts/tcl86t.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/tcl86t.dll -------------------------------------------------------------------------------- /venv/Scripts/tk86t.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/tk86t.dll -------------------------------------------------------------------------------- /venv/Scripts/ucrtbase.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/ucrtbase.dll -------------------------------------------------------------------------------- /venv/Scripts/unicodedata.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/unicodedata.pyd -------------------------------------------------------------------------------- /venv/Scripts/vccorlib140.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/vccorlib140.dll -------------------------------------------------------------------------------- /venv/Scripts/vcomp140.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/vcomp140.dll -------------------------------------------------------------------------------- /venv/Scripts/vcruntime140.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/vcruntime140.dll -------------------------------------------------------------------------------- /venv/Scripts/winsound.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/winsound.pyd -------------------------------------------------------------------------------- /venv/Scripts/xlwings32.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/xlwings32.dll -------------------------------------------------------------------------------- /venv/Scripts/xlwings64.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ruiver/CTCNet/539e55ec9fed06028379d35dfd5cd4074755ffd8/venv/Scripts/xlwings64.dll -------------------------------------------------------------------------------- /venv/pyvenv.cfg: -------------------------------------------------------------------------------- 1 | home = D:\anaconda3 2 | include-system-site-packages = false 3 | version = 3.6.0 4 | --------------------------------------------------------------------------------