|
1 |
| -[project] |
2 |
| -name = "openai-agents" |
3 |
| -version = "0.2.11" |
4 |
| -description = "OpenAI Agents SDK" |
5 |
| -readme = "README.md" |
6 |
| -requires-python = ">=3.9" |
7 |
| -license = "MIT" |
8 |
| -authors = [{ name = "OpenAI", email = "[email protected]" }] |
9 |
| -dependencies = [ |
10 |
| - "openai>=1.104.1,<2", |
11 |
| - "pydantic>=2.10, <3", |
12 |
| - "griffe>=1.5.6, <2", |
13 |
| - "typing-extensions>=4.12.2, <5", |
14 |
| - "requests>=2.0, <3", |
15 |
| - "types-requests>=2.0, <3", |
16 |
| - "mcp>=1.11.0, <2; python_version >= '3.10'", |
17 |
| -] |
18 |
| -classifiers = [ |
19 |
| - "Typing :: Typed", |
20 |
| - "Intended Audience :: Developers", |
21 |
| - "Programming Language :: Python :: 3", |
22 |
| - "Programming Language :: Python :: 3.9", |
23 |
| - "Programming Language :: Python :: 3.10", |
24 |
| - "Programming Language :: Python :: 3.11", |
25 |
| - "Programming Language :: Python :: 3.12", |
26 |
| - "Programming Language :: Python :: 3.13", |
27 |
| - "Operating System :: OS Independent", |
28 |
| - "Topic :: Software Development :: Libraries :: Python Modules", |
29 |
| - "License :: OSI Approved :: MIT License", |
30 |
| -] |
31 |
| - |
32 |
| -[project.urls] |
33 |
| -Homepage = "https://openai.github.io/openai-agents-python/" |
34 |
| -Repository = "https://github.com/openai/openai-agents-python" |
35 |
| - |
36 |
| -[project.optional-dependencies] |
37 |
| -voice = ["numpy>=2.2.0, <3; python_version>='3.10'", "websockets>=15.0, <16"] |
38 |
| -viz = ["graphviz>=0.17"] |
39 |
| -litellm = ["litellm>=1.67.4.post1, <2"] |
40 |
| -realtime = ["websockets>=15.0, <16"] |
41 |
| -sqlalchemy = ["SQLAlchemy>=2.0", "asyncpg>=0.29.0"] |
42 |
| - |
43 |
| -[dependency-groups] |
44 |
| -dev = [ |
45 |
| - "mypy", |
46 |
| - "ruff==0.9.2", |
47 |
| - "pytest", |
48 |
| - "pytest-asyncio", |
49 |
| - "pytest-mock>=3.14.0", |
50 |
| - "rich>=13.1.0, <14", |
51 |
| - "mkdocs>=1.6.0", |
52 |
| - "mkdocs-material>=9.6.0", |
53 |
| - "mkdocstrings[python]>=0.28.0", |
54 |
| - "mkdocs-static-i18n", |
55 |
| - "coverage>=7.6.12", |
56 |
| - "playwright==1.50.0", |
57 |
| - "inline-snapshot>=0.20.7", |
58 |
| - "pynput", |
59 |
| - "types-pynput", |
60 |
| - "sounddevice", |
61 |
| - "textual", |
62 |
| - "websockets", |
63 |
| - "graphviz", |
64 |
| - "mkdocs-static-i18n>=1.3.0", |
65 |
| - "eval-type-backport>=0.2.2", |
66 |
| - "fastapi >= 0.110.0, <1", |
67 |
| - "aiosqlite>=0.21.0", |
68 |
| -] |
69 |
| - |
70 |
| -[tool.uv.workspace] |
71 |
| -members = ["agents"] |
72 |
| - |
73 |
| -[tool.uv.sources] |
74 |
| -agents = { workspace = true } |
75 |
| - |
76 |
| -[build-system] |
77 |
| -requires = ["hatchling"] |
78 |
| -build-backend = "hatchling.build" |
79 |
| - |
80 |
| -[tool.hatch.build.targets.wheel] |
81 |
| -packages = ["src/agents"] |
82 |
| - |
83 |
| - |
84 |
| -[tool.ruff] |
85 |
| -line-length = 100 |
86 |
| -target-version = "py39" |
87 |
| - |
88 |
| -[tool.ruff.lint] |
89 |
| -select = [ |
90 |
| - "E", # pycodestyle errors |
91 |
| - "W", # pycodestyle warnings |
92 |
| - "F", # pyflakes |
93 |
| - "I", # isort |
94 |
| - "B", # flake8-bugbear |
95 |
| - "C4", # flake8-comprehensions |
96 |
| - "UP", # pyupgrade |
97 |
| -] |
98 |
| -isort = { combine-as-imports = true, known-first-party = ["agents"] } |
99 |
| - |
100 |
| -[tool.ruff.lint.pydocstyle] |
101 |
| -convention = "google" |
102 |
| - |
103 |
| -[tool.ruff.lint.per-file-ignores] |
104 |
| -"examples/**/*.py" = ["E501"] |
105 |
| - |
106 |
| -[tool.mypy] |
107 |
| -strict = true |
108 |
| -disallow_incomplete_defs = false |
109 |
| -disallow_untyped_defs = false |
110 |
| -disallow_untyped_calls = false |
111 |
| - |
112 |
| -[[tool.mypy.overrides]] |
113 |
| -module = "sounddevice.*" |
114 |
| -ignore_missing_imports = true |
115 |
| - |
116 |
| -[tool.coverage.run] |
117 |
| -source = ["tests", "src/agents"] |
118 |
| - |
119 |
| -[tool.coverage.report] |
120 |
| -show_missing = true |
121 |
| -sort = "-Cover" |
122 |
| -exclude_also = [ |
123 |
| - # This is only executed while typechecking |
124 |
| - "if TYPE_CHECKING:", |
125 |
| - "@abc.abstractmethod", |
126 |
| - "raise NotImplementedError", |
127 |
| - "logger.debug", |
128 |
| -] |
129 |
| - |
130 |
| -[tool.pytest.ini_options] |
131 |
| -asyncio_mode = "auto" |
132 |
| -asyncio_default_fixture_loop_scope = "session" |
133 |
| -filterwarnings = [ |
134 |
| - # This is a warning that is expected to happen: we have an async filter that raises an exception |
135 |
| - "ignore:coroutine 'test_async_input_filter_fails.<locals>.invalid_input_filter' was never awaited:RuntimeWarning", |
136 |
| -] |
137 |
| -markers = [ |
138 |
| - "allow_call_model_methods: mark test as allowing calls to real model implementations", |
139 |
| -] |
140 |
| - |
141 |
| -[tool.inline-snapshot] |
142 |
| -format-command = "ruff format --stdin-filename {filename}" |
| 1 | +[project] |
| 2 | +name = "openai-agents" |
| 3 | +version = "0.2.11" |
| 4 | +description = "OpenAI Agents SDK" |
| 5 | +readme = "README.md" |
| 6 | +requires-python = ">=3.9" |
| 7 | +license = "MIT" |
| 8 | +authors = [{ name = "OpenAI", email = "[email protected]" }] |
| 9 | +dependencies = [ |
| 10 | + "openai>=1.104.1,<2", |
| 11 | + "pydantic>=2.10, <3", |
| 12 | + "griffe>=1.5.6, <2", |
| 13 | + "typing-extensions>=4.12.2, <5", |
| 14 | + "requests>=2.0, <3", |
| 15 | + "types-requests>=2.0, <3", |
| 16 | + "mcp>=1.11.0, <2; python_version >= '3.10'", |
| 17 | +] |
| 18 | +classifiers = [ |
| 19 | + "Typing :: Typed", |
| 20 | + "Intended Audience :: Developers", |
| 21 | + "Programming Language :: Python :: 3", |
| 22 | + "Programming Language :: Python :: 3.9", |
| 23 | + "Programming Language :: Python :: 3.10", |
| 24 | + "Programming Language :: Python :: 3.11", |
| 25 | + "Programming Language :: Python :: 3.12", |
| 26 | + "Programming Language :: Python :: 3.13", |
| 27 | + "Operating System :: OS Independent", |
| 28 | + "Topic :: Software Development :: Libraries :: Python Modules", |
| 29 | + "License :: OSI Approved :: MIT License", |
| 30 | +] |
| 31 | + |
| 32 | +[project.urls] |
| 33 | +Homepage = "https://openai.github.io/openai-agents-python/" |
| 34 | +Repository = "https://github.com/openai/openai-agents-python" |
| 35 | + |
| 36 | +[project.optional-dependencies] |
| 37 | +voice = ["numpy>=2.2.0, <3; python_version>='3.10'", "websockets>=15.0, <16"] |
| 38 | +viz = ["graphviz>=0.17"] |
| 39 | +litellm = ["litellm>=1.67.4.post1, <2"] |
| 40 | +realtime = ["websockets>=15.0, <16"] |
| 41 | +sqlalchemy = ["SQLAlchemy>=2.0", "asyncpg>=0.29.0"] |
| 42 | +encrypt = ["cryptography>=45.0, <46"] |
| 43 | + |
| 44 | +[dependency-groups] |
| 45 | +dev = [ |
| 46 | + "mypy", |
| 47 | + "ruff==0.9.2", |
| 48 | + "pytest", |
| 49 | + "pytest-asyncio", |
| 50 | + "pytest-mock>=3.14.0", |
| 51 | + "rich>=13.1.0, <14", |
| 52 | + "mkdocs>=1.6.0", |
| 53 | + "mkdocs-material>=9.6.0", |
| 54 | + "mkdocstrings[python]>=0.28.0", |
| 55 | + "mkdocs-static-i18n", |
| 56 | + "coverage>=7.6.12", |
| 57 | + "playwright==1.50.0", |
| 58 | + "inline-snapshot>=0.20.7", |
| 59 | + "pynput", |
| 60 | + "types-pynput", |
| 61 | + "sounddevice", |
| 62 | + "textual", |
| 63 | + "websockets", |
| 64 | + "graphviz", |
| 65 | + "mkdocs-static-i18n>=1.3.0", |
| 66 | + "eval-type-backport>=0.2.2", |
| 67 | + "fastapi >= 0.110.0, <1", |
| 68 | + "aiosqlite>=0.21.0", |
| 69 | +] |
| 70 | + |
| 71 | +[tool.uv.workspace] |
| 72 | +members = ["agents"] |
| 73 | + |
| 74 | +[tool.uv.sources] |
| 75 | +agents = { workspace = true } |
| 76 | + |
| 77 | +[build-system] |
| 78 | +requires = ["hatchling"] |
| 79 | +build-backend = "hatchling.build" |
| 80 | + |
| 81 | +[tool.hatch.build.targets.wheel] |
| 82 | +packages = ["src/agents"] |
| 83 | + |
| 84 | + |
| 85 | +[tool.ruff] |
| 86 | +line-length = 100 |
| 87 | +target-version = "py39" |
| 88 | + |
| 89 | +[tool.ruff.lint] |
| 90 | +select = [ |
| 91 | + "E", # pycodestyle errors |
| 92 | + "W", # pycodestyle warnings |
| 93 | + "F", # pyflakes |
| 94 | + "I", # isort |
| 95 | + "B", # flake8-bugbear |
| 96 | + "C4", # flake8-comprehensions |
| 97 | + "UP", # pyupgrade |
| 98 | +] |
| 99 | +isort = { combine-as-imports = true, known-first-party = ["agents"] } |
| 100 | + |
| 101 | +[tool.ruff.lint.pydocstyle] |
| 102 | +convention = "google" |
| 103 | + |
| 104 | +[tool.ruff.lint.per-file-ignores] |
| 105 | +"examples/**/*.py" = ["E501"] |
| 106 | + |
| 107 | +[tool.mypy] |
| 108 | +strict = true |
| 109 | +disallow_incomplete_defs = false |
| 110 | +disallow_untyped_defs = false |
| 111 | +disallow_untyped_calls = false |
| 112 | + |
| 113 | +[[tool.mypy.overrides]] |
| 114 | +module = "sounddevice.*" |
| 115 | +ignore_missing_imports = true |
| 116 | + |
| 117 | +[tool.coverage.run] |
| 118 | +source = ["tests", "src/agents"] |
| 119 | + |
| 120 | +[tool.coverage.report] |
| 121 | +show_missing = true |
| 122 | +sort = "-Cover" |
| 123 | +exclude_also = [ |
| 124 | + # This is only executed while typechecking |
| 125 | + "if TYPE_CHECKING:", |
| 126 | + "@abc.abstractmethod", |
| 127 | + "raise NotImplementedError", |
| 128 | + "logger.debug", |
| 129 | +] |
| 130 | + |
| 131 | +[tool.pytest.ini_options] |
| 132 | +asyncio_mode = "auto" |
| 133 | +asyncio_default_fixture_loop_scope = "session" |
| 134 | +filterwarnings = [ |
| 135 | + # This is a warning that is expected to happen: we have an async filter that raises an exception |
| 136 | + "ignore:coroutine 'test_async_input_filter_fails.<locals>.invalid_input_filter' was never awaited:RuntimeWarning", |
| 137 | +] |
| 138 | +markers = [ |
| 139 | + "allow_call_model_methods: mark test as allowing calls to real model implementations", |
| 140 | +] |
| 141 | + |
| 142 | +[tool.inline-snapshot] |
| 143 | +format-command = "ruff format --stdin-filename {filename}" |
0 commit comments