From 22f937f867afe1c949b94dd06e40e2fc1bc54686 Mon Sep 17 00:00:00 2001 From: Yesudeep Mangalapilly Date: Tue, 18 Feb 2025 00:35:41 -0800 Subject: [PATCH] refactor(py): genkit.core.schemas -> genkit.core.schema_types since we also have a schema module (#2011) Rename the module from schemas to schema_types to avoid collisions with another module called 'schema' that will be ported soon. CHANGELOG: - [ ] Update the name of the module. - [ ] Update references to the name. - [ ] Update ruff configuration to avoid ignoring lint in this module. --- py/bin/generate_schema_types | 4 ++-- ...anitize_schemas.py => sanitize_schema_types.py} | 14 ++++++++------ py/packages/genkit/src/genkit/ai/model.py | 2 +- py/packages/genkit/src/genkit/ai/prompt.py | 2 +- py/packages/genkit/src/genkit/core/plugin_abc.py | 2 +- .../genkit/core/{schemas.py => schema_types.py} | 0 py/packages/genkit/src/genkit/veneer/veneer.py | 2 +- .../src/genkit/plugins/vertex_ai/__init__.py | 2 +- py/pyproject.toml | 10 +--------- py/samples/hello/hello.py | 2 +- 10 files changed, 17 insertions(+), 23 deletions(-) rename py/bin/{sanitize_schemas.py => sanitize_schema_types.py} (95%) rename py/packages/genkit/src/genkit/core/{schemas.py => schema_types.py} (100%) diff --git a/py/bin/generate_schema_types b/py/bin/generate_schema_types index 670de032a..af8ffbadb 100755 --- a/py/bin/generate_schema_types +++ b/py/bin/generate_schema_types @@ -6,7 +6,7 @@ set -euo pipefail TOP_DIR=$(git rev-parse --show-toplevel) -SCHEMA_FILE="${TOP_DIR}/py/packages/genkit/src/genkit/core/schemas.py" +SCHEMA_FILE="${TOP_DIR}/py/packages/genkit/src/genkit/core/schema_types.py" # Generate types using configuration from pyproject.toml uv run --directory "${TOP_DIR}/py" datamodel-codegen @@ -15,7 +15,7 @@ uv run --directory "${TOP_DIR}/py" datamodel-codegen #sed -i '' '/^class Model(RootModel\[Any\]):$/,/^ root: Any$/d' "${SCHEMA_FILE}" # Sanitize the generated schema. -python3 "${TOP_DIR}/py/bin/sanitize_schemas.py" "${SCHEMA_FILE}" +python3 "${TOP_DIR}/py/bin/sanitize_schema_types.py" "${SCHEMA_FILE}" # Checks and formatting. uv run --directory "${TOP_DIR}/py" \ diff --git a/py/bin/sanitize_schemas.py b/py/bin/sanitize_schema_types.py similarity index 95% rename from py/bin/sanitize_schemas.py rename to py/bin/sanitize_schema_types.py index 809777fa0..12aaf6518 100644 --- a/py/bin/sanitize_schemas.py +++ b/py/bin/sanitize_schema_types.py @@ -4,9 +4,9 @@ # SPDX-License-Identifier: Apache-2.0 -"""Standalone convenience script used to massage the schemas.py. +"""Standalone convenience script used to massage the schema_types.py. -The `py/packages/genkit/src/genkit/core/schemas.py` file is generated by +The `py/packages/genkit/src/genkit/core/schema_types.py` file is generated by datamodel-codegen. However, since the tool doesn't currently provide options to generate exactly the kind of code we need, we use this convenience script to parse the Python source code, walk the AST, modify it to include the bits we @@ -21,8 +21,8 @@ Pythonic API but serialize to camelCase in order to be compatible with runtimes. - We add a license header -- We add a header indicating that this file has been generated by a code generator - pass. +- We add a header indicating that this file has been generated by a code + generator pass. - We add the ability to use forward references. """ @@ -83,7 +83,8 @@ def has_model_config(self, node: ast.ClassDef) -> bool: return False def visit_ClassDef(self, node: ast.ClassDef) -> ast.ClassDef: # noqa: N802 - """Visit class definitions and handle model_config based on class type.""" + """Visit class definitions and handle model_config based on class + type.""" if self.is_rootmodel_class(node): # Filter out model_config assignments for RootModel classes new_body = [] @@ -111,7 +112,8 @@ def visit_ClassDef(self, node: ast.ClassDef) -> ast.ClassDef: # noqa: N802 node.body.insert(0, self.create_model_config()) self.modified = True else: - # Update existing model_config to include populate_by_name=True + # Update existing model_config to include + # populate_by_name=True new_body = [] for item in node.body: if isinstance(item, ast.Assign): diff --git a/py/packages/genkit/src/genkit/ai/model.py b/py/packages/genkit/src/genkit/ai/model.py index c30d1825d..cd0f4d51f 100644 --- a/py/packages/genkit/src/genkit/ai/model.py +++ b/py/packages/genkit/src/genkit/ai/model.py @@ -3,6 +3,6 @@ from collections.abc import Callable -from genkit.core.schemas import GenerateRequest, GenerateResponse +from genkit.core.schema_types import GenerateRequest, GenerateResponse ModelFn = Callable[[GenerateRequest], GenerateResponse] diff --git a/py/packages/genkit/src/genkit/ai/prompt.py b/py/packages/genkit/src/genkit/ai/prompt.py index 135dca765..b0e042633 100644 --- a/py/packages/genkit/src/genkit/ai/prompt.py +++ b/py/packages/genkit/src/genkit/ai/prompt.py @@ -5,6 +5,6 @@ from collections.abc import Callable from typing import Any -from genkit.core.schemas import GenerateRequest +from genkit.core.schema_types import GenerateRequest PromptFn = Callable[[Any | None], GenerateRequest] diff --git a/py/packages/genkit/src/genkit/core/plugin_abc.py b/py/packages/genkit/src/genkit/core/plugin_abc.py index 81edd8b2c..291fb3f1f 100644 --- a/py/packages/genkit/src/genkit/core/plugin_abc.py +++ b/py/packages/genkit/src/genkit/core/plugin_abc.py @@ -8,7 +8,7 @@ import abc import typing -from genkit.core.schemas import GenerateRequest, GenerateResponse +from genkit.core.schema_types import GenerateRequest, GenerateResponse if typing.TYPE_CHECKING: from genkit.veneer import Genkit diff --git a/py/packages/genkit/src/genkit/core/schemas.py b/py/packages/genkit/src/genkit/core/schema_types.py similarity index 100% rename from py/packages/genkit/src/genkit/core/schemas.py rename to py/packages/genkit/src/genkit/core/schema_types.py diff --git a/py/packages/genkit/src/genkit/veneer/veneer.py b/py/packages/genkit/src/genkit/veneer/veneer.py index 3fa72918f..79b34603d 100644 --- a/py/packages/genkit/src/genkit/veneer/veneer.py +++ b/py/packages/genkit/src/genkit/veneer/veneer.py @@ -16,7 +16,7 @@ from genkit.core.plugin_abc import Plugin from genkit.core.reflection import make_reflection_server from genkit.core.registry import Registry -from genkit.core.schemas import GenerateRequest, GenerateResponse, Message +from genkit.core.schema_types import GenerateRequest, GenerateResponse, Message from genkit.veneer import server DEFAULT_REFLECTION_SERVER_SPEC = server.ServerSpec( diff --git a/py/plugins/vertex-ai/src/genkit/plugins/vertex_ai/__init__.py b/py/plugins/vertex-ai/src/genkit/plugins/vertex_ai/__init__.py index fe8d2d82e..59de6ddd5 100644 --- a/py/plugins/vertex-ai/src/genkit/plugins/vertex_ai/__init__.py +++ b/py/plugins/vertex-ai/src/genkit/plugins/vertex_ai/__init__.py @@ -10,7 +10,7 @@ import vertexai from genkit.core.plugin_abc import Plugin -from genkit.core.schemas import ( +from genkit.core.schema_types import ( GenerateRequest, GenerateResponse, Message, diff --git a/py/pyproject.toml b/py/pyproject.toml index 9f42c487c..bdc2d4d6a 100644 --- a/py/pyproject.toml +++ b/py/pyproject.toml @@ -111,14 +111,6 @@ target-version = "py312" [tool.ruff.lint] fixable = ["ALL"] -per-file-ignores = { "schemas.py" = [ - "N815", - "E501", -], "sanitize_schemas.py" = [ - "N802", - "N815", - "E501", -] } select = [ "E", # pycodestyle (errors) "W", # pycodestyle (warnings) @@ -166,7 +158,7 @@ enable-version-header = true field-constraints = true input = "../genkit-tools/genkit-schema.json" input-file-type = "jsonschema" -output = "packages/genkit/src/genkit/core/schemas.py" +output = "packages/genkit/src/genkit/core/schema_types.py" output-model-type = "pydantic_v2.BaseModel" snake-case-field = true strict-nullable = true diff --git a/py/samples/hello/hello.py b/py/samples/hello/hello.py index 34af98c3c..74ee3af4b 100644 --- a/py/samples/hello/hello.py +++ b/py/samples/hello/hello.py @@ -5,7 +5,7 @@ from typing import Any -from genkit.core.schemas import GenerateRequest, Message, Role, TextPart +from genkit.core.schema_types import GenerateRequest, Message, Role, TextPart from genkit.plugins.vertex_ai import VertexAI from genkit.veneer.veneer import Genkit from pydantic import BaseModel, Field