family-guy commited on
Commit
5e3d357
·
2 Parent(s): ddd3906 83df04e

Merge branch 'master' into video-metadata-#195

Browse files
Files changed (10) hide show
  1. .travis.yml +7 -7
  2. Makefile +6 -0
  3. Pipfile +3 -5
  4. Pipfile.lock +235 -112
  5. README.md +3 -3
  6. pytube/__init__.py +1 -1
  7. pytube/contrib/playlist.py +3 -6
  8. pytube/itags.py +11 -1
  9. setup.cfg +4 -3
  10. setup.py +1 -1
.travis.yml CHANGED
@@ -8,16 +8,16 @@ python:
8
  - "3.5"
9
  - "3.6"
10
  - "3.6-dev"
11
- install:
12
- - pip install --upgrade pipenv
13
- - pipenv install --dev --ignore-pipfile
14
- before_script: flake8
15
  before_install:
16
- - sudo apt-get install -y python-pip
17
  - sudo apt-get install -y libpython-dev
18
  - sudo apt-get install -y libyaml-dev
19
- - sudo apt-get install python-dev
20
- script: pipenv run pytest --cov-report term-missing --cov=pytube
 
 
21
  sudo: required
22
  after_success:
23
  coveralls
 
8
  - "3.5"
9
  - "3.6"
10
  - "3.6-dev"
11
+ install: "make"
12
+ script:
13
+ - make ci
 
14
  before_install:
 
15
  - sudo apt-get install -y libpython-dev
16
  - sudo apt-get install -y libyaml-dev
17
+ - sudo apt-get install -y python-dev
18
+ - sudo apt-get install -y python-pip
19
+ - sudo apt-get install -y python-software-properties
20
+ - sudo apt-get install -y software-properties-common
21
  sudo: required
22
  after_success:
23
  coveralls
Makefile CHANGED
@@ -4,6 +4,12 @@ help:
4
  @echo "clean-pyc - remove Python file artifacts"
5
  @echo "install - install the package to the active Python's site-packages"
6
 
 
 
 
 
 
 
7
  clean: clean-build clean-pyc
8
 
9
  clean-build:
 
4
  @echo "clean-pyc - remove Python file artifacts"
5
  @echo "install - install the package to the active Python's site-packages"
6
 
7
+ ci:
8
+ pip install pipenv
9
+ pipenv install --dev
10
+ pipenv run flake8
11
+ pipenv run pytest --cov-report term-missing --cov=pytube
12
+
13
  clean: clean-build clean-pyc
14
 
15
  clean-build:
Pipfile CHANGED
@@ -23,8 +23,6 @@ pytest-cov = "*"
23
  pytest-mock = "*"
24
  sphinx = "*"
25
  sphinx-rtd-theme = "*"
26
-
27
-
28
- [requires]
29
-
30
- python_version = "2.7"
 
23
  pytest-mock = "*"
24
  sphinx = "*"
25
  sphinx-rtd-theme = "*"
26
+ configparser = "*"
27
+ "urllib3" = "*"
28
+ pyopenssl = "*"
 
 
Pipfile.lock CHANGED
@@ -1,25 +1,10 @@
1
  {
2
  "_meta": {
3
  "hash": {
4
- "sha256": "37315f93d0a3b0ec0d11c9cbe6c148bcfc7d1ce5238d2dc00749fcc92c865ef5"
5
- },
6
- "host-environment-markers": {
7
- "implementation_name": "cpython",
8
- "implementation_version": "0",
9
- "os_name": "posix",
10
- "platform_machine": "x86_64",
11
- "platform_python_implementation": "CPython",
12
- "platform_release": "17.4.0",
13
- "platform_system": "Darwin",
14
- "platform_version": "Darwin Kernel Version 17.4.0: Sun Dec 17 09:19:54 PST 2017; root:xnu-4570.41.2~1/RELEASE_X86_64",
15
- "python_full_version": "2.7.14",
16
- "python_version": "2.7",
17
- "sys_platform": "darwin"
18
  },
19
  "pipfile-spec": 6,
20
- "requires": {
21
- "python_version": "2.7"
22
- },
23
  "sources": [
24
  {
25
  "name": "pypi",
@@ -29,19 +14,27 @@
29
  ]
30
  },
31
  "default": {
 
 
 
 
 
 
 
32
  "enum34": {
33
  "hashes": [
34
- "sha256:6bd0f6ad48ec2aa117d3d141940d484deccda84d4fcd884f5c3d93c23ecd8c79",
35
  "sha256:644837f692e5f550741432dd3f223bbb9852018674981b1664e5dc339387588a",
36
- "sha256:8ad8c4783bf61ded74527bffb48ed9b54166685e4230386a9ed9b1279e2df5b1",
37
- "sha256:2d81cbbe0e73112bdfe6ef8576f2238f2ba27dd0d55752a776c41d38b7da2850"
38
  ],
 
39
  "version": "==1.1.6"
40
  },
41
  "flake8": {
42
  "hashes": [
43
- "sha256:c7841163e2b576d435799169b78703ad6ac1bbb0f199994fc05f700b2a90ea37",
44
- "sha256:7253265f7abd8b313e3892944044a365e3f4ac3fcdcfb4298f55ee9ddf188ba0"
45
  ],
46
  "version": "==3.5.0"
47
  },
@@ -54,8 +47,8 @@
54
  },
55
  "pycodestyle": {
56
  "hashes": [
57
- "sha256:6c4245ade1edfad79c3446fadfc96b0de2759662dc29d07d80a6f27ad1ca6ba9",
58
- "sha256:682256a5b318149ca0d2a9185d365d8864a768a28db66a84a2ea946bcc426766"
59
  ],
60
  "version": "==2.3.1"
61
  },
@@ -75,31 +68,38 @@
75
  ],
76
  "version": "==0.7.10"
77
  },
 
 
 
 
 
 
 
78
  "aspy.yaml": {
79
  "hashes": [
80
- "sha256:be70cc0ccd1ee1d30f589f2403792eb2ffa7546470af0a17179541b13d8374df",
81
- "sha256:6215f44900ff65f27dbd00a36b06a7926276436ed377320cfd4febd69bbd4a94"
82
  ],
83
  "version": "==1.0.0"
84
  },
85
  "attrs": {
86
  "hashes": [
87
- "sha256:a17a9573a6f475c99b551c0e0a812707ddda1ec9653bed04c13841404ed6f450",
88
- "sha256:1c7960ccfd6a005cd9f7ba884e6316b5e430a3f1a6c37c5f87d8b43f83b54ec9"
89
  ],
90
  "version": "==17.4.0"
91
  },
92
  "babel": {
93
  "hashes": [
94
- "sha256:ad209a68d7162c4cff4b29cdebe3dec4cef75492df501b0049a9433c96ce6f80",
95
- "sha256:8ce4cb6fdd4393edd323227cba3a077bceb2a6ce5201c902c65e730046f41f14"
96
  ],
97
  "version": "==2.5.3"
98
  },
99
  "bumpversion": {
100
  "hashes": [
101
- "sha256:6753d9ff3552013e2130f7bc03c1007e24473b4835952679653fb132367bdd57",
102
- "sha256:6744c873dd7aafc24453d8b6a1a0d6d109faf63cd0cd19cb78fd46e74932c77e"
103
  ],
104
  "version": "==0.5.3"
105
  },
@@ -117,60 +117,135 @@
117
  ],
118
  "version": "==2018.1.18"
119
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  "chardet": {
121
  "hashes": [
122
- "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691",
123
- "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"
124
  ],
125
  "version": "==3.0.4"
126
  },
 
 
 
 
 
 
 
