goingforstudying-ctrl commented on code in PR #40746:
URL: https://github.com/apache/superset/pull/40746#discussion_r3404836547


##########
superset/mcp_service/user/schemas.py:
##########
@@ -104,6 +107,31 @@ class UserInfo(BaseModel):
         "access via get_user_info; not available in list_users because roles "
         "is a relationship, not a selectable column)",
     )
+
+    @field_validator("roles", mode="before")
+    @classmethod
+    def _extract_role_names(cls, v: Any) -> list[str] | None:
+        """Coerce Role ORM objects to their .name strings."""
+        if v is None:
+            return None
+        if isinstance(v, str):
+            # Preserve Pydantic's default rejection of bare strings for 
list[str].
+            raise ValueError("roles must be a list, not a string")
+        result: list[str] = []
+        for item in v:
+            if isinstance(item, str):
+                result.append(item)
+                continue
+            try:
+                if hasattr(item, "name") and isinstance(item.name, str):
+                    result.append(item.name)

Review Comment:
   Fixed in latest commit. Role names now go through 
escape_llm_context_delimiters before reaching the LLM context, matching the 
pattern used for username and email. Also added isinstance(r.name, str) guard 
and expanded round-trip test assertions.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to