[test_unicode_literals] Arm unicode_literals check
From now on, the line from __future__ import unicode_literals should be contained in every single Python file lest we run into any more 2.x/3.x issues. Going forward, we're likely to develop on 3.x only and would likely miss subtle bugs otherwise.
This commit is contained in:
		
							parent
							
								
									a1008af412
								
							
						
					
					
						commit
						dcddc10a50
					
				
					 23 changed files with 42 additions and 14 deletions
				
			
		| 
						 | 
					@ -1,4 +1,6 @@
 | 
				
			||||||
#!/usr/bin/env python
 | 
					#!/usr/bin/env python
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import os
 | 
					import os
 | 
				
			||||||
from os.path import dirname as dirn
 | 
					from os.path import dirname as dirn
 | 
				
			||||||
import sys
 | 
					import sys
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,5 @@
 | 
				
			||||||
#!/usr/bin/env python
 | 
					#!/usr/bin/env python
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"""
 | 
					"""
 | 
				
			||||||
This script employs a VERY basic heuristic ('porn' in webpage.lower()) to check
 | 
					This script employs a VERY basic heuristic ('porn' in webpage.lower()) to check
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,5 @@
 | 
				
			||||||
#!/usr/bin/env python3
 | 
					#!/usr/bin/env python3
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import json
 | 
					import json
 | 
				
			||||||
import sys
 | 
					import sys
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,6 @@
 | 
				
			||||||
#!/usr/bin/env python3
 | 
					#!/usr/bin/env python3
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import hashlib
 | 
					import hashlib
 | 
				
			||||||
import urllib.request
 | 
					import urllib.request
 | 
				
			||||||
import json
 | 
					import json
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,5 @@
 | 
				
			||||||
#!/usr/bin/env python3
 | 
					#!/usr/bin/env python3
 | 
				
			||||||
 | 
					from __future__ import unicode_literals, with_statement
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import rsa
 | 
					import rsa
 | 
				
			||||||
import json
 | 
					import json
 | 
				
			||||||
