unstructured-ingest 0.2.0__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 (44) hide show
  1. test/integration/connectors/sql/test_singlestore.py +156 -0
  2. test/integration/connectors/test_confluence.py +113 -0
  3. test/integration/connectors/test_kafka.py +67 -0
  4. test/integration/connectors/test_onedrive.py +112 -0
  5. test/integration/connectors/test_qdrant.py +137 -0
  6. test/integration/connectors/test_s3.py +1 -1
  7. test/integration/connectors/utils/docker.py +2 -1
  8. test/integration/connectors/utils/docker_compose.py +23 -8
  9. test/integration/connectors/utils/validation.py +73 -22
  10. unstructured_ingest/__version__.py +1 -1
  11. unstructured_ingest/connector/kafka.py +0 -1
  12. unstructured_ingest/interfaces.py +7 -7
  13. unstructured_ingest/v2/interfaces/file_data.py +1 -0
  14. unstructured_ingest/v2/processes/chunker.py +2 -2
  15. unstructured_ingest/v2/processes/connectors/__init__.py +15 -7
  16. unstructured_ingest/v2/processes/connectors/astradb.py +278 -55
  17. unstructured_ingest/v2/processes/connectors/confluence.py +195 -0
  18. unstructured_ingest/v2/processes/connectors/databricks/volumes.py +5 -5
  19. unstructured_ingest/v2/processes/connectors/fsspec/fsspec.py +2 -10
  20. unstructured_ingest/v2/processes/connectors/gitlab.py +267 -0
  21. unstructured_ingest/v2/processes/connectors/kafka/__init__.py +13 -0
  22. unstructured_ingest/v2/processes/connectors/kafka/cloud.py +82 -0
  23. unstructured_ingest/v2/processes/connectors/kafka/kafka.py +196 -0
  24. unstructured_ingest/v2/processes/connectors/kafka/local.py +75 -0
  25. unstructured_ingest/v2/processes/connectors/onedrive.py +163 -2
  26. unstructured_ingest/v2/processes/connectors/qdrant/__init__.py +16 -0
  27. unstructured_ingest/v2/processes/connectors/qdrant/cloud.py +59 -0
  28. unstructured_ingest/v2/processes/connectors/qdrant/local.py +58 -0
  29. unstructured_ingest/v2/processes/connectors/qdrant/qdrant.py +168 -0
  30. unstructured_ingest/v2/processes/connectors/qdrant/server.py +60 -0
  31. unstructured_ingest/v2/processes/connectors/sql/__init__.py +5 -0
  32. unstructured_ingest/v2/processes/connectors/sql/postgres.py +1 -20
  33. unstructured_ingest/v2/processes/connectors/sql/singlestore.py +168 -0
  34. unstructured_ingest/v2/processes/connectors/sql/snowflake.py +5 -5
  35. unstructured_ingest/v2/processes/connectors/sql/sql.py +15 -6
  36. unstructured_ingest/v2/processes/partitioner.py +14 -3
  37. unstructured_ingest/v2/unstructured_api.py +25 -11
  38. {unstructured_ingest-0.2.0.dist-info → unstructured_ingest-0.2.2.dist-info}/METADATA +17 -17
  39. {unstructured_ingest-0.2.0.dist-info → unstructured_ingest-0.2.2.dist-info}/RECORD +43 -27
  40. unstructured_ingest/v2/processes/connectors/singlestore.py +0 -156
  41. {unstructured_ingest-0.2.0.dist-info → unstructured_ingest-0.2.2.dist-info}/LICENSE.md +0 -0
  42. {unstructured_ingest-0.2.0.dist-info → unstructured_ingest-0.2.2.dist-info}/WHEEL +0 -0
  43. {unstructured_ingest-0.2.0.dist-info → unstructured_ingest-0.2.2.dist-info}/entry_points.txt +0 -0
  44. {unstructured_ingest-0.2.0.dist-info → unstructured_ingest-0.2.2.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,168 @@
1
+ import json
2
+ from contextlib import contextmanager
3
+ from dataclasses import dataclass, field
4
+ from typing import TYPE_CHECKING, Any, Generator, Optional
5
+
6
+ from pydantic import Field, Secret
7
+
8
+ from unstructured_ingest.v2.interfaces import FileData
9
+ from unstructured_ingest.v2.logger import logger
10
+ from unstructured_ingest.v2.processes.connector_registry import (
11
+ DestinationRegistryEntry,
12
+ SourceRegistryEntry,
13
+ )
14
+ from unstructured_ingest.v2.processes.connectors.sql.sql import (
15
+ _DATE_COLUMNS,
16
+ SQLAccessConfig,
17
+ SQLConnectionConfig,
18
+ SQLDownloader,
19
+ SQLDownloaderConfig,
20
+ SQLIndexer,
21
+ SQLIndexerConfig,
22
+ SQLUploader,
23
+ SQLUploaderConfig,
24
+ SQLUploadStager,
25
+ SQLUploadStagerConfig,
26
+ parse_date_string,
27
+ )
28
+
29
+ if TYPE_CHECKING:
30
+ from singlestoredb.connection import Connection as SingleStoreConnection
31
+ from singlestoredb.connection import Cursor as SingleStoreCursor
32
+
33
+ CONNECTOR_TYPE = "singlestore"
34
+
35
+
36
+ class SingleStoreAccessConfig(SQLAccessConfig):
37
+ password: Optional[str] = Field(default=None, description="SingleStore password")
38
+
39
+
40
+ class SingleStoreConnectionConfig(SQLConnectionConfig):
41
+ access_config: Secret[SingleStoreAccessConfig]
42
+ host: Optional[str] = Field(default=None, description="SingleStore host")
43
+ port: Optional[int] = Field(default=None, description="SingleStore port")
44
+ user: Optional[str] = Field(default=None, description="SingleStore user")
45
+ database: Optional[str] = Field(default=None, description="SingleStore database")
46
+
47
+ @contextmanager
48
+ def get_connection(self) -> Generator["SingleStoreConnection", None, None]:
49
+ import singlestoredb as s2
50
+
51
+ connection = s2.connect(
52
+ host=self.host,
53
+ port=self.port,
54
+ database=self.database,
55
+ user=self.user,
56
+ password=self.access_config.get_secret_value().password,
57
+ )
58
+ try:
59
+ yield connection
60
+ finally:
61
+ connection.commit()
62
+ connection.close()
63
+
64
+ @contextmanager
65
+ def get_cursor(self) -> Generator["SingleStoreCursor", None, None]:
66
+ with self.get_connection() as connection:
67
+ with connection.cursor() as cursor:
68
+ try:
69
+ yield cursor
70
+ finally:
71
+ cursor.close()
72
+
73
+
74
+ class SingleStoreIndexerConfig(SQLIndexerConfig):
75
+ pass
76
+
77
+
78
+ @dataclass
79
+ class SingleStoreIndexer(SQLIndexer):
80
+ connection_config: SingleStoreConnectionConfig
81
+ index_config: SingleStoreIndexerConfig
82
+ connector_type: str = CONNECTOR_TYPE
83
+
84
+
85
+ class SingleStoreDownloaderConfig(SQLDownloaderConfig):
86
+ pass
87
+
88
+
89
+ @dataclass
90
+ class SingleStoreDownloader(SQLDownloader):
91
+ connection_config: SingleStoreConnectionConfig
92
+ download_config: SingleStoreDownloaderConfig
93
+ connector_type: str = CONNECTOR_TYPE
94
+
95
+ def query_db(self, file_data: FileData) -> tuple[list[tuple], list[str]]:
96
+ table_name = file_data.additional_metadata["table_name"]
97
+ id_column = file_data.additional_metadata["id_column"]
98
+ ids = file_data.additional_metadata["ids"]
99
+ with self.connection_config.get_connection() as sqlite_connection:
100
+ cursor = sqlite_connection.cursor()
101
+ fields = ",".join(self.download_config.fields) if self.download_config.fields else "*"
102
+ query = "SELECT {fields} FROM {table_name} WHERE {id_column} in ({ids})".format(
103
+ fields=fields,
104
+ table_name=table_name,
105
+ id_column=id_column,
106
+ ids=",".join([str(i) for i in ids]),
107
+ )
108
+ logger.debug(f"running query: {query}")
109
+ cursor.execute(query)
110
+ rows = cursor.fetchall()
111
+ columns = [col[0] for col in cursor.description]
112
+ return rows, columns
113
+
114
+
115
+ class SingleStoreUploadStagerConfig(SQLUploadStagerConfig):
116
+ pass
117
+
118
+
119
+ class SingleStoreUploadStager(SQLUploadStager):
120
+ upload_stager_config: SingleStoreUploadStagerConfig
121
+
122
+
123
+ class SingleStoreUploaderConfig(SQLUploaderConfig):
124
+ pass
125
+
126
+
127
+ @dataclass
128
+ class SingleStoreUploader(SQLUploader):
129
+ upload_config: SingleStoreUploaderConfig = field(default_factory=SingleStoreUploaderConfig)
130
+ connection_config: SingleStoreConnectionConfig
131
+ values_delimiter: str = "%s"
132
+ connector_type: str = CONNECTOR_TYPE
133
+
134
+ def prepare_data(
135
+ self, columns: list[str], data: tuple[tuple[Any, ...], ...]
136
+ ) -> list[tuple[Any, ...]]:
137
+ output = []
138
+ for row in data:
139
+ parsed = []
140
+ for column_name, value in zip(columns, row):
141
+ if isinstance(value, (list, dict)):
142
+ value = json.dumps(value)
143
+ if column_name in _DATE_COLUMNS:
144
+ if value is None:
145
+ parsed.append(None)
146
+ else:
147
+ parsed.append(parse_date_string(value))
148
+ else:
149
+ parsed.append(value)
150
+ output.append(tuple(parsed))
151
+ return output
152
+
153
+
154
+ singlestore_source_entry = SourceRegistryEntry(
155
+ connection_config=SingleStoreConnectionConfig,
156
+ indexer_config=SingleStoreIndexerConfig,
157
+ indexer=SQLIndexer,
158
+ downloader_config=SingleStoreDownloaderConfig,
159
+ downloader=SingleStoreDownloader,
160
+ )
161
+
162
+ singlestore_destination_entry = DestinationRegistryEntry(
163
+ connection_config=SingleStoreConnectionConfig,
164
+ uploader=SingleStoreUploader,
165
+ uploader_config=SingleStoreUploaderConfig,
166
+ upload_stager=SingleStoreUploadStager,
167
+ upload_stager_config=SingleStoreUploadStagerConfig,
168
+ )
@@ -51,10 +51,7 @@ class SnowflakeConnectionConfig(SQLConnectionConfig):
51
51
  default=None,
52
52
  description="Database name.",
53
53
  )
