(stream)
return PlyData(
            PlyElement._parse_multi(lines[a:]),
            text,
            byte_order,
            comments["comment"],
            comments["obj_info"],
        )
Parse a PLY header from a readable file-like stream.
Parse a PLY header from a readable file-like stream.
Parse a PLY header from a readable file - like stream .
def _parse_header(stream):
        """
        Parse a PLY header from a readable file-like stream.

        """
        lines = []
        comments = {"comment": [], "obj_info": []}
        while True:
            line = stream.readline().decode("ascii").strip()
            fields = _split_line(line, 1)

            if fields[0] == "end_header":
                break

            elif fields[0] in list(comments.keys()):
                lines.append(fields)
            else:
                lines.append(line.split())

        a = 0
        if lines[a] != ["ply"]:
            raise PlyParseError("expected 'ply'")

        a += 1
        while lines[a][0] in list(comments.keys()):
            comments[lines[a][0]].append(lines[a][1])
            a += 1

        if lines[a][0] != "format":
            raise PlyParseError("expected 'format'")

        if lines[a][2] != "1.0":
            raise PlyParseError("expected version '1.0'")

        if len(lines[a]) != 3:
            raise PlyParseError("too many fields after 'format'")

        fmt = lines[a][1]

        if fmt not in _byte_order_map:
            raise PlyParseError("don't understand format %r" % fmt)

        byte_order = _byte_order_map[fmt]
        text = fmt == "ascii"

        a += 1
        while a < len(lines) and lines[a][0] in list(comments.keys()):
            comments[lines[a][0]].append(lines[a][1])
            a += 1

        return PlyData(
            PlyElement._parse_multi(lines[a:]),
            text,
            byte_order,
            comments["comment"],
            comments["obj_info"],
        )
def _parse_header ( stream ) : lines = [ ] comments = { "comment" : [ ] , "obj_info" : [ ] } while True : line = stream . readline ( ) . decode ( "ascii" ) . strip ( ) fields = _split_line ( line , 1 ) if fields [ 0 ] == "end_header" : break elif fields [ 0 ] in list ( comments . keys ( ) ) : lines . append ( fields ) else : lines . append ( line . split ( ) ) a = 0 if lines [ a ] != [ "ply" ] : raise PlyParseError ( "expected 'ply'" ) a += 1 while lines [ a ] [ 0 ] in list ( comments . keys ( ) ) : comments [ lines [ a ] [ 0 ] ] . append ( lines [ a ] [ 1 ] ) a += 1 if lines [ a ] [ 0 ] != "format" : raise PlyParseError ( "expected 'format'" ) if lines [ a ] [ 2 ] != "1.0" : raise PlyParseError ( "expected version '1.0'" ) if len ( lines [ a ] ) != 3 : raise PlyParseError ( "too many fields after 'format'" ) fmt = lines [ a ] [ 1 ] if fmt not in _byte_order_map : raise PlyParseError ( "don't understand format %r" % fmt ) byte_order = _byte_order_map [ fmt ] text = fmt == "ascii" a += 1 while a < len ( lines ) and lines [ a ] [ 0 ] in list ( comments . keys ( ) ) : comments [ lines [ a ] [ 0 ] ] . append ( lines [ a ] [ 1 ] ) a += 1 return PlyData ( PlyElement . _parse_multi ( lines [ a : ] ) , text , byte_order , comments [ "comment" ] , comments [ "obj_info" ] , )