From c12f7f12f25e82bd9767bcefe316389e9323d4ad Mon Sep 17 00:00:00 2001 From: Matthias Straka Date: Mon, 18 May 2026 17:52:00 +0200 Subject: [PATCH 1/3] ci: update supported python versions --- .github/workflows/pylint.yml | 4 ++-- .github/workflows/win_tests.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/pylint.yml b/.github/workflows/pylint.yml index 9e1a1a1..677850f 100644 --- a/.github/workflows/pylint.yml +++ b/.github/workflows/pylint.yml @@ -11,11 +11,11 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set up Python 3 uses: actions/setup-python@v5 with: - python-version: '3.9' + python-version: '3.10' cache: 'pip' cache-dependency-path: 'requirements_dev.txt' - name: Install dependencies diff --git a/.github/workflows/win_tests.yml b/.github/workflows/win_tests.yml index 77e9919..b9dfb34 100644 --- a/.github/workflows/win_tests.yml +++ b/.github/workflows/win_tests.yml @@ -11,9 +11,9 @@ jobs: runs-on: windows-latest strategy: matrix: - python-version: ['3.9', '3.10', '3.11', '3.12'] + python-version: ['3.10', '3.11', '3.12', '3.13', '3.14'] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set up Python uses: actions/setup-python@v5 with: From 394e86bdc82cacd8a6116db134fda728733567a1 Mon Sep 17 00:00:00 2001 From: Matthias Straka Date: Mon, 18 May 2026 17:57:15 +0200 Subject: [PATCH 2/3] ci: bump setup-python to v6 --- .github/workflows/pylint.yml | 2 +- .github/workflows/win_tests.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pylint.yml b/.github/workflows/pylint.yml index 677850f..13295ce 100644 --- a/.github/workflows/pylint.yml +++ b/.github/workflows/pylint.yml @@ -13,7 +13,7 @@ jobs: steps: - uses: actions/checkout@v6 - name: Set up Python 3 - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: '3.10' cache: 'pip' diff --git a/.github/workflows/win_tests.yml b/.github/workflows/win_tests.yml index b9dfb34..8dd5000 100644 --- a/.github/workflows/win_tests.yml +++ b/.github/workflows/win_tests.yml @@ -15,7 +15,7 @@ jobs: steps: - uses: actions/checkout@v6 - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: ${{ matrix.python-version }} cache: 'pip' From 4f576efe88ca8a270d33cbba90f9f6b4745bc698 Mon Sep 17 00:00:00 2001 From: Matthias Straka Date: Mon, 18 May 2026 18:10:14 +0200 Subject: [PATCH 3/3] tests: fix deprecations --- tests/test_datatypes.py | 218 ++++++++++++++++++++-------------------- 1 file changed, 109 insertions(+), 109 deletions(-) diff --git a/tests/test_datatypes.py b/tests/test_datatypes.py index 0773175..cd2107b 100644 --- a/tests/test_datatypes.py +++ b/tests/test_datatypes.py @@ -1,109 +1,109 @@ -""" -Copyright DEWETRON GmbH 2022 - -Dmd reader library - Unit Tests for internal demo DMD datatypes -""" - - -import pyDmdReader - - -DMD_FILE = "DMD_DEMO_FILE" - - -def test_check_demo_file(): - dmd = pyDmdReader.DmdReader(DMD_FILE) - assert dmd.version.major == 1 and dmd.version.minor >= 1 - - assert len(dmd.channel_names) >= 5 - - assert dmd.channel_names[0] == "AI 0/0 (Demo)" - channel = dmd.channels["AI 0/0 (Demo)"] - assert channel.description == "DEMO Analog" - assert channel.unit == "V" - assert channel.sample_rate == 10000.0 - assert channel.dtype == "float64" - data = dmd.read_dataframe("AI 0/0 (Demo)") - assert len(data) == 40002 - assert len(data.columns) == 1 - assert data.dtypes[0] == "float64" - - assert dmd.channel_names[1] == "Cnt 0/0 (Demo)" - channel = dmd.channels["Cnt 0/0 (Demo)"] - assert channel.dtype == "float64" - data = dmd.read_dataframe("Cnt 0/0 (Demo)") - assert len(data) == 10000 - assert len(data.columns) == 1 - assert data.dtypes[0] == "float64" - - assert dmd.channel_names[2] == "DI 1/1 (Demo)" - channel = dmd.channels["DI 1/1 (Demo)"] - assert channel.dtype == "i4" - data = dmd.read_dataframe("DI 1/1 (Demo)") - assert len(data) == 10000 - assert len(data.columns) == 1 - assert data.dtypes[0] == "int32" - assert data.iloc[0].name == 0.000 - assert data.iloc[0][0] == 0 - assert data.iloc[1].name == 0.001 - assert data.iloc[1][0] == 1 - - assert dmd.channel_names[3] == "VC 1/1 (Demo)" - channel = dmd.channels["VC 1/1 (Demo)"] - assert channel.dtype == "complex128" - data = dmd.read_dataframe("VC 1/1 (Demo)") - assert len(data) == 10000 - assert len(data.columns) == 5 - assert data.dtypes[0] == "complex128" - - assert dmd.channel_names[4] == "VS 1/1 (Demo)" - channel = dmd.channels["VS 1/1 (Demo)"] - assert channel.dtype == "float64" - data = dmd.read_dataframe("VS 1/1 (Demo)") - assert len(data) == 10000 - assert len(data.columns) == 10 - assert data.columns[0] == "VS 1/1 (Demo)[0]" - assert data.dtypes[0] == "float64" - assert data.iloc[0].name == 0.000 - assert sum(abs(data.iloc[0] - [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])) < 1e-15 - - dmd.close() - -def test_check_demo_file_unique_ids(): - dmd = pyDmdReader.DmdReader(DMD_FILE) - assert dmd.version.major == 1 and dmd.version.minor >= 1 - - assert len(dmd.channel_names) == len(dmd.channel_ids) - - channel = dmd.channels["AI 0/0 (Demo)"] - unique_id = channel.handle.value - channel2 = dmd.allchannels[unique_id] - assert channel.name == channel2.name - assert channel == channel2 - -def test_check_demo_file_multicolumn(): - dmd = pyDmdReader.DmdReader(DMD_FILE) - data = dmd.read_dataframe(["Cnt 0/0 (Demo)", "DI 1/1 (Demo)", "VS 1/1 (Demo)"]) - - assert len(data.dtypes) == 12 - assert data.dtypes[0] == "float64" - assert data.dtypes[1] == "int32" - assert data.dtypes[2] == "float64" - - dmd.close() - -def test_version(): - v = pyDmdReader.Version(1,2) - assert v.major == 1 - assert v.minor == 2 - assert v.micro == 0 - assert str(v) == "1.2" - - v = pyDmdReader.Version(1,2,3) - assert v.major == 1 - assert v.minor == 2 - assert v.micro == 3 - assert str(v) == "1.2.3" - - assert str(pyDmdReader.Version.parse("9.8")) == "9.8" - assert str(pyDmdReader.Version.parse("9.8.7")) == "9.8.7" +""" +Copyright DEWETRON GmbH 2022 + +Dmd reader library - Unit Tests for internal demo DMD datatypes +""" + + +import pyDmdReader + + +DMD_FILE = "DMD_DEMO_FILE" + + +def test_check_demo_file(): + dmd = pyDmdReader.DmdReader(DMD_FILE) + assert dmd.version.major == 1 and dmd.version.minor >= 1 + + assert len(dmd.channel_names) >= 5 + + assert dmd.channel_names[0] == "AI 0/0 (Demo)" + channel = dmd.channels["AI 0/0 (Demo)"] + assert channel.description == "DEMO Analog" + assert channel.unit == "V" + assert channel.sample_rate == 10000.0 + assert channel.dtype == "float64" + data = dmd.read_dataframe("AI 0/0 (Demo)") + assert len(data) == 40002 + assert len(data.columns) == 1 + assert data.dtypes.iloc[0] == "float64" + + assert dmd.channel_names[1] == "Cnt 0/0 (Demo)" + channel = dmd.channels["Cnt 0/0 (Demo)"] + assert channel.dtype == "float64" + data = dmd.read_dataframe("Cnt 0/0 (Demo)") + assert len(data) == 10000 + assert len(data.columns) == 1 + assert data.dtypes.iloc[0] == "float64" + + assert dmd.channel_names[2] == "DI 1/1 (Demo)" + channel = dmd.channels["DI 1/1 (Demo)"] + assert channel.dtype == "i4" + data = dmd.read_dataframe("DI 1/1 (Demo)") + assert len(data) == 10000 + assert len(data.columns) == 1 + assert data.dtypes.iloc[0] == "int32" + assert data.iloc[0].name == 0.000 + assert data.iloc[0, 0] == 0 + assert data.iloc[1].name == 0.001 + assert data.iloc[1, 0] == 1 + + assert dmd.channel_names[3] == "VC 1/1 (Demo)" + channel = dmd.channels["VC 1/1 (Demo)"] + assert channel.dtype == "complex128" + data = dmd.read_dataframe("VC 1/1 (Demo)") + assert len(data) == 10000 + assert len(data.columns) == 5 + assert data.dtypes.iloc[0] == "complex128" + + assert dmd.channel_names[4] == "VS 1/1 (Demo)" + channel = dmd.channels["VS 1/1 (Demo)"] + assert channel.dtype == "float64" + data = dmd.read_dataframe("VS 1/1 (Demo)") + assert len(data) == 10000 + assert len(data.columns) == 10 + assert data.columns[0] == "VS 1/1 (Demo)[0]" + assert data.dtypes.iloc[0] == "float64" + assert data.iloc[0].name == 0.000 + assert sum(abs(data.iloc[0] - [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])) < 1e-15 + + dmd.close() + +def test_check_demo_file_unique_ids(): + dmd = pyDmdReader.DmdReader(DMD_FILE) + assert dmd.version.major == 1 and dmd.version.minor >= 1 + + assert len(dmd.channel_names) == len(dmd.channel_ids) + + channel = dmd.channels["AI 0/0 (Demo)"] + unique_id = channel.handle.value + channel2 = dmd.allchannels[unique_id] + assert channel.name == channel2.name + assert channel == channel2 + +def test_check_demo_file_multicolumn(): + dmd = pyDmdReader.DmdReader(DMD_FILE) + data = dmd.read_dataframe(["Cnt 0/0 (Demo)", "DI 1/1 (Demo)", "VS 1/1 (Demo)"]) + + assert len(data.dtypes) == 12 + assert data.dtypes.iloc[0] == "float64" + assert data.dtypes.iloc[1] == "int32" + assert data.dtypes.iloc[2] == "float64" + + dmd.close() + +def test_version(): + v = pyDmdReader.Version(1,2) + assert v.major == 1 + assert v.minor == 2 + assert v.micro == 0 + assert str(v) == "1.2" + + v = pyDmdReader.Version(1,2,3) + assert v.major == 1 + assert v.minor == 2 + assert v.micro == 3 + assert str(v) == "1.2.3" + + assert str(pyDmdReader.Version.parse("9.8")) == "9.8" + assert str(pyDmdReader.Version.parse("9.8.7")) == "9.8.7"