54
- schema: str = Field(
55
- default=None,
56
- description="Database schema.",
57
- )
54
+ db_schema: str = Field(default=None, description="Database schema.", alias="schema")
58
55
  role: str = Field(
59
56
  default=None,
60
57
  description="Database role.",
@@ -68,11 +65,14 @@ class SnowflakeConnectionConfig(SQLConnectionConfig):
68
65
  from snowflake.connector import connect
69
66
 
70
67
  connect_kwargs = self.model_dump()
68
+ connect_kwargs["schema"] = connect_kwargs.pop("db_schema")
71
69
  connect_kwargs.pop("access_configs", None)
72
70
  connect_kwargs["password"] = self.access_config.get_secret_value().password
73
71
  # https://peps.python.org/pep-0249/#paramstyle
74
72
  connect_kwargs["paramstyle"] = "qmark"
75
- 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)
76
76
  try:
77
77
  yield connection
78
78
  finally:
@@ -300,19 +300,28 @@ 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}")
310
308
 
311
- @abstractmethod
312
309
  def prepare_data(
313
310
  self, columns: list[str], data: tuple[tuple[Any, ...], ...]
314
311
  ) -> list[tuple[Any, ...]]:
315
- pass
312
+ output = []
313
+ for row in data:
314
+ parsed = []
315
+ for column_name, value in zip(columns, row):
316
+ if column_name in _DATE_COLUMNS:
317
+ if value is None:
318
+ parsed.append(None)
319
+ else:
320
+ parsed.append(parse_date_string(value))
321
+ else:
322
+ parsed.append(value)
323
+ output.append(tuple(parsed))
324
+ return output
316
325
 
