From 95d3eaacadf42cb364a012b0e7c04d98973dab1c Mon Sep 17 00:00:00 2001 From: Pranav Rajpal <78008260+pranavrajpal@users.noreply.github.com> Date: Wed, 4 Aug 2021 14:01:43 -0700 Subject: [PATCH] Use binary file objects with tomli tomli recently (in 1.2.0) deprecated support for passing file objects opened in text mode to `tomli.load`, which is causing DeprecationWarnings in CI runs (see https://app.travis-ci.com/github/python/mypy/jobs/529150228 for an example). This updates the 2 uses of tomli in mypy to open the toml file in binary mode, and also updates the requirements for tomli to be at least 1.1.0 (because support for binary file objects was added in 1.1.0). --- mypy-requirements.txt | 2 +- mypy/config_parser.py | 2 +- mypy/modulefinder.py | 2 +- setup.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mypy-requirements.txt b/mypy-requirements.txt index e7e2af80089b..784cc81f3ec1 100644 --- a/mypy-requirements.txt +++ b/mypy-requirements.txt @@ -1,4 +1,4 @@ typing_extensions>=3.7.4 mypy_extensions>=0.4.3,<0.5.0 typed_ast>=1.4.0,<1.5.0 -tomli<2.0.0 +tomli>=1.1.0,<2.0.0 diff --git a/mypy/config_parser.py b/mypy/config_parser.py index d5552186ecc7..98b2aedd69f9 100644 --- a/mypy/config_parser.py +++ b/mypy/config_parser.py @@ -168,7 +168,7 @@ def parse_config_file(options: Options, set_strict_flags: Callable[[], None], continue try: if is_toml(config_file): - with open(config_file, encoding="utf-8") as f: + with open(config_file, 'rb') as f: toml_data = tomli.load(f) # Filter down to just mypy relevant toml keys toml_data = toml_data.get('tool', {}) diff --git a/mypy/modulefinder.py b/mypy/modulefinder.py index 6cebd7db8bc0..e8a748bab12b 100644 --- a/mypy/modulefinder.py +++ b/mypy/modulefinder.py @@ -434,7 +434,7 @@ def _is_compatible_stub_package(self, stub_dir: str) -> bool: if os.path.isfile(metadata_fnam): # Delay import for a possible minor performance win. import tomli - with open(metadata_fnam, 'r', encoding="utf-8") as f: + with open(metadata_fnam, 'rb') as f: metadata = tomli.load(f) if self.python_major_ver == 2: return bool(metadata.get('python2', False)) diff --git a/setup.py b/setup.py index 50974068a84c..10c70d4ffc42 100644 --- a/setup.py +++ b/setup.py @@ -193,7 +193,7 @@ def run(self): install_requires=["typed_ast >= 1.4.0, < 1.5.0; python_version<'3.8'", 'typing_extensions>=3.7.4', 'mypy_extensions >= 0.4.3, < 0.5.0', - 'tomli<2.0.0', + 'tomli >= 1.1.0, < 2.0.0', ], # Same here. extras_require={'dmypy': 'psutil >= 4.0', 'python2': 'typed_ast >= 1.4.0, < 1.5.0'},