lfx-nightly 0.1.12.dev31__py3-none-any.whl → 0.1.12.dev33__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 lfx-nightly might be problematic. Click here for more details.

@@ -130,6 +130,7 @@ class BaseFileComponent(Component, ABC):
130
130
  required=False,
131
131
  list=True,
132
132
  value=[],
133
+ tool_mode=True,
133
134
  ),
134
135
  HandleInput(
135
136
  name="file_path",
@@ -15,7 +15,7 @@ class AmazonBedrockComponent(LCModelComponent):
15
15
  icon = "Amazon"
16
16
  name = "AmazonBedrockModel"
17
17
  legacy = True
18
- replacement = "amazon.AmazonBedrockConverseComponent"
18
+ replacement = "amazon.AmazonBedrockConverseModel"
19
19
 
20
20
  inputs = [
21
21
  *LCModelComponent.get_base_inputs(),
@@ -21,8 +21,8 @@ from lfx.base.data.base_file import BaseFileComponent
21
21
  from lfx.base.data.utils import TEXT_FILE_TYPES, parallel_load_data, parse_text_file_to_data
22
22
  from lfx.inputs.inputs import DropdownInput, MessageTextInput, StrInput
23
23
  from lfx.io import BoolInput, FileInput, IntInput, Output
24
- from lfx.schema import DataFrame # noqa: TC001
25
24
  from lfx.schema.data import Data
25
+ from lfx.schema.dataframe import DataFrame # noqa: TC001
26
26
  from lfx.schema.message import Message
27
27
 
28
28
 
@@ -45,6 +45,7 @@ class FileComponent(BaseFileComponent):
45
45
  "dotx",
46
46
  "dotm",
47
47
  "docm",
48
+ "jpg",
48
49
  "jpeg",
49
50
  "png",
50
51
  "potx",
@@ -80,10 +81,9 @@ class FileComponent(BaseFileComponent):
80
81
  real_time_refresh=True,
81
82
  info=(
82
83
  "Enable advanced document processing and export with Docling for PDFs, images, and office documents. "
83
- "Available only for single file processing."
84
84
  "Note that advanced document processing can consume significant resources."
85
85
  ),
86
- show=False,
86
+ show=True,
87
87
  ),
88
88
  DropdownInput(
89
89
  name="pipeline",
@@ -170,11 +170,9 @@ class FileComponent(BaseFileComponent):
170
170
  """Show/hide Advanced Parser and related fields based on selection context."""
171
171
  if field_name == "path":
172
172
  paths = self._path_value(build_config)
173
- file_path = paths[0] if paths else ""
174
- file_count = len(field_value) if field_value else 0
175
173
 
176
- # Advanced mode only for single (non-tabular) file
177
- allow_advanced = file_count == 1 and not file_path.endswith((".csv", ".xlsx", ".parquet"))
174
+ # If all files can be processed by docling, do so
175
+ allow_advanced = all(not file_path.endswith((".csv", ".xlsx", ".parquet")) for file_path in paths)
178
176
  build_config["advanced_mode"]["show"] = allow_advanced
179
177
  if not allow_advanced:
180
178
  build_config["advanced_mode"]["value"] = False
@@ -187,6 +185,8 @@ class FileComponent(BaseFileComponent):
187
185
  for f in ("pipeline", "ocr_engine", "doc_key", "md_image_placeholder", "md_page_break_placeholder"):
188
186
  if f in build_config:
189
187
  build_config[f]["show"] = bool(field_value)
188
+ if f == "pipeline":
189
+ build_config[f]["advanced"] = not bool(field_value)
190
190
 
191
191
  elif field_name == "pipeline":
192
192
  if field_value == "standard":
@@ -260,6 +260,7 @@ class FileComponent(BaseFileComponent):
260
260
  ".docx",
261
261
  ".htm",
262
262
  ".html",
263
+ ".jpg",
263
264
  ".jpeg",
264
265
  ".json",
265
266
  ".md",
@@ -311,45 +312,13 @@ class FileComponent(BaseFileComponent):
311
312
  import json, sys
312
313
 
313
314
  def try_imports():
314
- # Strategy 1: latest layout
315
315
  try:
316
316
  from docling.datamodel.base_models import ConversionStatus, InputFormat # type: ignore
317
317
  from docling.document_converter import DocumentConverter # type: ignore
318
318
  from docling_core.types.doc import ImageRefMode # type: ignore
319
319
  return ConversionStatus, InputFormat, DocumentConverter, ImageRefMode, "latest"
320
- except Exception:
321
- pass
322
- # Strategy 2: alternative layout
323
- try:
324
- from docling.document_converter import DocumentConverter # type: ignore
325
- try:
326
- from docling_core.types import ConversionStatus, InputFormat # type: ignore
327
- except Exception:
328
- try:
329
- from docling.datamodel import ConversionStatus, InputFormat # type: ignore
330
- except Exception:
331
- class ConversionStatus: SUCCESS = "success"
332
- class InputFormat:
333
- PDF="pdf"; IMAGE="image"
334
- try:
335
- from docling_core.types.doc import ImageRefMode # type: ignore
336
- except Exception:
337
- class ImageRefMode:
338
- PLACEHOLDER="placeholder"; EMBEDDED="embedded"
339
- return ConversionStatus, InputFormat, DocumentConverter, ImageRefMode, "alternative"
340
- except Exception:
341
- pass
342
- # Strategy 3: basic converter only
343
- try:
344
- from docling.document_converter import DocumentConverter # type: ignore
345
- class ConversionStatus: SUCCESS = "success"
346
- class InputFormat:
347
- PDF="pdf"; IMAGE="image"
348
- class ImageRefMode:
349
- PLACEHOLDER="placeholder"; EMBEDDED="embedded"
350
- return ConversionStatus, InputFormat, DocumentConverter, ImageRefMode, "basic"
351
320
  except Exception as e:
352
- raise ImportError(f"Docling imports failed: {e}") from e
321
+ raise e
353
322
 
354
323
  def create_converter(strategy, input_format, DocumentConverter, pipeline, ocr_engine):
355
324
  # --- Standard PDF/IMAGE pipeline (your existing behavior), with optional OCR ---
@@ -384,21 +353,38 @@ class FileComponent(BaseFileComponent):
384
353
  # --- Vision-Language Model (VLM) pipeline ---
385
354
  if pipeline == "vlm":
386
355
  try:
356
+ from docling.datamodel.pipeline_options import VlmPipelineOptions
357
+ from docling.datamodel.vlm_model_specs import GRANITEDOCLING_MLX, GRANITEDOCLING_TRANSFORMERS
358
+ from docling.document_converter import PdfFormatOption
387
359
  from docling.pipeline.vlm_pipeline import VlmPipeline
388
- from docling.document_converter import PdfFormatOption # type: ignore
389
360
 
390
- vl_pipe = VlmPipelineOptions()
361
+ vl_pipe = VlmPipelineOptions(
362
+ vlm_options=GRANITEDOCLING_TRANSFORMERS,
363
+ )
364
+
365
+ if sys.platform == "darwin":
366
+ try:
367
+ import mlx_vlm
368
+ vl_pipe.vlm_options = GRANITEDOCLING_MLX
369
+ except ImportError as e:
370
+ raise e
391
371
 
392
372
  # VLM paths generally don't need OCR; keep OCR off by default here.
393
373
  fmt = {}
394
374
  if hasattr(input_format, "PDF"):
395
- fmt[getattr(input_format, "PDF")] = PdfFormatOption(pipeline_cls=VlmPipeline)
375
+ fmt[getattr(input_format, "PDF")] = PdfFormatOption(
376
+ pipeline_cls=VlmPipeline,
377
+ pipeline_options=vl_pipe
378
+ )
396
379
  if hasattr(input_format, "IMAGE"):
397
- fmt[getattr(input_format, "IMAGE")] = PdfFormatOption(pipeline_cls=VlmPipeline)
380
+ fmt[getattr(input_format, "IMAGE")] = PdfFormatOption(
381
+ pipeline_cls=VlmPipeline,
382
+ pipeline_options=vl_pipe
383
+ )
398
384
 
399
385
  return DocumentConverter(format_options=fmt)
400
- except Exception:
401
- return DocumentConverter()
386
+ except Exception as e:
387
+ raise e
402
388
 
403
389
  # --- Fallback: default converter with no special options ---
404
390
  return DocumentConverter()
@@ -540,7 +526,7 @@ class FileComponent(BaseFileComponent):
540
526
  ) -> list[BaseFileComponent.BaseFile]:
541
527
  """Process input files.
542
528
 
543
- - Single file + advanced_mode => Docling in a separate process.
529
+ - advanced_mode => Docling in a separate process.
544
530
  - Otherwise => standard parsing in current process (optionally threaded).
545
531
  """
546
532
  if not file_list:
@@ -561,10 +547,13 @@ class FileComponent(BaseFileComponent):
561
547
  raise
562
548
  return None
563
549
 
564
- # Advanced path: only for a single Docling-compatible file
565
- if len(file_list) == 1:
566
- file_path = str(file_list[0].path)
567
- if self.advanced_mode and self._is_docling_compatible(file_path):
550
+ docling_compatible = all(self._is_docling_compatible(str(f.path)) for f in file_list)
551
+
552
+ # Advanced path: Check if ALL files are compatible with Docling
553
+ if self.advanced_mode and docling_compatible:
554
+ final_return: list[BaseFileComponent.BaseFile] = []
555
+ for file in file_list:
556
+ file_path = str(file.path)
568
557
  advanced_data: Data | None = self._process_docling_in_subprocess(file_path)
569
558
 
570
559
  # --- UNNEST: expand each element in `doc` to its own Data row
@@ -580,10 +569,11 @@ class FileComponent(BaseFileComponent):
580
569
  )
