code: def paddr(address):
      
      if not isinstance(address, six.string_types):
          raise TypeError('expecting a string')
      if address.startswith('['):
          p1 = address.find(']:')
          if p1 == -1:
              raise ValueError
          return (address[1:p1], int(address[p1+2:]))
      elif ':' in address:
          p1 = address.find(':')
          return (address[:p1], int(address[p1+1:]))
      else:
          return address
docs: Parse a string representation of an address.
  
      This function is the inverse of :func:`saddr`.