Skip to content

Commit

Permalink
Chore: Update to mypy 1.10
Browse files Browse the repository at this point in the history
  • Loading branch information
amotl committed Jun 4, 2024
1 parent 329ae4f commit f3c6744
Show file tree
Hide file tree
Showing 13 changed files with 38 additions and 24 deletions.
3 changes: 1 addition & 2 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,4 @@ updates:
- "> 5.6.4"
- dependency-name: mypy
versions:
- "> 0.812"

- "< 1.11"
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,6 @@ repos:
types:
- python
- repo: https://github.com/pre-commit/mirrors-mypy
rev: "v0.812"
rev: "v1.10.0"
hooks:
- id: mypy
6 changes: 3 additions & 3 deletions croud/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import os
from argparse import Namespace
from platform import python_version
from typing import Any, Callable, Dict, Optional, Tuple
from typing import Any, Callable, Dict, Optional, Tuple, cast

import requests
from yarl import URL
Expand Down Expand Up @@ -108,7 +108,7 @@ def __init__(
"Only the token will be used."
)

self.session.cookies["session"] = self._token
self.session.cookies["session"] = cast(str, self._token)
if _verify_ssl is False:
self.session.verify = False
if region:
Expand Down Expand Up @@ -156,7 +156,7 @@ def request(
response = self.session.request(method.value, url, **kwargs)
except requests.RequestException as e:
message = (
f"Failed to perform request on '{e.request.url}'. "
f"Failed to perform request on '{e.request and e.request.url}'. "
f"Original error was: '{e}'"
)
return None, {"message": message, "success": False}
Expand Down
13 changes: 8 additions & 5 deletions croud/printer.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import functools
import json
import sys
from typing import Any, Callable, Dict, List, Optional, Type, Union
from typing import Any, Callable, Dict, List, Optional, Type, Union, cast

import yaml
from colorama import Fore, Style
Expand All @@ -30,9 +30,12 @@
from croud.tools.spinner import HALO
from croud.typing import JsonDict

RowsType = Union[List[JsonDict], JsonDict]
ErrorsType = Union[Dict[str, Union[str, RowsType]], None]


def print_format(
rows: Union[List[JsonDict], JsonDict],
rows: RowsType,
format: str,
keys: Optional[List[str]] = None,
transforms: Optional[Dict[str, Callable[[Any], Any]]] = None,
Expand All @@ -48,17 +51,17 @@ def print_format(

def print_response(
data,
errors,
errors: ErrorsType,
output_fmt,
success_message: str = None,
keys: List[str] = None,
transforms: Dict[str, Callable[[Any], Any]] = None,
):
if errors:
if "message" in errors:
print_error(errors["message"])
print_error(cast(str, errors["message"]))
if "errors" in errors:
print_format(errors["errors"], "json")
print_format(cast(RowsType, errors["errors"]), "json")
else:
print_format(errors, "json")
return
Expand Down
2 changes: 1 addition & 1 deletion croud/regions/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ def regions_delete(args: Namespace) -> None:
print_response(
data=data,
errors={
"message": region_errors.get("message"),
"message": region_errors.get("message", "unknown error"),
"errors": {"related_resources": region_errors.get("related_resources")},
},
output_fmt=get_output_format(args),
Expand Down
4 changes: 2 additions & 2 deletions croud/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ def do_GET(self):
msg = SetTokenHandler.DUPLICATE_TOKEN_MSG
else:
token = query["token"][0]
self.server.on_token(token)
self.server.on_token(token) # type: ignore[attr-defined]
code = 200
msg = SetTokenHandler.SUCCESS_MSG
self.send_response(code)
Expand All @@ -69,7 +69,7 @@ def do_GET(self):
# We cannot use `self.server.shutdown()` here because we're in the same
# thread as the one who'd be waiting for the shutdown, thus causing a
# deadlock.
self.server._BaseServer__shutdown_request = True
self.server._BaseServer__shutdown_request = True # type: ignore[attr-defined]

def log_request(self, *args, **kwargs):
# Just don't log anything ...
Expand Down
6 changes: 6 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[tool.mypy]
check_untyped_defs = true
ignore_missing_imports = true
implicit_optional = true
install_types = true
non_interactive = true
3 changes: 0 additions & 3 deletions setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,6 @@ multi_line_output = 3
addopts = --doctest-modules --doctest-glob='**/*.rst' --ignore=docs
doctest_optionflags = NORMALIZE_WHITESPACE IGNORE_EXCEPTION_DETAIL ELLIPSIS

[mypy]
ignore_missing_imports = true

[flake8]
max-line-length = 88
ignore = E203 W503
4 changes: 3 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
# with Crate these terms will supersede the license and you may use the
# software solely pursuant to the terms of the relevant commercial agreement.

# type: ignore

from pkg_resources.extern.packaging.version import Version
from setuptools import find_packages, setup

Expand Down Expand Up @@ -64,7 +66,7 @@
"black==24.4.2",
"flake8==7.0.0",
"isort==5.12.0",
"mypy==0.812",
"mypy<1.11",
],
},
python_requires=">=3.8",
Expand Down
8 changes: 4 additions & 4 deletions tests/commands/test_clusters.py
Original file line number Diff line number Diff line change
Expand Up @@ -1968,7 +1968,7 @@ def test_export_job_create(mock_client_request, mock_copy, save_file):

with mock.patch("requests.get", return_value=mock_response):
with mock.patch("builtins.open", mock.mock_open(read_data="id,name,path")):
cmd = (
cmd = [
"croud",
"clusters",
"export-jobs",
Expand All @@ -1981,12 +1981,12 @@ def test_export_job_create(mock_client_request, mock_copy, save_file):
"my-table",
"--compression",
"gzip",
)
]
if save_file:
cmd = cmd + (
cmd += [
"--save-as",
"./my_table.csv",
)
]
call_command(*cmd)

body = {
Expand Down
5 changes: 4 additions & 1 deletion tests/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ def test_send_user_agent_header(config):
client = Client(config.endpoint, region="bregenz.a1", _verify_ssl=False)
resp_data, errors = client.get("/client-headers")
expected_ua = f"Croud/{croud.__version__} Python/{python_version()}"
assert isinstance(resp_data, dict)
assert resp_data["User-Agent"] == expected_ua


Expand All @@ -90,6 +91,7 @@ def test_send_user_agent_header(config):
def test_send_region_header(argument, is_header_present, config):
client = Client(config.endpoint, region=argument, _verify_ssl=False)
resp_data, errors = client.get("/client-headers")
assert isinstance(resp_data, dict)
if is_header_present:
assert resp_data["X-Region"] == argument # type: ignore
else:
Expand All @@ -116,8 +118,8 @@ def test_error_message_on_connection_error(config):
)
client = Client(config.endpoint, _verify_ssl=False)
resp_data, errors = client.get("/me")
print(resp_data, errors)
assert resp_data is None
assert isinstance(errors, dict)
assert expected_message_re.match(errors["message"]) is not None
assert errors["success"] is False

Expand All @@ -127,4 +129,5 @@ def test_auth_with_key_and_secret(config):
config.endpoint, key="some-key", secret="some-secret", _verify_ssl=False
)
resp_data, errors = client.get("/client-headers")
assert isinstance(resp_data, dict)
assert resp_data["Authorization"] == "Basic c29tZS1rZXk6c29tZS1zZWNyZXQ="
2 changes: 2 additions & 0 deletions tests/test_printer.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
# with Crate these terms will supersede the license and you may use the
# software solely pursuant to the terms of the relevant commercial agreement.

# type: ignore

import pytest

from croud.printer import (
Expand Down
4 changes: 3 additions & 1 deletion tests/util/fake_cloud.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ def __init__(self, *args, **kwargs):
here = pathlib.Path(__file__)
self.ssl_cert = here.parent / "server.crt"
ssl_key = here.parent / "server.key"
self.socket = ssl.wrap_socket(
self.socket = ssl.wrap_socket( # type: ignore[attr-defined]
self.socket,
keyfile=str(ssl_key),
certfile=str(self.ssl_cert),
Expand All @@ -61,6 +61,8 @@ def __init__(self, *args, **kwargs):

class FakeCrateDBCloudRequestHandler(BaseHTTPRequestHandler):
def __init__(self, *args, **kwargs):
self.body = None
self.cookies = {}
self.routes: Dict[str, Callable[[], Response]] = {
"/data/data-key": self.data_data_key,
"/data/no-key": self.data_no_key,
Expand Down

0 comments on commit f3c6744

Please sign in to comment.