Skip to content

python(feat): ULog data imports - #663

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

wei-sift merged 15 commits into
mainfrom
eng-12125-sift-client-ulog-imports

Conversation

@wei-sift

@wei-sift wei-sift 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-sift
wei-sift marked this pull request as ready for review July 1, 2026 23:45
@wei-sift wei-sift changed the title python(feat): add ULog data import support python(feat): ULog data imports Jul 1, 2026
@wei-sift
wei-sift force-pushed the eng-12125-sift-client-ulog-imports branch from 1d2d394 to 7b64adb Compare July 2, 2026 00:35
Comment thread python/lib/sift_client/_internal/util/ulog.py Outdated
@wei-sift
wei-sift requested a review from marc-sift July 7, 2026 18:14
@wei-sift
wei-sift marked this pull request as draft July 8, 2026 17:52
@wei-sift
wei-sift force-pushed the eng-12125-sift-client-ulog-imports branch from fb44f44 to c8e91da Compare July 9, 2026 20:24
@wei-sift
wei-sift 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-sift
wei-sift requested a review from marc-sift July 10, 2026 19:15
@wei-sift
wei-sift merged commit d23a0a1 into main Jul 10, 2026
26 checks passed
@wei-sift
wei-sift 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