317
326
  def upload_contents(self, path: Path) -> None:
318
327
  df = pd.read_json(path, orient="records", lines=True)
@@ -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
 
@@ -26,7 +24,7 @@ def create_partition_request(filename: Path, parameters_dict: dict) -> "Partitio
26
24
  # NOTE(austin): PartitionParameters is a Pydantic model in v0.26.0
27
25
  # Prior to this it was a dataclass which doesn't have .__fields
28
26
  try:
29
- possible_fields = PartitionParameters.__fields__
27
+ possible_fields = PartitionParameters.model_fields
30
28
  except AttributeError:
31
29
  possible_fields = [f.name for f in fields(PartitionParameters)]
32
30
 
@@ -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.0
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,13 +22,13 @@ 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: pydantic>=2.7
26
25
  Requires-Dist: opentelemetry-sdk
27
- Requires-Dist: python-dateutil
26
+ Requires-Dist: dataclasses-json
27
+ Requires-Dist: click
28
28
  Requires-Dist: tqdm
29
+ Requires-Dist: python-dateutil
29
30
  Requires-Dist: pandas
30
- Requires-Dist: click
31
- Requires-Dist: dataclasses-json
31
+ Requires-Dist: pydantic>=2.7
32
32
  Provides-Extra: airtable
33
33
  Requires-Dist: pyairtable; extra == "airtable"
