8000 Support for Python3.9 type hint syntax by matthew-c-lee · Pull Request #2795 · glideapps/quicktype · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Support for Python3.9 type hint syntax #2795

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

matthew-c-lee
Copy link

Description

In python 3.9 and onwards, some generics are type hinted differently (Dict, List should be lowercase dict, list instead) as well as some syntax changes (Optional[Type] syntax replaced with Type | None syntax, along with Union[Type1, Type2] replaced with Type1 | Type2)

I added a new option to pythonOptions.features, a boolean "builtinGenerics". In python 3.9 it's enabled, and disabled for the previous versions. I use pretty simple logic to do it, just a couple of if statements and ternary operators to account for the new syntax.

Some ways quotes are handled around types was changed to support wrapping around unions. (see _suppressQuotes in PythonRenderer's namedType method)

Motivation and Context

To keep up with newer Python syntax.

How Has This Been Tested?

Tested with python 3.7 and python 3.9 using the scripted tests that use mypy (confirms that the syntax is valid, and that with python 3.7, it's not trying to use any of the new syntax) along with looking at the outputs manually and confirming that 3.9 uses the newer syntax.

@matthew-c-lee matthew-c-lee changed the title Python3.9 Support for Python3.9 type hint syntax Jun 26, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant
0