unstructured-ingest 0.3.13__py3-none-any.whl → 0.3.15__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 (47) hide show
  1. test/integration/connectors/databricks/test_volumes_native.py +10 -6
  2. test/integration/connectors/discord/test_discord.py +4 -4
  3. test/integration/connectors/duckdb/test_duckdb.py +3 -2
  4. test/integration/connectors/duckdb/test_motherduck.py +2 -2
  5. test/integration/connectors/elasticsearch/test_elasticsearch.py +8 -7
  6. test/integration/connectors/elasticsearch/test_opensearch.py +8 -7
  7. test/integration/connectors/sql/test_databricks_delta_tables.py +142 -0
  8. test/integration/connectors/sql/test_postgres.py +9 -3
  9. test/integration/connectors/sql/test_singlestore.py +9 -3
  10. test/integration/connectors/sql/test_snowflake.py +9 -3
  11. test/integration/connectors/sql/test_sqlite.py +9 -3
  12. test/integration/connectors/test_astradb.py +25 -9
  13. test/integration/connectors/test_azure_ai_search.py +3 -4
  14. test/integration/connectors/test_chroma.py +4 -6
  15. test/integration/connectors/test_confluence.py +3 -5
  16. test/integration/connectors/test_delta_table.py +4 -6
  17. test/integration/connectors/test_lancedb.py +3 -3
  18. test/integration/connectors/test_milvus.py +10 -5
  19. test/integration/connectors/test_mongodb.py +9 -9
  20. test/integration/connectors/test_neo4j.py +16 -8
  21. test/integration/connectors/test_notion.py +7 -0
  22. test/integration/connectors/test_onedrive.py +2 -4
  23. test/integration/connectors/test_pinecone.py +73 -8
  24. test/integration/connectors/test_qdrant.py +5 -4
  25. test/integration/connectors/test_redis.py +3 -3
  26. test/integration/connectors/test_s3.py +7 -6
  27. test/integration/connectors/test_vectara.py +2 -2
  28. test/integration/connectors/utils/constants.py +6 -0
  29. test/integration/connectors/utils/docker.py +2 -2
  30. test/integration/connectors/weaviate/test_cloud.py +5 -0
  31. test/integration/connectors/weaviate/test_local.py +2 -2
  32. unstructured_ingest/__version__.py +1 -1
  33. unstructured_ingest/v2/interfaces/upload_stager.py +3 -3
  34. unstructured_ingest/v2/processes/connectors/databricks/__init__.py +6 -0
  35. unstructured_ingest/v2/processes/connectors/databricks/volumes.py +6 -3
  36. unstructured_ingest/v2/processes/connectors/databricks/volumes_table.py +106 -0
  37. unstructured_ingest/v2/processes/connectors/neo4j.py +12 -12
  38. unstructured_ingest/v2/processes/connectors/pinecone.py +18 -11
  39. unstructured_ingest/v2/processes/connectors/sql/__init__.py +6 -0
  40. unstructured_ingest/v2/processes/connectors/sql/databricks_delta_tables.py +213 -0
  41. unstructured_ingest/v2/processes/connectors/sql/sql.py +26 -9
  42. {unstructured_ingest-0.3.13.dist-info → unstructured_ingest-0.3.15.dist-info}/METADATA +20 -18
  43. {unstructured_ingest-0.3.13.dist-info → unstructured_ingest-0.3.15.dist-info}/RECORD +47 -44
  44. {unstructured_ingest-0.3.13.dist-info → unstructured_ingest-0.3.15.dist-info}/LICENSE.md +0 -0
  45. {unstructured_ingest-0.3.13.dist-info → unstructured_ingest-0.3.15.dist-info}/WHEEL +0 -0
  46. {unstructured_ingest-0.3.13.dist-info → unstructured_ingest-0.3.15.dist-info}/entry_points.txt +0 -0
  47. {unstructured_ingest-0.3.13.dist-info → unstructured_ingest-0.3.15.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,213 @@
1
+ import json
2
+ from contextlib import contextmanager
3
+ from dataclasses import dataclass
4
+ from typing import TYPE_CHECKING, Any, Generator, Optional
5
+
6
+ import numpy as np
7
+ import pandas as pd
8
+ from pydantic import Field, Secret
9
+
10
+ from unstructured_ingest.utils.data_prep import split_dataframe
11
+ from unstructured_ingest.utils.dep_check import requires_dependencies
12
+ from unstructured_ingest.v2.interfaces import FileData
13
+ from unstructured_ingest.v2.logger import logger
14
+ from unstructured_ingest.v2.processes.connector_registry import (
15
+ DestinationRegistryEntry,
16
+ )
17
+ from unstructured_ingest.v2.processes.connectors.sql.sql import (
18
+ SQLAccessConfig,
19
+ SQLConnectionConfig,
20
+ SQLUploader,
21
+ SQLUploaderConfig,
22
+ SQLUploadStager,
23
+ SQLUploadStagerConfig,
24
+ )
25
+
26
+ if TYPE_CHECKING:
27
+ from databricks.sdk.core import oauth_service_principal
28
+ from databricks.sql.client import Connection as DeltaTableConnection
29
+ from databricks.sql.client import Cursor as DeltaTableCursor
30
+
31
+ CONNECTOR_TYPE = "databricks_delta_tables"
32
+
33
+
34
+ class DatabrickDeltaTablesAccessConfig(SQLAccessConfig):
35
+ token: Optional[str] = Field(default=None, description="Databricks Personal Access Token")
36
+ client_id: Optional[str] = Field(default=None, description="Client ID of the OAuth app.")
37
+ client_secret: Optional[str] = Field(
38
+ default=None, description="Client Secret of the OAuth app."
39
+ )
40
+
41
+
42
+ class DatabrickDeltaTablesConnectionConfig(SQLConnectionConfig):
43
+ access_config: Secret[DatabrickDeltaTablesAccessConfig]
44
+ server_hostname: str = Field(description="server hostname connection config value")
45
+ http_path: str = Field(description="http path connection config value")
46
+ user_agent: str = "unstructuredio_oss"
47
+
48
+ @requires_dependencies(["databricks"], extras="databricks-delta-tables")
49
+ def get_credentials_provider(self) -> "oauth_service_principal":
50
+ from databricks.sdk.core import Config, oauth_service_principal
51
+
52
+ host = f"https://{self.server_hostname}"
53
+ access_configs = self.access_config.get_secret_value()
54
+ if (client_id := access_configs.client_id) and (
55
+ client_secret := access_configs.client_secret
56
+ ):
57
+ return oauth_service_principal(
58
+ Config(
59
+ host=host,
60
+ client_id=client_id,
61
+ client_secret=client_secret,
62
+ )
63
+ )
64
+ return False
65
+
66
+ def model_post_init(self, __context: Any) -> None:
67
+ access_config = self.access_config.get_secret_value()
68
+ if access_config.token and access_config.client_secret and access_config.client_id:
69
+ raise ValueError(
70
+ "One one for of auth can be provided, either token or client id and secret"
71
+ )
72
+ if not access_config.token and not (
73
+ access_config.client_secret and access_config.client_id
74
+ ):
75
+ raise ValueError(
76
+ "One form of auth must be provided, either token or client id and secret"
77
+ )
78
+
79
+ @contextmanager
80
+ @requires_dependencies(["databricks"], extras="databricks-delta-tables")
81
+ def get_connection(self, **connect_kwargs) -> Generator["DeltaTableConnection", None, None]:
82
+ from databricks.sql import connect
83
+
84
+ connect_kwargs = connect_kwargs or {}
85
+ connect_kwargs["_user_agent_entry"] = self.user_agent
86
+ connect_kwargs["server_hostname"] = connect_kwargs.get(
87
+ "server_hostname", self.server_hostname
88
+ )
89
+ connect_kwargs["http_path"] = connect_kwargs.get("http_path", self.http_path)
90
+
91
+ if credential_provider := self.get_credentials_provider():
92
+ connect_kwargs["credentials_provider"] = credential_provider
93
+ else:
94
+ connect_kwargs["access_token"] = self.access_config.get_secret_value().token
95
+ with connect(**connect_kwargs) as connection:
96
+ yield connection
97
+
98
+ @contextmanager
99
+ def get_cursor(self, **connect_kwargs) -> Generator["DeltaTableCursor", None, None]:
100
+ with self.get_connection(**connect_kwargs) as connection:
101
+ cursor = connection.cursor()
102
+ yield cursor
103
+
104
+
105
+ class DatabrickDeltaTablesUploadStagerConfig(SQLUploadStagerConfig):
106
+ pass
107
+
108
+
109
+ class DatabrickDeltaTablesUploadStager(SQLUploadStager):
110
+ upload_stager_config: DatabrickDeltaTablesUploadStagerConfig
111
+
112
+
113
+ class DatabrickDeltaTablesUploaderConfig(SQLUploaderConfig):
114
+ catalog: str = Field(description="Name of the catalog in the Databricks Unity Catalog service")
115
+ database: str = Field(description="Database name", default="default")
116
+ table_name: str = Field(description="Table name")
117
+
118
+
119
+ @dataclass
120
+ class DatabrickDeltaTablesUploader(SQLUploader):
121
+ upload_config: DatabrickDeltaTablesUploaderConfig
122
+ connection_config: DatabrickDeltaTablesConnectionConfig
123
+ connector_type: str = CONNECTOR_TYPE
124
+
125
+ @contextmanager
126
+ def get_cursor(self) -> Generator[Any, None, None]:
127
+ with self.connection_config.get_cursor() as cursor:
128
+ cursor.execute(f"USE CATALOG '{self.upload_config.catalog}'")
129
+ yield cursor
130
+
131
+ def precheck(self) -> None:
132
+ with self.connection_config.get_cursor() as cursor:
133
+ cursor.execute("SHOW CATALOGS")
134
+ catalogs = [r[0] for r in cursor.fetchall()]
135
+ if self.upload_config.catalog not in catalogs:
136
+ raise ValueError(
137
+ "Catalog {} not found in {}".format(
138
+ self.upload_config.catalog, ", ".join(catalogs)
139
+ )
140
+ )
141
+ cursor.execute(f"USE CATALOG '{self.upload_config.catalog}'")
142
+ cursor.execute("SHOW DATABASES")
143
+ databases = [r[0] for r in cursor.fetchall()]
144
+ if self.upload_config.database not in databases:
145
+ raise ValueError(
146
+ "Database {} not found in {}".format(
147
+ self.upload_config.database, ", ".join(databases)
148
+ )
149
+ )
150
+ cursor.execute("SHOW TABLES")
151
+ table_names = [r[1] for r in cursor.fetchall()]
152
+ if self.upload_config.table_name not in table_names:
153
+ raise ValueError(
154
+ "Table {} not found in {}".format(
155
+ self.upload_config.table_name, ", ".join(table_names)
156
+ )
157
+ )
158
+
159
+ def create_statement(self, columns: list[str], values: tuple[Any, ...]) -> str:
160
+ values_list = []
161
+ for v in values:
162
+ if isinstance(v, dict):
163
+ values_list.append(json.dumps(v))
164
+ elif isinstance(v, list):
165
+ if v and isinstance(v[0], (int, float)):
166
+ values_list.append("ARRAY({})".format(", ".join([str(val) for val in v])))
167
+ else:
168
+ values_list.append("ARRAY({})".format(", ".join([f"'{val}'" for val in v])))
169
+ else:
170
+ values_list.append(f"'{v}'")
171
+ statement = "INSERT INTO {table_name} ({columns}) VALUES({values})".format(
172
+ table_name=self.upload_config.table_name,
173
+ columns=", ".join(columns),
174
+ values=", ".join(values_list),
175
+ )
176
+ return statement
177
+
178
+ def upload_dataframe(self, df: pd.DataFrame, file_data: FileData) -> None:
179
+ if self.can_delete():
180
+ self.delete_by_record_id(file_data=file_data)
181
+ else:
182
+ logger.warning(
183
+ f"table doesn't contain expected "
184
+ f"record id column "
185
+ f"{self.upload_config.record_id_key}, skipping delete"
186
+ )
187
+ df.replace({np.nan: None}, inplace=True)
188
+ self._fit_to_schema(df=df)
189
+
190
+ columns = list(df.columns)
191
+ logger.info(
192
+ f"writing a total of {len(df)} elements via"
193
+ f" document batches to destination"
194
+ f" table named {self.upload_config.table_name}"
195
+ # f" with batch size {self.upload_config.batch_size}"
196
+ )
197
+ # TODO: currently variable binding not supporting for list types,
198
+ # update once that gets resolved in SDK
199
+ for rows in split_dataframe(df=df, chunk_size=self.upload_config.batch_size):
200
+ with self.get_cursor() as cursor:
201
+ values = self.prepare_data(columns, tuple(rows.itertuples(index=False, name=None)))
202
+ for v in values:
203
+ stmt = self.create_statement(columns=columns, values=v)
204
+ cursor.execute(stmt)
205
+
206
+
207
+ databricks_delta_tables_destination_entry = DestinationRegistryEntry(
208
+ connection_config=DatabrickDeltaTablesConnectionConfig,
209
+ uploader=DatabrickDeltaTablesUploader,
210
+ uploader_config=DatabrickDeltaTablesUploaderConfig,
211
+ upload_stager=DatabrickDeltaTablesUploadStager,
212
+ upload_stager_config=DatabrickDeltaTablesUploadStagerConfig,
213
+ )
@@ -129,8 +129,13 @@ class SQLIndexer(Indexer, ABC):
129
129
  connection_config: SQLConnectionConfig
130
130
  index_config: SQLIndexerConfig
131
131
 
132
- def _get_doc_ids(self) -> list[str]:
132
+ @contextmanager
133
+ def get_cursor(self) -> Generator[Any, None, None]:
133
134
  with self.connection_config.get_cursor() as cursor:
135
+ yield cursor
136
+
137
+ def _get_doc_ids(self) -> list[str]:
138
+ with self.get_cursor() as cursor:
134
139
  cursor.execute(
135
140
  f"SELECT {self.index_config.id_column} FROM {self.index_config.table_name}"
136
141
  )
@@ -140,7 +145,7 @@ class SQLIndexer(Indexer, ABC):
140
145
 
141
146
  def precheck(self) -> None:
142
147
  try:
143
- with self.connection_config.get_cursor() as cursor:
148
+ with self.get_cursor() as cursor:
144
149
  cursor.execute("SELECT 1;")
145
150
  except Exception as e:
146
151
  logger.error(f"failed to validate connection: {e}", exc_info=True)
@@ -182,6 +187,11 @@ class SQLDownloader(Downloader, ABC):
182
187
  connection_config: SQLConnectionConfig
183
188
  download_config: SQLDownloaderConfig
184
189
 
190
+ @contextmanager
191
+ def get_cursor(self) -> Generator[Any, None, None]:
192
+ with self.connection_config.get_cursor() as cursor:
193
+ yield cursor
194
+
185
195
  @abstractmethod
186
196
  def query_db(self, file_data: SqlBatchFileData) -> tuple[list[tuple], list[str]]:
187
197
  pass
@@ -323,12 +333,17 @@ class SQLUploader(Uploader):
323
333
 
324
334
  def precheck(self) -> None:
325
335
  try:
326
- with self.connection_config.get_cursor() as cursor:
336
+ with self.get_cursor() as cursor:
327
337
  cursor.execute("SELECT 1;")
328
338
  except Exception as e:
329
339
  logger.error(f"failed to validate connection: {e}", exc_info=True)
330
340
  raise DestinationConnectionError(f"failed to validate connection: {e}")
331
341
 
342
+ @contextmanager
343
+ def get_cursor(self) -> Generator[Any, None, None]:
344
+ with self.connection_config.get_cursor() as cursor:
345
+ yield cursor
346
+
332
347
  def prepare_data(
333
348
  self, columns: list[str], data: tuple[tuple[Any, ...], ...]
334
349
  ) -> list[tuple[Any, ...]]:
@@ -346,7 +361,7 @@ class SQLUploader(Uploader):
346
361
  output.append(tuple(parsed))
347
362
  return output
348
363
 
349
- def _fit_to_schema(self, df: pd.DataFrame, columns: list[str]) -> pd.DataFrame:
364
+ def _fit_to_schema(self, df: pd.DataFrame) -> pd.DataFrame:
350
365
  columns = set(df.columns)
351
366
  schema_fields = set(columns)
352
367
  columns_to_drop = columns - schema_fields
@@ -367,6 +382,7 @@ class SQLUploader(Uploader):
367
382
 
368
383
  for column in missing_columns:
369
384
  df[column] = pd.Series()
385
+ return df
370
386
 
371
387
  def upload_dataframe(self, df: pd.DataFrame, file_data: FileData) -> None:
372
388
  if self.can_delete():
@@ -378,7 +394,7 @@ class SQLUploader(Uploader):
378
394
  f"{self.upload_config.record_id_key}, skipping delete"
379
395
  )
380
396
  df.replace({np.nan: None}, inplace=True)
381
- self._fit_to_schema(df=df, columns=self.get_table_columns())
397
+ self._fit_to_schema(df=df)
382
398
 
383
399
  columns = list(df.columns)
384
400
  stmt = "INSERT INTO {table_name} ({columns}) VALUES({values})".format(
@@ -393,7 +409,7 @@ class SQLUploader(Uploader):
393
409
  f" with batch size {self.upload_config.batch_size}"
394
410
  )
395
411
  for rows in split_dataframe(df=df, chunk_size=self.upload_config.batch_size):
396
- with self.connection_config.get_cursor() as cursor:
412
+ with self.get_cursor() as cursor:
397
413
  values = self.prepare_data(columns, tuple(rows.itertuples(index=False, name=None)))
398
414
  # For debugging purposes:
399
415
  # for val in values:
@@ -406,7 +422,7 @@ class SQLUploader(Uploader):
406
422
  cursor.executemany(stmt, values)
407
423
 
408
424
  def get_table_columns(self) -> list[str]:
409
- with self.connection_config.get_cursor() as cursor:
425
+ with self.get_cursor() as cursor:
410
426
  cursor.execute(f"SELECT * from {self.upload_config.table_name}")
411
427
  return [desc[0] for desc in cursor.description]
