diff --git a/providers/openfeature-provider-flagd/src/openfeature/contrib/provider/flagd/resolvers/grpc.py b/providers/openfeature-provider-flagd/src/openfeature/contrib/provider/flagd/resolvers/grpc.py index 0c343635..d1be9e9a 100644 --- a/providers/openfeature-provider-flagd/src/openfeature/contrib/provider/flagd/resolvers/grpc.py +++ b/providers/openfeature-provider-flagd/src/openfeature/contrib/provider/flagd/resolvers/grpc.py @@ -391,7 +391,11 @@ def _convert_context( if evaluation_context: try: s["targetingKey"] = evaluation_context.targeting_key - s.update(evaluation_context.attributes) # type: ignore[arg-type] + s.update( + typing.cast( + "typing.Mapping[str, typing.Any]", evaluation_context.attributes + ) + ) except ValueError as exc: message = ( "could not serialize evaluation context to google.protobuf.Struct" diff --git a/providers/openfeature-provider-flagd/src/openfeature/contrib/provider/flagd/resolvers/process/targeting.py b/providers/openfeature-provider-flagd/src/openfeature/contrib/provider/flagd/resolvers/process/targeting.py index a29864ef..079a8aa1 100644 --- a/providers/openfeature-provider-flagd/src/openfeature/contrib/provider/flagd/resolvers/process/targeting.py +++ b/providers/openfeature-provider-flagd/src/openfeature/contrib/provider/flagd/resolvers/process/targeting.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import time import typing @@ -31,9 +33,11 @@ def targeting( if not isinstance(targeting, dict): raise ParseError(f"Invalid 'targeting' value in flag: {targeting}") - json_logic_context = evaluation_context.attributes if evaluation_context else {} - json_logic_context["$flagd"] = {"flagKey": key, "timestamp": int(time.time())} # type: ignore[index] - json_logic_context["targetingKey"] = ( # type: ignore[index] + json_logic_context: dict[str, typing.Any] = ( + dict(evaluation_context.attributes) if evaluation_context else {} + ) + json_logic_context["$flagd"] = {"flagKey": key, "timestamp": int(time.time())} + json_logic_context["targetingKey"] = ( evaluation_context.targeting_key if evaluation_context else None ) return jsonLogic(targeting, json_logic_context, OPERATORS) diff --git a/providers/openfeature-provider-flagd/tests/test_targeting.py b/providers/openfeature-provider-flagd/tests/test_targeting.py index 2e5fd234..e3057fd4 100644 --- a/providers/openfeature-provider-flagd/tests/test_targeting.py +++ b/providers/openfeature-provider-flagd/tests/test_targeting.py @@ -7,7 +7,7 @@ from math import floor import pytest -from json_logic import builtins, jsonLogic # type: ignore[import-untyped] +from json_logic import builtins, jsonLogic from openfeature.contrib.provider.flagd.resolvers.process.custom_ops import ( ends_with,