Metadata-Version: 2.5
Name: armnet-core
Version: 0.3.2
Summary: Shared wire types for the armnet platform: Embodiment, Task, JobSpec, JobResult, Job, JobStatus.
Project-URL: Homepage, https://armnet.dev
Project-URL: Documentation, https://docs.armnet.dev/packages/core/
Author: Ville Kuosmanen
License-Expression: Apache-2.0
License-File: LICENSE
Requires-Python: <3.13,>=3.12
Requires-Dist: pydantic<3,>=2.6
Provides-Extra: dev
Requires-Dist: pytest>=8; extra == 'dev'
Description-Content-Type: text/markdown

# armnet-core

The shared wire types for the [Armnet](https://armnet.dev) managed arm farm: the
`Embodiment` and `Task` identifiers and the `JobSpec`, `Job`, `JobResult`,
`JobStatus` (and related) Pydantic models exchanged across the platform.
Pydantic-only dependencies.

Most users don't install this directly — it comes transitively with
[`armnet-runtime`](https://pypi.org/project/armnet-runtime/) (containers) or
[`armnet-client`](https://pypi.org/project/armnet-client/) (dev/CI). Depend on it
directly only when you need to construct or inspect the wire types without the
rest of the SDK (for example, a third-party tool that builds `JobSpec`s).

## Install

```bash
pip install armnet-core
```

## Documentation

Full guides and API reference: **<https://docs.armnet.dev/packages/core/>**

## Task-driven manual resets

`ManualResetConfig` validates up to 12 ordered, uniquely named `point` or
`bounding_box` elements. Elements use `ShirtSize` values for edge clearance and
box dimensions, plus a `rotation_range_degrees` from 0 through 180.

`sample_manual_reset_layout(...)` deterministically places every complete
footprint in source-pixel space, respecting calibrated concave polygons,
clearance and object non-overlap. It returns normalized point/box/arrow geometry
for renderers and raises `ManualResetLayoutError` after bounded retries when a
configuration cannot fit. `EDGE_DISTANCE_SCALES`, `BOX_LENGTH_SCALES`, and
`POINT_RADIUS_SCALE` are the central sizing constants used by both sampling and
the sizing-guide script.
