zebflow 0.6.1__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.
zebflow/__init__.py ADDED
@@ -0,0 +1,3 @@
1
+ """Zebflow — reactive web automation platform."""
2
+
3
+ __version__ = "0.6.1"
zebflow/__main__.py ADDED
@@ -0,0 +1,89 @@
1
+ """CLI entry point for zebflow. Downloads the binary on first run, then executes it."""
2
+
3
+ import os
4
+ import platform
5
+ import subprocess
6
+ import sys
7
+ import tarfile
8
+ import tempfile
9
+ import urllib.request
10
+ import zipfile
11
+ from pathlib import Path
12
+
13
+ REPO = "zebflow/zebflow"
14
+ VERSION = os.environ.get("ZEBFLOW_VERSION", f"v{__import__('zebflow').__version__}")
15
+ BIN_DIR = Path(__file__).parent / "bin"
16
+
17
+
18
+ def get_platform():
19
+ system = platform.system().lower()
20
+ machine = platform.machine().lower()
21
+
22
+ if machine in ("x86_64", "amd64"):
23
+ arch = "amd64"
24
+ elif machine in ("aarch64", "arm64"):
25
+ arch = "arm64"
26
+ else:
27
+ print(f"[zebflow] Unsupported architecture: {machine}", file=sys.stderr)
28
+ sys.exit(1)
29
+
30
+ platform_map = {
31
+ ("linux", "amd64"): ("zebflow-linux-amd64.tar.gz", "zebflow"),
32
+ ("linux", "arm64"): ("zebflow-linux-arm64.tar.gz", "zebflow"),
33
+ ("darwin", "arm64"): ("zebflow-darwin-arm64.tar.gz", "zebflow"),
34
+ ("windows", "amd64"): ("zebflow-windows-amd64.zip", "zebflow.exe"),
35
+ }
36
+
37
+ key = (system, arch)
38
+ entry = platform_map.get(key)
39
+ if not entry:
40
+ print(f"[zebflow] Unsupported platform: {system}-{arch}", file=sys.stderr)
41
+ print(f"[zebflow] Supported: {', '.join(f'{s}-{a}' for s, a in platform_map)}", file=sys.stderr)
42
+ sys.exit(1)
43
+
44
+ return entry
45
+
46
+
47
+ def download_binary():
48
+ asset, binary_name = get_platform()
49
+ binary_path = BIN_DIR / binary_name
50
+
51
+ if binary_path.exists():
52
+ return binary_path
53
+
54
+ url = f"https://github.com/{REPO}/releases/download/{VERSION}/{asset}"
55
+ print(f"[zebflow] Downloading {asset} ({VERSION})...")
56
+
57
+ BIN_DIR.mkdir(parents=True, exist_ok=True)
58
+
59
+ with tempfile.NamedTemporaryFile(delete=False, suffix=asset) as tmp:
60
+ tmp_path = Path(tmp.name)
61
+ urllib.request.urlretrieve(url, tmp_path)
62
+
63
+ try:
64
+ if asset.endswith(".tar.gz"):
65
+ with tarfile.open(tmp_path, "r:gz") as tar:
66
+ tar.extractall(path=BIN_DIR)
67
+ elif asset.endswith(".zip"):
68
+ with zipfile.ZipFile(tmp_path, "r") as z:
69
+ z.extractall(path=BIN_DIR)
70
+ finally:
71
+ tmp_path.unlink(missing_ok=True)
72
+
73
+ if not binary_path.exists():
74
+ print(f"[zebflow] Binary not found after extraction: {binary_path}", file=sys.stderr)
75
+ sys.exit(1)
76
+
77
+ binary_path.chmod(0o755)
78
+ print(f"[zebflow] Installed to {binary_path}")
79
+ return binary_path
80
+
81
+
82
+ def main():
83
+ binary_path = download_binary()
84
+ result = subprocess.run([str(binary_path)] + sys.argv[1:])
85
+ sys.exit(result.returncode)
86
+
87
+
88
+ if __name__ == "__main__":
89
+ main()
@@ -0,0 +1,56 @@
1
+ Metadata-Version: 2.4
2
+ Name: zebflow
3
+ Version: 0.6.1
4
+ Summary: Reactive web automation platform — pipelines, templates, and real-time collaboration in a single binary.
5
+ Project-URL: Homepage, https://github.com/zebflow/zebflow
6
+ Project-URL: Repository, https://github.com/zebflow/zebflow
7
+ Project-URL: Issues, https://github.com/zebflow/zebflow/issues
8
+ Author-email: Zebflow <hello@zebflow.com>
9
+ License-Expression: MIT
10
+ Keywords: automation,mcp,pipeline,reactive,server,wasm,web,zebflow
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Operating System :: MacOS
16
+ Classifier: Operating System :: Microsoft :: Windows
17
+ Classifier: Operating System :: POSIX :: Linux
18
+ Classifier: Programming Language :: Rust
19
+ Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
20
+ Classifier: Topic :: Software Development :: Build Tools
21
+ Requires-Python: >=3.8
22
+ Description-Content-Type: text/markdown
23
+
24
+ # zebflow
25
+
26
+ Reactive web automation platform — pipelines, templates, and real-time collaboration in a single binary.
27
+
28
+ ## Install
29
+
30
+ ```bash
31
+ pip install zebflow
32
+ ```
33
+
34
+ ## Usage
35
+
36
+ ```bash
37
+ zebflow # start server on port 10610
38
+ zebflow --help # show options
39
+ ```
40
+
41
+ ## What is Zebflow?
42
+
43
+ Zebflow is a full-stack reactive web platform that combines:
44
+
45
+ - **Pipeline engine** — graph-based workflow orchestration with 40+ built-in nodes
46
+ - **Reactive Web Engine** — TSX templates with server-side rendering and client hydration
47
+ - **Real-time** — WebSocket rooms with state sync
48
+ - **MCP** — Model Context Protocol for AI agent integration
49
+ - **Single binary** — everything embedded, zero runtime dependencies
50
+
51
+ ## Links
52
+
53
+ - [Official Site](https://zebflow.com)
54
+ - [GitHub](https://github.com/zebflow/zebflow)
55
+ - [Documentation](https://github.com/zebflow/zebflow/tree/main/docs)
56
+ - [Docker Hub](https://hub.docker.com/r/zebflow/zebflow)
@@ -0,0 +1,6 @@
1
+ zebflow/__init__.py,sha256=NlzcUq0DlTVmP_uENFK97FIIZq4FBWItPHPCwMRYPW0,75
2
+ zebflow/__main__.py,sha256=UCn08zRTyNluFjm8djq786Eb-Opth8HgboaraaX9vvE,2629
3
+ zebflow-0.6.1.dist-info/METADATA,sha256=S-cM09JstYKKplsAuipgLDvjyZ6T6QxwrPfQKTPeSf8,1953
4
+ zebflow-0.6.1.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
5
+ zebflow-0.6.1.dist-info/entry_points.txt,sha256=L489NpkEpDNj-7xYYeqE-itL1alzIK1yLz_pCcaGfiA,41
6
+ zebflow-0.6.1.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.29.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ zebflow = zebflow:main