Skip to content

Commit 56fb6a2

Browse files
committed
formatted code withc black
1 parent e902f88 commit 56fb6a2

File tree

3 files changed

+115
-91
lines changed

3 files changed

+115
-91
lines changed

datauri/__init__.py

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -9,52 +9,52 @@
99

1010
from .exceptions import InvalidCharset, InvalidDataURI, InvalidMimeType
1111

12-
MIMETYPE_REGEX = r'[\w]+\/[\w\-\+\.]+'
13-
_MIMETYPE_RE = re.compile('^{}$'.format(MIMETYPE_REGEX))
12+
MIMETYPE_REGEX = r"[\w]+\/[\w\-\+\.]+"
13+
_MIMETYPE_RE = re.compile("^{}$".format(MIMETYPE_REGEX))
1414

15-
CHARSET_REGEX = r'[\w\-\+\.]+'
16-
_CHARSET_RE = re.compile('^{}$'.format(CHARSET_REGEX))
15+
CHARSET_REGEX = r"[\w\-\+\.]+"
16+
_CHARSET_RE = re.compile("^{}$".format(CHARSET_REGEX))
1717

1818
DATA_URI_REGEX = (
19-
r'data:' +
20-
r'(?P<mimetype>{})?'.format(MIMETYPE_REGEX) +
21-
r"(?:\;name\=(?P<name>[\w\.\-%!*'~\(\)]+))?" +
22-
r'(?:\;charset\=(?P<charset>{}))?'.format(CHARSET_REGEX) +
23-
r'(?P<base64>\;base64)?' +
24-
r',(?P<data>.*)')
25-
_DATA_URI_RE = re.compile(r'^{}$'.format(DATA_URI_REGEX), re.DOTALL)
19+
r"data:"
20+
+ r"(?P<mimetype>{})?".format(MIMETYPE_REGEX)
21+
+ r"(?:\;name\=(?P<name>[\w\.\-%!*'~\(\)]+))?"
22+
+ r"(?:\;charset\=(?P<charset>{}))?".format(CHARSET_REGEX)
23+
+ r"(?P<base64>\;base64)?"
24+
+ r",(?P<data>.*)"
25+
)
26+
_DATA_URI_RE = re.compile(r"^{}$".format(DATA_URI_REGEX), re.DOTALL)
2627

2728

2829
class DataURI(str):
29-
3030
@classmethod
3131
def make(cls, mimetype, charset, base64, data):
32-
parts = ['data:']
32+
parts = ["data:"]
3333
if mimetype is not None:
3434
if not _MIMETYPE_RE.match(mimetype):
3535
raise InvalidMimeType("Invalid mimetype: %r" % mimetype)
3636
parts.append(mimetype)
3737
if charset is not None:
3838
if not _CHARSET_RE.match(charset):
3939
raise InvalidCharset("Invalid charset: %r" % charset)
40-
parts.extend([';charset=', charset])
40+
parts.extend([";charset=", charset])
4141
if base64:
42-
parts.append(';base64')
43-
_charset = charset or 'utf-8'
42+
parts.append(";base64")
43+
_charset = charset or "utf-8"
4444
if isinstance(data, bytes):
4545
_data = data
4646
else:
4747
_data = bytes(data, _charset)
4848
encoded_data = encode64(_data).decode(_charset).strip()
4949
else:
5050
encoded_data = quote(data)
51-
parts.extend([',', encoded_data])
52-
return cls(''.join(parts))
51+
parts.extend([",", encoded_data])
52+
return cls("".join(parts))
5353

5454
@classmethod
5555
def from_file(cls, filename, charset=None, base64=True):
5656
mimetype, _ = mimetypes.guess_type(filename, strict=False)
57-
with open(filename, 'rb') as fp:
57+
with open(filename, "rb") as fp:
5858
data = fp.read()
5959

6060
return cls.make(mimetype, charset, base64, data)
@@ -65,10 +65,10 @@ def __new__(cls, *args, **kwargs):
6565
return uri
6666

6767
def __repr__(self):
68-
return 'DataURI(%s)' % (super(DataURI, self).__repr__(),)
68+
return "DataURI(%s)" % (super(DataURI, self).__repr__(),)
6969