412
428
 
@@ -420,10 +436,11 @@ class SQLUploader(Uploader):
420
436
  f"from table {self.upload_config.table_name}"
421
437
  )
422
438
  stmt = f"DELETE FROM {self.upload_config.table_name} WHERE {self.upload_config.record_id_key} = {self.values_delimiter}" # noqa: E501
423
- with self.connection_config.get_cursor() as cursor:
439
+ with self.get_cursor() as cursor:
424
440
  cursor.execute(stmt, [file_data.identifier])
425
441
  rowcount = cursor.rowcount
426
- logger.info(f"deleted {rowcount} rows from table {self.upload_config.table_name}")
442
+ if rowcount > 0:
443
+ logger.info(f"deleted {rowcount} rows from table {self.upload_config.table_name}")
427
444
 
428
445
  def run_data(self, data: list[dict], file_data: FileData, **kwargs: Any) -> None:
429
446
  df = pd.DataFrame(data)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: unstructured-ingest
3
- Version: 0.3.13
3
+ Version: 0.3.15
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
@@ -23,12 +23,12 @@ Requires-Python: >=3.9.0,<3.14
23
23
  Description-Content-Type: text/markdown
24
24
  License-File: LICENSE.md
25
25
  Requires-Dist: ndjson
26
- Requires-Dist: tqdm
27
26
  Requires-Dist: pydantic>=2.7
28
- Requires-Dist: click
29
- Requires-Dist: python-dateutil
30
27
  Requires-Dist: pandas
31
28
  Requires-Dist: dataclasses-json
29
+ Requires-Dist: tqdm
30
+ Requires-Dist: click
31
+ Requires-Dist: python-dateutil
32
32
  Requires-Dist: opentelemetry-sdk
33
33
  Provides-Extra: airtable
34
34
  Requires-Dist: pyairtable; extra == "airtable"
@@ -40,8 +40,8 @@ Requires-Dist: fsspec; extra == "azure"
40
40
  Provides-Extra: azure-ai-search
41
41
  Requires-Dist: azure-search-documents; extra == "azure-ai-search"
42
42
  Provides-Extra: bedrock
