Add linting/formatting
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -216,3 +216,4 @@ __marimo__/
|
|||||||
.streamlit/secrets.toml
|
.streamlit/secrets.toml
|
||||||
|
|
||||||
ref/
|
ref/
|
||||||
|
tmp/
|
||||||
|
|||||||
@@ -24,3 +24,9 @@ va-evaluator = "va_evaluator.cli:app"
|
|||||||
[build-system]
|
[build-system]
|
||||||
requires = ["uv_build>=0.8.3,<0.9.0"]
|
requires = ["uv_build>=0.8.3,<0.9.0"]
|
||||||
build-backend = "uv_build"
|
build-backend = "uv_build"
|
||||||
|
|
||||||
|
[dependency-groups]
|
||||||
|
dev = [
|
||||||
|
"ruff>=0.15.2",
|
||||||
|
"ty>=0.0.18",
|
||||||
|
]
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ class IndexSettings(BaseModel):
|
|||||||
|
|
||||||
class AgentSettings(BaseModel):
|
class AgentSettings(BaseModel):
|
||||||
name: str = "default"
|
name: str = "default"
|
||||||
language_model: str = "gemini-2.0-flash"
|
language_model: str = "gemini-2.5-flash"
|
||||||
embedding_model: str = "text-embedding-004"
|
embedding_model: str = "gemini-embedding-001"
|
||||||
|
|
||||||
|
|
||||||
class BigQuerySettings(BaseModel):
|
class BigQuerySettings(BaseModel):
|
||||||
@@ -41,7 +41,9 @@ class BigQuerySettings(BaseModel):
|
|||||||
|
|
||||||
|
|
||||||
class Settings(BaseSettings):
|
class Settings(BaseSettings):
|
||||||
model_config = SettingsConfigDict(env_nested_delimiter="__")
|
model_config = SettingsConfigDict(
|
||||||
|
env_nested_delimiter="__", env_file=".env", extra="ignore"
|
||||||
|
)
|
||||||
|
|
||||||
project_id: str
|
project_id: str
|
||||||
location: str = "us-central1"
|
location: str = "us-central1"
|
||||||
|
|||||||
@@ -186,9 +186,7 @@ class KeypointRAGEvaluator:
|
|||||||
generated_answer: str,
|
generated_answer: str,
|
||||||
keypoints: list[str],
|
keypoints: list[str],
|
||||||
) -> tuple[dict[str, float], list[dict]]:
|
) -> tuple[dict[str, float], list[dict]]:
|
||||||
keypoints_list = "\n".join(
|
keypoints_list = "\n".join([f"{i + 1}. {kp}" for i, kp in enumerate(keypoints)])
|
||||||
[f"{i + 1}. {kp}" for i, kp in enumerate(keypoints)]
|
|
||||||
)
|
|
||||||
prompt = EVALUATE_KEYPOINTS_PROMPT.format(
|
prompt = EVALUATE_KEYPOINTS_PROMPT.format(
|
||||||
generated_answer=generated_answer,
|
generated_answer=generated_answer,
|
||||||
keypoints_list=keypoints_list,
|
keypoints_list=keypoints_list,
|
||||||
@@ -343,14 +341,13 @@ def load_data_from_bigquery(
|
|||||||
df.dropna(subset=["input", "expected_output", "response"], inplace=True)
|
df.dropna(subset=["input", "expected_output", "response"], inplace=True)
|
||||||
console.print(f"Loaded {len(df)} rows for evaluation.")
|
console.print(f"Loaded {len(df)} rows for evaluation.")
|
||||||
if df.empty:
|
if df.empty:
|
||||||
console.print(
|
console.print("[bold yellow]Warning: No data found in BigQuery.[/bold yellow]")
|
||||||
"[bold yellow]Warning: No data found in BigQuery.[/bold yellow]"
|
|
||||||
)
|
|
||||||
return df
|
return df
|
||||||
|
|
||||||
|
|
||||||
# --- Core Logic ---
|
# --- Core Logic ---
|
||||||
|
|
||||||
|
|
||||||
def evaluate(
|
def evaluate(
|
||||||
input_file: str | None = None,
|
input_file: str | None = None,
|
||||||
output_file: str | None = None,
|
output_file: str | None = None,
|
||||||
@@ -429,9 +426,7 @@ def evaluate(
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
console.print(
|
console.print(f"[bold red]Error evaluating row: {e}[/bold red]")
|
||||||
f"[bold red]Error evaluating row: {e}[/bold red]"
|
|
||||||
)
|
|
||||||
all_results.append(
|
all_results.append(
|
||||||
{
|
{
|
||||||
"query": row["input"],
|
"query": row["input"],
|
||||||
@@ -555,4 +550,3 @@ def evaluate(
|
|||||||
f"[bold red]An error occurred while saving to BigQuery: {e}[/bold red]"
|
f"[bold red]An error occurred while saving to BigQuery: {e}[/bold red]"
|
||||||
)
|
)
|
||||||
raise typer.Exit(code=1)
|
raise typer.Exit(code=1)
|
||||||
|
|
||||||
|
|||||||
@@ -253,4 +253,3 @@ def evaluate(
|
|||||||
f"[bold red]An error occurred while saving to BigQuery: {e}[/bold red]"
|
f"[bold red]An error occurred while saving to BigQuery: {e}[/bold red]"
|
||||||
)
|
)
|
||||||
raise typer.Exit(code=1)
|
raise typer.Exit(code=1)
|
||||||
|
|
||||||
|
|||||||
@@ -4,12 +4,12 @@ import random
|
|||||||
|
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
import typer
|
import typer
|
||||||
import vertexai
|
from google import genai
|
||||||
from google.cloud import storage
|
from google.cloud import storage
|
||||||
|
from google.genai import types
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
from rich.console import Console
|
from rich.console import Console
|
||||||
from rich.progress import track
|
from rich.progress import track
|
||||||
from vertexai.generative_models import GenerationConfig, GenerativeModel
|
|
||||||
|
|
||||||
from va_evaluator.config import Settings
|
from va_evaluator.config import Settings
|
||||||
|
|
||||||
@@ -89,20 +89,25 @@ class MultiStepResponseSchema(BaseModel):
|
|||||||
|
|
||||||
|
|
||||||
def generate_structured(
|
def generate_structured(
|
||||||
model: GenerativeModel,
|
client: genai.Client,
|
||||||
|
model: str,
|
||||||
prompt: str,
|
prompt: str,
|
||||||
response_model: type[BaseModel],
|
response_model: type[BaseModel],
|
||||||
) -> BaseModel:
|
) -> BaseModel:
|
||||||
generation_config = GenerationConfig(
|
response = client.models.generate_content(
|
||||||
|
model=model,
|
||||||
|
contents=prompt,
|
||||||
|
config=types.GenerateContentConfig(
|
||||||
response_mime_type="application/json",
|
response_mime_type="application/json",
|
||||||
response_schema=response_model,
|
response_schema=response_model,
|
||||||
|
),
|
||||||
)
|
)
|
||||||
response = model.generate_content(prompt, generation_config=generation_config)
|
|
||||||
return response_model.model_validate_json(response.text)
|
return response_model.model_validate_json(response.text)
|
||||||
|
|
||||||
|
|
||||||
def generate_synthetic_question(
|
def generate_synthetic_question(
|
||||||
model: GenerativeModel,
|
client: genai.Client,
|
||||||
|
model: str,
|
||||||
file_content: str,
|
file_content: str,
|
||||||
file_path: str,
|
file_path: str,
|
||||||
q_type: str,
|
q_type: str,
|
||||||
@@ -111,11 +116,12 @@ def generate_synthetic_question(
|
|||||||
prompt = PROMPT_TEMPLATE.format(
|
prompt = PROMPT_TEMPLATE.format(
|
||||||
context=file_content, id=file_path, qtype=q_type, qtype_def=q_def
|
context=file_content, id=file_path, qtype=q_type, qtype_def=q_def
|
||||||
)
|
)
|
||||||
return generate_structured(model, prompt, ResponseSchema)
|
return generate_structured(client, model, prompt, ResponseSchema)
|
||||||
|
|
||||||
|
|
||||||
def generate_synthetic_conversation(
|
def generate_synthetic_conversation(
|
||||||
model: GenerativeModel,
|
client: genai.Client,
|
||||||
|
model: str,
|
||||||
file_content: str,
|
file_content: str,
|
||||||
file_path: str,
|
file_path: str,
|
||||||
num_turns: int,
|
num_turns: int,
|
||||||
@@ -123,7 +129,7 @@ def generate_synthetic_conversation(
|
|||||||
prompt = MULTI_STEP_PROMPT_TEMPLATE.format(
|
prompt = MULTI_STEP_PROMPT_TEMPLATE.format(
|
||||||
context=file_content, num_turns=num_turns
|
context=file_content, num_turns=num_turns
|
||||||
)
|
)
|
||||||
return generate_structured(model, prompt, MultiStepResponseSchema)
|
return generate_structured(client, model, prompt, MultiStepResponseSchema)
|
||||||
|
|
||||||
|
|
||||||
def generate(
|
def generate(
|
||||||
@@ -134,8 +140,12 @@ def generate(
|
|||||||
console = Console()
|
console = Console()
|
||||||
settings = Settings()
|
settings = Settings()
|
||||||
|
|
||||||
vertexai.init(project=settings.project_id, location=settings.location)
|
client = genai.Client(
|
||||||
model = GenerativeModel(settings.agent.language_model)
|
vertexai=True,
|
||||||
|
project=settings.project_id,
|
||||||
|
location=settings.location,
|
||||||
|
)
|
||||||
|
model_name = settings.agent.language_model
|
||||||
gcs_client = storage.Client(project=settings.project_id)
|
gcs_client = storage.Client(project=settings.project_id)
|
||||||
bucket = gcs_client.bucket(settings.require_bucket)
|
bucket = gcs_client.bucket(settings.require_bucket)
|
||||||
|
|
||||||
@@ -165,9 +175,7 @@ def generate(
|
|||||||
console.print("[yellow]No files found. Skipping.[/yellow]")
|
console.print("[yellow]No files found. Skipping.[/yellow]")
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
files_to_process = random.sample(
|
files_to_process = random.sample(all_files, k=min(num_questions, len(all_files)))
|
||||||
all_files, k=min(num_questions, len(all_files))
|
|
||||||
)
|
|
||||||
console.print(
|
console.print(
|
||||||
f"Randomly selected {len(files_to_process)} files to generate questions from."
|
f"Randomly selected {len(files_to_process)} files to generate questions from."
|
||||||
)
|
)
|
||||||
@@ -182,7 +190,7 @@ def generate(
|
|||||||
conversation_data = None
|
conversation_data = None
|
||||||
for attempt in range(3):
|
for attempt in range(3):
|
||||||
conversation_data = generate_synthetic_conversation(
|
conversation_data = generate_synthetic_conversation(
|
||||||
model, file_content, file_path, num_turns
|
client, model_name, file_content, file_path, num_turns
|
||||||
)
|
)
|
||||||
if (
|
if (
|
||||||
conversation_data
|
conversation_data
|
||||||
@@ -219,7 +227,7 @@ def generate(
|
|||||||
generated_data = None
|
generated_data = None
|
||||||
for attempt in range(3):
|
for attempt in range(3):
|
||||||
generated_data = generate_synthetic_question(
|
generated_data = generate_synthetic_question(
|
||||||
model, file_content, file_path, q_type, q_def
|
client, model_name, file_content, file_path, q_type, q_def
|
||||||
)
|
)
|
||||||
if (
|
if (
|
||||||
generated_data
|
generated_data
|
||||||
@@ -249,7 +257,9 @@ def generate(
|
|||||||
all_rows.append(row)
|
all_rows.append(row)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
console.print(f"[bold red]Error processing file {file_path}: {e}[/bold red]")
|
console.print(
|
||||||
|
f"[bold red]Error processing file {file_path}: {e}[/bold red]"
|
||||||
|
)
|
||||||
|
|
||||||
if not all_rows:
|
if not all_rows:
|
||||||
console.print("[bold yellow]No questions were generated.[/bold yellow]")
|
console.print("[bold yellow]No questions were generated.[/bold yellow]")
|
||||||
@@ -262,7 +272,9 @@ def generate(
|
|||||||
f"\n[bold green]Saving {len(df)} generated questions to {output_csv}...[/bold green]"
|
f"\n[bold green]Saving {len(df)} generated questions to {output_csv}...[/bold green]"
|
||||||
)
|
)
|
||||||
df.to_csv(output_csv, index=False, encoding="utf-8-sig")
|
df.to_csv(output_csv, index=False, encoding="utf-8-sig")
|
||||||
console.print("[bold green]Synthetic question generation complete.[/bold green]")
|
console.print(
|
||||||
|
"[bold green]Synthetic question generation complete.[/bold green]"
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
console.print(
|
console.print(
|
||||||
f"\n[bold green]Saving {len(df)} generated questions to BigQuery...[/bold green]"
|
f"\n[bold green]Saving {len(df)} generated questions to BigQuery...[/bold green]"
|
||||||
@@ -295,4 +307,3 @@ def generate(
|
|||||||
|
|
||||||
console.print(f"[bold yellow]Finished run with ID: {run_id}[/bold yellow]")
|
console.print(f"[bold yellow]Finished run with ID: {run_id}[/bold yellow]")
|
||||||
return run_id
|
return run_id
|
||||||
|
|
||||||
|
|||||||
61
uv.lock
generated
61
uv.lock
generated
@@ -2337,6 +2337,31 @@ wheels = [
|
|||||||
{ url = "https://files.pythonhosted.org/packages/64/8d/0133e4eb4beed9e425d9a98ed6e081a55d195481b7632472be1af08d2f6b/rsa-4.9.1-py3-none-any.whl", hash = "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762", size = 34696, upload-time = "2025-04-16T09:51:17.142Z" },
|
{ url = "https://files.pythonhosted.org/packages/64/8d/0133e4eb4beed9e425d9a98ed6e081a55d195481b7632472be1af08d2f6b/rsa-4.9.1-py3-none-any.whl", hash = "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762", size = 34696, upload-time = "2025-04-16T09:51:17.142Z" },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ruff"
|
||||||
|
version = "0.15.2"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/06/04/eab13a954e763b0606f460443fcbf6bb5a0faf06890ea3754ff16523dce5/ruff-0.15.2.tar.gz", hash = "sha256:14b965afee0969e68bb871eba625343b8673375f457af4abe98553e8bbb98342", size = 4558148, upload-time = "2026-02-19T22:32:20.271Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/2f/70/3a4dc6d09b13cb3e695f28307e5d889b2e1a66b7af9c5e257e796695b0e6/ruff-0.15.2-py3-none-linux_armv6l.whl", hash = "sha256:120691a6fdae2f16d65435648160f5b81a9625288f75544dc40637436b5d3c0d", size = 10430565, upload-time = "2026-02-19T22:32:41.824Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/71/0b/bb8457b56185ece1305c666dc895832946d24055be90692381c31d57466d/ruff-0.15.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:a89056d831256099658b6bba4037ac6dd06f49d194199215befe2bb10457ea5e", size = 10820354, upload-time = "2026-02-19T22:32:07.366Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/2d/c1/e0532d7f9c9e0b14c46f61b14afd563298b8b83f337b6789ddd987e46121/ruff-0.15.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:e36dee3a64be0ebd23c86ffa3aa3fd3ac9a712ff295e192243f814a830b6bd87", size = 10170767, upload-time = "2026-02-19T22:32:13.188Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/47/e8/da1aa341d3af017a21c7a62fb5ec31d4e7ad0a93ab80e3a508316efbcb23/ruff-0.15.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9fb47b6d9764677f8c0a193c0943ce9a05d6763523f132325af8a858eadc2b9", size = 10529591, upload-time = "2026-02-19T22:32:02.547Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/93/74/184fbf38e9f3510231fbc5e437e808f0b48c42d1df9434b208821efcd8d6/ruff-0.15.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f376990f9d0d6442ea9014b19621d8f2aaf2b8e39fdbfc79220b7f0c596c9b80", size = 10260771, upload-time = "2026-02-19T22:32:36.938Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/05/ac/605c20b8e059a0bc4b42360414baa4892ff278cec1c91fff4be0dceedefd/ruff-0.15.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2dcc987551952d73cbf5c88d9fdee815618d497e4df86cd4c4824cc59d5dd75f", size = 11045791, upload-time = "2026-02-19T22:32:31.642Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/fd/52/db6e419908f45a894924d410ac77d64bdd98ff86901d833364251bd08e22/ruff-0.15.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:42a47fd785cbe8c01b9ff45031af875d101b040ad8f4de7bbb716487c74c9a77", size = 11879271, upload-time = "2026-02-19T22:32:29.305Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/3e/d8/7992b18f2008bdc9231d0f10b16df7dda964dbf639e2b8b4c1b4e91b83af/ruff-0.15.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cbe9f49354866e575b4c6943856989f966421870e85cd2ac94dccb0a9dcb2fea", size = 11303707, upload-time = "2026-02-19T22:32:22.492Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/d7/02/849b46184bcfdd4b64cde61752cc9a146c54759ed036edd11857e9b8443b/ruff-0.15.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b7a672c82b5f9887576087d97be5ce439f04bbaf548ee987b92d3a7dede41d3a", size = 11149151, upload-time = "2026-02-19T22:32:44.234Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/70/04/f5284e388bab60d1d3b99614a5a9aeb03e0f333847e2429bebd2aaa1feec/ruff-0.15.2-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:72ecc64f46f7019e2bcc3cdc05d4a7da958b629a5ab7033195e11a438403d956", size = 11091132, upload-time = "2026-02-19T22:32:24.691Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/fa/ae/88d844a21110e14d92cf73d57363fab59b727ebeabe78009b9ccb23500af/ruff-0.15.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:8dcf243b15b561c655c1ef2f2b0050e5d50db37fe90115507f6ff37d865dc8b4", size = 10504717, upload-time = "2026-02-19T22:32:26.75Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/64/27/867076a6ada7f2b9c8292884ab44d08fd2ba71bd2b5364d4136f3cd537e1/ruff-0.15.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:dab6941c862c05739774677c6273166d2510d254dac0695c0e3f5efa1b5585de", size = 10263122, upload-time = "2026-02-19T22:32:10.036Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/e7/ef/faf9321d550f8ebf0c6373696e70d1758e20ccdc3951ad7af00c0956be7c/ruff-0.15.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:1b9164f57fc36058e9a6806eb92af185b0697c9fe4c7c52caa431c6554521e5c", size = 10735295, upload-time = "2026-02-19T22:32:39.227Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/2f/55/e8089fec62e050ba84d71b70e7834b97709ca9b7aba10c1a0b196e493f97/ruff-0.15.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:80d24fcae24d42659db7e335b9e1531697a7102c19185b8dc4a028b952865fd8", size = 11241641, upload-time = "2026-02-19T22:32:34.617Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/23/01/1c30526460f4d23222d0fabd5888868262fd0e2b71a00570ca26483cd993/ruff-0.15.2-py3-none-win32.whl", hash = "sha256:fd5ff9e5f519a7e1bd99cbe8daa324010a74f5e2ebc97c6242c08f26f3714f6f", size = 10507885, upload-time = "2026-02-19T22:32:15.635Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/5c/10/3d18e3bbdf8fc50bbb4ac3cc45970aa5a9753c5cb51bf9ed9a3cd8b79fa3/ruff-0.15.2-py3-none-win_amd64.whl", hash = "sha256:d20014e3dfa400f3ff84830dfb5755ece2de45ab62ecea4af6b7262d0fb4f7c5", size = 11623725, upload-time = "2026-02-19T22:32:04.947Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/6d/78/097c0798b1dab9f8affe73da9642bb4500e098cb27fd8dc9724816ac747b/ruff-0.15.2-py3-none-win_arm64.whl", hash = "sha256:cabddc5822acdc8f7b5527b36ceac55cc51eec7b1946e60181de8fe83ca8876e", size = 10941649, upload-time = "2026-02-19T22:32:18.108Z" },
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "scipy"
|
name = "scipy"
|
||||||
version = "1.17.0"
|
version = "1.17.0"
|
||||||
@@ -2500,6 +2525,30 @@ wheels = [
|
|||||||
{ url = "https://files.pythonhosted.org/packages/36/75/661b406371f96622975eb25f9e70945d97fbe6b8e5af40342c59191962a3/trec_car_tools-2.6-py3-none-any.whl", hash = "sha256:e6f0373259e1c234222da7270ab54ca7af7a6f8d0dd32b13e158c1659d3991cf", size = 8414, upload-time = "2022-02-01T16:37:22.102Z" },
|
{ url = "https://files.pythonhosted.org/packages/36/75/661b406371f96622975eb25f9e70945d97fbe6b8e5af40342c59191962a3/trec_car_tools-2.6-py3-none-any.whl", hash = "sha256:e6f0373259e1c234222da7270ab54ca7af7a6f8d0dd32b13e158c1659d3991cf", size = 8414, upload-time = "2022-02-01T16:37:22.102Z" },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ty"
|
||||||
|
version = "0.0.18"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/74/15/9682700d8d60fdca7afa4febc83a2354b29cdcd56e66e19c92b521db3b39/ty-0.0.18.tar.gz", hash = "sha256:04ab7c3db5dcbcdac6ce62e48940d3a0124f377c05499d3f3e004e264ae94b83", size = 5214774, upload-time = "2026-02-20T21:51:31.173Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/ae/d8/920460d4c22ea68fcdeb0b2fb53ea2aeb9c6d7875bde9278d84f2ac767b6/ty-0.0.18-py3-none-linux_armv6l.whl", hash = "sha256:4e5e91b0a79857316ef893c5068afc4b9872f9d257627d9bc8ac4d2715750d88", size = 10280825, upload-time = "2026-02-20T21:51:25.03Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/83/56/62587de582d3d20d78fcdddd0594a73822ac5a399a12ef512085eb7a4de6/ty-0.0.18-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ee0e578b3f8416e2d5416da9553b78fd33857868aa1384cb7fefeceee5ff102d", size = 10118324, upload-time = "2026-02-20T21:51:22.27Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/2f/2d/dbdace8d432a0755a7417f659bfd5b8a4261938ecbdfd7b42f4c454f5aa9/ty-0.0.18-py3-none-macosx_11_0_arm64.whl", hash = "sha256:3f7a0487d36b939546a91d141f7fc3dbea32fab4982f618d5b04dc9d5b6da21e", size = 9605861, upload-time = "2026-02-20T21:51:16.066Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/6b/d9/de11c0280f778d5fc571393aada7fe9b8bc1dd6a738f2e2c45702b8b3150/ty-0.0.18-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5e2fa8d45f57ca487a470e4bf66319c09b561150e98ae2a6b1a97ef04c1a4eb", size = 10092701, upload-time = "2026-02-20T21:51:26.862Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/0f/94/068d4d591d791041732171e7b63c37a54494b2e7d28e88d2167eaa9ad875/ty-0.0.18-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d75652e9e937f7044b1aca16091193e7ef11dac1c7ec952b7fb8292b7ba1f5f2", size = 10109203, upload-time = "2026-02-20T21:51:11.59Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/34/e4/526a4aa56dc0ca2569aaa16880a1ab105c3b416dd70e87e25a05688999f3/ty-0.0.18-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:563c868edceb8f6ddd5e91113c17d3676b028f0ed380bdb3829b06d9beb90e58", size = 10614200, upload-time = "2026-02-20T21:51:20.298Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/fd/3d/b68ab20a34122a395880922587fbfc3adf090d22e0fb546d4d20fe8c2621/ty-0.0.18-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:502e2a1f948bec563a0454fc25b074bf5cf041744adba8794d024277e151d3b0", size = 11153232, upload-time = "2026-02-20T21:51:14.121Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/68/ea/678243c042343fcda7e6af36036c18676c355878dcdcd517639586d2cf9e/ty-0.0.18-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc881dea97021a3aa29134a476937fd8054775c4177d01b94db27fcfb7aab65b", size = 10832934, upload-time = "2026-02-20T21:51:32.92Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/d8/bd/7f8d647cef8b7b346c0163230a37e903c7461c7248574840b977045c77df/ty-0.0.18-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:421fcc3bc64cab56f48edb863c7c1c43649ec4d78ff71a1acb5366ad723b6021", size = 10700888, upload-time = "2026-02-20T21:51:09.673Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/6e/06/cb3620dc48c5d335ba7876edfef636b2f4498eff4a262ff90033b9e88408/ty-0.0.18-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:0fe5038a7136a0e638a2fb1ad06e3d3c4045314c6ba165c9c303b9aeb4623d6c", size = 10078965, upload-time = "2026-02-20T21:51:07.678Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/60/27/c77a5a84533fa3b685d592de7b4b108eb1f38851c40fac4e79cc56ec7350/ty-0.0.18-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d123600a52372677613a719bbb780adeb9b68f47fb5f25acb09171de390e0035", size = 10134659, upload-time = "2026-02-20T21:51:18.311Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/43/6e/60af6b88c73469e628ba5253a296da6984e0aa746206f3034c31f1a04ed1/ty-0.0.18-py3-none-musllinux_1_2_i686.whl", hash = "sha256:bb4bc11d32a1bf96a829bf6b9696545a30a196ac77bbc07cc8d3dfee35e03723", size = 10297494, upload-time = "2026-02-20T21:51:39.631Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/33/90/612dc0b68224c723faed6adac2bd3f930a750685db76dfe17e6b9e534a83/ty-0.0.18-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:dda2efbf374ba4cd704053d04e32f2f784e85c2ddc2400006b0f96f5f7e4b667", size = 10791944, upload-time = "2026-02-20T21:51:37.13Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/0d/da/f4ada0fd08a9e4138fe3fd2bcd3797753593f423f19b1634a814b9b2a401/ty-0.0.18-py3-none-win32.whl", hash = "sha256:c5768607c94977dacddc2f459ace6a11a408a0f57888dd59abb62d28d4fee4f7", size = 9677964, upload-time = "2026-02-20T21:51:42.039Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/5e/fa/090ed9746e5c59fc26d8f5f96dc8441825171f1f47752f1778dad690b08b/ty-0.0.18-py3-none-win_amd64.whl", hash = "sha256:b78d0fa1103d36fc2fce92f2092adace52a74654ab7884d54cdaec8eb5016a4d", size = 10636576, upload-time = "2026-02-20T21:51:29.159Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/92/4f/5dd60904c8105cda4d0be34d3a446c180933c76b84ae0742e58f02133713/ty-0.0.18-py3-none-win_arm64.whl", hash = "sha256:01770c3c82137c6b216aa3251478f0b197e181054ee92243772de553d3586398", size = 10095449, upload-time = "2026-02-20T21:51:34.914Z" },
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "typer"
|
name = "typer"
|
||||||
version = "0.24.1"
|
version = "0.24.1"
|
||||||
@@ -2581,6 +2630,12 @@ dependencies = [
|
|||||||
{ name = "typer" },
|
{ name = "typer" },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[package.dev-dependencies]
|
||||||
|
dev = [
|
||||||
|
{ name = "ruff" },
|
||||||
|
{ name = "ty" },
|
||||||
|
]
|
||||||
|
|
||||||
[package.metadata]
|
[package.metadata]
|
||||||
requires-dist = [
|
requires-dist = [
|
||||||
{ name = "google-cloud-aiplatform" },
|
{ name = "google-cloud-aiplatform" },
|
||||||
@@ -2596,6 +2651,12 @@ requires-dist = [
|
|||||||
{ name = "typer" },
|
{ name = "typer" },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[package.metadata.requires-dev]
|
||||||
|
dev = [
|
||||||
|
{ name = "ruff", specifier = ">=0.15.2" },
|
||||||
|
{ name = "ty", specifier = ">=0.0.18" },
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "warc3-wet"
|
name = "warc3-wet"
|
||||||
version = "0.2.5"
|
version = "0.2.5"
|
||||||
|
|||||||
Reference in New Issue
Block a user