Skip to content

Commit 3a5ca09

Browse files
raullenchaiclaude
andcommitted
Rename distribution retina-sdk -> trio-retina (import stays 'retina')
PyPI blocks 'retina-sdk' as too similar to the existing 'retina' project, so the published package is 'trio-retina' (matches the repo + brand). The import name is unchanged: 'import retina'. Updates pyproject name, all README/docs install commands, and the install hints in error messages / examples. Also lands the DX fixes from the usability test: - non-ML on-ramp at the top of the README - examples/rtsp_to_webhook.py + examples/from_supervision.py (runnable, no model) - honest 'no model/GPU' scoping for the forecast/video demos Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent ce9522a commit 3a5ca09

9 files changed

Lines changed: 24 additions & 24 deletions

File tree

README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@ Think **OpenTelemetry for perception** — it doesn't build the sensors, it norm
2424

2525
## 💻 install
2626

27-
From source — a PyPI `retina-sdk` release is landing shortly:
27+
From source — a PyPI `trio-retina` release is landing shortly:
2828

2929
```bash
30-
pip install "retina-sdk @ git+https://github.com/machinefi/trio-retina" # core: numpy only
31-
pip install "retina-sdk[yolo] @ git+https://github.com/machinefi/trio-retina" # + Ultralytics YOLO adapter
32-
pip install "retina-sdk[video] @ git+https://github.com/machinefi/trio-retina" # + OpenCV frame source (files / RTSP / webcam)
33-
pip install "retina-sdk[all] @ git+https://github.com/machinefi/trio-retina" # everything
30+
pip install "trio-retina @ git+https://github.com/machinefi/trio-retina" # core: numpy only
31+
pip install "trio-retina[yolo] @ git+https://github.com/machinefi/trio-retina" # + Ultralytics YOLO adapter
32+
pip install "trio-retina[video] @ git+https://github.com/machinefi/trio-retina" # + OpenCV frame source (files / RTSP / webcam)
33+
pip install "trio-retina[all] @ git+https://github.com/machinefi/trio-retina" # everything
3434
```
3535

3636
## 🔥 quickstart
@@ -146,7 +146,7 @@ python examples/rtsp_to_webhook.py # camera -> restricted-zone alert -> webh
146146
python examples/from_supervision.py # ingest a Roboflow sv.Detections pipeline
147147
```
148148

149-
Real-footage / dynamics demos need a clip and the extras — `pip install 'retina-sdk[all]'`:
149+
Real-footage / dynamics demos need a clip and the extras — `pip install 'trio-retina[all]'`:
150150

151151
```bash
152152
python examples/yolo_video.py v.mp4 # YOLO on a video file
@@ -195,7 +195,7 @@ Everything flows through one append-only data unit, the **`Frame`**. Each stage
195195

196196
| | DeepStream / Holoscan | **Retina** |
197197
|---|---|---|
198-
| Install | CUDA + TensorRT + containers | `pip install retina-sdk` |
198+
| Install | CUDA + TensorRT + containers | `pip install trio-retina` |
199199
| Hardware | NVIDIA / Jetson locked | any machine — CPU is fine |
200200
| Model | tied to the NV stack | **bring any model** (or none) |
201201
| Shape | a platform you build *inside* | a library you `import` |

docs/index.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ Think **OpenTelemetry for perception** — it doesn't build the sensors, it norm
88

99
## Install
1010

11-
From source — a PyPI `retina-sdk` release is landing shortly:
11+
From source — a PyPI `trio-retina` release is landing shortly:
1212

1313
```bash
14-
pip install "retina-sdk @ git+https://github.com/machinefi/trio-retina" # core: numpy only
15-
pip install "retina-sdk[yolo] @ git+https://github.com/machinefi/trio-retina" # + Ultralytics YOLO adapter
16-
pip install "retina-sdk[video] @ git+https://github.com/machinefi/trio-retina" # + OpenCV frame source (files / RTSP / webcam)
17-
pip install "retina-sdk[all] @ git+https://github.com/machinefi/trio-retina" # everything
14+
pip install "trio-retina @ git+https://github.com/machinefi/trio-retina" # core: numpy only
15+
pip install "trio-retina[yolo] @ git+https://github.com/machinefi/trio-retina" # + Ultralytics YOLO adapter
16+
pip install "trio-retina[video] @ git+https://github.com/machinefi/trio-retina" # + OpenCV frame source (files / RTSP / webcam)
17+
pip install "trio-retina[all] @ git+https://github.com/machinefi/trio-retina" # everything
1818
```
1919

2020
## Quickstart