127
  "coverage": {
128
  "hashes": [
129
- "sha256:7608a3dd5d73cb06c531b8925e0ef8d3de31fed2544a7de6c63960a1e73ea4bc",
130
- "sha256:3a2184c6d797a125dca8367878d3b9a178b6fdd05fdc2d35d758c3006a1cd694",
131
- "sha256:f3f501f345f24383c0000395b26b726e46758b71393267aeae0bd36f8b3ade80",
132
  "sha256:0b136648de27201056c1869a6c0d4e23f464750fd9a9ba9750b8336a244429ed",
 
 
 
 
 
 
133
  "sha256:337ded681dd2ef9ca04ef5d93cfc87e52e09db2594c296b4a0a3662cb1b41249",
 
 
 
134
  "sha256:3eb42bf89a6be7deb64116dd1cc4b08171734d721e7a7e57ad64cc4ef29ed2f1",
135
- "sha256:be6cfcd8053d13f5f5eeb284aa8a814220c3da1b0078fa859011c7fffd86dab9",
136
- "sha256:69bf008a06b76619d3c3f3b1983f5145c75a305a0fea513aca094cae5c40a8f5",
137
- "sha256:2eb564bbf7816a9d68dd3369a510be3327f1c618d2357fa6b1216994c2e3d508",
138
- "sha256:9d6dd10d49e01571bf6e147d3b505141ffc093a06756c60b053a859cb2128b1f",
139
- "sha256:701cd6093d63e6b8ad7009d8a92425428bc4d6e7ab8d75efbb665c806c1d79ba",
140
  "sha256:5a13ea7911ff5e1796b6d5e4fbbf6952381a611209b736d48e675c2756f3f74e",
141
- "sha256:c1bb572fab8208c400adaf06a8133ac0712179a334c09224fb11393e920abcdd",
142
- "sha256:03481e81d558d30d230bc12999e3edffe392d244349a90f4ef9b88425fac74ba",
143
- "sha256:28b2191e7283f4f3568962e373b47ef7f0392993bb6660d079c62bd50fe9d162",
144
- "sha256:de4418dadaa1c01d497e539210cb6baa015965526ff5afc078c57ca69160108d",
145
- "sha256:8c3cb8c35ec4d9506979b4cf90ee9918bc2e49f84189d9bf5c36c0c1119c6558",
146
- "sha256:7e1fe19bd6dce69d9fd159d8e4a80a8f52101380d5d3a4d374b6d3eae0e5de9c",
147
  "sha256:6bc583dc18d5979dc0f6cec26a8603129de0304d5ae1f17e57a12834e7235062",
148
- "sha256:198626739a79b09fa0a2f06e083ffd12eb55449b5f8bfdbeed1df4910b2ca640",
149
- "sha256:7aa36d2b844a3e4a4b356708d79fd2c260281a7390d678a10b91ca595ddc9e99",
150
- "sha256:3d72c20bd105022d29b14a7d628462ebdc61de2f303322c0212a054352f3b287",
151
- "sha256:4635a184d0bbe537aa185a34193898eee409332a8ccb27eea36f262566585000",
152
- "sha256:e05cb4d9aad6233d67e0541caa7e511fa4047ed7750ec2510d466e806e0255d6",
153
  "sha256:76ecd006d1d8f739430ec50cc872889af1f9c1b6b8f48e29941814b09b0fd3cc",
 
154
  "sha256:7d3f553904b0c5c016d1dad058a7554c7ac4c91a789fca496e7d8347ad040653",
155
- "sha256:3c79a6f7b95751cdebcd9037e4d06f8d5a9b60e4ed0cd231342aa8ad7124882a",
156
- "sha256:56e448f051a201c5ebbaa86a5efd0ca90d327204d8b059ab25ad0f35fbfd79f1",
 
 
157
  "sha256:ac4fef68da01116a5c117eba4dd46f2e06847a497de5ed1d64bb99a5fda1ef91",
158
- "sha256:1c383d2ef13ade2acc636556fd544dba6e14fa30755f26812f54300e401f98f2",
159
  "sha256:b8815995e050764c8610dbc82641807d196927c3dbed207f0a079833ffcf588d",
160
- "sha256:104ab3934abaf5be871a583541e8829d6c19ce7bde2923b2751e0d3ca44db60a",
161
- "sha256:9e112fcbe0148a6fa4f0a02e8d58e94470fc6cb82a5481618fea901699bf34c4",
162
- "sha256:15b111b6a0f46ee1a485414a52a7ad1d703bdf984e9ed3c288a4414d3871dcbd",
 
163
  "sha256:e4d96c07229f58cb686120f168276e434660e4358cc9cf3b0464210b04913e77",
 
164
  "sha256:f8a923a85cb099422ad5a2e345fe877bbc89a8a8b23235824a93488150e45f6e"
165
  ],
166
  "version": "==4.5.1"
167
  },
168
  "coveralls": {
169
  "hashes": [
170
- "sha256:84dd8c88c5754e8db70a682f537e2781366064aa3cdd6b24c2dcecbd3181187c",
171
- "sha256:510682001517bcca1def9f6252df6ce730fcb9831c62d9fff7c7d55b6fdabdf3"
172
- ],
173
- "version": "==1.2.0"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
174
  },
175
  "docopt": {
176
  "hashes": [
@@ -180,30 +255,48 @@
180
  },
181
  "docutils": {
182
  "hashes": [
183
- "sha256:7a4bd47eaf6596e1295ecb11361139febe29b084a87bf005bf899f9a42edc3c6",
184
  "sha256:02aec4bd92ab067f6ff27a38a38a41173bf01bed8f89157768c1573f53e474a6",
185
- "sha256:51e64ef2ebfb29cae1faa133b3710143496eca21c530f3f71424d77687764274"
 
186
  ],
187
  "version": "==0.14"
188
  },
 
 
 
 
 
 
 
 
 
 
189
  "flake8": {
190
  "hashes": [
191
- "sha256:c7841163e2b576d435799169b78703ad6ac1bbb0f199994fc05f700b2a90ea37",
192
- "sha256:7253265f7abd8b313e3892944044a365e3f4ac3fcdcfb4298f55ee9ddf188ba0"
193
  ],
194
  "version": "==3.5.0"
195
  },
 
 
 
 
 
 
 
 
196
  "identify": {
197
  "hashes": [
198
- "sha256:804e6af41604b11e0b8e0670ae172ef254b152cb5370c7e6b6e7d0c6e9c6a95e",
199
- "sha256:496d3cce9c4088664e4840e0e01db460820bffa13f03a3016078d99feda0cd74"
200
  ],
201
- "version": "==1.0.7"
202
  },
203
  "idna": {
204
  "hashes": [
205
- "sha256:8c7309c718f94b3a625cb648ace320157ad16ff131ae0af362c9f21b80ef6ec4",
206
- "sha256:2c6a5de3089009e3da7c5dde64a141dbc8551d5b7f6cf4ed7c2568d0cc520a8f"
207
  ],
208
  "version": "==2.6"
209
  },
@@ -214,6 +307,13 @@
214
  ],
215
  "version": "==1.0.0"
216
  },
 
 
 
 
 
 
 
217
  "jinja2": {
218
  "hashes": [
219
  "sha256:74c935a1b8bb9a3947c50a54766a969d4846290e1e788ea44c1392163723c3bd",
@@ -239,6 +339,7 @@
239
  "sha256:5ce3c71c5545b472da17b72268978914d0252980348636840bd34a00b5cc96c1",
240
  "sha256:b158b6df76edd239b8208d481dc46b6afd45a846b7812ff0ce58971cf5bc8bba"
241
  ],
 
242
  "version": "==2.0.0"
243
  },
