# laspy.vlrs.vlrlist module

class laspy.vlrs.vlrlist.VLRList(*args, **kwargs)

  Bases: `list`

  Class responsible for managing the vlrs

  index(value, start: int = 0, stop: int = None) → int

    Return first index of value.

    Raises ValueError if the value is not present.

  get_by_id(user_id='', record_ids=(None,))

    Function to get vlrs by user_id and/or record_ids. Always returns a list even if only one vlr matches the user_id and record_id

        >>> import laspy
        >>> from laspy.vlrs.known import ExtraBytesVlr, WktCoordinateSystemVlr
        >>> las = laspy.read("tests/data/extrabytes.las")
        >>> las.vlrs
        [<ExtraBytesVlr(extra bytes structs: 5)>]
        >>> las.vlrs.get(WktCoordinateSystemVlr.official_user_id())
        []
        >>> las.vlrs.get(WktCoordinateSystemVlr.official_user_id())[0]
        Traceback (most recent call last):
        IndexError: list index out of range
        >>> las.vlrs.get_by_id(ExtraBytesVlr.official_user_id())
        [<ExtraBytesVlr(extra bytes structs: 5)>]
        >>> las.vlrs.get_by_id(ExtraBytesVlr.official_user_id())[0]
        <ExtraBytesVlr(extra bytes structs: 5)>

    Parameters:

      - user_id (str, optional) – the user id

      - record_ids (iterable of int, optional) – THe record ids of the vlr(s) you wish to get

    Returns:

      a list of vlrs matching the user_id and records_ids

    Return type:

      `list`

  get(vlr_type: str) → List[IKnownVLR]

    Returns the list of vlrs of the requested type Always returns a list even if there is only one VLR of type vlr_type.

        >>> import laspy
        >>> las = laspy.read("tests/data/extrabytes.las")
        >>> las.vlrs
        [<ExtraBytesVlr(extra bytes structs: 5)>]
        >>> las.vlrs.get("WktCoordinateSystemVlr")
        []
        >>> las.vlrs.get("WktCoordinateSystemVlr")[0]
        Traceback (most recent call last):
        IndexError: list index out of range
        >>> las.vlrs.get('ExtraBytesVlr')
        [<ExtraBytesVlr(extra bytes structs: 5)>]
        >>> las.vlrs.get('ExtraBytesVlr')[0]
        <ExtraBytesVlr(extra bytes structs: 5)>

    Parameters:

      vlr_type (str) – the class name of the vlr

    Returns:

      a List of vlrs matching the user_id and records_ids

    Return type:

      `list`

  extract(vlr_type: str) → List[IKnownVLR]

    Returns the list of vlrs of the requested type The difference with get is that the returned vlrs will be removed from the list

    Parameters:

      vlr_type (str) – the class name of the vlr

    Returns:

      a List of vlrs matching the user_id and records_ids

    Return type:

      list

  classmethod read_from(data_stream: BinaryIO, num_to_read: int, extended: bool = False) → VLRList

    Reads vlrs and parse them if possible from the stream

    Parameters:

      - data_stream (io.BytesIO) – stream to read from

      - num_to_read (int) – number of vlrs to be read

      - extended (bool) – whether the vlrs are regular vlr or extended vlr

    Returns:

      List of vlrs

    Return type:

      laspy.vlrs.vlrlist.VLRList

  write_to(stream: BinaryIO, as_extended: bool = False, encoding_errors: str = 'strict') → int