code: def extract_suffix(self, name):
          
          # don't extract suffixes if we can't reasonably suspect we have enough parts to the name for there to be one
          if len(name.strip().split()) > 2:
              name, suffix = self.extract_matching_portion(r'\b(?P<suffix>{})(?=\b|\s|\Z|\W)'.format(SUFFIX_RE), name)
              suffix, degree = self.extract_matching_portion(DEGREE_RE, suffix or '')
              return name, suffix or None
  
          return name, None
docs: Returns a tuple of (name, suffix), or (name, None) if no suffix could be found.
          As the method name indicates, the name is returned without the suffix.
  
          Suffixes deemed to be degrees are discarded.