244
  "nodeenv": {
@@ -256,8 +357,8 @@
256
  },
257
  "pbr": {
258
  "hashes": [
259
- "sha256:60c25b7dfd054ef9bb0ae327af949dd4676aa09ac3a9471cdc871d8a9213f9ac",
260
- "sha256:05f61c71aaefc02d8e37c0a3eeb9815ff526ea28b3b76324769e6158d7f95be1"
261
  ],
262
  "version": "==3.1.1"
263
  },
@@ -269,10 +370,10 @@
269
  },
270
  "pre-commit": {
271
  "hashes": [
272
- "sha256:036ac395075609b0ee7017dd356df42e486ccb8d675493e497492795146eab46",
273
- "sha256:6d6646f5a390677c5c9cd61d5a2613b89d93f079725047aff16fddda9a3ce77f"
274
  ],
275
- "version": "==1.6.0"
276
  },
277
  "py": {
278
  "hashes": [
@@ -283,11 +384,17 @@
283
  },
284
  "pycodestyle": {
285
  "hashes": [
286
- "sha256:6c4245ade1edfad79c3446fadfc96b0de2759662dc29d07d80a6f27ad1ca6ba9",
287
- "sha256:682256a5b318149ca0d2a9185d365d8864a768a28db66a84a2ea946bcc426766"
288
  ],
289
  "version": "==2.3.1"
290
  },
 
 
 
 
 
 
291
  "pyflakes": {
292
  "hashes": [
293
  "sha256:08bd6a50edf8cffa9fa09a463063c425ecaaf10d1eb0335a7e8b1401aef89e6f",
@@ -302,29 +409,36 @@
302
  ],
303
  "version": "==2.2.0"
304
  },
 
 
 
 
 
 
 
305
  "pyparsing": {
306
  "hashes": [
307
- "sha256:fee43f17a9c4087e7ed1605bd6df994c6173c1e977d7ade7b651292fab2bd010",
308
  "sha256:0832bcf47acd283788593e7a0f542407bd9550a55a8a8435214a1960e04bcb04",
309
- "sha256:9e8143a3e15c13713506886badd96ca4b579a87fbdf49e550dbfc057d6cb218e",
310
  "sha256:281683241b25fe9b80ec9d66017485f6deff1af5cde372469134b56ca8447a07",
311
- "sha256:b8b3117ed9bdf45e14dcc89345ce638ec7e0e29b2b579fa1ecf32ce45ebac8a5",
312
  "sha256:8f1e18d3fd36c6795bb7e02a39fd05c611ffc2596c1e0d995d34d67630426c18",
313
- "sha256:e4d45427c6e20a59bf4f88c639dcc03ce30d193112047f94012102f235853a58"
 
 
 
314
  ],
315
  "version": "==2.2.0"
316
  },
317
  "pytest": {
318
  "hashes": [
319
- "sha256:8970e25181e15ab14ae895599a0a0e0ade7d1f1c4c8ca1072ce16f25526a184d",
320
- "sha256:9ddcb879c8cc859d2540204b5399011f842e5e8823674bf429f70ada281b3cc6"
321
  ],
322
- "version": "==3.4.1"
323
  },
324
  "pytest-cov": {
325
  "hashes": [
326
- "sha256:890fe5565400902b0c78b5357004aab1c814115894f4f21370e2433256a3eeec",
327
- "sha256:03aa752cf11db41d281ea1d807d954c4eda35cfa1b21d6971966cc041bbf6e2d"
328
  ],
329
  "version": "==2.5.1"
330
  },
@@ -337,34 +451,34 @@
337
  },
338
  "pytz": {
339
  "hashes": [
340
- "sha256:ed6509d9af298b7995d69a440e2822288f2eca1681b8cce37673dbb10091e5fe",
341
- "sha256:f93ddcdd6342f94cea379c73cddb5724e0d6d0a1c91c9bdef364dc0368ba4fda",
342
- "sha256:61242a9abc626379574a166dc0e96a66cd7c3b27fc10868003fa210be4bff1c9",
343
- "sha256:ba18e6a243b3625513d85239b3e49055a2f0318466e0b8a92b8fb8ca7ccdf55f",
344
  "sha256:07edfc3d4d2705a20a6e99d97f0c4b61c800b8232dc1c04d87e8554f130148dd",
345
  "sha256:3a47ff71597f821cd84a162e71593004286e5be07a340fd462f0d33a760782b5",
 
346
  "sha256:5bd55c744e6feaa4d599a6cbd8228b4f8f9ba96de2c38d56f08e534b3c9edf0d",
 
347
  "sha256:887ab5e5b32e4d0c86efddd3d055c1f363cbaa583beb8da5e22d2fa2f64d51ef",
348
- "sha256:410bcd1d6409026fbaa65d9ed33bf6dd8b1e94a499e32168acfc7b332e4095c0"
 
 
349
  ],
350
  "version": "==2018.3"
351
  },
352
  "pyyaml": {
353
  "hashes": [
354
- "sha256:3262c96a1ca437e7e4763e2843746588a965426550f3797a79fca9c6199c431f",
355
  "sha256:16b20e970597e051997d90dc2cddc713a2876c47e3d92d59ee198700c5427736",
356
- "sha256:e863072cdf4c72eebf179342c94e6989c67185842d9997960b3e69290b2fa269",
357
- "sha256:bc6bced57f826ca7cb5125a10b23fd0f2fff3b7c4701d64c439a300ce665fff8",
358
- "sha256:c01b880ec30b5a6e6aa67b09a2fe3fb30473008c85cd6a67359a1b15ed6d83a4",
359
- "sha256:827dc04b8fa7d07c44de11fabbc888e627fa8293b695e0f99cb544fdfa1bf0d1",
360
  "sha256:592766c6303207a20efc445587778322d7f73b161bd994f227adaa341ba212ab",
 
361
  "sha256:5f84523c076ad14ff5e6c037fe1c89a7f73a3e04cf0377cb4d017014976433f3",
362
- "sha256:0c507b7f74b3d2dd4d1322ec8a94794927305ab4cebbe89cc47fe5e81541e6e8",
363
  "sha256:b4c423ab23291d3945ac61346feeb9a0dc4184999ede5e7c43e1ffb975130ae6",
 
 
364
  "sha256:ca233c64c6e40eaa6c66ef97058cdc80e8d0157a443655baa1b2966e812807ca",
365
- "sha256:4474f8ea030b5127225b8894d626bb66c01cda098d47a2b0d3429b6700af9fd8",
366
- "sha256:326420cbb492172dec84b0f65c80942de6cedb5233c413dd824483989c000608",
367
- "sha256:5ac82e411044fb129bae5cfbeb3ba626acb2af31a8d17d175004b70862a741a7"
368
  ],
369
  "version": "==3.12"
370
  },
@@ -377,15 +491,15 @@
377
  },
378
  "six": {
379
  "hashes": [
380
- "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb",
381
- "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9"
382
  ],
383
  "version": "==1.11.0"
384
  },
385
  "snowballstemmer": {
386
  "hashes": [
387
- "sha256:9f3bcd3c401c3e862ec0ebe6d2c069ebc012ce142cce209c098ccb5b09136e89",
388
- "sha256:919f26a68b2c17a7634da993d91339e288964f93c274f1343e3bbbe2096e1128"
389
  ],
390
  "version": "==1.2.1"
391
  },
@@ -398,18 +512,27 @@
398
  },
399
  "sphinx-rtd-theme": {
400
  "hashes": [
401
- "sha256:62ee4752716e698bad7de8a18906f42d33664128eea06c46b718fc7fbd1a9f5c",
402
- "sha256:2df74b8ff6fae6965c527e97cca6c6c944886aae474b490e17f92adfbe843417"
403
  ],
404
  "version": "==0.2.4"
405
  },
406
  "sphinxcontrib-websupport": {
407
  "hashes": [
408
- "sha256:f4932e95869599b89bf4f80fc3989132d83c9faa5bf633e7b5e0c25dffb75da2",
409
- "sha256:7a85961326aa3a400cd4ad3c816d70ed6f7c740acd7ce5d78cd0a67825072eb9"
410
  ],
411
  "version": "==1.0.1"
412
  },
 
 
 
 
 
 
 
 
 
413
  "urllib3": {
414
  "hashes": [
415
  "sha256:06330f386d6e4b195fbfc736b297f58c5a892e4440e54d294d7004e3a9bbea1b",
@@ -419,8 +542,8 @@
419
  },
420
  "virtualenv": {
421
  "hashes": [
422
- "sha256:39d88b533b422825d644087a21e78c45cf5af0ef7a99a1fc9fbb7b481e5c85b0",
423
- "sha256:02f8102c2436bb03b3ee6dede1919d1dac8a427541652e5ec95171ec8adbc93a"
424
  ],
425
  "version": "==15.1.0"
426
  }
 
1
  {
2
  "_meta": {
3
  "hash": {
4
+ "sha256": "e517b067af601141604f030b60fecfa67d34ff012465b87979a6baa106a56194"
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  },
6
  "pipfile-spec": 6,
7
+ "requires": {},
 
 
8
  "sources": [
9
  {
10
  "name": "pypi",
 
14
  ]
15
  },
16
  "default": {
17
+ "configparser": {
18
+ "hashes": [
19
+ "sha256:5308b47021bc2340965c371f0f058cc6971a04502638d4244225c49d80db273a"
20
+ ],
21
+ "markers": "python_version < '3.2'",
22
+ "version": "==3.5.0"
23
+ },
24
  "enum34": {
25
  "hashes": [
26
+ "sha256:2d81cbbe0e73112bdfe6ef8576f2238f2ba27dd0d55752a776c41d38b7da2850",
27
  "sha256:644837f692e5f550741432dd3f223bbb9852018674981b1664e5dc339387588a",
28
+ "sha256:6bd0f6ad48ec2aa117d3d141940d484deccda84d4fcd884f5c3d93c23ecd8c79",
29
+ "sha256:8ad8c4783bf61ded74527bffb48ed9b54166685e4230386a9ed9b1279e2df5b1"
30
  ],
31
+ "markers": "python_version < '3.4'",
32
  "version": "==1.1.6"
33
  },
34
  "flake8": {
35
  "hashes": [
36
+ "sha256:7253265f7abd8b313e3892944044a365e3f4ac3fcdcfb4298f55ee9ddf188ba0",
37
+ "sha256:c7841163e2b576d435799169b78703ad6ac1bbb0f199994fc05f700b2a90ea37"
38
  ],
39
  "version": "==3.5.0"
40
  },
 
47
  },
48
  "pycodestyle": {
49
  "hashes": [
50
+ "sha256:682256a5b318149ca0d2a9185d365d8864a768a28db66a84a2ea946bcc426766",
51
+ "sha256:6c4245ade1edfad79c3446fadfc96b0de2759662dc29d07d80a6f27ad1ca6ba9"
52
  ],
53
  "version": "==2.3.1"
54
  },
 
68
  ],
69
  "version": "==0.7.10"
70
  },
71
+ "asn1crypto": {
72
+ "hashes": [
73
+ "sha256:2f1adbb7546ed199e3c90ef23ec95c5cf3585bac7d11fb7eb562a3fe89c64e87",
74
+ "sha256:9d5c20441baf0cb60a4ac34cc447c6c189024b6b4c6cd7877034f4965c464e49"
75
+ ],
76
+ "version": "==0.24.0"
77
+ },
78
  "aspy.yaml": {
79
  "hashes": [
80
+ "sha256:6215f44900ff65f27dbd00a36b06a7926276436ed377320cfd4febd69bbd4a94",
81
+ "sha256:be70cc0ccd1ee1d30f589f2403792eb2ffa7546470af0a17179541b13d8374df"
82
  ],
83
  "version": "==1.0.0"
84
  },
85
  "attrs": {
86
  "hashes": [
87
+ "sha256:1c7960ccfd6a005cd9f7ba884e6316b5e430a3f1a6c37c5f87d8b43f83b54ec9",
88
+ "sha256:a17a9573a6f475c99b551c0e0a812707ddda1ec9653bed04c13841404ed6f450"
89
  ],
90
  "version": "==17.4.0"
91
  },
92
  "babel": {
93
  "hashes": [
94
+ "sha256:8ce4cb6fdd4393edd323227cba3a077bceb2a6ce5201c902c65e730046f41f14",
95
+ "sha256:ad209a68d7162c4cff4b29cdebe3dec4cef75492df501b0049a9433c96ce6f80"
96
  ],
97
  "version": "==2.5.3"
98
  },
99
  "bumpversion": {
100
  "hashes": [
101
+ "sha256:6744c873dd7aafc24453d8b6a1a0d6d109faf63cd0cd19cb78fd46e74932c77e",
102
+ "sha256:6753d9ff3552013e2130f7bc03c1007e24473b4835952679653fb132367bdd57"
103
  ],
104
  "version": "==0.5.3"
105
  },
 
117
  ],
118
  "version": "==2018.1.18"
119
  },
120
+ "cffi": {
121
+ "hashes": [
122
+ "sha256:151b7eefd035c56b2b2e1eb9963c90c6302dc15fbd8c1c0a83a163ff2c7d7743",
123
+ "sha256:1553d1e99f035ace1c0544050622b7bc963374a00c467edafac50ad7bd276aef",
124
+ "sha256:1b0493c091a1898f1136e3f4f991a784437fac3673780ff9de3bcf46c80b6b50",
125
+ "sha256:2ba8a45822b7aee805ab49abfe7eec16b90587f7f26df20c71dd89e45a97076f",
126
+ "sha256:3c85641778460581c42924384f5e68076d724ceac0f267d66c757f7535069c93",
127
+ "sha256:3eb6434197633b7748cea30bf0ba9f66727cdce45117a712b29a443943733257",
128
+ "sha256:4c91af6e967c2015729d3e69c2e51d92f9898c330d6a851bf8f121236f3defd3",
129
+ "sha256:770f3782b31f50b68627e22f91cb182c48c47c02eb405fd689472aa7b7aa16dc",
130
+ "sha256:79f9b6f7c46ae1f8ded75f68cf8ad50e5729ed4d590c74840471fc2823457d04",
131
+ "sha256:7a33145e04d44ce95bcd71e522b478d282ad0eafaf34fe1ec5bbd73e662f22b6",
132
+ "sha256:857959354ae3a6fa3da6651b966d13b0a8bed6bbc87a0de7b38a549db1d2a359",
133
+ "sha256:87f37fe5130574ff76c17cab61e7d2538a16f843bb7bca8ebbc4b12de3078596",
134
+ "sha256:95d5251e4b5ca00061f9d9f3d6fe537247e145a8524ae9fd30a2f8fbce993b5b",
135
+ "sha256:9d1d3e63a4afdc29bd76ce6aa9d58c771cd1599fbba8cf5057e7860b203710dd",
136
+ "sha256:a36c5c154f9d42ec176e6e620cb0dd275744aa1d804786a71ac37dc3661a5e95",
137
+ "sha256:ae5e35a2c189d397b91034642cb0eab0e346f776ec2eb44a49a459e6615d6e2e",
138
+ "sha256:b0f7d4a3df8f06cf49f9f121bead236e328074de6449866515cea4907bbc63d6",
139
+ "sha256:b75110fb114fa366b29a027d0c9be3709579602ae111ff61674d28c93606acca",
140
+ "sha256:ba5e697569f84b13640c9e193170e89c13c6244c24400fc57e88724ef610cd31",
141
+ "sha256:be2a9b390f77fd7676d80bc3cdc4f8edb940d8c198ed2d8c0be1319018c778e1",
142
+ "sha256:d5d8555d9bfc3f02385c1c37e9f998e2011f0db4f90e250e5bc0c0a85a813085",
143
+ "sha256:e55e22ac0a30023426564b1059b035973ec82186ddddbac867078435801c7801",
144
+ "sha256:e90f17980e6ab0f3c2f3730e56d1fe9bcba1891eeea58966e89d352492cc74f4",
145
+ "sha256:ecbb7b01409e9b782df5ded849c178a0aa7c906cf8c5a67368047daab282b184",
146
+ "sha256:ed01918d545a38998bfa5902c7c00e0fee90e957ce036a4000a88e3fe2264917",
147
+ "sha256:edabd457cd23a02965166026fd9bfd196f4324fe6032e866d0f3bd0301cd486f",
148
+ "sha256:fdf1c1dc5bafc32bc5d08b054f94d659422b05aba244d6be4ddc1c72d9aa70fb"
149
+ ],
150
+ "markers": "platform_python_implementation != 'PyPy'",
151
+ "version": "==1.11.5"
152
+ },
153
+ "cfgv": {
154
+ "hashes": [
155
+ "sha256:2fbaf8d082456d8fff5a68163ff59c1025a52e906914fbc738be7d8ea5b7aa4b",
156
+ "sha256:733aa2f66b5106af32d271336a571610b9808e868de0ad5690d9d5155e5960c5"
157
+ ],
158
+ "version": "==1.0.0"
159
+ },
160
  "chardet": {
161
  "hashes": [
162
+ "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
163
+ "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
164
  ],
165
  "version": "==3.0.4"
166
  },
