apply ruff formatting
This commit is contained in:
@@ -46,6 +46,7 @@ from auth.scopes import (
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
# Authentication helper functions
|
||||
def _get_auth_context(
|
||||
tool_name: str,
|
||||
@@ -136,7 +137,9 @@ def _override_oauth21_user_email(
|
||||
Returns:
|
||||
Tuple of (updated_user_email, updated_args)
|
||||
"""
|
||||
if not (use_oauth21 and authenticated_user and current_user_email != authenticated_user):
|
||||
if not (
|
||||
use_oauth21 and authenticated_user and current_user_email != authenticated_user
|
||||
):
|
||||
return current_user_email, args
|
||||
|
||||
service_suffix = f" for service '{service_type}'" if service_type else ""
|
||||
@@ -235,7 +238,9 @@ async def get_authenticated_google_service_oauth21(
|
||||
f"Authenticated account {token_email} does not match requested user {user_google_email}."
|
||||
)
|
||||
|
||||
credentials = ensure_session_from_access_token(access_token, resolved_email, session_id)
|
||||
credentials = ensure_session_from_access_token(
|
||||
access_token, resolved_email, session_id
|
||||
)
|
||||
if not credentials:
|
||||
raise GoogleAuthenticationError(
|
||||
"Unable to build Google credentials from authenticated access token."
|
||||
@@ -286,7 +291,9 @@ async def get_authenticated_google_service_oauth21(
|
||||
return service, user_google_email
|
||||
|
||||
|
||||
def _extract_oauth21_user_email(authenticated_user: Optional[str], func_name: str) -> str:
|
||||
def _extract_oauth21_user_email(
|
||||
authenticated_user: Optional[str], func_name: str
|
||||
) -> str:
|
||||
"""
|
||||
Extract user email for OAuth 2.1 mode.
|
||||
|
||||
@@ -308,9 +315,7 @@ def _extract_oauth21_user_email(authenticated_user: Optional[str], func_name: st
|
||||
|
||||
|
||||
def _extract_oauth20_user_email(
|
||||
args: tuple,
|
||||
kwargs: dict,
|
||||
wrapper_sig: inspect.Signature
|
||||
args: tuple, kwargs: dict, wrapper_sig: inspect.Signature
|
||||
) -> str:
|
||||
"""
|
||||
Extract user email for OAuth 2.0 mode from function arguments.
|
||||
@@ -331,13 +336,10 @@ def _extract_oauth20_user_email(
|
||||
|
||||
user_google_email = bound_args.arguments.get("user_google_email")
|
||||
if not user_google_email:
|
||||
raise Exception(
|
||||
"'user_google_email' parameter is required but was not found."
|
||||
)
|
||||
raise Exception("'user_google_email' parameter is required but was not found.")
|
||||
return user_google_email
|
||||
|
||||
|
||||
|
||||
def _remove_user_email_arg_from_docstring(docstring: str) -> str:
|
||||
"""
|
||||
Remove user_google_email parameter documentation from docstring.
|
||||
@@ -357,19 +359,20 @@ def _remove_user_email_arg_from_docstring(docstring: str) -> str:
|
||||
# - user_google_email: Description
|
||||
# - user_google_email (str) - Description
|
||||
patterns = [
|
||||
r'^\s*user_google_email\s*\([^)]*\)\s*:\s*[^\n]*\.?\s*(?:Required\.?)?\s*\n',
|
||||
r'^\s*user_google_email\s*:\s*[^\n]*\n',
|
||||
r'^\s*user_google_email\s*\([^)]*\)\s*-\s*[^\n]*\n',
|
||||
r"^\s*user_google_email\s*\([^)]*\)\s*:\s*[^\n]*\.?\s*(?:Required\.?)?\s*\n",
|
||||
r"^\s*user_google_email\s*:\s*[^\n]*\n",
|
||||
r"^\s*user_google_email\s*\([^)]*\)\s*-\s*[^\n]*\n",
|
||||
]
|
||||
|
||||
modified_docstring = docstring
|
||||
for pattern in patterns:
|
||||
modified_docstring = re.sub(pattern, '', modified_docstring, flags=re.MULTILINE)
|
||||
modified_docstring = re.sub(pattern, "", modified_docstring, flags=re.MULTILINE)
|
||||
|
||||
# Clean up any sequence of 3 or more newlines that might have been created
|
||||
modified_docstring = re.sub(r'\n{3,}', '\n\n', modified_docstring)
|
||||
modified_docstring = re.sub(r"\n{3,}", "\n\n", modified_docstring)
|
||||
return modified_docstring
|
||||
|
||||
|
||||
# Service configuration mapping
|
||||
SERVICE_CONFIGS = {
|
||||
"gmail": {"service": "gmail", "version": "v1"},
|
||||
@@ -425,7 +428,6 @@ SCOPE_GROUPS = {
|
||||
}
|
||||
|
||||
|
||||
|
||||
def _resolve_scopes(scopes: Union[str, List[str]]) -> List[str]:
|
||||
"""Resolve scope names to actual scope URLs."""
|
||||
if isinstance(scopes, str):
|
||||
@@ -467,7 +469,6 @@ def _handle_token_refresh_error(
|
||||
f"Token expired or revoked for user {user_email} accessing {service_name}"
|
||||
)
|
||||
|
||||
|
||||
service_display_name = f"Google {service_name.title()}"
|
||||
|
||||
return (
|
||||
@@ -527,10 +528,7 @@ def require_google_service(
|
||||
# In OAuth 2.1 mode, also exclude 'user_google_email' since it's automatically determined.
|
||||
if is_oauth21_enabled():
|
||||
# Remove both 'service' and 'user_google_email' parameters
|
||||
filtered_params = [
|
||||
p for p in params[1:]
|
||||
if p.name != 'user_google_email'
|
||||
]
|
||||
filtered_params = [p for p in params[1:] if p.name != "user_google_email"]
|
||||
wrapper_sig = original_sig.replace(parameters=filtered_params)
|
||||
else:
|
||||
# Only remove 'service' parameter for OAuth 2.0 mode
|
||||
@@ -548,9 +546,13 @@ def require_google_service(
|
||||
|
||||
# Extract user_google_email based on OAuth mode
|
||||
if is_oauth21_enabled():
|
||||
user_google_email = _extract_oauth21_user_email(authenticated_user, func.__name__)
|
||||
user_google_email = _extract_oauth21_user_email(
|
||||
authenticated_user, func.__name__
|
||||
)
|
||||
else:
|
||||
user_google_email = _extract_oauth20_user_email(args, kwargs, wrapper_sig)
|
||||
user_google_email = _extract_oauth20_user_email(
|
||||
args, kwargs, wrapper_sig
|
||||
)
|
||||
|
||||
# Get service configuration from the decorator's arguments
|
||||
if service_type not in SERVICE_CONFIGS:
|
||||
@@ -628,7 +630,9 @@ def require_google_service(
|
||||
|
||||
# Conditionally modify docstring to remove user_google_email parameter documentation
|
||||
if is_oauth21_enabled():
|
||||
logger.debug('OAuth 2.1 mode enabled, removing user_google_email from docstring')
|
||||
logger.debug(
|
||||
"OAuth 2.1 mode enabled, removing user_google_email from docstring"
|
||||
)
|
||||
if func.__doc__:
|
||||
wrapper.__doc__ = _remove_user_email_arg_from_docstring(func.__doc__)
|
||||
|
||||
@@ -664,14 +668,10 @@ def require_multiple_services(service_configs: List[Dict[str, Any]]):
|
||||
params = list(original_sig.parameters.values())
|
||||
|
||||
# Remove injected service params from the wrapper signature; drop user_google_email only for OAuth 2.1.
|
||||
filtered_params = [
|
||||
p for p in params
|
||||
if p.name not in service_param_names
|
||||
]
|
||||
filtered_params = [p for p in params if p.name not in service_param_names]
|
||||
if is_oauth21_enabled():
|
||||
filtered_params = [
|
||||
p for p in filtered_params
|
||||
if p.name != 'user_google_email'
|
||||
p for p in filtered_params if p.name != "user_google_email"
|
||||
]
|
||||
|
||||
wrapper_sig = original_sig.replace(parameters=filtered_params)
|
||||
@@ -685,9 +685,13 @@ def require_multiple_services(service_configs: List[Dict[str, Any]]):
|
||||
|
||||
# Extract user_google_email based on OAuth mode
|
||||
if is_oauth21_enabled():
|
||||
user_google_email = _extract_oauth21_user_email(authenticated_user, tool_name)
|
||||
user_google_email = _extract_oauth21_user_email(
|
||||
authenticated_user, tool_name
|
||||
)
|
||||
else:
|
||||
user_google_email = _extract_oauth20_user_email(args, kwargs, wrapper_sig)
|
||||
user_google_email = _extract_oauth20_user_email(
|
||||
args, kwargs, wrapper_sig
|
||||
)
|
||||
|
||||
# Authenticate all services
|
||||
for config in service_configs:
|
||||
@@ -764,12 +768,12 @@ def require_multiple_services(service_configs: List[Dict[str, Any]]):
|
||||
|
||||
# Conditionally modify docstring to remove user_google_email parameter documentation
|
||||
if is_oauth21_enabled():
|
||||
logger.debug('OAuth 2.1 mode enabled, removing user_google_email from docstring')
|
||||
logger.debug(
|
||||
"OAuth 2.1 mode enabled, removing user_google_email from docstring"
|
||||
)
|
||||
if func.__doc__:
|
||||
wrapper.__doc__ = _remove_user_email_arg_from_docstring(func.__doc__)
|
||||
|
||||
return wrapper
|
||||
|
||||
return decorator
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user