nv-ingest-client 2025.8.14.dev20250814__py3-none-any.whl → 2025.8.16.dev20250816__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 nv-ingest-client might be problematic. Click here for more details.

Files changed (28) hide show
  1. nv_ingest_client/cli/util/click.py +182 -30
  2. nv_ingest_client/client/interface.py +209 -26
  3. nv_ingest_client/nv_ingest_cli.py +16 -0
  4. nv_ingest_client/primitives/jobs/job_spec.py +29 -9
  5. nv_ingest_client/primitives/tasks/__init__.py +6 -4
  6. nv_ingest_client/primitives/tasks/audio_extraction.py +27 -23
  7. nv_ingest_client/primitives/tasks/caption.py +10 -16
  8. nv_ingest_client/primitives/tasks/chart_extraction.py +16 -10
  9. nv_ingest_client/primitives/tasks/dedup.py +12 -21
  10. nv_ingest_client/primitives/tasks/embed.py +21 -76
  11. nv_ingest_client/primitives/tasks/extract.py +67 -168
  12. nv_ingest_client/primitives/tasks/filter.py +21 -27
  13. nv_ingest_client/primitives/tasks/infographic_extraction.py +16 -13
  14. nv_ingest_client/primitives/tasks/split.py +17 -18
  15. nv_ingest_client/primitives/tasks/store.py +29 -29
  16. nv_ingest_client/primitives/tasks/task_base.py +1 -72
  17. nv_ingest_client/primitives/tasks/task_factory.py +2 -0
  18. nv_ingest_client/primitives/tasks/udf.py +352 -0
  19. nv_ingest_client/util/vdb/milvus.py +1 -0
  20. {nv_ingest_client-2025.8.14.dev20250814.dist-info → nv_ingest_client-2025.8.16.dev20250816.dist-info}/METADATA +1 -1
  21. {nv_ingest_client-2025.8.14.dev20250814.dist-info → nv_ingest_client-2025.8.16.dev20250816.dist-info}/RECORD +25 -27
  22. nv_ingest_client/cli/util/tasks.py +0 -3
  23. nv_ingest_client/primitives/exceptions.py +0 -0
  24. nv_ingest_client/primitives/tasks/transform.py +0 -0
  25. {nv_ingest_client-2025.8.14.dev20250814.dist-info → nv_ingest_client-2025.8.16.dev20250816.dist-info}/WHEEL +0 -0
  26. {nv_ingest_client-2025.8.14.dev20250814.dist-info → nv_ingest_client-2025.8.16.dev20250816.dist-info}/entry_points.txt +0 -0
  27. {nv_ingest_client-2025.8.14.dev20250814.dist-info → nv_ingest_client-2025.8.16.dev20250816.dist-info}/licenses/LICENSE +0 -0
  28. {nv_ingest_client-2025.8.14.dev20250814.dist-info → nv_ingest_client-2025.8.16.dev20250816.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,352 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2024, NVIDIA CORPORATION & AFFILIATES.
2
+ # All rights reserved.
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
5
+
6
+ # pylint: disable=too-few-public-methods
7
+ # pylint: disable=too-many-arguments
8
+
9
+ import importlib.util
10
+ import logging
11
+ import importlib
12
+ import inspect
13
+ import ast
14
+ from typing import Dict, Optional, Union
15
+
16
+ from nv_ingest_api.internal.enums.common import PipelinePhase
17
+ from nv_ingest_api.internal.schemas.meta.ingest_job_schema import IngestTaskUDFSchema
18
+ from nv_ingest_client.primitives.tasks.task_base import Task
19
+
20
+ logger = logging.getLogger(__name__)
21
+
22
+
23
+ def _load_function_from_import_path(import_path: str):
24
+ """Load a function from an import path like 'module.submodule.function'."""
25
+ try:
26
+ parts = import_path.split(".")
27
+ module_path = ".".join(parts[:-1])
28
+ function_name = parts[-1]
29
+
30
+ module = importlib.import_module(module_path)
31
+ func = getattr(module, function_name)
32
+
33
+ if not callable(func):
34
+ raise ValueError(f"'{function_name}' is not callable in module '{module_path}'")
35
+
36
+ return func
37
+ except ImportError as e:
38
+ raise ValueError(f"Failed to import module from '{import_path}': {e}")
39
+ except AttributeError as e:
40
+ raise ValueError(f"Function '{function_name}' not found in module '{module_path}': {e}")
41
+
42
+
43
+ def _load_function_from_file_path(file_path: str, function_name: str):
44
+ """Load a function from a file path."""
45
+ try:
46
+
47
+ # Create a module spec from the file
48
+ spec = importlib.util.spec_from_file_location("udf_module", file_path)
49
+ if spec is None:
50
+ raise ValueError(f"Could not create module spec from file: {file_path}")
51
+
52
+ module = importlib.util.module_from_spec(spec)
53
+
54
+ # Execute the module to load its contents
55
+ spec.loader.exec_module(module)
56
+
57
+ # Get the function
58
+ func = getattr(module, function_name)
59
+
60
+ if not callable(func):
61
+ raise ValueError(f"'{function_name}' is not callable in file '{file_path}'")
62
+
63
+ return func
64
+ except Exception as e:
65
+ raise ValueError(f"Failed to load function '{function_name}' from file '{file_path}': {e}")
66
+
67
+
68
+ def _extract_function_with_context(file_path: str, function_name: str) -> str:
69
+ """
70
+ Extract a function from a file while preserving the full module context.
71
+
72
+ This includes all imports, module-level variables, and other functions
73
+ that the target function might depend on.
74
+
75
+ Parameters
76
+ ----------
77
+ file_path : str
78
+ Path to the Python file containing the function
79
+ function_name : str
80
+ Name of the function to extract
81
+
82
+ Returns
83
+ -------
84
+ str
85
+ Complete module source code with the target function
86
+ """
87
+ try:
88
+ with open(file_path, "r", encoding="utf-8") as f:
89
+ module_source = f.read()
90
+
91
+ # Parse the module to verify the function exists
92
+ try:
93
+ tree = ast.parse(module_source)
94
+ function_found = False
95
+
96
+ for node in ast.walk(tree):
97
+ if isinstance(node, ast.FunctionDef) and node.name == function_name:
98
+ function_found = True
99
+ break
100
+
101
+ if not function_found:
102
+ raise ValueError(f"Function '{function_name}' not found in file '{file_path}'")
103
+
104
+ except SyntaxError as e:
105
+ raise ValueError(f"Syntax error in file '{file_path}': {e}")
106
+
107
+ return module_source
108
+
109
+ except FileNotFoundError:
110
+ raise ValueError(f"File not found: {file_path}")
111
+ except Exception as e:
112
+ raise ValueError(f"Failed to read file '{file_path}': {e}")
113
+
114
+
115
+ def _resolve_udf_function(udf_function_spec: str) -> str:
116
+ """
117
+ Resolve UDF function specification to function string.
118
+
119
+ Supports four formats:
120
+ 1. Inline function string: 'def my_func(control_message): ...'
121
+ 2. Module path with colon: 'my_module.my_submodule:my_function' (preserves imports)
122
+ 3. File path: '/path/to/file.py:my_function'
123
+ 4. Legacy import path: 'my_module.my_function' (function name only, no imports)
124
+ """
125
+ if udf_function_spec.strip().startswith("def "):
126
+ # Already an inline function string
127
+ return udf_function_spec
128
+
129
+ elif ".py:" in udf_function_spec:
130
+ # File path format: /path/to/file.py:function_name
131
+ file_path, function_name = udf_function_spec.split(":", 1)
132
+ return _extract_function_with_context(file_path, function_name)
133
+
134
+ elif udf_function_spec.endswith(".py"):
135
+ # File path format without function name - this is an error
136
+ raise ValueError(
137
+ f"File path '{udf_function_spec}' is missing function name. "
138
+ f"Use format 'file.py:function_name' to specify which function to use."
139
+ )
140
+
141
+ elif ":" in udf_function_spec and ".py:" not in udf_function_spec:
142
+ # Module path format with colon: my_module.submodule:function_name
143
+ # This preserves imports and module context
144
+ module_path, function_name = udf_function_spec.split(":", 1)
145
+
146
+ try:
147
+ # Import the module to get its file path
148
+ module = importlib.import_module(module_path)
149
+ module_file = inspect.getfile(module)
150
+
151
+ # Extract the function with full module context
152
+ return _extract_function_with_context(module_file, function_name)
153
+
154
+ except ImportError as e:
155
+ raise ValueError(f"Failed to import module '{module_path}': {e}")
156
+ except Exception as e:
157
+ raise ValueError(f"Failed to resolve module path '{module_path}': {e}")
158
+
159
+ elif "." in udf_function_spec:
160
+ # Legacy import path format: module.submodule.function
161
+ # This only extracts the function source without imports (legacy behavior)
162
+ func = _load_function_from_import_path(udf_function_spec)
163
+
164
+ # Get the source code of the function only
165
+ try:
166
+ source = inspect.getsource(func)
167
+ return source
168
+ except (OSError, TypeError) as e:
169
+ raise ValueError(f"Could not get source code for function from '{udf_function_spec}': {e}")
170
+
171
+ else:
172
+ raise ValueError(f"Invalid UDF function specification: {udf_function_spec}")
173
+
174
+
175
+ class UDFTask(Task):
176
+ """
177
+ User-Defined Function (UDF) task for custom processing logic.
178
+
179
+ This task allows users to provide custom Python functions that will be executed
180
+ during the ingestion pipeline. The UDF function must accept a control_message
181
+ parameter and return an IngestControlMessage.
182
+
183
+ Supports four UDF function specification formats:
184
+ 1. Inline function string: 'def my_func(control_message): ...'
185
+ 2. Module path with colon: 'my_module.my_submodule:my_function' (preserves imports)
186
+ 3. File path: '/path/to/file.py:my_function'
187
+ 4. Legacy import path: 'my_module.my_function' (function name only, no imports)
188
+ """
189
+
190
+ def __init__(
191
+ self,
192
+ udf_function: Optional[str] = None,
193
+ udf_function_name: Optional[str] = None,
194
+ phase: Union[PipelinePhase, int, str, None] = PipelinePhase.RESPONSE,
195
+ target_stage: Optional[str] = None,
196
+ run_before: bool = False,
197
+ run_after: bool = False,
198
+ ) -> None:
199
+ super().__init__()
200
+ self._udf_function = udf_function
201
+ self._udf_function_name = udf_function_name
202
+ self._target_stage = target_stage
203
+ self._run_before = run_before
204
+ self._run_after = run_after
205
+
206
+ # Convert phase to the appropriate format for API schema
207
+ # If target_stage is provided and phase is None, don't convert phase
208
+ if target_stage is not None and phase is None:
209
+ converted_phase = None
210
+ self._phase = None # Set to None when using target_stage
211
+ else:
212
+ converted_phase = self._convert_phase(phase)
213
+ self._phase = PipelinePhase(converted_phase) # Convert back to enum for internal use
214
+
215
+ # Use the API schema for validation
216
+ _ = IngestTaskUDFSchema(
217
+ udf_function=udf_function or "",
218
+ udf_function_name=udf_function_name or "",
219
+ phase=converted_phase,
220
+ target_stage=target_stage,
221
+ run_before=run_before,
222
+ run_after=run_after,
223
+ )
224
+ self._resolved_udf_function = None
225
+
226
+ def _convert_phase(self, phase: Union[PipelinePhase, int, str]) -> int:
227
+ """Convert phase to integer for API schema validation."""
228
+ if isinstance(phase, PipelinePhase):
229
+ return phase.value
230
+
231
+ if isinstance(phase, int):
232
+ try:
233
+ PipelinePhase(phase) # Validate it's a valid phase number
234
+ return phase
235
+ except ValueError:
236
+ valid_values = [p.value for p in PipelinePhase]
237
+ raise ValueError(f"Invalid phase number {phase}. Valid values are: {valid_values}")
238
+
239
+ if isinstance(phase, str):
240
+ # Convert string to uppercase and try to match enum name
241
+ phase_name = phase.upper().strip()
242
+
243
+ # Handle common aliases and variations
244
+ phase_aliases = {
245
+ "EXTRACT": "EXTRACTION",
246
+ "PREPROCESS": "PRE_PROCESSING",
247
+ "PRE_PROCESS": "PRE_PROCESSING",
248
+ "PREPROCESSING": "PRE_PROCESSING",
249
+ "POSTPROCESS": "POST_PROCESSING",
250
+ "POST_PROCESS": "POST_PROCESSING",
251
+ "POSTPROCESSING": "POST_PROCESSING",
252
+ "MUTATE": "MUTATION",
253
+ }
254
+
255
+ # Apply alias if exists
256
+ if phase_name in phase_aliases:
257
+ phase_name = phase_aliases[phase_name]
258
+
259
+ try:
260
+ return PipelinePhase[phase_name].value
261
+ except KeyError:
262
+ valid_names = [p.name for p in PipelinePhase]
263
+ valid_aliases = list(phase_aliases.keys())
264
+ raise ValueError(
265
+ f"Invalid phase name '{phase}'. Valid phase names are: {valid_names}. "
266
+ f"Also supported aliases: {valid_aliases}"
267
+ )
268
+
269
+ raise ValueError(f"Phase must be a PipelinePhase enum, integer, or string, got {type(phase)}")
270
+
271
+ @property
272
+ def udf_function(self) -> Optional[str]:
273
+ """
274
+ Returns the UDF function string or specification.
275
+ """
276
+ return self._udf_function
277
+
278
+ @property
279
+ def udf_function_name(self) -> Optional[str]:
280
+ """
281
+ Returns the UDF function name.
282
+ """
283
+ return self._udf_function_name
284
+
285
+ @property
286
+ def phase(self) -> PipelinePhase:
287
+ """
288
+ Returns the pipeline phase for this UDF task.
289
+ """
290
+ return self._phase
291
+
292
+ def __str__(self) -> str:
293
+ """
294
+ Returns a string with the object's config and run time state
295
+ """
296
+ info = ""
297
+ info += "User-Defined Function (UDF) Task:\n"
298
+
299
+ if self._udf_function:
300
+ # Show first 100 characters of the function for brevity
301
+ function_preview = self._udf_function[:100]
302
+ if len(self._udf_function) > 100:
303
+ function_preview += "..."
304
+ info += f" udf_function: {function_preview}\n"
305
+ else:
306
+ info += " udf_function: None\n"
307
+
308
+ # Display phase information
309
+ if isinstance(self._phase, PipelinePhase):
310
+ info += f" phase: {self._phase.name} ({self._phase.value})\n"
311
+ else:
312
+ info += f" phase: {self._phase}\n"
313
+
314
+ return info
315
+
316
+ def to_dict(self) -> Dict:
317
+ """
318
+ Convert to a dict for submission to redis
319
+ """
320
+ task_properties = {}
321
+
322
+ if self._udf_function:
323
+ # Resolve the UDF function specification to function string
324
+ resolved_function = self._resolve_udf_function()
325
+ task_properties["udf_function"] = resolved_function
326
+
327
+ if self._udf_function_name:
328
+ task_properties["udf_function_name"] = self._udf_function_name
329
+
330
+ # Convert phase to integer value for serialization
331
+ if isinstance(self._phase, PipelinePhase):
332
+ task_properties["phase"] = self._phase.value
333
+ else:
334
+ task_properties["phase"] = self._phase
335
+
336
+ # Add new stage targeting parameters
337
+ if self._target_stage:
338
+ task_properties["target_stage"] = self._target_stage
339
+
340
+ task_properties["run_before"] = self._run_before
341
+ task_properties["run_after"] = self._run_after
342
+
343
+ return {
344
+ "type": "udf",
345
+ "task_properties": task_properties,
346
+ }
347
+
348
+ def _resolve_udf_function(self):
349
+ """Resolve UDF function specification to function string."""
350
+ if self._resolved_udf_function is None and self._udf_function:
351
+ self._resolved_udf_function = _resolve_udf_function(self._udf_function)
352
+ return self._resolved_udf_function
@@ -1865,6 +1865,7 @@ class Milvus(VDB):
1865
1865
  meta_source_field: str = None,
1866
1866
  meta_fields: list[str] = None,
1867
1867
  stream: bool = False,
1868
+ threshold: int = 1000,
1868
1869
  **kwargs,
1869
1870
  ):
