unstructured-ingest 0.2.1__py3-none-any.whl → 0.2.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of unstructured-ingest might be problematic. Click here for more details.

Files changed (35) hide show
  1. test/integration/connectors/test_confluence.py +113 -0
  2. test/integration/connectors/test_kafka.py +67 -0
  3. test/integration/connectors/test_onedrive.py +112 -0
  4. test/integration/connectors/test_qdrant.py +137 -0
  5. test/integration/connectors/utils/docker.py +2 -1
  6. test/integration/connectors/utils/validation.py +73 -22
  7. unstructured_ingest/__version__.py +1 -1
  8. unstructured_ingest/connector/kafka.py +0 -1
  9. unstructured_ingest/interfaces.py +7 -7
  10. unstructured_ingest/v2/processes/chunker.py +2 -2
  11. unstructured_ingest/v2/processes/connectors/__init__.py +12 -1
  12. unstructured_ingest/v2/processes/connectors/confluence.py +195 -0
  13. unstructured_ingest/v2/processes/connectors/databricks/volumes.py +2 -4
  14. unstructured_ingest/v2/processes/connectors/fsspec/fsspec.py +1 -10
  15. unstructured_ingest/v2/processes/connectors/gitlab.py +267 -0
  16. unstructured_ingest/v2/processes/connectors/kafka/__init__.py +13 -0
  17. unstructured_ingest/v2/processes/connectors/kafka/cloud.py +82 -0
  18. unstructured_ingest/v2/processes/connectors/kafka/kafka.py +196 -0
  19. unstructured_ingest/v2/processes/connectors/kafka/local.py +75 -0
  20. unstructured_ingest/v2/processes/connectors/onedrive.py +163 -2
  21. unstructured_ingest/v2/processes/connectors/qdrant/__init__.py +16 -0
  22. unstructured_ingest/v2/processes/connectors/qdrant/cloud.py +59 -0
  23. unstructured_ingest/v2/processes/connectors/qdrant/local.py +58 -0
  24. unstructured_ingest/v2/processes/connectors/qdrant/qdrant.py +168 -0
  25. unstructured_ingest/v2/processes/connectors/qdrant/server.py +60 -0
  26. unstructured_ingest/v2/processes/connectors/sql/snowflake.py +3 -1
  27. unstructured_ingest/v2/processes/connectors/sql/sql.py +2 -4
  28. unstructured_ingest/v2/processes/partitioner.py +14 -3
  29. unstructured_ingest/v2/unstructured_api.py +24 -10
  30. {unstructured_ingest-0.2.1.dist-info → unstructured_ingest-0.2.2.dist-info}/METADATA +22 -22
  31. {unstructured_ingest-0.2.1.dist-info → unstructured_ingest-0.2.2.dist-info}/RECORD +35 -20
  32. {unstructured_ingest-0.2.1.dist-info → unstructured_ingest-0.2.2.dist-info}/LICENSE.md +0 -0
  33. {unstructured_ingest-0.2.1.dist-info → unstructured_ingest-0.2.2.dist-info}/WHEEL +0 -0
  34. {unstructured_ingest-0.2.1.dist-info → unstructured_ingest-0.2.2.dist-info}/entry_points.txt +0 -0
  35. {unstructured_ingest-0.2.1.dist-info → unstructured_ingest-0.2.2.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,168 @@
1
+ import asyncio
2
+ import json
3
+ import uuid
4
+ from abc import ABC, abstractmethod
5
+ from contextlib import asynccontextmanager
6
+ from dataclasses import dataclass, field
7
+ from pathlib import Path
8
+ from typing import TYPE_CHECKING, Any, AsyncGenerator, Optional
9
+
10
+ from pydantic import Field, Secret
11
+
12
+ from unstructured_ingest.error import DestinationConnectionError, WriteError
13
+ from unstructured_ingest.utils.data_prep import batch_generator, flatten_dict
14
+ from unstructured_ingest.utils.dep_check import requires_dependencies
15
+ from unstructured_ingest.v2.interfaces import (
16
+ AccessConfig,
17
+ ConnectionConfig,
18
+ FileData,
19
+ Uploader,
20
+ UploaderConfig,
21
+ UploadStager,
22
+ UploadStagerConfig,
23
+ )
24
+ from unstructured_ingest.v2.logger import logger
25
+
26
+ if TYPE_CHECKING:
27
+ from qdrant_client import AsyncQdrantClient
28
+
29
+
30
+ class QdrantAccessConfig(AccessConfig, ABC):
31
+ pass
32
+
33
+
34
+ class QdrantConnectionConfig(ConnectionConfig, ABC):
35
+ access_config: Secret[QdrantAccessConfig] = Field(
36
+ default_factory=QdrantAccessConfig, validate_default=True, description="Access Config"
37
+ )
38
+
39
+ @abstractmethod
40
+ def get_client_kwargs(self) -> dict:
41
+ pass
42
+
43
+ @requires_dependencies(["qdrant_client"], extras="qdrant")
44
+ @asynccontextmanager
45
+ async def get_client(self) -> AsyncGenerator["AsyncQdrantClient", None]:
46
+ from qdrant_client.async_qdrant_client import AsyncQdrantClient
47
+
48
+ client_kwargs = self.get_client_kwargs()
49
+ client = AsyncQdrantClient(**client_kwargs)
50
+ try:
51
+ yield client
52
+ finally:
53
+ await client.close()
54
+
55
+
56
+ class QdrantUploadStagerConfig(UploadStagerConfig):
57
+ pass
58
+
59
+
60
+ @dataclass
61
+ class QdrantUploadStager(UploadStager, ABC):
62
+ upload_stager_config: QdrantUploadStagerConfig = field(
63
+ default_factory=lambda: QdrantUploadStagerConfig()
64
+ )
65
+
66
+ @staticmethod
67
+ def conform_dict(data: dict) -> dict:
68
+ """Prepares dictionary in the format that Chroma requires"""
69
+ return {
70
+ "id": str(uuid.uuid4()),
71
+ "vector": data.pop("embeddings", {}),
72
+ "payload": {
73
+ "text": data.pop("text", None),
74
+ "element_serialized": json.dumps(data),
75
+ **flatten_dict(
76
+ data,
77
+ separator="-",
78
+ flatten_lists=True,
79
+ ),
80
+ },
81
+ }
82
+
83
+ def run(
84
+ self,
85
+ elements_filepath: Path,
86
+ file_data: FileData,
87
+ output_dir: Path,
88
+ output_filename: str,
89
+ **kwargs: Any,
90
+ ) -> Path:
91
+ with open(elements_filepath) as elements_file:
92
+ elements_contents = json.load(elements_file)
93
+
94
+ conformed_elements = [self.conform_dict(data=element) for element in elements_contents]
95
+ output_path = Path(output_dir) / Path(f"{output_filename}.json")
96
+
97
+ with open(output_path, "w") as output_file:
98
+ json.dump(conformed_elements, output_file)
99
+ return output_path
100
+
101
+
102
+ class QdrantUploaderConfig(UploaderConfig):
103
+ collection_name: str = Field(description="Name of the collection.")
104
+ batch_size: int = Field(default=50, description="Number of records per batch.")
105
+ num_processes: Optional[int] = Field(
106
+ default=1,
107
+ description="Optional limit on number of threads to use for upload.",
108
+ deprecated=True,
109
+ )
110
+
111
+
112
+ @dataclass
113
+ class QdrantUploader(Uploader, ABC):
114
+ upload_config: QdrantUploaderConfig
115
+ connection_config: QdrantConnectionConfig
116
+
117
+ @DestinationConnectionError.wrap
118
+ def precheck(self) -> None:
119
+ async def check_connection():
120
+ async with self.connection_config.get_client() as async_client:
121
+ await async_client.get_collections()
122
+
123
+ asyncio.run(check_connection())
124
+
125
+ def is_async(self):
126
+ return True
127
+
128
+ async def run_async(
129
+ self,
130
+ path: Path,
131
+ file_data: FileData,
132
+ **kwargs: Any,
133
+ ) -> None:
134
+ with path.open("r") as file:
135
+ elements: list[dict] = json.load(file)
136
+
137
+ logger.debug("Loaded %i elements from %s", len(elements), path)
138
+
139
+ batches = list(batch_generator(elements, batch_size=self.upload_config.batch_size))
140
+ logger.debug(
141
+ "Elements split into %i batches of size %i.",
142
+ len(batches),
143
+ self.upload_config.batch_size,
144
+ )
145
+ await asyncio.gather(*[self._upsert_batch(batch) for batch in batches])
146
+
147
+ async def _upsert_batch(self, batch: list[dict]) -> None:
148
+ from qdrant_client import models
149
+
150
+ points: list[models.PointStruct] = [models.PointStruct(**item) for item in batch]
151
+ try:
152
+ logger.debug(
153
+ "Upserting %i points to the '%s' collection.",
154
+ len(points),
155
+ self.upload_config.collection_name,
156
+ )
157
+ async with self.connection_config.get_client() as async_client:
158
+ await async_client.upsert(
159
+ self.upload_config.collection_name, points=points, wait=True
160
+ )
161
+ except Exception as api_error:
162
+ logger.error(
163
+ "Failed to upsert points to the collection due to the following error %s", api_error
164
+ )
165
+
166
+ raise WriteError(f"Qdrant error: {api_error}") from api_error
167
+
168
+ logger.debug("Successfully upsert points to the collection.")
@@ -0,0 +1,60 @@
1
+ from dataclasses import dataclass
2
+
3
+ from pydantic import Field, Secret
4
+
5
+ from unstructured_ingest.v2.processes.connector_registry import DestinationRegistryEntry
6
+ from unstructured_ingest.v2.processes.connectors.qdrant.qdrant import (
7
+ QdrantAccessConfig,
8
+ QdrantConnectionConfig,
9
+ QdrantUploader,
10
+ QdrantUploaderConfig,
11
+ QdrantUploadStager,
12
+ QdrantUploadStagerConfig,
13
+ )
14
+
15
+ CONNECTOR_TYPE = "qdrant-server"
16
+
17
+
18
+ class ServerQdrantAccessConfig(QdrantAccessConfig):
19
+ pass
20
+
21
+
22
+ class ServerQdrantConnectionConfig(QdrantConnectionConfig):
23
+ url: str = Field(default=None, description="url of Qdrant server")
24
+ access_config: Secret[ServerQdrantAccessConfig] = Field(
25
+ default_factory=ServerQdrantAccessConfig, validate_default=True
26
+ )
27
+
28
+ def get_client_kwargs(self) -> dict:
29
+ return {
30
+ "url": self.url,
31
+ }
32
+
33
+
34
+ class ServerQdrantUploadStagerConfig(QdrantUploadStagerConfig):
35
+ pass
36
+
37
+
38
+ @dataclass
39
+ class ServerQdrantUploadStager(QdrantUploadStager):
40
+ upload_stager_config: ServerQdrantUploadStagerConfig
41
+
42
+
43
+ class ServerQdrantUploaderConfig(QdrantUploaderConfig):
44
+ pass
45
+
46
+
47
+ @dataclass
48
+ class ServerQdrantUploader(QdrantUploader):
49
+ connection_config: ServerQdrantConnectionConfig
50
+ upload_config: ServerQdrantUploaderConfig
51
+ connector_type: str = CONNECTOR_TYPE
52
+
53
+
54
+ qdrant_server_destination_entry = DestinationRegistryEntry(
55
+ connection_config=ServerQdrantConnectionConfig,
56
+ uploader=ServerQdrantUploader,
57
+ uploader_config=ServerQdrantUploaderConfig,
58
+ upload_stager=ServerQdrantUploadStager,
59
+ upload_stager_config=ServerQdrantUploadStagerConfig,
60
+ )
@@ -70,7 +70,9 @@ class SnowflakeConnectionConfig(SQLConnectionConfig):
70
70
  connect_kwargs["password"] = self.access_config.get_secret_value().password
71
71
  # https://peps.python.org/pep-0249/#paramstyle
72
72
  connect_kwargs["paramstyle"] = "qmark"
73
- connection = connect(**connect_kwargs)
73
+ # remove anything that is none
74
+ active_kwargs = {k: v for k, v in connect_kwargs.items() if v is not None}
75
+ connection = connect(**active_kwargs)
74
76
  try:
75
77
  yield connection
76
78
  finally:
@@ -300,10 +300,8 @@ class SQLUploader(Uploader):
300
300
 
301
301
  def precheck(self) -> None:
302
302
  try:
303
- connection = self.connection_config.get_connection()
304
- cursor = connection.cursor()
305
- cursor.execute("SELECT 1;")
306
- cursor.close()
303
+ with self.connection_config.get_cursor() as cursor:
304
+ cursor.execute("SELECT 1;")
307
305
  except Exception as e:
308
306
  logger.error(f"failed to validate connection: {e}", exc_info=True)
309
307
  raise DestinationConnectionError(f"failed to validate connection: {e}")
@@ -9,7 +9,7 @@ from unstructured_ingest.utils.data_prep import flatten_dict
9
9
  from unstructured_ingest.utils.dep_check import requires_dependencies
10
10
  from unstructured_ingest.v2.interfaces.process import BaseProcess
11
11
  from unstructured_ingest.v2.logger import logger
12
- from unstructured_ingest.v2.unstructured_api import call_api
12
+ from unstructured_ingest.v2.unstructured_api import call_api_async
13
13
 
14
14
 
15
15
  class PartitionerConfig(BaseModel):
@@ -47,7 +47,11 @@ class PartitionerConfig(BaseModel):
47
47
  )