581
570
  for item in doc_rows
582
571
  ]
583
- return self.rollup_data(file_list, rows)
584
-
585
- # If not structured, keep as-is (e.g., markdown export or error dict)
586
- return self.rollup_data(file_list, [advanced_data])
572
+ final_return.extend(self.rollup_data(file_list, rows))
573
+ else:
574
+ # If not structured, keep as-is (e.g., markdown export or error dict)
575
+ final_return.extend(self.rollup_data(file_list, [advanced_data]))
576
+ return final_return
587
577
 
588
578
  # Standard multi-file (or single non-advanced) path
589
579
  concurrency = 1 if not self.use_multithreading else max(1, self.concurrency_multithreading)
@@ -606,7 +596,7 @@ class FileComponent(BaseFileComponent):
606
596
  if not hasattr(result, "text"):
607
597
  if hasattr(result, "error"):
608
598
  raise ValueError(result.error[0])
609
- msg = "No content generated."
599
+ msg = "Could not extract content from the provided file(s)."
610
600
  raise ValueError(msg)
611
601
 
612
602
  return result
@@ -72,6 +72,7 @@ class SaveToFileComponent(Component):
72
72
  info="Name file will be saved as (without extension).",
73
73
  required=True,
74
74
  show=False,
75
+ tool_mode=True,
75
76
  ),