43
- Requires-Dist: boto3; extra == "bedrock"
44
43
  Requires-Dist: aioboto3; extra == "bedrock"
44
+ Requires-Dist: boto3; extra == "bedrock"
45
45
  Provides-Extra: biomed
46
46
  Requires-Dist: bs4; extra == "biomed"
47
47
  Requires-Dist: requests; extra == "biomed"
@@ -59,11 +59,13 @@ Provides-Extra: couchbase
59
59
  Requires-Dist: couchbase; extra == "couchbase"
60
60
  Provides-Extra: csv
61
61
  Requires-Dist: unstructured[tsv]; extra == "csv"
62
+ Provides-Extra: databricks-delta-tables
63
+ Requires-Dist: databricks-sql-connector; extra == "databricks-delta-tables"
62
64
  Provides-Extra: databricks-volumes
63
65
  Requires-Dist: databricks-sdk; extra == "databricks-volumes"
64
66
  Provides-Extra: delta-table
65
- Requires-Dist: deltalake; extra == "delta-table"
66
67
  Requires-Dist: boto3; extra == "delta-table"
68
+ Requires-Dist: deltalake; extra == "delta-table"
67
69
  Provides-Extra: discord
68
70
  Requires-Dist: discord.py; extra == "discord"
69
71
  Provides-Extra: doc
@@ -82,8 +84,8 @@ Requires-Dist: sentence-transformers; extra == "embed-huggingface"
82
84
  Provides-Extra: embed-mixedbreadai
83
85
  Requires-Dist: mixedbread-ai; extra == "embed-mixedbreadai"
84
86
  Provides-Extra: embed-octoai
85
- Requires-Dist: openai; extra == "embed-octoai"
86
87
  Requires-Dist: tiktoken; extra == "embed-octoai"
88
+ Requires-Dist: openai; extra == "embed-octoai"
87
89
  Provides-Extra: embed-vertexai
88
90
  Requires-Dist: vertexai; extra == "embed-vertexai"
89
91
  Provides-Extra: embed-voyageai
@@ -91,12 +93,12 @@ Requires-Dist: voyageai; extra == "embed-voyageai"
91
93
  Provides-Extra: epub
92
94
  Requires-Dist: unstructured[epub]; extra == "epub"
93
95
  Provides-Extra: gcs
94
- Requires-Dist: gcsfs; extra == "gcs"
95
96
  Requires-Dist: bs4; extra == "gcs"
97
+ Requires-Dist: gcsfs; extra == "gcs"
96
98
  Requires-Dist: fsspec; extra == "gcs"
97
99
  Provides-Extra: github
98
- Requires-Dist: requests; extra == "github"
99
100
  Requires-Dist: pygithub>1.58.0; extra == "github"
101
+ Requires-Dist: requests; extra == "github"
100
102
  Provides-Extra: gitlab
101
103
  Requires-Dist: python-gitlab; extra == "gitlab"
102
104
  Provides-Extra: google-drive
@@ -121,30 +123,30 @@ Requires-Dist: pymongo; extra == "mongodb"
121
123
  Provides-Extra: msg
122
124
  Requires-Dist: unstructured[msg]; extra == "msg"
123
125
  Provides-Extra: neo4j
124
- Requires-Dist: neo4j; extra == "neo4j"
125
126
  Requires-Dist: cymple; extra == "neo4j"
127
+ Requires-Dist: neo4j; extra == "neo4j"
126
128
  Requires-Dist: networkx; extra == "neo4j"
127
129
  Provides-Extra: notion
128
- Requires-Dist: htmlBuilder; extra == "notion"
129
- Requires-Dist: notion-client; extra == "notion"
130
130
  Requires-Dist: httpx; extra == "notion"
131
+ Requires-Dist: htmlBuilder; extra == "notion"
131
132
  Requires-Dist: backoff; extra == "notion"
133
+ Requires-Dist: notion-client; extra == "notion"
132
134
  Provides-Extra: odt
133
135
  Requires-Dist: unstructured[odt]; extra == "odt"
134
136
  Provides-Extra: onedrive
137
+ Requires-Dist: Office365-REST-Python-Client; extra == "onedrive"
135
138
  Requires-Dist: bs4; extra == "onedrive"
136
139
  Requires-Dist: msal; extra == "onedrive"
137
- Requires-Dist: Office365-REST-Python-Client; extra == "onedrive"
138
140
  Provides-Extra: openai
139
- Requires-Dist: openai; extra == "openai"
140
141
  Requires-Dist: tiktoken; extra == "openai"
142
+ Requires-Dist: openai; extra == "openai"
141
143
  Provides-Extra: opensearch
142
144
  Requires-Dist: opensearch-py; extra == "opensearch"
143
145
  Provides-Extra: org
144
146
  Requires-Dist: unstructured[org]; extra == "org"
145
147
  Provides-Extra: outlook
146
- Requires-Dist: msal; extra == "outlook"
147
148
  Requires-Dist: Office365-REST-Python-Client; extra == "outlook"
149
+ Requires-Dist: msal; extra == "outlook"
148
150
  Provides-Extra: pdf
149
151
  Requires-Dist: unstructured[pdf]; extra == "pdf"
150
152
  Provides-Extra: pinecone
@@ -168,16 +170,16 @@ Requires-Dist: unstructured[rst]; extra == "rst"
168
170
  Provides-Extra: rtf
169
171
  Requires-Dist: unstructured[rtf]; extra == "rtf"
170
172
  Provides-Extra: s3
171
- Requires-Dist: s3fs; extra == "s3"
172
173
  Requires-Dist: fsspec; extra == "s3"
174
+ Requires-Dist: s3fs; extra == "s3"
173
175
  Provides-Extra: salesforce
174
176
  Requires-Dist: simple-salesforce; extra == "salesforce"
175
177
  Provides-Extra: sftp
176
178
  Requires-Dist: paramiko; extra == "sftp"
177
179
  Requires-Dist: fsspec; extra == "sftp"
178
180
  Provides-Extra: sharepoint
179
- Requires-Dist: msal; extra == "sharepoint"
180
181
  Requires-Dist: Office365-REST-Python-Client; extra == "sharepoint"
182
+ Requires-Dist: msal; extra == "sharepoint"
181
183
  Provides-Extra: singlestore
182
184
  Requires-Dist: singlestoredb; extra == "singlestore"
183
185
  Provides-Extra: slack
@@ -190,9 +192,9 @@ Requires-Dist: together; extra == "togetherai"
190
192
  Provides-Extra: tsv
191
193
  Requires-Dist: unstructured[tsv]; extra == "tsv"
192
194
  Provides-Extra: vectara
193
- Requires-Dist: requests; extra == "vectara"
194
195
  Requires-Dist: httpx; extra == "vectara"
195
196
  Requires-Dist: aiofiles; extra == "vectara"
197
+ Requires-Dist: requests; extra == "vectara"
196
198
  Provides-Extra: weaviate
