code: def is_number_match(num1, num2):
      
      if isinstance(num1, PhoneNumber) and isinstance(num2, PhoneNumber):
          return _is_number_match_OO(num1, num2)
      elif isinstance(num1, PhoneNumber):
          return _is_number_match_OS(num1, num2)
      elif isinstance(num2, PhoneNumber):
          return _is_number_match_OS(num2, num1)
      else:
          return _is_number_match_SS(num1, num2)
docs: Takes two phone numbers and compares them for equality.
  
      For example, the numbers +1 345 657 1234 and 657 1234 are a SHORT_NSN_MATCH.
      The numbers +1 345 657 1234 and 345 657 are a NO_MATCH.
  
      Arguments
      num1 -- First number object or string to compare. Can contain formatting,
                and can have country calling code specified with + at the start.
      num2 -- Second number object or string to compare. Can contain formatting,
                and can have country calling code specified with + at the start.
  
      Returns:
       - EXACT_MATCH if the country_code, NSN, presence of a leading zero for
         Italian numbers and any extension present are the same.
       - NSN_MATCH if either or both has no region specified, and the NSNs and
         extensions are the same.
       - SHORT_NSN_MATCH if either or both has no region specified, or the
         region specified is the same, and one NSN could be a shorter version of
         the other number. This includes the case where one has an extension
         specified, and the other does not.
       - NO_MATCH otherwise.