From f9a77a14fca7c752d4d8a81b9385cf189f4b1a4d Mon Sep 17 00:00:00 2001 From: russellballestrini Date: Fri, 25 May 2018 17:37:42 -0400 Subject: [PATCH] the result of running `black .` --- miniuri/miniuri.py | 108 ++++++++++++----------- setup.py | 53 +++++------- test_miniuri.py | 207 ++++++++++++++++++++++++++------------------- 3 files changed, 201 insertions(+), 167 deletions(-) diff --git a/miniuri/miniuri.py b/miniuri/miniuri.py index 7947401..e61588b 100644 --- a/miniuri/miniuri.py +++ b/miniuri/miniuri.py @@ -1,4 +1,4 @@ -class Uri( object ): +class Uri(object): """ miniuri is a universal URI parser class. The parser grants access to the following attributes: @@ -13,96 +13,104 @@ class Uri( object ): | | port filename """ - def __init__( self, uri = None ): - if uri: self.uri = uri # invoke uri.setter - def __str__(self): return self.uri + def __init__(self, uri=None): + if uri: + self.uri = uri # invoke uri.setter + + def __str__(self): + return self.uri @property - def uri( self ): + def uri(self): """build and return uri from attributes""" - scheme = self.scheme + '://' if self.scheme else '' - return ''.join([scheme, self.authority, self.relative_uri]) + scheme = self.scheme + "://" if self.scheme else "" + return "".join([scheme, self.authority, self.relative_uri]) @uri.setter - def uri( self, uri ): + def uri(self, uri): """parse and set all uri attributes""" self.scheme = self.username = self.password = None self.hostname = self.port = self.path = None - self.filename = self.query = self.fragment = None + self.filename = self.query = self.fragment = None - if '://' in uri: - self.scheme, uri = uri.split( '://' ) + if "://" in uri: + self.scheme, uri = uri.split("://") - if '#' in uri: - uri, self.fragment = uri.split('#') + if "#" in uri: + uri, self.fragment = uri.split("#") - if '?' in uri: - uri, self.query = uri.split('?') + if "?" in uri: + uri, self.query = uri.split("?") # invoke authority setter. - self.authority = uri.split( '/' )[0] + self.authority = uri.split("/")[0] # invoke path setter. - self.path = uri[ len( self.authority ): ] - + self.path = uri[len(self.authority) :] + @property - def authority( self ): + def authority(self): """return a authority string from attributes""" - a = '' + a = "" if self.username: a += self.username - if self.password: a += ':' + self.password - a += '@' + if self.password: + a += ":" + self.password + a += "@" a += self.hostname - if self.port: a += ':' + self.port + if self.port: + a += ":" + self.port return a @authority.setter - def authority( self, a ): + def authority(self, a): """set all the attribute that makeup a authority""" self.username = self.password = self.port = None self.hostname = a - if '@' in self.hostname: - self.userinfo, self.hostname = a.split( '@' ) # userinfo setter - if ':' in self.hostname: - self.hostname, self.port = self.hostname.split( ':' ) + if "@" in self.hostname: + self.userinfo, self.hostname = a.split("@") # userinfo setter + if ":" in self.hostname: + self.hostname, self.port = self.hostname.split(":") @property def relative_uri(self): """return everything that isn't part of the authority.""" - path = query = fragment = '' - if self.path: path = self.path - if self.query: query = '?' + self.query - if self.fragment: fragment = '#' + self.fragment - return ''.join([path, query, fragment]) + path = query = fragment = "" + if self.path: + path = self.path + if self.query: + query = "?" + self.query + if self.fragment: + fragment = "#" + self.fragment + return "".join([path, query, fragment]) @property - def userinfo( self ): + def userinfo(self): """return username:password, username, or None""" if self.username: - if self.password: - return self.username + ':' + self.password + if self.password: + return self.username + ":" + self.password return self.username @userinfo.setter - def userinfo( self, info ): + def userinfo(self, info): """set username and password""" - self.username, self.password = info, None - if ':' in info: - self.username, self.password = info.split( ':' ) + self.username, self.password = info, None + if ":" in info: + self.username, self.password = info.split(":") @property def path(self): """return path""" - p = self._path if self._path is not None else '' - f = self.filename if self.filename is not None else '' + p = self._path if self._path is not None else "" + f = self.filename if self.filename is not None else "" return p + f @path.setter def path(self, new_path): if new_path: - self.filename = new_path.split('/')[-1] + self.filename = new_path.split("/")[-1] self._path = new_path.rstrip(self.filename) else: self.filename = None @@ -111,18 +119,18 @@ class Uri( object ): @property def filename(self): """return filename""" - if self._filename: + if self._filename: if self.extension: - return '{}.{}'.format(self._filename, self.extension) + return "{}.{}".format(self._filename, self.extension) return self._filename - return '' + return "" @filename.setter def filename(self, new_filename): - self.extension = '' + self.extension = "" if new_filename: - self._filename = new_filename.split('.')[0] - if '.' in new_filename: - self.extension = new_filename.split('.')[-1] + self._filename = new_filename.split(".")[0] + if "." in new_filename: + self.extension = new_filename.split(".")[-1] else: self._filename = None diff --git a/setup.py b/setup.py index 47c306e..aaa0476 100644 --- a/setup.py +++ b/setup.py @@ -1,41 +1,34 @@ # installation: pip install miniuri -from setuptools import ( - setup, - find_packages, -) +from setuptools import setup, find_packages -setup( - name='miniuri', - version='1.0.5', - long_description = open('README.rst').read(), - description='miniuri: The Universal URI Parser', - keywords = 'miniuri uri url parser', - - author = 'Russell Ballestrini', - author_email = 'russell@ballestrini.net', - url = 'https://bitbucket.org/russellballestrini/miniuri/src', - - platforms=['All'], - license='Public Domain', - - packages = find_packages(), +setup( + name="miniuri", + version="1.0.5", + long_description=open("README.rst").read(), + description="miniuri: The Universal URI Parser", + keywords="miniuri uri url parser", + author="Russell Ballestrini", + author_email="russell@ballestrini.net", + url="https://bitbucket.org/russellballestrini/miniuri/src", + platforms=["All"], + license="Public Domain", + packages=find_packages(), include_package_data=True, - - classifiers = [ + classifiers=[ # Specify the Python versions you support here. In particular, ensure # that you indicate whether you support Python 2, Python 3 or both. - 'Programming Language :: Python :: 2', - 'Programming Language :: Python :: 2.6', - 'Programming Language :: Python :: 2.7', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.2', - 'Programming Language :: Python :: 3.3', - 'Programming Language :: Python :: 3.4', + "Programming Language :: Python :: 2", + "Programming Language :: Python :: 2.6", + "Programming Language :: Python :: 2.7", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.2", + "Programming Language :: Python :: 3.3", + "Programming Language :: Python :: 3.4", ], ) -# setup keyword args: http://peak.telecommunity.com/DevCenter/setuptools +# setup keyword args: http://peak.telecommunity.com/DevCenter/setuptools # built and uploaded to pypi with this: -#python setup.py sdist bdist_egg register upload +# python setup.py sdist bdist_egg register upload diff --git a/test_miniuri.py b/test_miniuri.py index 8e1de78..5bc4831 100644 --- a/test_miniuri.py +++ b/test_miniuri.py @@ -2,152 +2,185 @@ from unittest import TestCase from miniuri import Uri + class TestMiniUri(TestCase): def setUp(self): # "http://www.foxhop.net/samsung/HL-T5087SA/red-LED-failure" - self.u = Uri('https://fox:pass@www.foxhop.net:81/path/filename.jpg?p=2#5') + self.u = Uri("https://fox:pass@www.foxhop.net:81/path/filename.jpg?p=2#5") def test_uri(self): - self.assertEqual(self.u.uri, 'https://fox:pass@www.foxhop.net:81/path/filename.jpg?p=2#5') + self.assertEqual( + self.u.uri, "https://fox:pass@www.foxhop.net:81/path/filename.jpg?p=2#5" + ) def test_scheme(self): - self.assertEqual(self.u.scheme, 'https') + self.assertEqual(self.u.scheme, "https") def test_authority(self): - self.assertEqual(self.u.authority, 'fox:pass@www.foxhop.net:81') + self.assertEqual(self.u.authority, "fox:pass@www.foxhop.net:81") def test_userinfo(self): - self.assertEqual(self.u.userinfo, 'fox:pass') + self.assertEqual(self.u.userinfo, "fox:pass") def test_username(self): - self.assertEqual(self.u.username, 'fox') - + self.assertEqual(self.u.username, "fox") + def test_password(self): - self.assertEqual(self.u.password, 'pass') + self.assertEqual(self.u.password, "pass") def test_hostname(self): - self.assertEqual(self.u.hostname, 'www.foxhop.net') - + self.assertEqual(self.u.hostname, "www.foxhop.net") + def test_port(self): - self.assertEqual(self.u.port, '81') + self.assertEqual(self.u.port, "81") def test_path(self): - self.assertEqual(self.u.path, '/path/filename.jpg') + self.assertEqual(self.u.path, "/path/filename.jpg") def test_filename(self): - self.assertEqual(self.u.filename, 'filename.jpg') + self.assertEqual(self.u.filename, "filename.jpg") def test_extension(self): - self.assertEqual(self.u.extension, 'jpg') + self.assertEqual(self.u.extension, "jpg") def test_query(self): - self.assertEqual(self.u.query, 'p=2') + self.assertEqual(self.u.query, "p=2") def test_fragment(self): - self.assertEqual(self.u.fragment, '5') + self.assertEqual(self.u.fragment, "5") # test edge case URIs def test_uri_no_path(self): - self.u = Uri('https://fox:pass@www.foxhop.net:81?p=2#5') - self.assertEqual(self.u.uri, 'https://fox:pass@www.foxhop.net:81?p=2#5') - self.assertEqual(self.u.username, 'fox') - self.assertEqual(self.u.password, 'pass') - self.assertEqual(self.u.hostname, 'www.foxhop.net') - self.assertEqual(self.u.port, '81') - self.assertEqual(self.u.path, '') - self.assertEqual(self.u.filename, '') - self.assertEqual(self.u.extension, '') + self.u = Uri("https://fox:pass@www.foxhop.net:81?p=2#5") + self.assertEqual(self.u.uri, "https://fox:pass@www.foxhop.net:81?p=2#5") + self.assertEqual(self.u.username, "fox") + self.assertEqual(self.u.password, "pass") + self.assertEqual(self.u.hostname, "www.foxhop.net") + self.assertEqual(self.u.port, "81") + self.assertEqual(self.u.path, "") + self.assertEqual(self.u.filename, "") + self.assertEqual(self.u.extension, "") def test_uri_filename_only_path(self): - self.u = Uri('https://fox:pass@www.foxhop.net:81/filename.jpg?p=2#5') - self.assertEqual(self.u.uri, 'https://fox:pass@www.foxhop.net:81/filename.jpg?p=2#5') - self.assertEqual(self.u.username, 'fox') - self.assertEqual(self.u.password, 'pass') - self.assertEqual(self.u.hostname, 'www.foxhop.net') - self.assertEqual(self.u.port, '81') - self.assertEqual(self.u.path, '/filename.jpg') - self.assertEqual(self.u.filename, 'filename.jpg') - self.assertEqual(self.u.extension, 'jpg') + self.u = Uri("https://fox:pass@www.foxhop.net:81/filename.jpg?p=2#5") + self.assertEqual( + self.u.uri, "https://fox:pass@www.foxhop.net:81/filename.jpg?p=2#5" + ) + self.assertEqual(self.u.username, "fox") + self.assertEqual(self.u.password, "pass") + self.assertEqual(self.u.hostname, "www.foxhop.net") + self.assertEqual(self.u.port, "81") + self.assertEqual(self.u.path, "/filename.jpg") + self.assertEqual(self.u.filename, "filename.jpg") + self.assertEqual(self.u.extension, "jpg") def test_uri_trailing_slash_only_path(self): - self.u = Uri('https://fox:pass@www.foxhop.net:81/?p=2#5') - self.assertEqual(self.u.path, '/') - self.assertEqual(self.u.uri, 'https://fox:pass@www.foxhop.net:81/?p=2#5') + self.u = Uri("https://fox:pass@www.foxhop.net:81/?p=2#5") + self.assertEqual(self.u.path, "/") + self.assertEqual(self.u.uri, "https://fox:pass@www.foxhop.net:81/?p=2#5") + + # test_change_attributes: - # test_change_attributes: - def test_change_uri(self): - self.u.uri = 'http://zell:sapp@wwws.foxhop.net:82/my/file.png?p=3#6' - self.assertEqual(self.u.uri, 'http://zell:sapp@wwws.foxhop.net:82/my/file.png?p=3#6') + self.u.uri = "http://zell:sapp@wwws.foxhop.net:82/my/file.png?p=3#6" + self.assertEqual( + self.u.uri, "http://zell:sapp@wwws.foxhop.net:82/my/file.png?p=3#6" + ) def test_change_scheme(self): - self.u.scheme = 'http' - self.assertEqual(self.u.scheme, 'http') - self.assertEqual(self.u.uri, 'http://fox:pass@www.foxhop.net:81/path/filename.jpg?p=2#5') + self.u.scheme = "http" + self.assertEqual(self.u.scheme, "http") + self.assertEqual( + self.u.uri, "http://fox:pass@www.foxhop.net:81/path/filename.jpg?p=2#5" + ) def test_change_authority(self): - self.u.authority = 'zell:ssap@wwws.foxhop.net:82' - self.assertEqual(self.u.authority, 'zell:ssap@wwws.foxhop.net:82') - self.assertEqual(self.u.uri, 'https://zell:ssap@wwws.foxhop.net:82/path/filename.jpg?p=2#5') + self.u.authority = "zell:ssap@wwws.foxhop.net:82" + self.assertEqual(self.u.authority, "zell:ssap@wwws.foxhop.net:82") + self.assertEqual( + self.u.uri, "https://zell:ssap@wwws.foxhop.net:82/path/filename.jpg?p=2#5" + ) def test_change_userinfo(self): - self.u.userinfo = 'zell:ssap' - self.assertEqual(self.u.userinfo, 'zell:ssap') - self.assertEqual(self.u.uri, 'https://zell:ssap@www.foxhop.net:81/path/filename.jpg?p=2#5') - self.u.userinfo = 'zell' - self.assertEqual(self.u.userinfo, 'zell') - self.assertEqual(self.u.uri, 'https://zell@www.foxhop.net:81/path/filename.jpg?p=2#5') + self.u.userinfo = "zell:ssap" + self.assertEqual(self.u.userinfo, "zell:ssap") + self.assertEqual( + self.u.uri, "https://zell:ssap@www.foxhop.net:81/path/filename.jpg?p=2#5" + ) + self.u.userinfo = "zell" + self.assertEqual(self.u.userinfo, "zell") + self.assertEqual( + self.u.uri, "https://zell@www.foxhop.net:81/path/filename.jpg?p=2#5" + ) def test_change_username(self): - self.u.username = 'zell' - self.assertEqual(self.u.username, 'zell') - self.assertEqual(self.u.uri, 'https://zell:pass@www.foxhop.net:81/path/filename.jpg?p=2#5') - + self.u.username = "zell" + self.assertEqual(self.u.username, "zell") + self.assertEqual( + self.u.uri, "https://zell:pass@www.foxhop.net:81/path/filename.jpg?p=2#5" + ) + def test_change_password(self): - self.u.password = 'ssap' - self.assertEqual(self.u.password, 'ssap') - self.assertEqual(self.u.uri, 'https://fox:ssap@www.foxhop.net:81/path/filename.jpg?p=2#5') + self.u.password = "ssap" + self.assertEqual(self.u.password, "ssap") + self.assertEqual( + self.u.uri, "https://fox:ssap@www.foxhop.net:81/path/filename.jpg?p=2#5" + ) def test_change_hostname(self): - self.u.hostname = 'wwws.foxhop.net' - self.assertEqual(self.u.hostname, 'wwws.foxhop.net') - self.assertEqual(self.u.uri, 'https://fox:pass@wwws.foxhop.net:81/path/filename.jpg?p=2#5') - + self.u.hostname = "wwws.foxhop.net" + self.assertEqual(self.u.hostname, "wwws.foxhop.net") + self.assertEqual( + self.u.uri, "https://fox:pass@wwws.foxhop.net:81/path/filename.jpg?p=2#5" + ) + def test_change_port(self): - self.u.port = '82' - self.assertEqual(self.u.port, '82') - self.assertEqual(self.u.uri, 'https://fox:pass@www.foxhop.net:82/path/filename.jpg?p=2#5') + self.u.port = "82" + self.assertEqual(self.u.port, "82") + self.assertEqual( + self.u.uri, "https://fox:pass@www.foxhop.net:82/path/filename.jpg?p=2#5" + ) def test_change_path(self): - self.u.path = '/my/file.png' - self.assertEqual(self.u.path, '/my/file.png') - self.assertEqual(self.u.filename, 'file.png') - self.assertEqual(self.u.extension, 'png') - self.assertEqual(self.u.uri, 'https://fox:pass@www.foxhop.net:81/my/file.png?p=2#5') + self.u.path = "/my/file.png" + self.assertEqual(self.u.path, "/my/file.png") + self.assertEqual(self.u.filename, "file.png") + self.assertEqual(self.u.extension, "png") + self.assertEqual( + self.u.uri, "https://fox:pass@www.foxhop.net:81/my/file.png?p=2#5" + ) def test_change_filename(self): - self.u.filename = 'file.png' - self.assertEqual(self.u.filename, 'file.png') - self.assertEqual(self.u.extension, 'png') - self.assertEqual(self.u.uri, 'https://fox:pass@www.foxhop.net:81/path/file.png?p=2#5') + self.u.filename = "file.png" + self.assertEqual(self.u.filename, "file.png") + self.assertEqual(self.u.extension, "png") + self.assertEqual( + self.u.uri, "https://fox:pass@www.foxhop.net:81/path/file.png?p=2#5" + ) def test_change_extension(self): - self.u.extension = 'png' - self.assertEqual(self.u.filename, 'filename.png') - self.assertEqual(self.u.extension, 'png') - self.assertEqual(self.u.uri, 'https://fox:pass@www.foxhop.net:81/path/filename.png?p=2#5') + self.u.extension = "png" + self.assertEqual(self.u.filename, "filename.png") + self.assertEqual(self.u.extension, "png") + self.assertEqual( + self.u.uri, "https://fox:pass@www.foxhop.net:81/path/filename.png?p=2#5" + ) def test_change_query(self): - self.u.query = 'p=3' - self.assertEqual(self.u.query, 'p=3') - self.assertEqual(self.u.uri, 'https://fox:pass@www.foxhop.net:81/path/filename.jpg?p=3#5') + self.u.query = "p=3" + self.assertEqual(self.u.query, "p=3") + self.assertEqual( + self.u.uri, "https://fox:pass@www.foxhop.net:81/path/filename.jpg?p=3#5" + ) def test_change_fragment(self): - self.u.fragment = '6' - self.assertEqual(self.u.fragment, '6') - self.assertEqual(self.u.uri, 'https://fox:pass@www.foxhop.net:81/path/filename.jpg?p=2#6') + self.u.fragment = "6" + self.assertEqual(self.u.fragment, "6") + self.assertEqual( + self.u.uri, "https://fox:pass@www.foxhop.net:81/path/filename.jpg?p=2#6" + ) def test_relative_uri(self): - self.assertEqual(self.u.relative_uri, '/path/filename.jpg?p=2#5') + self.assertEqual(self.u.relative_uri, "/path/filename.jpg?p=2#5")