Skip to content

Commit 9444c6b

Browse files
authored
update infini-gram api client (#260)
Updated `openapi-python-client` to latest and regenerated the API client. Some small changes to attribution_service to handle new types. Depends on allenai/infinigram-api#97
1 parent b4dd4f1 commit 9444c6b

27 files changed

+585
-415
lines changed

src/attribution/attribution_service.py

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from dataclasses import dataclass, field
33
from typing import Annotated, Self, cast
44

5+
from flask import current_app
56
from pydantic import AfterValidator, Field
67
from rank_bm25 import BM25Okapi # type: ignore
78
from werkzeug import exceptions
@@ -23,9 +24,8 @@
2324
from src.attribution.infini_gram_api_client.models.available_infini_gram_index_id import (
2425
AvailableInfiniGramIndexId,
2526
)
26-
from src.attribution.infini_gram_api_client.models.http_validation_error import (
27-
HTTPValidationError,
28-
)
27+
from src.attribution.infini_gram_api_client.models.problem import Problem
28+
from src.attribution.infini_gram_api_client.models.request_validation_error import RequestValidationError
2929
from src.config.get_config import cfg
3030
from src.util.pii_regex import does_contain_pii
3131

@@ -196,10 +196,25 @@ def get_attribution(
196196
msg = f"Something went wrong when calling the infini-gram API: {e.status_code} {e.content.decode()}"
197197
raise exceptions.BadGateway(msg) from e
198198

199-
if isinstance(attribution_response, HTTPValidationError):
199+
if isinstance(attribution_response, RequestValidationError):
200+
current_app.logger.error(
201+
"Validation error from infini-gram %s, errors %s",
202+
attribution_response.title,
203+
str(attribution_response.errors),
204+
)
200205
# validation error handling
201206
raise exceptions.InternalServerError(
202-
description=f"infini-gram API reported a validation error: {attribution_response.detail}\nThis is likely an error in olmo-api."
207+
description=f"infini-gram API reported a validation error: {attribution_response.title}\nThis is likely an error in olmo-api."
208+
)
209+
210+
if isinstance(attribution_response, Problem):
211+
current_app.logger.error(
212+
"Problem from infini-gram %s, detail %s",
213+
attribution_response.title,
214+
str(attribution_response.detail),
215+
)
216+
raise exceptions.InternalServerError(
217+
description=f"infini-gram API reported an error: {attribution_response.title}"
203218
)
204219

205220
if attribution_response is None:

src/attribution/infini_gram_api_client/api/default/count_index_count_get.py

Lines changed: 29 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
from http import HTTPStatus
2-
from typing import Any
2+
from typing import Any, Optional, Union
33

44
import httpx
55

6-
from src.attribution.infini_gram_api_client import errors
7-
from src.attribution.infini_gram_api_client.client import AuthenticatedClient, Client
8-
from src.attribution.infini_gram_api_client.models.available_infini_gram_index_id import AvailableInfiniGramIndexId
9-
from src.attribution.infini_gram_api_client.models.http_validation_error import HTTPValidationError
10-
from src.attribution.infini_gram_api_client.models.infini_gram_count_response import InfiniGramCountResponse
11-
from src.attribution.infini_gram_api_client.types import UNSET, Response
6+
from ... import errors
7+
from ...client import AuthenticatedClient, Client
8+
from ...models.available_infini_gram_index_id import AvailableInfiniGramIndexId
9+
from ...models.infini_gram_count_response import InfiniGramCountResponse
10+
from ...models.request_validation_error import RequestValidationError
11+
from ...types import UNSET, Response
1212

1313

1414
def _get_kwargs(
@@ -32,22 +32,25 @@ def _get_kwargs(
3232

3333

3434
def _parse_response(
35-
*, client: AuthenticatedClient | Client, response: httpx.Response
36-
) -> HTTPValidationError | InfiniGramCountResponse | None:
35+
*, client: Union[AuthenticatedClient, Client], response: httpx.Response
36+
) -> Optional[Union[InfiniGramCountResponse, RequestValidationError]]:
3737
if response.status_code == 200:
38-
return InfiniGramCountResponse.from_dict(response.json())
38+
response_200 = InfiniGramCountResponse.from_dict(response.json())
3939

40+
return response_200
4041
if response.status_code == 422:
41-
return HTTPValidationError.from_dict(response.json())
42+
response_422 = RequestValidationError.from_dict(response.json())
4243

44+
return response_422
4345
if client.raise_on_unexpected_status:
4446
raise errors.UnexpectedStatus(response.status_code, response.content)
45-
return None
47+
else:
48+
return None
4649

4750

4851
def _build_response(
49-
*, client: AuthenticatedClient | Client, response: httpx.Response
50-
) -> Response[HTTPValidationError | InfiniGramCountResponse]:
52+
*, client: Union[AuthenticatedClient, Client], response: httpx.Response
53+
) -> Response[Union[InfiniGramCountResponse, RequestValidationError]]:
5154
return Response(
5255
status_code=HTTPStatus(response.status_code),
5356
content=response.content,
@@ -59,9 +62,9 @@ def _build_response(
5962
def sync_detailed(
6063
index: AvailableInfiniGramIndexId,
6164
*,
62-
client: AuthenticatedClient | Client,
65+
client: Union[AuthenticatedClient, Client],
6366
query: str,
64-
) -> Response[HTTPValidationError | InfiniGramCountResponse]:
67+
) -> Response[Union[InfiniGramCountResponse, RequestValidationError]]:
6568
"""Count
6669
6770
Args:
@@ -73,7 +76,7 @@ def sync_detailed(
7376
httpx.TimeoutException: If the request takes longer than Client.timeout.
7477
7578
Returns:
76-
Response[Union[HTTPValidationError, InfiniGramCountResponse]]
79+
Response[Union[InfiniGramCountResponse, RequestValidationError]]
7780
"""
7881

7982
kwargs = _get_kwargs(
@@ -91,9 +94,9 @@ def sync_detailed(
9194
def sync(
9295
index: AvailableInfiniGramIndexId,
9396
*,
94-
client: AuthenticatedClient | Client,
97+
client: Union[AuthenticatedClient, Client],
9598
query: str,
96-
) -> HTTPValidationError | InfiniGramCountResponse | None:
99+
) -> Optional[Union[InfiniGramCountResponse, RequestValidationError]]:
97100
"""Count
98101
99102
Args:
@@ -105,7 +108,7 @@ def sync(
105108
httpx.TimeoutException: If the request takes longer than Client.timeout.
106109
107110
Returns:
108-
Union[HTTPValidationError, InfiniGramCountResponse]
111+
Union[InfiniGramCountResponse, RequestValidationError]
109112
"""
110113

111114
return sync_detailed(
@@ -118,9 +121,9 @@ def sync(
118121
async def asyncio_detailed(
119122
index: AvailableInfiniGramIndexId,
120123
*,
121-
client: AuthenticatedClient | Client,
124+
client: Union[AuthenticatedClient, Client],
122125
query: str,
123-
) -> Response[HTTPValidationError | InfiniGramCountResponse]:
126+
) -> Response[Union[InfiniGramCountResponse, RequestValidationError]]:
124127
"""Count
125128
126129
Args:
@@ -132,7 +135,7 @@ async def asyncio_detailed(
132135
httpx.TimeoutException: If the request takes longer than Client.timeout.
133136
134137
Returns:
135-
Response[Union[HTTPValidationError, InfiniGramCountResponse]]
138+
Response[Union[InfiniGramCountResponse, RequestValidationError]]
136139
"""
137140

138141
kwargs = _get_kwargs(
@@ -148,9 +151,9 @@ async def asyncio_detailed(
148151
async def asyncio(
149152
index: AvailableInfiniGramIndexId,
150153
*,
151-
client: AuthenticatedClient | Client,
154+
client: Union[AuthenticatedClient, Client],
152155
query: str,
153-
) -> HTTPValidationError | InfiniGramCountResponse | None:
156+
) -> Optional[Union[InfiniGramCountResponse, RequestValidationError]]:
154157
"""Count
155158
156159
Args:
@@ -162,7 +165,7 @@ async def asyncio(
162165
httpx.TimeoutException: If the request takes longer than Client.timeout.
163166
164167
Returns:
165-
Union[HTTPValidationError, InfiniGramCountResponse]
168+
Union[InfiniGramCountResponse, RequestValidationError]
166169
"""
167170

168171
return (

src/attribution/infini_gram_api_client/api/default/get_available_indexes_indexes_get.py

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
from http import HTTPStatus
2-
from typing import Any
2+
from typing import Any, Optional, Union
33

44
import httpx
55

6-
from src.attribution.infini_gram_api_client import errors
7-
from src.attribution.infini_gram_api_client.client import AuthenticatedClient, Client
8-
from src.attribution.infini_gram_api_client.models.available_infini_gram_index_id import AvailableInfiniGramIndexId
9-
from src.attribution.infini_gram_api_client.types import Response
6+
from ... import errors
7+
from ...client import AuthenticatedClient, Client
8+
from ...models.available_infini_gram_index_id import AvailableInfiniGramIndexId
9+
from ...types import Response
1010

1111

1212
def _get_kwargs() -> dict[str, Any]:
@@ -19,8 +19,8 @@ def _get_kwargs() -> dict[str, Any]:
1919

2020

2121
def _parse_response(
22-
*, client: AuthenticatedClient | Client, response: httpx.Response
23-
) -> list[AvailableInfiniGramIndexId] | None:
22+
*, client: Union[AuthenticatedClient, Client], response: httpx.Response
23+
) -> Optional[list[AvailableInfiniGramIndexId]]:
2424
if response.status_code == 200:
2525
response_200 = []
2626
_response_200 = response.json()
@@ -32,11 +32,12 @@ def _parse_response(
3232
return response_200
3333
if client.raise_on_unexpected_status:
3434
raise errors.UnexpectedStatus(response.status_code, response.content)
35-
return None
35+
else:
36+
return None
3637

3738

3839
def _build_response(
39-
*, client: AuthenticatedClient | Client, response: httpx.Response
40+
*, client: Union[AuthenticatedClient, Client], response: httpx.Response
4041
) -> Response[list[AvailableInfiniGramIndexId]]:
4142
return Response(
4243
status_code=HTTPStatus(response.status_code),
@@ -48,7 +49,7 @@ def _build_response(
4849

4950
def sync_detailed(
5051
*,
51-
client: AuthenticatedClient | Client,
52+
client: Union[AuthenticatedClient, Client],
5253
) -> Response[list[AvailableInfiniGramIndexId]]:
5354
"""Get Available Indexes
5455
@@ -71,8 +72,8 @@ def sync_detailed(
7172

7273
def sync(
7374
*,
74-
client: AuthenticatedClient | Client,
75-
) -> list[AvailableInfiniGramIndexId] | None:
75+
client: Union[AuthenticatedClient, Client],
76+
) -> Optional[list[AvailableInfiniGramIndexId]]:
7677
"""Get Available Indexes
7778
7879
Raises:
@@ -90,7 +91,7 @@ def sync(
9091

9192
async def asyncio_detailed(
9293
*,
93-
client: AuthenticatedClient | Client,
94+
client: Union[AuthenticatedClient, Client],
9495
) -> Response[list[AvailableInfiniGramIndexId]]:
9596
"""Get Available Indexes
9697
@@ -111,8 +112,8 @@ async def asyncio_detailed(
111112

112113
async def asyncio(
113114
*,
114-
client: AuthenticatedClient | Client,
115-
) -> list[AvailableInfiniGramIndexId] | None:
115+
client: Union[AuthenticatedClient, Client],
116+
) -> Optional[list[AvailableInfiniGramIndexId]]:
116117
"""Get Available Indexes
117118
118119
Raises:

0 commit comments

Comments
 (0)