diff --git a/generated/nidaqmx/_time.py b/generated/nidaqmx/_time.py index 0acdf7f12..e2cd4989a 100644 --- a/generated/nidaqmx/_time.py +++ b/generated/nidaqmx/_time.py @@ -1,6 +1,6 @@ from __future__ import annotations -from datetime import datetime as std_datetime, timezone, tzinfo as dt_tzinfo +from datetime import timezone, tzinfo as dt_tzinfo from zoneinfo import ZoneInfo from hightime import datetime as ht_datetime @@ -9,8 +9,8 @@ # theoretically the same as astimezone(), but with support for dates before 1970 def _convert_to_desired_timezone( - expected_time_utc: std_datetime | ht_datetime, tzinfo: dt_tzinfo | None = None -) -> std_datetime | ht_datetime: + expected_time_utc: ht_datetime, tzinfo: dt_tzinfo | None = None +) -> ht_datetime: # if timezone matches, no need to do conversion if expected_time_utc.tzinfo is tzinfo: return expected_time_utc @@ -23,12 +23,13 @@ def _convert_to_desired_timezone( if isinstance(tzinfo, ZoneInfo): localized_time = expected_time_utc.replace(tzinfo=tzinfo) desired_expected_time = tzinfo.fromutc(localized_time) - return desired_expected_time + return desired_expected_time # type: ignore[return-value] # https://github.com/ni/nidaqmx-python/issues/860 # if the tzinfo passed in is a timedelta function, then we don't need to consider daylight savings # noqa: W505 - doc line too long (102 > 100 characters) (auto-generated noqa) elif tzinfo.utcoffset(None) is not None: current_time_utc = ht_datetime.now(timezone.utc) desired_timezone_offset = current_time_utc.astimezone(tz=tzinfo).utcoffset() + assert desired_timezone_offset is not None desired_expected_time = expected_time_utc + desired_timezone_offset new_datetime = desired_expected_time.replace(tzinfo=tzinfo) return new_datetime diff --git a/poetry.lock b/poetry.lock index 1a0945480..2d4994f71 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1197,13 +1197,14 @@ setuptools = "*" [[package]] name = "hightime" -version = "0.2.2" +version = "1.0.0" description = "Hightime Python API" optional = false -python-versions = "*" +python-versions = "<4.0,>=3.9" groups = ["main"] files = [ - {file = "hightime-0.2.2-py3-none-any.whl", hash = "sha256:5109a449bb3a75dbf305147777de71634c91b943d47cfbee18ed2f34a8307e0b"}, + {file = "hightime-1.0.0-py3-none-any.whl", hash = "sha256:ba86d42976c36451b14e11c736e61f296f9f00dbb79c8488e18d70c6b2dbb395"}, + {file = "hightime-1.0.0.tar.gz", hash = "sha256:480d2a03e2c3ed44916d2406d40ab6d10a276ed7f101619fc3fcc1e00c46aacf"}, ] [[package]] @@ -1953,14 +1954,14 @@ toml = ">=0.10.1" [[package]] name = "nitypes" -version = "0.1.0.dev10" +version = "1.1.0.dev0" description = "Data types for NI Python APIs" optional = false python-versions = "<4.0,>=3.9" groups = ["main"] files = [ - {file = "nitypes-0.1.0.dev10-py3-none-any.whl", hash = "sha256:c4f097ffdeaf05697a7752a1e2b712760b28e84a4f6f446b4b7b76b349927490"}, - {file = "nitypes-0.1.0.dev10.tar.gz", hash = "sha256:e319ebbdefca63db8e879b9f119cc4f76a086c550931dea2be0e33e9c10e9d9f"}, + {file = "nitypes-1.1.0.dev0-py3-none-any.whl", hash = "sha256:1dd0d15bb741294672ea7d61d98e951c5802eec0130d0162f4f19008dd74c0f6"}, + {file = "nitypes-1.1.0.dev0.tar.gz", hash = "sha256:a82d2f518f514a24bfb3b9c4e023db23097a786ca40155693610d09578d86f10"}, ] [package.dependencies] @@ -1969,6 +1970,7 @@ numpy = [ {version = ">=1.22", markers = "python_version >= \"3.9\" and python_version < \"3.13\""}, {version = ">=2.1", markers = "python_version >= \"3.13\" and python_version < \"4.0\""}, ] +typing-extensions = ">=4.13.2" [[package]] name = "nptdms" diff --git a/pyproject.toml b/pyproject.toml index c391735ab..9ee562eac 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -169,7 +169,6 @@ build-backend = "poetry.core.masonry.api" files = "generated/,tests/" check_untyped_defs = true namespace_packages = true -plugins = "numpy.typing.mypy_plugin" warn_redundant_casts = true warn_unreachable = true warn_unused_configs = true @@ -182,8 +181,6 @@ module = [ # https://github.com/briancurtin/deprecation/issues/56 - Add type information (PEP 561) "deprecation.*", "grpc.experimental.*", - # https://github.com/ni/hightime/issues/4 - Add type annotations - "hightime.*", "importlib_metadata", "mako.*", "nidaqmx.*", diff --git a/src/handwritten/_time.py b/src/handwritten/_time.py index 0acdf7f12..e2cd4989a 100644 --- a/src/handwritten/_time.py +++ b/src/handwritten/_time.py @@ -1,6 +1,6 @@ from __future__ import annotations -from datetime import datetime as std_datetime, timezone, tzinfo as dt_tzinfo +from datetime import timezone, tzinfo as dt_tzinfo from zoneinfo import ZoneInfo from hightime import datetime as ht_datetime @@ -9,8 +9,8 @@ # theoretically the same as astimezone(), but with support for dates before 1970 def _convert_to_desired_timezone( - expected_time_utc: std_datetime | ht_datetime, tzinfo: dt_tzinfo | None = None -) -> std_datetime | ht_datetime: + expected_time_utc: ht_datetime, tzinfo: dt_tzinfo | None = None +) -> ht_datetime: # if timezone matches, no need to do conversion if expected_time_utc.tzinfo is tzinfo: return expected_time_utc @@ -23,12 +23,13 @@ def _convert_to_desired_timezone( if isinstance(tzinfo, ZoneInfo): localized_time = expected_time_utc.replace(tzinfo=tzinfo) desired_expected_time = tzinfo.fromutc(localized_time) - return desired_expected_time + return desired_expected_time # type: ignore[return-value] # https://github.com/ni/nidaqmx-python/issues/860 # if the tzinfo passed in is a timedelta function, then we don't need to consider daylight savings # noqa: W505 - doc line too long (102 > 100 characters) (auto-generated noqa) elif tzinfo.utcoffset(None) is not None: current_time_utc = ht_datetime.now(timezone.utc) desired_timezone_offset = current_time_utc.astimezone(tz=tzinfo).utcoffset() + assert desired_timezone_offset is not None desired_expected_time = expected_time_utc + desired_timezone_offset new_datetime = desired_expected_time.replace(tzinfo=tzinfo) return new_datetime diff --git a/tests/component/_utils.py b/tests/component/_utils.py index 4814b7e86..56ed8d15f 100644 --- a/tests/component/_utils.py +++ b/tests/component/_utils.py @@ -5,9 +5,10 @@ from datetime import timezone from hightime import datetime as ht_datetime +from nitypes.time.typing import AnyDateTime -def _is_timestamp_close_to_now(timestamp: ht_datetime, tolerance_seconds: float = 1.0) -> bool: +def _is_timestamp_close_to_now(timestamp: AnyDateTime, tolerance_seconds: float = 1.0) -> bool: current_time = ht_datetime.now(timezone.utc) time_diff = abs((timestamp - current_time).total_seconds()) return time_diff <= tolerance_seconds