Skip to content

poetry update: ruff, mypyのバージョンアップ #708

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

Merged
merged 4 commits into from
Mar 21, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 25 additions & 13 deletions annofabapi/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from collections.abc import Collection
from functools import wraps
from json import JSONDecodeError
from typing import Any, Callable, Optional, Union
from typing import Any, Callable, Optional, TypeVar, Union, overload

import backoff
import requests
Expand Down Expand Up @@ -34,7 +34,7 @@ def _read_mfa_code_from_stdin() -> str:
return inputted_mfa_code


def _mask_senritive_value_for_dict(data: dict[str, Any], keys: Collection[str]) -> dict[str, Any]:
def _mask_sensitive_value_for_dict(data: dict[str, Any], keys: Collection[str]) -> dict[str, Any]:
"""
dictに含まれているセンシティブな情報を"***"でマスクします。

Expand Down Expand Up @@ -108,7 +108,7 @@ def mask_str_rquest_body(str_request_body: str) -> Any: # noqa: ANN401

if 400 <= response.status_code < 600:
# logにAuthorizationを出力しないようにマスクする
headers_for_logger = _mask_senritive_value_for_dict(dict(response.request.headers), {"Authorization"})
headers_for_logger = _mask_sensitive_value_for_dict(dict(response.request.headers), {"Authorization"})

# request_bodyのpassword関係をマスクして、logに出力する
request_body_for_logger: Optional[Any] = None
Expand Down Expand Up @@ -140,28 +140,40 @@ def mask_str_rquest_body(str_request_body: str) -> Any: # noqa: ANN401
)


def _create_request_body_for_logger(data: Any) -> Any: # noqa: ANN401
T = TypeVar("T")


@overload
def _create_request_body_for_logger(data: bytes) -> str:
pass


@overload
def _create_request_body_for_logger(data: T) -> T: ...


def _create_request_body_for_logger(data: Any) -> Any:
"""
ログに出力するためのreqest_bodyを生成する
ログに出力するためのrequest_bodyを生成する
* パスワードやトークンなどの機密情報をマスクする
* bytes型の場合は `(bytes)`と記載する。


Args:
data: request_body

Returns:
ログ出力用のrequest_body
"""
if not isinstance(data, dict):
return data
elif isinstance(data, bytes):
if isinstance(data, bytes):
# bytes型のときは値を出力しても意味がないので、bytesであることが分かるようにする
return "(bytes)"

return _mask_senritive_value_for_dict(
data, keys={"password", "old_password", "new_password", "id_token", "refresh_token", "access_token", "session", "mfa_code"}
)
# dictの場合は機密情報をマスクする
sensitive_keys = {"password", "old_password", "new_password", "id_token", "refresh_token", "access_token", "session", "mfa_code"}
if isinstance(data, dict):
return _mask_sensitive_value_for_dict(data, keys=sensitive_keys)

return data


def _create_query_params_for_logger(params: dict[str, Any]) -> dict[str, Any]:
Expand All @@ -175,7 +187,7 @@ def _create_query_params_for_logger(params: dict[str, Any]) -> dict[str, Any]:
Returns:
ログ出力用のparams
"""
return _mask_senritive_value_for_dict(params, keys={"X-Amz-Security-Token", "X-Amz-Credential"})
return _mask_sensitive_value_for_dict(params, keys={"X-Amz-Security-Token", "X-Amz-Credential"})


def _should_retry_with_status(status_code: int) -> bool:
Expand Down
4 changes: 2 additions & 2 deletions annofabapi/parser.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import abc # noqa: A005
import abc
import json
import os
import zipfile
Expand Down Expand Up @@ -481,7 +481,7 @@ def lazy_parse_simple_annotation_dir(annotation_dir_path: Path) -> Iterator[Simp
return __parse_annotation_dir(annotation_dir_path, SimpleAnnotationDirParser)


def lazy_parse_full_annotation_dir(annotation_dir_path: Path) -> Iterator[SimpleAnnotationParser]:
def lazy_parse_full_annotation_dir(annotation_dir_path: Path) -> Iterator[FullAnnotationParser]:
"""Fullアノテーションzipを展開したディレクトリ内を探索し、各annotationをparse可能なオブジェクトの列を返します。

Args:
Expand Down
2 changes: 1 addition & 1 deletion annofabapi/resource.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import logging # noqa: A005
import logging
import netrc
import os
from typing import Optional, Union
Expand Down
16 changes: 5 additions & 11 deletions annofabapi/wrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -1099,7 +1099,8 @@ def _get_statistics_daily_xxx(
def _get_from_and_to_date_for_statistics_webapi(
self, project_id: str, from_date: Optional[str], to_date: Optional[str]
) -> tuple[datetime.date, datetime.date]:
"""statistics webapi用に、from_date, to_dateを取得する。
"""statistics webapi用に、`datetime.date`型であるfrom_date, to_dateを取得する。
`from_date`または`to_date`がNoneならば、`get_statistics_available_dates` APIで取得した統計情報が存在する期間を参照して、`from_date`と`to_date`を決めます。

Args:
project_id (str): プロジェクトID。
Expand All @@ -1108,13 +1109,7 @@ def _get_from_and_to_date_for_statistics_webapi(

Returns:
tuple[datetime.date, datetime.date]: [description]
"""
if from_date is None:
project, _ = self.api.get_project(project_id)
from_date = project["created_datetime"][0:10] # "YYYY-MM-DD"の部分を抽出
if to_date is None:
to_date = str(datetime.datetime.now(tz=datetime.timezone(datetime.timedelta(hours=9))).date())

""" # noqa: E501
if from_date is None or to_date is None:
dates, _ = self.api.get_statistics_available_dates(project_id)
assert len(dates) > 0
Expand All @@ -1123,9 +1118,8 @@ def _get_from_and_to_date_for_statistics_webapi(
if to_date is None:
to_date = dates[-1]["to"]

DATE_FORMAT = "%Y-%m-%d"
dt_from_date = datetime.datetime.strptime(from_date, DATE_FORMAT).date() # noqa: DTZ007
dt_to_date = datetime.datetime.strptime(to_date, DATE_FORMAT).date() # noqa: DTZ007
dt_from_date = datetime.datetime.fromisoformat(from_date).date()
dt_to_date = datetime.datetime.fromisoformat(to_date).date()
return dt_from_date, dt_to_date

def get_account_daily_statistics(
Expand Down
Loading