7070
def wrap(self, width=76):
71-
return '\n'.join(textwrap.wrap(self, width))
71+
return "\n".join(textwrap.wrap(self, width))
7272

7373
@property
7474
def mimetype(self):
@@ -105,15 +105,15 @@ def _parse(self):
105105
match = _DATA_URI_RE.match(self)
106106
if not match:
107107
raise InvalidDataURI("Not a valid data URI: %r" % self)
108-
mimetype = match.group('mimetype') or None
109-
name = match.group('name') or None
110-
charset = match.group('charset') or None
108+
mimetype = match.group("mimetype") or None
109+
name = match.group("name") or None
110+
charset = match.group("charset") or None
111111

112-
if match.group('base64'):
113-
_charset = charset or 'utf-8'
114-
_data = bytes(match.group('data'), _charset)
112+
if match.group("base64"):
113+
_charset = charset or "utf-8"
114+
_data = bytes(match.group("data"), _charset)
115115
data = decode64(_data)
116116
else:
117-
data = unquote(match.group('data'))
117+
data = unquote(match.group("data"))
118118

119-
return mimetype, name, charset, bool(match.group('base64')), data
119+
return mimetype, name, charset, bool(match.group("base64")), data

setup.py

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,39 @@
22
from setuptools import find_packages, setup
33

44

5-
VERSION = '0.2.9'
5+
VERSION = "0.2.9"
66

77

88
def read(fname):
99
try:
1010
with open(os.path.join(os.path.dirname(__file__), fname)) as fh:
1111
return fh.read()
1212
except IOError:
13-
return ''
13+
return ""
1414

1515

1616
setup(
17-
name='python-datauri',
17+
name="python-datauri",
1818
version=VERSION,
19-
url='https://github.com/fcurella/python-datauri/',
20-
maintainer='Flavio Curella',
21-
maintainer_email='[email protected]',
19+
url="https://github.com/fcurella/python-datauri/",
20+
maintainer="Flavio Curella",
21+
maintainer_email="[email protected]",
2222
description="A li'l class for data URI manipulation in Python",
23-
long_description=read('README.rst'),
24-
license='MIT',
25-
packages=find_packages(exclude=['*.tests']),
23+
long_description=read("README.rst"),
24+
license="MIT",
25+
packages=find_packages(exclude=["*.tests"]),
2626
platforms=["any"],
2727
classifiers=[
28-
'Development Status :: 4 - Beta',
29-
'License :: OSI Approved :: MIT License',
30-
'Operating System :: OS Independent',
31-
'Programming Language :: Python',
32-
'Programming Language :: Python :: 3',
33-
'Programming Language :: Python :: 3.5',
34-
'Programming Language :: Python :: 3.6',
35-
'Programming Language :: Python :: 3.7',
36-
'Programming Language :: Python :: 3.8',
37-
'Programming Language :: Python :: 3.9',
28+
"Development Status :: 4 - Beta",
29+
"License :: OSI Approved :: MIT License",
30+
"Operating System :: OS Independent",
31+
"Programming Language :: Python",
32+
"Programming Language :: Python :: 3",
33+
"Programming Language :: Python :: 3.5",
34+
"Programming Language :: Python :: 3.6",
35+
"Programming Language :: Python :: 3.7",
36+
"Programming Language :: Python :: 3.8",
37+
"Programming Language :: Python :: 3.9",
3838
],
39-
test_suite='tests',
39+
test_suite="tests",
4040
)

tests/test_parsing.py

Lines changed: 66 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -7,63 +7,75 @@
77

88

99
class ParseTestCase(unittest.TestCase):
10-
1110
def test_parse(self):
12-
t = 'data:text/plain;charset=utf-8,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu'
11+
t = "data:text/plain;charset=utf-8,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu"
1312
DataURI(t)
1413

1514
def test_parse_base64(self):
16-
t = 'data:text/plain;charset=utf-8;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu'
15+
t = "data:text/plain;charset=utf-8;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu"
1716
DataURI(t)
1817

1918
def test_parse_invalid_datauri(self):
20-
t = 'data:*garbled*;charset=utf-8;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu'
19+
t = "data:*garbled*;charset=utf-8;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu"
2120
with self.assertRaises(exceptions.InvalidDataURI):
2221
DataURI(t)
2322

