diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2018-02-21 09:13:05 -0800 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2018-03-01 10:34:56 -0800 |
commit | d61975d90f6cb5372c9973fa6cec340aed0b1502 (patch) | |
tree | d7005abca4632a6be31d08340ce6182fe2f468ed | |
parent | 6f504afe0bfd3111e0893d7ce6786316b6ebac04 (diff) |
fix account.py
-rw-r--r-- | alot/account.py | 52 | ||||
-rw-r--r-- | tests/account_test.py | 118 |
2 files changed, 85 insertions, 85 deletions
diff --git a/alot/account.py b/alot/account.py index c672686d..03f65561 100644 --- a/alot/account.py +++ b/alot/account.py @@ -65,16 +65,16 @@ class Address(object): usage treat user names as case-insensitve. Therefore we also, by default, treat the user name as case insenstive. - :param unicode user: The "user name" portion of the address. - :param unicode domain: The domain name portion of the address. + :param str user: The "user name" portion of the address. + :param str domain: The domain name portion of the address. :param bool case_sensitive: If False (the default) the user name portion of the address will be compared to the other user name portion without regard to case. If True then it will. """ def __init__(self, user, domain, case_sensitive=False): - assert isinstance(user, unicode), 'Username must be unicode' - assert isinstance(domain, unicode), 'Domain name must be unicode' + assert isinstance(user, str), 'Username must be str' + assert isinstance(domain, str), 'Domain name must be str' self.username = user self.domainname = domain self.case_sensitive = case_sensitive @@ -83,27 +83,27 @@ class Address(object): def from_string(cls, address, case_sensitive=False): """Alternate constructor for building from a string. - :param unicode address: An email address in <user>@<domain> form + :param str address: An email address in <user>@<domain> form :param bool case_sensitive: passed directly to the constructor argument of the same name. :returns: An account from the given arguments :rtype: :class:`Account` """ - assert isinstance(address, unicode), 'address must be unicode' - username, domainname = address.split(u'@') + assert isinstance(address, str), 'address must be str' + username, domainname = address.split('@') return cls(username, domainname, case_sensitive=case_sensitive) def __repr__(self): - return u'Address({!r}, {!r}, case_sensitive={})'.format( + return 'Address({!r}, {!r}, case_sensitive={})'.format( self.username, self.domainname, - unicode(self.case_sensitive)) - - def __unicode__(self): - return u'{}@{}'.format(self.username, self.domainname) + str(self.case_sensitive)) def __str__(self): - return u'{}@{}'.format(self.username, self.domainname).encode('utf-8') + return '{}@{}'.format(self.username, self.domainname) + + def __bytes__(self): + return '{}@{}'.format(self.username, self.domainname).encode('utf-8') def __cmp(self, other, comparitor): """Shared helper for rich comparison operators. @@ -113,24 +113,24 @@ class Address(object): If the username is not considered case sensitive then lower the username of both self and the other, and handle that the other can be - either another :class:`~alot.account.Address`, or a `unicode` instance. + either another :class:`~alot.account.Address`, or a `str` instance. :param other: The other address to compare against - :type other: unicode or ~alot.account.Address + :type other: str or ~alot.account.Address :param callable comparitor: A function with the a signature - (unicode, unicode) -> bool that will compare the two instance. + (str, str) -> bool that will compare the two instance. The intention is to use functions from the operator module. """ - if isinstance(other, unicode): + if isinstance(other, str): try: - ouser, odomain = other.split(u'@') + ouser, odomain = other.split('@') except ValueError: - ouser, odomain = u'', u'' - elif isinstance(other, str): + ouser, odomain = '', '' + elif isinstance(other, bytes): try: - ouser, odomain = other.decode('utf-8').split(u'@') + ouser, odomain = other.decode('utf-8').split('@') except ValueError: - ouser, odomain = '', '' + ouser, odomain = b'', b'' else: ouser = other.username odomain = other.domainname @@ -145,13 +145,13 @@ class Address(object): comparitor(self.domainname.lower(), odomain.lower())) def __eq__(self, other): - if not isinstance(other, (Address, basestring)): - raise TypeError('Address must be compared to Address or basestring') + if not isinstance(other, (Address, (str, bytes))): + raise TypeError('Address must be compared to Address, str, or bytes') return self.__cmp(other, operator.eq) def __ne__(self, other): - if not isinstance(other, (Address, basestring)): - raise TypeError('Address must be compared to Address or basestring') + if not isinstance(other, (Address, (str, bytes))): + raise TypeError('Address must be compared to Address,str, or bytes') # != is the only rich comparitor that cannot be implemented using 'and' # in self.__cmp, so it's implemented as not ==. return not self.__cmp(other, operator.eq) diff --git a/tests/account_test.py b/tests/account_test.py index cfc51bf8..959d4c7c 100644 --- a/tests/account_test.py +++ b/tests/account_test.py @@ -14,7 +14,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -from __future__ import absolute_import + import unittest from alot import account @@ -32,26 +32,26 @@ class TestAccount(unittest.TestCase): def test_get_address(self): """Tests address without aliases.""" - acct = _AccountTestClass(address=u"foo@example.com") - self.assertListEqual(acct.get_addresses(), [u'foo@example.com']) + acct = _AccountTestClass(address="foo@example.com") + self.assertListEqual(acct.get_addresses(), ['foo@example.com']) def test_get_address_with_aliases(self): """Tests address with aliases.""" - acct = _AccountTestClass(address=u"foo@example.com", - aliases=[u'bar@example.com']) + acct = _AccountTestClass(address="foo@example.com", + aliases=['bar@example.com']) self.assertListEqual(acct.get_addresses(), - [u'foo@example.com', u'bar@example.com']) + ['foo@example.com', 'bar@example.com']) def test_deprecated_encrypt_by_default(self): """Tests that depreacted values are still accepted.""" - for each in [u'true', u'yes', u'1']: - acct = _AccountTestClass(address=u'foo@example.com', + for each in ['true', 'yes', '1']: + acct = _AccountTestClass(address='foo@example.com', encrypt_by_default=each) - self.assertEqual(acct.encrypt_by_default, u'all') - for each in [u'false', u'no', u'0']: - acct = _AccountTestClass(address=u'foo@example.com', + self.assertEqual(acct.encrypt_by_default, 'all') + for each in ['false', 'no', '0']: + acct = _AccountTestClass(address='foo@example.com', encrypt_by_default=each) - self.assertEqual(acct.encrypt_by_default, u'none') + self.assertEqual(acct.encrypt_by_default, 'none') class TestAddress(unittest.TestCase): @@ -67,103 +67,103 @@ class TestAddress(unittest.TestCase): account.Address.from_string(b'user@example.com') def test_from_string(self): - addr = account.Address.from_string(u'user@example.com') - self.assertEqual(addr.username, u'user') - self.assertEqual(addr.domainname, u'example.com') - - def test_unicode(self): - addr = account.Address(u'ušer', u'example.com') - self.assertEqual(unicode(addr), u'ušer@example.com') + addr = account.Address.from_string('user@example.com') + self.assertEqual(addr.username, 'user') + self.assertEqual(addr.domainname, 'example.com') def test_str(self): - addr = account.Address(u'ušer', u'example.com') - self.assertEqual(str(addr), u'ušer@example.com'.encode('utf-8')) + addr = account.Address('ušer', 'example.com') + self.assertEqual(str(addr), 'ušer@example.com') + + def test_bytes(self): + addr = account.Address('ušer', 'example.com') + self.assertEqual(bytes(addr), 'ušer@example.com'.encode('utf-8')) def test_eq_unicode(self): - addr = account.Address(u'ušer', u'example.com') - self.assertEqual(addr, u'ušer@example.com') + addr = account.Address('ušer', 'example.com') + self.assertEqual(addr, 'ušer@example.com') def test_eq_address(self): - addr = account.Address(u'ušer', u'example.com') - addr2 = account.Address(u'ušer', u'example.com') + addr = account.Address('ušer', 'example.com') + addr2 = account.Address('ušer', 'example.com') self.assertEqual(addr, addr2) def test_ne_unicode(self): - addr = account.Address(u'ušer', u'example.com') - self.assertNotEqual(addr, u'user@example.com') + addr = account.Address('ušer', 'example.com') + self.assertNotEqual(addr, 'user@example.com') def test_ne_address(self): - addr = account.Address(u'ušer', u'example.com') - addr2 = account.Address(u'user', u'example.com') + addr = account.Address('ušer', 'example.com') + addr2 = account.Address('user', 'example.com') self.assertNotEqual(addr, addr2) def test_eq_unicode_case(self): - addr = account.Address(u'UŠer', u'example.com') - self.assertEqual(addr, u'ušer@example.com') + addr = account.Address('UŠer', 'example.com') + self.assertEqual(addr, 'ušer@example.com') def test_ne_unicode_case(self): - addr = account.Address(u'ušer', u'example.com') - self.assertEqual(addr, u'uŠer@example.com') + addr = account.Address('ušer', 'example.com') + self.assertEqual(addr, 'uŠer@example.com') def test_ne_address_case(self): - addr = account.Address(u'ušer', u'example.com') - addr2 = account.Address(u'uŠer', u'example.com') + addr = account.Address('ušer', 'example.com') + addr2 = account.Address('uŠer', 'example.com') self.assertEqual(addr, addr2) def test_eq_address_case(self): - addr = account.Address(u'UŠer', u'example.com') - addr2 = account.Address(u'ušer', u'example.com') + addr = account.Address('UŠer', 'example.com') + addr2 = account.Address('ušer', 'example.com') self.assertEqual(addr, addr2) def test_eq_unicode_case_sensitive(self): - addr = account.Address(u'UŠer', u'example.com', case_sensitive=True) - self.assertNotEqual(addr, u'ušer@example.com') + addr = account.Address('UŠer', 'example.com', case_sensitive=True) + self.assertNotEqual(addr, 'ušer@example.com') def test_eq_address_case_sensitive(self): - addr = account.Address(u'UŠer', u'example.com', case_sensitive=True) - addr2 = account.Address(u'ušer', u'example.com') + addr = account.Address('UŠer', 'example.com', case_sensitive=True) + addr2 = account.Address('ušer', 'example.com') self.assertNotEqual(addr, addr2) def test_eq_str(self): - addr = account.Address(u'user', u'example.com', case_sensitive=True) + addr = account.Address('user', 'example.com', case_sensitive=True) with self.assertRaises(TypeError): addr == 1 # pylint: disable=pointless-statement def test_ne_str(self): - addr = account.Address(u'user', u'example.com', case_sensitive=True) + addr = account.Address('user', 'example.com', case_sensitive=True) with self.assertRaises(TypeError): addr != 1 # pylint: disable=pointless-statement def test_repr(self): - addr = account.Address(u'user', u'example.com', case_sensitive=True) + addr = account.Address('user', 'example.com', case_sensitive=True) self.assertEqual( repr(addr), - "Address(u'user', u'example.com', case_sensitive=True)") + "Address('user', 'example.com', case_sensitive=True)") def test_domain_name_ne(self): - addr = account.Address(u'user', u'example.com') - self.assertNotEqual(addr, u'user@example.org') + addr = account.Address('user', 'example.com') + self.assertNotEqual(addr, 'user@example.org') def test_domain_name_eq_case(self): - addr = account.Address(u'user', u'example.com') - self.assertEqual(addr, u'user@Example.com') + addr = account.Address('user', 'example.com') + self.assertEqual(addr, 'user@Example.com') def test_domain_name_ne_unicode(self): - addr = account.Address(u'user', u'éxample.com') - self.assertNotEqual(addr, u'user@example.com') + addr = account.Address('user', 'éxample.com') + self.assertNotEqual(addr, 'user@example.com') def test_domain_name_eq_unicode(self): - addr = account.Address(u'user', u'éxample.com') - self.assertEqual(addr, u'user@Éxample.com') + addr = account.Address('user', 'éxample.com') + self.assertEqual(addr, 'user@Éxample.com') def test_domain_name_eq_case_sensitive(self): - addr = account.Address(u'user', u'example.com', case_sensitive=True) - self.assertEqual(addr, u'user@Example.com') + addr = account.Address('user', 'example.com', case_sensitive=True) + self.assertEqual(addr, 'user@Example.com') def test_domain_name_eq_unicode_sensitive(self): - addr = account.Address(u'user', u'éxample.com', case_sensitive=True) - self.assertEqual(addr, u'user@Éxample.com') + addr = account.Address('user', 'éxample.com', case_sensitive=True) + self.assertEqual(addr, 'user@Éxample.com') def test_cmp_empty(self): - addr = account.Address(u'user', u'éxample.com') - self.assertNotEqual(addr, u'') + addr = account.Address('user', 'éxample.com') + self.assertNotEqual(addr, '') |