edgefirst-schemas 3.2.0

Message schemas for EdgeFirst Perception - ROS2 Common Interfaces, Foxglove, and custom types
Documentation
# SPDX-License-Identifier: Apache-2.0
# Copyright © 2026 Au-Zone Technologies. All Rights Reserved.

# Top-level pyproject.toml — delegates the wheel build to maturin and
# the crate manifest at `crates/python/Cargo.toml`. Mirrors the
# `~/Software/EdgeFirst/hal` layout where the workspace root carries a
# minimal pyproject so `pip install .` and `maturin develop` from the
# repo root both work.
#
# The actual project metadata (name, version, classifiers, the cp311-abi3
# feature flag, .pyi includes) lives in `crates/python/pyproject.toml`.

[project]
name = "edgefirst-schemas"
dynamic = ["version"]
license = { text = "Apache-2.0" }

[project.urls]
Homepage = "https://doc.edgefirst.ai"
Documentation = "https://doc.edgefirst.ai/latest/perception/"
Repository = "https://github.com/EdgeFirstAI/schemas"

[build-system]
requires = ["maturin>=1,<2"]
build-backend = "maturin"

[tool.maturin]
manifest-path = "crates/python/Cargo.toml"

# ---------------------------------------------------------------------------
# Pytest + coverage settings used by the bench harness and the test suite.
# Kept here at repo root because pytest's rootdir resolution starts from
# the directory pytest is invoked from; placing config in `crates/python`
# would force every pytest call to cd there.
# ---------------------------------------------------------------------------

[tool.pytest.ini_options]
testpaths = ["tests/python"]
python_files = ["test_*.py"]
python_classes = ["Test*"]
python_functions = ["test_*"]
addopts = [
    "-v",
    "--tb=short",
    "--strict-markers",
]
markers = [
    "slow: marks tests as slow (deselect with '-m \"not slow\"')",
]

[tool.pytest-benchmark]
min_rounds = 5
warmup = true
warmup_iterations = 3

[tool.coverage.run]
source = ["edgefirst"]
branch = true
omit = ["*/tests/*", "*/__pycache__/*"]

[tool.coverage.report]
exclude_lines = [
    "pragma: no cover",
    "def __repr__",
    "raise NotImplementedError",
    "if TYPE_CHECKING:",
]
show_missing = true

[tool.coverage.xml]
output = "coverage-python.xml"