Flowfile 0.3.4.1__py3-none-any.whl → 0.3.5__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 Flowfile might be problematic. Click here for more details.
- flowfile/api.py +36 -15
- {flowfile-0.3.4.1.dist-info → flowfile-0.3.5.dist-info}/METADATA +1 -1
- {flowfile-0.3.4.1.dist-info → flowfile-0.3.5.dist-info}/RECORD +7 -7
- flowfile_core/flowfile/code_generator/code_generator.py +1 -1
- {flowfile-0.3.4.1.dist-info → flowfile-0.3.5.dist-info}/LICENSE +0 -0
- {flowfile-0.3.4.1.dist-info → flowfile-0.3.5.dist-info}/WHEEL +0 -0
- {flowfile-0.3.4.1.dist-info → flowfile-0.3.5.dist-info}/entry_points.txt +0 -0
flowfile/api.py
CHANGED
|
@@ -147,9 +147,6 @@ def build_server_command(module_name: str) -> List[str]:
|
|
|
147
147
|
Build the appropriate command to start the server based on environment detection.
|
|
148
148
|
Tries Poetry first if in a Poetry environment, falls back to direct module execution.
|
|
149
149
|
"""
|
|
150
|
-
command: List[str] = []
|
|
151
|
-
|
|
152
|
-
# Case 1: Check if we're in a Poetry environment
|
|
153
150
|
if is_poetry_environment():
|
|
154
151
|
logger.info("Poetry environment detected.")
|
|
155
152
|
if is_command_available(POETRY_PATH):
|
|
@@ -166,17 +163,42 @@ def build_server_command(module_name: str) -> List[str]:
|
|
|
166
163
|
else:
|
|
167
164
|
logger.warning(f"Poetry command not found at '{POETRY_PATH}'. Falling back to Python module.")
|
|
168
165
|
|
|
169
|
-
# Case 2:
|
|
170
|
-
logger.info(
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
"
|
|
177
|
-
"
|
|
178
|
-
|
|
166
|
+
# Case 2: Fallback to direct script execution
|
|
167
|
+
logger.info("Falling back to direct script execution.")
|
|
168
|
+
python_parent_dir = Path(sys.executable).parent
|
|
169
|
+
command: List[str]
|
|
170
|
+
scripts_dir = Path(sys.executable).parent
|
|
171
|
+
|
|
172
|
+
if platform.system() == "Windows":
|
|
173
|
+
exe_path = scripts_dir / f"{module_name}.exe"
|
|
174
|
+
script_py_path = scripts_dir / f"{module_name}-script.py"
|
|
175
|
+
plain_script_path = scripts_dir / module_name
|
|
176
|
+
|
|
177
|
+
if exe_path.exists():
|
|
178
|
+
logger.info(f"Using .exe wrapper: {exe_path}")
|
|
179
|
+
command = [str(exe_path), "run", "ui", "--no-browser"]
|
|
180
|
+
elif script_py_path.exists():
|
|
181
|
+
logger.info(f"Using '-script.py' with interpreter: {script_py_path}")
|
|
182
|
+
command = [sys.executable, str(script_py_path), "run", "ui", "--no-browser"]
|
|
183
|
+
elif plain_script_path.exists():
|
|
184
|
+
logger.info(f"Using plain script with interpreter: {plain_script_path}")
|
|
185
|
+
command = [sys.executable, str(plain_script_path), "run", "ui", "--no-browser"]
|
|
186
|
+
else:
|
|
187
|
+
raise FileNotFoundError(
|
|
188
|
+
f"Could not find an executable script for '{module_name}' in '{scripts_dir}'. "
|
|
189
|
+
f"Checked for '{exe_path.name}', '{script_py_path.name}', and '{plain_script_path.name}'. "
|
|
190
|
+
"Ensure the package is installed correctly."
|
|
191
|
+
)
|
|
192
|
+
else:
|
|
193
|
+
# On Unix-like systems, the script in 'bin' is directly executable
|
|
194
|
+
script_path = python_parent_dir / "bin" / module_name
|
|
195
|
+
if not script_path.exists():
|
|
196
|
+
script_path = python_parent_dir / module_name # Fallback for different venv structures
|
|
197
|
+
|
|
198
|
+
logger.info(f"Using direct script execution path: {script_path}")
|
|
199
|
+
command = [str(script_path), "run", "ui", "--no-browser"]
|
|
179
200
|
|
|
201
|
+
logger.info(f"Built server command: {command}")
|
|
180
202
|
return command
|
|
181
203
|
|
|
182
204
|
|
|
@@ -210,7 +232,6 @@ def start_flowfile_server_process(module_name: str = DEFAULT_MODULE_NAME) -> Tup
|
|
|
210
232
|
# Build command automatically based on environment detection
|
|
211
233
|
command = build_server_command(module_name)
|
|
212
234
|
logger.info(f"Starting server with command: {' '.join(command)}")
|
|
213
|
-
|
|
214
235
|
try:
|
|
215
236
|
# Windows-specific subprocess creation
|
|
216
237
|
if platform.system() == "Windows":
|
|
@@ -244,7 +265,7 @@ def start_flowfile_server_process(module_name: str = DEFAULT_MODULE_NAME) -> Tup
|
|
|
244
265
|
time.sleep(1)
|
|
245
266
|
else:
|
|
246
267
|
logger.error("Failed to start server: API did not become responsive within 60 seconds. "
|
|
247
|
-
"Try again or
|
|
268
|
+
"Try again or start service by running\n"
|
|
248
269
|
"flowfile run ui")
|
|
249
270
|
if _server_process and _server_process.stderr:
|
|
250
271
|
try:
|
|
@@ -3,7 +3,7 @@ build_backends/main.py,sha256=hLmfqTeHLSTiwwZ5mUuoLQgtO40Igvl1_4NbnvzWSgI,9912
|
|
|
3
3
|
build_backends/main_prd.py,sha256=JR2tYCMWM5ThooQjv5pw6nwVKMQjgsiHgKMhYn9NXWI,6927
|
|
4
4
|
flowfile/__init__.py,sha256=XitnMG5qDMFiS3Y0iQ-yj1ODlNa59uT2y4IJCcDn0tU,2449
|
|
5
5
|
flowfile/__main__.py,sha256=cpWeAL9Xw2qHfm52ZCAQzQhjoOAmVFSXPL-8MrnWAxA,2540
|
|
6
|
-
flowfile/api.py,sha256=
|
|
6
|
+
flowfile/api.py,sha256=PqlYPJqXqq4z0jW4w1r-rhrdzEX5WfwcMOZ87osOw4Q,18634
|
|
7
7
|
flowfile/web/__init__.py,sha256=mFAAdo3rQGi3b_fu5FJH69JR0eHWUg44AHW03MuRChQ,5756
|
|
8
8
|
flowfile/web/static/assets/AirbyteReader-1ac35765.css,sha256=GsNXZRBzBqcgSHWYHFfpQjYnQ1G90hCaWgThLCG80jI,6260
|
|
9
9
|
flowfile/web/static/assets/AirbyteReader-e08044e5.js,sha256=aqR9n686reSpNrLTYPP4LzzJvopBvE-pAozL24X2V9Q,38789
|
|
@@ -160,7 +160,7 @@ flowfile_core/flowfile/analytics/graphic_walker.py,sha256=snYNQUTPZLhtz1egv_rSmo
|
|
|
160
160
|
flowfile_core/flowfile/analytics/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
161
161
|
flowfile_core/flowfile/analytics/utils.py,sha256=x-FS1ZwQrHLzAfKm1THiQEKeCm_w0vO5dyWgyyIPjLY,487
|
|
162
162
|
flowfile_core/flowfile/code_generator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
163
|
-
flowfile_core/flowfile/code_generator/code_generator.py,sha256=
|
|
163
|
+
flowfile_core/flowfile/code_generator/code_generator.py,sha256=gzzgh8moVBmCqzCaxczVVjIkXASWIfLqcwZnRyLie1w,31015
|
|
164
164
|
flowfile_core/flowfile/connection_manager/__init__.py,sha256=wLAGuQBA0lgN1tZleYZ32eFeY4UODG46RrclWoEc7hM,134
|
|
165
165
|
flowfile_core/flowfile/connection_manager/_connection_manager.py,sha256=W9FWRAFUT1c2eHa2QhFpKNWA-Kps63o2vcGAH1zXSeo,2612
|
|
166
166
|
flowfile_core/flowfile/connection_manager/models.py,sha256=o_2FK7aNdjMHfiGX7hIUz5uslfLar8KIcI_760WprzM,227
|
|
@@ -306,8 +306,8 @@ test_utils/__init__.py,sha256=8WwOgIuKw6YtOc1GWR1DqIhQ8BhlLWqsMyQJSpxnzKk,66
|
|
|
306
306
|
test_utils/postgres/__init__.py,sha256=y3V_6a9N1Pvm5NIBaA8CFf3i4mvPVY-H1teHA-rg0VU,33
|
|
307
307
|
test_utils/postgres/commands.py,sha256=4oA8EHW3EqwGkG02HSqEGbXEBGM01sUW5FsyHm86W4k,4347
|
|
308
308
|
test_utils/postgres/fixtures.py,sha256=kR8UBjQr3pgbe-xM-V8x8VseTHCPv0EmDEzPHl5Qc8Y,13507
|
|
309
|
-
flowfile-0.3.
|
|
310
|
-
flowfile-0.3.
|
|
311
|
-
flowfile-0.3.
|
|
312
|
-
flowfile-0.3.
|
|
313
|
-
flowfile-0.3.
|
|
309
|
+
flowfile-0.3.5.dist-info/LICENSE,sha256=pCfLAA27jMHReYk_wGiirZxWRRXz_Bm7PVInRCa9P5g,1075
|
|
310
|
+
flowfile-0.3.5.dist-info/METADATA,sha256=r1ddYzejKRpdJghcfhVUffB4b2KHuk9Z5rNV8c2aJT4,8595
|
|
311
|
+
flowfile-0.3.5.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
312
|
+
flowfile-0.3.5.dist-info/entry_points.txt,sha256=Q3CEYNk33UaWlA9D-8yXYH0FwjKBsrtNuzzzHxhwnNI,333
|
|
313
|
+
flowfile-0.3.5.dist-info/RECORD,,
|
|
@@ -509,7 +509,7 @@ class FlowGraphToPolarsConverter:
|
|
|
509
509
|
args = ", ".join(arg_list)
|
|
510
510
|
|
|
511
511
|
# Check if the code is just an expression (no assignment)
|
|
512
|
-
is_expression =
|
|
512
|
+
is_expression = "output_df" not in code
|
|
513
513
|
|
|
514
514
|
# Wrap the code in a function
|
|
515
515
|
self._add_code(f"# Custom Polars code")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|