34
34
  Provides-Extra: astradb
@@ -41,8 +41,8 @@ Requires-Dist: azure-search-documents; extra == "azure-cognitive-search"
41
41
  Provides-Extra: bedrock
42
42
  Requires-Dist: boto3; extra == "bedrock"
43
43
  Provides-Extra: biomed
44
- Requires-Dist: bs4; extra == "biomed"
45
44
  Requires-Dist: requests; extra == "biomed"
45
+ Requires-Dist: bs4; extra == "biomed"
46
46
  Provides-Extra: box
47
47
  Requires-Dist: boxfs; extra == "box"
48
48
  Requires-Dist: fsspec; extra == "box"
@@ -51,8 +51,8 @@ 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
@@ -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
@@ -87,12 +87,12 @@ Requires-Dist: voyageai; extra == "embed-voyageai"
87
87
  Provides-Extra: epub
88
88
  Requires-Dist: unstructured[epub]; extra == "epub"
89
89
  Provides-Extra: gcs
90
- Requires-Dist: bs4; extra == "gcs"
91
90
  Requires-Dist: gcsfs; extra == "gcs"
91
+ Requires-Dist: bs4; extra == "gcs"
92
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
@@ -115,19 +115,19 @@ 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: backoff; extra == "notion"
119
- Requires-Dist: httpx; extra == "notion"
120
118
  Requires-Dist: notion-client; extra == "notion"
119
+ Requires-Dist: httpx; extra == "notion"
120
+ Requires-Dist: backoff; extra == "notion"
121
121
  Requires-Dist: htmlBuilder; extra == "notion"
122
122
  Provides-Extra: odt
123
123
  Requires-Dist: unstructured[odt]; extra == "odt"
124
124
  Provides-Extra: onedrive
125
- Requires-Dist: bs4; extra == "onedrive"
126
125
  Requires-Dist: Office365-REST-Python-Client; extra == "onedrive"
127
126
  Requires-Dist: msal; extra == "onedrive"
127
+ Requires-Dist: bs4; 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
@@ -150,14 +150,14 @@ 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
@@ -171,7 +171,7 @@ 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,19 +5,24 @@ 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
9
- test/integration/connectors/test_s3.py,sha256=fK0soCTkNxp-4hm4O2LPrhlZXvYmaeTmeEgeNh1b0k8,5839
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
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
12
16
  test/integration/connectors/sql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
17
  test/integration/connectors/sql/test_postgres.py,sha256=gDBuNyvWmpVPmDrSSYC99z3t17B_a196P1MwIAOp5Dk,6584
18
+ test/integration/connectors/sql/test_singlestore.py,sha256=wGI3-lc6qh0qN4-WD9VtiXBB9MlekeqK402_9EXQyX0,5876
14
19
  test/integration/connectors/sql/test_snowflake.py,sha256=XXU2-2z_k8jHWP684v2IuaGOlV3cmPpg3RxkwMp08v8,6998
15
20
  test/integration/connectors/sql/test_sqlite.py,sha256=51QrFufAq-XxNjHAkmPWxdJUkGdIRRIGKeRT09A5pkA,5704
16
21
  test/integration/connectors/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
22
  test/integration/connectors/utils/constants.py,sha256=0zSPnsZVqJuNhXduXvdXFQLZTRIQa5Fo_1qjBYVCfb8,209