197
199
  Requires-Dist: weaviate-client; extra == "weaviate"
198
200
  Provides-Extra: wikipedia
@@ -5,42 +5,43 @@ test/integration/chunkers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
5
5
  test/integration/chunkers/test_chunkers.py,sha256=USkltQN_mVVCxI0FkJsrS1gnLXlVr-fvsc0tPaK2sWI,1062
6
6
  test/integration/connectors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  test/integration/connectors/conftest.py,sha256=vYs4WDlCuieAwwErkJxCk4a1lGvr3qpeiAm-YaDznSo,1018
8
- test/integration/connectors/test_astradb.py,sha256=D_M8DvfHi36sp4irPQ5tTRxf0ujYenn_q-h0DU_lkzU,7201
9
- test/integration/connectors/test_azure_ai_search.py,sha256=EGV-G_Lq3h6pHhhmmQGWjIU1Mgsqg3ICZSgF0z3lZZs,9608
10
- test/integration/connectors/test_chroma.py,sha256=KQCzBJsOHAOtg0Ehp0tNtuYchFtiSmhHDKyOju33kJg,3686
11
- test/integration/connectors/test_confluence.py,sha256=adJxIggjuO-jgMimBZdv_AqWeBFlQoodELucIYwWC98,3546
12
- test/integration/connectors/test_delta_table.py,sha256=xsnJmwlWVQrccYeAtpt2lm0DYm2jGxiKXeERQXqCDCM,6884
13
- test/integration/connectors/test_lancedb.py,sha256=U2HfIrf6iJ7lYMn-vz0j-LesVyDY-jc9QrQhlJVhG9Q,9183
14
- test/integration/connectors/test_milvus.py,sha256=aRT5SpJHY4NA8pG_LcVTJwYwvLw2W_OOE-NIfDq03SE,7015
15
- test/integration/connectors/test_mongodb.py,sha256=UZ4eo61MisCw4s0p7HWaediN7M-lSddMDs71RFgdmJs,12347
16
- test/integration/connectors/test_neo4j.py,sha256=Esiq_Z9k1JLrWNXPmLBsX3LLwyEozwKoxX7iwMEJjRM,8252
17
- test/integration/connectors/test_notion.py,sha256=eNYJOMxSWJENsh6e79sFtuC1cVJRDWevO4ctshHN-sU,5087
18
- test/integration/connectors/test_onedrive.py,sha256=Bp9Ayv59JnfsjSwqbQ-zYvg-XAPGgZfKJ45Asc0y1bM,3808
19
- test/integration/connectors/test_pinecone.py,sha256=suPFi40d6rHXurQQLIpCzW5XRTdgzlP-f-KLPhGCUHo,10208
20
- test/integration/connectors/test_qdrant.py,sha256=hyuqSJDaylkQVxWh7byD8jo8bwPuBxSa8MWRD3sBu-Y,7906
21
- test/integration/connectors/test_redis.py,sha256=Q_KAZPNE9NIoRN2UsbXtc1fe_aJg66RbSQtS3OKNpc0,4327
22
- test/integration/connectors/test_s3.py,sha256=eA77LubtIhu6jkTrZ-rHIaJD2v9DTNhrkRcR7nmwi5g,7343
23
- test/integration/connectors/test_vectara.py,sha256=_FQHbhxL3f1rLV9MrHOvcljm_4qTVf5xl-Q7MplE_xs,8688
8
+ test/integration/connectors/test_astradb.py,sha256=2DNNNum7cTKjsRvYaCu4doAGjhSN8vl-iHprFMDfQgk,7951
9
+ test/integration/connectors/test_azure_ai_search.py,sha256=MxFwk84vI_HT4taQTGrNpJ8ewGPqHSGrx626j8hC_Pw,9695
10
+ test/integration/connectors/test_chroma.py,sha256=NuQv0PWPM0_LQfdPeUd6IYKqaKKXWmVaHGWjq5aBfOY,3721
11
+ test/integration/connectors/test_confluence.py,sha256=nVNeJ3ucLsQsj4Yo8QEyARVOnYy7HVxa_m7IHaIFtnM,3594
12
+ test/integration/connectors/test_delta_table.py,sha256=4qm2Arfc9Eb7SOZOnOlLF-vNpHy6Eqvr5Q45svfX1PY,6911
13
+ test/integration/connectors/test_lancedb.py,sha256=8MBxK_CUtOt87-4B7svDDK82NFII5psceo5cNN8HJMs,9228
14
+ test/integration/connectors/test_milvus.py,sha256=7mI6zznN0PTxDL9DLogH1k3dxx6R8DgGzlpyevsFu2w,7173
15
+ test/integration/connectors/test_mongodb.py,sha256=0A6DvF-iTCSZzOefisd_i20j9li8uNWTF2wyLGwlhco,12446
16
+ test/integration/connectors/test_neo4j.py,sha256=r4TRYtTXeeOdcRcfa_gvslhSKvoIWrwN1FRJ5XRoH4k,8456
17
+ test/integration/connectors/test_notion.py,sha256=ueXyVqYWzP4LuZYe6PauptkXNG6qkoV3srltFOSSKTA,5403
18
+ test/integration/connectors/test_onedrive.py,sha256=TcMaa5BIp8J6engS4UZ2t19WQP0NNz2rkpBB47m7A3Y,3835
19
+ test/integration/connectors/test_pinecone.py,sha256=acKEu1vnAk0Ht3FhCnGtOEKaj_YlgCzZB7wRU17ehQ0,12407
20
+ test/integration/connectors/test_qdrant.py,sha256=Yme3ZZ5zIbaZ-yYLUqN2oy0hsrcAfvlleRLYWMSYeSE,8049
21
+ test/integration/connectors/test_redis.py,sha256=1aKwOb-K4zCxZwHmgW_WzGJwqLntbWTbpGQ-rtUwN9o,4360
22
+ test/integration/connectors/test_s3.py,sha256=E1dypeag_E3OIfpQWIz3jb7ctRHRD63UtyTrzyvJzpc,7473
23
+ test/integration/connectors/test_vectara.py,sha256=4kKOOTGUjeZw2jKRcgVDI7ifbRPRZfjjVO4d_7H5C6I,8710
24
24
  test/integration/connectors/databricks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
- test/integration/connectors/databricks/test_volumes_native.py,sha256=5gE6v5I3gRK_Xc9OORm4BL0JDJAQpegzvjdqPlLwDuE,9434
25
+ test/integration/connectors/databricks/test_volumes_native.py,sha256=KqiapQAV0s_Zv0CO8BwYoiCk30dwrSZzuigUWNRIem0,9559
26
26
  test/integration/connectors/discord/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
- test/integration/connectors/discord/test_discord.py,sha256=u1VxwlkHC1QTlfGjNvseQ1j94lUe_SAz-I1cAYl_YwY,3100
27
+ test/integration/connectors/discord/test_discord.py,sha256=DDvlOA0lnojMigoCNnKUBUusV_Y0nI4q9lGnlb1gAQA,3176
28
28
  test/integration/connectors/duckdb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
