Skip to content

Handle reads that don't match Waveform length - #819

Merged
mikeprosserni merged 13 commits into
masterfrom
users/mprosser/task-3228924-set-sample-count
Sep 9, 2025
Merged

mikeprosserni merged 13 commits into
masterfrom
users/mprosser/task-3228924-set-sample-count

Conversation

@mikeprosserni

@mikeprosserni mikeprosserni commented Sep 3, 2025 •

Copy link
Copy Markdown
Contributor
  • This contribution adheres to CONTRIBUTING.md.
  • I've updated CHANGELOG.md if applicable.
  • I've added tests applicable for this pull request

What does this Pull Request accomplish?

This PR takes advantage of the newly-settable waveform.sample_count property to adjust the waveform size in two scenarios:

  1. If the data available to be read was less than the size of the waveform, (a "short read"), then the waveform's sample count will be lowered to match the actual amount of available data read.

  2. If the data available to be read was greater than the size of the waveform (and the new InStream.reallocation_policy is set to TO_GROW), then the waveform's sample count will be increased to accommodate all the available data.

The new ReallocationPolicy enum is based on the one in the .NET API.

Why should this Pull Request be merged?

AB#3228924

What testing has been done?

test___analog_multi_channel_reader___read_into_undersized_waveforms___returns_valid_waveforms
test___analog_single_channel_reader___read_into_undersized_waveform___returns_valid_waveform
test___digital_multi_channel_multi_line_reader___read_into_undersized_waveforms___returns_valid_waveforms
test___digital_single_line_reader___read_into_undersized_waveform___returns_valid_waveform

test___analog_multi_channel_reader___reuse_waveform_in_place_with_different_sample_counts___populates_valid_waveforms
test___analog_single_channel_reader___reuse_waveform_in_place_with_different_sample_counts___populates_valid_waveforms
test___digital_multi_channel_reader___reuse_waveform_in_place_with_different_sample_counts___populates_valid_waveforms
test___digital_single_channel_reader___reuse_waveform_in_place_with_different_sample_counts___populates_valid_waveforms

test___analog_single_channel_finite___read_waveform_too_many_samples___returns_waveform_with_correct_number_of_samples
test___analog_multi_channel_finite___read_waveform_too_many_samples___returns_waveforms_with_correct_number_of_samples
test___digital_single_channel___read_waveform_too_many_samples___returns_waveform_with_correct_number_of_samples
test___digital_multi_channel___read_waveform_too_many_samples___returns_waveforms_with_correct_number_of_samples

@github-actions

github-actions Bot commented Sep 3, 2025 •

Copy link
Copy Markdown
Contributor

Test Results

    38 files  ±  0      38 suites  ±0   1h 3m 13s ⏱️ +17s
 2 691 tests + 16   2 244 ✅ + 12    447 💤 + 4  0 ❌ ±0 
47 542 runs  +160  40 346 ✅ +120  7 196 💤 +40  0 ❌ ±0 

Results for commit d86c7c6. ± Comparison against base commit faf34c9.

