Skip to content

Commit

Permalink
Use tomllib on Python 3.11 (#4476)
Browse files Browse the repository at this point in the history
* Use tomllib on Python 3.11

* changelog
  • Loading branch information
hauntsaninja committed Sep 5, 2022
1 parent 317bef3 commit 5a2ddec
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 11 deletions.
1 change: 1 addition & 0 deletions changes/4476-hauntsaninja.md
@@ -0,0 +1 @@
Use `tomllib` on Python 3.11 when parsing `mypy` configuration.
26 changes: 15 additions & 11 deletions pydantic/mypy.py
@@ -1,3 +1,4 @@
import sys
from configparser import ConfigParser
from typing import Any, Callable, Dict, List, Optional, Set, Tuple, Type as TypingType, Union

Expand Down Expand Up @@ -820,18 +821,21 @@ def parse_toml(config_file: str) -> Optional[Dict[str, Any]]:
return None

read_mode = 'rb'
try:
import tomli as toml_
except ImportError:
# older versions of mypy have toml as a dependency, not tomli
read_mode = 'r'
if sys.version_info >= (3, 11):
import tomllib as toml_
else:
try:
import toml as toml_ # type: ignore[no-redef]
except ImportError: # pragma: no cover
import warnings

warnings.warn('No TOML parser installed, cannot read configuration from `pyproject.toml`.')
return None
import tomli as toml_
except ImportError:
# older versions of mypy have toml as a dependency, not tomli
read_mode = 'r'
try:
import toml as toml_ # type: ignore[no-redef]
except ImportError: # pragma: no cover
import warnings

warnings.warn('No TOML parser installed, cannot read configuration from `pyproject.toml`.')
return None

with open(config_file, read_mode) as rf:
return toml_.load(rf) # type: ignore[arg-type]

0 comments on commit 5a2ddec

Please sign in to comment.