29
  test/integration/connectors/duckdb/conftest.py,sha256=rlBHMJTiJ2a5xbvIxTOyhhcuTBc9DO-yTzD6Kf8X3hY,301
30
- test/integration/connectors/duckdb/test_duckdb.py,sha256=tZfHJYNILVqwT20XD-aJUFZ67TnJvHLpfAxNvNiE51o,2891
31
- test/integration/connectors/duckdb/test_motherduck.py,sha256=45anpo0bhbHJh84jOIoKULKrneCMSoq7GuFaBy-HS7g,3206
30
+ test/integration/connectors/duckdb/test_duckdb.py,sha256=jGxmZhnWwoSf63EHftAejXqNY8zhe4S-yGzZzB1ZAWY,2979
31
+ test/integration/connectors/duckdb/test_motherduck.py,sha256=vqR3uL3Cs6Cfl7ItCoMljvHmTUbci36YDslu6rswVjA,3224
32
32
  test/integration/connectors/elasticsearch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
33
  test/integration/connectors/elasticsearch/conftest.py,sha256=-i4_7MkIxSQENz7nuD2uHuhGU9mZ33vpeTPhHtRpQfs,989
34
- test/integration/connectors/elasticsearch/test_elasticsearch.py,sha256=Lm8topVssTsqcI8H2Tzohuxb9j-CFHv9orM6WfAqCZw,11933
35
- test/integration/connectors/elasticsearch/test_opensearch.py,sha256=fWpZrhzRiVpm9AOlZvgZRCjyXSYvWG7-8j06x-HR3PY,11311
34
+ test/integration/connectors/elasticsearch/test_elasticsearch.py,sha256=TsSEPsyaTUoEvFBadinrdM0b5C4FoUtEwCv24OUbpO8,12072
35
+ test/integration/connectors/elasticsearch/test_opensearch.py,sha256=7b7z0GqoBsBqA3IK35N6axmwEMjzJ1l3Fg2WT2c7uqs,11450
36
36
  test/integration/connectors/sql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
- test/integration/connectors/sql/test_postgres.py,sha256=DXyHMZBQgrV2HyVflkoBpT1mewSnvw3ugoHtGR5o8OM,6876
38
- test/integration/connectors/sql/test_singlestore.py,sha256=pzCPo8IW3c9VH-f3UdJS5MjPjkHarJPSepAxV0ZVajo,6059
39
- test/integration/connectors/sql/test_snowflake.py,sha256=MiTzepeeJlv147CyzCGyd16MRk5QeUw4g4L3TTi5gVY,7400
40
- test/integration/connectors/sql/test_sqlite.py,sha256=rSkjv3KpslAvt_8LQecJUT0lOLtuZSvhtlW2deJovLI,5862
37
+ test/integration/connectors/sql/test_databricks_delta_tables.py,sha256=UjVjw5hVoMSNJoYdoYympYow25gvcDAEHLmUmOJKz7I,5036
38
+ test/integration/connectors/sql/test_postgres.py,sha256=bGDyzLRpgrXO7nl0U8nF2zSNr6ykUG-w8T4daIqUCG4,6970
39
+ test/integration/connectors/sql/test_singlestore.py,sha256=XeU2s4Kt_3tGyaDYYKTgYjdOyb8j2dnz4TgSMwFUjWs,6153
40
+ test/integration/connectors/sql/test_snowflake.py,sha256=LEwsRDoC6-rRiwYsqeo5B9Eo6RYygLLGAUsrtrgI9pM,7494
41
+ test/integration/connectors/sql/test_sqlite.py,sha256=MHvhFRx1y_LTgfS-aPz-Zn9yOGsm-TF_s0t1seBzV1k,5956
41
42
  test/integration/connectors/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
- test/integration/connectors/utils/constants.py,sha256=0zSPnsZVqJuNhXduXvdXFQLZTRIQa5Fo_1qjBYVCfb8,209
43
- test/integration/connectors/utils/docker.py,sha256=8uOTJ3AVG1dxK4OiLvOLfRxL_TsYQX2KKCID9TZ7-Ac,4995
43
+ test/integration/connectors/utils/constants.py,sha256=JhTk6YNw7JVpkk-Pl8zn2YYkExeL1oE9VBWm_kMYGfo,369
44
+ test/integration/connectors/utils/docker.py,sha256=4g1STiSbYN5qcmDTXyPxVJgwx97O6wk7n-DJ-zgzgag,4971
44
45
  test/integration/connectors/utils/docker_compose.py,sha256=GVTB6Cel05c0VQ2n4AwkQQx_cBfz13ZTs1HpbaYipNU,2223
45
46
  test/integration/connectors/utils/validation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
47
  test/integration/connectors/utils/validation/destination.py,sha256=ZvMSvqz9in35xaoUJGx9rG8oWCU3FYlfLLQ6sfdI0pw,2649
@@ -49,8 +50,8 @@ test/integration/connectors/utils/validation/source.py,sha256=VALU5ms_JBu_eFkp2W
49
50
  test/integration/connectors/utils/validation/utils.py,sha256=xYYvAbqP6_lZyH09_JjB4w2Sf8aQPvDVT5vZTs05ILs,1428
50
51
  test/integration/connectors/weaviate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
52
  test/integration/connectors/weaviate/conftest.py,sha256=6Q6QdrLJmGHowRFSmoVSzup2EX6qASfS2Z5tqlpTm9M,387
52
- test/integration/connectors/weaviate/test_cloud.py,sha256=07VxNRxWWcgTstFfpoZ1FlVnEhcBnQlo5nosWKjKz_4,979
53
- test/integration/connectors/weaviate/test_local.py,sha256=SK6iEwQUKiCd0X99BEk8GlQoLaCcJcFPt09NN526Ct0,4508
53
+ test/integration/connectors/weaviate/test_cloud.py,sha256=U1ZS6a7wTPX7h3XGvaJHaT-Uwg4IeGgzxx1YBywgVhM,1284
54
+ test/integration/connectors/weaviate/test_local.py,sha256=bSJwS6rWxPf3BoOXKzZi2AOuT51py9V3tao6IBy1Rgk,4538
54
55
  test/integration/embedders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
56
  test/integration/embedders/conftest.py,sha256=B2W771RbijR7G_GybsCzRyIvOzXqzbKZdRIlNDd5AGY,334
56
57
  test/integration/embedders/test_azure_openai.py,sha256=6tFpKFBFRXD49imhhRzsvy3MPtuZ4L1PtnKyMVBRAqc,1808
@@ -96,7 +97,7 @@ test/unit/v2/partitioners/test_partitioner.py,sha256=iIYg7IpftV3LusoO4H8tr1IHY1U
96
97
  test/unit/v2/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
