From 7469710a1645e9c89e3bfbfadaa6cf92b108ea54 Mon Sep 17 00:00:00 2001 From: nvasiu Date: Thu, 10 Sep 2026 17:54:02 +0000 Subject: [PATCH] fix(core): detect bundled SDK via version stamp --- .../lambda_service.py | 12 ++--- .../tests/lambda_service_test.py | 52 ++++++++----------- 2 files changed, 27 insertions(+), 37 deletions(-) diff --git a/packages/aws-durable-execution-sdk-python/src/aws_durable_execution_sdk_python/lambda_service.py b/packages/aws-durable-execution-sdk-python/src/aws_durable_execution_sdk_python/lambda_service.py index eb5ee78b..86dc0fbf 100644 --- a/packages/aws-durable-execution-sdk-python/src/aws_durable_execution_sdk_python/lambda_service.py +++ b/packages/aws-durable-execution-sdk-python/src/aws_durable_execution_sdk_python/lambda_service.py @@ -38,13 +38,9 @@ logger = logging.getLogger(__name__) -def _is_in_var_dir(module_file: str = __file__) -> bool: - """Return True if this SDK is installed under /var/lang/. - - Lambda bundled Python runtimes install packages at - /var/lang/lib/pythonX.Y/site-packages/. - """ - return module_file.startswith("/var/lang/") +def _is_bundled(version: str = __version__) -> bool: + """True if the managed runtime stamped a +bundled label onto this install.""" + return "+bundled" in version # region model @@ -1218,7 +1214,7 @@ def initialize_client(cls) -> LambdaClient: config=Config( connect_timeout=5, read_timeout=50, - user_agent_extra=f"aws-durable-execution-sdk-python/{__version__}{'-bundled' if _is_in_var_dir() else ''}", + user_agent_extra=f"aws-durable-execution-sdk-python/{__version__.split('+')[0]}{'-bundled' if _is_bundled() else ''}", ), ) return cls(client=cls._cached_boto_client) diff --git a/packages/aws-durable-execution-sdk-python/tests/lambda_service_test.py b/packages/aws-durable-execution-sdk-python/tests/lambda_service_test.py index 516930e2..55edd7c4 100644 --- a/packages/aws-durable-execution-sdk-python/tests/lambda_service_test.py +++ b/packages/aws-durable-execution-sdk-python/tests/lambda_service_test.py @@ -40,7 +40,7 @@ TimestampConverter, WaitDetails, WaitOptions, - _is_in_var_dir, + _is_bundled, ) @@ -2226,14 +2226,14 @@ def test_lambda_client_initialize_client_no_endpoint( @patch( - "aws_durable_execution_sdk_python.lambda_service._is_in_var_dir", + "aws_durable_execution_sdk_python.lambda_service._is_bundled", return_value=True, ) @patch("boto3.client") def test_lambda_client_user_agent_runtime_bundled( - mock_boto_client, _mock_is_in_var_dir, reset_lambda_client_cache + mock_boto_client, _mock_is_bundled, reset_lambda_client_cache ): - """user_agent_extra includes -bundled when SDK is in /var/lang/.""" + """user_agent_extra includes -bundled when the +bundled stamp is present.""" mock_client = Mock() mock_boto_client.return_value = mock_client @@ -2243,20 +2243,20 @@ def test_lambda_client_user_agent_runtime_bundled( config = call_args[1]["config"] assert ( config.user_agent_extra - == f"aws-durable-execution-sdk-python/{__version__}-bundled" + == f"aws-durable-execution-sdk-python/{__version__.split('+')[0]}-bundled" ) assert isinstance(client, LambdaClient) @patch( - "aws_durable_execution_sdk_python.lambda_service._is_in_var_dir", + "aws_durable_execution_sdk_python.lambda_service._is_bundled", return_value=False, ) @patch("boto3.client") def test_lambda_client_user_agent_not_runtime_bundled( - mock_boto_client, _mock_is_in_var_dir, reset_lambda_client_cache + mock_boto_client, _mock_is_bundled, reset_lambda_client_cache ): - """user_agent_extra omits -bundled when SDK is not in /var/lang.""" + """user_agent_extra omits -bundled when the +bundled stamp is absent.""" mock_client = Mock() mock_boto_client.return_value = mock_client @@ -2264,35 +2264,29 @@ def test_lambda_client_user_agent_not_runtime_bundled( call_args = mock_boto_client.call_args config = call_args[1]["config"] - assert config.user_agent_extra == f"aws-durable-execution-sdk-python/{__version__}" + assert ( + config.user_agent_extra + == f"aws-durable-execution-sdk-python/{__version__.split('+')[0]}" + ) assert isinstance(client, LambdaClient) @pytest.mark.parametrize( - "path,expected", + "version,expected", [ - # Lambda bundled runtime site-packages - ( - "/var/lang/lib/python3.13/site-packages/aws_durable_execution_sdk_python/lambda_service.py", - True, - ), - ( - "/var/lang/lib/python3.12/site-packages/aws_durable_execution_sdk_python/lambda_service.py", - True, - ), - # Customer deployment package - ("/var/task/aws_durable_execution_sdk_python/lambda_service.py", False), - # Lambda Layer - ("/opt/python/aws_durable_execution_sdk_python/lambda_service.py", False), - # Trailing-slash guard: /var/langsurprise must not match - ("/var/langsurprise/lib/python3.13/site-packages/x.py", False), - # Local dev - ("/Users/me/project/.venv/lib/python3.12/site-packages/x.py", False), + # Managed-runtime stamp + ("1.7.0+bundled", True), + ("1.7.0.post0+bundled", True), + # Public PyPI installs never carry the local label + ("1.7.0", False), + ("1.7.0.post0", False), + # A different local label must not match + ("1.7.0+local", False), ("", False), ], ) -def test_is_in_var_dir(path, expected): - assert _is_in_var_dir(path) is expected +def test_is_bundled(version, expected): + assert _is_bundled(version) is expected def test_lambda_client_checkpoint_with_non_none_client_token():