| 
						 | 
					@ -29,4 +30,5 @@ signature = hexlify(rsa.pkcs1.sign(json.dumps(versions_info, sort_keys=True).enc
 | 
				
			||||||
print('signature: ' + signature)
 | 
					print('signature: ' + signature)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
versions_info['signature'] = signature
 | 
					versions_info['signature'] = signature
 | 
				
			||||||
json.dump(versions_info, open('update/versions.json', 'w'), indent=4, sort_keys=True)
 | 
					with open('update/versions.json', 'w') as versionsf:
 | 
				
			||||||
 | 
					    json.dump(versions_info, versionsf, indent=4, sort_keys=True)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
#!/usr/bin/env python
 | 
					#!/usr/bin/env python
 | 
				
			||||||
# coding: utf-8
 | 
					# coding: utf-8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from __future__ import with_statement
 | 
					from __future__ import with_statement, unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import datetime
 | 
					import datetime
 | 
				
			||||||
import glob
 | 
					import glob
 | 
				
			||||||
| 
						 | 
					@ -13,7 +13,7 @@ year = str(datetime.datetime.now().year)
 | 
				
			||||||
for fn in glob.glob('*.html*'):
 | 
					for fn in glob.glob('*.html*'):
 | 
				
			||||||
    with io.open(fn, encoding='utf-8') as f:
 | 
					    with io.open(fn, encoding='utf-8') as f:
 | 
				
			||||||
        content = f.read()
 | 
					        content = f.read()
 | 
				
			||||||
    newc = re.sub(u'(?P<copyright>Copyright © 2006-)(?P<year>[0-9]{4})', u'Copyright © 2006-' + year, content)
 | 
					    newc = re.sub(r'(?P<copyright>Copyright © 2006-)(?P<year>[0-9]{4})', 'Copyright © 2006-' + year, content)
 | 
				
			||||||
    if content != newc:
 | 
					    if content != newc:
 | 
				
			||||||
        tmpFn = fn + '.part'
 | 
					        tmpFn = fn + '.part'
 | 
				
			||||||
        with io.open(tmpFn, 'wt', encoding='utf-8') as outf:
 | 
					        with io.open(tmpFn, 'wt', encoding='utf-8') as outf:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,5 @@
 | 
				
			||||||
#!/usr/bin/env python3
 | 
					#!/usr/bin/env python3
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import datetime
 | 
					import datetime
 | 
				
			||||||
import io
 | 
					import io
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,5 @@
 | 
				
			||||||
#!/usr/bin/env python3
 | 
					#!/usr/bin/env python3
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import sys
 | 
					import sys
 | 
				
			||||||
import os
 | 
					import os
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,5 @@
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import io
 | 
					import io
 | 
				
			||||||
import sys
 | 
					import sys
 | 
				
			||||||
import re
 | 
					import re
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,4 @@
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import io
 | 
					import io
 | 
				
			||||||
import os.path
 | 
					import os.path
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,6 @@
 | 
				
			||||||
#!/usr/bin/env python
 | 
					#!/usr/bin/env python
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import os
 | 
					import os
 | 
				
			||||||
from os.path import dirname as dirn
 | 
					from os.path import dirname as dirn
 | 
				
			||||||
import sys
 | 
					import sys
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,14 +9,13 @@ rootDir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
IGNORED_FILES = [
 | 
					IGNORED_FILES = [
 | 
				
			||||||
    'setup.py',  # http://bugs.python.org/issue13943
 | 
					    'setup.py',  # http://bugs.python.org/issue13943
 | 
				
			||||||
 | 
					    'conf.py',
 | 
				
			||||||
 | 
					    'buildserver.py',
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class TestUnicodeLiterals(unittest.TestCase):
 | 
					class TestUnicodeLiterals(unittest.TestCase):
 | 
				
			||||||
    def test_all_files(self):
 | 
					    def test_all_files(self):
 | 
				
			||||||
        print('Skipping this test (not yet fully implemented)')
 | 
					 | 
				
			||||||
        return
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        for dirpath, _, filenames in os.walk(rootDir):
 | 
					        for dirpath, _, filenames in os.walk(rootDir):
 | 
				
			||||||
            for basename in filenames:
 | 
					            for basename in filenames:
 | 
				
			||||||
                if not basename.endswith('.py'):
 | 
					                if not basename.endswith('.py'):
 | 
				
			||||||
| 
						 | 
					@ -30,10 +29,10 @@ class TestUnicodeLiterals(unittest.TestCase):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if "'" not in code and '"' not in code:
 | 
					                if "'" not in code and '"' not in code:
 | 
				
			||||||
                    continue
 | 
					                    continue
 | 
				
			||||||
                imps = 'from __future__ import unicode_literals'
 | 
					                self.assertRegexpMatches(
 | 
				
			||||||
                self.assertTrue(
 | 
					                    code,
 | 
				
			||||||
                    imps in code,
 | 
					                    r'(?:#.*\n*)?from __future__ import (?:[a-z_]+,\s*)*unicode_literals',
 | 
				
			||||||
                    ' %s  missing in %s' % (imps, fn))
 | 
					                    'unicode_literals import  missing in %s' % fn)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                m = re.search(r'(?<=\s)u[\'"](?!\)|,|$)', code)
 | 
					                m = re.search(r'(?<=\s)u[\'"](?!\)|,|$)', code)
 | 
				
			||||||
                if m is not None:
 | 
					                if m is not None:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,6 @@
 | 
				
			||||||
#!/usr/bin/env python
 | 
					#!/usr/bin/env python
 | 
				
			||||||
# coding: utf-8
 | 
					# coding: utf-8
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Allow direct execution
 | 
					# Allow direct execution
 | 
				
			||||||
import os
 | 
					import os
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,6 @@
 | 
				
			||||||
#!/usr/bin/env python
 | 
					#!/usr/bin/env python
 | 
				
			||||||
# coding: utf-8
 | 
					# coding: utf-8
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Allow direct execution
 | 
					# Allow direct execution
 | 
				
			||||||
import os
 | 
					import os
 | 
				
			||||||
| 
						 | 
					@ -32,7 +33,7 @@ params = get_params({
 | 
				
			||||||
TEST_ID = 'BaW_jenozKc'
 | 
					TEST_ID = 'BaW_jenozKc'
 | 
				
			||||||
INFO_JSON_FILE = TEST_ID + '.info.json'
 | 
					INFO_JSON_FILE = TEST_ID + '.info.json'
 | 
				
			||||||
DESCRIPTION_FILE = TEST_ID + '.mp4.description'
 | 
					DESCRIPTION_FILE = TEST_ID + '.mp4.description'
 | 
				
			||||||
EXPECTED_DESCRIPTION = u'''test chars:  "'/\ä↭𝕐
 | 
					EXPECTED_DESCRIPTION = '''test chars:  "'/\ä↭𝕐
 | 
				
			||||||
test URL: https://github.com/rg3/youtube-dl/issues/1892
 | 
					test URL: https://github.com/rg3/youtube-dl/issues/1892
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This is a test video for youtube-dl.
 | 
					This is a test video for youtube-dl.
 | 
				
			||||||
| 
						 | 
					@ -53,11 +54,11 @@ class TestInfoJSON(unittest.TestCase):
 | 
				
			||||||
        self.assertTrue(os.path.exists(INFO_JSON_FILE))
 | 
					        self.assertTrue(os.path.exists(INFO_JSON_FILE))
 | 
				
			||||||
        with io.open(INFO_JSON_FILE, 'r', encoding='utf-8') as jsonf:
 | 
					        with io.open(INFO_JSON_FILE, 'r', encoding='utf-8') as jsonf:
 | 
				
			||||||
            jd = json.load(jsonf)
 | 
					            jd = json.load(jsonf)
 | 
				
			||||||
        self.assertEqual(jd['upload_date'], u'20121002')
 | 
					        self.assertEqual(jd['upload_date'], '20121002')
 | 
				
			||||||
        self.assertEqual(jd['description'], EXPECTED_DESCRIPTION)
 | 
					        self.assertEqual(jd['description'], EXPECTED_DESCRIPTION)
 | 
				
			||||||
        self.assertEqual(jd['id'], TEST_ID)
 | 
					        self.assertEqual(jd['id'], TEST_ID)
 | 
				
			||||||
        self.assertEqual(jd['extractor'], 'youtube')
 | 
					        self.assertEqual(jd['extractor'], 'youtube')
 | 
				
			||||||
        self.assertEqual(jd['title'], u'''youtube-dl test video "'/\ä↭𝕐''')
 | 
					        self.assertEqual(jd['title'], '''youtube-dl test video "'/\ä↭𝕐''')
 | 
				
			||||||
        self.assertEqual(jd['uploader'], 'Philipp Hagemeister')
 | 
					        self.assertEqual(jd['uploader'], 'Philipp Hagemeister')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.assertTrue(os.path.exists(DESCRIPTION_FILE))
 | 
					        self.assertTrue(os.path.exists(DESCRIPTION_FILE))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,5 @@
 | 
				
			||||||
#!/usr/bin/env python
 | 
					#!/usr/bin/env python
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Allow direct execution
 | 
					# Allow direct execution
 | 
				
			||||||
import os
 | 
					import os
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,5 @@
 | 
				
			||||||
#!/usr/bin/env python
 | 
					#!/usr/bin/env python
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Execute with
 | 
					# Execute with
 | 
				
			||||||
# $ python youtube_dl/__main__.py (2.6+)
 | 
					# $ python youtube_dl/__main__.py (2.6+)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,5 @@
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__all__ = ['aes_encrypt', 'key_expansion', 'aes_ctr_decrypt', 'aes_cbc_decrypt', 'aes_decrypt_text']
 | 
					__all__ = ['aes_encrypt', 'key_expansion', 'aes_ctr_decrypt', 'aes_cbc_decrypt', 'aes_decrypt_text']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import base64
 | 
					import base64
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,5 @@
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from .abc import ABCIE
 | 
					from .abc import ABCIE
 | 
				
			||||||
from .academicearth import AcademicEarthCourseIE
 | 
					from .academicearth import AcademicEarthCourseIE
 | 
				
			||||||
from .addanime import AddAnimeIE
 | 
					from .addanime import AddAnimeIE
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,7 +18,7 @@ class BambuserIE(InfoExtractor):
 | 
				
			||||||
    _TEST = {
 | 
					    _TEST = {
 | 
				
			||||||
        'url': 'http://bambuser.com/v/4050584',
 | 
					        'url': 'http://bambuser.com/v/4050584',
 | 
				
			||||||
        # MD5 seems to be flaky, see https://travis-ci.org/rg3/youtube-dl/jobs/14051016#L388
 | 
					        # MD5 seems to be flaky, see https://travis-ci.org/rg3/youtube-dl/jobs/14051016#L388
 | 
				
			||||||
        # u'md5': 'fba8f7693e48fd4e8641b3fd5539a641',
 | 
					        # 'md5': 'fba8f7693e48fd4e8641b3fd5539a641',
 | 
				
			||||||
        'info_dict': {
 | 
					        'info_dict': {
 | 
				
			||||||
            'id': '4050584',
 | 
					            'id': '4050584',
 | 
				
			||||||
            'ext': 'flv',
 | 
					            'ext': 'flv',
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,4 @@
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from .atomicparsley import AtomicParsleyPP
 | 
					from .atomicparsley import AtomicParsleyPP
 | 
				
			||||||
from .ffmpeg import (
 | 
					from .ffmpeg import (
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,5 @@
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from ..utils import PostProcessingError
 | 
					from ..utils import PostProcessingError
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,5 @@
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import os
 | 
					import os
 | 
				
			||||||
import subprocess
 | 
					import subprocess
 | 
				
			||||||
import sys
 | 
					import sys
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,2 +1,3 @@
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__version__ = '2014.11.26'
 | 
					__version__ = '2014.11.26'
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue