microsoft / TypeChat

TypeChat is a library that makes it easy to build natural language interfaces using types.
https://microsoft.github.io/TypeChat/
MIT License
8.06k stars 378 forks source link

[python] Upgrade the imports in examples #220

Open pamelafox opened 3 months ago

pamelafox commented 3 months ago

Pyupgrade recommends:

import asyncio
from typing import Annotated, Literal, TypedDict

import dotenv
from typing_extensions import Doc

As everything but Doc has been in typing since 3.8 or 3.9:

https://docs.python.org/3/library/typing.html#typing.Literal

Apparently Doc is non-standard, interesting discussion on the PEP here: https://discuss.python.org/t/pep-727-documentation-metadata-in-typing/32566/172

It seems unlikely to get accepted, but I assume its the only way to document when using TypedDict? That's what I saw in the examples.

pamelafox commented 3 months ago

Ah but then there's a Pydantic error in 3.11:

Please use typing_extensions.TypedDict instead of typing.TypedDict on Python < 3.12

Dang! I'll just ignore my linter then / add a noqa. That might be worth mentioning in documentation about using TypeChat with TypedDict.

DanielRosenwasser commented 3 months ago

I assume its the only way to document when using TypedDict

So if you use Annotated[SomeType, Doc(...)] we recognize that. Some folks working on Python recommended we future-proof on that.

But we also just recognize Annotated[SomeType, "Some comment string."] because that's so common anyway (and it just feels better to use).

pamelafox commented 3 months ago

Ah okay, I saw that mentioned in the Discourse thread but wasnt sure if that was also a standard. I recommend documenting both of those.