examples/forecast/forecast_video.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
but is far from perfect — that gap is what a learned, interaction-aware dynamics
88
model is for.
99
10-
pip install 'retina-sdk[yolo,video]'
10+
pip install 'trio-retina[yolo,video]'
1111
python examples/forecast/forecast_video.py /tmp/demo.mp4
1212
"""
1313

examples/rtsp_to_webhook.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def main(src: str | None, webhook_url: str | None) -> None:
4343
detector = ScriptedDetector()
4444
frames = [(np.zeros((100, 100, 3), np.uint8), float(i)) for i in range(18)]
4545
else:
46-
from retina import YoloDetector # needs retina-sdk[yolo]
46+
from retina import YoloDetector # needs trio-retina[yolo]
4747

4848
detector = YoloDetector("yolo11n.pt", classes={"person"})
4949
frames = video_frames(src, live=True) # RTSP / HLS / webcam, wall-clock t

examples/yolo_video.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""Real-model demo: YOLO on a video file -> events to JSONL.
22
3-
pip install 'retina-sdk[all]'
3+
pip install 'trio-retina[all]'
44
python examples/yolo_video.py path/to/video.mp4
55
66
Same code shape as quickstart — only the detector and source change. That's the

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ requires = ["hatchling"]
33
build-backend = "hatchling.build"
44

55
[project]
6-
name = "retina-sdk"
6+
name = "trio-retina"
77
version = "0.1.0"
88
description = "Model-agnostic computer-vision pipeline: turn any detector (YOLO, VLM, Grounding DINO) into structured tracking events — zone intrusion, line-crossing, dwell, counting — over video or RTSP. The state layer for world models."
99
readme = "README.md"

retina/detect.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ def __call__(self, frame: np.ndarray) -> list[Detection]:
126126

127127

128128
class YoloDetector(Pipeable):
129-
"""Optional Ultralytics YOLO adapter. `pip install retina-sdk[yolo]`.
129+
"""Optional Ultralytics YOLO adapter. `pip install trio-retina[yolo]`.
130130
131131
Loads any Ultralytics weights — YOLOv5/8/9/10/11/12, YOLO-World, RT-DETR —
132132
so swapping models is just a different weights string. Not imported unless
@@ -150,7 +150,7 @@ def __init__(
150150
from ultralytics import YOLO
151151
except ImportError as e: # pragma: no cover - exercised only with extra
152152
raise ImportError(
153-
"YoloDetector needs ultralytics. Install with: pip install 'retina-sdk[yolo]'"
153+
"YoloDetector needs ultralytics. Install with: pip install 'trio-retina[yolo]'"
154154
) from e
155155
self._model = YOLO(weights)
156156
# Open-vocabulary: with a YOLO-World weights file, `vocab` sets the
@@ -232,7 +232,7 @@ def __call__(self, frame: np.ndarray) -> list[Detection]:
232232

233233
class GroundingDinoDetector(Pipeable):
234234
"""Open-vocabulary detection from a text prompt via Grounding DINO (HF
235-
transformers). `pip install 'retina-sdk[grounding]'`. Detects any classes you
235+
transformers). `pip install 'trio-retina[grounding]'`. Detects any classes you
236236
name — no training. Heavy (torch); not imported unless instantiated."""
237237

238238
def __init__(
@@ -249,7 +249,7 @@ def __init__(
249249
except ImportError as e: # pragma: no cover - exercised only with extra
250250
raise ImportError(
251251
"GroundingDinoDetector needs transformers+torch. "
252-
"Install with: pip install 'retina-sdk[grounding]'"
252+
"Install with: pip install 'trio-retina[grounding]'"
253253
) from e
254254
self._processor = AutoProcessor.from_pretrained(model_id)
255255
self._model = AutoModelForZeroShotObjectDetection.from_pretrained(model_id)

retina/sources.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
A source is just an iterable of `(frame, timestamp)` pairs, so the core never
44
depends on OpenCV — you can feed it a list of numpy arrays in tests. The
55
`video_frames` helper is an optional convenience that uses OpenCV (install with
6-
`pip install 'retina-sdk[video]'`) for files / RTSP / webcam.
6+
`pip install 'trio-retina[video]'`) for files / RTSP / webcam.
77
"""
88

99
from __future__ import annotations
@@ -30,7 +30,7 @@ def video_frames(
3030
import cv2
3131
except ImportError as e: # pragma: no cover - exercised only with extra
3232
raise ImportError(
33-
"video_frames needs OpenCV. Install with: pip install 'retina-sdk[video]'"
33+
"video_frames needs OpenCV. Install with: pip install 'trio-retina[video]'"
3434
) from e
3535

3636
cap = cv2.VideoCapture(source)

retina/track.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ def update(self, detections: list[Detection], t: float) -> list[Track]:
171171

172172
class NorfairTracker(Pipeable):
173173
"""Norfair adapter — pure-Python Kalman tracking with re-association, better
174-
ID stability through occlusion than IoUTracker. `pip install 'retina-sdk[norfair]'`.
174+
ID stability through occlusion than IoUTracker. `pip install 'trio-retina[norfair]'`.
175175
176176
Surfaces only tracks detected *this* frame (coasting/occluded ones are kept
177177
internally for re-association but not returned, so occupancy/dwell stay honest)."""
@@ -188,7 +188,7 @@ def __init__(
188188
from norfair import Tracker as _NfTracker
189189
except ImportError as e: # pragma: no cover - exercised only with extra
190190
raise ImportError(
191-
"NorfairTracker needs norfair. Install with: pip install 'retina-sdk[norfair]'"
191+
"NorfairTracker needs norfair. Install with: pip install 'trio-retina[norfair]'"
192192
) from e
193193
self._nf = _NfTracker(
194194
distance_function="euclidean",

0 commit comments

Comments
 (0)