1
1
import logging
2
2
import typing
3
- from collections .abc import Awaitable
3
+ from collections .abc import Awaitable , Sequence
4
4
from dataclasses import dataclass
5
5
6
6
from openfeature import _event_support
19
19
FlagEvaluationOptions ,
20
20
FlagResolutionDetails ,
21
21
FlagType ,
22
+ FlagValueType ,
22
23
Reason ,
23
24
)
24
25
from openfeature .hook import Hook , HookContext , HookHints , get_hooks
@@ -342,10 +343,12 @@ async def get_float_details_async(
342
343
def get_object_value (
343
344
self ,
344
345
flag_key : str ,
345
- default_value : typing .Union [dict , list ],
346
+ default_value : typing .Union [
347
+ Sequence [FlagValueType ], typing .Mapping [str , FlagValueType ]
348
+ ],
346
349
evaluation_context : typing .Optional [EvaluationContext ] = None ,
347
350
flag_evaluation_options : typing .Optional [FlagEvaluationOptions ] = None ,
348
- ) -> typing .Union [dict , list ]:
351
+ ) -> typing .Union [Sequence [ FlagValueType ], typing . Mapping [ str , FlagValueType ] ]:
349
352
return self .get_object_details (
350
353
flag_key ,
351
354
default_value ,
@@ -356,10 +359,12 @@ def get_object_value(
356
359
async def get_object_value_async (
357
360
self ,
358
361
flag_key : str ,
359
- default_value : typing .Union [dict , list ],
362
+ default_value : typing .Union [
363
+ Sequence [FlagValueType ], typing .Mapping [str , FlagValueType ]
364
+ ],
360
365
evaluation_context : typing .Optional [EvaluationContext ] = None ,
361
366
flag_evaluation_options : typing .Optional [FlagEvaluationOptions ] = None ,
362
- ) -> typing .Union [dict , list ]:
367
+ ) -> typing .Union [Sequence [ FlagValueType ], typing . Mapping [ str , FlagValueType ] ]:
363
368
details = await self .get_object_details_async (
364
369
flag_key ,
365
370
default_value ,
@@ -371,10 +376,14 @@ async def get_object_value_async(
371
376
def get_object_details (
372
377
self ,
373
378
flag_key : str ,
374
- default_value : typing .Union [dict , list ],
379
+ default_value : typing .Union [
380
+ Sequence [FlagValueType ], typing .Mapping [str , FlagValueType ]
381
+ ],
375
382
evaluation_context : typing .Optional [EvaluationContext ] = None ,
376
383
flag_evaluation_options : typing .Optional [FlagEvaluationOptions ] = None ,
377
- ) -> FlagEvaluationDetails [typing .Union [dict , list ]]:
384
+ ) -> FlagEvaluationDetails [
385
+ typing .Union [Sequence [FlagValueType ], typing .Mapping [str , FlagValueType ]]
386
+ ]:
378
387
return self .evaluate_flag_details (
379
388
FlagType .OBJECT ,
380
389
flag_key ,
@@ -386,10 +395,14 @@ def get_object_details(
386
395
async def get_object_details_async (
387
396
self ,
388
397
flag_key : str ,
389
- default_value : typing .Union [dict , list ],
398
+ default_value : typing .Union [
399
+ Sequence [FlagValueType ], typing .Mapping [str , FlagValueType ]
400
+ ],
390
401
evaluation_context : typing .Optional [EvaluationContext ] = None ,
391
402
flag_evaluation_options : typing .Optional [FlagEvaluationOptions ] = None ,
392
- ) -> FlagEvaluationDetails [typing .Union [dict , list ]]:
403
+ ) -> FlagEvaluationDetails [
404
+ typing .Union [Sequence [FlagValueType ], typing .Mapping [str , FlagValueType ]]
405
+ ]:
393
406
return await self .evaluate_flag_details_async (
394
407
FlagType .OBJECT ,
395
408
flag_key ,
@@ -402,7 +415,7 @@ def _establish_hooks_and_provider(
402
415
self ,
403
416
flag_type : FlagType ,
404
417
flag_key : str ,
405
- default_value : typing . Any ,
418
+ default_value : FlagValueType ,
406
419
evaluation_context : typing .Optional [EvaluationContext ],
407
420
flag_evaluation_options : typing .Optional [FlagEvaluationOptions ],
408
421
) -> tuple [
@@ -479,14 +492,74 @@ def _before_hooks_and_merge_context(
479
492
)
480
493
return merged_context
481
494
495
+ @typing .overload
496
+ async def evaluate_flag_details_async (
497
+ self ,
498
+ flag_type : FlagType ,
499
+ flag_key : str ,
500
+ default_value : bool ,
501
+ evaluation_context : typing .Optional [EvaluationContext ] = None ,
502
+ flag_evaluation_options : typing .Optional [FlagEvaluationOptions ] = None ,
503
+ ) -> FlagEvaluationDetails [bool ]: ...
504
+
505
+ @typing .overload
506
+ async def evaluate_flag_details_async (
507
+ self ,
508
+ flag_type : FlagType ,
509
+ flag_key : str ,
510
+ default_value : int ,
511
+ evaluation_context : typing .Optional [EvaluationContext ] = None ,
512
+ flag_evaluation_options : typing .Optional [FlagEvaluationOptions ] = None ,
513
+ ) -> FlagEvaluationDetails [int ]: ...
514
+
515
+ @typing .overload
516
+ async def evaluate_flag_details_async (
517
+ self ,
518
+ flag_type : FlagType ,
519
+ flag_key : str ,
520
+ default_value : float ,
521
+ evaluation_context : typing .Optional [EvaluationContext ] = None ,
522
+ flag_evaluation_options : typing .Optional [FlagEvaluationOptions ] = None ,
523
+ ) -> FlagEvaluationDetails [float ]: ...
524
+
525
+ @typing .overload
526
+ async def evaluate_flag_details_async (
527
+ self ,
528
+ flag_type : FlagType ,
529
+ flag_key : str ,
530
+ default_value : str ,
531
+ evaluation_context : typing .Optional [EvaluationContext ] = None ,
532
+ flag_evaluation_options : typing .Optional [FlagEvaluationOptions ] = None ,
533
+ ) -> FlagEvaluationDetails [str ]: ...
534
+
535
+ @typing .overload
536
+ async def evaluate_flag_details_async (
537
+ self ,
538
+ flag_type : FlagType ,
539
+ flag_key : str ,
540
+ default_value : Sequence ["FlagValueType" ],
541
+ evaluation_context : typing .Optional [EvaluationContext ] = None ,
542
+ flag_evaluation_options : typing .Optional [FlagEvaluationOptions ] = None ,
543
+ ) -> FlagEvaluationDetails [Sequence ["FlagValueType" ]]: ...
544
+
545
+ @typing .overload
546
+ async def evaluate_flag_details_async (
547
+ self ,
548
+ flag_type : FlagType ,
549
+ flag_key : str ,
550
+ default_value : typing .Mapping [str , "FlagValueType" ],
551
+ evaluation_context : typing .Optional [EvaluationContext ] = None ,
552
+ flag_evaluation_options : typing .Optional [FlagEvaluationOptions ] = None ,
553
+ ) -> FlagEvaluationDetails [typing .Mapping [str , "FlagValueType" ]]: ...
554
+
482
555
async def evaluate_flag_details_async (
483
556
self ,
484
557
flag_type : FlagType ,
485
558
flag_key : str ,
486
- default_value : typing . Any ,
559
+ default_value : FlagValueType ,
487
560
evaluation_context : typing .Optional [EvaluationContext ] = None ,
488
561
flag_evaluation_options : typing .Optional [FlagEvaluationOptions ] = None ,
489
- ) -> FlagEvaluationDetails [typing . Any ]:
562
+ ) -> FlagEvaluationDetails [FlagValueType ]:
490
563
"""
491
564
Evaluate the flag requested by the user from the clients provider.
492
565
@@ -595,14 +668,74 @@ async def evaluate_flag_details_async(
595
668
hook_hints ,
596
669
)
597
670
671
+ @typing .overload
672
+ def evaluate_flag_details (
673
+ self ,
674
+ flag_type : FlagType ,
675
+ flag_key : str ,
676
+ default_value : bool ,
677
+ evaluation_context : typing .Optional [EvaluationContext ] = None ,
678
+ flag_evaluation_options : typing .Optional [FlagEvaluationOptions ] = None ,
679
+ ) -> FlagEvaluationDetails [bool ]: ...
680
+
681
+ @typing .overload
682
+ def evaluate_flag_details (
683
+ self ,
684
+ flag_type : FlagType ,
685
+ flag_key : str ,
686
+ default_value : int ,
687
+ evaluation_context : typing .Optional [EvaluationContext ] = None ,
688
+ flag_evaluation_options : typing .Optional [FlagEvaluationOptions ] = None ,
689
+ ) -> FlagEvaluationDetails [int ]: ...
690
+
691
+ @typing .overload
692
+ def evaluate_flag_details (
693
+ self ,
694
+ flag_type : FlagType ,
695
+ flag_key : str ,
696
+ default_value : float ,
697
+ evaluation_context : typing .Optional [EvaluationContext ] = None ,
698
+ flag_evaluation_options : typing .Optional [FlagEvaluationOptions ] = None ,
699
+ ) -> FlagEvaluationDetails [float ]: ...
700
+
701
+ @typing .overload
702
+ def evaluate_flag_details (
703
+ self ,
704
+ flag_type : FlagType ,
705
+ flag_key : str ,
706
+ default_value : str ,
707
+ evaluation_context : typing .Optional [EvaluationContext ] = None ,
708
+ flag_evaluation_options : typing .Optional [FlagEvaluationOptions ] = None ,
709
+ ) -> FlagEvaluationDetails [str ]: ...
710
+
711
+ @typing .overload
712
+ def evaluate_flag_details (
713
+ self ,
714
+ flag_type : FlagType ,
715
+ flag_key : str ,
716
+ default_value : Sequence ["FlagValueType" ],
717
+ evaluation_context : typing .Optional [EvaluationContext ] = None ,
718
+ flag_evaluation_options : typing .Optional [FlagEvaluationOptions ] = None ,
719
+ ) -> FlagEvaluationDetails [Sequence ["FlagValueType" ]]: ...
720
+
721
+ @typing .overload
722
+ def evaluate_flag_details (
723
+ self ,
724
+ flag_type : FlagType ,
725
+ flag_key : str ,
726
+ default_value : typing .Mapping [str , "FlagValueType" ],
727
+ evaluation_context : typing .Optional [EvaluationContext ] = None ,
728
+ flag_evaluation_options : typing .Optional [FlagEvaluationOptions ] = None ,
729
+ ) -> FlagEvaluationDetails [typing .Mapping [str , "FlagValueType" ]]: ...
730
+
598
731
def evaluate_flag_details (
599
732
self ,
600
733
flag_type : FlagType ,
601
734
flag_key : str ,
602
- default_value : typing . Any ,
735
+ default_value : FlagValueType ,
603
736
evaluation_context : typing .Optional [EvaluationContext ] = None ,
604
737
flag_evaluation_options : typing .Optional [FlagEvaluationOptions ] = None ,
605
- ) -> FlagEvaluationDetails [typing . Any ]:
738
+ ) -> FlagEvaluationDetails [FlagValueType ]:
606
739
"""
607
740
Evaluate the flag requested by the user from the clients provider.
608
741
@@ -718,9 +851,9 @@ async def _create_provider_evaluation_async(
718
851
provider : FeatureProvider ,
719
852
flag_type : FlagType ,
720
853
flag_key : str ,
721
- default_value : typing . Any ,
854
+ default_value : FlagValueType ,
722
855
evaluation_context : typing .Optional [EvaluationContext ] = None ,
723
- ) -> FlagEvaluationDetails [typing . Any ]:
856
+ ) -> FlagEvaluationDetails [FlagValueType ]:
724
857
get_details_callables_async : typing .Mapping [
725
858
FlagType , ResolveDetailsCallableAsync
726
859
] = {
@@ -765,9 +898,9 @@ def _create_provider_evaluation(
765
898
provider : FeatureProvider ,
766
899
flag_type : FlagType ,
767
900
flag_key : str ,
768
- default_value : typing . Any ,
901
+ default_value : FlagValueType ,
769
902
evaluation_context : typing .Optional [EvaluationContext ] = None ,
770
- ) -> FlagEvaluationDetails [typing . Any ]:
903
+ ) -> FlagEvaluationDetails [FlagValueType ]:
771
904
"""
772
905
Encapsulated method to create a FlagEvaluationDetail from a specific provider.
773
906
0 commit comments