- 1.4.0
- 1.3.0
- 1.2.0
- 1.1.0
- 1.0.2
- 1.0.1
- 1.0.0
- 0.9.0
- 0.8.0
- 0.7.0
- 0.6.5
- 0.6.4
- 0.6.3
- 0.6.2
- 0.6.1
- 0.6.0
- 0.5.8
- 0.5.7
- 0.5.6
- 0.5.5
- 0.5.4
- 0.5.2
- 0.5.0
All notable changes to this project will be documented in this file.
-
- ...
-
- ...
-
- ...
-
- (IN PROGRESS behind "WAVEFORM_SUPPORT" feature toggle) Added support for reading and writing Waveform data.
- Simplify
numpyandclickversion constraints.nidaqmxsupports a wider range of Python versions thannumpyandclick, so testingnidaqmxagainst its oldest supported Python version (currently 3.9) requires downgrading to older versions ofnumpyandclick.- Previously, these testing-specific version constraints leaked into to the
nidaqmxdistribution package and affected clients. Adding PyPy-specific markers exacerbated this problem by requiring clients to specify the same markers. numpy2.0.x is the last version that supports Python 3.9, and it crashes with Python 3.13, so thenidaqmxdistribution package specifies twonumpyversion constraints: one for Python 3.9-3.12 (numpy>=1.22) and one for Python 3.13+ (numpy>=2.1).- The
nidaqmxdistribution package now specifies only a lower bound forclick.
- Clarify PyPy support and enable unit testing with PyPy.
- Adopt ni-python-styleguide for hand-written code.
- Upgrade to Poetry 2.x and migrate
pyproject.tomlformat. - Add support for Python 3.14.
- Add https://github.com/ni/ni-apis as a submodule of nidaqmx-python.
- Add an optional dependency on
ni.grpcdevice.v1.proto.- The internal
session_pb2submodule has been moved to the shared packageni.grpcdevice.v1.proto. Installing thenidaqmxpackage'sgrpcextra will automatically install this package. - If you get
ModuleNotFoundError: No module named 'session_pb2', make sure you are installing thenidaqmxpackage'sgrpcextra.
- The internal
-
- ...
-
- Fix PEP 660 builds by setting
build-systemto usepoetry-core - 579: nidaqmx does not generate numbered virtual channel names correctly
- 692: Cannot set "ai_conv_rate" on NI DAQ 9209 due to missing active device modifier for timing attributes
- Fix PEP 660 builds by setting
-
- Removed the
docsextra and converted it to a Poetry dependency group. - Updated hightime dependency from
^0.2.2to>=0.2.2to allow for newer versions.
- Removed the
-
- ...
-
- Added support for mioDAQ configurable digital voltage.
- Added support for mioDAQ ID Pin.
- Removed support for Python 3.8.
-
- ...
-
- 644: nidaqmx doesn't support Python 3.13+
- 641: No devices found
- Fall back to ASCII encoding if the system locale is not set.
-
- 540: Task.wait_for_valid_timestamp doesn't return the timestamp
- 606: CERTIFICATE_VERIFY_FAILED occurs when executing installdriver command on Windows system
- 615: Onboard device memory overflow
- 623: installdriver CLI doesn't prompt or indicate what versions are being downloaded/installed on a clean system
-
- Add support for strain calibration (offset nulling and shunt calibration)
- Add support for DAQmx calibration info properties
- Add support for WaitForValidTimestamp
- Fix naming issues:
- Rename
ShuntCalSelect.AAND_BtoA_AND_B.
- Rename
- Automate Driver Install Experience within nidaqmx Module
- Update libtime to accept time before 1970
-
- ...
-
nidaqmx.errors.DaqNotFoundError,nidaqmx.errors.DaqNotSupportedError, andnidaqmx.errors.DaqFunctionNotSupportedErrorare now public exceptions.- Consistently return
nidaqmx.errors.DaqNotFoundErroron all platforms when the NI-DAQmx driver is not installed. - Updated supported Python versions to 3.8, 3.9, 3.10, 3.11, and 3.12
-
- ...
-
- Full changelog: 0.7.0...0.8.0
- Query: Closed PRs with the label: interpreter_implementation
- Query: Closed PRs with the label: library_interpreter
- Query: Closed PRs with the label: grpc_interpreter
- Query: Closed PRs with the label: test_improvements
- Query: Closed PRs with the label: interpreter_fixes
- Query: Closed PRs with the label: interpreter_testcase_update
- Query: Closed PRs with the label: event_handling
-
- Added support for communicating with DAQmx devices through gRPC using NI gRPC Device Server. This enables using DAQmx with the MeasurementLink session management service.
- The initialization methods for
Task,Scale, and other classes now accept a keyword-onlygrpc_optionsparameter. Pass aGrpcSessionsOptionsobject to enable gRPC support. - The
Systemclass now has aremote()method which accepts aGrpcSessionOptionsobject. - NI gRPC Device Server version 2.2 or later is required. Older versions of NI gRPC Device Server are unsupported because they are missing bug fixes needed to support nidaqmx-python.
- The initialization methods for
- The following functions now emit
DeprecationWarningwhen called:nidaqmx.errorsmodule:check_for_error,is_string_buffer_too_small, andis_array_buffer_too_smallarectypes-specific helper functions, so they have been moved to an internal module.Systemclass:set_analog_power_up_statesdoes not supportPowerUpStates.TRISTATEandget_analog_power_up_stateshas design issues that make the previous implementation unworkable, so they have been deprecated in favor ofset_analog_power_up_states_with_output_typeandget_analog_power_up_states_with_output_type.
- The internals of the
nidaqmxpackage have been refactored to support gRPC:- Access to the DAQmx driver is now handled by the internal
BaseInterpreterabstract base class. There are separate implementations of this abstract base class forctypesvs. gRPC. - Internal initialization methods now accept an
interpreterparameter. Methods that take aninterpreterare not part of the public API. - Added a stub generator which will generate the gRPC stub files based on the proto files present in
src/codegen/protos. The files will be generated intogenerator/nidaqmx/_stubs. - The internal
nidaqmx._task_modules.read_functionsandnidaqmx._task_modules.write_functionsmodules have been removed. If your application uses these modules, you must update it to use public APIs such astask.read()/task.write(),task.in_stream.read()/task.out_stream.write(), ornidaqmx.stream_readers/nidaqmx.stream_writers. - Updated the existing tests to run with and without gRPC support.
- Added multiple test cases to improve the overall test coverage.
- Access to the DAQmx driver is now handled by the internal
- Added support for communicating with DAQmx devices through gRPC using NI gRPC Device Server. This enables using DAQmx with the MeasurementLink session management service.
-
- Comparisons between DAQmx object instances do not take gRPC remoting into account. For example,
Device("Dev1")refers to a local device andDevice("Dev1", grpc_options=...)refers to a remote device, but they are considered equal. Likewise, two instances ofDevice("Dev1", grpc_options=...)with different remote hosts are considered equal.
- Comparisons between DAQmx object instances do not take gRPC remoting into account. For example,
-
- Added a generator that produces the
nidaqmxmodule code. - Some properties were renamed in an effort to improve the consistency of the
nidaqmxmodule and to support maintainability of the generator. The previous names are still usable, but will emit aDeprecationWarningon usage. These deprecated properties may be removed in a future update. - Unused enums have been removed. This affects enums that are solely used by DAQmx features that are not supported in the
nidaqmxmodule, such as external calibration, the DAQmx switch API, and internal APIs. - Refactored the repository folder structure as follows:
generated/nidaqmx/- The output of the code generator and source for the buildnidaqmxmodule. Do not directly modify any files in this folder.examples/- Example programs demonstrating how to use thenidaqmxmodule.src/codegen/- The code generator.src/handwritten/- Hand-maintained files that are copied as-is during code generation.tests- Test code that exercises thenidaqmxmodule to ensure it functions correctly and doesn't introduce regressions.
- Multiple various test improvements in support of the generator refactoring.
- Added a generator that produces the
-
- DAQmx 22.0 updates.
-
- Added NI-DAQmx Power Channel APIs.
-
- 37: ai_raw example is bad
- 54: Linux supported?
- 64: nidaqmx-python and pynidaqmx projects use the same package name
- 65: ci_count_edges.py REQUIRES A START COMMAND
- 100: How to clear task and create a new task with same name?
- 101: Use IntEnum instead of Enum
- 102: handle types and daqmx versions
- 117: Error in example
- 131: task.write for COUNTER_OUTPUT - UsageTypeCO.PULSE_FREQUENCY has frequency and duty cycle reversed
- 124: nidaqmx_examples/system_properties.py errors out as of version 0.5.7
- 151: Write functions require writable numpy array
- 154: Problem with task.write() when not enough buffer free
-
- Scrubbed all examples to ensure they all function correctly and use DAQmx best practices.
- Added
DaqReadErrorandDaqWriteErrorsubclasses ofDaqErrorthat provide important metadata for partial reads and writes. - Linux is officially supported.
-
- Add support for most NI-DAQmx 16.1-21.5 APIs.
- APIs using time data types are not yet supported.
- Various other improvements:
- No more empty docstrings on constants.
- Fix C API function mapping for attributes - dozens were incorrect.
- Remove some internal-only enumerations that were unused.
- (compat breaker) Fix two egregious naming issues when translating the API to
SNAKE_CASE.M_HZis nowMHZ(megahertz) and<word>m_VOLTSis nowMILLIVOLTS. - (compat breaker) Fix various constant names that didn't make any sense.
- Add a header to all auto-generated files indicating that they should not be edited by hand.
- Add support for most NI-DAQmx 16.1-21.5 APIs.
-
- Bug in InStream.readinto()
- Fix for Linux where DAQmxGetSysNIDAQUpdateVersion is not available
- Fix RelativeTo function names to match DLL names
- fix: exported symbol names
- fix: dev dependencies to avoid security alerts
- fix: task.del to use _saved_name
- remove: python2.7 support
- update: requirements
- Fix warning regarding ABC import from collections
- remove: py2, py27 support from classifiers
- Correct Network Connection Loss Property
-
- Fixed
test_many_sample_pulse_tickstest - Added a bridge device to test MAX config to enable
test_list_of_floats_propertyto run - 36: no version information available
- Fixed
-
- Switched to poetry build system.
- Updated supported Python versions to 3.7, 3.8, 3.9, and 3.10
- Updated to latest dependencies
- Replaced
numpy.boolwithboolnative type
- Replaced
-
- Adding lock around
argtypesto prevent race condition between settingargtypesand calling functions, in cases the functions run in parallel. - Some special cases needed unconditional locks around both the setting of
argtypesand the actual function call, like the variadic power-up state functions in system.py, and the register events functions in task.py.
- Adding lock around
- Initial public release of nidaqmx
- Update setup.py description and fix issues 2, 3, 5, and 6 raised by Ed Page.
- Splitting joined acronyms AIADC, AIDC, AILVDT, AIRVDT and CITC.
- Adding link to LICENSE file.
- Updating README.rst file in source directory to eliminate Sphinx domaindirectives and add link to documentation on readthedocs.
- Initial pre-release of nidaqmx