1870
1871
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nv-ingest-client
3
- Version: 2025.8.14.dev20250814
3
+ Version: 2025.8.16.dev20250816
4
4
  Summary: Python client for the nv-ingest service
5
5
  Author-email: Jeremy Dyer <jdyer@nvidia.com>
6
6
  License: Apache License
@@ -1,35 +1,33 @@
1
1
  nv_ingest_client/__init__.py,sha256=wQSlVx3T14ZgQAt-EPzEczQusXVW0W8yynnUaFFGE3s,143
2
- nv_ingest_client/nv_ingest_cli.py,sha256=CXci0OZcm8DGzZmEkFgmBC8x57smUnhrDuiHpGeav0g,11822
2
+ nv_ingest_client/nv_ingest_cli.py,sha256=uonsSDRSKXqUl5meY2u_FMgUjgDCOkDRPDzCpAIIM6I,12966
3
3
  nv_ingest_client/cli/__init__.py,sha256=wQSlVx3T14ZgQAt-EPzEczQusXVW0W8yynnUaFFGE3s,143
4
4
  nv_ingest_client/cli/util/__init__.py,sha256=wQSlVx3T14ZgQAt-EPzEczQusXVW0W8yynnUaFFGE3s,143
5
- nv_ingest_client/cli/util/click.py,sha256=TZacPGWFz0U7ycVZ3BDGfJ1H0HKGJceFms1O0cfr6PI,11618
5
+ nv_ingest_client/cli/util/click.py,sha256=YjQU1uF148FU5D3ozC2m1kkfOOJxO1U8U552-T8PjU4,20029
6
6
  nv_ingest_client/cli/util/processing.py,sha256=7mXPjjNjLzWQY7WSxpm6et6ZEZOj0GYhLqvz-jx6MO4,24002
