Source code for laspy.vlrs.vlr

from abc import ABC, abstractmethod
from typing import Union


class IVLR(ABC):
    @property
    @abstractmethod
    def user_id(self) -> str:
        ...

    @property
    @abstractmethod
    def record_id(self) -> int:
        ...

    @property
    @abstractmethod
    def description(self) -> Union[str, bytes]:
        ...

    @abstractmethod
    def record_data_bytes(self) -> bytes:
        ...


class BaseVLR(IVLR, ABC):
    def __init__(self, user_id, record_id, description=""):
        self._user_id: str = user_id
        self._record_id: int = record_id
        self._description: Union[str, bytes] = description

    @property
    def user_id(self) -> str:
        """
        The user id
        """
        return self._user_id

    @property
    def record_id(self) -> int:
        """
        The record id
        """
        return self._record_id

    @property
    def description(self) -> Union[str, bytes]:
        """
        The description, cannot exceed 32 bytes
        """
        return self._description


[docs]class VLR(BaseVLR): """ >>> import laspy >>> my_vlr = laspy.VLR( ... user_id="MyUserId", ... record_id=0, ... description="An Example VLR", ... record_data=int(42).to_bytes(8, byteorder='little'), ... ) >>> my_vlr.user_id 'MyUserId' >>> int.from_bytes(my_vlr.record_data, byteorder='little') 42 """ def __init__(self, user_id, record_id, description="", record_data=b""): super().__init__(user_id, record_id, description=description) #: The record_data as bytes, length cannot exceed 65_535 self.record_data: bytes = record_data
[docs] def record_data_bytes(self) -> bytes: return self.record_data
def __eq__(self, other): return ( self.record_id == other.record_id and self.user_id == other.user_id and self.description == other.description and self.record_data == other.record_data ) def __repr__(self): return "<{}(user_id: '{}', record_id: '{}', data len: {})>".format( self.__class__.__name__, self.user_id, self.record_id, len(self.record_data) )