This pull request removes 8 and adds 24 tests. Note that renamed tests count towards both.
tests.component.stream_readers.test_analog_multi_channel_reader ‑ test___analog_multi_channel_reader___read_into_undersized_waveforms___throws_exception[grpc_init_kwargs]
tests.component.stream_readers.test_analog_multi_channel_reader ‑ test___analog_multi_channel_reader___read_into_undersized_waveforms___throws_exception[library_init_kwargs]
tests.component.stream_readers.test_analog_single_channel_reader ‑ test___analog_single_channel_reader___read_into_undersized_waveform___throws_exception[grpc_init_kwargs]
tests.component.stream_readers.test_analog_single_channel_reader ‑ test___analog_single_channel_reader___read_into_undersized_waveform___throws_exception[library_init_kwargs]
tests.component.stream_readers.test_digital_multi_channel_reader ‑ test___digital_multi_channel_multi_line_reader___read_into_undersized_waveforms___throws_exception[grpc_init_kwargs]
tests.component.stream_readers.test_digital_multi_channel_reader ‑ test___digital_multi_channel_multi_line_reader___read_into_undersized_waveforms___throws_exception[library_init_kwargs]
tests.component.stream_readers.test_digital_single_channel_reader ‑ test___digital_single_line_reader___read_into_undersized_waveform___throws_exception[grpc_init_kwargs]
tests.component.stream_readers.test_digital_single_channel_reader ‑ test___digital_single_line_reader___read_into_undersized_waveform___throws_exception[library_init_kwargs]
tests.component.stream_readers.test_analog_multi_channel_reader ‑ test___analog_multi_channel_reader___read_into_undersized_waveforms___returns_valid_waveforms[grpc_init_kwargs]
tests.component.stream_readers.test_analog_multi_channel_reader ‑ test___analog_multi_channel_reader___read_into_undersized_waveforms___returns_valid_waveforms[library_init_kwargs]
tests.component.stream_readers.test_analog_multi_channel_reader ‑ test___analog_multi_channel_reader___read_into_undersized_waveforms_without_reallocation___throws_exception[grpc_init_kwargs]
tests.component.stream_readers.test_analog_multi_channel_reader ‑ test___analog_multi_channel_reader___read_into_undersized_waveforms_without_reallocation___throws_exception[library_init_kwargs]
tests.component.stream_readers.test_analog_multi_channel_reader ‑ test___analog_multi_channel_reader___reuse_waveform_in_place_with_different_sample_counts___populates_valid_waveforms[grpc_init_kwargs]
tests.component.stream_readers.test_analog_multi_channel_reader ‑ test___analog_multi_channel_reader___reuse_waveform_in_place_with_different_sample_counts___populates_valid_waveforms[library_init_kwargs]
tests.component.stream_readers.test_analog_single_channel_reader ‑ test___analog_single_channel_reader___read_into_undersized_waveform___returns_valid_waveform[grpc_init_kwargs]
tests.component.stream_readers.test_analog_single_channel_reader ‑ test___analog_single_channel_reader___read_into_undersized_waveform___returns_valid_waveform[library_init_kwargs]
tests.component.stream_readers.test_analog_single_channel_reader ‑ test___analog_single_channel_reader___read_into_undersized_waveform_without_reallocation___throws_exception[grpc_init_kwargs]
tests.component.stream_readers.test_analog_single_channel_reader ‑ test___analog_single_channel_reader___read_into_undersized_waveform_without_reallocation___throws_exception[library_init_kwargs]
…
This pull request removes 4 skipped tests and adds 12 skipped tests. Note that renamed tests count towards both.
tests.component.stream_readers.test_analog_multi_channel_reader ‑ test___analog_multi_channel_reader___read_into_undersized_waveforms___throws_exception[grpc_init_kwargs]
tests.component.stream_readers.test_analog_single_channel_reader ‑ test___analog_single_channel_reader___read_into_undersized_waveform___throws_exception[grpc_init_kwargs]
tests.component.stream_readers.test_digital_multi_channel_reader ‑ test___digital_multi_channel_multi_line_reader___read_into_undersized_waveforms___throws_exception[grpc_init_kwargs]
tests.component.stream_readers.test_digital_single_channel_reader ‑ test___digital_single_line_reader___read_into_undersized_waveform___throws_exception[grpc_init_kwargs]
tests.component.stream_readers.test_analog_multi_channel_reader ‑ test___analog_multi_channel_reader___read_into_undersized_waveforms___returns_valid_waveforms[grpc_init_kwargs]
tests.component.stream_readers.test_analog_multi_channel_reader ‑ test___analog_multi_channel_reader___read_into_undersized_waveforms_without_reallocation___throws_exception[grpc_init_kwargs]
tests.component.stream_readers.test_analog_multi_channel_reader ‑ test___analog_multi_channel_reader___reuse_waveform_in_place_with_different_sample_counts___populates_valid_waveforms[grpc_init_kwargs]
tests.component.stream_readers.test_analog_single_channel_reader ‑ test___analog_single_channel_reader___read_into_undersized_waveform___returns_valid_waveform[grpc_init_kwargs]
tests.component.stream_readers.test_analog_single_channel_reader ‑ test___analog_single_channel_reader___read_into_undersized_waveform_without_reallocation___throws_exception[grpc_init_kwargs]
tests.component.stream_readers.test_analog_single_channel_reader ‑ test___analog_single_channel_reader___reuse_waveform_in_place_with_different_sample_counts___populates_valid_waveforms[grpc_init_kwargs]
tests.component.stream_readers.test_digital_multi_channel_reader ‑ test___digital_multi_channel_multi_line_reader___read_into_undersized_waveforms___returns_valid_waveforms[grpc_init_kwargs]
tests.component.stream_readers.test_digital_multi_channel_reader ‑ test___digital_multi_channel_multi_line_reader___read_into_undersized_waveforms_without_reallocation___throws_exception[grpc_init_kwargs]
tests.component.stream_readers.test_digital_multi_channel_reader ‑ test___digital_multi_channel_reader___reuse_waveform_in_place_with_different_sample_counts___populates_valid_waveforms[grpc_init_kwargs]
tests.component.stream_readers.test_digital_single_channel_reader ‑ test___digital_single_channel_reader___reuse_waveform_in_place_with_different_sample_counts___populates_valid_waveforms[grpc_init_kwargs]
…

♻️ This comment has been updated with latest results.

@mikeprosserni
mikeprosserni marked this pull request as ready for review September 3, 2025 21:19
Comment thread tests/component/readers/test_analog_multi_channel_reader.py
Comment thread src/codegen/templates/_library_interpreter.py.mako Outdated
Comment thread src/codegen/templates/task/_in_stream.py.mako Outdated
Comment thread src/handwritten/stream_readers/analog_multi_channel_reader.py Outdated
Comment thread src/handwritten/stream_readers/analog_multi_channel_reader.py
Comment thread generated/nidaqmx/_library_interpreter.py Outdated
Comment thread generated/nidaqmx/stream_readers/_analog_multi_channel_reader.py
Comment thread generated/nidaqmx/stream_readers/_analog_multi_channel_reader.py Outdated
Comment thread generated/nidaqmx/stream_readers/_analog_single_channel_reader.py Outdated
Comment thread generated/nidaqmx/stream_readers/analog_multi_channel_reader.py Outdated
Comment thread src/handwritten/stream_readers/_analog_multi_channel_reader.py
@mikeprosserni
mikeprosserni merged commit 43fad37 into master Sep 9, 2025
27 checks passed
@mikeprosserni
mikeprosserni deleted the users/mprosser/task-3228924-set-sample-count branch September 9, 2025 21:40
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.

3 participants