18
- test/integration/connectors/utils/docker.py,sha256=-wknXRVlzr3BVPdEhCyJgsdNjO9aSb2xjb-mQ306j7Q,2256
19
- test/integration/connectors/utils/docker_compose.py,sha256=6XeYOKQFZCBRLEmcgH2mmBAaVs6R6jCWAhJLjq6p-aM,1771
20
- test/integration/connectors/utils/validation.py,sha256=gnflehoYbFkSBJdXQV-7HwcrlL_Cuqni2ri1YmArjT0,12019
23
+ test/integration/connectors/utils/docker.py,sha256=JxfX8u46YwpqUnVGd4syI0SrqGqvGQx9yBN0Xq-bIKE,2328
24
+ test/integration/connectors/utils/docker_compose.py,sha256=GVTB6Cel05c0VQ2n4AwkQQx_cBfz13ZTs1HpbaYipNU,2223
25
+ test/integration/connectors/utils/validation.py,sha256=5rQOBJyu1etvuwJmkH6xvKUPF08AKwJRxlN4L7-nw9w,13894
21
26
  test/integration/embedders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
27
  test/integration/embedders/conftest.py,sha256=B2W771RbijR7G_GybsCzRyIvOzXqzbKZdRIlNDd5AGY,334
23
28
  test/integration/embedders/test_bedrock.py,sha256=0oBRNS_DtFDGQ22Z1T3t6VOJ31PrItgvnJpqcLe9Fg4,1903
@@ -46,9 +51,9 @@ test/unit/embed/test_openai.py,sha256=0O1yshDcE0BMKv1yJqrNuiNLSdPhLpKqJ-D_wmnids
46
51
  test/unit/embed/test_vertexai.py,sha256=Pl7COc9E3tf_yGidkTEmTizNGyZF1F5zuL2TgPTMnfI,1048
47
52
  test/unit/embed/test_voyageai.py,sha256=DviCOJFhe5H4e26-kNyX3JNe8h3qB5Yl0KOe8rQEMrc,981
48
53
  unstructured_ingest/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
49
- unstructured_ingest/__version__.py,sha256=BPrBFKCFfY7EcVqYVDVJGmj1rrsGlJa3283pycTFA3o,42
54
+ unstructured_ingest/__version__.py,sha256=h73ZYWteeEB3jWqVrz7Z3m26fzblpJHqT2R5UK5aQ5w,42
50
55
  unstructured_ingest/error.py,sha256=qDncnJgbf5ils956RcO2CGlAKYDT5OaEM9Clv1JVTNc,1448
51
- unstructured_ingest/interfaces.py,sha256=m03BgenxSA34HbW157L7V9TGxK_dTG7N2AnAhF31W-U,31364
56
+ unstructured_ingest/interfaces.py,sha256=OYVUP0bzBJpT-Lz92BDyz_hLBvyfxkuSwWHhUdnUayA,31493
52
57
  unstructured_ingest/logger.py,sha256=S5nSqGcABoQyeicgRnBQFjDScCaTvFVivOCvbo-laL0,4479
53
58
  unstructured_ingest/main.py,sha256=82G_7eG4PNhc_xIqj4Y_sFbDV9VI-nwSfsfJQMzovMk,169
54
59
  unstructured_ingest/processor.py,sha256=XKKrvbxsb--5cDzz4hB3-GfWZYyIjJ2ah8FpzQKF_DM,2760
@@ -122,7 +127,7 @@ unstructured_ingest/connector/gitlab.py,sha256=OEilnSFabWT3XY0riNxVTXc9tS3f1lMyH
122
127
  unstructured_ingest/connector/google_drive.py,sha256=Sl6r-IcbV_7s8LeMg2z8qiko2r5RAyRnDzBxMwvY6ng,13053
123
128
  unstructured_ingest/connector/hubspot.py,sha256=jL-bqU4EJIqbG0YRk9IR3MKsHi_WHf86Fy6r1fVeCz4,9271
124
129
  unstructured_ingest/connector/jira.py,sha256=kxjGhbVSH8FJNPMGJbnpZEV5zZRfGFckVJFiOzExphQ,15690
125
- unstructured_ingest/connector/kafka.py,sha256=D0XPf0IZ4XkLjnYy7I1FDc5XucNehJLlj-yCKjBMr0w,10053
130
+ unstructured_ingest/connector/kafka.py,sha256=VSlZWqYODbITvFKnR87MyLYO33vLRdFTpclwsQfdfBM,10052
126
131
  unstructured_ingest/connector/local.py,sha256=ayEz7gtnr1ioiYWmJ5ElSlSC8_ZFk1rk-9sX2htRq6c,4479
127
132
  unstructured_ingest/connector/mongodb.py,sha256=UD8T1V435YvGY68dpL-fyFesD7bcLckptgXzzfgnILI,9771
