splime 0.4.3__tar.gz → 0.4.5__tar.gz
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.
- {splime-0.4.3/src/splime.egg-info → splime-0.4.5}/PKG-INFO +36 -5
- {splime-0.4.3 → splime-0.4.5}/README.md +35 -4
- {splime-0.4.3 → splime-0.4.5}/pyproject.toml +1 -1
- {splime-0.4.3 → splime-0.4.5}/src/spl/_client.py +373 -124
- splime-0.4.5/src/spl/_http.py +289 -0
- splime-0.4.5/src/spl/_owner_ref.py +51 -0
- splime-0.4.5/src/spl/_process.py +128 -0
- splime-0.4.5/src/spl/_timeout.py +49 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/_views.py +116 -18
- {splime-0.4.3 → splime-0.4.5}/src/spl/core/_common.py +749 -116
- splime-0.4.5/src/spl/core/_graph.py +36 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/core/adapter_compat.py +313 -30
- {splime-0.4.3 → splime-0.4.5}/src/spl/core/entities/adapter.py +158 -2
- {splime-0.4.3 → splime-0.4.5}/src/spl/core/entities/function.py +78 -11
- {splime-0.4.3 → splime-0.4.5}/src/spl/core/entities/node_remote.py +63 -11
- splime-0.4.5/src/spl/core/entities/pipeline.py +1038 -0
- splime-0.4.5/src/spl/core/entities/scalar.py +86 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/core/fingerprint.py +7 -16
- splime-0.4.5/src/spl/core/json_contract.py +280 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/core/manifest.py +71 -42
- {splime-0.4.3 → splime-0.4.5}/src/spl/core/node_runtime.py +100 -29
- splime-0.4.5/src/spl/core/redaction.py +303 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/core/resume.py +108 -0
- splime-0.4.5/src/spl/daemon/artifact_access.py +249 -0
- splime-0.4.5/src/spl/daemon/callback_capability.py +276 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/canonical.py +20 -10
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/cli.py +71 -3
- splime-0.4.5/src/spl/daemon/docker_pool.py +1331 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/environment.py +2 -5
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/environment_base.py +21 -11
- splime-0.4.5/src/spl/daemon/heartbeat_service.py +371 -0
- splime-0.4.5/src/spl/daemon/home_lock.py +520 -0
- splime-0.4.5/src/spl/daemon/metadata.py +1297 -0
- splime-0.4.5/src/spl/daemon/remote_client.py +813 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/repositories/env.py +2 -5
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/repositories/library.py +75 -34
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/repositories/object.py +104 -11
- splime-0.4.5/src/spl/daemon/repositories/run.py +1059 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/repositories/server_connection.py +7 -2
- splime-0.4.5/src/spl/daemon/repositories/sync_event.py +512 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/routes/_helpers.py +107 -8
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/routes/artifacts.py +18 -7
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/routes/diagnostics.py +9 -10
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/routes/envs.py +1 -1
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/routes/libraries.py +39 -13
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/routes/objects.py +16 -27
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/routes/remote.py +21 -7
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/routes/runs.py +20 -9
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/routes/server_connections.py +44 -13
- splime-0.4.5/src/spl/daemon/run_lifecycle.py +70 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/runtime_backend.py +38 -3
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/runtime_config.py +8 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/runtime_dependencies.py +88 -5
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/secret_store.py +3 -1
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/server.py +2130 -311
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/server_connection.py +25 -1
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/services/sync.py +11 -1
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/signature.py +71 -52
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/spl_free_runner.py +85 -6
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/storage_base.py +280 -3
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/store.py +105 -12
- splime-0.4.5/src/spl/daemon/telemetry.py +916 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/worker.py +127 -51
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/worker_runtime_marker.py +1 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon_client.py +100 -17
- {splime-0.4.3 → splime-0.4.5}/src/spl/pipeline_widget.py +7 -10
- {splime-0.4.3 → splime-0.4.5}/src/spl/server_client.py +19 -9
- {splime-0.4.3 → splime-0.4.5/src/splime.egg-info}/PKG-INFO +36 -5
- {splime-0.4.3 → splime-0.4.5}/src/splime.egg-info/SOURCES.txt +11 -0
- splime-0.4.3/src/spl/_http.py +0 -30
- splime-0.4.3/src/spl/core/entities/pipeline.py +0 -526
- splime-0.4.3/src/spl/core/entities/scalar.py +0 -48
- splime-0.4.3/src/spl/daemon/docker_pool.py +0 -569
- splime-0.4.3/src/spl/daemon/heartbeat_service.py +0 -150
- splime-0.4.3/src/spl/daemon/metadata.py +0 -401
- splime-0.4.3/src/spl/daemon/remote_client.py +0 -519
- splime-0.4.3/src/spl/daemon/repositories/run.py +0 -584
- splime-0.4.3/src/spl/daemon/repositories/sync_event.py +0 -170
- {splime-0.4.3 → splime-0.4.5}/LICENSE +0 -0
- {splime-0.4.3 → splime-0.4.5}/NOTICE +0 -0
- {splime-0.4.3 → splime-0.4.5}/setup.cfg +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/__init__.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/_deprecate.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/client.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/core/__init__.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/core/common.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/core/entities/__init__.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/core/entities/artifact.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/core/entities/control.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/core/entities/distribution.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/core/entities/local_function.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/core/entities/misc.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/core/entities/module.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/core/entities/node.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/core/entities/node_function.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/core/ir/__init__.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/core/ir/common.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/core/ir/parse.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/core/ir/unparse.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/core/ir/utils.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/__init__.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/__main__.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/client.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/docker_environment.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/doctor.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/interpreter_visibility.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/repositories/__init__.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/routes/__init__.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/run_progress.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/services/__init__.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/daemon/spl_free_generator.py +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/spl/py.typed +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/splime.egg-info/dependency_links.txt +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/splime.egg-info/entry_points.txt +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/splime.egg-info/requires.txt +0 -0
- {splime-0.4.3 → splime-0.4.5}/src/splime.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: splime
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.5
|
|
4
4
|
Summary: Reuse Python functions across projects without rewriting or redeploying them.
|
|
5
5
|
Author-email: Yastrebov Kirill <yastrebovks@gmail.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -76,11 +76,14 @@ redeploying.
|
|
|
76
76
|
## Requirements
|
|
77
77
|
|
|
78
78
|
- Python **3.13+**
|
|
79
|
+
- POSIX for local daemon environment builds and timeout-safe worker execution
|
|
80
|
+
in 0.4.5 (Windows Job Object support is not yet implemented; Windows
|
|
81
|
+
client-only use is unaffected)
|
|
79
82
|
|
|
80
83
|
## Install
|
|
81
84
|
|
|
82
85
|
```bash
|
|
83
|
-
pip install splime
|
|
86
|
+
python3.13 -m pip install "splime==0.4.5"
|
|
84
87
|
```
|
|
85
88
|
|
|
86
89
|
The distribution is named `splime`; the Python import package is `spl`.
|
|
@@ -119,7 +122,7 @@ it by name and get back the value (plus logs and any artifacts).
|
|
|
119
122
|
|
|
120
123
|
The same `call` becomes a remote run when you point it at a library, an owner, or a
|
|
121
124
|
target machine. This requires a connected splime server and a private worker; the local
|
|
122
|
-
daemon builds
|
|
125
|
+
daemon builds the declared dependency environment on the worker before executing.
|
|
123
126
|
|
|
124
127
|
```python
|
|
125
128
|
client = SPLClient(user_token="…", machine_token="…") # connect the daemon to your server
|
|
@@ -157,10 +160,38 @@ splime runs code that you publish on purpose, on machines you control. It is bui
|
|
|
157
160
|
|
|
158
161
|
- **explicit ownership** of every published object,
|
|
159
162
|
- **scoped access** grants per library (read metadata, read objects, execute),
|
|
160
|
-
- **private worker
|
|
161
|
-
- **
|
|
163
|
+
- **private worker topology** — the server coordinates, your own workers execute,
|
|
164
|
+
- **dependency environments** built by the daemon before a run,
|
|
165
|
+
- **metadata-only central telemetry by default** — local inputs, results,
|
|
166
|
+
error details, streams, and artifact bodies stay on the machine; diagnostic
|
|
167
|
+
adds only redacted/truncated error and stdout/stderr text, while full also
|
|
168
|
+
opts in to redacted inputs, results, and supported text artifacts,
|
|
162
169
|
- an **auditable run history**.
|
|
163
170
|
|
|
171
|
+
Credentialed central-server traffic requires a direct HTTPS endpoint and never
|
|
172
|
+
follows redirects. Loopback HTTP remains available for local development; the
|
|
173
|
+
only other plaintext path is the exact Docker callback carrying only a scoped
|
|
174
|
+
run capability.
|
|
175
|
+
|
|
176
|
+
Native and `venv-subprocess` runtimes execute trusted code under the
|
|
177
|
+
conductor's OS identity—the daemon user for daemon-managed runs. A virtual
|
|
178
|
+
environment separates dependencies and a subprocess separates execution, but
|
|
179
|
+
neither is an OS sandbox. Docker or a deliberately separate OS identity is
|
|
180
|
+
required when code must not read same-UID daemon files. Docker provides the
|
|
181
|
+
configured process/filesystem boundary, subject to its mounts and network
|
|
182
|
+
options and to trust in the Docker daemon and host.
|
|
183
|
+
|
|
184
|
+
Scoped callback capabilities limit the authority intentionally passed over the
|
|
185
|
+
worker protocol. They do not protect against arbitrary same-UID file reads and
|
|
186
|
+
do not turn a native or virtual-environment worker into a sandbox.
|
|
187
|
+
|
|
188
|
+
Docker object runs use one container per run by default and mount only that
|
|
189
|
+
run's writable directory. Warm pooling is explicitly opt-in with
|
|
190
|
+
`spl-daemon serve --docker-pool-enabled --docker-pool-size N`; pooled
|
|
191
|
+
containers share all runs for that daemon and are suitable only for
|
|
192
|
+
single-tenant, mutually trusting workloads. One process also exclusively locks
|
|
193
|
+
each daemon home before opening its database or publishing its endpoint.
|
|
194
|
+
|
|
164
195
|
## How it fits together
|
|
165
196
|
|
|
166
197
|
| Piece | What it does |
|
|
@@ -21,11 +21,14 @@ redeploying.
|
|
|
21
21
|
## Requirements
|
|
22
22
|
|
|
23
23
|
- Python **3.13+**
|
|
24
|
+
- POSIX for local daemon environment builds and timeout-safe worker execution
|
|
25
|
+
in 0.4.5 (Windows Job Object support is not yet implemented; Windows
|
|
26
|
+
client-only use is unaffected)
|
|
24
27
|
|
|
25
28
|
## Install
|
|
26
29
|
|
|
27
30
|
```bash
|
|
28
|
-
pip install splime
|
|
31
|
+
python3.13 -m pip install "splime==0.4.5"
|
|
29
32
|
```
|
|
30
33
|
|
|
31
34
|
The distribution is named `splime`; the Python import package is `spl`.
|
|
@@ -64,7 +67,7 @@ it by name and get back the value (plus logs and any artifacts).
|
|
|
64
67
|
|
|
65
68
|
The same `call` becomes a remote run when you point it at a library, an owner, or a
|
|
66
69
|
target machine. This requires a connected splime server and a private worker; the local
|
|
67
|
-
daemon builds
|
|
70
|
+
daemon builds the declared dependency environment on the worker before executing.
|
|
68
71
|
|
|
69
72
|
```python
|
|
70
73
|
client = SPLClient(user_token="…", machine_token="…") # connect the daemon to your server
|
|
@@ -102,10 +105,38 @@ splime runs code that you publish on purpose, on machines you control. It is bui
|
|
|
102
105
|
|
|
103
106
|
- **explicit ownership** of every published object,
|
|
104
107
|
- **scoped access** grants per library (read metadata, read objects, execute),
|
|
105
|
-
- **private worker
|
|
106
|
-
- **
|
|
108
|
+
- **private worker topology** — the server coordinates, your own workers execute,
|
|
109
|
+
- **dependency environments** built by the daemon before a run,
|
|
110
|
+
- **metadata-only central telemetry by default** — local inputs, results,
|
|
111
|
+
error details, streams, and artifact bodies stay on the machine; diagnostic
|
|
112
|
+
adds only redacted/truncated error and stdout/stderr text, while full also
|
|
113
|
+
opts in to redacted inputs, results, and supported text artifacts,
|
|
107
114
|
- an **auditable run history**.
|
|
108
115
|
|
|
116
|
+
Credentialed central-server traffic requires a direct HTTPS endpoint and never
|
|
117
|
+
follows redirects. Loopback HTTP remains available for local development; the
|
|
118
|
+
only other plaintext path is the exact Docker callback carrying only a scoped
|
|
119
|
+
run capability.
|
|
120
|
+
|
|
121
|
+
Native and `venv-subprocess` runtimes execute trusted code under the
|
|
122
|
+
conductor's OS identity—the daemon user for daemon-managed runs. A virtual
|
|
123
|
+
environment separates dependencies and a subprocess separates execution, but
|
|
124
|
+
neither is an OS sandbox. Docker or a deliberately separate OS identity is
|
|
125
|
+
required when code must not read same-UID daemon files. Docker provides the
|
|
126
|
+
configured process/filesystem boundary, subject to its mounts and network
|
|
127
|
+
options and to trust in the Docker daemon and host.
|
|
128
|
+
|
|
129
|
+
Scoped callback capabilities limit the authority intentionally passed over the
|
|
130
|
+
worker protocol. They do not protect against arbitrary same-UID file reads and
|
|
131
|
+
do not turn a native or virtual-environment worker into a sandbox.
|
|
132
|
+
|
|
133
|
+
Docker object runs use one container per run by default and mount only that
|
|
134
|
+
run's writable directory. Warm pooling is explicitly opt-in with
|
|
135
|
+
`spl-daemon serve --docker-pool-enabled --docker-pool-size N`; pooled
|
|
136
|
+
containers share all runs for that daemon and are suitable only for
|
|
137
|
+
single-tenant, mutually trusting workloads. One process also exclusively locks
|
|
138
|
+
each daemon home before opening its database or publishing its endpoint.
|
|
139
|
+
|
|
109
140
|
## How it fits together
|
|
110
141
|
|
|
111
142
|
| Piece | What it does |
|