code: def _is_number_match_OS(numobj1, number2):
      
      # First see if the second number has an implicit country calling code, by
      # attempting to parse it.
      try:
          numobj2 = parse(number2, UNKNOWN_REGION)
          return _is_number_match_OO(numobj1, numobj2)
      except NumberParseException:
          _, exc, _ = sys.exc_info()
          if exc.error_type == NumberParseException.INVALID_COUNTRY_CODE:
              # The second number has no country calling code. EXACT_MATCH is no
              # longer possible.  We parse it as if the region was the same as
              # that for the first number, and if EXACT_MATCH is returned, we
              # replace this with NSN_MATCH.
              region1 = region_code_for_country_code(numobj1.country_code)
              try:
                  if region1 != UNKNOWN_REGION:
                      numobj2 = parse(number2, region1)
                      match = _is_number_match_OO(numobj1, numobj2)
                      if match == MatchType.EXACT_MATCH:
                          return MatchType.NSN_MATCH
                      else:
                          return match
                  else:
                      # If the first number didn't have a valid country calling
                      # code, then we parse the second number without one as
                      # well.
                      numobj2 = parse(number2, None, keep_raw_input=False,
                                      _check_region=False, numobj=None)
                      return _is_number_match_OO(numobj1, numobj2)
              except NumberParseException:
                  return MatchType.NOT_A_NUMBER
      # One or more of the phone numbers we are trying to match is not a viable
      # phone number.
      return MatchType.NOT_A_NUMBER
docs: Wrapper variant of _is_number_match_OO that copes with one
      PhoneNumber object and one string.