167
+ "configparser": {
168
+ "hashes": [
169
+ "sha256:5308b47021bc2340965c371f0f058cc6971a04502638d4244225c49d80db273a"
170
+ ],
171
+ "markers": "python_version < '3.2'",
172
+ "version": "==3.5.0"
173
+ },
174
  "coverage": {
175
  "hashes": [
176
+ "sha256:03481e81d558d30d230bc12999e3edffe392d244349a90f4ef9b88425fac74ba",
 
 
177
  "sha256:0b136648de27201056c1869a6c0d4e23f464750fd9a9ba9750b8336a244429ed",
178
+ "sha256:104ab3934abaf5be871a583541e8829d6c19ce7bde2923b2751e0d3ca44db60a",
179
+ "sha256:15b111b6a0f46ee1a485414a52a7ad1d703bdf984e9ed3c288a4414d3871dcbd",
180
+ "sha256:198626739a79b09fa0a2f06e083ffd12eb55449b5f8bfdbeed1df4910b2ca640",
181
+ "sha256:1c383d2ef13ade2acc636556fd544dba6e14fa30755f26812f54300e401f98f2",
182
+ "sha256:28b2191e7283f4f3568962e373b47ef7f0392993bb6660d079c62bd50fe9d162",
183
+ "sha256:2eb564bbf7816a9d68dd3369a510be3327f1c618d2357fa6b1216994c2e3d508",
184
  "sha256:337ded681dd2ef9ca04ef5d93cfc87e52e09db2594c296b4a0a3662cb1b41249",
185
+ "sha256:3a2184c6d797a125dca8367878d3b9a178b6fdd05fdc2d35d758c3006a1cd694",
186
+ "sha256:3c79a6f7b95751cdebcd9037e4d06f8d5a9b60e4ed0cd231342aa8ad7124882a",
187
+ "sha256:3d72c20bd105022d29b14a7d628462ebdc61de2f303322c0212a054352f3b287",
188
  "sha256:3eb42bf89a6be7deb64116dd1cc4b08171734d721e7a7e57ad64cc4ef29ed2f1",
189
+ "sha256:4635a184d0bbe537aa185a34193898eee409332a8ccb27eea36f262566585000",
190
+ "sha256:56e448f051a201c5ebbaa86a5efd0ca90d327204d8b059ab25ad0f35fbfd79f1",
 
 
 
191
  "sha256:5a13ea7911ff5e1796b6d5e4fbbf6952381a611209b736d48e675c2756f3f74e",
192
+ "sha256:69bf008a06b76619d3c3f3b1983f5145c75a305a0fea513aca094cae5c40a8f5",
 
 
 
 
 
193
  "sha256:6bc583dc18d5979dc0f6cec26a8603129de0304d5ae1f17e57a12834e7235062",
194
+ "sha256:701cd6093d63e6b8ad7009d8a92425428bc4d6e7ab8d75efbb665c806c1d79ba",
195
+ "sha256:7608a3dd5d73cb06c531b8925e0ef8d3de31fed2544a7de6c63960a1e73ea4bc",
 
 
 
196
  "sha256:76ecd006d1d8f739430ec50cc872889af1f9c1b6b8f48e29941814b09b0fd3cc",
197
+ "sha256:7aa36d2b844a3e4a4b356708d79fd2c260281a7390d678a10b91ca595ddc9e99",
198
  "sha256:7d3f553904b0c5c016d1dad058a7554c7ac4c91a789fca496e7d8347ad040653",
199
+ "sha256:7e1fe19bd6dce69d9fd159d8e4a80a8f52101380d5d3a4d374b6d3eae0e5de9c",
200
+ "sha256:8c3cb8c35ec4d9506979b4cf90ee9918bc2e49f84189d9bf5c36c0c1119c6558",
201
+ "sha256:9d6dd10d49e01571bf6e147d3b505141ffc093a06756c60b053a859cb2128b1f",
202
+ "sha256:9e112fcbe0148a6fa4f0a02e8d58e94470fc6cb82a5481618fea901699bf34c4",
203
  "sha256:ac4fef68da01116a5c117eba4dd46f2e06847a497de5ed1d64bb99a5fda1ef91",
 
204
  "sha256:b8815995e050764c8610dbc82641807d196927c3dbed207f0a079833ffcf588d",
205
+ "sha256:be6cfcd8053d13f5f5eeb284aa8a814220c3da1b0078fa859011c7fffd86dab9",
206
+ "sha256:c1bb572fab8208c400adaf06a8133ac0712179a334c09224fb11393e920abcdd",
207
+ "sha256:de4418dadaa1c01d497e539210cb6baa015965526ff5afc078c57ca69160108d",
208
+ "sha256:e05cb4d9aad6233d67e0541caa7e511fa4047ed7750ec2510d466e806e0255d6",
209
  "sha256:e4d96c07229f58cb686120f168276e434660e4358cc9cf3b0464210b04913e77",
210
+ "sha256:f3f501f345f24383c0000395b26b726e46758b71393267aeae0bd36f8b3ade80",
211
  "sha256:f8a923a85cb099422ad5a2e345fe877bbc89a8a8b23235824a93488150e45f6e"
212
  ],
213
  "version": "==4.5.1"
214
  },
