Skip to content

python(feat): ULog data imports#663

Merged
wei-qlu merged 15 commits into
mainfrom
eng-12125-sift-client-ulog-imports
Jul 10, 2026
Merged

python(feat): ULog data imports#663
wei-qlu merged 15 commits into
mainfrom
eng-12125-sift-client-ulog-imports

Conversation

@wei-qlu

@wei-qlu wei-qlu commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds PX4 ULog (.ulg) as a data import format in the Python client. ULog files are self-describing, so import is one call with no schema:

client.data_import.import_from_path("flight.ulg", asset=asset)
  • Detection runs client-side with pyulog; the import service has no ULog detect endpoint. Requires the new ulog extra: pip install sift-stack-py[ulog].
  • With no config, every channel in the file is imported. Use detect_config to inspect the channels first and drop, rename, or retype them before importing.
  • Channels are selected by message_name, instance, and field_name. The derived channel property gives the full name, e.g. "sensor_accel_0.x", which is also the default Sift channel name.
  • Config also supports relative_start_time (anchors the timeline; required when the log has no GPS fix), info_keys / param_keys (imported as run metadata), and parse_error_policy.

Test

  • Unit tests: detection rules on synthetic .ulg files (all scalar types, multi-instance topics, logged strings, corrupt records) and config round-trips through the proto.
  • Manual QA against dev: imported values and timestamps match pyulog's decode; selective import picks the right instance and applies renames, units, and run metadata; bad selectors, and missing time anchors

@github-actions

github-actions Bot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Python docs preview: https://sift-stack.github.io/sift/python/pr-663/

Deployed from ed30e4e. The link may take up to a minute to become live as GitHub Pages propagates.

@wei-qlu
wei-qlu marked this pull request as ready for review July 1, 2026 23:45
@wei-qlu wei-qlu changed the title python(feat): add ULog data import support python(feat): ULog data imports Jul 1, 2026
@wei-qlu
wei-qlu force-pushed the eng-12125-sift-client-ulog-imports branch from 1d2d394 to 7b64adb Compare July 2, 2026 00:35
@wei-qlu
wei-qlu requested a review from Brandon-Shippy July 2, 2026 07:09
Comment thread python/lib/sift_client/_internal/util/ulog.py Outdated
@wei-qlu
wei-qlu requested a review from marc-sift July 7, 2026 18:14
@wei-qlu
wei-qlu marked this pull request as draft July 8, 2026 17:52
@wei-qlu
wei-qlu force-pushed the eng-12125-sift-client-ulog-imports branch from fb44f44 to c8e91da Compare July 9, 2026 20:24
@wei-qlu
wei-qlu marked this pull request as ready for review July 9, 2026 21:37
Comment thread python/lib/sift_client/sift_types/data_import.py Outdated
Comment thread python/lib/sift_client/sift_types/data_import.py Outdated
Comment thread python/lib/sift_client/_internal/util/ulog.py Outdated
@wei-qlu
wei-qlu requested a review from marc-sift July 10, 2026 19:15
@wei-qlu
wei-qlu merged commit d23a0a1 into main Jul 10, 2026
26 checks passed
@wei-qlu
wei-qlu deleted the eng-12125-sift-client-ulog-imports branch July 10, 2026 20:46
alexluck-sift pushed a commit that referenced this pull request Jul 11, 2026
Bump version to 0.19.0 and update the changelog for the PRs merged
since v0.18.0: ABAC attributes (#646), get_data cache improvements
(#650), pytest docstring cleaning (#658), ULog data imports (#663),
access control API grouping (#666), report templates (#672),
download_file extra headers (#677), and the get_data pagination fix
plus progress bars (#678).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y5U49rrpvQm5bPbvEjR4xr
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants