Skip to content

Commit 837fef9

Browse files
authored
chore: replace deprecated typing aliases (#537)
replace deprecated typing aliases Signed-off-by: gruebel <[email protected]>
1 parent de37144 commit 837fef9

File tree

13 files changed

+104
-96
lines changed

13 files changed

+104
-96
lines changed

openfeature/_event_support.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from __future__ import annotations
22

33
import threading
4+
import typing
45
from collections import defaultdict
5-
from typing import TYPE_CHECKING
66

77
from openfeature.event import (
88
EventDetails,
@@ -12,7 +12,7 @@
1212
)
1313
from openfeature.provider import FeatureProvider, ProviderStatus
1414

15-
if TYPE_CHECKING:
15+
if typing.TYPE_CHECKING:
1616
from openfeature.client import OpenFeatureClient
1717

1818

openfeature/client.py

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import logging
22
import typing
3-
from collections.abc import Awaitable, Sequence
3+
from collections.abc import Awaitable, Mapping, Sequence
44
from dataclasses import dataclass
55
from itertools import chain
66

@@ -345,11 +345,11 @@ def get_object_value(
345345
self,
346346
flag_key: str,
347347
default_value: typing.Union[
348-
Sequence[FlagValueType], typing.Mapping[str, FlagValueType]
348+
Sequence[FlagValueType], Mapping[str, FlagValueType]
349349
],
350350
evaluation_context: typing.Optional[EvaluationContext] = None,
351351
flag_evaluation_options: typing.Optional[FlagEvaluationOptions] = None,
352-
) -> typing.Union[Sequence[FlagValueType], typing.Mapping[str, FlagValueType]]:
352+
) -> typing.Union[Sequence[FlagValueType], Mapping[str, FlagValueType]]:
353353
return self.get_object_details(
354354
flag_key,
355355
default_value,
@@ -361,11 +361,11 @@ async def get_object_value_async(
361361
self,
362362
flag_key: str,
363363
default_value: typing.Union[
364-
Sequence[FlagValueType], typing.Mapping[str, FlagValueType]
364+
Sequence[FlagValueType], Mapping[str, FlagValueType]
365365
],
366366
evaluation_context: typing.Optional[EvaluationContext] = None,
367367
flag_evaluation_options: typing.Optional[FlagEvaluationOptions] = None,
368-
) -> typing.Union[Sequence[FlagValueType], typing.Mapping[str, FlagValueType]]:
368+
) -> typing.Union[Sequence[FlagValueType], Mapping[str, FlagValueType]]:
369369
details = await self.get_object_details_async(
370370
flag_key,
371371
default_value,
@@ -378,12 +378,12 @@ def get_object_details(
378378
self,
379379
flag_key: str,
380380
default_value: typing.Union[
381-
Sequence[FlagValueType], typing.Mapping[str, FlagValueType]
381+
Sequence[FlagValueType], Mapping[str, FlagValueType]
382382
],
383383
evaluation_context: typing.Optional[EvaluationContext] = None,
384384
flag_evaluation_options: typing.Optional[FlagEvaluationOptions] = None,
385385
) -> FlagEvaluationDetails[
386-
typing.Union[Sequence[FlagValueType], typing.Mapping[str, FlagValueType]]
386+
typing.Union[Sequence[FlagValueType], Mapping[str, FlagValueType]]
387387
]:
388388
return self.evaluate_flag_details(
389389
FlagType.OBJECT,
@@ -397,12 +397,12 @@ async def get_object_details_async(
397397
self,
398398
flag_key: str,
399399
default_value: typing.Union[
400-
Sequence[FlagValueType], typing.Mapping[str, FlagValueType]
400+
Sequence[FlagValueType], Mapping[str, FlagValueType]
401401
],
402402
evaluation_context: typing.Optional[EvaluationContext] = None,
403403
flag_evaluation_options: typing.Optional[FlagEvaluationOptions] = None,
404404
) -> FlagEvaluationDetails[
405-
typing.Union[Sequence[FlagValueType], typing.Mapping[str, FlagValueType]]
405+
typing.Union[Sequence[FlagValueType], Mapping[str, FlagValueType]]
406406
]:
407407
return await self.evaluate_flag_details_async(
408408
FlagType.OBJECT,
@@ -472,7 +472,7 @@ def _establish_hooks_and_provider(
472472
)
473473
]
474474
# after, error, finally: Provider, Invocation, Client, API
475-
reversed_merged_hooks_and_context = merged_hooks_and_context[:]
475+
reversed_merged_hooks_and_context = merged_hooks_and_context.copy()
476476
reversed_merged_hooks_and_context.reverse()
477477

478478
return (
@@ -567,10 +567,10 @@ async def evaluate_flag_details_async(
567567
self,
568568
flag_type: FlagType,
569569
flag_key: str,
570-
default_value: typing.Mapping[str, "FlagValueType"],
570+
default_value: Mapping[str, "FlagValueType"],
571571
evaluation_context: typing.Optional[EvaluationContext] = None,
572572
flag_evaluation_options: typing.Optional[FlagEvaluationOptions] = None,
573-
) -> FlagEvaluationDetails[typing.Mapping[str, "FlagValueType"]]: ...
573+
) -> FlagEvaluationDetails[Mapping[str, "FlagValueType"]]: ...
574574

575575
async def evaluate_flag_details_async(
576576
self,
@@ -743,10 +743,10 @@ def evaluate_flag_details(
743743
self,
744744
flag_type: FlagType,
745745
flag_key: str,
746-
default_value: typing.Mapping[str, "FlagValueType"],
746+
default_value: Mapping[str, "FlagValueType"],
747747
evaluation_context: typing.Optional[EvaluationContext] = None,
748748
flag_evaluation_options: typing.Optional[FlagEvaluationOptions] = None,
749-
) -> FlagEvaluationDetails[typing.Mapping[str, "FlagValueType"]]: ...
749+
) -> FlagEvaluationDetails[Mapping[str, "FlagValueType"]]: ...
750750

751751
def evaluate_flag_details(
752752
self,
@@ -874,9 +874,7 @@ async def _create_provider_evaluation_async(
874874
default_value: FlagValueType,
875875
evaluation_context: typing.Optional[EvaluationContext] = None,
876876
) -> FlagEvaluationDetails[FlagValueType]:
877-
get_details_callables_async: typing.Mapping[
878-
FlagType, ResolveDetailsCallableAsync
879-
] = {
877+
get_details_callables_async: Mapping[FlagType, ResolveDetailsCallableAsync] = {
880878
FlagType.BOOLEAN: provider.resolve_boolean_details_async,
881879
FlagType.INTEGER: provider.resolve_integer_details_async,
882880
FlagType.FLOAT: provider.resolve_float_details_async,
@@ -931,7 +929,7 @@ def _create_provider_evaluation(
931929
:return: a FlagEvaluationDetails object with the fully evaluated flag from a
932930
provider
933931
"""
934-
get_details_callables: typing.Mapping[FlagType, ResolveDetailsCallable] = {
932+
get_details_callables: Mapping[FlagType, ResolveDetailsCallable] = {
935933
FlagType.BOOLEAN: provider.resolve_boolean_details,
936934
FlagType.INTEGER: provider.resolve_integer_details,
937935
FlagType.FLOAT: provider.resolve_float_details,
@@ -986,9 +984,9 @@ def _typecheck_flag_value(
986984
FlagType.FLOAT: float,
987985
FlagType.INTEGER: int,
988986
}
989-
_type = type_map.get(flag_type)
990-
if not _type:
987+
py_type = type_map.get(flag_type)
988+
if not py_type:
991989
return GeneralError(error_message="Unknown flag type")
992-
if not isinstance(value, _type):
993-
return TypeMismatchError(f"Expected type {_type} but got {type(value)}")
990+
if not isinstance(value, py_type):
991+
return TypeMismatchError(f"Expected type {py_type} but got {type(value)}")
994992
return None

openfeature/evaluation_context/__init__.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from __future__ import annotations
22

33
import typing
4-
from collections.abc import Sequence
4+
from collections.abc import Mapping, Sequence
55
from dataclasses import dataclass, field
66
from datetime import datetime
77

@@ -17,16 +17,14 @@
1717
str,
1818
datetime,
1919
Sequence["EvaluationContextAttribute"],
20-
typing.Mapping[str, "EvaluationContextAttribute"],
20+
Mapping[str, "EvaluationContextAttribute"],
2121
]
2222

2323

2424
@dataclass
2525
class EvaluationContext:
2626
targeting_key: typing.Optional[str] = None
27-
attributes: typing.Mapping[str, EvaluationContextAttribute] = field(
28-
default_factory=dict
29-
)
27+
attributes: Mapping[str, EvaluationContextAttribute] = field(default_factory=dict)
3028

3129
def merge(self, ctx2: EvaluationContext) -> EvaluationContext:
3230
if not (self and ctx2):

openfeature/event.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
from __future__ import annotations
22

3+
import typing
4+
from collections.abc import Callable
35
from dataclasses import dataclass, field
46
from enum import Enum
5-
from typing import Callable, Optional, Union
67

78
from openfeature.exception import ErrorCode
89

@@ -18,19 +19,23 @@ class ProviderEvent(Enum):
1819

1920
@dataclass
2021
class ProviderEventDetails:
21-
flags_changed: Optional[list[str]] = None
22-
message: Optional[str] = None
23-
error_code: Optional[ErrorCode] = None
24-
metadata: dict[str, Union[bool, str, int, float]] = field(default_factory=dict)
22+
flags_changed: typing.Optional[list[str]] = None
23+
message: typing.Optional[str] = None
24+
error_code: typing.Optional[ErrorCode] = None
25+
metadata: dict[str, typing.Union[bool, str, int, float]] = field(
26+
default_factory=dict
27+
)
2528

2629

2730
@dataclass
2831
class EventDetails(ProviderEventDetails):
2932
provider_name: str = ""
30-
flags_changed: Optional[list[str]] = None
31-
message: Optional[str] = None
32-
error_code: Optional[ErrorCode] = None
33-
metadata: dict[str, Union[bool, str, int, float]] = field(default_factory=dict)
33+
flags_changed: typing.Optional[list[str]] = None
34+
message: typing.Optional[str] = None
35+
error_code: typing.Optional[ErrorCode] = None
36+
metadata: dict[str, typing.Union[bool, str, int, float]] = field(
37+
default_factory=dict
38+
)
3439

3540
@classmethod
3641
def from_provider_event_details(

openfeature/exception.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from __future__ import annotations
22

33
import typing
4-
from collections.abc import Mapping
4+
from collections.abc import Callable, Mapping
55

66
from openfeature._backports.strenum import StrEnum
77

@@ -174,7 +174,7 @@ class ErrorCode(StrEnum):
174174
INVALID_CONTEXT = "INVALID_CONTEXT"
175175
GENERAL = "GENERAL"
176176

177-
__exceptions__: Mapping[str, typing.Callable[[str], OpenFeatureError]] = {
177+
__exceptions__: Mapping[str, Callable[[str], OpenFeatureError]] = {
178178
PROVIDER_NOT_READY: ProviderNotReadyError,
179179
PROVIDER_FATAL: ProviderFatalError,
180180
FLAG_NOT_FOUND: FlagNotFoundError,

openfeature/flag_evaluation.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from __future__ import annotations
22

33
import typing
4-
from collections.abc import Sequence
4+
from collections.abc import Mapping, Sequence
55
from dataclasses import dataclass, field
66

77
from openfeature._backports.strenum import StrEnum
@@ -42,14 +42,14 @@ class Reason(StrEnum):
4242
UNKNOWN = "UNKNOWN"
4343

4444

45-
FlagMetadata = typing.Mapping[str, typing.Union[bool, int, float, str]]
45+
FlagMetadata = Mapping[str, typing.Union[bool, int, float, str]]
4646
FlagValueType = typing.Union[
4747
bool,
4848
int,
4949
float,
5050
str,
5151
Sequence["FlagValueType"],
52-
typing.Mapping[str, "FlagValueType"],
52+
Mapping[str, "FlagValueType"],
5353
]
5454

5555
T_co = typing.TypeVar("T_co", covariant=True)

openfeature/hook/__init__.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
from __future__ import annotations
22

33
import typing
4-
from collections.abc import MutableMapping, Sequence
4+
from collections.abc import Mapping, MutableMapping, Sequence
55
from datetime import datetime
66
from enum import Enum
7-
from typing import TYPE_CHECKING
87

98
from openfeature.evaluation_context import EvaluationContext
109
from openfeature.flag_evaluation import FlagEvaluationDetails, FlagType, FlagValueType
1110

12-
if TYPE_CHECKING:
11+
if typing.TYPE_CHECKING:
1312
from openfeature.client import ClientMetadata
1413
from openfeature.provider.metadata import Metadata
1514

@@ -77,10 +76,10 @@ def __setattr__(self, key: str, value: typing.Any) -> None:
7776
str,
7877
datetime,
7978
Sequence["HookHintValue"],
80-
typing.Mapping[str, "HookHintValue"],
79+
Mapping[str, "HookHintValue"],
8180
]
8281

83-
HookHints = typing.Mapping[str, HookHintValue]
82+
HookHints = Mapping[str, HookHintValue]
8483

8584

8685
class Hook:

openfeature/provider/__init__.py

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import typing
44
from abc import abstractmethod
5-
from collections.abc import Sequence
5+
from collections.abc import Callable, Mapping, Sequence
66
from enum import Enum
77

88
from openfeature.evaluation_context import EvaluationContext
@@ -29,9 +29,7 @@ class ProviderStatus(Enum):
2929
class FeatureProvider(typing.Protocol): # pragma: no cover
3030
def attach(
3131
self,
32-
on_emit: typing.Callable[
33-
[FeatureProvider, ProviderEvent, ProviderEventDetails], None
34-
],
32+
on_emit: Callable[[FeatureProvider, ProviderEvent, ProviderEventDetails], None],
3533
) -> None: ...
3634

3735
def detach(self) -> None: ...
@@ -104,22 +102,22 @@ def resolve_object_details(
104102
self,
105103
flag_key: str,
106104
default_value: typing.Union[
107-
Sequence[FlagValueType], typing.Mapping[str, FlagValueType]
105+
Sequence[FlagValueType], Mapping[str, FlagValueType]
108106
],
109107
evaluation_context: typing.Optional[EvaluationContext] = None,
110108
) -> FlagResolutionDetails[
111-
typing.Union[Sequence[FlagValueType], typing.Mapping[str, FlagValueType]]
109+
typing.Union[Sequence[FlagValueType], Mapping[str, FlagValueType]]
112110
]: ...
113111

114112
async def resolve_object_details_async(
115113
self,
116114
flag_key: str,
117115
default_value: typing.Union[
118-
Sequence[FlagValueType], typing.Mapping[str, FlagValueType]
116+
Sequence[FlagValueType], Mapping[str, FlagValueType]
119117
],
120118
evaluation_context: typing.Optional[EvaluationContext] = None,
121119
) -> FlagResolutionDetails[
122-
typing.Union[Sequence[FlagValueType], typing.Mapping[str, FlagValueType]]
120+
typing.Union[Sequence[FlagValueType], Mapping[str, FlagValueType]]
123121
]: ...
124122

125123

@@ -130,9 +128,7 @@ def __init__(self, *args: typing.Any, **kwargs: typing.Any) -> None:
130128

131129
def attach(
132130
self,
133-
on_emit: typing.Callable[
134-
[FeatureProvider, ProviderEvent, ProviderEventDetails], None
135-
],
131+
on_emit: Callable[[FeatureProvider, ProviderEvent, ProviderEventDetails], None],
136132
) -> None:
137133
self._on_emit = on_emit
138134

@@ -226,23 +222,23 @@ def resolve_object_details(
226222
self,
227223
flag_key: str,
228224
default_value: typing.Union[
229-
Sequence[FlagValueType], typing.Mapping[str, FlagValueType]
225+
Sequence[FlagValueType], Mapping[str, FlagValueType]
230226
],
231227
evaluation_context: typing.Optional[EvaluationContext] = None,
232228
) -> FlagResolutionDetails[
233-
typing.Union[Sequence[FlagValueType], typing.Mapping[str, FlagValueType]]
229+
typing.Union[Sequence[FlagValueType], Mapping[str, FlagValueType]]
234230
]:
235231
pass
236232

237233
async def resolve_object_details_async(
238234
self,
239235
flag_key: str,
240236
default_value: typing.Union[
241-
Sequence[FlagValueType], typing.Mapping[str, FlagValueType]
237+
Sequence[FlagValueType], Mapping[str, FlagValueType]
242238
],
243239
evaluation_context: typing.Optional[EvaluationContext] = None,
244240
) -> FlagResolutionDetails[
245-
typing.Union[Sequence[FlagValueType], typing.Mapping[str, FlagValueType]]
241+
typing.Union[Sequence[FlagValueType], Mapping[str, FlagValueType]]
246242
]:
247243
return self.resolve_object_details(flag_key, default_value, evaluation_context)
248244

0 commit comments

Comments
 (0)