From 0517682a54bef244d091b2463297313f0166070d Mon Sep 17 00:00:00 2001 From: Na'aman Hirschfeld Date: Tue, 16 Jul 2024 21:26:05 +0200 Subject: [PATCH] chore: fix py3.9 compat issues --- .pre-commit-config.yaml | 2 +- gitmind/cli/_utils.py | 4 ++-- gitmind/cli/commands/commit.py | 4 ++-- gitmind/config.py | 8 +++----- gitmind/prompts/describe_commit.py | 4 ++-- gitmind/prompts/grade_commit.py | 2 +- pdm.lock | 13 ++++++++++++- pyproject.toml | 1 + 8 files changed, 24 insertions(+), 14 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d9220c7..f703571 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,5 +1,5 @@ default_language_version: - python: python3.12 + python: python3.9 repos: - repo: https://github.com/alessandrojcm/commitlint-pre-commit-hook rev: v9.16.0 diff --git a/gitmind/cli/_utils.py b/gitmind/cli/_utils.py index fb5ac88..eb240ca 100644 --- a/gitmind/cli/_utils.py +++ b/gitmind/cli/_utils.py @@ -62,7 +62,7 @@ def get_or_set_cli_context(ctx: Context, **kwargs: Any) -> CLIContext: ctx.obj = CLIContext(settings=settings, repo=get_or_clone_repository(target_repo)) return cast(CLIContext, ctx.obj) except ValidationError as e: - field_names = "\n".join([f"-\t{value["loc"][0]}" for value in e.errors()]) + field_names = "\n".join([f"-\t{value['loc'][0]}" for value in e.errors()]) raise UsageError( f"Invalid configuration settings. The following options are required:\n\n{field_names}", ) from e @@ -91,7 +91,7 @@ def global_options() -> Callable[[Callable[P, T]], Callable[P, T]]: options: list[Callable[[Callable[P, T]], Callable[P, T]]] = [] for field_name, field_info in sorted(GitMindSettings.model_fields.items()): - option_param = f"--{field_name.replace("_", "-")}" + option_param = f"--{field_name.replace('_', '-')}" if isinstance(field_info.annotation, _LiteralGenericAlias): # we have a generic type and all its args are strings, we can assume this is a Literal - so we can trust that args are choice values option_type: Choice | type = Choice(list(field_info.annotation.__args__)) diff --git a/gitmind/cli/commands/commit.py b/gitmind/cli/commands/commit.py index d9fcfb1..ddc5364 100644 --- a/gitmind/cli/commands/commit.py +++ b/gitmind/cli/commands/commit.py @@ -24,7 +24,7 @@ async def handle_describe(ctx: Context, commit_hash: str) -> CommitDescriptionRe commit_statistics, commit_metadata, diff = extract_commit_data(repo=cli_ctx["repo"], commit_hex=commit_hash) debug_echo( cli_ctx, - f"Retrieved commit {commit_hash}: {commit_metadata["message"]}\n\ncommit_data: {dumps(commit_statistics, indent=2)}", + f"Retrieved commit {commit_hash}: {commit_metadata['message']}\n\ncommit_data: {dumps(commit_statistics, indent=2)}", ) handler = DescribeCommitHandler( client=cli_ctx["settings"].llm_client, @@ -55,7 +55,7 @@ async def handle_grade(ctx: Context, commit_hash: str) -> dict[str, CommitGradin commit_statistics, commit_metadata, diff = extract_commit_data(repo=cli_ctx["repo"], commit_hex=commit_hash) debug_echo( cli_ctx, - f"Retrieved commit {commit_hash}: {commit_metadata["message"]}\n\ncommit_data: {dumps(commit_statistics, indent=2)}", + f"Retrieved commit {commit_hash}: {commit_metadata['message']}\n\ncommit_data: {dumps(commit_statistics, indent=2)}", ) handler = GradeCommitHandler( diff --git a/gitmind/config.py b/gitmind/config.py index 419f107..0fa91da 100644 --- a/gitmind/config.py +++ b/gitmind/config.py @@ -4,9 +4,10 @@ from pathlib import Path from re import Pattern from re import compile as compile_regex -from typing import TYPE_CHECKING, Annotated, Any, Final, Literal +from typing import Annotated, Any, Final, Literal from pydantic import DirectoryPath, Field, SecretStr, field_validator, model_validator +from pydantic_core import Url # noqa: TCH002 from pydantic_settings import ( BaseSettings, JsonConfigSettingsSource, @@ -17,10 +18,7 @@ YamlConfigSettingsSource, ) -if TYPE_CHECKING: - from pydantic_core import Url - - from gitmind.llm.base import LLMClient +from gitmind.llm.base import LLMClient # noqa: TCH001 CONFIG_FILE_NAME: Final[str] = "gitmind-config" diff --git a/gitmind/prompts/describe_commit.py b/gitmind/prompts/describe_commit.py index b78d1fd..d86b8ff 100644 --- a/gitmind/prompts/describe_commit.py +++ b/gitmind/prompts/describe_commit.py @@ -122,9 +122,9 @@ async def __call__( # type: ignore[override] Commit description result. """ describe_commit_prompt = ( - f"**Commit Message**:{metadata["message"]}\n\n" + f"**Commit Message**:{metadata['message']}\n\n" f"**Commit Statistics**:\n{titleize_commit_statistics(statistics)}\n\n" - f"**Per file breakdown**:\n{serialize(statistics["files_changed"]).decode()}\n\n" + f"**Per file breakdown**:\n{serialize(statistics['files_changed']).decode()}\n\n" f"**Commit Diff**:\n" ) diff --git a/gitmind/prompts/grade_commit.py b/gitmind/prompts/grade_commit.py index 5288479..4f56dbf 100644 --- a/gitmind/prompts/grade_commit.py +++ b/gitmind/prompts/grade_commit.py @@ -66,7 +66,7 @@ async def __call__( # type: ignore[override] commit_evaluation_prompt = ( f"Evaluate and grade a git commit based on the following criteria:\n{evaluation_instructions}\n\n" - f"**Commit Message**:{metadata["message"]}\n\n" + f"**Commit Message**:{metadata['message']}\n\n" f"**Commit Diff**:\n{diff}" ) diff --git a/pdm.lock b/pdm.lock index 78ed7d7..830aecd 100644 --- a/pdm.lock +++ b/pdm.lock @@ -5,7 +5,7 @@ groups = ["default", "dev", "openai", "groq", "cli"] strategy = ["cross_platform", "inherit_metadata"] lock_version = "4.4.2" -content_hash = "sha256:7d81a0ad37a05f953ee37441492044d121c5eac4d7ccaad3c625b178c517074f" +content_hash = "sha256:fbe69ed0773012f18e620d5b2e0f3bf89d4c3802907aeb066fa1e77916c9bc83" [[package]] name = "annotated-types" @@ -138,6 +138,17 @@ files = [ {file = "distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed"}, ] +[[package]] +name = "eval-type-backport" +version = "0.2.0" +requires_python = ">=3.8" +summary = "Like `typing._eval_type`, but lets older Python versions use newer typing features." +groups = ["default"] +files = [ + {file = "eval_type_backport-0.2.0-py3-none-any.whl", hash = "sha256:ac2f73d30d40c5a30a80b8739a789d6bb5e49fdffa66d7912667e2015d9c9933"}, + {file = "eval_type_backport-0.2.0.tar.gz", hash = "sha256:68796cfbc7371ebf923f03bdf7bef415f3ec098aeced24e054b253a0e78f7b37"}, +] + [[package]] name = "exceptiongroup" version = "1.2.2" diff --git a/pyproject.toml b/pyproject.toml index e05d11b..c667d35 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,6 +39,7 @@ dependencies = [ "pydantic-settings>=2.3.4", "pygit2>=1.15.1", "typing-extensions>=4.12.2", + "eval-type-backport>=0.2.0", ] [project.urls]