From 6746bcb1b48fba0dd574f0839f384d8bcaa9f475 Mon Sep 17 00:00:00 2001 From: Shruti Mantri Date: Fri, 29 May 2026 18:12:40 +0530 Subject: [PATCH 1/2] Fix test breakage: dictionary changed size during iteration --- .../appengine/runtime/context/gae_headers.py | 10 +++++----- src/google/appengine/runtime/context/wsgi.py | 14 +++++++------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/google/appengine/runtime/context/gae_headers.py b/src/google/appengine/runtime/context/gae_headers.py index e665426..53ed445 100755 --- a/src/google/appengine/runtime/context/gae_headers.py +++ b/src/google/appengine/runtime/context/gae_headers.py @@ -20,16 +20,16 @@ PREFIX = 'HTTP_X_APPENGINE_' -AUTH_DOMAIN = contextvars.ContextVar('AUTH_DOMAIN') +AUTH_DOMAIN = contextvars.ContextVar('AUTH_DOMAIN', default='gmail.com') DEFAULT_VERSION_HOSTNAME = contextvars.ContextVar('DEFAULT_VERSION_HOSTNAME') USER_EMAIL = contextvars.ContextVar('USER_EMAIL') USER_ID = contextvars.ContextVar('USER_ID') -USER_IS_ADMIN = contextvars.ContextVar('USER_IS_ADMIN') +USER_IS_ADMIN = contextvars.ContextVar('USER_IS_ADMIN', default=False) USER_NICKNAME = contextvars.ContextVar('USER_NICKNAME') DEFAULT_NAMESPACE = contextvars.ContextVar('DEFAULT_NAMESPACE') API_TICKET = contextvars.ContextVar('API_TICKET') -DEV_REQUEST_ID = contextvars.ContextVar('DEV_REQUEST_ID') -REQUEST_LOG_ID = contextvars.ContextVar('REQUEST_LOG_ID') +DEV_REQUEST_ID = contextvars.ContextVar('DEV_REQUEST_ID', default=None) +REQUEST_LOG_ID = contextvars.ContextVar('REQUEST_LOG_ID', default=None) def init_from_wsgi_environ( @@ -37,7 +37,7 @@ def init_from_wsgi_environ( """Init contextvars from matching X_APPENGINE_ headers if found.""" reset_tokens: Dict[contextvars.ContextVar, contextvars.Token] = {} - for ctxvar in [v for _, v in globals().items() + for ctxvar in [v for _, v in globals().copy().items() if isinstance(v, contextvars.ContextVar)]: value = wsgi_env.get(PREFIX + ctxvar.name) if value is not None: diff --git a/src/google/appengine/runtime/context/wsgi.py b/src/google/appengine/runtime/context/wsgi.py index 4df0405..06dffae 100755 --- a/src/google/appengine/runtime/context/wsgi.py +++ b/src/google/appengine/runtime/context/wsgi.py @@ -19,19 +19,19 @@ import contextvars from typing import Dict -HTTP_HOST = contextvars.ContextVar('HTTP_HOST') -HTTP_USER_AGENT = contextvars.ContextVar('HTTP_USER_AGENT') +HTTP_HOST = contextvars.ContextVar('HTTP_HOST', default=None) +HTTP_USER_AGENT = contextvars.ContextVar('HTTP_USER_AGENT', default=None) HTTP_X_CLOUD_TRACE_CONTEXT = contextvars.ContextVar( - 'HTTP_X_CLOUD_TRACE_CONTEXT') + 'HTTP_X_CLOUD_TRACE_CONTEXT', default=None) HTTP_X_GOOGLE_DAPPERTRACEINFO = contextvars.ContextVar( - 'HTTP_X_GOOGLE_DAPPERTRACEINFO') + 'HTTP_X_GOOGLE_DAPPERTRACEINFO', default=None) PATH_INFO = contextvars.ContextVar('PATH_INFO') -PATH_TRANSLATED = contextvars.ContextVar('PATH_TRANSLATED') -QUERY_STRING = contextvars.ContextVar('QUERY_STRING') +PATH_TRANSLATED = contextvars.ContextVar('PATH_TRANSLATED', default=None) +QUERY_STRING = contextvars.ContextVar('QUERY_STRING', default=None) SERVER_NAME = contextvars.ContextVar('SERVER_NAME') SERVER_PORT = contextvars.ContextVar('SERVER_PORT') SERVER_PROTOCOL = contextvars.ContextVar('SERVER_PROTOCOL') @@ -40,7 +40,7 @@ def init_from_wsgi_environ( wsgi_env) -> Dict[contextvars.ContextVar, contextvars.Token]: reset_tokens: Dict[contextvars.ContextVar, contextvars.Token] = {} - for ctxvar in [v for _, v in globals().items() + for ctxvar in [v for _, v in globals().copy().items() if isinstance(v, contextvars.ContextVar)]: if ctxvar.name in wsgi_env: token = ctxvar.set(wsgi_env[ctxvar.name]) From 772ebfeaa4666a95e5989b64f0adbb1b1ce8a474 Mon Sep 17 00:00:00 2001 From: Shruti Mantri Date: Fri, 29 May 2026 18:21:03 +0530 Subject: [PATCH 2/2] update the version --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index d80254e..a4cedfe 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setuptools.setup( name="appengine-python-standard", - version="2.0.0", + version="2.0.1", author="Google LLC", description="Google App Engine services SDK for Python 3", long_description=long_description,