@@ -179,6 +179,67 @@ reportOverlappingOverload = false
179179reportImportCycles  = false 
180180reportPrivateUsage  = false 
181181
182+ [tool .mypy ]
183+ pretty  = true 
184+ show_error_codes  = true 
185+ 
186+ #  Exclude _files.py because mypy isn't smart enough to apply
187+ #  the correct type narrowing and as this is an internal module
188+ #  it's fine to just use Pyright.
189+ # 
190+ #  We also exclude our `tests` as mypy doesn't always infer
191+ #  types correctly and Pyright will still catch any type errors.
192+ # 
193+ #  realtime examples use inline `uv` script dependencies
194+ #  which means it can't be type checked
195+ exclude  = [
196+   ' src/openai/_files.py' 
197+   ' _dev/.*.py' 
198+   ' tests/.*' 
199+   ' src/openai/_utils/_logs.py' 
200+   ' examples/realtime/audio_util.py' 
201+   ' examples/realtime/push_to_talk_app.py' 
202+ ]
203+ 
204+ strict_equality  = true 
205+ implicit_reexport  = true 
206+ check_untyped_defs  = true 
207+ no_implicit_optional  = true 
208+ 
209+ warn_return_any  = true 
210+ warn_unreachable  = true 
211+ warn_unused_configs  = true 
212+ 
213+ #  Turn these options off as it could cause conflicts
214+ #  with the Pyright options.
215+ warn_unused_ignores  = false 
216+ warn_redundant_casts  = false 
217+ 
218+ disallow_any_generics  = true 
219+ disallow_untyped_defs  = true 
220+ disallow_untyped_calls  = true 
221+ disallow_subclassing_any  = true 
222+ disallow_incomplete_defs  = true 
223+ disallow_untyped_decorators  = true 
224+ cache_fine_grained  = true 
225+ 
226+ #  By default, mypy reports an error if you assign a value to the result
227+ #  of a function call that doesn't return anything. We do this in our test
228+ #  cases:
229+ #  ```
230+ #  result = ...
231+ #  assert result is None
232+ #  ```
233+ #  Changing this codegen to make mypy happy would increase complexity
234+ #  and would not be worth it.
235+ disable_error_code  = " func-returns-value,overload-cannot-match" 
236+ 
237+ #  https://github.com/python/mypy/issues/12162
238+ [[tool .mypy .overrides ]]
239+ module  = " black.files.*" 
240+ ignore_errors  = true 
241+ ignore_missing_imports  = true 
242+ 
182243[tool .ruff ]
183244line-length  = 120 
184245output-format  = " grouped" 
0 commit comments