From eb63a547656b1571b122aa39086552e105b2fb59 Mon Sep 17 00:00:00 2001 From: Kosta Ilic Date: Thu, 18 Dec 2025 21:02:54 -0600 Subject: [PATCH 1/9] Add doctests to CI pipeline and fix broken doctests - Add doctest step to run_unit_tests.yml workflow - Fix DigitalWaveformFailure doctest: remove column_index field that no longer exists in API - Fix _mask_to_column_indices doctest: add missing bitorder parameter This ensures doctests are run as part of CI to catch future API/documentation mismatches. Signed-off-by: Kosta Ilic --- .github/workflows/run_unit_tests.yml | 2 ++ src/nitypes/waveform/_digital/_port.py | 2 +- src/nitypes/waveform/_digital/_waveform.py | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/run_unit_tests.yml b/.github/workflows/run_unit_tests.yml index 75d29dff..d1a96a31 100644 --- a/.github/workflows/run_unit_tests.yml +++ b/.github/workflows/run_unit_tests.yml @@ -36,6 +36,8 @@ jobs: run: poetry run pip list - name: Run unit tests and code coverage run: poetry run pytest ./tests/unit -v --cov=nitypes --junitxml=test_results/nitypes-${{ matrix.os }}-py${{ matrix.python-version }}.xml + - name: Run doctests + run: poetry run pytest --doctest-modules src/nitypes -v --junitxml=test_results/nitypes-doctests-${{ matrix.os }}-py${{ matrix.python-version }}.xml - name: Run benchmarks run: poetry run pytest ./tests/benchmark -v --junitxml=test_results/nitypes-benchmarks-${{ matrix.os }}-py${{ matrix.python-version }}.xml - name: Upload test results diff --git a/src/nitypes/waveform/_digital/_port.py b/src/nitypes/waveform/_digital/_port.py index c02070b6..938a874a 100644 --- a/src/nitypes/waveform/_digital/_port.py +++ b/src/nitypes/waveform/_digital/_port.py @@ -147,7 +147,7 @@ def _mask_to_column_indices( [8] >>> _mask_to_column_indices(0xDEADBEEF, 32, "little") [0, 1, 2, 3, 5, 6, 7, 9, 10, 11, 12, 13, 15, 16, 18, 19, 21, 23, 25, 26, 27, 28, 30, 31] - >>> _mask_to_column_indices(-1, 8) + >>> _mask_to_column_indices(-1, 8, "little") Traceback (most recent call last): ... ValueError: The mask must be a non-negative integer. diff --git a/src/nitypes/waveform/_digital/_waveform.py b/src/nitypes/waveform/_digital/_waveform.py index 7d542148..fca60948 100644 --- a/src/nitypes/waveform/_digital/_waveform.py +++ b/src/nitypes/waveform/_digital/_waveform.py @@ -273,10 +273,10 @@ class DigitalWaveform(Generic[TDigitalState]): and the digital state from the actual and expected waveforms: >>> result.failures[0] # doctest: +NORMALIZE_WHITESPACE - DigitalWaveformFailure(sample_index=0, expected_sample_index=0, signal_index=0, column_index=1, + DigitalWaveformFailure(sample_index=0, expected_sample_index=0, signal_index=0, actual_state=, expected_state=) >>> result.failures[1] # doctest: +NORMALIZE_WHITESPACE - DigitalWaveformFailure(sample_index=1, expected_sample_index=1, signal_index=0, column_index=1, + DigitalWaveformFailure(sample_index=1, expected_sample_index=1, signal_index=0, actual_state=, expected_state=) Timing information From 8311cb45797838ed27c24f753edb57a72f1dd2d6 Mon Sep 17 00:00:00 2001 From: Kosta Ilic Date: Thu, 18 Dec 2025 21:42:16 -0600 Subject: [PATCH 2/9] Add acceptance tests to CI pipeline With only 6 tests taking ~0.1s to run, acceptance tests provide valuable integration testing coverage for memory-mapping functionality across all OS/Python combinations with minimal CI overhead. Signed-off-by: Kosta Ilic --- .github/workflows/run_unit_tests.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/run_unit_tests.yml b/.github/workflows/run_unit_tests.yml index d1a96a31..6dca7a13 100644 --- a/.github/workflows/run_unit_tests.yml +++ b/.github/workflows/run_unit_tests.yml @@ -36,6 +36,8 @@ jobs: run: poetry run pip list - name: Run unit tests and code coverage run: poetry run pytest ./tests/unit -v --cov=nitypes --junitxml=test_results/nitypes-${{ matrix.os }}-py${{ matrix.python-version }}.xml + - name: Run acceptance tests + run: poetry run pytest ./tests/acceptance -v --junitxml=test_results/nitypes-acceptance-${{ matrix.os }}-py${{ matrix.python-version }}.xml - name: Run doctests run: poetry run pytest --doctest-modules src/nitypes -v --junitxml=test_results/nitypes-doctests-${{ matrix.os }}-py${{ matrix.python-version }}.xml - name: Run benchmarks From eefedf4cff4c3823ebd556a3aaa35f065f5b86e2 Mon Sep 17 00:00:00 2001 From: KostaIlic2 Date: Tue, 6 Jan 2026 08:27:57 -0500 Subject: [PATCH 3/9] Update .github/workflows/run_unit_tests.yml in hopes of achieving the same effect in a simpler manner that reduces duplication. Co-authored-by: Brad Keryan --- .github/workflows/run_unit_tests.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/run_unit_tests.yml b/.github/workflows/run_unit_tests.yml index 6dca7a13..fa94cd7f 100644 --- a/.github/workflows/run_unit_tests.yml +++ b/.github/workflows/run_unit_tests.yml @@ -34,12 +34,8 @@ jobs: run: poetry install -v - name: Display installed dependency versions run: poetry run pip list - - name: Run unit tests and code coverage - run: poetry run pytest ./tests/unit -v --cov=nitypes --junitxml=test_results/nitypes-${{ matrix.os }}-py${{ matrix.python-version }}.xml - - name: Run acceptance tests - run: poetry run pytest ./tests/acceptance -v --junitxml=test_results/nitypes-acceptance-${{ matrix.os }}-py${{ matrix.python-version }}.xml - - name: Run doctests - run: poetry run pytest --doctest-modules src/nitypes -v --junitxml=test_results/nitypes-doctests-${{ matrix.os }}-py${{ matrix.python-version }}.xml + - name: Run unit/acceptance/doc tests and code coverage + run: poetry run pytest -v --cov=nitypes --junitxml=test_results/nitypes-${{ matrix.os }}-py${{ matrix.python-version }}.xml - name: Run benchmarks run: poetry run pytest ./tests/benchmark -v --junitxml=test_results/nitypes-benchmarks-${{ matrix.os }}-py${{ matrix.python-version }}.xml - name: Upload test results From cb67d14455b760eef10d11e0686488458879eb1d Mon Sep 17 00:00:00 2001 From: Kosta Ilic Date: Wed, 7 Jan 2026 05:50:45 -0600 Subject: [PATCH 4/9] Fix broken doctests by removing __doctest_requires__ with numpy>=2.0 - Remove __doctest_requires__ statements that cause pytest-doctestplus 1.6.0 to skip tests - Update pytest dependencies to match CI environment - All 22 doctests now pass without skips Signed-off-by: Kosta Ilic --- poetry.lock | 8 ++++---- src/nitypes/_arguments.py | 1 - src/nitypes/complex/__init__.py | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/poetry.lock b/poetry.lock index 61ede3aa..b1a6a330 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.1.4 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. [[package]] name = "alabaster" @@ -1716,15 +1716,15 @@ dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests [[package]] name = "pytest" -version = "9.0.1" +version = "9.0.2" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.10" groups = ["test"] markers = "python_version >= \"3.10\"" files = [ - {file = "pytest-9.0.1-py3-none-any.whl", hash = "sha256:67be0030d194df2dfa7b556f2e56fb3c3315bd5c8822c6951162b92b32ce7dad"}, - {file = "pytest-9.0.1.tar.gz", hash = "sha256:3e9c069ea73583e255c3b21cf46b8d3c56f6e3a1a8f6da94ccb0fcf57b9d73c8"}, + {file = "pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b"}, + {file = "pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11"}, ] [package.dependencies] diff --git a/src/nitypes/_arguments.py b/src/nitypes/_arguments.py index 948b729a..f3fc7a58 100644 --- a/src/nitypes/_arguments.py +++ b/src/nitypes/_arguments.py @@ -16,7 +16,6 @@ # Some of these doctests use types introduced in NumPy 2.0 (np.long and np.ulong) or highlight # formatting differences between NumPy 1.x and 2.x (e.g. dtype=int32, 1.23 vs. np.float64(1.23)). -__doctest_requires__ = {("arg_to_float", "is_dtype", "validate_dtype"): ["numpy>=2.0"]} def arg_to_float( diff --git a/src/nitypes/complex/__init__.py b/src/nitypes/complex/__init__.py index e904f485..40994568 100644 --- a/src/nitypes/complex/__init__.py +++ b/src/nitypes/complex/__init__.py @@ -127,4 +127,4 @@ from nitypes.complex._dtypes import ComplexInt32Base, ComplexInt32DType __all__ = ["convert_complex", "ComplexInt32DType", "ComplexInt32Base"] -__doctest_requires__ = {".": ["numpy>=2.0"]} + From 6b32f62c92751c6e2d76f79f986cec2ec756a981 Mon Sep 17 00:00:00 2001 From: Kosta Ilic Date: Wed, 7 Jan 2026 05:59:54 -0600 Subject: [PATCH 5/9] Revert removal of __doctest_requires__ statements These statements are needed because the doctests actually use NumPy 2.0 features like np.long and np.ulong. The pytest-doctestplus 1.6.0 version has a bug where it doesn't properly parse version requirements, but the requirements themselves are legitimate and necessary. --- src/nitypes/_arguments.py | 1 + src/nitypes/complex/__init__.py | 1 + 2 files changed, 2 insertions(+) diff --git a/src/nitypes/_arguments.py b/src/nitypes/_arguments.py index f3fc7a58..948b729a 100644 --- a/src/nitypes/_arguments.py +++ b/src/nitypes/_arguments.py @@ -16,6 +16,7 @@ # Some of these doctests use types introduced in NumPy 2.0 (np.long and np.ulong) or highlight # formatting differences between NumPy 1.x and 2.x (e.g. dtype=int32, 1.23 vs. np.float64(1.23)). +__doctest_requires__ = {("arg_to_float", "is_dtype", "validate_dtype"): ["numpy>=2.0"]} def arg_to_float( diff --git a/src/nitypes/complex/__init__.py b/src/nitypes/complex/__init__.py index 40994568..00087c99 100644 --- a/src/nitypes/complex/__init__.py +++ b/src/nitypes/complex/__init__.py @@ -127,4 +127,5 @@ from nitypes.complex._dtypes import ComplexInt32Base, ComplexInt32DType __all__ = ["convert_complex", "ComplexInt32DType", "ComplexInt32Base"] +__doctest_requires__ = {".": ["numpy>=2.0"]} From cf220dc838b64a37df5987357a12a94ce3f4bf0c Mon Sep 17 00:00:00 2001 From: Kosta Ilic Date: Wed, 7 Jan 2026 06:34:16 -0600 Subject: [PATCH 6/9] Replace __doctest_requires__ with inline version checks This workaround addresses pytest-doctestplus 1.6.0 bug that doesn't properly parse version requirements like 'numpy>=2.0'. The inline checks skip doctests that use NumPy 2.0 features (np.long, np.ulong) when running with older NumPy. - Remove __doctest_requires__ statements that were causing pytest failures - Add inline version checks in doctests that use NumPy 2.0 features - Include comprehensive comments explaining the workaround and maintenance notes - This is a temporary solution until pytest-doctestplus is fixed or NumPy < 2.0 support is dropped --- src/nitypes/_arguments.py | 20 ++++++++++++++++---- src/nitypes/complex/__init__.py | 10 ++++++++-- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/nitypes/_arguments.py b/src/nitypes/_arguments.py index 948b729a..d5cb1314 100644 --- a/src/nitypes/_arguments.py +++ b/src/nitypes/_arguments.py @@ -14,10 +14,6 @@ ) from nitypes._numpy import isdtype as _np_isdtype -# Some of these doctests use types introduced in NumPy 2.0 (np.long and np.ulong) or highlight -# formatting differences between NumPy 1.x and 2.x (e.g. dtype=int32, 1.23 vs. np.float64(1.23)). -__doctest_requires__ = {("arg_to_float", "is_dtype", "validate_dtype"): ["numpy>=2.0"]} - def arg_to_float( arg_description: str, value: SupportsFloat | None, default_value: float | None = None @@ -143,6 +139,14 @@ def is_dtype(dtype: npt.DTypeLike, supported_dtypes: tuple[npt.DTypeLike, ...]) Unlike :any:`numpy.isdtype`, this function supports structured data types. + # Some of these doctests use types introduced in NumPy 2.0 (np.long and np.ulong) or highlight + # formatting differences between NumPy 1.x and 2.x (e.g. dtype=int32, 1.23 vs. np.float64(1.23)). + # We use inline version checks instead of __doctest_requires__ due to a pytest-doctestplus 1.6.0 + # bug that doesn't properly parse version requirements like "numpy>=2.0". + # This check may exist in multiple places in the code. If you are making changes, you probably need them in every location. + # TODO: Remove these version checks when NumPy < 2.0 compatibility is no longer required. + >>> import numpy as np; import pytest + >>> if tuple(map(int, np.__version__.split('.')[:2])) < (2, 0): pytest.skip("requires numpy>=2.0") >>> is_dtype(np.float64, (np.float64, np.intc, np.long,)) True >>> is_dtype("float64", (np.float64, np.intc, np.long,)) @@ -172,6 +176,14 @@ def is_dtype(dtype: npt.DTypeLike, supported_dtypes: tuple[npt.DTypeLike, ...]) def validate_dtype(dtype: npt.DTypeLike, supported_dtypes: tuple[npt.DTypeLike, ...]) -> None: """Validate a dtype-like object against a tuple of supported dtype-like objects. + # Some of these doctests use types introduced in NumPy 2.0 (np.long and np.ulong) or highlight + # formatting differences between NumPy 1.x and 2.x (e.g. dtype=int32, 1.23 vs. np.float64(1.23)). + # We use inline version checks instead of __doctest_requires__ due to a pytest-doctestplus 1.6.0 + # bug that doesn't properly parse version requirements like "numpy>=2.0". + # This check may exist in multiple places in the code. If you are making changes, you probably need them in every location. + # TODO: Remove these version checks when NumPy < 2.0 compatibility is no longer required. + >>> import numpy as np; import pytest + >>> if tuple(map(int, np.__version__.split('.')[:2])) < (2, 0): pytest.skip("requires numpy>=2.0") >>> validate_dtype(np.float64, (np.float64, np.intc, np.long,)) >>> validate_dtype("float64", (np.float64, np.intc, np.long,)) >>> validate_dtype(np.float64, (np.byte, np.short, np.intc, np.int_, np.long, np.longlong)) diff --git a/src/nitypes/complex/__init__.py b/src/nitypes/complex/__init__.py index 00087c99..97faa673 100644 --- a/src/nitypes/complex/__init__.py +++ b/src/nitypes/complex/__init__.py @@ -27,7 +27,14 @@ You can construct an array of complex integers from a sequence of tuples using :func:`numpy.array`: ->>> import numpy as np +# Some of these doctests use types introduced in NumPy 2.0 (np.long and np.ulong) or highlight +# formatting differences between NumPy 1.x and 2.x (e.g. dtype=int32, 1.23 vs. np.float64(1.23)). +# We use inline version checks instead of __doctest_requires__ due to a pytest-doctestplus 1.6.0 +# bug that doesn't properly parse version requirements like "numpy>=2.0". +# This check may exist in multiple places in the code. If you are making changes, you probably need them in every location. +# TODO: Remove these version checks when NumPy < 2.0 compatibility is no longer required. +>>> import numpy as np; import pytest +>>> if tuple(map(int, np.__version__.split('.')[:2])) < (2, 0): pytest.skip("requires numpy>=2.0") >>> np.array([(1, 2), (3, 4)], dtype=ComplexInt32DType) array([(1, 2), (3, 4)], dtype=[('real', '=2.0"]} From 1867554c55a146ef5b34dc7474a03331aedc8f72 Mon Sep 17 00:00:00 2001 From: Kosta Ilic Date: Wed, 7 Jan 2026 06:39:44 -0600 Subject: [PATCH 7/9] Fix line length linting errors (W505) Break long comment lines to stay within 100 character limit while preserving meaning and readability. --- src/nitypes/_arguments.py | 6 ++++-- src/nitypes/complex/__init__.py | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/nitypes/_arguments.py b/src/nitypes/_arguments.py index d5cb1314..75836e51 100644 --- a/src/nitypes/_arguments.py +++ b/src/nitypes/_arguments.py @@ -143,7 +143,8 @@ def is_dtype(dtype: npt.DTypeLike, supported_dtypes: tuple[npt.DTypeLike, ...]) # formatting differences between NumPy 1.x and 2.x (e.g. dtype=int32, 1.23 vs. np.float64(1.23)). # We use inline version checks instead of __doctest_requires__ due to a pytest-doctestplus 1.6.0 # bug that doesn't properly parse version requirements like "numpy>=2.0". - # This check may exist in multiple places in the code. If you are making changes, you probably need them in every location. + # This check may exist in multiple places in the code. If you are making changes, you + # probably need them in every location. # TODO: Remove these version checks when NumPy < 2.0 compatibility is no longer required. >>> import numpy as np; import pytest >>> if tuple(map(int, np.__version__.split('.')[:2])) < (2, 0): pytest.skip("requires numpy>=2.0") @@ -180,7 +181,8 @@ def validate_dtype(dtype: npt.DTypeLike, supported_dtypes: tuple[npt.DTypeLike, # formatting differences between NumPy 1.x and 2.x (e.g. dtype=int32, 1.23 vs. np.float64(1.23)). # We use inline version checks instead of __doctest_requires__ due to a pytest-doctestplus 1.6.0 # bug that doesn't properly parse version requirements like "numpy>=2.0". - # This check may exist in multiple places in the code. If you are making changes, you probably need them in every location. + # This check may exist in multiple places in the code. If you are making changes, you + # probably need them in every location. # TODO: Remove these version checks when NumPy < 2.0 compatibility is no longer required. >>> import numpy as np; import pytest >>> if tuple(map(int, np.__version__.split('.')[:2])) < (2, 0): pytest.skip("requires numpy>=2.0") diff --git a/src/nitypes/complex/__init__.py b/src/nitypes/complex/__init__.py index 97faa673..936ac385 100644 --- a/src/nitypes/complex/__init__.py +++ b/src/nitypes/complex/__init__.py @@ -31,7 +31,8 @@ # formatting differences between NumPy 1.x and 2.x (e.g. dtype=int32, 1.23 vs. np.float64(1.23)). # We use inline version checks instead of __doctest_requires__ due to a pytest-doctestplus 1.6.0 # bug that doesn't properly parse version requirements like "numpy>=2.0". -# This check may exist in multiple places in the code. If you are making changes, you probably need them in every location. +# This check may exist in multiple places in the code. If you are making changes, you +# probably need them in every location. # TODO: Remove these version checks when NumPy < 2.0 compatibility is no longer required. >>> import numpy as np; import pytest >>> if tuple(map(int, np.__version__.split('.')[:2])) < (2, 0): pytest.skip("requires numpy>=2.0") From 86ff250b3d8f22300b04a7bb927fc61d0f77cee3 Mon Sep 17 00:00:00 2001 From: Kosta Ilic Date: Wed, 7 Jan 2026 06:44:19 -0600 Subject: [PATCH 8/9] Fix remaining W505 linting errors - Break long comment lines about formatting differences into multiple lines - Split long pytest.skip lines using intermediate variable - Fix doctest syntax errors from line continuation All lines now under 100 character limit while maintaining functionality --- src/nitypes/_arguments.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/nitypes/_arguments.py b/src/nitypes/_arguments.py index 75836e51..aa5bd138 100644 --- a/src/nitypes/_arguments.py +++ b/src/nitypes/_arguments.py @@ -140,14 +140,16 @@ def is_dtype(dtype: npt.DTypeLike, supported_dtypes: tuple[npt.DTypeLike, ...]) Unlike :any:`numpy.isdtype`, this function supports structured data types. # Some of these doctests use types introduced in NumPy 2.0 (np.long and np.ulong) or highlight - # formatting differences between NumPy 1.x and 2.x (e.g. dtype=int32, 1.23 vs. np.float64(1.23)). + # formatting differences between NumPy 1.x and 2.x (e.g. dtype=int32, 1.23 vs. + # np.float64(1.23)). # We use inline version checks instead of __doctest_requires__ due to a pytest-doctestplus 1.6.0 # bug that doesn't properly parse version requirements like "numpy>=2.0". # This check may exist in multiple places in the code. If you are making changes, you # probably need them in every location. # TODO: Remove these version checks when NumPy < 2.0 compatibility is no longer required. >>> import numpy as np; import pytest - >>> if tuple(map(int, np.__version__.split('.')[:2])) < (2, 0): pytest.skip("requires numpy>=2.0") + >>> version_tuple = tuple(map(int, np.__version__.split('.')[:2])) + >>> if version_tuple < (2, 0): pytest.skip("requires numpy>=2.0") >>> is_dtype(np.float64, (np.float64, np.intc, np.long,)) True >>> is_dtype("float64", (np.float64, np.intc, np.long,)) @@ -178,14 +180,16 @@ def validate_dtype(dtype: npt.DTypeLike, supported_dtypes: tuple[npt.DTypeLike, """Validate a dtype-like object against a tuple of supported dtype-like objects. # Some of these doctests use types introduced in NumPy 2.0 (np.long and np.ulong) or highlight - # formatting differences between NumPy 1.x and 2.x (e.g. dtype=int32, 1.23 vs. np.float64(1.23)). + # formatting differences between NumPy 1.x and 2.x (e.g. dtype=int32, 1.23 vs. + # np.float64(1.23)). # We use inline version checks instead of __doctest_requires__ due to a pytest-doctestplus 1.6.0 # bug that doesn't properly parse version requirements like "numpy>=2.0". # This check may exist in multiple places in the code. If you are making changes, you # probably need them in every location. # TODO: Remove these version checks when NumPy < 2.0 compatibility is no longer required. >>> import numpy as np; import pytest - >>> if tuple(map(int, np.__version__.split('.')[:2])) < (2, 0): pytest.skip("requires numpy>=2.0") + >>> version_tuple = tuple(map(int, np.__version__.split('.')[:2])) + >>> if version_tuple < (2, 0): pytest.skip("requires numpy>=2.0") >>> validate_dtype(np.float64, (np.float64, np.intc, np.long,)) >>> validate_dtype("float64", (np.float64, np.intc, np.long,)) >>> validate_dtype(np.float64, (np.byte, np.short, np.intc, np.int_, np.long, np.longlong)) From 47125f308577ed10bd72d7ea67651e469054780a Mon Sep 17 00:00:00 2001 From: Kosta Ilic Date: Wed, 7 Jan 2026 06:48:42 -0600 Subject: [PATCH 9/9] Fix black formatting (BLK100) Applied black formatting to resolve BLK100 styleguide issue in complex module. Signed-off-by: Kosta Ilic --- src/nitypes/complex/__init__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/nitypes/complex/__init__.py b/src/nitypes/complex/__init__.py index 936ac385..f9234dcc 100644 --- a/src/nitypes/complex/__init__.py +++ b/src/nitypes/complex/__init__.py @@ -135,4 +135,3 @@ from nitypes.complex._dtypes import ComplexInt32Base, ComplexInt32DType __all__ = ["convert_complex", "ComplexInt32DType", "ComplexInt32Base"] -