Metadata-Version: 2.5
Name: olab-utils
Version: 0.2.0
Summary: Shared utility helpers for lab robotics projects.
Project-URL: Homepage, https://github.com/optimatorlab/olab_code/tree/main/packages/olab_utils
Project-URL: Source, https://github.com/optimatorlab/olab_code/tree/main/packages/olab_utils
Project-URL: Issues, https://github.com/optimatorlab/olab_code/issues
Project-URL: Changelog, https://github.com/optimatorlab/olab_code/blob/main/packages/olab_utils/CHANGELOG.md
Author: Optimator Lab
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Python: >=3.10
Requires-Dist: numpy>=1.21.0
Requires-Dist: opencv-python>=4.10.0
Requires-Dist: qrcode[pil]>=7.4.2
Provides-Extra: all
Description-Content-Type: text/markdown

# olab_utils

Shared utility helpers for lab robotics projects: a `Logger` class, ArUco
detection/pose/drawing helpers, barcode/QR and face-detection decoration,
image-stitching and file-listing utilities, simple frame-drawing helpers
(circle/line/text/arrow), unit conversions, and small networking helpers
(`checkPort`, `getIP`, `findOpenPort`).

Migrated from `~/Projects/ub_code/ub_utils` (a flat, non-`src/`-layout
single-file module — `ub_code` never had automated tests) per
[`docs/plans/olab_packages_reorg_plan.md`](https://github.com/optimatorlab/olab_code/blob/main/docs/plans/olab_packages_reorg_plan.md),
Migration sequence step 4. [`olab_camera`](https://github.com/optimatorlab/olab_code/tree/main/packages/olab_camera)
depends on this package (`import olab_utils`); it is not
`olab_camera`-specific and can be used standalone.

## Installing

```bash
pip install olab-utils
```

**Local development**, against an `olab_code` checkout:

```bash
pip install -e "packages/olab_utils"
```

## Usage

```python
import olab_utils

logger = olab_utils.Logger()
port = olab_utils.findOpenPort(8000, options=range(8000, 8040))
meters = olab_utils.inches2meters(4.25)
```

See the module's own docstrings for the full function/class reference —
most functions are small, self-documenting helpers grouped by area (ArUco,
drawing/decoration, image files, networking, unit conversion).
