Migrate bintime support into hightime (for waveforms)
Nobody has claimed this yet.
- 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
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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