Skip to content

Clarify Python Version Compatibility #490

@kimmeoungjun

Description

@kimmeoungjun

Please read this first

  • Have you read the docs?Agents SDK docs Yes
  • Have you searched for related issues? Others may have had similar requests Yes

Question

Hi, I was trying to run the following command:

python -m examples.customer_service.main 

I'm using Python 3.9.13, and when I run the script this way, I get the following error:

Traceback (most recent call last): File "/Users/kimmeoungjun/openai-agents-python/env/lib/python3.9/site-packages/pydantic/_internal/_typing_extra.py", line 466, in _eval_type_backport return _eval_type(value, globalns, localns, type_params) File "/Users/kimmeoungjun/openai-agents-python/env/lib/python3.9/site-packages/pydantic/_internal/_typing_extra.py", line 500, in _eval_type return typing._eval_type( # type: ignore File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/typing.py", line 292, in _eval_type return t._evaluate(globalns, localns, recursive_guard) File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/typing.py", line 554, in _evaluate eval(self.__forward_code__, globalns, localns), File "<string>", line 1, in <module> TypeError: unsupported operand type(s) for |: 'type' and 'NoneType' The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/runpy.py", line 197, in _run_module_as_main return _run_code(code, main_globals, None, File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/runpy.py", line 87, in _run_code exec(code, run_globals) File "/Users/kimmeoungjun/openai-agents-python/examples/customer_service/main.py", line 28, in <module> class AirlineAgentContext(BaseModel): File "/Users/kimmeoungjun/openai-agents-python/env/lib/python3.9/site-packages/pydantic/_internal/_model_construction.py", line 221, in __new__ set_model_fields(cls, config_wrapper=config_wrapper, ns_resolver=ns_resolver) File "/Users/kimmeoungjun/openai-agents-python/env/lib/python3.9/site-packages/pydantic/_internal/_model_construction.py", line 544, in set_model_fields fields, class_vars = collect_model_fields(cls, config_wrapper, ns_resolver, typevars_map=typevars_map) File "/Users/kimmeoungjun/openai-agents-python/env/lib/python3.9/site-packages/pydantic/_internal/_fields.py", line 118, in collect_model_fields type_hints = _typing_extra.get_model_type_hints(cls, ns_resolver=ns_resolver) File "/Users/kimmeoungjun/openai-agents-python/env/lib/python3.9/site-packages/pydantic/_internal/_typing_extra.py", line 329, in get_model_type_hints hints[name] = try_eval_type(value, globalns, localns) File "/Users/kimmeoungjun/openai-agents-python/env/lib/python3.9/site-packages/pydantic/_internal/_typing_extra.py", line 378, in try_eval_type return eval_type_backport(value, globalns, localns), True File "/Users/kimmeoungjun/openai-agents-python/env/lib/python3.9/site-packages/pydantic/_internal/_typing_extra.py", line 429, in eval_type_backport return _eval_type_backport(value, globalns, localns, type_params) File "/Users/kimmeoungjun/openai-agents-python/env/lib/python3.9/site-packages/pydantic/_internal/_typing_extra.py", line 474, in _eval_type_backport raise TypeError( TypeError: Unable to evaluate type annotation 'str | None'. If you are making use of the new typing syntax (unions using `|` since Python 3.10 or builtins subscripting since Python 3.9), you should either replace the use of new syntax with the existing `typing` constructs or install the `eval_type_backport` package. 

It seems like the code is using the | operator for union types (e.g., str | None), which is only supported in Python 3.10 and above. Since I'm running 3.9, this results in a TypeError.

From what I can tell, switching to Optional[str] (or Union[str, None]) instead of using the | operator would resolve the issue and make it compatible with Python 3.9.

I was wondering—would it make sense to either:

  • update the code to support 3.9, or
  • clarify somewhere (like in the README or pyproject.toml) that Python 3.10+ is required?

Either approach would work, but having a clear guideline on the expected Python version might help others avoid this kind of confusion. Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionQuestion about using the SDK

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions