1- # -*- coding: utf-8 -*-
2- from __future__ import unicode_literals
3-
41import sys
52import re
63from operator import itemgetter
74from itertools import groupby
85
9- from nameparser .util import u
10- from nameparser .util import text_types , binary_type
116from nameparser .util import lc
127from nameparser .util import log
138from nameparser .config import CONSTANTS
@@ -30,7 +25,7 @@ def group_contiguous_integers(data):
3025 return ranges
3126
3227
33- class HumanName ( object ) :
28+ class HumanName :
3429 """
3530 Parse a person's name into individual components.
3631
@@ -123,10 +118,10 @@ def __eq__(self, other):
123118 HumanName instances are equal to other objects whose
124119 lower case unicode representation is the same.
125120 """
126- return ( u ( self )) .lower () == ( u ( other ) ).lower ()
121+ return str ( self ).lower () == str ( other ).lower ()
127122
128123 def __ne__ (self , other ):
129- return not ( u ( self )) .lower () == ( u ( other ) ).lower ()
124+ return str ( self ).lower () != str ( other ).lower ()
130125
131126 def __getitem__ (self , key ):
132127 if isinstance (key , slice ):
@@ -152,7 +147,7 @@ def __next__(self):
152147 self ._count = c + 1
153148 return getattr (self , self ._members [c ]) or next (self )
154149
155- def __unicode__ (self ):
150+ def __str__ (self ):
156151 if self .string_format :
157152 # string_format = "{title} {first} {middle} {last} {suffix} ({nickname})"
158153 _s = self .string_format .format (** self .as_dict ())
@@ -164,27 +159,19 @@ def __unicode__(self):
164159 def __hash__ (self ):
165160 return hash (str (self ))
166161
167- def __str__ (self ):
168- if sys .version_info [0 ] >= 3 :
169- return self .__unicode__ ()
170- return self .__unicode__ ().encode (self .encoding )
171-
172162 def __repr__ (self ):
173163 if self .unparsable :
174- _string = "<%(class)s : [ Unparsable ] >" % {'class' : self .__class__ .__name__ , }
175- else :
176- _string = "<%(class)s : [\n \t title: %(title)r \n \t first: %(first)r \n \t middle: %(middle)r \n \t last: %(last)r \n \t suffix: %(suffix)r\n \t nickname: %(nickname)r\n ]>" % {
177- 'class' : self .__class__ .__name__ ,
178- 'title' : self .title or '' ,
179- 'first' : self .first or '' ,
180- 'middle' : self .middle or '' ,
181- 'last' : self .last or '' ,
182- 'suffix' : self .suffix or '' ,
183- 'nickname' : self .nickname or '' ,
184- }
185- if sys .version_info [0 ] >= 3 :
186- return _string
187- return _string .encode (self .encoding )
164+ return "<%(class)s : [ Unparsable ] >" % {'class' : self .__class__ .__name__ , }
165+
166+ return "<%(class)s : [\n \t title: %(title)r \n \t first: %(first)r \n \t middle: %(middle)r \n \t last: %(last)r \n \t suffix: %(suffix)r\n \t nickname: %(nickname)r\n ]>" % {
167+ 'class' : self .__class__ .__name__ ,
168+ 'title' : self .title or '' ,
169+ 'first' : self .first or '' ,
170+ 'middle' : self .middle or '' ,
171+ 'last' : self .last or '' ,
172+ 'suffix' : self .suffix or '' ,
173+ 'nickname' : self .nickname or '' ,
174+ }
188175
189176 def as_dict (self , include_empty = True ):
190177 """
@@ -361,14 +348,14 @@ def surnames(self):
361348 def _set_list (self , attr , value ):
362349 if isinstance (value , list ):
363350 val = value
364- elif isinstance (value , text_types ):
351+ elif isinstance (value , str | bytes ):
365352 val = [value ]
366353 elif value is None :
367354 val = []
368355 else :
369356 raise TypeError (
370357 "Can only assign strings, lists or None to name attributes."
371- " Got {0}" .format (type (value )))
358+ f " Got { 0 } " .format (type (value )))
372359 setattr (self , attr + "_list" , self .parse_pieces (val ))
373360
374361 @title .setter
@@ -481,7 +468,7 @@ def full_name(self):
481468 def full_name (self , value ):
482469 self .original = value
483470 self ._full_name = value
484- if isinstance (value , binary_type ):
471+ if isinstance (value , bytes ):
485472 self ._full_name = value .decode (self .encoding )
486473 self .parse_full_name ()
487474
@@ -657,7 +644,7 @@ def parse_full_name(self):
657644
658645 self .suffix_list += parts [1 :]
659646 pieces = self .parse_pieces (parts [0 ].split (' ' ))
660- log .debug ("pieces: %s" , u (pieces ))
647+ log .debug ("pieces: %s" , str (pieces ))
661648 for i , piece in enumerate (pieces ):
662649 try :
663650 nxt = pieces [i + 1 ]
@@ -686,7 +673,7 @@ def parse_full_name(self):
686673 # last [suffix], title first middles[,] suffix [,suffix]
687674 # parts[0], parts[1], parts[2:...]
688675
689- log .debug ("post-comma pieces: %s" , u (post_comma_pieces ))
676+ log .debug ("post-comma pieces: %s" , str (post_comma_pieces ))
690677
691678 # lastname part may have suffixes in it
692679 lastname_pieces = self .parse_pieces (parts [0 ].split (' ' ), 1 )
@@ -747,9 +734,9 @@ def parse_pieces(self, parts, additional_parts_count=0):
747734
748735 output = []
749736 for part in parts :
750- if not isinstance (part , text_types ):
737+ if not isinstance (part , str | bytes ):
751738 raise TypeError ("Name parts must be strings. "
752- "Got {0}" . format ( type (part )) )
739+ f "Got { type (part )} " )
753740 output += [x .strip (' ,' ) for x in part .split (' ' )]
754741
755742 # If part contains periods, check if it's multiple titles or suffixes
@@ -981,7 +968,7 @@ def capitalize(self, force=None):
981968 'Shirley MacLaine'
982969
983970 """
984- name = u (self )
971+ name = str (self )
985972 force = self .C .force_mixed_case_capitalization \
986973 if force is None else force
987974
0 commit comments