Skip to content

Commit 9b81254

Browse files
Remove unstructured-ingest as a dependency (#63)
<!-- CURSOR_SUMMARY --> > [!NOTE] > Replaces unstructured-ingest with utic-public-types, updates imports and error types, adds local file_data_from_dict using Pydantic, and bumps version to 0.0.42. > > - **Core/API**: > - Replace `unstructured_ingest` types/errors with `utic_public_types` in `etl_uvicorn/api_generator.py` and related modules. > - Add local `file_data_from_dict` (Pydantic `ValidationError`-based) to parse `FileData`/`BatchFileData`. > - **Tests/Schema**: > - Update imports in tests and schema (`file_data`, `errors`) to `utic_public_types`. > - **Packaging**: > - Remove `unstructured-ingest` dependency; add `utic-public-types` in `pyproject.toml`. > - **Versioning/Changelog**: > - Bump to `0.0.42`; add changelog entry for dependency removal. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 3320a22. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
1 parent d2036ee commit 9b81254

13 files changed

Lines changed: 901 additions & 750 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 0.0.42
2+
3+
* **Remove unstructured-ingest dependency**
4+
15
## 0.0.39
26

37
* **Remove wrap_error logic as exceptions are categorized in unstructured-ingest**

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@ dependencies = [
2323
"uvicorn",
2424
"fastapi",
2525
"click",
26-
"unstructured-ingest",
26+
"utic-public-types",
2727
"opentelemetry-instrumentation-fastapi",
2828
"opentelemetry-exporter-otlp-proto-grpc",
29-
"dataclasses-json"
29+
"dataclasses-json",
3030
]
3131
dynamic = [
3232
"version",

test/api/test_api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import pytest
55
from fastapi.testclient import TestClient
66
from pydantic import BaseModel
7-
from unstructured_ingest.data_types.file_data import (
7+
from utic_public_types.plugins.file_data import (
88
BatchFileData,
99
BatchItem,
1010
FileData,

test/assets/dataclass_response.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from pathlib import Path
33
from typing import Any, Optional, TypedDict, Union
44

5-
from unstructured_ingest.data_types.file_data import BatchFileData, FileData
5+
from utic_public_types.plugins.file_data import BatchFileData, FileData
66

77

88
class SampleFunctionResponse(TypedDict):

test/assets/exception_status_code.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"""Test assets for testing exception handling with various status_code scenarios."""
22

33
from fastapi import HTTPException
4-
from unstructured_ingest.error import UnstructuredIngestError
4+
from utic_public_types.plugins.errors import UnstructuredIngestError
55

66

77
class ExceptionWithNoneStatusCode(Exception):

test/assets/filedata_meta.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from typing import Optional, Union
33

44
from pydantic import BaseModel
5-
from unstructured_ingest.data_types.file_data import BatchFileData, FileData, SourceIdentifiers
5+
from utic_public_types.plugins.file_data import BatchFileData, FileData, SourceIdentifiers
66

77
from unstructured_platform_plugins.schema import FileDataMeta, NewRecord
88

test/test_schema.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import pytest
77
from pydantic import BaseModel
88
from typing_extensions import TypedDict
9-
from unstructured_ingest.data_types.file_data import FileData
9+
from utic_public_types.plugins.file_data import FileData
1010

1111
import unstructured_platform_plugins.schema.json_schema as js
1212
from unstructured_platform_plugins.schema.model import is_valid_input_dict, is_valid_response_dict

test/test_utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import pytest
66
from pydantic import BaseModel
7-
from unstructured_ingest.data_types.file_data import FileData, SourceIdentifiers
7+
from utic_public_types.plugins.file_data import FileData, SourceIdentifiers
88
from uvicorn.importer import import_from_string
99

1010
from unstructured_platform_plugins.etl_uvicorn import utils
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "0.0.41" # pragma: no cover
1+
__version__ = "0.0.42" # pragma: no cover

unstructured_platform_plugins/etl_uvicorn/api_generator.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
from fastapi import FastAPI, HTTPException, status
1010
from fastapi.responses import StreamingResponse
1111
from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor
12-
from pydantic import BaseModel, Field, create_model
12+
from pydantic import BaseModel, Field, ValidationError, create_model
1313
from starlette.responses import RedirectResponse
14-
from unstructured_ingest.data_types.file_data import BatchFileData, FileData, file_data_from_dict
15-
from unstructured_ingest.error import UnstructuredIngestError
14+
from utic_public_types.plugins.errors import UnstructuredIngestError
15+
from utic_public_types.plugins.file_data import BatchFileData, FileData
1616
from uvicorn.config import LOG_LEVELS
1717
from uvicorn.importer import import_from_string
1818

@@ -32,12 +32,19 @@
3232

3333
FileDataType = Union[FileData, BatchFileData]
3434

35+
logger = logging.getLogger("uvicorn.error")
3536

36-
class EtlApiException(Exception):
37-
pass
37+
38+
def file_data_from_dict(data: dict) -> FileDataType:
39+
try:
40+
return BatchFileData.model_validate(data)
41+
except ValidationError:
42+
logger.debug(f"{data} not valid for batch file data")
43+
return FileData.model_validate(data)
3844

3945

40-
logger = logging.getLogger("uvicorn.error")
46+
class EtlApiException(Exception):
47+
pass
4148

4249

4350
class MessageChannels(BaseModel):

0 commit comments

Comments
 (0)