├── FlaskDemo2.0
└── FlaskDemo
│ ├── .idea
│ ├── FlaskDemo.iml
│ ├── deployment.xml
│ ├── encodings.xml
│ ├── misc.xml
│ ├── modules.xml
│ ├── webServers.xml
│ └── workspace.xml
│ ├── Hello.py
│ ├── __pycache__
│ ├── Hello.cpython-36.pyc
│ ├── Hello.cpython-37.pyc
│ ├── car_finder.cpython-36.pyc
│ ├── car_finder.cpython-37.pyc
│ ├── chuli.cpython-36.pyc
│ ├── chuli.cpython-37.pyc
│ ├── detector.cpython-36.pyc
│ ├── detector.cpython-37.pyc
│ ├── find_car.cpython-36.pyc
│ ├── find_car.cpython-37.pyc
│ ├── helpers.cpython-36.pyc
│ ├── helpers.cpython-37.pyc
│ ├── lane_finder.cpython-36.pyc
│ ├── lane_finder.cpython-37.pyc
│ ├── original.cpython-36.pyc
│ ├── original.cpython-37.pyc
│ ├── settings.cpython-36.pyc
│ ├── settings.cpython-37.pyc
│ ├── tracker.cpython-36.pyc
│ └── tracker.cpython-37.pyc
│ ├── a1.png
│ ├── app.py
│ ├── auido.mp3
│ ├── calib.p
│ ├── capture_frame.py
│ ├── car_finder.py
│ ├── chuli.py
│ ├── classifier.p
│ ├── detector.py
│ ├── du.jpg
│ ├── find_car.py
│ ├── helpers.py
│ ├── kkk.jpg
│ ├── lane_finder.py
│ ├── original.py
│ ├── project_video1.mp4
│ ├── projection.p
│ ├── result.png
│ ├── result1.png
│ ├── result2.png
│ ├── settings.py
│ ├── simhei.ttf
│ ├── ssd_mobilenet_v1_coco_11_06_2017
│ └── frozen_inference_graph.pb
│ ├── static
│ ├── auido.mp3
│ ├── car1.mp3
│ ├── green.mp3
│ ├── lane1.mp3
│ ├── red.mp3
│ ├── yanshi
│ │ ├── car.png
│ │ ├── lane.png
│ │ └── original.png
│ └── yellow.mp3
│ ├── tracker.py
│ ├── train_svm.py
│ ├── venv
│ ├── Lib
│ │ └── site-packages
│ │ │ ├── easy-install.pth
│ │ │ ├── pip-10.0.1-py3.7.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.7.egg
│ │ │ └── setuptools.pth
│ ├── Scripts
│ │ ├── Activate.ps1
│ │ ├── activate
│ │ ├── activate.bat
│ │ ├── deactivate.bat
│ │ ├── easy_install-3.7-script.py
│ │ ├── easy_install-3.7.exe
│ │ ├── easy_install-script.py
│ │ ├── easy_install.exe
│ │ ├── pip-script.py
│ │ ├── pip.exe
│ │ ├── pip3-script.py
│ │ ├── pip3.7-script.py
│ │ ├── pip3.7.exe
│ │ ├── pip3.exe
│ │ ├── python.exe
│ │ ├── python.pdb
│ │ ├── pythonw.exe
│ │ └── pythonw.pdb
│ └── pyvenv.cfg
│ └── warning.png
├── README.md
└── img-folder
├── camera.png
├── homePage.png
└── result.png
/FlaskDemo2.0/FlaskDemo/.idea/FlaskDemo.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/.idea/deployment.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/.idea/webServers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
14 |
15 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/Hello.py:
--------------------------------------------------------------------------------
1 | import threading
2 | import time
3 | import requests
4 | import lane_finder
5 | import car_finder
6 | import cv2
7 | import base64
8 | import numpy as np
9 | ENCODING = 'utf-8'
10 | exitFlag = 0
11 | import find_car
12 | import chuli
13 | import original
14 | #录制好的视频演示
15 | class myThread(threading.Thread): # 继承父类threading.Thread
16 | def __init__(self,id,url):
17 | threading.Thread.__init__(self)
18 | self.url = url
19 | self.id = id
20 | def run(self): # 把要执行的代码写到run函数里面 线程在创建后会直接运行run函数
21 | if self.id == 1:
22 | self.res = load1(self.url)
23 | if self.id == 2:
24 | self.res = load2(self.url)
25 | if self.id==3:
26 | self.res=load3(self.url)
27 | def get_result(self):
28 | return self.res
29 | def load1(url):
30 | res=[]
31 | file = requests.get(url)
32 | img = cv2.imdecode(np.fromstring(file.content, np.uint8), 1)
33 | result, str = lane_finder.run(img)
34 | im2 = cv2.resize(result, (500, 300), )
35 | cv2.imwrite('./static/yanshi/lane.png', im2) # 写入图片
36 | # yuan = cv2.imread('https://lindia.oss-cn-beijing.aliyuncs.com/project_video1.mp4?x-oss-process=video/snapshot,t_20000,f_jpg,w_800,h_600')
37 | # result=car_finder.run(yuan)
38 | # cv2.imwrite('a2.png', result)
39 | with open(r'./static/yanshi/lane.png', 'rb') as f: # 转化成二进制格式
40 | base64_bytes = base64.b64encode(f.read()) # 使用base64对数据进行加密
41 | base64_string = base64_bytes.decode(ENCODING)
42 | raw_data = base64_string
43 | res.append(raw_data)
44 | res.append(str)
45 | #chuli.change(str,"lane")
46 | return res
47 | def load2(url):
48 | res=[]
49 | file = requests.get(url)
50 | img = cv2.imdecode(np.fromstring(file.content, np.uint8), 1)
51 | result, str,tishi = find_car.run(img)
52 | im2 = cv2.resize(result, (500, 300), )
53 | cv2.imwrite('./static/yanshi/car.png', im2) # 写入图片
54 | # yuan = cv2.imread('https://lindia.oss-cn-beijing.aliyuncs.com/project_video1.mp4?x-oss-process=video/snapshot,t_20000,f_jpg,w_800,h_600')
55 | # result=car_finder.run(yuan)
56 | # cv2.imwrite('a2.png', result)
57 | with open(r'./static/yanshi/car.png', 'rb') as f: # 转化成二进制格式
58 | base64_bytes = base64.b64encode(f.read()) # 使用base64对数据进行加密
59 | base64_string = base64_bytes.decode(ENCODING)
60 | raw_data = base64_string
61 | res.append(raw_data)
62 | res.append(str)
63 | res.append(tishi)
64 | # if tishi!="":
65 | # chuli.change("注意前方车辆!", "car")
66 | return res
67 | def load3(url):
68 | res=[]
69 | result,str=original.light(url)
70 | im2 = cv2.resize(result, (500, 300), )
71 | cv2.imwrite('./static/yanshi/original.png', im2) # 写入图片
72 | # yuan = cv2.imread('https://lindia.oss-cn-beijing.aliyuncs.com/project_video1.mp4?x-oss-process=video/snapshot,t_20000,f_jpg,w_800,h_600')
73 | # result=car_finder.run(yuan)
74 | # cv2.imwrite('a2.png', result)
75 | with open(r'./static/yanshi/original.png', 'rb') as f: # 转化成二进制格式
76 | base64_bytes = base64.b64encode(f.read()) # 使用base64对数据进行加密
77 | base64_string = base64_bytes.decode(ENCODING)
78 | raw_data = base64_string
79 | res.append(raw_data)
80 | res.append(str)
81 | return res
82 | # url="https://lindia.oss-cn-beijing.aliyuncs.com/project_video1.mp4?x-oss-process=video/snapshot,t_20000,f_jpg,w_800,h_600"
83 | # # 创建新线程
84 | # thread1 = myThread(1,url)
85 | # thread2 = myThread(2,url)
86 |
87 | # 开启线程
88 | # thread1.start()
89 | # thread2.start()
90 | # thread1.join()
91 | # res=thread1.get_result()
92 | # print(res)
93 | # print("Exiting Main Thread")
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/__pycache__/Hello.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/__pycache__/Hello.cpython-36.pyc
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/__pycache__/Hello.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/__pycache__/Hello.cpython-37.pyc
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/__pycache__/car_finder.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/__pycache__/car_finder.cpython-36.pyc
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/__pycache__/car_finder.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/__pycache__/car_finder.cpython-37.pyc
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/__pycache__/chuli.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/__pycache__/chuli.cpython-36.pyc
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/__pycache__/chuli.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/__pycache__/chuli.cpython-37.pyc
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/__pycache__/detector.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/__pycache__/detector.cpython-36.pyc
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/__pycache__/detector.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/__pycache__/detector.cpython-37.pyc
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/__pycache__/find_car.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/__pycache__/find_car.cpython-36.pyc
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/__pycache__/find_car.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/__pycache__/find_car.cpython-37.pyc
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/__pycache__/helpers.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/__pycache__/helpers.cpython-36.pyc
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/__pycache__/helpers.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/__pycache__/helpers.cpython-37.pyc
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/__pycache__/lane_finder.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/__pycache__/lane_finder.cpython-36.pyc
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/__pycache__/lane_finder.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/__pycache__/lane_finder.cpython-37.pyc
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/__pycache__/original.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/__pycache__/original.cpython-36.pyc
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/__pycache__/original.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/__pycache__/original.cpython-37.pyc
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/__pycache__/settings.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/__pycache__/settings.cpython-36.pyc
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/__pycache__/settings.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/__pycache__/settings.cpython-37.pyc
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/__pycache__/tracker.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/__pycache__/tracker.cpython-36.pyc
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/__pycache__/tracker.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/__pycache__/tracker.cpython-37.pyc
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/a1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/a1.png
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/auido.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/auido.mp3
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/calib.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/calib.p
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/capture_frame.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python2
2 | # -*- coding: utf-8 -*-
3 | """
4 | Created on Tue Nov 22 15:07:09 2016
5 |
6 | @author: kyleguan
7 | A simple script to capture frames from a video clip
8 |
9 | """
10 |
11 | import cv2
12 | import os
13 |
14 | video_name='project_video.mp4'
15 | start_time=12000
16 | end_time=16000
17 | step=200
18 |
19 | dir_name ='problem/'
20 | if not os.path.exists(dir_name):
21 | os.makedirs(dir_name)
22 |
23 | vidcap=cv2.VideoCapture(video_name)
24 | for i, time in enumerate(range(start_time, end_time, step)):
25 | vidcap.set(cv2.CAP_PROP_POS_MSEC, time)
26 | success, image=vidcap.read()
27 | if success:
28 | # Need to create the directory ( 'highway') first
29 | file_name='problem/frame{:03d}.jpg'.format(i+1)
30 | cv2.imwrite(file_name,image)
31 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/classifier.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/classifier.p
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/du.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/du.jpg
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/kkk.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/kkk.jpg
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/project_video1.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/project_video1.mp4
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/projection.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/projection.p
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/result.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/result.png
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/result1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/result1.png
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/result2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/result2.png
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/settings.py:
--------------------------------------------------------------------------------
1 | CALIB_FILE_NAME = "calib.p"
2 | PERSPECTIVE_FILE_NAME = "projection.p"
3 |
4 | ORIGINAL_SIZE = 1280, 720
5 | UNWARPED_SIZE = 500, 600
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/simhei.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/simhei.ttf
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/ssd_mobilenet_v1_coco_11_06_2017/frozen_inference_graph.pb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/ssd_mobilenet_v1_coco_11_06_2017/frozen_inference_graph.pb
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/static/auido.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/static/auido.mp3
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/static/car1.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/static/car1.mp3
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/static/green.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/static/green.mp3
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/static/lane1.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/static/lane1.mp3
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/static/red.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/static/red.mp3
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/static/yanshi/car.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/static/yanshi/car.png
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/static/yanshi/lane.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/static/yanshi/lane.png
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/static/yanshi/original.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/static/yanshi/original.png
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/static/yellow.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/static/yellow.mp3
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/train_svm.py:
--------------------------------------------------------------------------------
1 | import os
2 | import pickle
3 |
4 | import matplotlib.image as mpimg
5 | import numpy as np
6 | from sklearn.model_selection import train_test_split
7 | from sklearn.preprocessing import StandardScaler
8 | from sklearn.svm import LinearSVC
9 |
10 | from car_finder import CarFinder
11 |
12 | vehicle_dir = "train_images/vehicles"
13 | non_vehicle_dir = "train_images/non-vehicles"
14 | total_imgs = 0
15 |
16 | spatial_size = (64, 64)
17 | n_bins = 128
18 | hist_range = (0, 255)
19 |
20 | car_finder = CarFinder(64, hist_bins=128, small_size=20, orientations=12, pix_per_cell=8, cell_per_block=1)
21 |
22 | print(car_finder.num_features)
23 | def create_features_from_dir(root_dir):
24 | all_features = []
25 | for subdir in (os.listdir(root_dir)):
26 | for file in os.listdir(os.path.join(root_dir,subdir)):
27 | img = mpimg.imread(os.path.join(root_dir,subdir,file))
28 | img = (img.astype(np.float32)/np.max(img)*255).astype(np.uint8)
29 | features = car_finder.get_features(img)
30 | all_features.append(features)
31 | return np.vstack(all_features)
32 |
33 | print("Featuring started")
34 | X_cars = create_features_from_dir(vehicle_dir)
35 | y_cars = np.ones(X_cars.shape[0], dtype=np.uint8)
36 | X_non_cars = create_features_from_dir(non_vehicle_dir)
37 | y_non_cars = np.zeros(X_non_cars.shape[0], dtype=np.uint8)
38 | print("Featuring ended")
39 |
40 | X = np.vstack((X_cars, X_non_cars))
41 | y = np.concatenate((y_cars, y_non_cars))
42 |
43 | scaler = StandardScaler().fit(X)
44 | scaled_X = scaler.transform(X)
45 |
46 | del X_cars
47 | del X_non_cars
48 |
49 | print(scaled_X.shape)
50 | X_train, X_test, y_train, y_test = train_test_split(scaled_X, y, test_size=0.10, random_state=40)
51 |
52 | cls = LinearSVC(C=1e-4, dual=False, max_iter=5)
53 | cls.fit(X_train, y_train)
54 | result = cls.predict(X_test)
55 |
56 | true = y_test == 1
57 | test_len = len(y_test)
58 | positive = result == 1
59 | true_positive = np.sum(true & positive)
60 | true_negative = np.sum(true & np.logical_not(positive))
61 | false_negative = np.sum(np.logical_not(true) & np.logical_not(positive))
62 | false_positive = np.sum(np.logical_not(true) & positive)
63 | print("TP {0}, TN {1}, FN {2}, FP {3}".format(float(true_positive)/test_len, float(true_negative)/test_len,
64 | float(false_negative)/test_len, float(false_positive)/test_len))
65 | score = cls.score(X_test, y_test)
66 | print(score)
67 |
68 | data = {
69 | 'scaler': scaler,
70 | 'classifier': cls
71 | }
72 |
73 | with open('classifier.p', 'wb') as f:
74 | pickle.dump(data, f)
75 |
76 |
77 |
78 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/easy-install.pth:
--------------------------------------------------------------------------------
1 | ./setuptools-39.1.0-py3.7.egg
2 | ./pip-10.0.1-py3.7.egg
3 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/EGG-INFO/dependency_links.txt:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/EGG-INFO/entry_points.txt:
--------------------------------------------------------------------------------
1 | [console_scripts]
2 | pip = pip._internal:main
3 | pip3 = pip._internal:main
4 | pip3.7 = pip._internal:main
5 |
6 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/EGG-INFO/not-zip-safe:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/EGG-INFO/top_level.txt:
--------------------------------------------------------------------------------
1 | pip
2 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/__init__.py:
--------------------------------------------------------------------------------
1 | __version__ = "10.0.1"
2 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_internal/models/__init__.py:
--------------------------------------------------------------------------------
1 | from pip._internal.models.index import Index, PyPI
2 |
3 |
4 | __all__ = ["Index", "PyPI"]
5 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_internal/operations/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_internal/operations/__init__.py
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_internal/utils/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_internal/utils/__init__.py
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_internal/utils/glibc.py:
--------------------------------------------------------------------------------
1 | from __future__ import absolute_import
2 |
3 | import ctypes
4 | import re
5 | import warnings
6 |
7 |
8 | def glibc_version_string():
9 | "Returns glibc version string, or None if not using glibc."
10 |
11 | # ctypes.CDLL(None) internally calls dlopen(NULL), and as the dlopen
12 | # manpage says, "If filename is NULL, then the returned handle is for the
13 | # main program". This way we can let the linker do the work to figure out
14 | # which libc our process is actually using.
15 | process_namespace = ctypes.CDLL(None)
16 | try:
17 | gnu_get_libc_version = process_namespace.gnu_get_libc_version
18 | except AttributeError:
19 | # Symbol doesn't exist -> therefore, we are not linked to
20 | # glibc.
21 | return None
22 |
23 | # Call gnu_get_libc_version, which returns a string like "2.5"
24 | gnu_get_libc_version.restype = ctypes.c_char_p
25 | version_str = gnu_get_libc_version()
26 | # py2 / py3 compatibility:
27 | if not isinstance(version_str, str):
28 | version_str = version_str.decode("ascii")
29 |
30 | return version_str
31 |
32 |
33 | # Separated out from have_compatible_glibc for easier unit testing
34 | def check_glibc_version(version_str, required_major, minimum_minor):
35 | # Parse string and check against requested version.
36 | #
37 | # We use a regexp instead of str.split because we want to discard any
38 | # random junk that might come after the minor version -- this might happen
39 | # in patched/forked versions of glibc (e.g. Linaro's version of glibc
40 | # uses version strings like "2.20-2014.11"). See gh-3588.
41 | m = re.match(r"(?P[0-9]+)\.(?P[0-9]+)", version_str)
42 | if not m:
43 | warnings.warn("Expected glibc version with 2 components major.minor,"
44 | " got: %s" % version_str, RuntimeWarning)
45 | return False
46 | return (int(m.group("major")) == required_major and
47 | int(m.group("minor")) >= minimum_minor)
48 |
49 |
50 | def have_compatible_glibc(required_major, minimum_minor):
51 | version_str = glibc_version_string()
52 | if version_str is None:
53 | return False
54 | return check_glibc_version(version_str, required_major, minimum_minor)
55 |
56 |
57 | # platform.libc_ver regularly returns completely nonsensical glibc
58 | # versions. E.g. on my computer, platform says:
59 | #
60 | # ~$ python2.7 -c 'import platform; print(platform.libc_ver())'
61 | # ('glibc', '2.7')
62 | # ~$ python3.5 -c 'import platform; print(platform.libc_ver())'
63 | # ('glibc', '2.9')
64 | #
65 | # But the truth is:
66 | #
67 | # ~$ ldd --version
68 | # ldd (Debian GLIBC 2.22-11) 2.22
69 | #
70 | # This is unfortunate, because it means that the linehaul data on libc
71 | # versions that was generated by pip 8.1.2 and earlier is useless and
72 | # misleading. Solution: instead of using platform, use our code that actually
73 | # works.
74 | def libc_ver():
75 | """Try to determine the glibc version
76 |
77 | Returns a tuple of strings (lib, version) which default to empty strings
78 | in case the lookup fails.
79 | """
80 | glibc_version = glibc_version_string()
81 | if glibc_version is None:
82 | return ("", "")
83 | else:
84 | return ("glibc", glibc_version)
85 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_internal/utils/typing.py:
--------------------------------------------------------------------------------
1 | """For neatly implementing static typing in pip.
2 |
3 | `mypy` - the static type analysis tool we use - uses the `typing` module, which
4 | provides core functionality fundamental to mypy's functioning.
5 |
6 | Generally, `typing` would be imported at runtime and used in that fashion -
7 | it acts as a no-op at runtime and does not have any run-time overhead by
8 | design.
9 |
10 | As it turns out, `typing` is not vendorable - it uses separate sources for
11 | Python 2/Python 3. Thus, this codebase can not expect it to be present.
12 | To work around this, mypy allows the typing import to be behind a False-y
13 | optional to prevent it from running at runtime and type-comments can be used
14 | to remove the need for the types to be accessible directly during runtime.
15 |
16 | This module provides the False-y guard in a nicely named fashion so that a
17 | curious maintainer can reach here to read this.
18 |
19 | In pip, all static-typing related imports should be guarded as follows:
20 |
21 | from pip.utils.typing import MYPY_CHECK_RUNNING
22 |
23 | if MYPY_CHECK_RUNNING:
24 | from typing import ...
25 |
26 | Ref: https://github.com/python/mypy/issues/3216
27 | """
28 |
29 | MYPY_CHECK_RUNNING = False
30 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/cachecontrol/caches/__init__.py:
--------------------------------------------------------------------------------
1 | from .file_cache import FileCache # noqa
2 | from .redis_cache import RedisCache # noqa
3 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/certifi/__init__.py:
--------------------------------------------------------------------------------
1 | from .core import where, old_where
2 |
3 | __version__ = "2018.01.18"
4 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/certifi/__main__.py:
--------------------------------------------------------------------------------
1 | from certifi import where
2 | print(where())
3 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/chardet/cli/__init__.py:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/distlib/t32.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/distlib/t32.exe
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/distlib/t64.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/distlib/t64.exe
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/distlib/w32.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/distlib/w32.exe
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/distlib/w64.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/distlib/w64.exe
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/filters/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/filters/__init__.py
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/idna/__init__.py:
--------------------------------------------------------------------------------
1 | from .package_data import __version__
2 | from .core import *
3 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/idna/package_data.py:
--------------------------------------------------------------------------------
1 | __version__ = '2.6'
2 |
3 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/lockfile/mkdirlockfile.py:
--------------------------------------------------------------------------------
1 | from __future__ import absolute_import, division
2 |
3 | import time
4 | import os
5 | import sys
6 | import errno
7 |
8 | from . import (LockBase, LockFailed, NotLocked, NotMyLock, LockTimeout,
9 | AlreadyLocked)
10 |
11 |
12 | class MkdirLockFile(LockBase):
13 | """Lock file by creating a directory."""
14 | def __init__(self, path, threaded=True, timeout=None):
15 | """
16 | >>> lock = MkdirLockFile('somefile')
17 | >>> lock = MkdirLockFile('somefile', threaded=False)
18 | """
19 | LockBase.__init__(self, path, threaded, timeout)
20 | # Lock file itself is a directory. Place the unique file name into
21 | # it.
22 | self.unique_name = os.path.join(self.lock_file,
23 | "%s.%s%s" % (self.hostname,
24 | self.tname,
25 | self.pid))
26 |
27 | def acquire(self, timeout=None):
28 | timeout = timeout if timeout is not None else self.timeout
29 | end_time = time.time()
30 | if timeout is not None and timeout > 0:
31 | end_time += timeout
32 |
33 | if timeout is None:
34 | wait = 0.1
35 | else:
36 | wait = max(0, timeout / 10)
37 |
38 | while True:
39 | try:
40 | os.mkdir(self.lock_file)
41 | except OSError:
42 | err = sys.exc_info()[1]
43 | if err.errno == errno.EEXIST:
44 | # Already locked.
45 | if os.path.exists(self.unique_name):
46 | # Already locked by me.
47 | return
48 | if timeout is not None and time.time() > end_time:
49 | if timeout > 0:
50 | raise LockTimeout("Timeout waiting to acquire"
51 | " lock for %s" %
52 | self.path)
53 | else:
54 | # Someone else has the lock.
55 | raise AlreadyLocked("%s is already locked" %
56 | self.path)
57 | time.sleep(wait)
58 | else:
59 | # Couldn't create the lock for some other reason
60 | raise LockFailed("failed to create %s" % self.lock_file)
61 | else:
62 | open(self.unique_name, "wb").close()
63 | return
64 |
65 | def release(self):
66 | if not self.is_locked():
67 | raise NotLocked("%s is not locked" % self.path)
68 | elif not os.path.exists(self.unique_name):
69 | raise NotMyLock("%s is locked, but not by me" % self.path)
70 | os.unlink(self.unique_name)
71 | os.rmdir(self.lock_file)
72 |
73 | def is_locked(self):
74 | return os.path.exists(self.lock_file)
75 |
76 | def i_am_locking(self):
77 | return (self.is_locked() and
78 | os.path.exists(self.unique_name))
79 |
80 | def break_lock(self):
81 | if os.path.exists(self.lock_file):
82 | for name in os.listdir(self.lock_file):
83 | os.unlink(os.path.join(self.lock_file, name))
84 | os.rmdir(self.lock_file)
85 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/msgpack/_version.py:
--------------------------------------------------------------------------------
1 | version = (0, 5, 6)
2 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/pytoml/__init__.py:
--------------------------------------------------------------------------------
1 | from .core import TomlError
2 | from .parser import load, loads
3 | from .writer import dump, dumps
4 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/requests/structures.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | """
4 | requests.structures
5 | ~~~~~~~~~~~~~~~~~~~
6 |
7 | Data structures that power Requests.
8 | """
9 |
10 | import collections
11 |
12 | from .compat import OrderedDict
13 |
14 |
15 | class CaseInsensitiveDict(collections.MutableMapping):
16 | """A case-insensitive ``dict``-like object.
17 |
18 | Implements all methods and operations of
19 | ``collections.MutableMapping`` as well as dict's ``copy``. Also
20 | provides ``lower_items``.
21 |
22 | All keys are expected to be strings. The structure remembers the
23 | case of the last key to be set, and ``iter(instance)``,
24 | ``keys()``, ``items()``, ``iterkeys()``, and ``iteritems()``
25 | will contain case-sensitive keys. However, querying and contains
26 | testing is case insensitive::
27 |
28 | cid = CaseInsensitiveDict()
29 | cid['Accept'] = 'application/json'
30 | cid['aCCEPT'] == 'application/json' # True
31 | list(cid) == ['Accept'] # True
32 |
33 | For example, ``headers['content-encoding']`` will return the
34 | value of a ``'Content-Encoding'`` response header, regardless
35 | of how the header name was originally stored.
36 |
37 | If the constructor, ``.update``, or equality comparison
38 | operations are given keys that have equal ``.lower()``s, the
39 | behavior is undefined.
40 | """
41 |
42 | def __init__(self, data=None, **kwargs):
43 | self._store = OrderedDict()
44 | if data is None:
45 | data = {}
46 | self.update(data, **kwargs)
47 |
48 | def __setitem__(self, key, value):
49 | # Use the lowercased key for lookups, but store the actual
50 | # key alongside the value.
51 | self._store[key.lower()] = (key, value)
52 |
53 | def __getitem__(self, key):
54 | return self._store[key.lower()][1]
55 |
56 | def __delitem__(self, key):
57 | del self._store[key.lower()]
58 |
59 | def __iter__(self):
60 | return (casedkey for casedkey, mappedvalue in self._store.values())
61 |
62 | def __len__(self):
63 | return len(self._store)
64 |
65 | def lower_items(self):
66 | """Like iteritems(), but with all lowercase keys."""
67 | return (
68 | (lowerkey, keyval[1])
69 | for (lowerkey, keyval)
70 | in self._store.items()
71 | )
72 |
73 | def __eq__(self, other):
74 | if isinstance(other, collections.Mapping):
75 | other = CaseInsensitiveDict(other)
76 | else:
77 | return NotImplemented
78 | # Compare insensitively
79 | return dict(self.lower_items()) == dict(other.lower_items())
80 |
81 | # Copy is required
82 | def copy(self):
83 | return CaseInsensitiveDict(self._store.values())
84 |
85 | def __repr__(self):
86 | return str(dict(self.items()))
87 |
88 |
89 | class LookupDict(dict):
90 | """Dictionary lookup object."""
91 |
92 | def __init__(self, name=None):
93 | self.name = name
94 | super(LookupDict, self).__init__()
95 |
96 | def __repr__(self):
97 | return '' % (self.name)
98 |
99 | def __getitem__(self, key):
100 | # We allow fall-through here, so values default to None
101 |
102 | return self.__dict__.get(key, None)
103 |
104 | def get(self, key, default=None):
105 | return self.__dict__.get(key, default)
106 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/urllib3/contrib/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/urllib3/contrib/__init__.py
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/urllib3/contrib/_securetransport/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/urllib3/contrib/_securetransport/__init__.py
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/urllib3/packages/backports/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/urllib3/packages/backports/__init__.py
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/pip-10.0.1-py3.7.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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/setuptools-39.1.0-py3.7.egg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/setuptools-39.1.0-py3.7.egg
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Lib/site-packages/setuptools.pth:
--------------------------------------------------------------------------------
1 | ./setuptools-39.1.0-py3.7.egg
2 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/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="E:\20163587_姚雅丽\软件杯\FlaskDemo\venv"
31 |
32 | if (! $env:VIRTUAL_ENV_DISABLE_PROMPT) {
33 | # Set the prompt to include the env name
34 | # Make sure _OLD_VIRTUAL_PROMPT is global
35 | function global:_OLD_VIRTUAL_PROMPT {""}
36 | copy-item function:prompt function:_OLD_VIRTUAL_PROMPT
37 | function global:prompt {
38 | Write-Host -NoNewline -ForegroundColor Green '(venv) '
39 | _OLD_VIRTUAL_PROMPT
40 | }
41 | }
42 |
43 | # Clear PYTHONHOME
44 | if (Test-Path env:PYTHONHOME) {
45 | copy-item env:PYTHONHOME env:_OLD_VIRTUAL_PYTHONHOME
46 | remove-item env:PYTHONHOME
47 | }
48 |
49 | # Add the venv to the PATH
50 | copy-item env:PATH env:_OLD_VIRTUAL_PATH
51 | $env:PATH = "$env:VIRTUAL_ENV\Scripts;$env:PATH"
52 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Scripts/activate:
--------------------------------------------------------------------------------
1 | # This file must be used with "source bin/activate" *from bash*
2 | # you cannot run it directly
3 |
4 | deactivate () {
5 | # reset old environment variables
6 | if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then
7 | PATH="${_OLD_VIRTUAL_PATH:-}"
8 | export PATH
9 | unset _OLD_VIRTUAL_PATH
10 | fi
11 | if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then
12 | PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}"
13 | export PYTHONHOME
14 | unset _OLD_VIRTUAL_PYTHONHOME
15 | fi
16 |
17 | # This should detect bash and zsh, which have a hash command that must
18 | # be called to get it to forget past commands. Without forgetting
19 | # past commands the $PATH changes we made may not be respected
20 | if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
21 | hash -r
22 | fi
23 |
24 | if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then
25 | PS1="${_OLD_VIRTUAL_PS1:-}"
26 | export PS1
27 | unset _OLD_VIRTUAL_PS1
28 | fi
29 |
30 | unset VIRTUAL_ENV
31 | if [ ! "$1" = "nondestructive" ] ; then
32 | # Self destruct!
33 | unset -f deactivate
34 | fi
35 | }
36 |
37 | # unset irrelevant variables
38 | deactivate nondestructive
39 |
40 | VIRTUAL_ENV="E:\20163587_姚雅丽\软件杯\FlaskDemo\venv"
41 | export VIRTUAL_ENV
42 |
43 | _OLD_VIRTUAL_PATH="$PATH"
44 | PATH="$VIRTUAL_ENV/Scripts:$PATH"
45 | export PATH
46 |
47 | # unset PYTHONHOME if set
48 | # this will fail if PYTHONHOME is set to the empty string (which is bad anyway)
49 | # could use `if (set -u; : $PYTHONHOME) ;` in bash
50 | if [ -n "${PYTHONHOME:-}" ] ; then
51 | _OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}"
52 | unset PYTHONHOME
53 | fi
54 |
55 | if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then
56 | _OLD_VIRTUAL_PS1="${PS1:-}"
57 | if [ "x(venv) " != x ] ; then
58 | PS1="(venv) ${PS1:-}"
59 | else
60 | if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then
61 | # special case for Aspen magic directories
62 | # see http://www.zetadev.com/software/aspen/
63 | PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1"
64 | else
65 | PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1"
66 | fi
67 | fi
68 | export PS1
69 | fi
70 |
71 | # This should detect bash and zsh, which have a hash command that must
72 | # be called to get it to forget past commands. Without forgetting
73 | # past commands the $PATH changes we made may not be respected
74 | if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
75 | hash -r
76 | fi
77 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Scripts/activate.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 |
3 | rem This file is UTF-8 encoded, so we need to update the current code page while executing it
4 | for /f "tokens=2 delims=:" %%a in ('"%SystemRoot%\System32\chcp.com"') do (
5 | set "_OLD_CODEPAGE=%%a"
6 | )
7 | if defined _OLD_CODEPAGE (
8 | "%SystemRoot%\System32\chcp.com" 65001 > nul
9 | )
10 |
11 | set "VIRTUAL_ENV=E:\20163587_姚雅丽\软件杯\FlaskDemo\venv"
12 |
13 | if not defined PROMPT (
14 | set "PROMPT=$P$G"
15 | )
16 |
17 | if defined _OLD_VIRTUAL_PROMPT (
18 | set "PROMPT=%_OLD_VIRTUAL_PROMPT%"
19 | )
20 |
21 | if defined _OLD_VIRTUAL_PYTHONHOME (
22 | set "PYTHONHOME=%_OLD_VIRTUAL_PYTHONHOME%"
23 | )
24 |
25 | set "_OLD_VIRTUAL_PROMPT=%PROMPT%"
26 | set "PROMPT=(venv) %PROMPT%"
27 |
28 | if defined PYTHONHOME (
29 | set "_OLD_VIRTUAL_PYTHONHOME=%PYTHONHOME%"
30 | set PYTHONHOME=
31 | )
32 |
33 | if defined _OLD_VIRTUAL_PATH (
34 | set "PATH=%_OLD_VIRTUAL_PATH%"
35 | ) else (
36 | set "_OLD_VIRTUAL_PATH=%PATH%"
37 | )
38 |
39 | set "PATH=%VIRTUAL_ENV%\Scripts;%PATH%"
40 |
41 | :END
42 | if defined _OLD_CODEPAGE (
43 | "%SystemRoot%\System32\chcp.com" %_OLD_CODEPAGE% > nul
44 | set "_OLD_CODEPAGE="
45 | )
46 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/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 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Scripts/easy_install-3.7-script.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/venv/Scripts/easy_install-3.7-script.py
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Scripts/easy_install-3.7.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/venv/Scripts/easy_install-3.7.exe
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Scripts/easy_install-script.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/venv/Scripts/easy_install-script.py
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Scripts/easy_install.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/venv/Scripts/easy_install.exe
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Scripts/pip-script.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/venv/Scripts/pip-script.py
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Scripts/pip.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/venv/Scripts/pip.exe
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Scripts/pip3-script.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/venv/Scripts/pip3-script.py
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Scripts/pip3.7-script.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/venv/Scripts/pip3.7-script.py
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Scripts/pip3.7.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/venv/Scripts/pip3.7.exe
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Scripts/pip3.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/venv/Scripts/pip3.exe
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Scripts/python.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/venv/Scripts/python.exe
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Scripts/python.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/venv/Scripts/python.pdb
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Scripts/pythonw.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/venv/Scripts/pythonw.exe
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/Scripts/pythonw.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/venv/Scripts/pythonw.pdb
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/venv/pyvenv.cfg:
--------------------------------------------------------------------------------
1 | home = D:\python
2 | include-system-site-packages = false
3 | version = 3.7.2
4 |
--------------------------------------------------------------------------------
/FlaskDemo2.0/FlaskDemo/warning.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/FlaskDemo2.0/FlaskDemo/warning.png
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # AuxiliaryAutomaticDrivingSystem
2 | “领航”辅助自动驾驶系统
3 |
4 | 技术栈:Python+OpenCV+微信小程序
5 | 项目描述:基于计算机视觉的辅助自动驾驶应用,能满足在驾驶员驾驶过程中 对环境中的车道线、交通信号灯、车辆进行检测和识别,并把检测结果反馈给 驾驶员,提醒驾驶员安全驾驶
6 |
7 | 成果展示
8 |
9 | 首页(驾驶员通过点击首页“现场应用”按钮,进入实时场景模块,系统就会自动捕获现场路况,并对图像进行采集;点击主页面的“现场模拟”按钮,进入模拟模块):
10 |
11 |
12 |
13 | 摄像头拍摄画面(通过实时捕捉小程序界面显示的摄像头拍摄画面完成图像采集;对采集的图像进行保存并存储到服务器,覆盖之前保存的图像):
14 |
15 |
16 |
17 | 识别结果(后端通过使用opencv对图像的处理办法对存储的图像进行预处理;通过使用相关技术编写车道线检测、车辆检测及交通信号灯识别等算法,对预处理的图像进行分析,并保存分析结果返回前端;前端对分析结果进行显示并用语音和文字提示驾驶员):
18 |
19 |
20 |
21 | 该系统的核心是对图像的处理和分析,为了响应前端实时发送的路况分析结果请求,后端就必须快速的对保存的图像进行处理和分析,所以在处理图像时采用多进程同时执行的方法,减少图像处理和分析的时间,迅速的将分析结果反馈给前端,尽量与路况实时的内容保持同步。
22 |
--------------------------------------------------------------------------------
/img-folder/camera.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/img-folder/camera.png
--------------------------------------------------------------------------------
/img-folder/homePage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/img-folder/homePage.png
--------------------------------------------------------------------------------
/img-folder/result.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangyunling32/AuxiliaryAutomaticDrivingSystem/15aeb5eacbbaad54b009647777a9656dc074232c/img-folder/result.png
--------------------------------------------------------------------------------