24-
t = 'data:text/plain;charset=*garbled*;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu'
23+
t = "data:text/plain;charset=*garbled*;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu"
2524
with self.assertRaises(exceptions.InvalidDataURI):
2625
DataURI(t)
2726

2827
def test_parse_invalid_mimetype(self):
2928
with self.assertRaises(exceptions.InvalidMimeType):
30-
DataURI.make(mimetype='*garbled*', charset='utf-8', base64=True, data='VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu')
29+
DataURI.make(
30+
mimetype="*garbled*",
31+
charset="utf-8",
32+
base64=True,
33+
data="VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu",
34+
)
3135

3236
def test_parse_invalid_charset(self):
3337
with self.assertRaises(exceptions.InvalidCharset):
34-
DataURI.make(mimetype='text/plain', charset='*garbled*', base64=True, data='VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu')
38+
DataURI.make(
39+
mimetype="text/plain",
40+
charset="*garbled*",
41+
base64=True,
42+
data="VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu",
43+
)
3544

3645
def test_from_file(self):
37-
filename = os.path.join(TEST_DIR, 'test_file.txt')
46+
filename = os.path.join(TEST_DIR, "test_file.txt")
3847
parsed = DataURI.from_file(filename)
39-
self.assertEqual(parsed.data, b'This is a message.\n')
48+
self.assertEqual(parsed.data, b"This is a message.\n")
4049
self.assertEqual(parsed.charset, None)
4150

4251
def test_from_file_charset(self):
43-
filename = os.path.join(TEST_DIR, 'test_file.txt')
44-
parsed = DataURI.from_file(filename, charset='us-ascii')
45-
self.assertEqual(parsed.data, b'This is a message.\n')
46-
self.assertEqual(parsed.text, 'This is a message.\n')
47-
self.assertEqual(parsed.charset, 'us-ascii')
48-
49-
filename = os.path.join(TEST_DIR, 'test_file_ebcdic.txt')
50-
parsed = DataURI.from_file(filename, charset='cp500')
51-
self.assertEqual(parsed.data, b'\xe3\x88\x89\xa2@\x89\xa2@\x81@\x94\x85\xa2\xa2\x81\x87\x85K%')
52-
self.assertEqual(parsed.text, 'This is a message.\n')
53-
self.assertEqual(parsed.charset, 'cp500')
52+
filename = os.path.join(TEST_DIR, "test_file.txt")
53+
parsed = DataURI.from_file(filename, charset="us-ascii")
54+
self.assertEqual(parsed.data, b"This is a message.\n")
55+
self.assertEqual(parsed.text, "This is a message.\n")
56+
self.assertEqual(parsed.charset, "us-ascii")
57+
58+
filename = os.path.join(TEST_DIR, "test_file_ebcdic.txt")
59+
parsed = DataURI.from_file(filename, charset="cp500")
60+
self.assertEqual(
61+
parsed.data,
62+
b"\xe3\x88\x89\xa2@\x89\xa2@\x81@\x94\x85\xa2\xa2\x81\x87\x85K%",
63+
)
64+
self.assertEqual(parsed.text, "This is a message.\n")
65+
self.assertEqual(parsed.charset, "cp500")
5466

5567
def test_no_wrap(self):
56-
filename = os.path.join(TEST_DIR, 'test_long_file.txt')
68+
filename = os.path.join(TEST_DIR, "test_long_file.txt")
5769
parsed = DataURI.from_file(filename)
5870
self.assertFalse("\n" in str(parsed))
5971

6072
def test_parse_name(self):
61-
t = 'data:text/plain;name=file-1_final.txt;charset=utf-8;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu'
73+
t = "data:text/plain;name=file-1_final.txt;charset=utf-8;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu"
6274
parsed = DataURI(t)
63-
self.assertEqual(parsed.name, 'file-1_final.txt')
75+
self.assertEqual(parsed.name, "file-1_final.txt")
6476

6577
def test_emptyname(self):
66-
t = 'data:text/plain;charset=utf-8;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu'
78+
t = "data:text/plain;charset=utf-8;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu"
6779
parsed = DataURI(t)
6880
self.assertEqual(parsed.name, None)
6981

