code: def load_public_key(source):
      
  
      if isinstance(source, keys.PublicKeyInfo):
          public_key = source
  
      elif isinstance(source, byte_cls):
          public_key = parse_public(source)
  
      elif isinstance(source, str_cls):
          with open(source, 'rb') as f:
              public_key = parse_public(f.read())
  
      else:
          raise TypeError(pretty_message(
              '''
              source must be a byte string, unicode string or
              asn1crypto.keys.PublicKeyInfo object, not %s
              ''',
              type_name(public_key)
          ))
  
      return _load_key(public_key, PublicKey)
docs: Loads a public key into a PublicKey object
  
      :param source:
          A byte string of file contents, a unicode string filename or an
          asn1crypto.keys.PublicKeyInfo object
  
      :raises:
          ValueError - when any of the parameters contain an invalid value
          TypeError - when any of the parameters are of the wrong type
          oscrypto.errors.AsymmetricKeyError - when the public key is incompatible with the OS crypto library
          OSError - when an error is returned by the OS crypto library
  
      :return:
          A PublicKey object