Python (union)

준케이·2025년 8월 24일

개발자는 아니지만, 업무 상 필요한 것들은 AI + Python을 활용하여 만드는 것을 좋아해서, AI가 만든 코드를 보면서 공부가 필요한 것들은 공부를 하고 남기는 공간

일단 현재, 문제가 되고 있는 부분은 다음과 같았다.

@mcp.tool()
async def create_jira_issues(
    project_key: str,
    summary: str,
    description: str,
    issue_type: str,
    assignee: Optional[str] = None,
    labels: Optional[Union[List[str]] = None,
    components: Optional[Union[List[str] = None,
    link_type: Optional[str] = None,
    linked_issue_key: Optional[str] = None,
    fix_versions: Optional[List[str]] = None,
    attachments: Optional[List[str]] = None):

해당 코드는 MCP에서 labels, components가 받을려고 할 시 다음과 같은 이슈가 나오게 되었다.

Input validation error: '["example_code"]' is not valid under any of the given schemas

분명히 입력 시, 'example_code'로 받았지만, python jira api측에서는 '[example_code]' 이렇게 문자열로 받아들였기에 제대로 생성을 하지 못하는 것 이다.

그럼 처음부터 정상적으로 잘 받아들이기 위해서 입력 받을 시 다음과 같이 처리를 한다.

labels: Optional[Union[List[str], str]] = None,
components: Optional[Union[List[str], str]] = None,

즉 Union을 통해서 List[str], str 이 2개를 받았을 수 있도록 처리를 한다면, 조금은 유연하게 List 와 str를 편하게 처리를 할 수 있다.'

(* 물론 List 처리하는 것은 밑에 구현 부분에서 더 다양하게 분기처리가 필요한 것은 당연지사)

profile
자전거와 컴퓨터를 좋아하는 철부지

0개의 댓글