Skip to content

Commit c8b1b85

Browse files
committed
Replace LambdaContext class with a typed dictionary
Remove LambdaContext class inheritance and update for TypedDict compatibility - Remove isinstance() checks for LambdaContext in tests - Update create_test_lambda_context() to return dictionary instead of class instance - Change test assertions from attribute access to dictionary access - Update type annotations to work with LambdaContext as TypedDict Signed-off-by: Astraea Sinclair <quinsclr@amazon.com>
1 parent 72879ac commit c8b1b85

File tree

2 files changed

+14
-16
lines changed

2 files changed

+14
-16
lines changed

src/aws_durable_execution_sdk_python_testing/invoker.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
DurableExecutionInvocationOutput,
1212
InitialExecutionState,
1313
)
14-
from aws_durable_execution_sdk_python.lambda_context import LambdaContext
1514

1615
from aws_durable_execution_sdk_python_testing.exceptions import (
1716
DurableFunctionsTestError,
@@ -21,13 +20,15 @@
2120
if TYPE_CHECKING:
2221
from collections.abc import Callable
2322

23+
from aws_durable_execution_sdk_python.lambda_context import LambdaContext
24+
2425
from aws_durable_execution_sdk_python_testing.client import InMemoryServiceClient
2526
from aws_durable_execution_sdk_python_testing.execution import Execution
2627

2728

2829
def create_test_lambda_context() -> LambdaContext:
2930
# Create client context as a dictionary, not as objects
30-
# LambdaContext.__init__ expects dictionaries and will create the objects internally
31+
# LambdaContext is now a typed dictionary, so we return a dictionary directly
3132
client_context_dict = {
3233
"custom": {"test_key": "test_value"},
3334
"env": {"platform": "test", "make": "test", "model": "test"},
@@ -45,16 +46,16 @@ def create_test_lambda_context() -> LambdaContext:
4546
"cognitoIdentityPoolId": "us-west-2:test-pool-456",
4647
}
4748

48-
return LambdaContext(
49-
invoke_id="test-invoke-12345",
50-
client_context=client_context_dict,
51-
cognito_identity=cognito_identity_dict,
52-
epoch_deadline_time_in_ms=int(
49+
return {
50+
"invoke_id": "test-invoke-12345",
51+
"client_context": client_context_dict,
52+
"cognito_identity": cognito_identity_dict,
53+
"epoch_deadline_time_in_ms": int(
5354
(time.time() + 900) * 1000
5455
), # 15 minutes from now
55-
invoked_function_arn="arn:aws:lambda:us-west-2:123456789012:function:test-function",
56-
tenant_id="test-tenant-789",
57-
)
56+
"invoked_function_arn": "arn:aws:lambda:us-west-2:123456789012:function:test-function",
57+
"tenant_id": "test-tenant-789",
58+
}
5859

5960

6061
class Invoker(Protocol):

tests/invoker_test.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
InitialExecutionState,
1212
InvocationStatus,
1313
)
14-
from aws_durable_execution_sdk_python.lambda_context import LambdaContext
1514

1615
from aws_durable_execution_sdk_python_testing.execution import Execution
1716
from aws_durable_execution_sdk_python_testing.invoker import (
@@ -26,13 +25,12 @@ def test_create_test_lambda_context():
2625
"""Test creating a test lambda context."""
2726
context = create_test_lambda_context()
2827

29-
assert isinstance(context, LambdaContext)
3028
assert (
31-
context.invoked_function_arn
29+
context["invoked_function_arn"]
3230
== "arn:aws:lambda:us-west-2:123456789012:function:test-function"
3331
)
34-
assert context.tenant_id == "test-tenant-789"
35-
assert context.client_context is not None
32+
assert context["tenant_id"] == "test-tenant-789"
33+
assert context["client_context"] is not None
3634

3735

3836
def test_in_process_invoker_init():
@@ -98,7 +96,6 @@ def test_in_process_invoker_invoke():
9896
handler.assert_called_once()
9997
call_args = handler.call_args[0]
10098
assert isinstance(call_args[0], DurableExecutionInvocationInputWithClient)
101-
assert isinstance(call_args[1], LambdaContext)
10299

103100

104101
def test_lambda_invoker_init():

0 commit comments

Comments
 (0)