7
7
  nv_ingest_client/cli/util/system.py,sha256=AQLq0DD2Ns8jRanrKu1tmVBKPA9rl-F3-ZsGI6FXLqE,1105
8
- nv_ingest_client/cli/util/tasks.py,sha256=wQSlVx3T14ZgQAt-EPzEczQusXVW0W8yynnUaFFGE3s,143
9
8
  nv_ingest_client/client/__init__.py,sha256=eEX9l1qmkLH2lAAZU3eP17SCV06ZjjrshHAB_xbboHA,375
10
9
  nv_ingest_client/client/client.py,sha256=wgPeLUByBNcQRkl1FXe7neHNNC5eY2sVve99g5sW41k,65068
11
- nv_ingest_client/client/interface.py,sha256=3irfSXfOQ2m7iQenHv8eTrMT54akGEyAk0YV6Hm17SE,38397
10
+ nv_ingest_client/client/interface.py,sha256=D4kosPM5q-DpeGIe6hKNNrX_p5V9nT6LvCKufkEvYAc,46261
12
11
  nv_ingest_client/client/util/processing.py,sha256=MtVRtGnRB8unwTa5b6-LYODx-7kg-RYP3wLmjdqymXw,2195
13
12
  nv_ingest_client/primitives/__init__.py,sha256=3rbpLCI7Bl0pntGatAxXD_V01y6dcLhHFheI3wqet-I,269
