diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 4e54ff3..8da0eaf 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,7 +1,7 @@ # See https://pre-commit.com for more information # See https://pre-commit.com/hooks.html for more hooks exclude: "CHANGELOG.md|.copier-answers.yml" -default_stages: [commit] +default_stages: [pre-commit] ci: autofix_commit_msg: "chore(pre-commit.ci): auto fixes" @@ -9,12 +9,12 @@ ci: repos: - repo: https://github.com/commitizen-tools/commitizen - rev: v3.30.0 + rev: v3.30.1 hooks: - id: commitizen stages: [commit-msg] - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.6.0 + rev: v5.0.0 hooks: - id: debug-statements - id: check-builtin-literals @@ -28,11 +28,11 @@ repos: - id: end-of-file-fixer - id: trailing-whitespace - repo: https://github.com/python-poetry/poetry - rev: 1.8.4 + rev: 1.8.0 hooks: - id: poetry-check - repo: https://github.com/pre-commit/mirrors-prettier - rev: v3.1.0 + rev: v4.0.0-alpha.8 hooks: - id: prettier args: ["--tab-width", "2"] @@ -50,7 +50,7 @@ repos: hooks: - id: isort - repo: https://github.com/psf/black - rev: 23.12.1 + rev: 24.10.0 hooks: - id: black # - repo: https://github.com/codespell-project/codespell @@ -58,7 +58,7 @@ repos: # hooks: # - id: codespell - repo: https://github.com/PyCQA/flake8 - rev: 6.1.0 + rev: 7.1.1 hooks: - id: flake8 # - repo: https://github.com/pre-commit/mirrors-mypy @@ -72,7 +72,7 @@ repos: - id: bandit args: [-x, tests] - repo: https://github.com/srstevenson/nb-clean - rev: "3.3.0" + rev: "4.0.1" hooks: - id: nb-clean args: [--preserve-cell-outputs] diff --git a/src/ut_course_catalog/analysis.py b/src/ut_course_catalog/analysis.py index 6633526..cb5972e 100644 --- a/src/ut_course_catalog/analysis.py +++ b/src/ut_course_catalog/analysis.py @@ -61,7 +61,16 @@ def parse_scoring_method(text: str | None) -> set[ScoringMethod]: ScoringMethod.課題: ["課題", "assign", "宿題"], ScoringMethod.レポート: ["レポート", "レポ", "report"], ScoringMethod.発表: ["発表", "presenta", "プレゼン"], - ScoringMethod.出席: ["出席", "発表", "参加", "attend", "平常", "出欠", "リアペ", "リアクション"], + ScoringMethod.出席: [ + "出席", + "発表", + "参加", + "attend", + "平常", + "出欠", + "リアペ", + "リアクション", + ], } result: set[ScoringMethod] = set() if text is None: @@ -95,7 +104,11 @@ def encode_common_code(common_codes: pd.Series[CommonCode]) -> pd.DataFrame: def to_perfect_dataframe(df: pd.DataFrame) -> pd.DataFrame: df = df.copy() df = pd.concat( - [df, encode_scoring_method(df["成績評価方法"]), encode_common_code(df["共通科目コード"])], + [ + df, + encode_scoring_method(df["成績評価方法"]), + encode_common_code(df["共通科目コード"]), + ], axis=1, ) return df diff --git a/src/ut_course_catalog/common.py b/src/ut_course_catalog/common.py index 12f0e59..dac9040 100644 --- a/src/ut_course_catalog/common.py +++ b/src/ut_course_catalog/common.py @@ -93,8 +93,10 @@ async def wait(self) -> None: def wraps( self, - func: WrappedFn[WrappedFnParam, WrappedFnResult] - | WrappedAwaitableFn[WrappedFnParam, WrappedFnResult], + func: ( + WrappedFn[WrappedFnParam, WrappedFnResult] + | WrappedAwaitableFn[WrappedFnParam, WrappedFnResult] + ), ) -> WrappedFn[WrappedFnParam, WrappedFnResult]: @wraps(func) async def wrapper( diff --git a/src/ut_course_catalog/ja.py b/src/ut_course_catalog/ja.py index 540797d..f445cfb 100644 --- a/src/ut_course_catalog/ja.py +++ b/src/ut_course_catalog/ja.py @@ -649,7 +649,9 @@ def _parse_weekday_period(period_text: str) -> set[tuple[Weekday, int]]: period_texts = period_text.split("、") def parse_one(period: str) -> tuple[Weekday, int] | None: - w = Weekday([weekday in period for weekday in list("月火水木金土日")].index(True)) + w = Weekday( + [weekday in period for weekday in list("月火水木金土日")].index(True) + ) reres = re.search(r"\d+", period) if not reres: # raise ValueError(f"Invalid period: {period}") @@ -778,7 +780,9 @@ def iterable_or_type_to_iterable( x.value * 100 + 1000 for x in iterable_or_type_to_iterable(params.曜日) ] if params.講義使用言語: - facet["course_language_codes"] = iterable_or_type_to_iterable(params.講義使用言語) + facet["course_language_codes"] = iterable_or_type_to_iterable( + params.講義使用言語 + ) if params.実務経験のある教員による授業科目: facet["operational_experience_flag"] = iterable_or_type_to_iterable( params.実務経験のある教員による授業科目 @@ -1094,8 +1098,9 @@ async def fetch_search_detail_all( *, year: int = current_fiscal_year(), use_tqdm: bool = True, - on_initial_request: None - | (Callable[[SearchResult], Awaitable[None] | None]) = None, + on_initial_request: None | ( + Callable[[SearchResult], Awaitable[None] | None] + ) = None, on_detail_request: Callable[[Details], Awaitable[None] | None] | None = None, ) -> Iterable[Details]: """Fetch all search results by repeatedly calling `fetch_search` and `fetch_detail`. @@ -1144,7 +1149,9 @@ async def on_initial_request_wrapper(search_result: SearchResult): async def inner(item): async with s: try: - details = await self.retry(self.fetch_detail)(item.時間割コード, year) + details = await self.retry(self.fetch_detail)( + item.時間割コード, year + ) except Exception as e: self._logger.error(e) return None