diff --git a/poetry.lock b/poetry.lock index ef29ae00..8d39d22b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1509,13 +1509,13 @@ files = [ [[package]] name = "typing-extensions" -version = "4.13.1" +version = "4.13.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.13.1-py3-none-any.whl", hash = "sha256:4b6cf02909eb5495cfbc3f6e8fd49217e6cc7944e145cdda8caa3734777f9e69"}, - {file = "typing_extensions-4.13.1.tar.gz", hash = "sha256:98795af00fb9640edec5b8e31fc647597b4691f099ad75f469a2616be1a76dff"}, + {file = "typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c"}, + {file = "typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef"}, ] [[package]] @@ -1538,4 +1538,4 @@ zstd = ["zstandard (>=0.18.0)"] [metadata] lock-version = "2.0" python-versions = "^3.9" -content-hash = "185016cfabf31a4bff914b2efc10be4a53f2d9507ea364f7ee8e0f0936c6302c" +content-hash = "b79abfa57894303381b413b8b6a12154b7fcb6bc80948e667306b460ceb92d0a" diff --git a/pyproject.toml b/pyproject.toml index edb8125e..d12741a4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,6 +15,7 @@ numpy = [ { version = ">=2.1", python = "^3.13" }, ] hightime = "^0.2.2" +typing-extensions = ">=4.13.2" [tool.poetry.group.lint.dependencies] bandit = { version = ">=1.7", extras = ["toml"] } diff --git a/src/nitypes/_typing.py b/src/nitypes/_typing.py deleted file mode 100644 index db8a8759..00000000 --- a/src/nitypes/_typing.py +++ /dev/null @@ -1,41 +0,0 @@ -"""Single source for typing backports to avoid depending on typing_extensions at run time.""" - -from __future__ import annotations - -import sys -from typing import TYPE_CHECKING - -if sys.version_info >= (3, 10): - from typing import TypeAlias -elif TYPE_CHECKING: - from typing_extensions import TypeAlias -else: - TypeAlias = None - -if sys.version_info >= (3, 11): - from typing import Self, assert_type -elif TYPE_CHECKING: - from typing_extensions import Self, assert_type -else: - Self = None - - def assert_type(val, typ, /): # noqa: D103 - Missing docstring in public function - pass - - -if sys.version_info >= (3, 12): - from typing import override -elif TYPE_CHECKING: - from typing_extensions import override -else: - - def override(arg, /): # noqa: D103 - Missing docstring in public function - return arg - - -__all__ = [ - "assert_type", - "override", - "Self", - "TypeAlias", -] diff --git a/src/nitypes/time/_conversion.py b/src/nitypes/time/_conversion.py index a850c5c9..dd68d2e9 100644 --- a/src/nitypes/time/_conversion.py +++ b/src/nitypes/time/_conversion.py @@ -6,9 +6,9 @@ from typing import Any, TypeVar, Union, cast import hightime as ht +from typing_extensions import TypeAlias from nitypes._exceptions import invalid_arg_type, invalid_requested_type -from nitypes._typing import TypeAlias _AnyDateTime: TypeAlias = Union[dt.datetime, ht.datetime] _TDateTime = TypeVar("_TDateTime", dt.datetime, ht.datetime) diff --git a/src/nitypes/waveform/_analog_waveform.py b/src/nitypes/waveform/_analog_waveform.py index b8f825b4..aa0dc5f1 100644 --- a/src/nitypes/waveform/_analog_waveform.py +++ b/src/nitypes/waveform/_analog_waveform.py @@ -9,10 +9,10 @@ import hightime as ht import numpy as np import numpy.typing as npt +from typing_extensions import Self, TypeAlias from nitypes._arguments import arg_to_uint, validate_dtype, validate_unsupported_arg from nitypes._exceptions import invalid_arg_type, invalid_array_ndim -from nitypes._typing import Self, TypeAlias from nitypes.waveform._exceptions import ( input_array_data_type_mismatch, input_waveform_data_type_mismatch, diff --git a/src/nitypes/waveform/_extended_properties.py b/src/nitypes/waveform/_extended_properties.py index f5247aa6..162013e7 100644 --- a/src/nitypes/waveform/_extended_properties.py +++ b/src/nitypes/waveform/_extended_properties.py @@ -4,7 +4,7 @@ from collections.abc import Mapping from typing import Iterator, MutableMapping, Union -from nitypes._typing import TypeAlias +from typing_extensions import TypeAlias # Extended property keys CHANNEL_NAME = "NI_ChannelName" diff --git a/src/nitypes/waveform/_timing/_base.py b/src/nitypes/waveform/_timing/_base.py index cea359dc..f5a590be 100644 --- a/src/nitypes/waveform/_timing/_base.py +++ b/src/nitypes/waveform/_timing/_base.py @@ -6,8 +6,9 @@ from collections.abc import Iterable, Sequence from typing import Any, Generic, SupportsIndex, TypeVar +from typing_extensions import Self + from nitypes._exceptions import add_note -from nitypes._typing import Self from nitypes.waveform._timing._sample_interval import ( SampleIntervalMode, SampleIntervalStrategy, diff --git a/src/nitypes/waveform/_timing/_conversion.py b/src/nitypes/waveform/_timing/_conversion.py index 8debd2e7..f934dbe3 100644 --- a/src/nitypes/waveform/_timing/_conversion.py +++ b/src/nitypes/waveform/_timing/_conversion.py @@ -6,15 +6,14 @@ from typing import Any, TypeVar, Union, cast import hightime as ht +from typing_extensions import TypeAlias from nitypes._exceptions import invalid_arg_type, invalid_requested_type -from nitypes._typing import TypeAlias from nitypes.time._conversion import convert_datetime, convert_timedelta from nitypes.waveform._timing._base import BaseTiming from nitypes.waveform._timing._precision import PrecisionTiming from nitypes.waveform._timing._standard import Timing - _AnyTiming: TypeAlias = Union[BaseTiming[Any, Any], Timing, PrecisionTiming] _TTiming = TypeVar("_TTiming", bound=BaseTiming[Any, Any]) diff --git a/src/nitypes/waveform/_timing/_precision.py b/src/nitypes/waveform/_timing/_precision.py index c77effcd..c3e8a256 100644 --- a/src/nitypes/waveform/_timing/_precision.py +++ b/src/nitypes/waveform/_timing/_precision.py @@ -4,8 +4,8 @@ from typing import ClassVar import hightime as ht +from typing_extensions import override -from nitypes._typing import override from nitypes.waveform._timing._base import BaseTiming from nitypes.waveform._timing._sample_interval import SampleIntervalMode diff --git a/src/nitypes/waveform/_timing/_standard.py b/src/nitypes/waveform/_timing/_standard.py index c9d1e88a..51bbee99 100644 --- a/src/nitypes/waveform/_timing/_standard.py +++ b/src/nitypes/waveform/_timing/_standard.py @@ -4,7 +4,8 @@ from collections.abc import Sequence from typing import ClassVar -from nitypes._typing import override +from typing_extensions import override + from nitypes.waveform._timing._base import BaseTiming from nitypes.waveform._timing._sample_interval import SampleIntervalMode diff --git a/tests/unit/time/test_conversion.py b/tests/unit/time/test_conversion.py index b8e91234..809fcb05 100644 --- a/tests/unit/time/test_conversion.py +++ b/tests/unit/time/test_conversion.py @@ -5,8 +5,8 @@ import hightime as ht import pytest +from typing_extensions import assert_type -from nitypes._typing import assert_type from nitypes.time import convert_datetime, convert_timedelta diff --git a/tests/unit/waveform/_scaling/test_linear.py b/tests/unit/waveform/_scaling/test_linear.py index 29068e78..06a1dd71 100644 --- a/tests/unit/waveform/_scaling/test_linear.py +++ b/tests/unit/waveform/_scaling/test_linear.py @@ -7,8 +7,8 @@ import numpy as np import numpy.typing as npt import pytest +from typing_extensions import assert_type -from nitypes._typing import assert_type from nitypes.waveform import NO_SCALING, LinearScaleMode, ScaleMode diff --git a/tests/unit/waveform/_scaling/test_none.py b/tests/unit/waveform/_scaling/test_none.py index 69e6206a..62e71c21 100644 --- a/tests/unit/waveform/_scaling/test_none.py +++ b/tests/unit/waveform/_scaling/test_none.py @@ -5,8 +5,8 @@ import numpy as np import numpy.typing as npt +from typing_extensions import assert_type -from nitypes._typing import assert_type from nitypes.waveform import NO_SCALING, NoneScaleMode diff --git a/tests/unit/waveform/_timing/test_conversion.py b/tests/unit/waveform/_timing/test_conversion.py index f6754c9b..0eb18268 100644 --- a/tests/unit/waveform/_timing/test_conversion.py +++ b/tests/unit/waveform/_timing/test_conversion.py @@ -3,8 +3,8 @@ import datetime as dt import hightime as ht +from typing_extensions import assert_type -from nitypes._typing import assert_type from nitypes.waveform import PrecisionTiming, SampleIntervalMode, Timing from nitypes.waveform._timing import convert_timing diff --git a/tests/unit/waveform/_timing/test_precision.py b/tests/unit/waveform/_timing/test_precision.py index 27ac5364..252a25b5 100644 --- a/tests/unit/waveform/_timing/test_precision.py +++ b/tests/unit/waveform/_timing/test_precision.py @@ -6,8 +6,8 @@ import hightime as ht import pytest +from typing_extensions import assert_type -from nitypes._typing import assert_type from nitypes.waveform import PrecisionTiming, SampleIntervalMode from tests.unit.waveform._timing._utils import assert_deep_copy, assert_shallow_copy diff --git a/tests/unit/waveform/_timing/test_standard.py b/tests/unit/waveform/_timing/test_standard.py index b4366d2b..676564aa 100644 --- a/tests/unit/waveform/_timing/test_standard.py +++ b/tests/unit/waveform/_timing/test_standard.py @@ -5,8 +5,8 @@ import pickle import pytest +from typing_extensions import assert_type -from nitypes._typing import assert_type from nitypes.waveform import SampleIntervalMode, Timing from tests.unit.waveform._timing._utils import assert_deep_copy, assert_shallow_copy diff --git a/tests/unit/waveform/test_analog_waveform.py b/tests/unit/waveform/test_analog_waveform.py index 0a1a67ad..988698a7 100644 --- a/tests/unit/waveform/test_analog_waveform.py +++ b/tests/unit/waveform/test_analog_waveform.py @@ -12,8 +12,8 @@ import numpy as np import numpy.typing as npt import pytest +from typing_extensions import assert_type -from nitypes._typing import assert_type from nitypes.waveform import ( NO_SCALING, AnalogWaveform,