class_docstr: Description of an element of a Ply file.
  Members:
      self.properties: (List[_Property]) description of all the properties.
                          Each one contains a name and data type.
      self.count:      (int) number of such elements in the file
      self.name:       (str) name of the element
class_docstr_tok: ["Description","of","an","element","of","a","Ply","file",".","Members",":","self.properties",":","(","List","[","_Property","]",")","description","of","all","the","properties",".","Each","one","contains","a","name","and","data","type",".","self.count",":","(","int",")","number","of","such","elements","in","the","file","self.name",":","(","str",")","name","of","the","element"]
docstr: Adds a new property.
  
  Args:
      name:           (str) name of the property.
      data_type:      (str) PLY data type.
      list_size_type: (str) PLY data type of the list size, or None if not
                      a list.
docstr_tok: ["Adds","a","new","property",".","Args",":","name",":","(","str",")","name","of","the","property",".","data_type",":","(","str",")","PLY","data","type",".","list_size_type",":","(","str",")","PLY","data","type","of","the","list","size",",","or","None","if","not","a","list","."]
code: def add_property(
      self,
      name: str,
      data_type: str,
      list_size_type: Optional[str] = None,
  ):
      """Adds a new property.
  
      Args:
          name:           (str) name of the property.
          data_type:      (str) PLY data type.
          list_size_type: (str) PLY data type of the list size, or None if not
                          a list.
      """
      for property in self.properties:
          if property.name == name:
              msg = "Cannot have two properties called %s in %s."
              raise ValueError(msg % (name, self.name))
      self.properties.append(_Property(name, data_type, list_size_type))
  
imports: import itertools
  import os
  import struct
  import sys
  import warnings
  from collections import namedtuple
  from dataclasses import asdict, dataclass
  from io import BytesIO, TextIOBase
  from typing import List, Optional, Tuple
  import numpy
  import torch
  from iopath.common.file_io import PathManager
  from pytorch3d.io.utils import _check_faces_indices, _make_tensor, _open_file, _read_image, PathOrStr
  from pytorch3d.renderer import TexturesUV, TexturesVertex
  from pytorch3d.structures import Meshes, Pointclouds
  from .pluggable_formats import endswith, MeshFormatInterpreter, PointcloudFormatInterpreter
label_desc: Use image node_id 2 for calling the _PlyElementType obj's underlying member method code with example usage: obj.add_property(name, data_type, list_size_type) without return types