128
133
  unstructured_ingest/connector/onedrive.py,sha256=-yy3scFHVIUiPAAQdmJXel3_BMZnZc9qUI8HwecuoJ4,8911
@@ -313,7 +318,7 @@ unstructured_ingest/v2/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LG
313
318
  unstructured_ingest/v2/logger.py,sha256=wcln4s5Nyp2fjjJux9iM3d6t9aQFNJ2H1IAZXmIknjI,4323
314
319
  unstructured_ingest/v2/main.py,sha256=WFdLEqEXRy6E9_G-dF20MK2AtgX51Aan1sp_N67U2B8,172
315
320
  unstructured_ingest/v2/otel.py,sha256=2fGj1c7cVcC3J8NwL6MNYhyPEAXiB33DsilvRDkrdLo,4130
316
- unstructured_ingest/v2/unstructured_api.py,sha256=1EQVuL-TojmFxWoWFzXr1oCFPEC3IkCQqhjXM8spdTY,3373
321
+ unstructured_ingest/v2/unstructured_api.py,sha256=f_6NK0QOVwjAFJvlyvzu0IaXb6QQgRNJleYxB1KvzKE,3856
317
322
  unstructured_ingest/v2/utils.py,sha256=BT_j15e4rX40wQbt8LUXbqfPhA3rJn1PHTI_G_A_EHY,1720
318
323
  unstructured_ingest/v2/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
319
324
  unstructured_ingest/v2/cli/cli.py,sha256=qHXIs-PcvMgDZhP1AR9iDMxh8FXBMJCEDksPBfiMULE,648
@@ -329,7 +334,7 @@ unstructured_ingest/v2/cli/utils/model_conversion.py,sha256=7eEIkk1KU51-ZNiIfI1K
329
334
  unstructured_ingest/v2/interfaces/__init__.py,sha256=Rfa8crx6De7WNOK-EjsWWwFVpsUfCc6gY8B8tQ3ae9I,899
330
335
  unstructured_ingest/v2/interfaces/connector.py,sha256=qUFFJ3qgDMenTCZMtVRjq1DIwsVak6pxNjQOH2eVkMw,1623
331
336
  unstructured_ingest/v2/interfaces/downloader.py,sha256=Lj3nTY1hPA71GfNeedFVCdHdZsHLle8qrx5RtXAy9GY,2940
332
- unstructured_ingest/v2/interfaces/file_data.py,sha256=ieJK-hqHCEOmoYNGoFbCHziSaZyMtRS9VpSoYbwoKCE,1944
337
+ unstructured_ingest/v2/interfaces/file_data.py,sha256=D71bXImJ7Pyjtl3I3pa2O2B2iBqIaY-mC-hdoEF3RmI,1983
333
338
  unstructured_ingest/v2/interfaces/indexer.py,sha256=gsa1MLhFa82BzD2h4Yb7ons0VxRwKINZOrzvHAahwVU,846
334
339
  unstructured_ingest/v2/interfaces/process.py,sha256=BgglTu5K93FnDDopZKKr_rkK2LTZOguR6kcQjKHjF40,392
335
340
  unstructured_ingest/v2/interfaces/processor.py,sha256=VX7JqXlbG1plxMK8THWhWINPbTICaaUEk4XUXhnOixY,3303
@@ -350,37 +355,38 @@ unstructured_ingest/v2/pipeline/steps/stage.py,sha256=cphKgHScLz2rNLZRI5Olsb6dAH
350
355
  unstructured_ingest/v2/pipeline/steps/uncompress.py,sha256=CFSy4tGp6BAvF0oIwWFN8v4zFzh5pRDeESjEn5iP9hE,1756
351
356
  unstructured_ingest/v2/pipeline/steps/upload.py,sha256=zlgXgwReX9TBOdfTpS9hETah4SeSmzPB2g8dAGfLIvM,1987
352
357
  unstructured_ingest/v2/processes/__init__.py,sha256=FaHWSCGyc7GWVnAsNEUUj7L8hT8gCVY3_hUE2VzWtUg,462
353
- unstructured_ingest/v2/processes/chunker.py,sha256=1bfJ2qgl6qu2HvClzHbC7-q5QtUp7mrlNxZxnPGYTm0,5479
358
+ unstructured_ingest/v2/processes/chunker.py,sha256=31-7ojsM2coIt2rMR0KOb82IxLVJfNHbqYUOsDkhxN8,5491
354
359
  unstructured_ingest/v2/processes/connector_registry.py,sha256=vkEe6jpgdYtZCxMj59s5atWGgmPuxAEXRUoTt-MJ7wc,2198