215
  "coveralls": {
216
  "hashes": [
217
+ "sha256:32569a43c9dbc13fa8199247580a4ab182ef439f51f65bb7f8316d377a1340e8",
218
+ "sha256:664794748d2e5673e347ec476159a9d87f43e0d2d44950e98ed0e27b98da8346"
219
+ ],
220
+ "version": "==1.3.0"
221
+ },
222
+ "cryptography": {
223
+ "hashes": [
224
+ "sha256:0d39a93cf25edeae1f796bbc5960e587f34513a852564f6345ea4491a86c5997",
225
+ "sha256:18d0b0fc21f39b35ea469a82584f55eeecec1f65a92d85af712c425bdef627b3",
226
+ "sha256:27a208b9600166976182351174948e128818e7fc95cbdba18143f3106a211546",
227
+ "sha256:28e4e9a97713aa47b5ef9c5003def2eb58aec89781ef3ef82b1c2916a8b0639b",
228
+ "sha256:2cfcee8829c5dec55597826d52c26bc26e7ce39adb4771584459d0636b0b7108",
229
+ "sha256:33b564196dcd563e309a0b07444e31611368afe3a3822160c046f5e4c3b5cdd7",
230
+ "sha256:41f94194ae78f83fd94ca94fb8ad65f92210a76a2421169ffa5c33c3ec7605f4",
231
+ "sha256:4f385ee7d39ee1ed74f1d6b1da03d0734ea82855a7b28a9e6e88c4091bc58664",
232
+ "sha256:55555d784cfdf9033e81f044c0df04babed2aa141213765d960d233b0139e353",
233
+ "sha256:69285f5615507b6625f89ea1048addd1d9218585fb886eb90bdebb1d2b2d26f5",
234
+ "sha256:6cb1224da391fa90f1be524eafb375b62baf8d3df9690b32e8cc475ccfccee5e",
235
+ "sha256:6fb22f63e17813f3d1d8e30dd1e249e2c34233ba1d3de977fd31cb5db764c7d0",
236
+ "sha256:7a2409f1564c84bcf2563d379c9b6148c5bc6b0ae46e109f6a7b4bebadf551df",
237
+ "sha256:8487524a1212223ca6dc7e2c8913024618f7ff29855c98869088e3818d5f6733",
238
+ "sha256:9a2945efcff84830c8e237ab037d0269380d75d400a89cc9e5628e52647e21be",
239
+ "sha256:9a47a80f65f4feaaf8415a40c339806c7d7d867152ddccc6ca87f707c8b7b565",
240
+ "sha256:a3c180d12ffb1d8ee5b33a514a5bcb2a9cc06cc89aa74038015591170c82f55d",
241
+ "sha256:a5f2c681fd040ed648513939a1dd2242af19bd5e9e79e53b6dcfa33bdae61217",
242
+ "sha256:b984523d28737e373c7c35c8b6db6001537609d47534892de189bebebaa42a47",
243
+ "sha256:d18df9cf3f3212df28d445ea82ce702c4d7a35817ef7a38ee38879ffa8f7e857",
244
+ "sha256:e4d967371c5b6b2e67855066471d844c5d52d210c36c28d49a8507b96e2c5291",
245
+ "sha256:ee245f185fae723133511e2450be08a66c2eebb53ad27c0c19b228029f4748a5",
246
+ "sha256:fc2208d95d9ecc8032f5e38330d5ace2e3b0b998e42b08c30c35b2ab3a4a3bc8"
247
+ ],
248
+ "version": "==2.1.4"
249
  },
250
  "docopt": {
251
  "hashes": [
 
255
  },
256
  "docutils": {
257
  "hashes": [
 
258
  "sha256:02aec4bd92ab067f6ff27a38a38a41173bf01bed8f89157768c1573f53e474a6",
259
+ "sha256:51e64ef2ebfb29cae1faa133b3710143496eca21c530f3f71424d77687764274",
260
+ "sha256:7a4bd47eaf6596e1295ecb11361139febe29b084a87bf005bf899f9a42edc3c6"
261
  ],
262
  "version": "==0.14"
263
  },
264
+ "enum34": {
265
+ "hashes": [
266
+ "sha256:2d81cbbe0e73112bdfe6ef8576f2238f2ba27dd0d55752a776c41d38b7da2850",
267
+ "sha256:644837f692e5f550741432dd3f223bbb9852018674981b1664e5dc339387588a",
268
+ "sha256:6bd0f6ad48ec2aa117d3d141940d484deccda84d4fcd884f5c3d93c23ecd8c79",
269
+ "sha256:8ad8c4783bf61ded74527bffb48ed9b54166685e4230386a9ed9b1279e2df5b1"
270
+ ],
271
+ "markers": "python_version < '3.4'",
272
+ "version": "==1.1.6"
273
+ },
274
  "flake8": {
275
  "hashes": [
276
+ "sha256:7253265f7abd8b313e3892944044a365e3f4ac3fcdcfb4298f55ee9ddf188ba0",
277
+ "sha256:c7841163e2b576d435799169b78703ad6ac1bbb0f199994fc05f700b2a90ea37"
278
  ],
279
  "version": "==3.5.0"
280
  },
281
+ "funcsigs": {
282
+ "hashes": [
283
+ "sha256:330cc27ccbf7f1e992e69fef78261dc7c6569012cf397db8d3de0234e6c937ca",
284
+ "sha256:a7bb0f2cf3a3fd1ab2732cb49eba4252c2af4240442415b4abce3b87022a8f50"
285
+ ],
286
+ "markers": "python_version < '3.3'",
287
+ "version": "==1.0.2"
288
+ },
289
  "identify": {
290
  "hashes": [
291
+ "sha256:53be6ea950a5f40e13be2dd87e67413eb6879527b831333196ab2a54de38f499",
292
+ "sha256:c0bfb29634e04cde8e54aee2d55aff9dad30d6ea1f3e9e3ce731934d78635aa1"
293
  ],
294
+ "version": "==1.0.8"
295
  },
296
  "idna": {
297
  "hashes": [
298
+ "sha256:2c6a5de3089009e3da7c5dde64a141dbc8551d5b7f6cf4ed7c2568d0cc520a8f",
299
+ "sha256:8c7309c718f94b3a625cb648ace320157ad16ff131ae0af362c9f21b80ef6ec4"
300
  ],
301
  "version": "==2.6"
302
  },
 
307
  ],
308
  "version": "==1.0.0"
309
  },
310
+ "ipaddress": {
311
+ "hashes": [
312
+ "sha256:200d8686011d470b5e4de207d803445deee427455cd0cb7c982b68cf82524f81"
313
+ ],
314
+ "markers": "python_version < '3'",
315
+ "version": "==1.0.19"
316
+ },
317
  "jinja2": {
318
  "hashes": [
319
  "sha256:74c935a1b8bb9a3947c50a54766a969d4846290e1e788ea44c1392163723c3bd",
 
339
  "sha256:5ce3c71c5545b472da17b72268978914d0252980348636840bd34a00b5cc96c1",
340
  "sha256:b158b6df76edd239b8208d481dc46b6afd45a846b7812ff0ce58971cf5bc8bba"
341
  ],
342
+ "markers": "python_version < '3.0'",
343
  "version": "==2.0.0"
344
  },
345
  "nodeenv": {
 
357
  },
358
  "pbr": {
359
  "hashes": [
360
+ "sha256:05f61c71aaefc02d8e37c0a3eeb9815ff526ea28b3b76324769e6158d7f95be1",
361
+ "sha256:60c25b7dfd054ef9bb0ae327af949dd4676aa09ac3a9471cdc871d8a9213f9ac"
362
  ],
363
  "version": "==3.1.1"
364
  },
 
370
  },
371
  "pre-commit": {
372
  "hashes": [
373
+ "sha256:1b96ef893c003fcf81ac7c39cc790b01438dea05d9298e73bb61b9bf572282c3",
374
+ "sha256:89ab725f311e6785f2f391ecfb6730b12b991d9488ae08d9d382104364527110"
375
  ],
376
+ "version": "==1.8.1"
377
  },
