def read(self, input_buffer, kmip_version=enums.KMIPVersion.KMIP_1_3):
if kmip_version < enums.KMIPVersion.KMIP_1_3:<EOL><INDENT>raise exceptions.VersionNotSupported(<EOL>"<STR_LIT>"<EOL>"<STR_LIT>".format(<EOL>kmip_version.value<EOL>)<EOL>)<EOL><DEDENT>super(ProfileInformation, self).read(<EOL>input_buffer,<EOL>kmip_version=kmip_version<EOL>)<EOL>local_buffer = utils.BytearrayStream(input_buffer.read(self.length))<EOL>if self.is_tag_next(enums.Tags.PROFILE_NAME, local_buffer):<EOL><INDENT>profile_name = primitives.Enumeration(<EOL>enums.ProfileName,<EOL>tag=enums.Tags.PROFILE_NAME<EOL>)<EOL>profile_name.read(local_buffer, kmip_version=kmip_version)<EOL>self._profile_name = profile_name<EOL><DEDENT>else:<EOL><INDENT>raise exceptions.InvalidKmipEncoding(<EOL>"<STR_LIT>"<EOL>)<EOL><DEDENT>if self.is_tag_next(enums.Tags.SERVER_URI, local_buffer):<EOL><INDENT>server_uri = primitives.TextString(tag=enums.Tags.SERVER_URI)<EOL>server_uri.read(local_buffer, kmip_version=kmip_version)<EOL>self._server_uri = server_uri<EOL><DEDENT>if self.is_tag_next(enums.Tags.SERVER_PORT, local_buffer):<EOL><INDENT>server_port = primitives.Integer(tag=enums.Tags.SERVER_PORT)<EOL>server_port.read(local_buffer, kmip_version=kmip_version)<EOL>self._server_port = server_port<EOL><DEDENT>self.is_oversized(local_buffer)<EOL>
Read the data encoding the ProfileInformation structure and decode it
into its constituent parts.

Args:
    input_buffer (stream): A data stream containing encoded object
        data, supporting a read method; usually a BytearrayStream
        object.
    kmip_version (KMIPVersion): An enumeration defining the KMIP
        version with which the object will be decoded. Optional,
        defaults to KMIP 2.0.

Raises:
    InvalidKmipEncoding: Raised if the profile name is missing from
        the encoding.
    VersionNotSupported: Raised when a KMIP version is provided that
        does not support the ProfileInformation structure.