ni / ni/nitypes-python

Migrate bintime support into hightime (for waveforms)

Open
#186 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

tech debt
Dominant language
Python
Stars
6
Forks
3
PR merge metrics
No merged PRs in 30d

Description

Tech Debt

Currently, waveform.Timing is a generic timing object that can be either hightime or bintime. We should standardize on hightime so that we can change waveform.Timing to just be hightime.

To enable this, we will need to upgrade hightime (making changes in the hightime repo) to support the bintime internal representation, and to be able to construct a hightime with bintime data.

Doing this would mean that we would no longer need bintime as a public type, which means users would never have to think about which timing (hightime vs bintime) to use. Any API methods that currently accept bintime should then be changed to take hightime only.

The pickle representation of hightime could present a challenge here. One idea is to use a different pickle representation when it contains a bintime. The reduce method can return a different constructor or static method.
e.g. if has_bintime: return (datetime.from_cvi, [cvi_msb, cvi_lsb]); else: return crazy datetime binary buffer

AB#3247639

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing waveform.Timing and the API methods that currently accept bintime, then review the required hightime changes in the hightime repository. Investigate hightime's pickle and reduce behavior for bintime-backed values. Done means waveform.Timing and those APIs use hightime only, bintime is no longer a public type, and serialization remains supported.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.