378
  "py": {
379
  "hashes": [
 
384
  },
385
  "pycodestyle": {
386
  "hashes": [
387
+ "sha256:682256a5b318149ca0d2a9185d365d8864a768a28db66a84a2ea946bcc426766",
388
+ "sha256:6c4245ade1edfad79c3446fadfc96b0de2759662dc29d07d80a6f27ad1ca6ba9"
389
  ],
390
  "version": "==2.3.1"
391
  },
392
+ "pycparser": {
393
+ "hashes": [
394
+ "sha256:99a8ca03e29851d96616ad0404b4aad7d9ee16f25c9f9708a11faf2810f7b226"
395
+ ],
396
+ "version": "==2.18"
397
+ },
398
  "pyflakes": {
399
  "hashes": [
400
  "sha256:08bd6a50edf8cffa9fa09a463063c425ecaaf10d1eb0335a7e8b1401aef89e6f",
 
409
  ],
410
  "version": "==2.2.0"
411
  },
412
+ "pyopenssl": {
413
+ "hashes": [
414
+ "sha256:07a2de1a54de07448732a81e38a55df7da109b2f47f599f8bb35b0cbec69d4bd",
415
+ "sha256:2c10cfba46a52c0b0950118981d61e72c1e5b1aac451ca1bc77de1a679456773"
416
+ ],
417
+ "version": "==17.5.0"
418
+ },
419
  "pyparsing": {
420
  "hashes": [
 
421
  "sha256:0832bcf47acd283788593e7a0f542407bd9550a55a8a8435214a1960e04bcb04",
 
422
  "sha256:281683241b25fe9b80ec9d66017485f6deff1af5cde372469134b56ca8447a07",
 
423
  "sha256:8f1e18d3fd36c6795bb7e02a39fd05c611ffc2596c1e0d995d34d67630426c18",
424
+ "sha256:9e8143a3e15c13713506886badd96ca4b579a87fbdf49e550dbfc057d6cb218e",
425
+ "sha256:b8b3117ed9bdf45e14dcc89345ce638ec7e0e29b2b579fa1ecf32ce45ebac8a5",
426
+ "sha256:e4d45427c6e20a59bf4f88c639dcc03ce30d193112047f94012102f235853a58",
427
+ "sha256:fee43f17a9c4087e7ed1605bd6df994c6173c1e977d7ade7b651292fab2bd010"
428
  ],
429
  "version": "==2.2.0"
430
  },
431
  "pytest": {
432
  "hashes": [
433
+ "sha256:062027955bccbc04d2fcd5d79690947e018ba31abe4c90b2c6721abec734261b",
434
+ "sha256:117bad36c1a787e1a8a659df35de53ba05f9f3398fb9e4ac17e80ad5903eb8c5"
435
  ],
436
+ "version": "==3.4.2"
437
  },
438
  "pytest-cov": {
439
  "hashes": [
440
+ "sha256:03aa752cf11db41d281ea1d807d954c4eda35cfa1b21d6971966cc041bbf6e2d",
441
+ "sha256:890fe5565400902b0c78b5357004aab1c814115894f4f21370e2433256a3eeec"
442
  ],
443
  "version": "==2.5.1"
444
  },
 
451
  },
452
  "pytz": {
453
  "hashes": [
 
 
 
 
454
  "sha256:07edfc3d4d2705a20a6e99d97f0c4b61c800b8232dc1c04d87e8554f130148dd",
455
  "sha256:3a47ff71597f821cd84a162e71593004286e5be07a340fd462f0d33a760782b5",
456
+ "sha256:410bcd1d6409026fbaa65d9ed33bf6dd8b1e94a499e32168acfc7b332e4095c0",
457
  "sha256:5bd55c744e6feaa4d599a6cbd8228b4f8f9ba96de2c38d56f08e534b3c9edf0d",
458
+ "sha256:61242a9abc626379574a166dc0e96a66cd7c3b27fc10868003fa210be4bff1c9",
459
  "sha256:887ab5e5b32e4d0c86efddd3d055c1f363cbaa583beb8da5e22d2fa2f64d51ef",
460
+ "sha256:ba18e6a243b3625513d85239b3e49055a2f0318466e0b8a92b8fb8ca7ccdf55f",
461
+ "sha256:ed6509d9af298b7995d69a440e2822288f2eca1681b8cce37673dbb10091e5fe",
462
+ "sha256:f93ddcdd6342f94cea379c73cddb5724e0d6d0a1c91c9bdef364dc0368ba4fda"
463
  ],
464
  "version": "==2018.3"
465
  },
466
  "pyyaml": {
467
  "hashes": [
468
+ "sha256:0c507b7f74b3d2dd4d1322ec8a94794927305ab4cebbe89cc47fe5e81541e6e8",
469
  "sha256:16b20e970597e051997d90dc2cddc713a2876c47e3d92d59ee198700c5427736",
470
+ "sha256:3262c96a1ca437e7e4763e2843746588a965426550f3797a79fca9c6199c431f",
471
+ "sha256:326420cbb492172dec84b0f65c80942de6cedb5233c413dd824483989c000608",
472
+ "sha256:4474f8ea030b5127225b8894d626bb66c01cda098d47a2b0d3429b6700af9fd8",
 
473
  "sha256:592766c6303207a20efc445587778322d7f73b161bd994f227adaa341ba212ab",
474
+ "sha256:5ac82e411044fb129bae5cfbeb3ba626acb2af31a8d17d175004b70862a741a7",
475
  "sha256:5f84523c076ad14ff5e6c037fe1c89a7f73a3e04cf0377cb4d017014976433f3",
476
+ "sha256:827dc04b8fa7d07c44de11fabbc888e627fa8293b695e0f99cb544fdfa1bf0d1",
477
  "sha256:b4c423ab23291d3945ac61346feeb9a0dc4184999ede5e7c43e1ffb975130ae6",
478
+ "sha256:bc6bced57f826ca7cb5125a10b23fd0f2fff3b7c4701d64c439a300ce665fff8",
479
+ "sha256:c01b880ec30b5a6e6aa67b09a2fe3fb30473008c85cd6a67359a1b15ed6d83a4",
480
  "sha256:ca233c64c6e40eaa6c66ef97058cdc80e8d0157a443655baa1b2966e812807ca",
481
+ "sha256:e863072cdf4c72eebf179342c94e6989c67185842d9997960b3e69290b2fa269"
 
 
482
  ],
483
  "version": "==3.12"
484
  },
 
491
  },
492
  "six": {
493
  "hashes": [
494
+ "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9",
495
+ "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb"
496
  ],
497
  "version": "==1.11.0"
498
  },
499
  "snowballstemmer": {
500
  "hashes": [
501
+ "sha256:919f26a68b2c17a7634da993d91339e288964f93c274f1343e3bbbe2096e1128",
502
+ "sha256:9f3bcd3c401c3e862ec0ebe6d2c069ebc012ce142cce209c098ccb5b09136e89"
503
  ],
504
  "version": "==1.2.1"
505
  },
 
512
  },
513
  "sphinx-rtd-theme": {
514
  "hashes": [
515
+ "sha256:2df74b8ff6fae6965c527e97cca6c6c944886aae474b490e17f92adfbe843417",
516
+ "sha256:62ee4752716e698bad7de8a18906f42d33664128eea06c46b718fc7fbd1a9f5c"
517
  ],
518
  "version": "==0.2.4"
519
  },
520
  "sphinxcontrib-websupport": {
521
  "hashes": [
522
+ "sha256:7a85961326aa3a400cd4ad3c816d70ed6f7c740acd7ce5d78cd0a67825072eb9",
523
+ "sha256:f4932e95869599b89bf4f80fc3989132d83c9faa5bf633e7b5e0c25dffb75da2"
524
  ],
525
  "version": "==1.0.1"
526
  },