355
360
  unstructured_ingest/v2/processes/embedder.py,sha256=PQn0IO8xbGRQHpcT2VVl-J8gTJ5HGGEP9gdEAwMVK3U,6498
356
361
  unstructured_ingest/v2/processes/filter.py,sha256=kjUmMw2SDq2bme0JCAOxs6cJriIG6Ty09KOznS-xz08,2145
357
- unstructured_ingest/v2/processes/partitioner.py,sha256=2Lhztd730soVC2TOqrn_ba7CGZna8AHHpqJY2ZUYVxE,7776
362
+ unstructured_ingest/v2/processes/partitioner.py,sha256=agpHwB9FR8OZVQqE7zFEb0IcDPCOPA_BZjLzLF71nOY,8194
358
363
  unstructured_ingest/v2/processes/uncompress.py,sha256=Z_XfsITGdyaRwhtNUc7bMj5Y2jLuBge8KoK4nxhqKag,2425
359
- unstructured_ingest/v2/processes/connectors/__init__.py,sha256=a7L4N7A2-SzthS6-42FKWymQRW1ydr0cGvDdI2QE--I,5377
364
+ unstructured_ingest/v2/processes/connectors/__init__.py,sha256=t3mBUb7F4LgNY8dyoDnzQVaRqGajOaXUqAEBUO5hr4A,5902
360
365
  unstructured_ingest/v2/processes/connectors/airtable.py,sha256=Yi7PEv_FejZ9_y3BPY3gu5YGVfeLh-9YX-qLyQHjJsY,8921
361
- unstructured_ingest/v2/processes/connectors/astradb.py,sha256=ZctZRfXcOAMBGPkKgHvhTmV_-2F0YN5vqwfY9UCHIlU,5791
366
+ unstructured_ingest/v2/processes/connectors/astradb.py,sha256=k6zaxm05-ESpRV6w1jgrtfE10-I2Z50kafURxxJVzdk,14043
362
367
  unstructured_ingest/v2/processes/connectors/azure_cognitive_search.py,sha256=S55v7TXu30rEdgythMBB_2VcuomyMPmcPtLYykbhw_E,8466
363
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
364
370
  unstructured_ingest/v2/processes/connectors/couchbase.py,sha256=SONLywyEfoAlLc-HPabXeGzoiwKnekMHIbRMXd4CGXs,12146
365
371
  unstructured_ingest/v2/processes/connectors/delta_table.py,sha256=ZZfdNTw1W0ISQGWCtM1JuIME26FYzuPBOqRKql0wlLg,7013
366
372
  unstructured_ingest/v2/processes/connectors/elasticsearch.py,sha256=ojxMUHkLa6ZG50aTGn2YWhDHZ1n38uFRn5p8_ghAIvM,16762
373
+ unstructured_ingest/v2/processes/connectors/gitlab.py,sha256=yBgCeLy9iCVI8bBDcHHuHB0H3BO05e9E1OccbHwvKAo,9724
367
374
  unstructured_ingest/v2/processes/connectors/google_drive.py,sha256=7xOQthcqBd9auJxB0nxZlhh1vdjXpMX_CtQZa6YfZz0,13088
368
375
  unstructured_ingest/v2/processes/connectors/kdbai.py,sha256=8bGHbZctJ_Tl1AUSMnI7CCZ7CgEtTRVcRuvlB1HPlqQ,5907
369
376
  unstructured_ingest/v2/processes/connectors/local.py,sha256=a3stgnIkhBbXPIQD0O-RaRM-Eb-szHj9Yy4Fz881-9c,6723
370
377
  unstructured_ingest/v2/processes/connectors/milvus.py,sha256=ZUlyAQyTt0U1JoapFYHQW3IIaGYY50b3URDSLEAFjtk,7687
371
378
  unstructured_ingest/v2/processes/connectors/mongodb.py,sha256=A0pt6JcNTD5bEu79jZ8KhnHcBQ2VUJ2AjtQAtdFr_Lo,13175
372
- unstructured_ingest/v2/processes/connectors/onedrive.py,sha256=ZiUo-dFo1LMOvFwphSLRZiR1PcrN8GWLTHhsh4TU6n0,9207
379
+ unstructured_ingest/v2/processes/connectors/onedrive.py,sha256=4Xs3akCaBC2JW3MyVnKctrOgB7xOjiEMudFL1Fg7lsc,15981
373
380
  unstructured_ingest/v2/processes/connectors/opensearch.py,sha256=dfDSNrWIEk19wuHdlMJpp_SLMOteNPlkDBPlAwu1LVY,6767
374
381
  unstructured_ingest/v2/processes/connectors/outlook.py,sha256=NK67Pd8Nk5oUIXTK-sK18K7rZ_Cl0UuCbeF2ExBEZho,9294
375
382
  unstructured_ingest/v2/processes/connectors/pinecone.py,sha256=k_GH55S_OQ6-wCLC6gkhRrNpXIFECYZ_2Gjz_XRtY6Y,7561
376
383
  unstructured_ingest/v2/processes/connectors/salesforce.py,sha256=2CiO2ZZiZ1Y1-nB7wcDlDVcpW2B7ut9wCj66rkkqho0,11616
377
384
  unstructured_ingest/v2/processes/connectors/sharepoint.py,sha256=hOaV5gBcHFc6N5Rbu3MgM-5Aol1ht-QkNIN4PqjvfxE,19665
378
- unstructured_ingest/v2/processes/connectors/singlestore.py,sha256=4rVvWKK2iQr03Ff6cB5zjfE1MpN0JyIGpCxxFCDI6hc,5563
379
385
  unstructured_ingest/v2/processes/connectors/slack.py,sha256=b9IanzUApUexiJzuNg7PR3tujOoeG8dhM0L0v4MDuPw,9256
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=IBCGt6BQ7vULkPI3jTJZ52emwYg7QeyLZXjOFz9SO3E,6549
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,19 +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=eFcrpSAB8wbLHuCiDb-2QpEUtgEEUA_iSqcT81H2-3Q,11472
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
397
- unstructured_ingest/v2/processes/connectors/sql/__init__.py,sha256=hdGD-V4U3RgnVoJV5S3exKVUfzCLLY7wTwKWvVaihJs,1098
398
- unstructured_ingest/v2/processes/connectors/sql/postgres.py,sha256=WUqyjzjmuVvLKCMKnhFhYNRAAQs_cFh0DkSXAJEERyU,5548
399
- unstructured_ingest/v2/processes/connectors/sql/snowflake.py,sha256=AcW2TxEalYj6c8fhrOWB78JlaB-1hApmdDzCUhQlzW4,5513
400
- unstructured_ingest/v2/processes/connectors/sql/sql.py,sha256=XdMJRgQvcR4Lo2Udl1y8-ZkJw6nVrcXTL-gTsaAHAJw,11196
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
412
+ unstructured_ingest/v2/processes/connectors/sql/__init__.py,sha256=D43wrV2ADvQsToIYwbEWnZ7mhzlsYcZMFCqf6jIC7dQ,1333
413
+ unstructured_ingest/v2/processes/connectors/sql/postgres.py,sha256=__Wf5lkCQGhbtEH_2DxfNmQyWP-UKC9o_KEawG81jY0,4905
414
+ unstructured_ingest/v2/processes/connectors/sql/singlestore.py,sha256=YrmhAL1RQ1c5-2fnR3UAyj_4KfvjYTQ2cWzpvsdJOnU,5535
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
401
417
  unstructured_ingest/v2/processes/connectors/sql/sqlite.py,sha256=9605K36nQ5-gBxzt1daYKYotON1SE85RETusqCJrbdk,5230
402
- unstructured_ingest-0.2.0.dist-info/LICENSE.md,sha256=SxkKP_62uIAKb9mb1eH7FH4Kn2aYT09fgjKpJt5PyTk,11360
403
- unstructured_ingest-0.2.0.dist-info/METADATA,sha256=F8s5t23zy5zdxICEj6BseR0teRWCQc7IjB_xtlZUkaM,7271
404
- unstructured_ingest-0.2.0.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
405
- unstructured_ingest-0.2.0.dist-info/entry_points.txt,sha256=gUAAFnjFPnBgThJSEbw0N5ZjxtaKlT1s9e05_arQrNw,70
406
- unstructured_ingest-0.2.0.dist-info/top_level.txt,sha256=DMuDMHZRMdeay8v8Kdi855muIv92F0OkutvBCaBEW6M,25
407
- unstructured_ingest-0.2.0.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,,