:py:mod:`leads.data`
====================

.. py:module:: leads.data

.. autodoc2-docstring:: leads.data
   :allowtitles:

Module Contents
---------------

Classes
~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`Serializable <leads.data.Serializable>`
     - .. autodoc2-docstring:: leads.data.Serializable
          :summary:
   * - :py:obj:`DataContainer <leads.data.DataContainer>`
     - .. autodoc2-docstring:: leads.data.DataContainer
          :summary:
   * - :py:obj:`VisualDataContainer <leads.data.VisualDataContainer>`
     - .. autodoc2-docstring:: leads.data.VisualDataContainer
          :summary:

Functions
~~~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`dlat2meters <leads.data.dlat2meters>`
     - .. autodoc2-docstring:: leads.data.dlat2meters
          :summary:
   * - :py:obj:`meters2dlat <leads.data.meters2dlat>`
     - .. autodoc2-docstring:: leads.data.meters2dlat
          :summary:
   * - :py:obj:`dlon2meters <leads.data.dlon2meters>`
     - .. autodoc2-docstring:: leads.data.dlon2meters
          :summary:
   * - :py:obj:`meters2dlon <leads.data.meters2dlon>`
     - .. autodoc2-docstring:: leads.data.meters2dlon
          :summary:
   * - :py:obj:`distance_between <leads.data.distance_between>`
     - .. autodoc2-docstring:: leads.data.distance_between
          :summary:
   * - :py:obj:`format_duration <leads.data.format_duration>`
     - .. autodoc2-docstring:: leads.data.format_duration
          :summary:

API
~~~

.. py:class:: Serializable
   :canonical: leads.data.Serializable

   Bases: :py:obj:`object`

   .. autodoc2-docstring:: leads.data.Serializable

   .. py:method:: to_dict() -> dict[str, typing.Any]
      :canonical: leads.data.Serializable.to_dict

      .. autodoc2-docstring:: leads.data.Serializable.to_dict

.. py:class:: DataContainer(voltage: float = 0, speed: float = 0, front_wheel_speed: float = 0, rear_wheel_speed: float = 0, yaw: float = 0, pitch: float = 0, roll: float = 0, forward_acceleration: float = 0, lateral_acceleration: float = 0, vertical_acceleration: float = 0, front_proximity: float = -1, left_proximity: float = -1, right_proximity: float = -1, rear_proximity: float = -1, mileage: float = 0, gps_valid: bool = False, gps_ground_speed: float = 0, latitude: float = 0, longitude: float = 0, steering_position: float = 0, throttle: float = 0, brake: float = 0, **kwargs)
   :canonical: leads.data.DataContainer

   Bases: :py:obj:`leads.data.Serializable`

   .. autodoc2-docstring:: leads.data.DataContainer

   .. rubric:: Initialization

   .. autodoc2-docstring:: leads.data.DataContainer.__init__

   .. py:method:: __str__() -> str
      :canonical: leads.data.DataContainer.__str__

   .. py:method:: reset_time_stamp() -> None
      :canonical: leads.data.DataContainer.reset_time_stamp

      .. autodoc2-docstring:: leads.data.DataContainer.reset_time_stamp

   .. py:method:: time_stamp() -> int
      :canonical: leads.data.DataContainer.time_stamp

      .. autodoc2-docstring:: leads.data.DataContainer.time_stamp

   .. py:method:: to_dict() -> dict[str, typing.Any]
      :canonical: leads.data.DataContainer.to_dict

      .. autodoc2-docstring:: leads.data.DataContainer.to_dict

   .. py:method:: encode() -> bytes
      :canonical: leads.data.DataContainer.encode

      .. autodoc2-docstring:: leads.data.DataContainer.encode

.. py:class:: VisualDataContainer(voltage: float = 0, speed: float = 0, front_wheel_speed: float = 0, rear_wheel_speed: float = 0, yaw: float = 0, pitch: float = 0, roll: float = 0, forward_acceleration: float = 0, lateral_acceleration: float = 0, vertical_acceleration: float = 0, front_proximity: float = -1, left_proximity: float = -1, right_proximity: float = -1, rear_proximity: float = -1, mileage: float = 0, gps_valid: bool = False, gps_ground_speed: float = 0, latitude: float = 0, longitude: float = 0, steering_position: float = 0, throttle: float = 0, brake: float = 0, front_view_base64: str = '', front_view_latency: int = 0, left_view_base64: str = '', left_view_latency: int = 0, right_view_base64: str = '', right_view_latency: int = 0, rear_view_base64: str = '', rear_view_latency: int = 0, **kwargs)
   :canonical: leads.data.VisualDataContainer

   Bases: :py:obj:`leads.data.DataContainer`

   .. autodoc2-docstring:: leads.data.VisualDataContainer

   .. rubric:: Initialization

   .. autodoc2-docstring:: leads.data.VisualDataContainer.__init__

.. py:function:: dlat2meters(dlat: float) -> float
   :canonical: leads.data.dlat2meters

   .. autodoc2-docstring:: leads.data.dlat2meters

.. py:function:: meters2dlat(meters: float) -> float
   :canonical: leads.data.meters2dlat

   .. autodoc2-docstring:: leads.data.meters2dlat

.. py:function:: dlon2meters(dlon: float, lat: float) -> float
   :canonical: leads.data.dlon2meters

   .. autodoc2-docstring:: leads.data.dlon2meters

.. py:function:: meters2dlon(meters: float, lat: float) -> float
   :canonical: leads.data.meters2dlon

   .. autodoc2-docstring:: leads.data.meters2dlon

.. py:function:: distance_between(lat_0: float, lon_0: float, lat: float, lon: float) -> float
   :canonical: leads.data.distance_between

   .. autodoc2-docstring:: leads.data.distance_between

.. py:function:: format_duration(duration: float) -> str
   :canonical: leads.data.format_duration

   .. autodoc2-docstring:: leads.data.format_duration
