Merge pull request #64 from boswelja/typing-extensions
Introduce typing-extensions for proper TypedDict support on Python 3.7
This commit is contained in:
commit
24b8f95792
4 changed files with 10 additions and 15 deletions
|
@ -11,7 +11,8 @@ pip3 install \
|
||||||
certifi==2020.12.5 chardet==4.0.0 idna==2.10 urllib3==1.26.4 \
|
certifi==2020.12.5 chardet==4.0.0 idna==2.10 urllib3==1.26.4 \
|
||||||
six==1.15.0 msgpack==1.0.2 \
|
six==1.15.0 msgpack==1.0.2 \
|
||||||
influxdb_client==1.24.0 rx==3.2.0 \
|
influxdb_client==1.24.0 rx==3.2.0 \
|
||||||
yagrc==1.1.1 grpcio-reflection==1.36.1 protobuf==3.15.6
|
yagrc==1.1.1 grpcio-reflection==1.36.1 protobuf==3.15.6 \
|
||||||
|
typing-extensions==4.3.0
|
||||||
|
|
||||||
ADD . /app
|
ADD . /app
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
|
@ -19,6 +19,7 @@ install_requires =
|
||||||
grpcio>=1.12.0
|
grpcio>=1.12.0
|
||||||
protobuf>=3.6.0
|
protobuf>=3.6.0
|
||||||
yagrc>=1.1.1
|
yagrc>=1.1.1
|
||||||
|
typing-extensions>=4.3.0
|
||||||
package_dir =
|
package_dir =
|
||||||
=..
|
=..
|
||||||
py_modules =
|
py_modules =
|
||||||
|
|
|
@ -6,3 +6,4 @@ paho-mqtt>=1.5.1
|
||||||
influxdb>=5.3.1
|
influxdb>=5.3.1
|
||||||
influxdb_client>=1.23.0
|
influxdb_client>=1.23.0
|
||||||
pypng>=0.0.20
|
pypng>=0.0.20
|
||||||
|
typing-extensions>=4.3.0
|
|
@ -362,18 +362,8 @@ period.
|
||||||
from itertools import chain
|
from itertools import chain
|
||||||
import math
|
import math
|
||||||
import statistics
|
import statistics
|
||||||
from typing import Any, Dict, Iterable, List, Optional, Sequence, Tuple, get_type_hints
|
from typing import Dict, Iterable, List, Optional, Sequence, Tuple, get_type_hints
|
||||||
try:
|
from typing_extensions import TypedDict, get_args
|
||||||
from typing import TypedDict, get_args
|
|
||||||
except ImportError:
|
|
||||||
# Python 3.7 does not have TypedDict, so fake it so the run time still
|
|
||||||
# works, even though static type checker probably will not.
|
|
||||||
def TypedDict(name, types): # pylint: disable=invalid-name
|
|
||||||
return type(name, (dict,), {"__annotations__": types})
|
|
||||||
|
|
||||||
def get_args(tp: Any) -> Tuple[Any, ...]:
|
|
||||||
return tp.__args__
|
|
||||||
|
|
||||||
|
|
||||||
import grpc
|
import grpc
|
||||||
|
|
||||||
|
@ -549,7 +539,9 @@ class GrpcError(Exception):
|
||||||
|
|
||||||
|
|
||||||
class UnwrappedHistory:
|
class UnwrappedHistory:
|
||||||
"""Empty class for holding a copy of grpc history data."""
|
"""Class for holding a copy of grpc history data."""
|
||||||
|
|
||||||
|
unwrapped: bool
|
||||||
|
|
||||||
|
|
||||||
class ChannelContext:
|
class ChannelContext:
|
||||||
|
@ -1031,7 +1023,7 @@ def concatenate_history(history1, history2, samples1: int = -1, start1: Optional
|
||||||
print("WARNING: Appending discontiguous samples. Polling interval probably too short.")
|
print("WARNING: Appending discontiguous samples. Polling interval probably too short.")
|
||||||
new_samples = size2
|
new_samples = size2
|
||||||
|
|
||||||
unwrapped: Any = UnwrappedHistory()
|
unwrapped = UnwrappedHistory()
|
||||||
for field in HISTORY_FIELDS:
|
for field in HISTORY_FIELDS:
|
||||||
setattr(unwrapped, field, [])
|
setattr(unwrapped, field, [])
|
||||||
unwrapped.unwrapped = True
|
unwrapped.unwrapped = True
|
||||||
|
|
Loading…
Reference in a new issue