76
77
  # Format inputs (dynamic based on storage location)
77
78
  DropdownInput(
@@ -32,8 +32,8 @@ class ChatOllamaComponent(LCModelComponent):
32
32
  MessageTextInput(
33
33
  name="base_url",
34
34
  display_name="Base URL",
35
- info="Endpoint of the Ollama API.",
36
- value="",
35
+ info="Endpoint of the Ollama API. Defaults to http://localhost:11434 .",
36
+ value="http://localhost:11434",
37
37
  real_time_refresh=True,
38
38
  ),
39
39
  DropdownInput(
@@ -157,6 +157,18 @@ class ChatOllamaComponent(LCModelComponent):
157
157
  mirostat_tau = self.mirostat_tau
158
158
 
159
159
  transformed_base_url = transform_localhost_url(self.base_url)
160
+
161
+ # Check if URL contains /v1 suffix (OpenAI-compatible mode)
162
+ if transformed_base_url and transformed_base_url.rstrip("/").endswith("/v1"):
163
+ # Strip /v1 suffix and log warning
164
+ transformed_base_url = transformed_base_url.rstrip("/").removesuffix("/v1")
165
+ logger.warning(
166
+ "Detected '/v1' suffix in base URL. The Ollama component uses the native Ollama API, "
167
+ "not the OpenAI-compatible API. The '/v1' suffix has been automatically removed. "
168
+ "If you want to use the OpenAI-compatible API, please use the OpenAI component instead. "
169
+ "Learn more at https://docs.ollama.com/openai#openai-compatibility"
170
+ )
171
+
160
172
  # Mapping system settings to their corresponding values
161
173
  llm_params = {
162
174
  "base_url": transformed_base_url,
@@ -190,8 +202,8 @@ class ChatOllamaComponent(LCModelComponent):
190
202
  output = ChatOllama(**llm_params)
191
203
  except Exception as e:
192
204
  msg = (
193
- "Unable to connect to the Ollama API. ",
194
- "Please verify the base URL, ensure the relevant Ollama model is pulled, and try again.",
205
+ "Unable to connect to the Ollama API. "
206
+ "Please verify the base URL, ensure the relevant Ollama model is pulled, and try again."
195
207
  )
196
208
  raise ValueError(msg) from e
197
209
 
@@ -201,6 +213,12 @@ class ChatOllamaComponent(LCModelComponent):
201
213
  try:
202
214
  async with httpx.AsyncClient() as client:
203
215
  url = transform_localhost_url(url)
216
+ if not url:
217
+ return False
218
+ # Strip /v1 suffix if present, as Ollama API endpoints are at root level
219
+ url = url.rstrip("/").removesuffix("/v1")
220
+ if not url.endswith("/"):
221
+ url = url + "/"
204
222
  return (await client.get(urljoin(url, "api/tags"))).status_code == HTTP_STATUS_OK
205
223
  except httpx.RequestError:
206
224
  return False
@@ -224,9 +242,6 @@ class ChatOllamaComponent(LCModelComponent):
224
242
  build_config["mirostat_eta"]["value"] = 0.1
225
243
  build_config["mirostat_tau"]["value"] = 5
226
244
 
227
- if field_name in {"base_url", "model_name"} and not await self.is_valid_ollama_url(self.base_url):
228
- msg = "Ollama is not running on the provided base URL. Please start Ollama and try again."
229
- raise ValueError(msg)
230
245
  if field_name in {"model_name", "base_url", "tool_model_enabled"}:
231
246
  if await self.is_valid_ollama_url(self.base_url):
232
247
  tool_model_enabled = build_config["tool_model_enabled"].get("value", False) or self.tool_model_enabled
@@ -264,8 +279,10 @@ class ChatOllamaComponent(LCModelComponent):
264
279
  names cannot be retrieved.
265
280
  """
266
281
  try:
267
- # Normalize the base URL to avoid the repeated "/" at the end
268
- base_url = base_url_value.rstrip("/") + "/"
282
+ # Strip /v1 suffix if present, as Ollama API endpoints are at root level
283
+ base_url = base_url_value.rstrip("/").removesuffix("/v1")
284
+ if not base_url.endswith("/"):
285
+ base_url = base_url + "/"
269
286
  base_url = transform_localhost_url(base_url)
270
287
 
271
288
  # Ollama REST API to return models
lfx/inputs/inputs.py CHANGED
@@ -617,7 +617,7 @@ class MultiselectInput(BaseInputMixin, ListableInputMixin, DropDownMixin, Metada
617
617
  return v
618
618
 
619
619
 
620
- class FileInput(BaseInputMixin, ListableInputMixin, FileMixin, MetadataTraceMixin):
620
+ class FileInput(BaseInputMixin, ListableInputMixin, FileMixin, MetadataTraceMixin, ToolModeMixin):
621
621
  """Represents a file field.
622
622
 
623
623
  This class represents a file input and provides functionality for handling file values.
lfx/utils/util.py CHANGED
@@ -4,6 +4,8 @@ import inspect
4
4
  import json
5
5
  import os
6
6
  import re
7
+ import socket
8
+ import struct
7
9
  from functools import wraps
8
10
  from pathlib import Path
9
11
  from typing import Any
@@ -55,8 +57,6 @@ def get_container_host() -> str | None:
55
57
  Returns:
56
58
  The hostname or IP to use, or None if not in a container.
57
59
  """
58
- import socket
59
-
60
60
  # Check if we're in a container first
61
61
  container_type = detect_container_environment()
62
62
  if not container_type:
@@ -99,16 +99,17 @@ def get_container_host() -> str | None:
99
99
  # Fallback: try to get gateway IP from routing table (Linux containers)
100
100
  try:
101
101
  with Path("/proc/net/route").open() as f:
102
+ # Skip header
103
+ next(f)
102
104
  for line in f:
103
105
  fields = line.strip().split()
104
106
  min_field_count = 3 # Minimum fields needed: interface, destination, gateway
105
107
  if len(fields) >= min_field_count and fields[1] == "00000000": # Default route
106
108
  # Gateway is in hex format (little-endian)
107
109
  gateway_hex = fields[2]
108
- # Convert hex to IP address
109
- # The hex is in little-endian format, so we read it backwards in pairs
110
- octets = [gateway_hex[i : i + 2] for i in range(0, 8, 2)]
111
- return ".".join(str(int(octet, 16)) for octet in reversed(octets))
110
+ # Convert little-endian hex to dotted IPv4
111
+ gw_int = int(gateway_hex, 16)
112
+ return socket.inet_ntoa(struct.pack("<L", gw_int))
112
113
  except (FileNotFoundError, PermissionError, IndexError, ValueError):
113
114
  pass
114
115
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lfx-nightly
3
- Version: 0.1.12.dev31
3
+ Version: 0.1.12.dev33
4
4
  Summary: Langflow Executor - A lightweight CLI tool for executing and serving Langflow AI flows
5
5
  Author-email: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
6
6
  Requires-Python: <3.14,>=3.10
@@ -28,7 +28,7 @@ lfx/base/compressors/model.py,sha256=-FFBAPAy9bAgvklIo7x_uwShZR5NoMHakF6f_hNnLHg
28
28
  lfx/base/curl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
29
  lfx/base/curl/parse.py,sha256=Yw6mMbGg7e-ffrBItEUJeTiljneCXlNyt5afzEP9eUI,6094
30
30
  lfx/base/data/__init__.py,sha256=lQsYYMyAg_jA9ZF7oc-LNZsRE2uMGT6g16WzsUByHqs,81
31
- lfx/base/data/base_file.py,sha256=TUD84Jj0tYr0DEz_D7oK9FUBkBCAIHitxryX9nXwgus,27571
31
+ lfx/base/data/base_file.py,sha256=ZYAEThTcRI7Oy4aEZPMYCC0UDljXQSDVypdPRpDJEAs,27599
32
32
  lfx/base/data/docling_utils.py,sha256=gVDxOZghSJEo5n-UNkVGBQYqkvfNqkNkltBhAnoaJd4,13048
33
33
  lfx/base/data/utils.py,sha256=dGqEO4zE5s_V2Cs4j0EEeyLjYLX6Zex-EGzIOznK76o,5960
34
34
  lfx/base/document_transformers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -118,7 +118,7 @@ lfx/components/aiml/aiml_embeddings.py,sha256=2uNwORuj55mxn2SfLbh7oAIfjuXwHbsnOq
118
118
  lfx/components/amazon/__init__.py,sha256=QRsw-7ytuqZWhNPmlslCQEcpNsAw6dX5FV_8ihUdlPQ,1338
119
119
  lfx/components/amazon/amazon_bedrock_converse.py,sha256=WPo_5Wsj-pyltXcBOp6xPmtwVzRcJ5JOz5W013Ev9EE,8190
120
120
  lfx/components/amazon/amazon_bedrock_embedding.py,sha256=cNA5_3nwkegWS3BY75IfjOwpo-g8dpg-EgtQJSgVXfg,4261
121
- lfx/components/amazon/amazon_bedrock_model.py,sha256=ZEccsdrn2bXPSnR8bx5b1H89ZI-tCGitgysKy1oJUfE,5117
121
+ lfx/components/amazon/amazon_bedrock_model.py,sha256=kiCTqDG2Krbe0i5YBG9UODxwNTB9ePZwLfgNMR91UwQ,5113
122
122
  lfx/components/amazon/s3_bucket_uploader.py,sha256=bkui2vw8ibgg4dSUYZ7yAEbVOjgmB8oOYqH-3ZvTlBQ,7688
123
123
  lfx/components/anthropic/__init__.py,sha256=SGllKMRoX3KQkDpdzsLUYqbfTbhFu9qjpM6bQHL2syQ,965
124
124
  lfx/components/anthropic/anthropic.py,sha256=fIlMWma6rsfQ499vkkLSWFZqwKn5ifvhFQnC_quHkEw,7289
@@ -205,12 +205,12 @@ lfx/components/data/__init__.py,sha256=6e9qEWQ639owIAtZLF01mW2hVMDbg9-Rp6IWpgypz
205
205
  lfx/components/data/api_request.py,sha256=gKVtJhEzh1PdawZqQtxBwi0vU3kQ_f25jCd2tj-EeU0,20211
206
206
  lfx/components/data/csv_to_data.py,sha256=NsNe8rZdkqscnWPynbbd3-svrRj3EEWNaJszjW9b1_k,3345
207
207
  lfx/components/data/directory.py,sha256=iqINxxy5w60l753zraB-EDpYny8FR6vaa-AgVkdYsLk,3936
208
- lfx/components/data/file.py,sha256=pPlmaEHElAeUfSs60G0cl-goynWg9I3uo7IPeN63UEc,26073
208
+ lfx/components/data/file.py,sha256=havBCUEwMrv-AjSntOMMB8pQnbq0k6V9VMFVz-Kfors,25307
209
209
  lfx/components/data/json_to_data.py,sha256=p6MPyUgDvY9aKTL2_2cUGmkeK7baS-G9rkCvzHAnhw8,3571
210
210
  lfx/components/data/mock_data.py,sha256=0h3OezKb8P5x6XWGzZJ8JmqmB9eK-bhpfLm0GO21MNY,16039
211
211
  lfx/components/data/news_search.py,sha256=rN721OzeLaKessjCsTj_GD4MAzpNJRhOrhFpX00rAqU,6234
212
212
  lfx/components/data/rss.py,sha256=J98zRNGbAh-CIdGydYBaI1JhKDoMPDhLily01LZPhGI,2540
213
- lfx/components/data/save_file.py,sha256=1ZPSQROFRjt1SivSuFr0jtnAMR1Bqf9DJLokYzbGyY8,25190
213
+ lfx/components/data/save_file.py,sha256=3yoGA_6PBTLOhzb7aqJzvdUqAUSwIZi2ja3gLTYo5Nc,25218
214
214
  lfx/components/data/sql_executor.py,sha256=sN1lWM65O_pCfZxNAzgjtZmcTPGBLqMud2_7nFv-kpM,3726
215
215
  lfx/components/data/url.py,sha256=zbfTeTBukw3F_mRBMIJrQYF94psEIBuS8dFjcQku5SE,11001
216
216
  lfx/components/data/web_search.py,sha256=48SCp-2I_Qckp5tmTVC9JBw2C-MhBDF14MJLaGjLpyQ,12758
@@ -408,7 +408,7 @@ lfx/components/nvidia/system_assist.py,sha256=G8cgsLQxRBBnUt49_Uzxt7cdTNplVAzUlD
408
408
  lfx/components/olivya/__init__.py,sha256=ilZR88huL3vnQHO27g4jsUkyIYSgN7RPOq8Corbi6xA,67
409
409
  lfx/components/olivya/olivya.py,sha256=PDmsn8dBdSwAZUM2QGTyTwxGWsINCKaYR4yTjE-4lIQ,4192
410
410
  lfx/components/ollama/__init__.py,sha256=fau8QcWs_eHO2MmtQ4coiKj9CzFA9X4hqFf541ekgXk,1068
411
- lfx/components/ollama/ollama.py,sha256=eWSRR7lypH82Eb6px2JhPlJCfzDz33MCqgFoOXFbofE,13012
411
+ lfx/components/ollama/ollama.py,sha256=KSaBAdgyh1xmkIvVcBHRVwFwzBtR7wPkH4j3dlJnPC4,13946
412
412
  lfx/components/ollama/ollama_embeddings.py,sha256=nvg-JQvue6j7tcrbbPeq1U_-LUj1MKawWbXxnnvJlWM,3976
413
413
  lfx/components/openai/__init__.py,sha256=G4Fgw4pmmDohdIOmzaeSCGijzKjyqFXNJPLwlcUDZ3w,1113
414
414
  lfx/components/openai/openai.py,sha256=imWO1tTJ0tTLqax1v5bNBPCRINTj2f2wN8j5G-a07GI,4505
@@ -609,7 +609,7 @@ lfx/helpers/flow.py,sha256=F_2sFOZaylgAvzp4zr-8JYFtI0S4FRZeONvAGmw3SwQ,5769
609
609
  lfx/inputs/__init__.py,sha256=NeCBGqtJN7KGPpMmt6c4-840X9uafzYZGwXzkJ4bGqw,1213
610
610
  lfx/inputs/constants.py,sha256=vG60oUv1xy5vrnZtU65jBCzb6oaOuiRDq1ucl_9bz70,47
611
611
  lfx/inputs/input_mixin.py,sha256=r23bPxWb1Fo81kFU02a2KUGfPLNUhE6K9q1Zw4LH4Qw,10836
612
- lfx/inputs/inputs.py,sha256=aoFKkY2jcjEw5U7WssIp31tYTOB5uOfYcPcu16ESdr0,26205
612
+ lfx/inputs/inputs.py,sha256=y-SwcZhlEuVgLsOa2_x7wraUCaoZ3EV7_jrON9yuqPw,26220
613
613
  lfx/inputs/validators.py,sha256=i_PyQHQUmNpeS-_jRJNNsP3WlTPMkCJk2iFmFt3_ijw,505
614
614
  lfx/interface/__init__.py,sha256=hlivcb8kMhU_V8VeXClNfz5fRyF-u5PZZMXkgu0U5a0,211
615
615
  lfx/interface/components.py,sha256=ud7F5wPoXkQDcqbDbf71uxHT5Bd6uNZVNzB3LTT8vLc,19896
@@ -716,10 +716,10 @@ lfx/utils/image.py,sha256=wMWBEI1gW3cFlQcio3mWgfHBaOw1uoAnqNmEacE_8xo,2133
716
716
  lfx/utils/lazy_load.py,sha256=UDtXi8N7NT9r-FRGxsLUfDtGU_X8yqt-RQqgpc9TqAw,394
717
717
  lfx/utils/request_utils.py,sha256=A6vmwpr7f3ZUxHg6Sz2-BdUUsyAwg84-7N_DNoPC8_Q,518
718
718
  lfx/utils/schemas.py,sha256=NbOtVQBrn4d0BAu-0H_eCTZI2CXkKZlRY37XCSmuJwc,3865
719
- lfx/utils/util.py,sha256=DSMcKoWDxrytAe0-36jwqZ9ac_rT8NP09E8JPDHtal0,20761
719
+ lfx/utils/util.py,sha256=Ww85wbr1-vjh2pXVtmTqoUVr6MXAW8S7eDx_Ys6HpE8,20696
720
720
  lfx/utils/util_strings.py,sha256=nU_IcdphNaj6bAPbjeL-c1cInQPfTBit8mp5Y57lwQk,1686
721
721
  lfx/utils/version.py,sha256=cHpbO0OJD2JQAvVaTH_6ibYeFbHJV0QDHs_YXXZ-bT8,671
722
- lfx_nightly-0.1.12.dev31.dist-info/METADATA,sha256=8luCG-uZgW6j456bJIhuC0ObvFOsU3dL9OwJ9uetLhw,8290
723
- lfx_nightly-0.1.12.dev31.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
724
- lfx_nightly-0.1.12.dev31.dist-info/entry_points.txt,sha256=1724p3RHDQRT2CKx_QRzEIa7sFuSVO0Ux70YfXfoMT4,42
725
- lfx_nightly-0.1.12.dev31.dist-info/RECORD,,
722
+ lfx_nightly-0.1.12.dev33.dist-info/METADATA,sha256=VaDj2VJuP8XeX3yfpiiLcY97pMlZTeEt-AizBHHGSss,8290
723
+ lfx_nightly-0.1.12.dev33.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
724
+ lfx_nightly-0.1.12.dev33.dist-info/entry_points.txt,sha256=1724p3RHDQRT2CKx_QRzEIa7sFuSVO0Ux70YfXfoMT4,42
725
+ lfx_nightly-0.1.12.dev33.dist-info/RECORD,,