527
+ "typing": {
528
+ "hashes": [
529
+ "sha256:3a887b021a77b292e151afb75323dea88a7bc1b3dfa92176cff8e44c8b68bddf",
530
+ "sha256:b2c689d54e1144bbcfd191b0832980a21c2dbcf7b5ff7a66248a60c90e951eb8",
531
+ "sha256:d400a9344254803a2368533e4533a4200d21eb7b6b729c173bc38201a74db3f2"
532
+ ],
533
+ "markers": "python_version < '3.5'",
534
+ "version": "==3.6.4"
535
+ },
536
  "urllib3": {
537
  "hashes": [
538
  "sha256:06330f386d6e4b195fbfc736b297f58c5a892e4440e54d294d7004e3a9bbea1b",
 
542
  },
543
  "virtualenv": {
544
  "hashes": [
545
+ "sha256:02f8102c2436bb03b3ee6dede1919d1dac8a427541652e5ec95171ec8adbc93a",
546
+ "sha256:39d88b533b422825d644087a21e78c45cf5af0ef7a99a1fc9fbb7b481e5c85b0"
547
  ],
548
  "version": "==15.1.0"
549
  }
README.md CHANGED
@@ -140,10 +140,10 @@ You can also download a complete Youtube playlist:
140
  >>> from pytube import Playlist
141
  >>> pl = Playlist("https://www.youtube.com/watch?v=Edpy1szoG80&list=PL153hDY-y1E00uQtCVCVC8xJ25TYX8yPU")
142
  >>> pl.download_all()
143
- >>> # of if you want to download in a specific path
144
- >>> pl.download_all(download_path)
145
  ```
146
- This will download the highest progressive stream available (generally 720p) from the given playlist. Later more option would be give users flexibility
147
  to choose video resolution.
148
 
149
  Pytube allows you to filter on every property available (see the documentation for the complete list), let's take a look at some of the most useful ones.
 
140
  >>> from pytube import Playlist
141
  >>> pl = Playlist("https://www.youtube.com/watch?v=Edpy1szoG80&list=PL153hDY-y1E00uQtCVCVC8xJ25TYX8yPU")
142
  >>> pl.download_all()
143
+ >>> # or if you want to download in a specific directory
144
+ >>> pl.download_all('/path/to/directory/')
145
  ```
146
+ This will download the highest progressive stream available (generally 720p) from the given playlist. Later more options would be given for user's flexibility
147
  to choose video resolution.
148
 
149
  Pytube allows you to filter on every property available (see the documentation for the complete list), let's take a look at some of the most useful ones.
pytube/__init__.py CHANGED
@@ -9,7 +9,7 @@ follows best practice patterns.
9
 
10
  """
11
  __title__ = 'pytube'
12
- __version__ = '9.0.7'
13
  __author__ = 'Nick Ficano'
14
  __license__ = 'MIT License'
15
  __copyright__ = 'Copyright 2017 Nick Ficano'
 
9
 
10
  """
11
  __title__ = 'pytube'
12
+ __version__ = '9.1.1'
13
  __author__ = 'Nick Ficano'
14
  __license__ = 'MIT License'
15
  __copyright__ = 'Copyright 2017 Nick Ficano'
pytube/contrib/playlist.py CHANGED
@@ -81,14 +81,11 @@ class Playlist(object):
81
  for link in self.video_urls:
82
  yt = YouTube(link)
83
 
 
84
  dl_stream = yt.streams.filter(
85
  progressive=True, subtype='mp4',
86
  ).order_by('resolution').desc().first()
87
 
88
- if download_path is not None:
89
- logger.debug("download path: " + download_path)
90
- dl_stream.download(download_path)
91
- else:
92
- dl_stream.download()
93
-
94
  logger.debug('download complete')
 
81
  for link in self.video_urls:
82
  yt = YouTube(link)
83
 
84
+ # TODO: this should not be hardcoded to a single user's preference
85
  dl_stream = yt.streams.filter(
86
  progressive=True, subtype='mp4',
87
  ).order_by('resolution').desc().first()
88
 
89
+ logger.debug('download path: %s', download_path)
90
+ dl_stream.download(download_path)
 
 
 
 
91
  logger.debug('download complete')
pytube/itags.py CHANGED
@@ -69,6 +69,14 @@ ITAGS = {
69
  308: ('1440p', None),
70
  313: ('2160p', None),
71
  315: ('2160p', None),
 
 
 
 
 
 
 
 
72
 
73
  # DASH Audio
74
  139: (None, '48kbps'),
@@ -85,7 +93,8 @@ ITAGS = {
85
  328: (None, None),
86
  }
87
 
88
- _60FPS = [298, 299, 302, 303, 308, 315]
 
89
  _3D = [82, 83, 84, 85, 100, 101, 102]
90
  LIVE = [91, 92, 93, 94, 95, 96, 132, 151]
91
 
@@ -106,5 +115,6 @@ def get_format_profile(itag):
106
  'abr': bitrate,
107
  'is_live': itag in LIVE,
108
  'is_3d': itag in _3D,
 
109
  'fps': 60 if itag in _60FPS else 30,
110
  }
 
69
  308: ('1440p', None),
70
  313: ('2160p', None),
71
  315: ('2160p', None),
72
+ 330: ('144p', None),
73
+ 331: ('240p', None),
74
+ 332: ('360p', None),
75
+ 333: ('480p', None),
76
+ 334: ('720p', None),
77
+ 335: ('1080p', None),
78
+ 336: ('1440p', None),
79
+ 337: ('2160p', None),
80
 
81
  # DASH Audio
82
  139: (None, '48kbps'),
 
93
  328: (None, None),
94
  }
95
 
96
+ HDR = [330, 331, 332, 333, 334, 335, 336, 337]
97
+ _60FPS = [298, 299, 302, 303, 308, 315] + HDR
98
  _3D = [82, 83, 84, 85, 100, 101, 102]
99
  LIVE = [91, 92, 93, 94, 95, 96, 132, 151]
100
 
 
115
  'abr': bitrate,
116
  'is_live': itag in LIVE,
117
  'is_3d': itag in _3D,
118
+ 'is_hdr': itag in HDR,
119
  'fps': 60 if itag in _60FPS else 30,
120
  }
setup.cfg CHANGED
@@ -1,9 +1,9 @@
1
  [bumpversion]
2
  commit = True
3
  tag = True
4
- current_version = 9.0.7
5
  parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(\-(?P<release>[a-z]+))?
6
- serialize =
7
  {major}.{minor}.{patch}
8
 
9
  [metadata]
@@ -15,5 +15,6 @@ description-file = README.md
15
 
16
  [coverage:run]
17
  source = pytube
18
- omit =
19
  pytube/compat.py
 
 
1
  [bumpversion]
2
  commit = True
3
  tag = True
4
+ current_version = 9.1.1
5
  parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(\-(?P<release>[a-z]+))?
6
+ serialize =
7
  {major}.{minor}.{patch}
8
 
9
  [metadata]
 
15
 
16
  [coverage:run]
17
  source = pytube
18
+ omit =
19
  pytube/compat.py
20
+
setup.py CHANGED
@@ -14,7 +14,7 @@ with open('LICENSE') as readme_file:
14
 
15
  setup(
16
  name='pytube',
17
- version='9.0.7',
18
  author='Nick Ficano',
19
  author_email='nficano@gmail.com',
20
  packages=['pytube', 'pytube.contrib'],
 
14
 
15
  setup(
16
  name='pytube',
17
+ version='9.1.1',
18
  author='Nick Ficano',
19
  author_email='nficano@gmail.com',
20
  packages=['pytube', 'pytube.contrib'],