48
48
  metadata_exclude: list[str] = Field(
49
49
  default_factory=list,
50
- description="If set, drop the specified metadata " "fields if they exist.",
50
+ description="If set, drop the specified metadata fields if they exist.",
51
+ )
52
+ element_exclude: list[str] = Field(
53
+ default_factory=list,
54
+ description="If set, drop the specified element types, if they exist.",
51
55
  )
52
56
  metadata_include: list[str] = Field(
53
57
  default_factory=list,
@@ -100,6 +104,13 @@ class Partitioner(BaseProcess, ABC):
100
104
 
101
105
  def postprocess(self, elements: list[dict]) -> list[dict]:
102
106
  element_dicts = [e.copy() for e in elements]
107
+ if self.config.element_exclude:
108
+ element_dicts = list(
109
+ filter(
110
+ lambda element: element["type"] not in self.config.element_exclude,
111
+ element_dicts,
112
+ )
113
+ )
103
114
  for elem in element_dicts:
104
115
  if self.config.metadata_exclude:
105
116
  ex_list = self.config.metadata_exclude
@@ -156,7 +167,7 @@ class Partitioner(BaseProcess, ABC):
156
167
  metadata = metadata or {}
157
168
  logger.debug(f"partitioning file {filename} with metadata: {metadata}")
158
169
 
159
- elements = await call_api(
170
+ elements = await call_api_async(
160
171
  server_url=self.config.partition_endpoint,
161
172
  api_key=self.config.api_key.get_secret_value(),
162
173
  filename=filename,
@@ -1,6 +1,4 @@
1
- import asyncio
2
1
  from dataclasses import fields
3
- from functools import partial
4
2
  from pathlib import Path
5
3
  from typing import TYPE_CHECKING, Optional
6
4
 
@@ -53,7 +51,7 @@ def create_partition_request(filename: Path, parameters_dict: dict) -> "Partitio
53
51
  return PartitionRequest(partition_parameters=partition_params)
54
52
 
55
53
 
56
- async def call_api(
54
+ async def call_api_async(
57
55
  server_url: Optional[str], api_key: Optional[str], filename: Path, api_parameters: dict
58
56
  ) -> list[dict]:
59
57
  """Call the Unstructured API using unstructured-client.
@@ -73,15 +71,31 @@ async def call_api(
73
71
  api_key_auth=api_key,
74
72
  )
75
73
  partition_request = create_partition_request(filename=filename, parameters_dict=api_parameters)
74
+ res = await client.general.partition_async(request=partition_request)
76
75
 
77
- # TODO when client supports async, run without using run_in_executor
78
- # isolate the IO heavy call
79
- loop = asyncio.get_event_loop()
76
+ return res.elements or []
77
+
78
+
79
+ def call_api(
80
+ server_url: Optional[str], api_key: Optional[str], filename: Path, api_parameters: dict
81
+ ) -> list[dict]:
82
+ """Call the Unstructured API using unstructured-client.
83
+
84
+ Args:
85
+ server_url: The base URL where the API is hosted
86
+ api_key: The user's API key (can be empty if this is a self hosted API)
87
+ filename: Path to the file being partitioned
88
+ api_parameters: A dict containing the requested API parameters
80
89
 
81
- # Note(austin) - The partition calls needs request to be a keyword arg
82
- # We have to use partial to do this, we can't pass request=request into run_in_executor
83
- partition_call = partial(client.general.partition, request=partition_request)
90
+ Returns: A list of the file's elements, or an empty list if there was an error
91
+ """
92
+ from unstructured_client import UnstructuredClient
84
93
 
85
- res = await loop.run_in_executor(None, partition_call)
94
+ client = UnstructuredClient(
95
+ server_url=server_url,
96
+ api_key_auth=api_key,
97
+ )
98
+ partition_request = create_partition_request(filename=filename, parameters_dict=api_parameters)
99
+ res = client.general.partition(request=partition_request)
86
100
 
87
101
  return res.elements or []
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: unstructured-ingest
3
- Version: 0.2.1
3
+ Version: 0.2.2
4
4
  Summary: A library that prepares raw documents for downstream ML tasks.
5
5
  Home-page: https://github.com/Unstructured-IO/unstructured-ingest
6
6
  Author: Unstructured Technologies
@@ -22,20 +22,20 @@ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
22
22
  Requires-Python: >=3.9.0,<3.13
23
23
  Description-Content-Type: text/markdown
24
24
  License-File: LICENSE.md
25
+ Requires-Dist: opentelemetry-sdk
26
+ Requires-Dist: dataclasses-json
27
+ Requires-Dist: click
25
28
  Requires-Dist: tqdm
26
29
  Requires-Dist: python-dateutil
27
30
  Requires-Dist: pandas
28
- Requires-Dist: click
29
31
  Requires-Dist: pydantic>=2.7
30
- Requires-Dist: dataclasses-json
31
- Requires-Dist: opentelemetry-sdk
32
32
  Provides-Extra: airtable
33
33
  Requires-Dist: pyairtable; extra == "airtable"
34
34
  Provides-Extra: astradb
35
35
  Requires-Dist: astrapy; extra == "astradb"
36
36
  Provides-Extra: azure
37
- Requires-Dist: fsspec; extra == "azure"
38
37
  Requires-Dist: adlfs; extra == "azure"
38
+ Requires-Dist: fsspec; extra == "azure"
39
39
  Provides-Extra: azure-cognitive-search
40
40
  Requires-Dist: azure-search-documents; extra == "azure-cognitive-search"
41
41
  Provides-Extra: bedrock
@@ -44,15 +44,15 @@ Provides-Extra: biomed
44
44
  Requires-Dist: requests; extra == "biomed"
45
45
  Requires-Dist: bs4; extra == "biomed"
46
46
  Provides-Extra: box
47
- Requires-Dist: fsspec; extra == "box"
48
47
  Requires-Dist: boxfs; extra == "box"
48
+ Requires-Dist: fsspec; extra == "box"
49
49
  Provides-Extra: chroma
50
50
  Requires-Dist: chromadb; extra == "chroma"
51
51
  Provides-Extra: clarifai
52
52
  Requires-Dist: clarifai; extra == "clarifai"
53
53
  Provides-Extra: confluence
54
- Requires-Dist: atlassian-python-api; extra == "confluence"
55
54
  Requires-Dist: requests; extra == "confluence"
55
+ Requires-Dist: atlassian-python-api; extra == "confluence"
56
56
  Provides-Extra: couchbase
57
57
  Requires-Dist: couchbase; extra == "couchbase"
58
58
  Provides-Extra: csv
@@ -60,8 +60,8 @@ Requires-Dist: unstructured[tsv]; extra == "csv"
60
60
  Provides-Extra: databricks-volumes
61
61
  Requires-Dist: databricks-sdk; extra == "databricks-volumes"
62
62
  Provides-Extra: delta-table
63
- Requires-Dist: fsspec; extra == "delta-table"
64
63
  Requires-Dist: deltalake; extra == "delta-table"
64
+ Requires-Dist: fsspec; extra == "delta-table"
65
65
  Provides-Extra: discord
66
66
  Requires-Dist: discord-py; extra == "discord"
67
67
  Provides-Extra: doc
@@ -69,8 +69,8 @@ Requires-Dist: unstructured[docx]; extra == "doc"
69
69
  Provides-Extra: docx
70
70
  Requires-Dist: unstructured[docx]; extra == "docx"
71
71
  Provides-Extra: dropbox
72
- Requires-Dist: fsspec; extra == "dropbox"
73
72
  Requires-Dist: dropboxdrivefs; extra == "dropbox"
73
+ Requires-Dist: fsspec; extra == "dropbox"
74
74
  Provides-Extra: elasticsearch
75
75
  Requires-Dist: elasticsearch[async]; extra == "elasticsearch"
76
76
  Provides-Extra: embed-huggingface
@@ -78,8 +78,8 @@ Requires-Dist: sentence-transformers; extra == "embed-huggingface"
78
78
  Provides-Extra: embed-mixedbreadai
79
79
  Requires-Dist: mixedbread-ai; extra == "embed-mixedbreadai"
80
80
  Provides-Extra: embed-octoai
81
- Requires-Dist: openai; extra == "embed-octoai"
82
81
  Requires-Dist: tiktoken; extra == "embed-octoai"
82
+ Requires-Dist: openai; extra == "embed-octoai"
83
83
  Provides-Extra: embed-vertexai
84
84
  Requires-Dist: vertexai; extra == "embed-vertexai"
85
85
  Provides-Extra: embed-voyageai
@@ -88,18 +88,18 @@ Provides-Extra: epub
88
88
  Requires-Dist: unstructured[epub]; extra == "epub"
89
89
  Provides-Extra: gcs
90
90
  Requires-Dist: gcsfs; extra == "gcs"
91
- Requires-Dist: fsspec; extra == "gcs"
92
91
  Requires-Dist: bs4; extra == "gcs"
92
+ Requires-Dist: fsspec; extra == "gcs"
93
93
  Provides-Extra: github
94
- Requires-Dist: pygithub>1.58.0; extra == "github"
95
94
  Requires-Dist: requests; extra == "github"
95
+ Requires-Dist: pygithub>1.58.0; extra == "github"
96
96
  Provides-Extra: gitlab
97
97
  Requires-Dist: python-gitlab; extra == "gitlab"
98
98
  Provides-Extra: google-drive
99
99
  Requires-Dist: google-api-python-client; extra == "google-drive"
100
100
  Provides-Extra: hubspot
101
- Requires-Dist: urllib3; extra == "hubspot"
102
101
  Requires-Dist: hubspot-api-client; extra == "hubspot"
102
+ Requires-Dist: urllib3; extra == "hubspot"
103
103
  Provides-Extra: jira
104
104
  Requires-Dist: atlassian-python-api; extra == "jira"
105
105
  Provides-Extra: kafka
@@ -115,26 +115,26 @@ Requires-Dist: pymongo; extra == "mongodb"
115
115
  Provides-Extra: msg
116
116
  Requires-Dist: unstructured[msg]; extra == "msg"
117
117
  Provides-Extra: notion
118
+ Requires-Dist: notion-client; extra == "notion"
118
119
  Requires-Dist: httpx; extra == "notion"
119
120
  Requires-Dist: backoff; extra == "notion"
120
121
  Requires-Dist: htmlBuilder; extra == "notion"
121
- Requires-Dist: notion-client; extra == "notion"
122
122
  Provides-Extra: odt
123
123
  Requires-Dist: unstructured[odt]; extra == "odt"
124
124
  Provides-Extra: onedrive
125
+ Requires-Dist: Office365-REST-Python-Client; extra == "onedrive"
125
126
  Requires-Dist: msal; extra == "onedrive"
126
127
  Requires-Dist: bs4; extra == "onedrive"
127
- Requires-Dist: Office365-REST-Python-Client; extra == "onedrive"
128
128
  Provides-Extra: openai
129
- Requires-Dist: openai; extra == "openai"
130
129
  Requires-Dist: tiktoken; extra == "openai"
130
+ Requires-Dist: openai; extra == "openai"
131
131
  Provides-Extra: opensearch
132
132
  Requires-Dist: opensearch-py; extra == "opensearch"
133
133
  Provides-Extra: org
134
134
  Requires-Dist: unstructured[org]; extra == "org"
135
135
  Provides-Extra: outlook
136
- Requires-Dist: msal; extra == "outlook"
137
136
  Requires-Dist: Office365-REST-Python-Client; extra == "outlook"
137
+ Requires-Dist: msal; extra == "outlook"
138
138
  Provides-Extra: pdf
139
139
  Requires-Dist: unstructured[pdf]; extra == "pdf"
140
140
  Provides-Extra: pinecone
@@ -150,28 +150,28 @@ Requires-Dist: qdrant-client; extra == "qdrant"
150
150
  Provides-Extra: reddit
151
151
  Requires-Dist: praw; extra == "reddit"
152
152
  Provides-Extra: remote
153
- Requires-Dist: unstructured-client>=0.25.8; extra == "remote"
153
+ Requires-Dist: unstructured-client>=0.26.1; extra == "remote"
154
154
  Provides-Extra: rst
155
155
  Requires-Dist: unstructured[rst]; extra == "rst"
156
156
  Provides-Extra: rtf
157
157
  Requires-Dist: unstructured[rtf]; extra == "rtf"
158
158
  Provides-Extra: s3
159
- Requires-Dist: fsspec; extra == "s3"
160
159
  Requires-Dist: s3fs; extra == "s3"
160
+ Requires-Dist: fsspec; extra == "s3"
161
161
  Provides-Extra: salesforce
162
162
  Requires-Dist: simple-salesforce; extra == "salesforce"
163
163
  Provides-Extra: sftp
164
- Requires-Dist: fsspec; extra == "sftp"
165
164
  Requires-Dist: paramiko; extra == "sftp"
165
+ Requires-Dist: fsspec; extra == "sftp"
166
166
  Provides-Extra: sharepoint
167
- Requires-Dist: msal; extra == "sharepoint"
168
167
  Requires-Dist: Office365-REST-Python-Client; extra == "sharepoint"
168
+ Requires-Dist: msal; extra == "sharepoint"
169
169
  Provides-Extra: singlestore
170
170
  Requires-Dist: singlestoredb; extra == "singlestore"
171
171
  Provides-Extra: slack
172
172
  Requires-Dist: slack-sdk[optional]; extra == "slack"
173
173
  Provides-Extra: snowflake
174
- Requires-Dist: snowflake; extra == "snowflake"
174
+ Requires-Dist: snowflake-connector-python; extra == "snowflake"
175
175
  Provides-Extra: togetherai
176
176
  Requires-Dist: together; extra == "togetherai"
177
177
  Provides-Extra: tsv
@@ -5,7 +5,11 @@ test/integration/chunkers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
5
5
  test/integration/chunkers/test_chunkers.py,sha256=pqn1Rqh36jZTJL4qpU0iuOMFAEQ-LrKAPOgWtQMAt_I,1482
6
6
  test/integration/connectors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  test/integration/connectors/conftest.py,sha256=6dVNMBrL6WIO4KXA-0nf2tNrPYk_tsor8uomi6fbi3Q,727
8
+ test/integration/connectors/test_confluence.py,sha256=xcPmZ_vi_pkCt-tUPn10P49FH9i_9YUbrAPO6fYk5rU,3521
8
9
  test/integration/connectors/test_delta_table.py,sha256=4_KPyQJpd6DmyIjjtXWPMw6NNf7xULRkxmqfbvmZ80g,5018
10
+ test/integration/connectors/test_kafka.py,sha256=tWSs7Lkdam6sYJDvOinQUKvxtsknFI0SKuGou8e1H-0,2272
11
+ test/integration/connectors/test_onedrive.py,sha256=KIkBwKh1hnv203VCL2UABnDkS_bP4NxOFm1AL8EPGLA,3554
12
+ test/integration/connectors/test_qdrant.py,sha256=ASvO-BNyhv8m8or28KljrJy27Da0uaTNeoR5w_QsvFg,5121
9
13
  test/integration/connectors/test_s3.py,sha256=1ErPRpNmbg-88ig80SfIyxujF7xnAWtI42WSue4sgKU,5850
10
14
  test/integration/connectors/databricks_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
15
  test/integration/connectors/databricks_tests/test_volumes_native.py,sha256=k4lALbwNtlyuI3wd3OHoBULI21E3Ck2Fo8EJXaVfwgw,5812
@@ -16,9 +20,9 @@ test/integration/connectors/sql/test_snowflake.py,sha256=XXU2-2z_k8jHWP684v2IuaG
16
20
  test/integration/connectors/sql/test_sqlite.py,sha256=51QrFufAq-XxNjHAkmPWxdJUkGdIRRIGKeRT09A5pkA,5704
17
21
  test/integration/connectors/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
22
  test/integration/connectors/utils/constants.py,sha256=0zSPnsZVqJuNhXduXvdXFQLZTRIQa5Fo_1qjBYVCfb8,209
19
- test/integration/connectors/utils/docker.py,sha256=-wknXRVlzr3BVPdEhCyJgsdNjO9aSb2xjb-mQ306j7Q,2256
23
+ test/integration/connectors/utils/docker.py,sha256=JxfX8u46YwpqUnVGd4syI0SrqGqvGQx9yBN0Xq-bIKE,2328
20
24
  test/integration/connectors/utils/docker_compose.py,sha256=GVTB6Cel05c0VQ2n4AwkQQx_cBfz13ZTs1HpbaYipNU,2223
21
- test/integration/connectors/utils/validation.py,sha256=gnflehoYbFkSBJdXQV-7HwcrlL_Cuqni2ri1YmArjT0,12019
25
+ test/integration/connectors/utils/validation.py,sha256=5rQOBJyu1etvuwJmkH6xvKUPF08AKwJRxlN4L7-nw9w,13894
22
26
  test/integration/embedders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
27
  test/integration/embedders/conftest.py,sha256=B2W771RbijR7G_GybsCzRyIvOzXqzbKZdRIlNDd5AGY,334
24
28
  test/integration/embedders/test_bedrock.py,sha256=0oBRNS_DtFDGQ22Z1T3t6VOJ31PrItgvnJpqcLe9Fg4,1903
@@ -47,9 +51,9 @@ test/unit/embed/test_openai.py,sha256=0O1yshDcE0BMKv1yJqrNuiNLSdPhLpKqJ-D_wmnids
47
51
  test/unit/embed/test_vertexai.py,sha256=Pl7COc9E3tf_yGidkTEmTizNGyZF1F5zuL2TgPTMnfI,1048
48
52
  test/unit/embed/test_voyageai.py,sha256=DviCOJFhe5H4e26-kNyX3JNe8h3qB5Yl0KOe8rQEMrc,981
49
53
  unstructured_ingest/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
50
- unstructured_ingest/__version__.py,sha256=Hmm5OuicK0ynl_R5DSnpRYWJpEXwe7guJdsAMHH7K60,42
54
+ unstructured_ingest/__version__.py,sha256=h73ZYWteeEB3jWqVrz7Z3m26fzblpJHqT2R5UK5aQ5w,42
51
55
  unstructured_ingest/error.py,sha256=qDncnJgbf5ils956RcO2CGlAKYDT5OaEM9Clv1JVTNc,1448
52
- unstructured_ingest/interfaces.py,sha256=m03BgenxSA34HbW157L7V9TGxK_dTG7N2AnAhF31W-U,31364
56
+ unstructured_ingest/interfaces.py,sha256=OYVUP0bzBJpT-Lz92BDyz_hLBvyfxkuSwWHhUdnUayA,31493
53
57
  unstructured_ingest/logger.py,sha256=S5nSqGcABoQyeicgRnBQFjDScCaTvFVivOCvbo-laL0,4479
54
58
  unstructured_ingest/main.py,sha256=82G_7eG4PNhc_xIqj4Y_sFbDV9VI-nwSfsfJQMzovMk,169
55
59
  unstructured_ingest/processor.py,sha256=XKKrvbxsb--5cDzz4hB3-GfWZYyIjJ2ah8FpzQKF_DM,2760
@@ -123,7 +127,7 @@ unstructured_ingest/connector/gitlab.py,sha256=OEilnSFabWT3XY0riNxVTXc9tS3f1lMyH
123
127
  unstructured_ingest/connector/google_drive.py,sha256=Sl6r-IcbV_7s8LeMg2z8qiko2r5RAyRnDzBxMwvY6ng,13053
124
128
  unstructured_ingest/connector/hubspot.py,sha256=jL-bqU4EJIqbG0YRk9IR3MKsHi_WHf86Fy6r1fVeCz4,9271
125
129
  unstructured_ingest/connector/jira.py,sha256=kxjGhbVSH8FJNPMGJbnpZEV5zZRfGFckVJFiOzExphQ,15690
126
- unstructured_ingest/connector/kafka.py,sha256=D0XPf0IZ4XkLjnYy7I1FDc5XucNehJLlj-yCKjBMr0w,10053
130
+ unstructured_ingest/connector/kafka.py,sha256=VSlZWqYODbITvFKnR87MyLYO33vLRdFTpclwsQfdfBM,10052
127
131
  unstructured_ingest/connector/local.py,sha256=ayEz7gtnr1ioiYWmJ5ElSlSC8_ZFk1rk-9sX2htRq6c,4479
128
132
  unstructured_ingest/connector/mongodb.py,sha256=UD8T1V435YvGY68dpL-fyFesD7bcLckptgXzzfgnILI,9771
129
133
  unstructured_ingest/connector/onedrive.py,sha256=-yy3scFHVIUiPAAQdmJXel3_BMZnZc9qUI8HwecuoJ4,8911
@@ -314,7 +318,7 @@ unstructured_ingest/v2/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LG
314
318
  unstructured_ingest/v2/logger.py,sha256=wcln4s5Nyp2fjjJux9iM3d6t9aQFNJ2H1IAZXmIknjI,4323
315
319
  unstructured_ingest/v2/main.py,sha256=WFdLEqEXRy6E9_G-dF20MK2AtgX51Aan1sp_N67U2B8,172
316
320
  unstructured_ingest/v2/otel.py,sha256=2fGj1c7cVcC3J8NwL6MNYhyPEAXiB33DsilvRDkrdLo,4130
317
- unstructured_ingest/v2/unstructured_api.py,sha256=HqOaQ80YTdAnFj_2Ce108g7Pp3-F9Qg329Uw2OXtRmA,3375
321
+ unstructured_ingest/v2/unstructured_api.py,sha256=f_6NK0QOVwjAFJvlyvzu0IaXb6QQgRNJleYxB1KvzKE,3856
318
322
  unstructured_ingest/v2/utils.py,sha256=BT_j15e4rX40wQbt8LUXbqfPhA3rJn1PHTI_G_A_EHY,1720
319
323
  unstructured_ingest/v2/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
320
324
  unstructured_ingest/v2/cli/cli.py,sha256=qHXIs-PcvMgDZhP1AR9iDMxh8FXBMJCEDksPBfiMULE,648
@@ -351,26 +355,28 @@ unstructured_ingest/v2/pipeline/steps/stage.py,sha256=cphKgHScLz2rNLZRI5Olsb6dAH
351
355
  unstructured_ingest/v2/pipeline/steps/uncompress.py,sha256=CFSy4tGp6BAvF0oIwWFN8v4zFzh5pRDeESjEn5iP9hE,1756
352
356
  unstructured_ingest/v2/pipeline/steps/upload.py,sha256=zlgXgwReX9TBOdfTpS9hETah4SeSmzPB2g8dAGfLIvM,1987
353
357
  unstructured_ingest/v2/processes/__init__.py,sha256=FaHWSCGyc7GWVnAsNEUUj7L8hT8gCVY3_hUE2VzWtUg,462
354
- unstructured_ingest/v2/processes/chunker.py,sha256=1bfJ2qgl6qu2HvClzHbC7-q5QtUp7mrlNxZxnPGYTm0,5479
358
+ unstructured_ingest/v2/processes/chunker.py,sha256=31-7ojsM2coIt2rMR0KOb82IxLVJfNHbqYUOsDkhxN8,5491
355
359
  unstructured_ingest/v2/processes/connector_registry.py,sha256=vkEe6jpgdYtZCxMj59s5atWGgmPuxAEXRUoTt-MJ7wc,2198
356
360
  unstructured_ingest/v2/processes/embedder.py,sha256=PQn0IO8xbGRQHpcT2VVl-J8gTJ5HGGEP9gdEAwMVK3U,6498
357
361
  unstructured_ingest/v2/processes/filter.py,sha256=kjUmMw2SDq2bme0JCAOxs6cJriIG6Ty09KOznS-xz08,2145
358
- unstructured_ingest/v2/processes/partitioner.py,sha256=2Lhztd730soVC2TOqrn_ba7CGZna8AHHpqJY2ZUYVxE,7776
362
+ unstructured_ingest/v2/processes/partitioner.py,sha256=agpHwB9FR8OZVQqE7zFEb0IcDPCOPA_BZjLzLF71nOY,8194
359
363
  unstructured_ingest/v2/processes/uncompress.py,sha256=Z_XfsITGdyaRwhtNUc7bMj5Y2jLuBge8KoK4nxhqKag,2425
360
- unstructured_ingest/v2/processes/connectors/__init__.py,sha256=zMO50wOGWOJrCTdh19Najj-i5tfMUyf977TKz4yN04A,5249
364
+ unstructured_ingest/v2/processes/connectors/__init__.py,sha256=t3mBUb7F4LgNY8dyoDnzQVaRqGajOaXUqAEBUO5hr4A,5902
361
365
  unstructured_ingest/v2/processes/connectors/airtable.py,sha256=Yi7PEv_FejZ9_y3BPY3gu5YGVfeLh-9YX-qLyQHjJsY,8921
362
366
  unstructured_ingest/v2/processes/connectors/astradb.py,sha256=k6zaxm05-ESpRV6w1jgrtfE10-I2Z50kafURxxJVzdk,14043
363
367
  unstructured_ingest/v2/processes/connectors/azure_cognitive_search.py,sha256=S55v7TXu30rEdgythMBB_2VcuomyMPmcPtLYykbhw_E,8466
364
368
  unstructured_ingest/v2/processes/connectors/chroma.py,sha256=skrxRPHZ8y3JxNa0dt5SVitHiDQ5WVxLvY_kh2-QUrQ,8029
369
+ unstructured_ingest/v2/processes/connectors/confluence.py,sha256=bcqE-5ODFpHy43g72dOHXVNUxK1Z5N0_dy2UrCESr7Y,7007
365
370
  unstructured_ingest/v2/processes/connectors/couchbase.py,sha256=SONLywyEfoAlLc-HPabXeGzoiwKnekMHIbRMXd4CGXs,12146
366
371
  unstructured_ingest/v2/processes/connectors/delta_table.py,sha256=ZZfdNTw1W0ISQGWCtM1JuIME26FYzuPBOqRKql0wlLg,7013
367
372
  unstructured_ingest/v2/processes/connectors/elasticsearch.py,sha256=ojxMUHkLa6ZG50aTGn2YWhDHZ1n38uFRn5p8_ghAIvM,16762
373
+ unstructured_ingest/v2/processes/connectors/gitlab.py,sha256=yBgCeLy9iCVI8bBDcHHuHB0H3BO05e9E1OccbHwvKAo,9724
368
374
  unstructured_ingest/v2/processes/connectors/google_drive.py,sha256=7xOQthcqBd9auJxB0nxZlhh1vdjXpMX_CtQZa6YfZz0,13088
369
375
  unstructured_ingest/v2/processes/connectors/kdbai.py,sha256=8bGHbZctJ_Tl1AUSMnI7CCZ7CgEtTRVcRuvlB1HPlqQ,5907
370
376
  unstructured_ingest/v2/processes/connectors/local.py,sha256=a3stgnIkhBbXPIQD0O-RaRM-Eb-szHj9Yy4Fz881-9c,6723
371
377
  unstructured_ingest/v2/processes/connectors/milvus.py,sha256=ZUlyAQyTt0U1JoapFYHQW3IIaGYY50b3URDSLEAFjtk,7687
372
378
  unstructured_ingest/v2/processes/connectors/mongodb.py,sha256=A0pt6JcNTD5bEu79jZ8KhnHcBQ2VUJ2AjtQAtdFr_Lo,13175
373
- unstructured_ingest/v2/processes/connectors/onedrive.py,sha256=ZiUo-dFo1LMOvFwphSLRZiR1PcrN8GWLTHhsh4TU6n0,9207
379
+ unstructured_ingest/v2/processes/connectors/onedrive.py,sha256=4Xs3akCaBC2JW3MyVnKctrOgB7xOjiEMudFL1Fg7lsc,15981
374
380
  unstructured_ingest/v2/processes/connectors/opensearch.py,sha256=dfDSNrWIEk19wuHdlMJpp_SLMOteNPlkDBPlAwu1LVY,6767
375
381
  unstructured_ingest/v2/processes/connectors/outlook.py,sha256=NK67Pd8Nk5oUIXTK-sK18K7rZ_Cl0UuCbeF2ExBEZho,9294
376
382
  unstructured_ingest/v2/processes/connectors/pinecone.py,sha256=k_GH55S_OQ6-wCLC6gkhRrNpXIFECYZ_2Gjz_XRtY6Y,7561
@@ -380,7 +386,7 @@ unstructured_ingest/v2/processes/connectors/slack.py,sha256=b9IanzUApUexiJzuNg7P
380
386
  unstructured_ingest/v2/processes/connectors/utils.py,sha256=8kd0g7lo9NqnpaIkjeO-Ut6erhwUNH_gS9koevpe3WE,878
381
387
  unstructured_ingest/v2/processes/connectors/weaviate.py,sha256=Ss0YyD5T6k-00eJ6dr5lSo2H0LcOjVTMmozehyTvnAo,8866
382
388
  unstructured_ingest/v2/processes/connectors/databricks/__init__.py,sha256=jO71UTC7bLA_N12CrLWJzh_yZML5gfT7VohxzCpUGWg,1848
383
- unstructured_ingest/v2/processes/connectors/databricks/volumes.py,sha256=8FasrRcoqa9zrhmnbfYN_rBBTH6xBXM50TzGsUMEm98,6581
389
+ unstructured_ingest/v2/processes/connectors/databricks/volumes.py,sha256=p7sjCYZb7JmY3v3Xy1gm-q0O7oamLTsSFf2EWXYfXYQ,6447
384
390
  unstructured_ingest/v2/processes/connectors/databricks/volumes_aws.py,sha256=I1MJwe5LOxoPLjwo00H0XbXO6u_SJHWYgsj4s6ePoyI,2754
385
391
  unstructured_ingest/v2/processes/connectors/databricks/volumes_azure.py,sha256=P4rfcE3td7WyuuguRgUnGQytCMDpfeYrrpshBZuVynY,3539
386
392
  unstructured_ingest/v2/processes/connectors/databricks/volumes_gcp.py,sha256=UUotY_-HpgSEJkvdQfZTlbxY7CRLZ4ctL8TlryeFvxk,2790
@@ -389,20 +395,29 @@ unstructured_ingest/v2/processes/connectors/fsspec/__init__.py,sha256=TtdeImM7Yp
389
395
  unstructured_ingest/v2/processes/connectors/fsspec/azure.py,sha256=Y01BuVRql0Kvzc_cdaZE9dDGYjJzrwJu-etfUrEGcUU,7061
390
396
  unstructured_ingest/v2/processes/connectors/fsspec/box.py,sha256=Cjk0LUxqOCDbme0GmnD_5_b1hfStjI23cKw6BquKNrg,5488
391
397
  unstructured_ingest/v2/processes/connectors/fsspec/dropbox.py,sha256=NNAxIRdOQxUncfwhu7J7SnQRM6BSStNOyQZi-4E51iY,5816
392
- unstructured_ingest/v2/processes/connectors/fsspec/fsspec.py,sha256=5uZ_nGBXNQgwvfjNcor6mwzbYOHeja4-EV3nNCXvxaQ,11512
398
+ unstructured_ingest/v2/processes/connectors/fsspec/fsspec.py,sha256=yuWZL9x0C2m7IXRhjaHomu8OpyWl0G2e-FMRKdnsM8s,10964
393
399
  unstructured_ingest/v2/processes/connectors/fsspec/gcs.py,sha256=-_pYHbsBG9FyRyNIaf_xyFbPiiR7pnWEEg_8mp0rIZ8,7053
394
400
  unstructured_ingest/v2/processes/connectors/fsspec/s3.py,sha256=je1BDqFWlyMfPa4oAMMNFQLLQtCY9quuqx3xjTwF8OQ,6251
395
401
  unstructured_ingest/v2/processes/connectors/fsspec/sftp.py,sha256=dwpyqDq0qceCBWX3zM1hiUlgXB4hzX6ObOr-sh-5CJs,6926
396
402
  unstructured_ingest/v2/processes/connectors/fsspec/utils.py,sha256=jec_Qfe2hbfahBuY-u8FnvHuv933AI5HwPFjOL3kEEY,456
403
+ unstructured_ingest/v2/processes/connectors/kafka/__init__.py,sha256=yWYxcmNypbbmTteXHGFg8ivQb-njuDX-alfaGWLJ0OQ,478
404
+ unstructured_ingest/v2/processes/connectors/kafka/cloud.py,sha256=TC31QQWpmJ6-ciNo3GtgDLgaImouEPUYs9256QMW_tU,2341
405
+ unstructured_ingest/v2/processes/connectors/kafka/kafka.py,sha256=FmnZjXCvTkFH3J9t5rPSIBCXulB2T0i0sHh6NLDmY9Y,6843
406
+ unstructured_ingest/v2/processes/connectors/kafka/local.py,sha256=vGUR6Y-g0poU_MVM2e2fmMCO5mUuZcf0n0mMW70qGbE,1942
407
+ unstructured_ingest/v2/processes/connectors/qdrant/__init__.py,sha256=xM19uYzAuGizVoZIM_hnVZ5AcBN69aOBGpqZcpWPtuE,760
408
+ unstructured_ingest/v2/processes/connectors/qdrant/cloud.py,sha256=accJ4sNWBVWV-KiVBDBDBYYx5A9CUoikP5NCErRmfik,1624
409
+ unstructured_ingest/v2/processes/connectors/qdrant/local.py,sha256=cGEyv3Oy6y4BQ4DU8yhJWMpL82QYwBVdPTxxNuV127U,1588
410
+ unstructured_ingest/v2/processes/connectors/qdrant/qdrant.py,sha256=14qDTLrLBugsfvetFPx4ueS8zrk53wBLISuNRD4P-B8,5350
411
+ unstructured_ingest/v2/processes/connectors/qdrant/server.py,sha256=odvCZWZp8DmRxLXMR7tHhW-c7UQbix1_zpFdfXfCvKI,1613
397
412
  unstructured_ingest/v2/processes/connectors/sql/__init__.py,sha256=D43wrV2ADvQsToIYwbEWnZ7mhzlsYcZMFCqf6jIC7dQ,1333
398
413
  unstructured_ingest/v2/processes/connectors/sql/postgres.py,sha256=__Wf5lkCQGhbtEH_2DxfNmQyWP-UKC9o_KEawG81jY0,4905
399
414
  unstructured_ingest/v2/processes/connectors/sql/singlestore.py,sha256=YrmhAL1RQ1c5-2fnR3UAyj_4KfvjYTQ2cWzpvsdJOnU,5535
400
- unstructured_ingest/v2/processes/connectors/sql/snowflake.py,sha256=0s0oBfMttPg5JL6jn8SsoCeTSRoXXdVy2bJAZv_hiSk,5576
401
- unstructured_ingest/v2/processes/connectors/sql/sql.py,sha256=rWDkefUnYkzJT0mhIcHxieECdaIWLTvbDcOcZgLA4FQ,11636
415
+ unstructured_ingest/v2/processes/connectors/sql/snowflake.py,sha256=jl524VudwmFK63emCT7DmZan_EWJAMiGir5_zoO9FuY,5697
416
+ unstructured_ingest/v2/processes/connectors/sql/sql.py,sha256=Jwu3ZC4PGEw9la72cOwC3tclYAoBXFQTII9Mhh8ziP4,11571
402
417
  unstructured_ingest/v2/processes/connectors/sql/sqlite.py,sha256=9605K36nQ5-gBxzt1daYKYotON1SE85RETusqCJrbdk,5230
403
- unstructured_ingest-0.2.1.dist-info/LICENSE.md,sha256=SxkKP_62uIAKb9mb1eH7FH4Kn2aYT09fgjKpJt5PyTk,11360
404
- unstructured_ingest-0.2.1.dist-info/METADATA,sha256=NBV3OAonxt8Y0Tra7LWqQBoLSROwA106sf8vDCsXu2k,7271
405
- unstructured_ingest-0.2.1.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
406
- unstructured_ingest-0.2.1.dist-info/entry_points.txt,sha256=gUAAFnjFPnBgThJSEbw0N5ZjxtaKlT1s9e05_arQrNw,70
407
- unstructured_ingest-0.2.1.dist-info/top_level.txt,sha256=DMuDMHZRMdeay8v8Kdi855muIv92F0OkutvBCaBEW6M,25
408
- unstructured_ingest-0.2.1.dist-info/RECORD,,
418
+ unstructured_ingest-0.2.2.dist-info/LICENSE.md,sha256=SxkKP_62uIAKb9mb1eH7FH4Kn2aYT09fgjKpJt5PyTk,11360
419
+ unstructured_ingest-0.2.2.dist-info/METADATA,sha256=0sygNKxP0BY-jzQIlvm0h3xyJWShW9nVlNRAUXb8XC8,7288
420
+ unstructured_ingest-0.2.2.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
421
+ unstructured_ingest-0.2.2.dist-info/entry_points.txt,sha256=gUAAFnjFPnBgThJSEbw0N5ZjxtaKlT1s9e05_arQrNw,70
422
+ unstructured_ingest-0.2.2.dist-info/top_level.txt,sha256=DMuDMHZRMdeay8v8Kdi855muIv92F0OkutvBCaBEW6M,25
423
+ unstructured_ingest-0.2.2.dist-info/RECORD,,