97
98
  test/unit/v2/utils/data_generator.py,sha256=UoYVNjG4S4wlaA9gceQ82HIpF9_6I1UTHD1_GrQBHp0,973
98
99
  unstructured_ingest/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
99
- unstructured_ingest/__version__.py,sha256=-DFDA_b8O_Ur3J_Y_DIl2WMm2x49cF3ddoY_tPbNlUM,43
100
+ unstructured_ingest/__version__.py,sha256=31lJzr6gfqqAcVEa6C2kjStzBSJPXWUyP7eRpa8Y7gI,43
100
101
  unstructured_ingest/error.py,sha256=qDncnJgbf5ils956RcO2CGlAKYDT5OaEM9Clv1JVTNc,1448
101
102
  unstructured_ingest/interfaces.py,sha256=OYVUP0bzBJpT-Lz92BDyz_hLBvyfxkuSwWHhUdnUayA,31493
102
103
  unstructured_ingest/logger.py,sha256=S5nSqGcABoQyeicgRnBQFjDScCaTvFVivOCvbo-laL0,4479
@@ -386,7 +387,7 @@ unstructured_ingest/v2/interfaces/file_data.py,sha256=7MyRlj5dijQsCR6W18wQ8fEgJi
386
387
  unstructured_ingest/v2/interfaces/indexer.py,sha256=gsa1MLhFa82BzD2h4Yb7ons0VxRwKINZOrzvHAahwVU,846
387
388
  unstructured_ingest/v2/interfaces/process.py,sha256=BgglTu5K93FnDDopZKKr_rkK2LTZOguR6kcQjKHjF40,392
388
389
  unstructured_ingest/v2/interfaces/processor.py,sha256=VX7JqXlbG1plxMK8THWhWINPbTICaaUEk4XUXhnOixY,3303
389
- unstructured_ingest/v2/interfaces/upload_stager.py,sha256=HSSq_htv009-5yA8QqIi6rRnkfI1fnDkX5JRom8rNDY,3566
390
+ unstructured_ingest/v2/interfaces/upload_stager.py,sha256=nbMuo_U6Gqn9bDJrAJTCjrZXKMw_G28OZOuNsT23i0k,3608
390
391
  unstructured_ingest/v2/interfaces/uploader.py,sha256=T2oHbN-d4Px1w1oATKKYZA10aUssqytEpiaqBM92r0Q,1600
391
392
  unstructured_ingest/v2/pipeline/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
392
393
  unstructured_ingest/v2/pipeline/interfaces.py,sha256=-Y6gPnl-SbNxIx5-dQCmiYSPKUMjivrRlBLIKIUWVeM,8658
@@ -424,22 +425,23 @@ unstructured_ingest/v2/processes/connectors/kdbai.py,sha256=VRDAiou_7oWOIAgQTdOG
424
425
  unstructured_ingest/v2/processes/connectors/local.py,sha256=ZvWTj6ZYkwnvQMNFsZWoaQyp9zp0WVqAywMaHJ2kcAc,7153
425
426
  unstructured_ingest/v2/processes/connectors/milvus.py,sha256=wmcu9NVy3gYlQGT25inN5w_QrhFoL8-hRq0pJFSNw8g,8866
426
427
  unstructured_ingest/v2/processes/connectors/mongodb.py,sha256=cL0QUQZF_s2brh3nNNeAywXVpaIiND4b5JTAFlYjLjw,14273
427
- unstructured_ingest/v2/processes/connectors/neo4j.py,sha256=QTw_Kq1_kHMdqsaBST6yW8vl-SYXVQFlIofDP1W_IuI,14250
428
+ unstructured_ingest/v2/processes/connectors/neo4j.py,sha256=HU1IwchTM7Q1kkeIFVe-Lg6gInMItBpgkDkVwuTvkGY,14259
428
429
  unstructured_ingest/v2/processes/connectors/onedrive.py,sha256=d6gC40YmfqBNXxizAt4MO4OOu5BoCZ7SAe1AbNwTP0E,18322
429
430
  unstructured_ingest/v2/processes/connectors/outlook.py,sha256=KgNGM8hImRhy6_SpswRP2VwRD4VOrqqJoySgxf2oduI,9290
430
- unstructured_ingest/v2/processes/connectors/pinecone.py,sha256=cohF7gBj0opSGKXlENSdGfTtyIKMHd1pwu4ydeb7JAY,10605
431
+ unstructured_ingest/v2/processes/connectors/pinecone.py,sha256=bQDCch7OGiQgpWO3n3ncLuQ4XCWqDc7ZWEB-Qrqkss8,10730
431
432
  unstructured_ingest/v2/processes/connectors/redisdb.py,sha256=p0AY4ukBNpwAemV4bWzpScvVbLTVlI3DzsCNUKiBI5M,6757
432
433
  unstructured_ingest/v2/processes/connectors/salesforce.py,sha256=2CiO2ZZiZ1Y1-nB7wcDlDVcpW2B7ut9wCj66rkkqho0,11616
433
434
  unstructured_ingest/v2/processes/connectors/sharepoint.py,sha256=Ndn2Wm7RupfjAtlLxxQwJueeE0V8aGMbNVPuFq9nqdQ,19730
434
435
  unstructured_ingest/v2/processes/connectors/slack.py,sha256=Z73VmQ3oUY09KoLEi5OBdQeDt4ONEY_02SglWQc6HXE,9252
435
436
  unstructured_ingest/v2/processes/connectors/utils.py,sha256=8kd0g7lo9NqnpaIkjeO-Ut6erhwUNH_gS9koevpe3WE,878
436
437
  unstructured_ingest/v2/processes/connectors/vectara.py,sha256=BlI_4nkpNR99aYxDd9eusm5LQsVB9EI0r-5Kc1D7pgQ,12255
437
- unstructured_ingest/v2/processes/connectors/databricks/__init__.py,sha256=jO71UTC7bLA_N12CrLWJzh_yZML5gfT7VohxzCpUGWg,1848
438
- unstructured_ingest/v2/processes/connectors/databricks/volumes.py,sha256=MDnTUjFlqOP4rmQA5wkgT2DhwjhFhUwPpUPGSzqCOOE,7577
438
+ unstructured_ingest/v2/processes/connectors/databricks/__init__.py,sha256=Oh8SwTWi66gO8BsNF6vRMoQVuegyBPPCpVozkOHEf3A,2136
439
+ unstructured_ingest/v2/processes/connectors/databricks/volumes.py,sha256=Yj4fIxgGo9Qh1x_6-INdbrPGHCuZElu-QKNfSVtW7F4,7694
439
440
  unstructured_ingest/v2/processes/connectors/databricks/volumes_aws.py,sha256=TA2e_1SIr4VaEI62873eyReCNfgmQ51_2Pko2I04pPM,2747
