diff --git a/.github/workflows/update-a2a-types.yml b/.github/workflows/update-a2a-types.yml index af08b0a0..164135a5 100644 --- a/.github/workflows/update-a2a-types.yml +++ b/.github/workflows/update-a2a-types.yml @@ -58,7 +58,8 @@ jobs: --use-default-kwarg \ --use-one-literal-as-default \ --class-name A2A \ - --use-standard-collections + --use-standard-collections \ + --use-subclass-enum echo "Codegen finished." - name: Create Pull Request with Updates diff --git a/development.md b/development.md index d5d79b54..c1ecf029 100644 --- a/development.md +++ b/development.md @@ -17,5 +17,6 @@ uv run datamodel-codegen \ --use-default-kwarg \ --use-one-literal-as-default \ --class-name A2A \ - --use-standard-collections + --use-standard-collections \ + --use-subclass-enum ``` diff --git a/src/a2a/types.py b/src/a2a/types.py index 1cc4b299..b1aed42e 100644 --- a/src/a2a/types.py +++ b/src/a2a/types.py @@ -13,7 +13,7 @@ class A2A(RootModel[Any]): root: Any -class In(Enum): +class In(str, Enum): """ The location of the API key. Valid values are "query", "header", or "cookie". """ @@ -484,7 +484,7 @@ class JSONRPCSuccessResponse(BaseModel): """ -class Role(Enum): +class Role(str, Enum): """ Message sender's role """ @@ -731,7 +731,7 @@ class TaskResubscriptionRequest(BaseModel): """ -class TaskState(Enum): +class TaskState(str, Enum): """ Represents the possible states of a Task. """ diff --git a/tests/test_types.py b/tests/test_types.py index 99ccaa5f..d57ddda0 100644 --- a/tests/test_types.py +++ b/tests/test_types.py @@ -1487,3 +1487,12 @@ def test_a2a_error_validation_and_serialization() -> None: invalid_data: dict[str, Any] = {'code': -99999, 'message': 'Unknown error'} with pytest.raises(ValidationError): A2AError.model_validate(invalid_data) + + +def test_subclass_enums() -> None: + """validate subtype enum types""" + assert "cookie" == In.cookie + + assert "user" == Role.user + + assert "working" == TaskState.working