@@ -73,52 +85,64 @@ def test_urlencoded(self):
7385
self.assertEqual(parsed.name, "file 1 ('final'!) *~.txt")
7486

7587
def test_parse_name_no_charset(self):
76-
t = 'data:text/plain;name=file.txt;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu'
88+
t = "data:text/plain;name=file.txt;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu"
7789
parsed = DataURI(t)
78-
self.assertEqual(parsed.name, 'file.txt')
90+
self.assertEqual(parsed.name, "file.txt")
7991

8092
def test_mimetype(self):
81-
t = 'data:text/plain;charset=utf-8;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu'
93+
t = "data:text/plain;charset=utf-8;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu"
8294
parsed = DataURI(t)
83-
self.assertEqual(parsed.mimetype, 'text/plain')
95+
self.assertEqual(parsed.mimetype, "text/plain")
8496

8597
def test_is_base64(self):
86-
t = 'data:text/plain;charset=utf-8;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu'
98+
t = "data:text/plain;charset=utf-8;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu"
8799
parsed = DataURI(t)
88100
self.assertEqual(parsed.is_base64, True)
89101

90102
def test_text(self):
91-
t = 'data:text/plain;name=file-1_final.txt;charset=utf-8;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu'
103+
t = "data:text/plain;name=file-1_final.txt;charset=utf-8;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu"
92104
parsed = DataURI(t)
93105
self.assertTrue(isinstance(parsed.data, bytes))
94106
self.assertTrue(isinstance(parsed.text, str))
95107

96108
def test_wrap(self):
97-
t = 'data:text/plain;charset=utf-8;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu'
109+
t = "data:text/plain;charset=utf-8;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu"
98110
parsed = DataURI(t)
99-
self.assertEqual(parsed.wrap(), """data:text/plain;charset=utf-8;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3Z
100-
lciB0aGUgbGF6eSBkb2cu""")
111+
self.assertEqual(
112+
parsed.wrap(),
113+
"""data:text/plain;charset=utf-8;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3Z
114+
lciB0aGUgbGF6eSBkb2cu""",
115+
)
101116

102117
def test_text_no_charset(self):
103-
t = 'data:text/plain;name=file.txt;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu'
118+
t = "data:text/plain;name=file.txt;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu"
104119
parsed = DataURI(t)
105120
self.assertTrue(isinstance(parsed.data, bytes))
106121
with self.assertRaises(exceptions.InvalidCharset):
107122
self.assertTrue(isinstance(parsed.text, str))
108123

109124
def test_make(self):
110-
made = DataURI.make('text/plain', charset='us-ascii', base64=False, data='This is a message.')
111-
self.assertEqual(made.data, 'This is a message.')
125+
made = DataURI.make(
126+
"text/plain", charset="us-ascii", base64=False, data="This is a message."
127+
)
128+
self.assertEqual(made.data, "This is a message.")
112129

113130
def test_make_base64(self):
114-
made = DataURI.make('text/plain', charset='us-ascii', base64=True, data='This is a message.')
115-
self.assertEqual(made.text, u'This is a message.')
131+
made = DataURI.make(
132+
"text/plain", charset="us-ascii", base64=True, data="This is a message."
133+
)
134+
self.assertEqual(made.text, u"This is a message.")
116135

117136
def test_make_no_charset(self):
118-
made = DataURI.make('text/plain', charset=None, base64=True, data='This is a message.')
119-
self.assertEqual(made.data, b'This is a message.')
137+
made = DataURI.make(
138+
"text/plain", charset=None, base64=True, data="This is a message."
139+
)
140+
self.assertEqual(made.data, b"This is a message.")
120141

121142
def test_repr(self):
122-
t = 'data:text/plain;charset=utf-8;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu'
143+
t = "data:text/plain;charset=utf-8;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu"
123144
uri = DataURI(t)
124-
self.assertEqual(repr(uri), "DataURI('data:text/plain;charset=utf-8;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu')")
145+
self.assertEqual(
146+
repr(uri),
147+
"DataURI('data:text/plain;charset=utf-8;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu')",
148+
)

0 commit comments

Comments
 (0)