14
- nv_ingest_client/primitives/exceptions.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
13
  nv_ingest_client/primitives/jobs/__init__.py,sha256=-yohgHv3LcCtSleHSaxjv1oO7nNcMCjN3ZYoOkIypIk,469
16
- nv_ingest_client/primitives/jobs/job_spec.py,sha256=QCzo_iPgdNIe-SDs1aZnPpZDralw-p49LUlcSz1XI88,14853
14
+ nv_ingest_client/primitives/jobs/job_spec.py,sha256=NYT8K31b6p2v0zbIYugcARqJ8DTHpSNf_D1-V6M8YXA,15609
17
15
  nv_ingest_client/primitives/jobs/job_state.py,sha256=CEe_oZr4p_MobauWIyhuNrP8y7AUwxhIGBuO7dN-VOQ,5277
18
- nv_ingest_client/primitives/tasks/__init__.py,sha256=BnmFhmdP0wntJV6BNww8MhGN8BaRQOY4aBcV1J4-sFA,1090
19
- nv_ingest_client/primitives/tasks/audio_extraction.py,sha256=8-Px1TKUE4-0DY8p9exDj6Y9vStpDeTFjqtpIA4_ID0,3172
20
- nv_ingest_client/primitives/tasks/caption.py,sha256=7umiuyxDs0o8ayRJVm5Q20Z8EjNUDZNlSEx2rAKcSAU,2127
21
- nv_ingest_client/primitives/tasks/chart_extraction.py,sha256=g2uCI34BuuKquhK2VtnrhsPjH_i8ngZbeONWGYBKcsU,1106
22
- nv_ingest_client/primitives/tasks/dedup.py,sha256=5Q8ok2PA-MoT5NZ8GFUDrKsSMoQWcyBFNP3hRHFqOho,1834
23
- nv_ingest_client/primitives/tasks/embed.py,sha256=M5zhob3Is8hEIh3vcITnvdORe6SHsGXNlP0b5eu42us,7799
24
- nv_ingest_client/primitives/tasks/extract.py,sha256=GMxXXrzEWdUlUa_YFIfD0H7McccuRUen0xzTJUSXhE4,13714
25
- nv_ingest_client/primitives/tasks/filter.py,sha256=-gi-r2s3JNM5eEokS9GHnB1MxTtowrmO7rN0TSYLcbU,2603
26
- nv_ingest_client/primitives/tasks/infographic_extraction.py,sha256=HnJPTRGqZOAX0eROKHwYIVa4S_0Noij-FHhTpDgJzY4,1136
27
- nv_ingest_client/primitives/tasks/split.py,sha256=0fqXhvlgMxS9X_9HuUSx2yW6C9aYiXRryjl8S-ZAIH4,2104
28
- nv_ingest_client/primitives/tasks/store.py,sha256=Vvay-YTBScsJh_XCWxuZryBb5VvXyR79VQoUFfyR93Y,3637
16
+ nv_ingest_client/primitives/tasks/__init__.py,sha256=D8X4XuwCxk4g_sMSpNRL1XsjVE1eACYaUdEjSanSEfU,1130
17
+ nv_ingest_client/primitives/tasks/audio_extraction.py,sha256=KD5VvaRm6PYelfofZq_-83CbOmupgosokZzFERI5wDA,3559
18
+ nv_ingest_client/primitives/tasks/caption.py,sha256=J8sMIYujPb-ysWj1w3TXPSBLCnhHns_z4tZjzhDOQIs,2130
19
+ nv_ingest_client/primitives/tasks/chart_extraction.py,sha256=s5hsljgSXxQMZHGekpAg6OYJ9k3-DHk5NmFpvtKJ6Zs,1493
20
+ nv_ingest_client/primitives/tasks/dedup.py,sha256=qort6p3t6ZJuK_74sfOOLp3vMT3hkB5DAu3467WenyY,1719
21
+ nv_ingest_client/primitives/tasks/embed.py,sha256=I6Irmvm1Qj9oqzDGSgfykCtfz8pz9LNxiXO-t29nXv8,5916
22
+ nv_ingest_client/primitives/tasks/extract.py,sha256=yJEMGIiquhPlIofE6ERbM-U5tXk-GjZvvnnWOnU7YOA,9335
23
+ nv_ingest_client/primitives/tasks/filter.py,sha256=wjcfSBGhdEyPh2tf42NMcyKZziigm24CO9B4obpQytU,2618
24
+ nv_ingest_client/primitives/tasks/infographic_extraction.py,sha256=SyTjZQbdVA3QwM5yVm4fUzE4Gu4zm4tAfNLDZMvySV8,1537
25
+ nv_ingest_client/primitives/tasks/split.py,sha256=8UkB3EialsOTEbsOZLxzmnDIfTJzC6uvjNv21IbgAVA,2332
26
+ nv_ingest_client/primitives/tasks/store.py,sha256=nIOnCH8vw4FLCLVBJYnsS5Unc0QmuO_jEtUp7-E9FU4,4199
29
27
  nv_ingest_client/primitives/tasks/table_extraction.py,sha256=wQIC70ZNFt0DNQ1lxfvyR3Ci8hl5uAymHXTC0p6v0FY,1107
30
- nv_ingest_client/primitives/tasks/task_base.py,sha256=kk9ln-fVxtOSq9bzB_J8z3QefE9a_0uHnAuQUmyVYtg,3768
31
- nv_ingest_client/primitives/tasks/task_factory.py,sha256=Lv-_Uh5jOYaTX8Nnoc70Qsu3jXxtUmKRtAFfUIOUT6Q,2931
32
- nv_ingest_client/primitives/tasks/transform.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
+ nv_ingest_client/primitives/tasks/task_base.py,sha256=Mrx6kgePJHolYd3Im6mVISXcVgdulLst2MYG5gPov9I,1687
29
+ nv_ingest_client/primitives/tasks/task_factory.py,sha256=x8FXrhlgRYTxM0rLvsUvM8whLntXsOSWXrBZ196KO5I,2983
30
+ nv_ingest_client/primitives/tasks/udf.py,sha256=5e_WJVgocnK-z0EGCEwPO_zG8WJEhuIsOUTjPmr8REY,12833
33
31
  nv_ingest_client/primitives/tasks/vdb_upload.py,sha256=mXOyQJfQfaoN96nntzevd0sKUs60-AHi8lc1jxG3DAw,1765
34
32
  nv_ingest_client/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
33
  nv_ingest_client/util/dataset.py,sha256=b6if_hM15iUJC4rvSHS0cmGBsSuZ3W-NoKDMTulx4b8,3316
@@ -44,11 +42,11 @@ nv_ingest_client/util/file_processing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCe
44
42
  nv_ingest_client/util/file_processing/extract.py,sha256=uXEATBYZXjxdymGTNQvvzDD2eHgpuq4PdU6HsMl0Lp0,4662
45
43
  nv_ingest_client/util/vdb/__init__.py,sha256=ZmoEzeM9LzwwrVvu_DVUnjRNx-x8ahkNeIrSfSKzbAk,513
46
44
  nv_ingest_client/util/vdb/adt_vdb.py,sha256=UubzAMSfyrqqpD-OQErpBs25hC2Mw8zGZ4waenGXPOk,515
47
- nv_ingest_client/util/vdb/milvus.py,sha256=qIX-evj5wIxODi7I6w2Hu9jOupEmLQLeom-eLn4Xon8,75212
45
+ nv_ingest_client/util/vdb/milvus.py,sha256=SIUiW285lDFUXwJjes_58Y3c4pK51SHFqbn0QEqOmm4,75243
48
46
  nv_ingest_client/util/vdb/opensearch.py,sha256=I4FzF95VWCOkyzhfm-szdfK1Zd9ugUc8AxxpAdEMWGE,7538
49
- nv_ingest_client-2025.8.14.dev20250814.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
50
- nv_ingest_client-2025.8.14.dev20250814.dist-info/METADATA,sha256=YMWMcAjDd2rJuCIdCvX60ujuUxQq_Qosv_YDHDfoM44,30737
51
- nv_ingest_client-2025.8.14.dev20250814.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
52
- nv_ingest_client-2025.8.14.dev20250814.dist-info/entry_points.txt,sha256=3uQVZkTZIjO08_bjTV-g0CDF5H1nrP1zWXU9gJOweuI,137
53
- nv_ingest_client-2025.8.14.dev20250814.dist-info/top_level.txt,sha256=1eMhBFD3SiWmpXnod2LM66C1HrSLSk96ninZi5XX-cE,17
54
- nv_ingest_client-2025.8.14.dev20250814.dist-info/RECORD,,
47
+ nv_ingest_client-2025.8.16.dev20250816.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
48
+ nv_ingest_client-2025.8.16.dev20250816.dist-info/METADATA,sha256=tzzUEaZKlO1HfPXfLTXgOC_WCMN-ii2-iZr0oc84UZk,30737
49
+ nv_ingest_client-2025.8.16.dev20250816.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
50
+ nv_ingest_client-2025.8.16.dev20250816.dist-info/entry_points.txt,sha256=3uQVZkTZIjO08_bjTV-g0CDF5H1nrP1zWXU9gJOweuI,137
51
+ nv_ingest_client-2025.8.16.dev20250816.dist-info/top_level.txt,sha256=1eMhBFD3SiWmpXnod2LM66C1HrSLSk96ninZi5XX-cE,17
52
+ nv_ingest_client-2025.8.16.dev20250816.dist-info/RECORD,,
@@ -1,3 +0,0 @@
1
- # SPDX-FileCopyrightText: Copyright (c) 2024-25, NVIDIA CORPORATION & AFFILIATES.
2
- # All rights reserved.
3
- # SPDX-License-Identifier: Apache-2.0
File without changes
File without changes