440
441
  unstructured_ingest/v2/processes/connectors/databricks/volumes_azure.py,sha256=cb-EUW0T-linZMkbU6AcKEGWnFHQvhpO5Abtps4P2X0,3532
441
442
  unstructured_ingest/v2/processes/connectors/databricks/volumes_gcp.py,sha256=tR8NubkyHw49IpW_42g6w1Koxlm56EPiPf1lB-eoRSI,2783
442
443
  unstructured_ingest/v2/processes/connectors/databricks/volumes_native.py,sha256=dJLD1fueXf8_0AfC4cg0G7siJZVefz68iuEx2Kq7rMs,2890
444
+ unstructured_ingest/v2/processes/connectors/databricks/volumes_table.py,sha256=muj7G2JFO_WwAPub14k0VqDmN3c56t9MA60rM48wal8,4750
443
445
  unstructured_ingest/v2/processes/connectors/duckdb/__init__.py,sha256=5sVvJCWhU-YkjHIwk4W6BZCanFYK5W4xTpWtQ8xzeB4,561
444
446
  unstructured_ingest/v2/processes/connectors/duckdb/base.py,sha256=XTV9Pox3_xVmI8YVQWC9Bn6PugbPM49kp4Scv1OXFys,2649
445
447
  unstructured_ingest/v2/processes/connectors/duckdb/duckdb.py,sha256=oUHHaLpO2pWW2Lu4Mc-XFjrA0ze97205WQ_xP95ua4M,4296
@@ -538,20 +540,21 @@ unstructured_ingest/v2/processes/connectors/qdrant/cloud.py,sha256=accJ4sNWBVWV-
538
540
  unstructured_ingest/v2/processes/connectors/qdrant/local.py,sha256=cGEyv3Oy6y4BQ4DU8yhJWMpL82QYwBVdPTxxNuV127U,1588
539
541
  unstructured_ingest/v2/processes/connectors/qdrant/qdrant.py,sha256=BHI7HYSdbS05j2vrjyDvLzVG1WfsM8osKeq-lttlybQ,5437
540
542
  unstructured_ingest/v2/processes/connectors/qdrant/server.py,sha256=odvCZWZp8DmRxLXMR7tHhW-c7UQbix1_zpFdfXfCvKI,1613
541
- unstructured_ingest/v2/processes/connectors/sql/__init__.py,sha256=E16CXRBw8fZKTuXIECns5wif_I07oncBHskVxHC4p7w,1448
543
+ unstructured_ingest/v2/processes/connectors/sql/__init__.py,sha256=mxcrncrjeP-C2jqQoTOOpGjV3Bmyfg4efT5lq_c-V1E,1760
544
+ unstructured_ingest/v2/processes/connectors/sql/databricks_delta_tables.py,sha256=s_W6wSvyIXZ9mdAxvgSXFeFSze9E7pwIvc38p1hVDLM,8839
542
545
  unstructured_ingest/v2/processes/connectors/sql/postgres.py,sha256=BATfX1PQGT2kl8jAbdNKXTojYKJxh3pJV9-h3OBnHGo,5124
543
546
  unstructured_ingest/v2/processes/connectors/sql/singlestore.py,sha256=-2E9dsdNhjAiuzeSBytBbAhljOhvQ8kN8wvlUESvLo8,5465
544
547
  unstructured_ingest/v2/processes/connectors/sql/snowflake.py,sha256=8qCm1XiJmVxy8TSeoxwmQrE2W1x8S8At2ctrS_lJ8-I,7780
545
- unstructured_ingest/v2/processes/connectors/sql/sql.py,sha256=FtI5DSMd1QUgoYLn8NAVoETc4qwCbFEwSulqziXyODY,15292
548
+ unstructured_ingest/v2/processes/connectors/sql/sql.py,sha256=ZGpeBfiOEzVaSiQxwqJkMC00Eu6TQhsrZKHnOHM0Xug,15667
546
549
  unstructured_ingest/v2/processes/connectors/sql/sqlite.py,sha256=Q5RAqn5Ccw-pbeKZLkiMn5IVw6EemCMukXzLlS7pDhc,5162
547
550
  unstructured_ingest/v2/processes/connectors/weaviate/__init__.py,sha256=NMiwnVWan69KnzVELvaqX34tMhCytIa-C8EDsXVKsEo,856
548
551
  unstructured_ingest/v2/processes/connectors/weaviate/cloud.py,sha256=bXtfEYLquR-BszZ5S_lQ4JbETNs9Vozgpfm8x9egAmE,6251
549
552
  unstructured_ingest/v2/processes/connectors/weaviate/embedded.py,sha256=S8Zg8StuZT-k7tCg1D5YShO1-vJYYk9-M1bE1fIqx64,3014
550
553
  unstructured_ingest/v2/processes/connectors/weaviate/local.py,sha256=LuTBKPseVewsz8VqxRPRLfGEm3BeI9nBZxpy7ZU5tOA,2201
551
554
  unstructured_ingest/v2/processes/connectors/weaviate/weaviate.py,sha256=X1yv1H_orDQ-J965EMXhR2XaURqe8vovSi9n1fk85B4,10499
552
- unstructured_ingest-0.3.13.dist-info/LICENSE.md,sha256=SxkKP_62uIAKb9mb1eH7FH4Kn2aYT09fgjKpJt5PyTk,11360
553
- unstructured_ingest-0.3.13.dist-info/METADATA,sha256=RixQYNz-MYaC8p8BWxHv12aeOosZeetLkJ3mkHjzhL4,7813
554
- unstructured_ingest-0.3.13.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
555
- unstructured_ingest-0.3.13.dist-info/entry_points.txt,sha256=gUAAFnjFPnBgThJSEbw0N5ZjxtaKlT1s9e05_arQrNw,70
556
- unstructured_ingest-0.3.13.dist-info/top_level.txt,sha256=DMuDMHZRMdeay8v8Kdi855muIv92F0OkutvBCaBEW6M,25
557
- unstructured_ingest-0.3.13.dist-info/RECORD,,
555
+ unstructured_ingest-0.3.15.dist-info/LICENSE.md,sha256=SxkKP_62uIAKb9mb1eH7FH4Kn2aYT09fgjKpJt5PyTk,11360
556
+ unstructured_ingest-0.3.15.dist-info/METADATA,sha256=rZFAbiv0HZ-VUWVk4MP2vANZuzsxJLhK2_QWZ5zTjRA,7929
557
+ unstructured_ingest-0.3.15.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
558
+ unstructured_ingest-0.3.15.dist-info/entry_points.txt,sha256=gUAAFnjFPnBgThJSEbw0N5ZjxtaKlT1s9e05_arQrNw,70
559
+ unstructured_ingest-0.3.15.dist-info/top_level.txt,sha256=DMuDMHZRMdeay8v8Kdi855muIv92F0OkutvBCaBEW6M,25
560
+ unstructured_ingest-0.3.15.dist-info/RECORD,,