From 9054f482f386e8cb10569a5b59c3fccb85adbdde Mon Sep 17 00:00:00 2001 From: Brad Keryan Date: Fri, 24 Oct 2025 13:47:07 -0500 Subject: [PATCH 1/8] Remove support for Python 3.9 --- examples/game_of_life/pyproject.toml | 2 +- examples/nidaqmx_analog_input/pyproject.toml | 2 +- examples/nidcpower_source_dc_voltage/pyproject.toml | 2 +- .../pyproject.toml | 2 +- examples/nidigital_spi/pyproject.toml | 2 +- examples/nidmm_measurement/pyproject.toml | 2 +- examples/nifgen_standard_function/pyproject.toml | 2 +- examples/niscope_acquire_waveform/pyproject.toml | 2 +- examples/niswitch_control_relays/pyproject.toml | 2 +- examples/nivisa_dmm_measurement/pyproject.toml | 2 +- examples/output_voltage_measurement/pyproject.toml | 2 +- examples/sample_measurement/pyproject.toml | 2 +- packages/generator/README.md | 2 +- packages/generator/pyproject.toml | 12 ++++-------- packages/generator/tox.ini | 2 +- packages/sdk/pyproject.toml | 2 +- packages/service/README.md | 2 +- packages/service/pyproject.toml | 8 ++++---- packages/service/tox.ini | 2 +- 19 files changed, 25 insertions(+), 29 deletions(-) diff --git a/examples/game_of_life/pyproject.toml b/examples/game_of_life/pyproject.toml index 141a04267..0214288eb 100644 --- a/examples/game_of_life/pyproject.toml +++ b/examples/game_of_life/pyproject.toml @@ -6,7 +6,7 @@ description = "Measurement plug-in example that displays Conway's Game of Life i authors = ["National Instruments"] [tool.poetry.dependencies] -python = "^3.9" +python = "^3.10" ni-measurement-plugin-sdk-service = {version = ">=2.3.1,<4.0"} click = ">=7.1.2, !=8.1.4" # mypy fails with click 8.1.4: https://github.com/pallets/click/issues/2558 ni-protobuf-types = { version = ">=0.1.0dev2", allow-prereleases = true } diff --git a/examples/nidaqmx_analog_input/pyproject.toml b/examples/nidaqmx_analog_input/pyproject.toml index db24bf3b9..369fb4727 100644 --- a/examples/nidaqmx_analog_input/pyproject.toml +++ b/examples/nidaqmx_analog_input/pyproject.toml @@ -6,7 +6,7 @@ description = "Measurement plug-in example that performs a finite analog input m authors = ["National Instruments"] [tool.poetry.dependencies] -python = "^3.9" +python = "^3.10" nidaqmx = { version = ">=0.8.0", extras = ["grpc"] } ni-measurement-plugin-sdk-service = {version = ">=2.3.1,<4.0"} click = ">=7.1.2, !=8.1.4" # mypy fails with click 8.1.4: https://github.com/pallets/click/issues/2558 diff --git a/examples/nidcpower_source_dc_voltage/pyproject.toml b/examples/nidcpower_source_dc_voltage/pyproject.toml index 5575213a7..7c4862afc 100644 --- a/examples/nidcpower_source_dc_voltage/pyproject.toml +++ b/examples/nidcpower_source_dc_voltage/pyproject.toml @@ -6,7 +6,7 @@ description = "Measurement plug-in example that sources and measures a DC voltag authors = ["National Instruments"] [tool.poetry.dependencies] -python = "^3.9" +python = "^3.10" nidcpower = { version = ">=1.4.4", extras = ["grpc"] } ni-measurement-plugin-sdk-service = {version = ">=2.3.1,<4.0"} click = ">=7.1.2, !=8.1.4" # mypy fails with click 8.1.4: https://github.com/pallets/click/issues/2558 diff --git a/examples/nidcpower_source_dc_voltage_with_multiplexer/pyproject.toml b/examples/nidcpower_source_dc_voltage_with_multiplexer/pyproject.toml index e11ca5e9a..f6d7d2b63 100644 --- a/examples/nidcpower_source_dc_voltage_with_multiplexer/pyproject.toml +++ b/examples/nidcpower_source_dc_voltage_with_multiplexer/pyproject.toml @@ -6,7 +6,7 @@ description = "Measurement plug-in example that sources and measures a DC voltag authors = ["National Instruments"] [tool.poetry.dependencies] -python = "^3.9" +python = "^3.10" nidcpower = { version = ">=1.4.4", extras = ["grpc"] } niswitch = { version = ">=1.4.4", extras = ["grpc"] } ni-measurement-plugin-sdk-service = {version = ">=2.3.1,<4.0"} diff --git a/examples/nidigital_spi/pyproject.toml b/examples/nidigital_spi/pyproject.toml index a0429a933..7e140fb0d 100644 --- a/examples/nidigital_spi/pyproject.toml +++ b/examples/nidigital_spi/pyproject.toml @@ -6,7 +6,7 @@ description = "Measurement plug-in example that tests a SPI device using an NI D authors = ["National Instruments"] [tool.poetry.dependencies] -python = "^3.9" +python = "^3.10" nidigital = { version = ">=1.4.4", extras = ["grpc"] } ni-measurement-plugin-sdk-service = {version = ">=2.3.1,<4.0"} click = ">=7.1.2, !=8.1.4" # mypy fails with click 8.1.4: https://github.com/pallets/click/issues/2558 diff --git a/examples/nidmm_measurement/pyproject.toml b/examples/nidmm_measurement/pyproject.toml index 446ab4926..d42d92de8 100644 --- a/examples/nidmm_measurement/pyproject.toml +++ b/examples/nidmm_measurement/pyproject.toml @@ -6,7 +6,7 @@ description = "Measurement plug-in example that performs a measurement using an authors = ["National Instruments"] [tool.poetry.dependencies] -python = "^3.9" +python = "^3.10" nidmm = { version = ">=1.4.4", extras = ["grpc"] } ni-measurement-plugin-sdk-service = {version = ">=2.3.1,<4.0"} click = ">=7.1.2, !=8.1.4" # mypy fails with click 8.1.4: https://github.com/pallets/click/issues/2558 diff --git a/examples/nifgen_standard_function/pyproject.toml b/examples/nifgen_standard_function/pyproject.toml index eb29a5915..c86fe48ef 100644 --- a/examples/nifgen_standard_function/pyproject.toml +++ b/examples/nifgen_standard_function/pyproject.toml @@ -6,7 +6,7 @@ description = "Measurement plug-in example that generates a standard function wa authors = ["National Instruments"] [tool.poetry.dependencies] -python = "^3.9" +python = "^3.10" nifgen = { version = ">=1.4.4", extras = ["grpc"] } ni-measurement-plugin-sdk-service = {version = ">=2.3.1,<4.0"} click = ">=7.1.2, !=8.1.4" # mypy fails with click 8.1.4: https://github.com/pallets/click/issues/2558 diff --git a/examples/niscope_acquire_waveform/pyproject.toml b/examples/niscope_acquire_waveform/pyproject.toml index 2d00e1655..58a4d0ca3 100644 --- a/examples/niscope_acquire_waveform/pyproject.toml +++ b/examples/niscope_acquire_waveform/pyproject.toml @@ -6,7 +6,7 @@ description = "Measurement plug-in example that acquires a waveform using an NI authors = ["National Instruments"] [tool.poetry.dependencies] -python = "^3.9" +python = "^3.10" niscope = { version = ">=1.4.4", extras = ["grpc"] } ni-measurement-plugin-sdk-service = {version = ">=2.3.1,<4.0"} click = ">=7.1.2, !=8.1.4" # mypy fails with click 8.1.4: https://github.com/pallets/click/issues/2558 diff --git a/examples/niswitch_control_relays/pyproject.toml b/examples/niswitch_control_relays/pyproject.toml index d8f492747..f4fa13aa7 100644 --- a/examples/niswitch_control_relays/pyproject.toml +++ b/examples/niswitch_control_relays/pyproject.toml @@ -6,7 +6,7 @@ description = "Measurement plug-in example that controls relays using an NI rela authors = ["National Instruments"] [tool.poetry.dependencies] -python = "^3.9" +python = "^3.10" niswitch = { version = ">=1.4.4", extras = ["grpc"] } ni-measurement-plugin-sdk-service = {version = ">=2.3.1,<4.0"} click = ">=7.1.2, !=8.1.4" # mypy fails with click 8.1.4: https://github.com/pallets/click/issues/2558 diff --git a/examples/nivisa_dmm_measurement/pyproject.toml b/examples/nivisa_dmm_measurement/pyproject.toml index a4f58b347..86fc38377 100644 --- a/examples/nivisa_dmm_measurement/pyproject.toml +++ b/examples/nivisa_dmm_measurement/pyproject.toml @@ -6,7 +6,7 @@ description = "Measurement plug-in example that performs a DMM measurement using authors = ["National Instruments"] [tool.poetry.dependencies] -python = "^3.9" +python = "^3.10" ni-measurement-plugin-sdk-service = {version = ">=2.3.1,<4.0"} PyVISA = "^1.13.0" PyVISA-sim = "^0.5.1" diff --git a/examples/output_voltage_measurement/pyproject.toml b/examples/output_voltage_measurement/pyproject.toml index 37f584e6c..e20cea77c 100644 --- a/examples/output_voltage_measurement/pyproject.toml +++ b/examples/output_voltage_measurement/pyproject.toml @@ -6,7 +6,7 @@ description = "" authors = ["National Instruments"] [tool.poetry.dependencies] -python = "^3.9" +python = "^3.10" ni-measurement-plugin-sdk-service = {version = ">=2.3.1,<4.0"} PyVISA = "^1.13.0" PyVISA-sim = "^0.5.1" diff --git a/examples/sample_measurement/pyproject.toml b/examples/sample_measurement/pyproject.toml index 378b776d8..eea124b3a 100644 --- a/examples/sample_measurement/pyproject.toml +++ b/examples/sample_measurement/pyproject.toml @@ -6,7 +6,7 @@ description = "Measurement plug-in example that performs a loopback measurement authors = ["National Instruments"] [tool.poetry.dependencies] -python = "^3.9" +python = "^3.10" ni-measurement-plugin-sdk-service = {version = ">=2.3.1,<4.0"} click = ">=7.1.2, !=8.1.4" # mypy fails with click 8.1.4: https://github.com/pallets/click/issues/2558 ni-protobuf-types = { version = ">=0.1.0dev2", allow-prereleases = true } diff --git a/packages/generator/README.md b/packages/generator/README.md index 51b06637c..715ab8089 100644 --- a/packages/generator/README.md +++ b/packages/generator/README.md @@ -22,7 +22,7 @@ Measurement Plug-In SDK Generator for Python (`ni-measurement-plugin-sdk-generat ## Dependencies -- [Python >= 3.9](https://www.python.org/downloads/release/python-3913/) +- [Python >= 3.10](https://www.python.org/downloads/release/python-3100/) - [mako >= 1.2.1, < 2.x](https://pypi.org/project/Mako/1.2.1/) - [click >= 8.1.3](https://pypi.org/project/click/8.1.3/) diff --git a/packages/generator/pyproject.toml b/packages/generator/pyproject.toml index e4f2d9bf9..b987b9c93 100644 --- a/packages/generator/pyproject.toml +++ b/packages/generator/pyproject.toml @@ -19,13 +19,9 @@ classifiers = [ ] [tool.poetry.dependencies] -python = "^3.9" +python = "^3.10" Mako = "^1.2.1" -click = [ - # When dropping support for Python 3.9, remove the version check from tests/conftest.py - {version = ">=8.1.3,<8.2.0", python = ">=3.9,<3.10"}, - {version = ">=8.1.3", python = "^3.10"}, -] +click = ">=8.1.3" grpcio = "^1.49.1" protobuf = ">=4.21" black = ">=24.8.0" @@ -51,7 +47,7 @@ ni-measurement-plugin-sdk-service = {path = "../../packages/service", develop = bandit = { version = ">=1.7", extras = ["toml"] } tox = ">=4.0" grpcio-tools = [ - {version = "1.49.1", python = ">=3.9,<3.12"}, + {version = "1.49.1", python = ">=3.10,<3.12"}, {version = "1.59.0", python = ">=3.12,<3.13"}, {version = "1.67.0", python = ">=3.13,<3.14"}, {version = "1.75.1", python = "^3.14"}, @@ -59,7 +55,7 @@ grpcio-tools = [ # NumPy dropped support for Python 3.8 before adding support for Python 3.12, so # we need to include multiple NumPy versions in poetry.lock. numpy = [ - { version = ">=1.22", python = ">=3.9,<3.12"}, + { version = ">=1.22", python = ">=3.10,<3.12"}, { version = ">=1.26", python = ">=3.12,<3.13"}, { version = ">=2.1", python = "^3.13"}, ] diff --git a/packages/generator/tox.ini b/packages/generator/tox.ini index ad01069cc..b70d207a8 100644 --- a/packages/generator/tox.ini +++ b/packages/generator/tox.ini @@ -5,7 +5,7 @@ [tox] isolated_build = true -envlist = clean, py{39,310,311,312,313,314}, py39-{pb4,pb5,pb6} +envlist = clean, py{310,311,312,313,314}, py310-{pb4,pb5,pb6} [testenv] skip_install = true diff --git a/packages/sdk/pyproject.toml b/packages/sdk/pyproject.toml index acc51336d..3221fe2b5 100644 --- a/packages/sdk/pyproject.toml +++ b/packages/sdk/pyproject.toml @@ -19,7 +19,7 @@ classifiers = [ ] [tool.poetry.dependencies] -python = "^3.9" +python = "^3.10" ni-measurement-plugin-sdk-service = "*" ni-measurement-plugin-sdk-generator = "*" diff --git a/packages/service/README.md b/packages/service/README.md index 81cfc1fc2..9e6e68c6f 100644 --- a/packages/service/README.md +++ b/packages/service/README.md @@ -34,7 +34,7 @@ InstrumentStudio and automated testing in TestStand. ## Dependencies -- [Python >= 3.9](https://www.python.org/downloads/release/python-3913/) +- [Python >= 3.10](https://www.python.org/downloads/release/python-3100/) - [grpcio >= 1.49.1, < 2.x](https://pypi.org/project/grpcio/1.49.1/) - [protobuf >= 4.21](https://pypi.org/project/protobuf/4.21.0/) - [pywin32 >= 303 (Only for Windows)](https://pypi.org/project/pywin32/303/) diff --git a/packages/service/pyproject.toml b/packages/service/pyproject.toml index bd6fcbc18..3d8a5756e 100644 --- a/packages/service/pyproject.toml +++ b/packages/service/pyproject.toml @@ -26,7 +26,7 @@ classifiers = [ ] [tool.poetry.dependencies] -python = "^3.9" +python = "^3.10" # This package includes gRPC stubs that were generated with the version of grpcio-tools specified # below. Please keep the minimum grpcio version in sync with the grpcio-tools version. Otherwise, # the generated gRPC stubs may not work with the minimum grpcio version. @@ -75,7 +75,7 @@ ni-python-styleguide = ">=0.4.1" # When you update the grpcio-tools version, you should update the minimum grpcio version # and regenerate gRPC stubs. grpcio-tools = [ - { version = "1.49.1", python = ">=3.9,<3.12" }, + { version = "1.49.1", python = ">=3.10,<3.12" }, { version = "1.59.0", python = ">=3.12,<3.13" }, { version = "1.67.0", python = ">=3.13,<3.14" }, { version = "1.75.1", python = "^3.14" }, @@ -94,7 +94,7 @@ types-psutil = ">=6.0" # NumPy dropped support for Python 3.8 before adding support for Python 3.12, so # we need to include multiple NumPy versions in poetry.lock. numpy = [ - { version = ">=1.22", python = ">=3.9,<3.12"}, + { version = ">=1.22", python = ">=3.10,<3.12"}, { version = ">=1.26", python = ">=3.12,<3.13"}, { version = ">=2.1", python = "^3.13"}, ] @@ -106,7 +106,7 @@ optional = true [tool.poetry.group.docs.dependencies] # The latest Sphinx requires a recent Python version. Sphinx = [ - { version = "<8.0", python = ">=3.9,<3.11" }, + { version = "<8.0", python = ">=3.10,<3.11" }, { version = ">=8.2", python = ">=3.11,<3.13" }, ] sphinx-rtd-theme = ">=1.0.0" diff --git a/packages/service/tox.ini b/packages/service/tox.ini index 60bdab4d4..25f411147 100644 --- a/packages/service/tox.ini +++ b/packages/service/tox.ini @@ -5,7 +5,7 @@ [tox] isolated_build = true -envlist = clean, py{39,310,311,312,313,314}-all-extras, py39-{pb4,pb5,pb6} +envlist = clean, py{310,311,312,313,314}-all-extras, py310-{pb4,pb5,pb6} [testenv] skip_install = true From 5d29538510b0bde7adf32166a90d0f12a02bd369 Mon Sep 17 00:00:00 2001 From: Brad Keryan Date: Fri, 24 Oct 2025 13:48:16 -0500 Subject: [PATCH 2/8] examples: Update Python version in .seq files --- .../NIDAQmxAnalogInput_example.seq | 4 ++-- .../NIDCPowerSourceDCVoltage_example.seq | 4 ++-- ...NIDCPowerSourceDCVoltageWithMultiplexer_example.seq | 8 ++++---- examples/nidigital_spi/NIDigitalSPI_example.seq | 10 +++++----- .../nidmm_measurement/NIDmmMeasurement_example.seq | 4 ++-- .../NIFgenStandardFunction_example.seq | 4 ++-- .../NIScopeAcquireWaveform_example.seq | 4 ++-- .../NISwitchControlRelays_example.seq | 4 ++-- .../NIVisaDmmMeasurement_example.seq | 4 ++-- 9 files changed, 23 insertions(+), 23 deletions(-) diff --git a/examples/nidaqmx_analog_input/NIDAQmxAnalogInput_example.seq b/examples/nidaqmx_analog_input/NIDAQmxAnalogInput_example.seq index 16d2226bb..17fb7d367 100644 --- a/examples/nidaqmx_analog_input/NIDAQmxAnalogInput_example.seq +++ b/examples/nidaqmx_analog_input/NIDAQmxAnalogInput_example.seq @@ -3141,7 +3141,7 @@ 2 - 3.9 + 3.10 .venv @@ -3590,7 +3590,7 @@ 2 - 3.9 + 3.10 .venv diff --git a/examples/nidcpower_source_dc_voltage/NIDCPowerSourceDCVoltage_example.seq b/examples/nidcpower_source_dc_voltage/NIDCPowerSourceDCVoltage_example.seq index 41e9d21d6..26edfc2f6 100644 --- a/examples/nidcpower_source_dc_voltage/NIDCPowerSourceDCVoltage_example.seq +++ b/examples/nidcpower_source_dc_voltage/NIDCPowerSourceDCVoltage_example.seq @@ -3393,7 +3393,7 @@ 2 - 3.9 + 3.10 .venv @@ -3842,7 +3842,7 @@ 2 - 3.9 + 3.10 .venv diff --git a/examples/nidcpower_source_dc_voltage_with_multiplexer/NIDCPowerSourceDCVoltageWithMultiplexer_example.seq b/examples/nidcpower_source_dc_voltage_with_multiplexer/NIDCPowerSourceDCVoltageWithMultiplexer_example.seq index c21905be0..5a421a677 100644 --- a/examples/nidcpower_source_dc_voltage_with_multiplexer/NIDCPowerSourceDCVoltageWithMultiplexer_example.seq +++ b/examples/nidcpower_source_dc_voltage_with_multiplexer/NIDCPowerSourceDCVoltageWithMultiplexer_example.seq @@ -3285,7 +3285,7 @@ 2 - 3.9 + 3.10 .venv @@ -3730,7 +3730,7 @@ 2 - 3.9 + 3.10 .venv @@ -4179,7 +4179,7 @@ 2 - 3.9 + 3.10 .venv @@ -4576,7 +4576,7 @@ 2 - 3.9 + 3.10 .venv diff --git a/examples/nidigital_spi/NIDigitalSPI_example.seq b/examples/nidigital_spi/NIDigitalSPI_example.seq index 31aefbf22..ac318b152 100644 --- a/examples/nidigital_spi/NIDigitalSPI_example.seq +++ b/examples/nidigital_spi/NIDigitalSPI_example.seq @@ -3282,7 +3282,7 @@ 2 - 3.9 + 3.10 .venv @@ -3727,7 +3727,7 @@ 2 - 3.9 + 3.10 .venv @@ -4220,7 +4220,7 @@ 2 - 3.9 + 3.10 .venv @@ -4809,7 +4809,7 @@ 2 - 3.9 + 3.10 .venv @@ -5306,7 +5306,7 @@ 2 - 3.9 + 3.10 .venv diff --git a/examples/nidmm_measurement/NIDmmMeasurement_example.seq b/examples/nidmm_measurement/NIDmmMeasurement_example.seq index a118530b4..fe6db7077 100644 --- a/examples/nidmm_measurement/NIDmmMeasurement_example.seq +++ b/examples/nidmm_measurement/NIDmmMeasurement_example.seq @@ -3327,7 +3327,7 @@ 2 - 3.9 + 3.10 .venv @@ -3776,7 +3776,7 @@ 2 - 3.9 + 3.10 .venv diff --git a/examples/nifgen_standard_function/NIFgenStandardFunction_example.seq b/examples/nifgen_standard_function/NIFgenStandardFunction_example.seq index e0693e8c2..6172e3175 100644 --- a/examples/nifgen_standard_function/NIFgenStandardFunction_example.seq +++ b/examples/nifgen_standard_function/NIFgenStandardFunction_example.seq @@ -3220,7 +3220,7 @@ 2 - 3.9 + 3.10 .venv @@ -3669,7 +3669,7 @@ 2 - 3.9 + 3.10 .venv diff --git a/examples/niscope_acquire_waveform/NIScopeAcquireWaveform_example.seq b/examples/niscope_acquire_waveform/NIScopeAcquireWaveform_example.seq index d4b395bd4..e8e80f96d 100644 --- a/examples/niscope_acquire_waveform/NIScopeAcquireWaveform_example.seq +++ b/examples/niscope_acquire_waveform/NIScopeAcquireWaveform_example.seq @@ -3628,7 +3628,7 @@ 2 - 3.9 + 3.10 .venv @@ -4077,7 +4077,7 @@ 2 - 3.9 + 3.10 .venv diff --git a/examples/niswitch_control_relays/NISwitchControlRelays_example.seq b/examples/niswitch_control_relays/NISwitchControlRelays_example.seq index 84b74fab4..6b10daed3 100644 --- a/examples/niswitch_control_relays/NISwitchControlRelays_example.seq +++ b/examples/niswitch_control_relays/NISwitchControlRelays_example.seq @@ -6813,7 +6813,7 @@ 3 - 3.9 + 3.10 .venv @@ -7262,7 +7262,7 @@ 3 - 3.9 + 3.10 .venv diff --git a/examples/nivisa_dmm_measurement/NIVisaDmmMeasurement_example.seq b/examples/nivisa_dmm_measurement/NIVisaDmmMeasurement_example.seq index 4d906d2a0..9b2373917 100644 --- a/examples/nivisa_dmm_measurement/NIVisaDmmMeasurement_example.seq +++ b/examples/nivisa_dmm_measurement/NIVisaDmmMeasurement_example.seq @@ -3185,7 +3185,7 @@ 2 - 3.9 + 3.10 .venv @@ -3634,7 +3634,7 @@ 2 - 3.9 + 3.10 .venv From 6e16d447091cfadf311da4583372830e8b65ad1a Mon Sep 17 00:00:00 2001 From: Brad Keryan Date: Mon, 27 Oct 2025 13:28:40 -0500 Subject: [PATCH 3/8] docs: Update Python version in repo readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ebf5d6a54..467f75fdc 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ InstrumentStudio and automated testing in TestStand. ## Dependencies -- [Python >= 3.9](https://www.python.org/downloads/release/python-3913/) +- [Python >= 3.10](https://www.python.org/downloads/release/python-3100/) - [grpcio >= 1.49.1, < 2.x](https://pypi.org/project/grpcio/1.49.1/) - [protobuf >= 4.21](https://pypi.org/project/protobuf/4.21.0/) - [pywin32 >= 303 (Only for Windows)](https://pypi.org/project/pywin32/303/) From e8c1a0fe054ab758c6a796ffb580f9f1a44a34c3 Mon Sep 17 00:00:00 2001 From: Brad Keryan Date: Mon, 27 Oct 2025 13:29:28 -0500 Subject: [PATCH 4/8] github: Update oldest supported Python version --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- .github/workflows/check_nimg.yml | 4 ++-- .github/workflows/check_nims.yml | 4 ++-- .github/workflows/run_unit_tests.yml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index c5d242f41..0af46e1e2 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -46,4 +46,4 @@ Search open/closed issues before submitting. Someone may have reported the same * OS & Device: [e.g. macOS, Windows, Linux] on [Mac, PC] * `ni-measurement-plugin-sdk-service` version [e.g. 2.0.0] * InstrumentStudio version [e.g. 24.8.0d123] -* Python version [e.g. 3.9] +* Python version [e.g. 3.10] diff --git a/.github/workflows/check_nimg.yml b/.github/workflows/check_nimg.yml index ed49a428b..8479d8c10 100644 --- a/.github/workflows/check_nimg.yml +++ b/.github/workflows/check_nimg.yml @@ -8,11 +8,11 @@ jobs: check_nimg: name: Check NIMG env: - oldest-python-version: '3.9' + oldest-python-version: '3.10' strategy: matrix: os: [windows-latest, ubuntu-latest, macos-latest] - python-version: [3.9, 3.14] + python-version: [3.10, 3.14] runs-on: ${{ matrix.os }} defaults: run: diff --git a/.github/workflows/check_nims.yml b/.github/workflows/check_nims.yml index eb9ee2000..dc9b8344f 100644 --- a/.github/workflows/check_nims.yml +++ b/.github/workflows/check_nims.yml @@ -8,11 +8,11 @@ jobs: check_nims: name: Check NIMS env: - oldest-python-version: '3.9' + oldest-python-version: '3.10' strategy: matrix: os: [windows-latest, ubuntu-latest, macos-latest] - python-version: [3.9, 3.14] + python-version: [3.10, 3.14] runs-on: ${{ matrix.os }} defaults: run: diff --git a/.github/workflows/run_unit_tests.yml b/.github/workflows/run_unit_tests.yml index 7574fe14f..6fc8c8e99 100644 --- a/.github/workflows/run_unit_tests.yml +++ b/.github/workflows/run_unit_tests.yml @@ -12,7 +12,7 @@ jobs: matrix: os: [windows-latest, ubuntu-latest] # grpcio does not have binary wheels for pypy or free-threading, as of version 1.75.1. - python-version: [3.9, '3.10', 3.11, 3.12, 3.13, 3.14] + python-version: ['3.10', 3.11, 3.12, 3.13, 3.14] # Fail-fast skews the pass/fail ratio and seems to make pytest produce # incomplete JUnit XML results. fail-fast: false From a77bb3d9d78a3b66e4501ad03c81158234044c9d Mon Sep 17 00:00:00 2001 From: Brad Keryan Date: Mon, 27 Oct 2025 13:31:20 -0500 Subject: [PATCH 5/8] github: YAML = Yet Another Footgun Language --- .github/workflows/check_nimg.yml | 2 +- .github/workflows/check_nims.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check_nimg.yml b/.github/workflows/check_nimg.yml index 8479d8c10..8863709f1 100644 --- a/.github/workflows/check_nimg.yml +++ b/.github/workflows/check_nimg.yml @@ -12,7 +12,7 @@ jobs: strategy: matrix: os: [windows-latest, ubuntu-latest, macos-latest] - python-version: [3.10, 3.14] + python-version: ['3.10', 3.14] runs-on: ${{ matrix.os }} defaults: run: diff --git a/.github/workflows/check_nims.yml b/.github/workflows/check_nims.yml index dc9b8344f..f4d580771 100644 --- a/.github/workflows/check_nims.yml +++ b/.github/workflows/check_nims.yml @@ -12,7 +12,7 @@ jobs: strategy: matrix: os: [windows-latest, ubuntu-latest, macos-latest] - python-version: [3.10, 3.14] + python-version: ['3.10', 3.14] runs-on: ${{ matrix.os }} defaults: run: From 3bb8168ec768f09856e1b0036a01607160549a35 Mon Sep 17 00:00:00 2001 From: Brad Keryan Date: Tue, 4 Nov 2025 13:40:34 -0600 Subject: [PATCH 6/8] chore: Update poetry.lock --- packages/generator/poetry.lock | 186 +------------------ packages/sdk/poetry.lock | 74 +++++--- packages/service/poetry.lock | 323 ++------------------------------- 3 files changed, 68 insertions(+), 515 deletions(-) diff --git a/packages/generator/poetry.lock b/packages/generator/poetry.lock index c7c85fb33..d194bd793 100644 --- a/packages/generator/poetry.lock +++ b/packages/generator/poetry.lock @@ -74,19 +74,6 @@ d = ["aiohttp (>=3.10)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] -[[package]] -name = "cachetools" -version = "6.1.0" -description = "Extensible memoizing collections and decorators" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -markers = "python_version == \"3.9\"" -files = [ - {file = "cachetools-6.1.0-py3-none-any.whl", hash = "sha256:1c7bb3cf9193deaf3508b7c5f2a79986c13ea38965c5adcff1f84519cf39163e"}, - {file = "cachetools-6.1.0.tar.gz", hash = "sha256:b4c4f404392848db3ce7aac34950d17be4d864da4b8b66911008e430bc544587"}, -] - [[package]] name = "cachetools" version = "6.2.1" @@ -94,7 +81,6 @@ description = "Extensible memoizing collections and decorators" optional = false python-versions = ">=3.9" groups = ["dev"] -markers = "python_version >= \"3.10\"" files = [ {file = "cachetools-6.2.1-py3-none-any.whl", hash = "sha256:09868944b6dde876dfd44e1d47e18484541eaf12f26f29b7af91b26cc892d701"}, {file = "cachetools-6.2.1.tar.gz", hash = "sha256:3f391e4bd8f8bf0931169baf7456cc822705f4e2a31f840d218f445b9a854201"}, @@ -112,22 +98,6 @@ files = [ {file = "chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7"}, ] -[[package]] -name = "click" -version = "8.1.8" -description = "Composable command line interface toolkit" -optional = false -python-versions = ">=3.7" -groups = ["main", "dev"] -markers = "python_version == \"3.9\"" -files = [ - {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, - {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} - [[package]] name = "click" version = "8.2.1" @@ -135,7 +105,6 @@ description = "Composable command line interface toolkit" optional = false python-versions = ">=3.10" groups = ["main", "dev"] -markers = "python_version >= \"3.10\"" files = [ {file = "click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b"}, {file = "click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202"}, @@ -332,7 +301,7 @@ description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" groups = ["dev"] -markers = "python_version < \"3.11\"" +markers = "python_version == \"3.10\"" files = [ {file = "exceptiongroup-1.3.0-py3-none-any.whl", hash = "sha256:4d111e6e0c13d0644cad6ddaa7ed0261a0b36971f6d23e7ec9b4b9097da78a10"}, {file = "exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88"}, @@ -344,24 +313,6 @@ typing-extensions = {version = ">=4.6.0", markers = "python_version < \"3.13\""} [package.extras] test = ["pytest (>=6)"] -[[package]] -name = "filelock" -version = "3.18.0" -description = "A platform independent file lock." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -markers = "python_version == \"3.9\"" -files = [ - {file = "filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de"}, - {file = "filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.6.10)", "diff-cover (>=9.2.1)", "pytest (>=8.3.4)", "pytest-asyncio (>=0.25.2)", "pytest-cov (>=6)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.28.1)"] -typing = ["typing-extensions (>=4.12.2) ; python_version < \"3.11\""] - [[package]] name = "filelock" version = "3.20.0" @@ -369,7 +320,6 @@ description = "A platform independent file lock." optional = false python-versions = ">=3.10" groups = ["dev"] -markers = "python_version >= \"3.10\"" files = [ {file = "filelock-3.20.0-py3-none-any.whl", hash = "sha256:339b4732ffda5cd79b13f4e2711a31b0365ce445d95d243bb996273d072546a2"}, {file = "filelock-3.20.0.tar.gz", hash = "sha256:711e943b4ec6be42e1d4e6690b48dc175c822967466bb31c0c293f34334c13f4"}, @@ -1124,7 +1074,7 @@ name = "ni-measurement-plugin-sdk-service" version = "3.1.0.dev0" description = "Measurement Plug-In Support for Python" optional = false -python-versions = "^3.9" +python-versions = "^3.10" groups = ["main", "dev"] files = [] develop = true @@ -1586,24 +1536,6 @@ files = [ [package.dependencies] flake8 = ">=5.0.0" -[[package]] -name = "platformdirs" -version = "4.3.8" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -optional = false -python-versions = ">=3.9" -groups = ["main", "dev"] -markers = "python_version == \"3.9\"" -files = [ - {file = "platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4"}, - {file = "platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.4)", "pytest-cov (>=6)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.14.1)"] - [[package]] name = "platformdirs" version = "4.5.0" @@ -1611,7 +1543,6 @@ description = "A small Python package for determining appropriate platform-speci optional = false python-versions = ">=3.10" groups = ["main", "dev"] -markers = "python_version >= \"3.10\"" files = [ {file = "platformdirs-4.5.0-py3-none-any.whl", hash = "sha256:e578a81bb873cbb89a41fcc904c7ef523cc18284b7e3b3ccf06aca1403b7ebd3"}, {file = "platformdirs-4.5.0.tar.gz", hash = "sha256:70ddccdd7c99fc5942e9fc25636a8b34d04c24b335100223152c2803e4063312"}, @@ -2052,49 +1983,6 @@ files = [ {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, ] -[[package]] -name = "tomli" -version = "2.2.1" -description = "A lil' TOML parser" -optional = false -python-versions = ">=3.8" -groups = ["main", "dev"] -markers = "python_version == \"3.9\"" -files = [ - {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, - {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, - {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, - {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, - {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, - {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, - {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, - {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, - {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, - {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, - {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, - {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, - {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, - {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, -] - [[package]] name = "tomli" version = "2.3.0" @@ -2146,33 +2034,7 @@ files = [ {file = "tomli-2.3.0-py3-none-any.whl", hash = "sha256:e95b1af3c5b07d9e643909b5abbec77cd9f1217e6d0bca72b0234736b9fb1f1b"}, {file = "tomli-2.3.0.tar.gz", hash = "sha256:64be704a875d2a59753d80ee8a533c3fe183e3f06807ff7dc2232938ccb01549"}, ] -markers = {main = "python_version == \"3.10\"", dev = "python_version >= \"3.10\" and python_full_version <= \"3.11.0a6\""} - -[[package]] -name = "tox" -version = "4.30.3" -description = "tox is a generic virtualenv management and test command line tool" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -markers = "python_version == \"3.9\"" -files = [ - {file = "tox-4.30.3-py3-none-any.whl", hash = "sha256:a9f17b4b2d0f74fe0d76207236925a119095011e5c2e661a133115a8061178c9"}, - {file = "tox-4.30.3.tar.gz", hash = "sha256:f3dd0735f1cd4e8fbea5a3661b77f517456b5f0031a6256432533900e34b90bf"}, -] - -[package.dependencies] -cachetools = ">=6.1" -chardet = ">=5.2" -colorama = ">=0.4.6" -filelock = ">=3.18" -packaging = ">=25" -platformdirs = ">=4.3.8" -pluggy = ">=1.6" -pyproject-api = ">=1.9.1" -tomli = {version = ">=2.2.1", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=4.14.1", markers = "python_version < \"3.11\""} -virtualenv = ">=20.31.2" +markers = {main = "python_version == \"3.10\"", dev = "python_full_version <= \"3.11.0a6\""} [[package]] name = "tox" @@ -2181,7 +2043,6 @@ description = "tox is a generic virtualenv management and test command line tool optional = false python-versions = ">=3.10" groups = ["dev"] -markers = "python_version >= \"3.10\"" files = [ {file = "tox-4.32.0-py3-none-any.whl", hash = "sha256:451e81dc02ba8d1ed20efd52ee409641ae4b5d5830e008af10fe8823ef1bd551"}, {file = "tox-4.32.0.tar.gz", hash = "sha256:1ad476b5f4d3679455b89a992849ffc3367560bbc7e9495ee8a3963542e7c8ff"}, @@ -2237,19 +2098,6 @@ files = [ {file = "types_protobuf-6.32.1.20250918.tar.gz", hash = "sha256:44ce0ae98475909ca72379946ab61a4435eec2a41090821e713c17e8faf5b88f"}, ] -[[package]] -name = "typing-extensions" -version = "4.14.1" -description = "Backported and Experimental Type Hints for Python 3.9+" -optional = false -python-versions = ">=3.9" -groups = ["main", "dev"] -markers = "python_version == \"3.9\" or python_version >= \"3.12\"" -files = [ - {file = "typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76"}, - {file = "typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36"}, -] - [[package]] name = "typing-extensions" version = "4.15.0" @@ -2257,34 +2105,11 @@ description = "Backported and Experimental Type Hints for Python 3.9+" optional = false python-versions = ">=3.9" groups = ["main", "dev"] -markers = "python_version >= \"3.10\" and python_version < \"3.12\"" files = [ {file = "typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548"}, {file = "typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466"}, ] -[[package]] -name = "virtualenv" -version = "20.32.0" -description = "Virtual Python Environment builder" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -markers = "python_version == \"3.9\"" -files = [ - {file = "virtualenv-20.32.0-py3-none-any.whl", hash = "sha256:2c310aecb62e5aa1b06103ed7c2977b81e042695de2697d01017ff0f1034af56"}, - {file = "virtualenv-20.32.0.tar.gz", hash = "sha256:886bf75cadfdc964674e6e33eb74d787dff31ca314ceace03ca5810620f4ecf0"}, -] - -[package.dependencies] -distlib = ">=0.3.7,<1" -filelock = ">=3.12.2,<4" -platformdirs = ">=3.9.1,<5" - -[package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] -test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8) ; platform_python_implementation == \"PyPy\" or platform_python_implementation == \"GraalVM\" or platform_python_implementation == \"CPython\" and sys_platform == \"win32\" and python_version >= \"3.13\"", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10) ; platform_python_implementation == \"CPython\""] - [[package]] name = "virtualenv" version = "20.35.4" @@ -2292,7 +2117,6 @@ description = "Virtual Python Environment builder" optional = false python-versions = ">=3.8" groups = ["dev"] -markers = "python_version >= \"3.10\"" files = [ {file = "virtualenv-20.35.4-py3-none-any.whl", hash = "sha256:c21c9cede36c9753eeade68ba7d523529f228a403463376cf821eaae2b650f1b"}, {file = "virtualenv-20.35.4.tar.gz", hash = "sha256:643d3914d73d3eeb0c552cbb12d7e82adf0e504dbf86a3182f8771a153a1971c"}, @@ -2310,5 +2134,5 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess [metadata] lock-version = "2.1" -python-versions = "^3.9" -content-hash = "8cf77f5202ec95b0aeb4aa9b00ac410453bf97b3da15f2f88024601e2969b6a6" +python-versions = "^3.10" +content-hash = "efc80fb27607720d37864f6a4ae9f3ad53c901c09761766f9f032c995f8c2289" diff --git a/packages/sdk/poetry.lock b/packages/sdk/poetry.lock index 44d32513a..8f9147075 100644 --- a/packages/sdk/poetry.lock +++ b/packages/sdk/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.4 and should not be changed by hand. [[package]] name = "black" @@ -6,6 +6,7 @@ version = "25.1.0" description = "The uncompromising code formatter." optional = false python-versions = ">=3.9" +groups = ["main", "dev"] files = [ {file = "black-25.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:759e7ec1e050a15f89b770cefbf91ebee8917aac5c20483bc2d80a6c3a04df32"}, {file = "black-25.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e519ecf93120f34243e6b0054db49c00a35f84f195d5bce7e9f5cfc578fc2da"}, @@ -46,26 +47,13 @@ d = ["aiohttp (>=3.10)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] -[[package]] -name = "click" -version = "8.1.8" -description = "Composable command line interface toolkit" -optional = false -python-versions = ">=3.7" -files = [ - {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, - {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} - [[package]] name = "click" version = "8.2.1" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.10" +groups = ["main", "dev"] files = [ {file = "click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b"}, {file = "click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202"}, @@ -80,6 +68,7 @@ version = "0.5.7" description = "Option groups missing in Click" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "click_option_group-0.5.7-py3-none-any.whl", hash = "sha256:96b9f52f397ef4d916f81929bd6c1f85e89046c7a401a64e72a61ae74ad35c24"}, {file = "click_option_group-0.5.7.tar.gz", hash = "sha256:8dc780be038712fc12c9fecb3db4fe49e0d0723f9c171d7cda85c20369be693c"}, @@ -100,6 +89,8 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main", "dev"] +markers = "platform_system == \"Windows\"" files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, @@ -111,6 +102,7 @@ version = "2.1.0" description = "A library to handle automated deprecations" optional = false python-versions = "*" +groups = ["main", "dev"] files = [ {file = "deprecation-2.1.0-py2.py3-none-any.whl", hash = "sha256:a10811591210e1fb0e768a8c25517cabeabcba6f0bf96564f8ff45189f90b14a"}, {file = "deprecation-2.1.0.tar.gz", hash = "sha256:72b3bde64e5d778694b0cf68178aed03d15e15477116add3fb773e581f9518ff"}, @@ -125,6 +117,7 @@ version = "1.74.0" description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.9" +groups = ["main", "dev"] files = [ {file = "grpcio-1.74.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:85bd5cdf4ed7b2d6438871adf6afff9af7096486fcf51818a81b77ef4dd30907"}, {file = "grpcio-1.74.0-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:68c8ebcca945efff9d86d8d6d7bfb0841cf0071024417e2d7f45c5e46b5b08eb"}, @@ -188,6 +181,7 @@ version = "0.2.2" description = "Hightime Python API" optional = false python-versions = "*" +groups = ["main", "dev"] files = [ {file = "hightime-0.2.2-py3-none-any.whl", hash = "sha256:5109a449bb3a75dbf305147777de71634c91b943d47cfbee18ed2f34a8307e0b"}, ] @@ -198,6 +192,7 @@ version = "1.3.10" description = "A super-fast templating language that borrows the best ideas from the existing templating languages." optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "mako-1.3.10-py3-none-any.whl", hash = "sha256:baef24a52fc4fc514a0887ac600f9f1cff3d82c61d4d700a1fa84d597b88db59"}, {file = "mako-1.3.10.tar.gz", hash = "sha256:99579a6f39583fa7e5630a28c3c1f440e4e97a414b80372649c0ce338da2ea28"}, @@ -217,6 +212,7 @@ version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.9" +groups = ["main", "dev"] files = [ {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, @@ -287,6 +283,7 @@ version = "1.1.0" description = "Type system extensions for programs checked with the mypy type checker." optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"}, {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"}, @@ -298,6 +295,7 @@ version = "1.0.0" description = "gRPC Extensions" optional = false python-versions = "<4.0,>=3.9" +groups = ["main", "dev"] files = [ {file = "ni_grpc_extensions-1.0.0-py3-none-any.whl", hash = "sha256:6b8181284370a53546ffd371d334f15e293cae5e9ff06fa2e467d1714bf7a03f"}, {file = "ni_grpc_extensions-1.0.0.tar.gz", hash = "sha256:6e066246ce9a4b4420f5e503769b23c31a49c430be6ebd72324c5b5a15c34ebb"}, @@ -313,6 +311,7 @@ version = "1.0.0" description = "Protobuf generated code for the nidevice_grpc gRPC API" optional = false python-versions = "<4.0,>=3.9" +groups = ["main", "dev"] files = [ {file = "ni_grpcdevice_v1_proto-1.0.0-py3-none-any.whl", hash = "sha256:36dfe9484cc40e8e1c97fb9720555f06563b0180e4837177d1cbf000c3d8988e"}, {file = "ni_grpcdevice_v1_proto-1.0.0.tar.gz", hash = "sha256:62f087f85d390c2932e45ad03d365c750bd55e147b81b66ef853e13ff8538b19"}, @@ -327,16 +326,14 @@ name = "ni-measurement-plugin-sdk-generator" version = "3.1.0.dev0" description = "Measurement Plug-In Code Generator for Python" optional = false -python-versions = "^3.9" +python-versions = "^3.10" +groups = ["main", "dev"] files = [] develop = true [package.dependencies] black = ">=24.8.0" -click = [ - {version = ">=8.1.3,<8.2.0", markers = "python_version >= \"3.9\" and python_version < \"3.10\""}, - {version = ">=8.1.3", markers = "python_version >= \"3.10\" and python_version < \"4.0\""}, -] +click = ">=8.1.3" click-option-group = ">=0.5.6" grpcio = "^1.49.1" Mako = "^1.2.1" @@ -357,7 +354,8 @@ name = "ni-measurement-plugin-sdk-service" version = "3.1.0.dev0" description = "Measurement Plug-In Support for Python" optional = false -python-versions = "^3.9" +python-versions = "^3.10" +groups = ["main", "dev"] files = [] develop = true @@ -374,7 +372,6 @@ ni-protobuf-types = "^1.0.0" protobuf = ">=4.21" python-decouple = ">=3.8" pywin32 = {version = ">=303", markers = "sys_platform == \"win32\""} -traceloggingdynamic = {version = ">=1.0", markers = "sys_platform == \"win32\""} [package.extras] drivers = ["nidaqmx[grpc] (>=0.8.0)", "nidcpower[grpc] (>=1.4.4)", "nidigital[grpc] (>=1.4.4)", "nidmm[grpc] (>=1.4.4)", "nifgen[grpc] (>=1.4.4)", "niscope[grpc] (>=1.4.4)", "niswitch[grpc] (>=1.4.4)"] @@ -396,6 +393,7 @@ version = "1.0.0" description = "gRPC Client for NI Discovery Service" optional = false python-versions = "<4.0,>=3.9" +groups = ["main", "dev"] files = [ {file = "ni_measurementlink_discovery_v1_client-1.0.0-py3-none-any.whl", hash = "sha256:6a4c45d2517a7c6017a3b7dd817a6d7ebc8ebec318243c4f17778115a1a192a6"}, {file = "ni_measurementlink_discovery_v1_client-1.0.0.tar.gz", hash = "sha256:2aa2a0c55f6599ffa3ff05e67e6ff89360f22bf0082e512348a41997ddfde3f8"}, @@ -413,6 +411,7 @@ version = "1.0.0" description = "Protobuf data types for NI discovery gRPC APIs" optional = false python-versions = "<4.0,>=3.9" +groups = ["main", "dev"] files = [ {file = "ni_measurementlink_discovery_v1_proto-1.0.0-py3-none-any.whl", hash = "sha256:093eb4ffd27338fbea4909aea30afbd3090f482f3a1dcc98e63bbaf1a6b4da8b"}, {file = "ni_measurementlink_discovery_v1_proto-1.0.0.tar.gz", hash = "sha256:11353eefdecc49244783d76a332bc855589eb0bb8c882f53c8f9b0a47ca91115"}, @@ -427,6 +426,7 @@ version = "1.0.0" description = "Protobuf data types for NI measurement gRPC APIs" optional = false python-versions = "<4.0,>=3.9" +groups = ["main", "dev"] files = [ {file = "ni_measurementlink_measurement_v1_proto-1.0.0-py3-none-any.whl", hash = "sha256:d9049cbcb25ea3d99f37925989f33bd887352a3a7d217fe0cb900c069a96180d"}, {file = "ni_measurementlink_measurement_v1_proto-1.0.0.tar.gz", hash = "sha256:c896e176cde3038d8d2301977464372589764e70b9de7a2fefa620c0b79ac300"}, @@ -442,6 +442,7 @@ version = "1.0.0" description = "Protobuf data types for NI measurement gRPC APIs" optional = false python-versions = "<4.0,>=3.9" +groups = ["main", "dev"] files = [ {file = "ni_measurementlink_measurement_v2_proto-1.0.0-py3-none-any.whl", hash = "sha256:3c10d8faa7aab46d417bcf040af8742ef2028c0c9974be04058312219a4135bf"}, {file = "ni_measurementlink_measurement_v2_proto-1.0.0.tar.gz", hash = "sha256:ff1e4db003466746fc982ff00a442223d1141f9e2888757f124b0609344d3453"}, @@ -457,6 +458,7 @@ version = "1.0.0" description = "gRPC Client for NI Pin Map Service" optional = false python-versions = "<4.0,>=3.9" +groups = ["main", "dev"] files = [ {file = "ni_measurementlink_pinmap_v1_client-1.0.0-py3-none-any.whl", hash = "sha256:33ac08a927c5f8e8c6a2e045ebbde47ade71bc3c29c27c8ccc43feb69dcc5065"}, {file = "ni_measurementlink_pinmap_v1_client-1.0.0.tar.gz", hash = "sha256:ab3f276f00ae23239b436c154372adce72e6b06f1634527412d42732f4af8562"}, @@ -477,6 +479,7 @@ version = "0.1.0.dev0" description = "Protobuf data types for NI pinmap gRPC APIs" optional = false python-versions = "<4.0,>=3.9" +groups = ["main", "dev"] files = [ {file = "ni_measurementlink_pinmap_v1_proto-0.1.0.dev0-py3-none-any.whl", hash = "sha256:182e0774157457592dd02faf941ec34ebd83d94c9fc915e8f9d2cd14487c02ea"}, {file = "ni_measurementlink_pinmap_v1_proto-0.1.0.dev0.tar.gz", hash = "sha256:c54351cb010d9163865ae65db6fc9731e4d8da22ff4dda7d6ede1ab8e993470e"}, @@ -491,6 +494,7 @@ version = "0.1.0.dev1" description = "Protobuf data types for NI gRPC APIs" optional = false python-versions = "<4.0,>=3.9" +groups = ["main", "dev"] files = [ {file = "ni_measurementlink_proto-0.1.0.dev1-py3-none-any.whl", hash = "sha256:4357baca4822a1f4f8bb6ca10e8c00618ef85fa32da74c98501fb18bb26082ce"}, {file = "ni_measurementlink_proto-0.1.0.dev1.tar.gz", hash = "sha256:a3f3da9f789b72aa327205c4ee9041d6ba99a28e1695bf777cd71540fd60c8f6"}, @@ -505,6 +509,7 @@ version = "1.0.0" description = "Client gRPC APIs for the session management service" optional = false python-versions = "<4.0,>=3.9" +groups = ["main", "dev"] files = [ {file = "ni_measurementlink_sessionmanagement_v1_client-1.0.0-py3-none-any.whl", hash = "sha256:f3cdb614304fd88221120a25cf0f4905264a4b3860a0b8d773b7827edecf5f90"}, {file = "ni_measurementlink_sessionmanagement_v1_client-1.0.0.tar.gz", hash = "sha256:8fac927209f01f76ca1e275cd24b4156de4625c9bd0b1ee845971e054963944f"}, @@ -539,6 +544,7 @@ version = "1.0.0" description = "Protobuf data types for NI session management gRPC APIs" optional = false python-versions = "<4.0,>=3.9" +groups = ["main", "dev"] files = [ {file = "ni_measurementlink_sessionmanagement_v1_proto-1.0.0-py3-none-any.whl", hash = "sha256:d345f9939d9c324477615ec0603c84286f5cd75f50ec2876287c71bb5e9d4f35"}, {file = "ni_measurementlink_sessionmanagement_v1_proto-1.0.0.tar.gz", hash = "sha256:3929e4616298998910846d1ddba2c80a3deaeacb54eae996389ff5b01e4f7d5c"}, @@ -554,6 +560,7 @@ version = "1.0.0" description = "Protobuf data types for NI gRPC APIs" optional = false python-versions = "<4.0,>=3.9" +groups = ["main", "dev"] files = [ {file = "ni_protobuf_types-1.0.0-py3-none-any.whl", hash = "sha256:a88d5e517ef825ef70734aab00e6fb44f78ceb7d40b5c1592af450b87e3745ae"}, {file = "ni_protobuf_types-1.0.0.tar.gz", hash = "sha256:d2b6dfbd57729e80a7f9fa23a446635eee5ad771dbb70045b88412d163e7d732"}, @@ -569,6 +576,7 @@ version = "0.1.0.dev9" description = "Data types for NI Python APIs" optional = false python-versions = "<4.0,>=3.9" +groups = ["main", "dev"] files = [ {file = "nitypes-0.1.0.dev9-py3-none-any.whl", hash = "sha256:1e2928f9a2c57f289f5743433299e09d151ab4951bacffbf67238093a82c3f67"}, {file = "nitypes-0.1.0.dev9.tar.gz", hash = "sha256:bc36861cc4a5ff0cfe74050afeed82bcdd652fc4de36860cd43492beee388b5d"}, @@ -588,6 +596,8 @@ version = "2.0.2" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.9" +groups = ["main", "dev"] +markers = "python_version < \"3.13\"" files = [ {file = "numpy-2.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:51129a29dbe56f9ca83438b706e2e69a39892b5eda6cedcb6b0c9fdc9b0d3ece"}, {file = "numpy-2.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f15975dfec0cf2239224d80e32c3170b1d168335eaedee69da84fbe9f1f9cd04"}, @@ -642,6 +652,8 @@ version = "2.3.2" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.11" +groups = ["main", "dev"] +markers = "python_version >= \"3.13\"" files = [ {file = "numpy-2.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:852ae5bed3478b92f093e30f785c98e0cb62fa0a939ed057c31716e18a7a22b9"}, {file = "numpy-2.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7a0e27186e781a69959d0230dd9909b5e26024f8da10683bd6344baea1885168"}, @@ -725,6 +737,7 @@ version = "25.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}, {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}, @@ -736,6 +749,7 @@ version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, @@ -747,6 +761,7 @@ version = "4.3.8" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.9" +groups = ["main", "dev"] files = [ {file = "platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4"}, {file = "platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc"}, @@ -763,6 +778,7 @@ version = "6.31.1" description = "" optional = false python-versions = ">=3.9" +groups = ["main", "dev"] files = [ {file = "protobuf-6.31.1-cp310-abi3-win32.whl", hash = "sha256:7fa17d5a29c2e04b7d90e5e32388b8bfd0e7107cd8e616feef7ed3fa6bdab5c9"}, {file = "protobuf-6.31.1-cp310-abi3-win_amd64.whl", hash = "sha256:426f59d2964864a1a366254fa703b8632dcec0790d8862d30034d8245e1cd447"}, @@ -781,6 +797,7 @@ version = "3.8" description = "Strict separation of settings from code." optional = false python-versions = "*" +groups = ["main", "dev"] files = [ {file = "python-decouple-3.8.tar.gz", hash = "sha256:ba6e2657d4f376ecc46f77a3a615e058d93ba5e465c01bbe57289bfb7cce680f"}, {file = "python_decouple-3.8-py3-none-any.whl", hash = "sha256:d0d45340815b25f4de59c974b855bb38d03151d81b037d9e3f463b0c9f8cbd66"}, @@ -792,6 +809,8 @@ version = "311" description = "Python for Window Extensions" optional = false python-versions = "*" +groups = ["main", "dev"] +markers = "sys_platform == \"win32\"" files = [ {file = "pywin32-311-cp310-cp310-win32.whl", hash = "sha256:d03ff496d2a0cd4a5893504789d4a15399133fe82517455e78bad62efbb7f0a3"}, {file = "pywin32-311-cp310-cp310-win_amd64.whl", hash = "sha256:797c2772017851984b97180b0bebe4b620bb86328e8a884bb626156295a63b3b"}, @@ -821,6 +840,8 @@ version = "2.2.1" description = "A lil' TOML parser" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] +markers = "python_version == \"3.10\"" files = [ {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, @@ -862,6 +883,8 @@ version = "1.0.1" description = "Generates Event Tracing for Windows events using TraceLogging" optional = false python-versions = ">=3.6" +groups = ["main", "dev"] +markers = "sys_platform == \"win32\"" files = [ {file = "traceloggingdynamic-1.0.1-py3-none-any.whl", hash = "sha256:0e19da491a8960725b3622366487ae35f49d8f595bb2e4e5ce1795eb5928db7c"}, {file = "traceloggingdynamic-1.0.1.tar.gz", hash = "sha256:d9dd4b291dd04c15e34181eed06f73fdf4ffa7b1f895b78217163def48ab1a52"}, @@ -873,12 +896,13 @@ version = "4.14.1" description = "Backported and Experimental Type Hints for Python 3.9+" optional = false python-versions = ">=3.9" +groups = ["main", "dev"] files = [ {file = "typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76"}, {file = "typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36"}, ] [metadata] -lock-version = "2.0" -python-versions = "^3.9" -content-hash = "f5db3a791370916e1f5ad48db61b5418385b0c2cd8c429350e71cae8f434c6f1" +lock-version = "2.1" +python-versions = "^3.10" +content-hash = "5f5f8072a62156f3aa6d1b7441a715f6d33b56a8c8b5a8d68c85dbc3eabc0d9e" diff --git a/packages/service/poetry.lock b/packages/service/poetry.lock index b7a9f3df3..29edcb3b4 100644 --- a/packages/service/poetry.lock +++ b/packages/service/poetry.lock @@ -7,7 +7,7 @@ description = "A light, configurable Sphinx theme" optional = false python-versions = ">=3.9" groups = ["docs"] -markers = "python_version < \"3.11\"" +markers = "python_version == \"3.10\"" files = [ {file = "alabaster-0.7.16-py3-none-any.whl", hash = "sha256:b46733c07dce03ae4e150330b975c75737fa60f0a7c591b6c8bf4928a28e2c92"}, {file = "alabaster-0.7.16.tar.gz", hash = "sha256:75a8b99c28a5dad50dd7f8ccdd447a121ddb3892da9e53d1ca5cca3106d58d65"}, @@ -33,7 +33,7 @@ description = "An abstract syntax tree for Python with inference support." optional = false python-versions = ">=3.9.0" groups = ["docs"] -markers = "python_version <= \"3.11\"" +markers = "python_version < \"3.12\"" files = [ {file = "astroid-3.3.11-py3-none-any.whl", hash = "sha256:54c760ae8322ece1abd213057c4b5bba7c49818853fc901ef09719a60dbf9dec"}, {file = "astroid-3.3.11.tar.gz", hash = "sha256:1e5a5011af2920c7c67a53f65d536d65bfa7116feeaf2354d8b94f29573bb0ce"}, @@ -271,22 +271,6 @@ files = [ ] markers = {main = "extra == \"drivers\" or extra == \"nidaqmx\""} -[[package]] -name = "click" -version = "8.1.8" -description = "Composable command line interface toolkit" -optional = false -python-versions = ">=3.7" -groups = ["main", "dev", "docs"] -files = [ - {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, - {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, -] -markers = {main = "python_version == \"3.9\" and (extra == \"drivers\" or extra == \"nidaqmx\")", dev = "python_version == \"3.9\"", docs = "python_version == \"3.9\""} - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} - [[package]] name = "click" version = "8.3.0" @@ -298,7 +282,7 @@ files = [ {file = "click-8.3.0-py3-none-any.whl", hash = "sha256:9b9f285302c6e3064f4330c05f05b81945b2a39544279343e6e7c5f27a9baddc"}, {file = "click-8.3.0.tar.gz", hash = "sha256:e7b8232224eba16f4ebe410c25ced9f7875cb5f3263ffc93cc3e8da705e229c4"}, ] -markers = {main = "python_version >= \"3.10\" and (extra == \"drivers\" or extra == \"nidaqmx\")", dev = "python_version >= \"3.10\"", docs = "python_version >= \"3.10\""} +markers = {main = "extra == \"drivers\" or extra == \"nidaqmx\""} [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} @@ -495,7 +479,7 @@ description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" groups = ["dev"] -markers = "python_version < \"3.11\"" +markers = "python_version == \"3.10\"" files = [ {file = "exceptiongroup-1.3.0-py3-none-any.whl", hash = "sha256:4d111e6e0c13d0644cad6ddaa7ed0261a0b36971f6d23e7ec9b4b9097da78a10"}, {file = "exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88"}, @@ -507,19 +491,6 @@ typing-extensions = {version = ">=4.6.0", markers = "python_version < \"3.13\""} [package.extras] test = ["pytest (>=6)"] -[[package]] -name = "filelock" -version = "3.19.1" -description = "A platform independent file lock." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -markers = "python_version == \"3.9\"" -files = [ - {file = "filelock-3.19.1-py3-none-any.whl", hash = "sha256:d38e30481def20772f5baf097c122c3babc4fcdb7e14e57049eb9d88c6dc017d"}, - {file = "filelock-3.19.1.tar.gz", hash = "sha256:66eda1888b0171c998b35be2bcc0f6d75c388a7ce20c3f3f37aa8e96c2dddf58"}, -] - [[package]] name = "filelock" version = "3.20.0" @@ -527,7 +498,6 @@ description = "A platform independent file lock." optional = false python-versions = ">=3.10" groups = ["dev"] -markers = "python_version >= \"3.10\"" files = [ {file = "filelock-3.20.0-py3-none-any.whl", hash = "sha256:339b4732ffda5cd79b13f4e2711a31b0365ce445d95d243bb996273d072546a2"}, {file = "filelock-3.20.0.tar.gz", hash = "sha256:711e943b4ec6be42e1d4e6690b48dc175c822967466bb31c0c293f34334c13f4"}, @@ -540,7 +510,7 @@ description = "the modular source code checker: pep8 pyflakes and co" optional = false python-versions = ">=3.6.1" groups = ["dev"] -markers = "python_version <= \"3.11\"" +markers = "python_version < \"3.12\"" files = [ {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"}, {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"}, @@ -705,7 +675,7 @@ description = "Protobuf code generator for gRPC" optional = false python-versions = ">=3.7" groups = ["dev"] -markers = "python_version <= \"3.11\"" +markers = "python_version < \"3.12\"" files = [ {file = "grpcio-tools-1.49.1.tar.gz", hash = "sha256:84cc64e5b46bad43d5d7bd2fd772b656eba0366961187a847e908e2cb735db91"}, {file = "grpcio_tools-1.49.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:2dfb6c7ece84d46bd690b23d3e060d18115c8bc5047d2e8a33e6747ed323a348"}, @@ -1017,31 +987,6 @@ files = [ {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, ] -[[package]] -name = "importlib-metadata" -version = "8.7.0" -description = "Read metadata from Python packages" -optional = false -python-versions = ">=3.9" -groups = ["dev", "docs"] -markers = "python_version == \"3.9\"" -files = [ - {file = "importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd"}, - {file = "importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000"}, -] - -[package.dependencies] -zipp = ">=3.20" - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -enabler = ["pytest-enabler (>=2.2)"] -perf = ["ipython"] -test = ["flufl.flake8", "importlib_resources (>=1.3) ; python_version < \"3.9\"", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] -type = ["pytest-mypy"] - [[package]] name = "iniconfig" version = "2.1.0" @@ -1066,9 +1011,6 @@ files = [ {file = "isort-6.1.0.tar.gz", hash = "sha256:9b8f96a14cfee0677e78e941ff62f03769a06d412aabb9e2a90487b3b7e8d481"}, ] -[package.dependencies] -importlib-metadata = {version = ">=4.6.0", markers = "python_version < \"3.10\""} - [package.extras] colors = ["colorama"] plugins = ["setuptools"] @@ -1107,32 +1049,6 @@ files = [ docutils = ">=0.19" mistune = "0.8.4" -[[package]] -name = "markdown-it-py" -version = "3.0.0" -description = "Python port of markdown-it. Markdown parsing, done right!" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -markers = "python_version == \"3.9\"" -files = [ - {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, - {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, -] - -[package.dependencies] -mdurl = ">=0.1,<1.0" - -[package.extras] -benchmarking = ["psutil", "pytest", "pytest-benchmark"] -code-style = ["pre-commit (>=3.0,<4.0)"] -compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] -linkify = ["linkify-it-py (>=1,<3)"] -plugins = ["mdit-py-plugins"] -profiling = ["gprof2dot"] -rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] -testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] - [[package]] name = "markdown-it-py" version = "4.0.0" @@ -1140,7 +1056,6 @@ description = "Python port of markdown-it. Markdown parsing, done right!" optional = false python-versions = ">=3.10" groups = ["dev"] -markers = "python_version >= \"3.10\"" files = [ {file = "markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147"}, {file = "markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3"}, @@ -1642,10 +1557,7 @@ files = [ ] [package.dependencies] -click = [ - {version = ">=8.0.0,<8.2.0", markers = "python_version == \"3.9\""}, - {version = ">=8.0.0", markers = "python_version >= \"3.10\" and python_version < \"4.0\""}, -] +click = {version = ">=8.0.0", markers = "python_version >= \"3.10\" and python_version < \"4.0\""} deprecation = ">=2.1" distro = {version = ">=1.9.0", markers = "sys_platform == \"linux\""} grpcio = {version = ">=1.49.0,<2.0", optional = true, markers = "extra == \"grpc\""} @@ -1828,62 +1740,6 @@ numpy = [ ] typing-extensions = ">=4.13.2" -[[package]] -name = "numpy" -version = "2.0.2" -description = "Fundamental package for array computing in Python" -optional = false -python-versions = ">=3.9" -groups = ["main", "dev"] -markers = "python_version == \"3.9\"" -files = [ - {file = "numpy-2.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:51129a29dbe56f9ca83438b706e2e69a39892b5eda6cedcb6b0c9fdc9b0d3ece"}, - {file = "numpy-2.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f15975dfec0cf2239224d80e32c3170b1d168335eaedee69da84fbe9f1f9cd04"}, - {file = "numpy-2.0.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:8c5713284ce4e282544c68d1c3b2c7161d38c256d2eefc93c1d683cf47683e66"}, - {file = "numpy-2.0.2-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:becfae3ddd30736fe1889a37f1f580e245ba79a5855bff5f2a29cb3ccc22dd7b"}, - {file = "numpy-2.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2da5960c3cf0df7eafefd806d4e612c5e19358de82cb3c343631188991566ccd"}, - {file = "numpy-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:496f71341824ed9f3d2fd36cf3ac57ae2e0165c143b55c3a035ee219413f3318"}, - {file = "numpy-2.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a61ec659f68ae254e4d237816e33171497e978140353c0c2038d46e63282d0c8"}, - {file = "numpy-2.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d731a1c6116ba289c1e9ee714b08a8ff882944d4ad631fd411106a30f083c326"}, - {file = "numpy-2.0.2-cp310-cp310-win32.whl", hash = "sha256:984d96121c9f9616cd33fbd0618b7f08e0cfc9600a7ee1d6fd9b239186d19d97"}, - {file = "numpy-2.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:c7b0be4ef08607dd04da4092faee0b86607f111d5ae68036f16cc787e250a131"}, - {file = "numpy-2.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:49ca4decb342d66018b01932139c0961a8f9ddc7589611158cb3c27cbcf76448"}, - {file = "numpy-2.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:11a76c372d1d37437857280aa142086476136a8c0f373b2e648ab2c8f18fb195"}, - {file = "numpy-2.0.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:807ec44583fd708a21d4a11d94aedf2f4f3c3719035c76a2bbe1fe8e217bdc57"}, - {file = "numpy-2.0.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:8cafab480740e22f8d833acefed5cc87ce276f4ece12fdaa2e8903db2f82897a"}, - {file = "numpy-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a15f476a45e6e5a3a79d8a14e62161d27ad897381fecfa4a09ed5322f2085669"}, - {file = "numpy-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13e689d772146140a252c3a28501da66dfecd77490b498b168b501835041f951"}, - {file = "numpy-2.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9ea91dfb7c3d1c56a0e55657c0afb38cf1eeae4544c208dc465c3c9f3a7c09f9"}, - {file = "numpy-2.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c1c9307701fec8f3f7a1e6711f9089c06e6284b3afbbcd259f7791282d660a15"}, - {file = "numpy-2.0.2-cp311-cp311-win32.whl", hash = "sha256:a392a68bd329eafac5817e5aefeb39038c48b671afd242710b451e76090e81f4"}, - {file = "numpy-2.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:286cd40ce2b7d652a6f22efdfc6d1edf879440e53e76a75955bc0c826c7e64dc"}, - {file = "numpy-2.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:df55d490dea7934f330006d0f81e8551ba6010a5bf035a249ef61a94f21c500b"}, - {file = "numpy-2.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8df823f570d9adf0978347d1f926b2a867d5608f434a7cff7f7908c6570dcf5e"}, - {file = "numpy-2.0.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:9a92ae5c14811e390f3767053ff54eaee3bf84576d99a2456391401323f4ec2c"}, - {file = "numpy-2.0.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:a842d573724391493a97a62ebbb8e731f8a5dcc5d285dfc99141ca15a3302d0c"}, - {file = "numpy-2.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05e238064fc0610c840d1cf6a13bf63d7e391717d247f1bf0318172e759e692"}, - {file = "numpy-2.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0123ffdaa88fa4ab64835dcbde75dcdf89c453c922f18dced6e27c90d1d0ec5a"}, - {file = "numpy-2.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:96a55f64139912d61de9137f11bf39a55ec8faec288c75a54f93dfd39f7eb40c"}, - {file = "numpy-2.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ec9852fb39354b5a45a80bdab5ac02dd02b15f44b3804e9f00c556bf24b4bded"}, - {file = "numpy-2.0.2-cp312-cp312-win32.whl", hash = "sha256:671bec6496f83202ed2d3c8fdc486a8fc86942f2e69ff0e986140339a63bcbe5"}, - {file = "numpy-2.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:cfd41e13fdc257aa5778496b8caa5e856dc4896d4ccf01841daee1d96465467a"}, - {file = "numpy-2.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9059e10581ce4093f735ed23f3b9d283b9d517ff46009ddd485f1747eb22653c"}, - {file = "numpy-2.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:423e89b23490805d2a5a96fe40ec507407b8ee786d66f7328be214f9679df6dd"}, - {file = "numpy-2.0.2-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:2b2955fa6f11907cf7a70dab0d0755159bca87755e831e47932367fc8f2f2d0b"}, - {file = "numpy-2.0.2-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:97032a27bd9d8988b9a97a8c4d2c9f2c15a81f61e2f21404d7e8ef00cb5be729"}, - {file = "numpy-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e795a8be3ddbac43274f18588329c72939870a16cae810c2b73461c40718ab1"}, - {file = "numpy-2.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b258c385842546006213344c50655ff1555a9338e2e5e02a0756dc3e803dd"}, - {file = "numpy-2.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5fec9451a7789926bcf7c2b8d187292c9f93ea30284802a0ab3f5be8ab36865d"}, - {file = "numpy-2.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:9189427407d88ff25ecf8f12469d4d39d35bee1db5d39fc5c168c6f088a6956d"}, - {file = "numpy-2.0.2-cp39-cp39-win32.whl", hash = "sha256:905d16e0c60200656500c95b6b8dca5d109e23cb24abc701d41c02d74c6b3afa"}, - {file = "numpy-2.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:a3f4ab0caa7f053f6797fcd4e1e25caee367db3112ef2b6ef82d749530768c73"}, - {file = "numpy-2.0.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:7f0a0c6f12e07fa94133c8a67404322845220c06a9e80e85999afe727f7438b8"}, - {file = "numpy-2.0.2-pp39-pypy39_pp73-macosx_14_0_x86_64.whl", hash = "sha256:312950fdd060354350ed123c0e25a71327d3711584beaef30cdaa93320c392d4"}, - {file = "numpy-2.0.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26df23238872200f63518dd2aa984cfca675d82469535dc7162dc2ee52d9dd5c"}, - {file = "numpy-2.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a46288ec55ebbd58947d31d72be2c63cbf839f0a63b49cb755022310792a3385"}, - {file = "numpy-2.0.2.tar.gz", hash = "sha256:883c987dee1880e2a864ab0dc9892292582510604156762362d9326444636e78"}, -] - [[package]] name = "numpy" version = "2.2.6" @@ -2074,24 +1930,6 @@ files = [ [package.dependencies] flake8 = ">=5.0.0" -[[package]] -name = "platformdirs" -version = "4.4.0" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -markers = "python_version == \"3.9\"" -files = [ - {file = "platformdirs-4.4.0-py3-none-any.whl", hash = "sha256:abd01743f24e5287cd7a5db3752faf1a2d65353f38ec26d98e25a6db65958c85"}, - {file = "platformdirs-4.4.0.tar.gz", hash = "sha256:ca753cf4d81dc309bc67b0ea38fd15dc97bc30ce419a7f58d13eb3bf14c4febf"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.4)", "pytest-cov (>=6)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.14.1)"] - [[package]] name = "platformdirs" version = "4.5.0" @@ -2099,7 +1937,6 @@ description = "A small Python package for determining appropriate platform-speci optional = false python-versions = ">=3.10" groups = ["dev"] -markers = "python_version >= \"3.10\"" files = [ {file = "platformdirs-4.5.0-py3-none-any.whl", hash = "sha256:e578a81bb873cbb89a41fcc904c7ef523cc18284b7e3b3ccf06aca1403b7ebd3"}, {file = "platformdirs-4.5.0.tar.gz", hash = "sha256:70ddccdd7c99fc5942e9fc25636a8b34d04c24b335100223152c2803e4063312"}, @@ -2133,7 +1970,7 @@ description = "" optional = false python-versions = ">=3.8" groups = ["main", "dev"] -markers = "python_version < \"3.13\"" +markers = "python_version <= \"3.12\"" files = [ {file = "protobuf-4.25.8-cp310-abi3-win32.whl", hash = "sha256:504435d831565f7cfac9f0714440028907f1975e4bed228e58e72ecfff58a1e0"}, {file = "protobuf-4.25.8-cp310-abi3-win_amd64.whl", hash = "sha256:bd551eb1fe1d7e92c1af1d75bdfa572eff1ab0e5bf1736716814cdccdb2360f9"}, @@ -2231,7 +2068,7 @@ description = "Python style guide checker" optional = false python-versions = ">=3.6" groups = ["dev"] -markers = "python_version <= \"3.11\"" +markers = "python_version < \"3.12\"" files = [ {file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"}, {file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"}, @@ -2275,7 +2112,7 @@ description = "passive checker of Python programs" optional = false python-versions = ">=3.6" groups = ["dev"] -markers = "python_version <= \"3.11\"" +markers = "python_version < \"3.12\"" files = [ {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"}, {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, @@ -2631,7 +2468,7 @@ description = "Python documentation generator" optional = false python-versions = ">=3.9" groups = ["docs"] -markers = "python_version < \"3.11\"" +markers = "python_version == \"3.10\"" files = [ {file = "sphinx-7.4.7-py3-none-any.whl", hash = "sha256:c2419e2135d11f1951cd994d6eb18a1835bd8fdd8429f9ca375dc1f3281bd239"}, {file = "sphinx-7.4.7.tar.gz", hash = "sha256:242f92a7ea7e6c5b406fdc2615413890ba9f699114a9c09192d7dfead2ee9cfe"}, @@ -2643,7 +2480,6 @@ babel = ">=2.13" colorama = {version = ">=0.4.6", markers = "sys_platform == \"win32\""} docutils = ">=0.20,<0.22" imagesize = ">=1.3" -importlib-metadata = {version = ">=6.0", markers = "python_version < \"3.10\""} Jinja2 = ">=3.1" packaging = ">=23.0" Pygments = ">=2.17" @@ -2719,25 +2555,6 @@ astroid = [ Jinja2 = "*" PyYAML = "*" sphinx = ">=7.4.0" -stdlib_list = {version = "*", markers = "python_version < \"3.10\""} - -[[package]] -name = "sphinx-click" -version = "6.0.0" -description = "Sphinx extension that automatically documents click applications" -optional = false -python-versions = ">=3.8" -groups = ["docs"] -markers = "python_version == \"3.9\"" -files = [ - {file = "sphinx_click-6.0.0-py3-none-any.whl", hash = "sha256:1e0a3c83bcb7c55497751b19d07ebe56b5d7b85eb76dd399cf9061b497adc317"}, - {file = "sphinx_click-6.0.0.tar.gz", hash = "sha256:f5d664321dc0c6622ff019f1e1c84e58ce0cecfddeb510e004cf60c2a3ab465b"}, -] - -[package.dependencies] -click = ">=8.0" -docutils = "*" -sphinx = ">=4.0" [[package]] name = "sphinx-click" @@ -2746,7 +2563,6 @@ description = "Sphinx extension that automatically documents click applications" optional = false python-versions = ">=3.10" groups = ["docs"] -markers = "python_version >= \"3.10\"" files = [ {file = "sphinx_click-6.1.0-py3-none-any.whl", hash = "sha256:7dbed856c3d0be75a394da444850d5fc7ecc5694534400aa5ed4f4849a8643f9"}, {file = "sphinx_click-6.1.0.tar.gz", hash = "sha256:c702e0751c1a0b6ad649e4f7faebd0dc09a3cc7ca3b50f959698383772f50eef"}, @@ -2896,26 +2712,6 @@ lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] standalone = ["Sphinx (>=5)"] test = ["pytest"] -[[package]] -name = "stdlib-list" -version = "0.11.1" -description = "A list of Python Standard Libraries (2.7 through 3.13)." -optional = false -python-versions = ">=3.9" -groups = ["docs"] -markers = "python_version == \"3.9\"" -files = [ - {file = "stdlib_list-0.11.1-py3-none-any.whl", hash = "sha256:9029ea5e3dfde8cd4294cfd4d1797be56a67fc4693c606181730148c3fd1da29"}, - {file = "stdlib_list-0.11.1.tar.gz", hash = "sha256:95ebd1d73da9333bba03ccc097f5bac05e3aa03e6822a0c0290f87e1047f1857"}, -] - -[package.extras] -dev = ["build", "stdlib-list[doc,lint,test]"] -doc = ["furo", "sphinx"] -lint = ["mypy", "ruff"] -support = ["sphobjinv"] -test = ["coverage[toml]", "pytest", "pytest-cov"] - [[package]] name = "stevedore" version = "5.5.0" @@ -2940,49 +2736,6 @@ files = [ {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, ] -[[package]] -name = "tomli" -version = "2.2.1" -description = "A lil' TOML parser" -optional = false -python-versions = ">=3.8" -groups = ["dev", "docs"] -markers = "python_version == \"3.9\"" -files = [ - {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, - {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, - {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, - {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, - {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, - {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, - {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, - {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, - {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, - {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, - {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, - {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, - {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, - {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, -] - [[package]] name = "tomli" version = "2.3.0" @@ -3036,32 +2789,6 @@ files = [ {file = "tomli-2.3.0.tar.gz", hash = "sha256:64be704a875d2a59753d80ee8a533c3fe183e3f06807ff7dc2232938ccb01549"}, ] -[[package]] -name = "tox" -version = "4.30.3" -description = "tox is a generic virtualenv management and test command line tool" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -markers = "python_version == \"3.9\"" -files = [ - {file = "tox-4.30.3-py3-none-any.whl", hash = "sha256:a9f17b4b2d0f74fe0d76207236925a119095011e5c2e661a133115a8061178c9"}, - {file = "tox-4.30.3.tar.gz", hash = "sha256:f3dd0735f1cd4e8fbea5a3661b77f517456b5f0031a6256432533900e34b90bf"}, -] - -[package.dependencies] -cachetools = ">=6.1" -chardet = ">=5.2" -colorama = ">=0.4.6" -filelock = ">=3.18" -packaging = ">=25" -platformdirs = ">=4.3.8" -pluggy = ">=1.6" -pyproject-api = ">=1.9.1" -tomli = {version = ">=2.2.1", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=4.14.1", markers = "python_version < \"3.11\""} -virtualenv = ">=20.31.2" - [[package]] name = "tox" version = "4.32.0" @@ -3069,7 +2796,6 @@ description = "tox is a generic virtualenv management and test command line tool optional = false python-versions = ">=3.10" groups = ["dev"] -markers = "python_version >= \"3.10\"" files = [ {file = "tox-4.32.0-py3-none-any.whl", hash = "sha256:451e81dc02ba8d1ed20efd52ee409641ae4b5d5830e008af10fe8823ef1bd551"}, {file = "tox-4.32.0.tar.gz", hash = "sha256:1ad476b5f4d3679455b89a992849ffc3367560bbc7e9495ee8a3963542e7c8ff"}, @@ -3172,7 +2898,7 @@ files = [ {file = "typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548"}, {file = "typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466"}, ] -markers = {docs = "python_version < \"3.11\""} +markers = {docs = "python_version == \"3.10\""} [[package]] name = "tzdata" @@ -3247,27 +2973,6 @@ typing-extensions = {version = ">=4.13.2", markers = "python_version < \"3.11\"" docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8) ; platform_python_implementation == \"PyPy\" or platform_python_implementation == \"GraalVM\" or platform_python_implementation == \"CPython\" and sys_platform == \"win32\" and python_version >= \"3.13\"", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10) ; platform_python_implementation == \"CPython\""] -[[package]] -name = "zipp" -version = "3.23.0" -description = "Backport of pathlib-compatible object wrapper for zip files" -optional = false -python-versions = ">=3.9" -groups = ["dev", "docs"] -markers = "python_version == \"3.9\"" -files = [ - {file = "zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e"}, - {file = "zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166"}, -] - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -enabler = ["pytest-enabler (>=2.2)"] -test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more_itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] -type = ["pytest-mypy"] - [extras] drivers = ["nidaqmx", "nidcpower", "nidigital", "nidmm", "nifgen", "niscope", "niswitch"] nidaqmx = ["nidaqmx"] @@ -3280,5 +2985,5 @@ niswitch = ["niswitch"] [metadata] lock-version = "2.1" -python-versions = "^3.9" -content-hash = "7091c345df588aadc26eabfc78cb203914e250351a535c0579a40705458b439a" +python-versions = "^3.10" +content-hash = "8f231e5d3badcaee7b05d0655cd68642243323b88d63a486ad3ec6918ddd8f57" From 203e56ee215151017d256bf41de0811c33001834 Mon Sep 17 00:00:00 2001 From: Brad Keryan Date: Tue, 4 Nov 2025 15:23:28 -0600 Subject: [PATCH 7/8] examples: Convert OutputVoltageMeasurement_example.seq to XML --- .../OutputVoltageMeasurement_example.seq | Bin 6944 -> 216290 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/examples/output_voltage_measurement/OutputVoltageMeasurement_example.seq b/examples/output_voltage_measurement/OutputVoltageMeasurement_example.seq index dfca4795f71575beefb2104b634d6e929c3dab33..03b9df0973ba2ef8fe21c052e351a7fe97308135 100644 GIT binary patch literal 216290 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�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 literal 6944 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 From 8473203ab64463e61778e78b0c36d7a8d730cc5b Mon Sep 17 00:00:00 2001 From: Brad Keryan Date: Tue, 4 Nov 2025 15:25:02 -0600 Subject: [PATCH 8/8] examples: Change OutputVoltageMeasurement_example.seq to use Python 3.10 --- .../OutputVoltageMeasurement_example.seq | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/output_voltage_measurement/OutputVoltageMeasurement_example.seq b/examples/output_voltage_measurement/OutputVoltageMeasurement_example.seq index 03b9df097..ad6cb32b3 100644 --- a/examples/output_voltage_measurement/OutputVoltageMeasurement_example.seq +++ b/examples/output_voltage_measurement/OutputVoltageMeasurement_example.seq @@ -3401,7 +3401,7 @@ 2 - 3.9 + 3.10 .venv @@ -3846,7 +3846,7 @@ 2 - 3.9 + 3.10 .venv @@ -4295,7 +4295,7 @@ 2 - 3.9 + 3.10 .venv @@ -4692,7 +4692,7 @@ 2 - 3.9 + 3.10 .venv