From f40b51139ad4014aa46f4ab1951bfc3582f12d67 Mon Sep 17 00:00:00 2001 From: Alex Hall Date: Wed, 13 Aug 2025 18:16:22 +0200 Subject: [PATCH] Add genai-prices to dev deps and a basic test --- pyproject.toml | 1 + tests/test_usage_limits.py | 7 +++++++ uv.lock | 16 ++++++++++++++++ 3 files changed, 24 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 65265e4b11..66207d553c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -104,6 +104,7 @@ dev = [ "pytest-xdist>=3.6.1", # Needed for PyCharm users "pip>=25.2", + "genai-prices>=0.0.22", ] lint = ["mypy>=1.11.2", "pyright>=1.1.390", "ruff>=0.6.9"] docs = [ diff --git a/tests/test_usage_limits.py b/tests/test_usage_limits.py index 7fb9bba485..95c292e9d4 100644 --- a/tests/test_usage_limits.py +++ b/tests/test_usage_limits.py @@ -2,8 +2,10 @@ import operator import re from datetime import timezone +from decimal import Decimal import pytest +from genai_prices import Usage as GenaiPricesUsage, calc_price from inline_snapshot import snapshot from pydantic_ai import Agent, RunContext, UsageLimitExceeded @@ -22,6 +24,11 @@ pytestmark = pytest.mark.anyio +def test_genai_prices(): + usage = GenaiPricesUsage(input_tokens=100, output_tokens=50) + assert calc_price(usage, model_ref='gpt-4o').total_price == snapshot(Decimal('0.00075')) + + def test_request_token_limit() -> None: test_agent = Agent(TestModel()) diff --git a/uv.lock b/uv.lock index 99d2237709..fd91bb6757 100644 --- a/uv.lock +++ b/uv.lock @@ -1287,6 +1287,20 @@ http = [ { name = "aiohttp" }, ] +[[package]] +name = "genai-prices" +version = "0.0.22" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "eval-type-backport", marker = "python_full_version < '3.11'" }, + { name = "httpx" }, + { name = "pydantic" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/81/c5/0aa155ac23a17eb6de36f0611d8595fc49861bdb0a5f302133b7b4f68f5b/genai_prices-0.0.22.tar.gz", hash = "sha256:5e743424d40176ea04de7b74d1ad3a41801390439f4404d4593b82218f2c0c04", size = 44125, upload-time = "2025-08-12T12:04:52.265Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8d/1c/313541ea19144a7e5b0ac32dec3dd026de719c5b15147b043d52006dbef7/genai_prices-0.0.22-py3-none-any.whl", hash = "sha256:1ae496bdf517047bc489421c1eff653872e5d456d5eb86d113dfb49d2977a041", size = 46445, upload-time = "2025-08-12T12:04:50.884Z" }, +] + [[package]] name = "ghp-import" version = "2.1.0" @@ -3325,6 +3339,7 @@ dev = [ { name = "diff-cover", version = "9.2.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9.17'" }, { name = "dirty-equals" }, { name = "duckduckgo-search" }, + { name = "genai-prices" }, { name = "inline-snapshot" }, { name = "pip" }, { name = "pytest" }, @@ -3374,6 +3389,7 @@ dev = [ { name = "diff-cover", specifier = ">=9.2.0" }, { name = "dirty-equals", specifier = ">=0.9.0" }, { name = "duckduckgo-search", specifier = ">=7.0.0" }, + { name = "genai-prices", specifier = ">=0.0.22" }, { name = "inline-snapshot", specifier = ">=0.19.3" }, { name = "pip", specifier = ">=25.2" }, { name = "pytest", specifier = ">=8.3.3" },