Skip to content

File __init__.py

File List > pyspacemouse > __init__.py

Go to the documentation of this file

"""PySpaceMouse - Python interface for 3DConnexion SpaceMouse devices.

This library provides a Pythonic interface to read input from 3DConnexion
SpaceMouse 6-DOF controllers.

Basic usage:
    import pyspacemouse

    # Using context manager (recommended)
    with pyspacemouse.open() as device:
        while True:
            state = device.read()
            print(state.x, state.y, state.z)

    # Without context manager
    device = pyspacemouse.open()
    try:
        state = device.read()
    finally:
        device.close()
"""

from __future__ import annotations

# Version handling for dynamic versioning with hatch-vcs
try:
    from importlib.metadata import PackageNotFoundError, version
except ImportError:
    from importlib_metadata import PackageNotFoundError, version  # type: ignore

try:
    __version__ = version("pyspacemouse")
except PackageNotFoundError:
    __version__ = "0.0.0.dev0"

# Core types
# Public API
from .api import (
    get_all_hid_devices,
    get_connected_devices,
    get_supported_devices,
    open,
    open_by_path,
    open_with_config,
)

# Callback types
from .callbacks import (
    ButtonCallback,
    Config,
    DofCallback,
)

# Config helpers (for custom device configurations)
from .config_helpers import create_device_info, modify_device_info

# Device class
from .device import SpaceMouseDevice

# Loader (for advanced usage)
from .loader import get_device_specs, load_device_specs
from .types import (
    AXIS_NAMES,
    Axis,
    AxisSpec,
    ButtonSpec,
    ButtonState,
    DeviceInfo,
    SpaceMouseState,
)

# Utility functions
from .utils import (
    print_buttons,
    print_state,
    silent_callback,
)

__all__ = [
    # Version
    "__version__",
    # Types
    "Axis",
    "AXIS_NAMES",
    "AxisSpec",
    "ButtonSpec",
    "ButtonState",
    "DeviceInfo",
    "SpaceMouseState",
    # Callbacks
    "ButtonCallback",
    "Config",
    "DofCallback",
    # Device
    "SpaceMouseDevice",
    # API
    "get_all_hid_devices",
    "get_connected_devices",
    "get_supported_devices",
    "open",
    "open_by_path",
    "open_with_config",
    # Utils
    "print_buttons",
    "print_state",
    "silent_callback",
    # Loader
    "get_device_specs",
    "load_device_specs",
    # Config helpers
    "create_device_info",
    "modify_device_info",
]