syft-rds 0.1.1.dev1__tar.gz → 0.1.1.dev2__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.
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/PKG-INFO +1 -1
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/pyproject.toml +1 -1
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/__init__.py +1 -1
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/server/routers/job_router.py +43 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/.gitignore +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/LICENSE +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/README.md +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/assets/adjectives.txt +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/assets/css/fonts.css +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/assets/css/model_repr.css +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/assets/css/style.css +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/assets/css/tabulator_pysyft.min.css +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/assets/data_access_template.py.jinja +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/assets/jinja/model_repr.jinja2 +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/assets/jinja/model_repr_file_section.jinja2 +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/assets/jinja/syft_exception.jinja2 +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/assets/jinja/table.jinja2 +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/assets/js/table.js +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/assets/js/tabulator.min.js +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/assets/nouns.txt +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/assets/svg/arrow.svg +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/assets/svg/clipboard.svg +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/assets/svg/copy.svg +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/assets/svg/folder.svg +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/assets/svg/info.svg +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/assets/svg/request.svg +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/assets/svg/search.svg +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/assets/svg/table.svg +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/cli.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/client/__init__.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/client/client_registry.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/client/connection.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/client/exceptions.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/client/local_store.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/client/local_stores/__init__.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/client/local_stores/base.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/client/local_stores/dataset.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/client/local_stores/jobs.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/client/local_stores/runtime.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/client/local_stores/user_code.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/client/rds_client.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/client/rds_clients/__init__.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/client/rds_clients/base.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/client/rds_clients/dataset.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/client/rds_clients/jobs.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/client/rds_clients/runtime.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/client/rds_clients/user_code.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/client/rds_clients/utils.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/client/rpc.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/client/setup.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/client/utils.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/jupyter_utils/__init__.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/jupyter_utils/components.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/jupyter_utils/display.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/jupyter_utils/icons.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/jupyter_utils/table_utils.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/jupyter_utils/tabulator.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/jupyter_utils/types.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/models/__init__.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/models/base.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/models/formatter.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/models/html_format.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/models/models.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/orchestra.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/server/__init__.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/server/app.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/server/router.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/server/routers/runtime_router.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/server/routers/user_code_router.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/server/user_file_service.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/store/__init__.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/store/store.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/syft_runtime/README.md +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/syft_runtime/__init__.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/syft_runtime/main.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/utils/name_generator.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/utils/paths.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/utils/render_code_template.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/utils/resources.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/utils/sanitize.py +0 -0
- {syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/utils/zip_utils.py +0 -0
|
@@ -4,6 +4,7 @@ from loguru import logger
|
|
|
4
4
|
from syft_core import SyftBoxURL
|
|
5
5
|
from syft_event import SyftEvents
|
|
6
6
|
from syft_event.types import Request
|
|
7
|
+
import yaml
|
|
7
8
|
from syft_rds.models.models import (
|
|
8
9
|
Dataset,
|
|
9
10
|
GetAllRequest,
|
|
@@ -140,6 +141,12 @@ def _handle_enclave_update(existing_item: Job, app: SyftEvents) -> None:
|
|
|
140
141
|
|
|
141
142
|
enclave_data_dir = client.app_data("enclave") / "data" / existing_item.enclave
|
|
142
143
|
enclave_data_dir.mkdir(parents=True, exist_ok=True)
|
|
144
|
+
add_permission_rule(
|
|
145
|
+
path=enclave_data_dir,
|
|
146
|
+
pattern="**",
|
|
147
|
+
read=[existing_item.enclave],
|
|
148
|
+
write=[],
|
|
149
|
+
)
|
|
143
150
|
|
|
144
151
|
dataset_store: YAMLStore[Dataset] = app.state["dataset_store"]
|
|
145
152
|
dataset: Dataset = dataset_store.get_one(name=existing_item.dataset_name)
|
|
@@ -167,3 +174,39 @@ def _handle_enclave_update(existing_item: Job, app: SyftEvents) -> None:
|
|
|
167
174
|
public_key_path=enclave_public_key,
|
|
168
175
|
output_file_path=output_file_path,
|
|
169
176
|
)
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
# TODO: Move this to syft core
|
|
180
|
+
def add_permission_rule(path: str, pattern: str, read: list[str], write: list[str]):
|
|
181
|
+
"""
|
|
182
|
+
Adds or updates a permission rule in syft.pub.yaml in the given path (must be a folder).
|
|
183
|
+
If a rule with the same pattern exists, update only missing read/write entries (no duplicates).
|
|
184
|
+
Raises ValueError if path is not a directory.
|
|
185
|
+
"""
|
|
186
|
+
folder = Path(path)
|
|
187
|
+
if not folder.is_dir():
|
|
188
|
+
raise ValueError(f"Provided path '{path}' is not a directory.")
|
|
189
|
+
yaml_file = folder / "syft.pub.yaml"
|
|
190
|
+
rule = {"pattern": pattern, "access": {"read": read, "write": write}}
|
|
191
|
+
if yaml_file.exists():
|
|
192
|
+
with open(yaml_file, "r") as f:
|
|
193
|
+
data = yaml.safe_load(f) or {}
|
|
194
|
+
else:
|
|
195
|
+
data = {}
|
|
196
|
+
if "rules" not in data or not isinstance(data["rules"], list):
|
|
197
|
+
data["rules"] = []
|
|
198
|
+
# Check for existing pattern
|
|
199
|
+
for existing_rule in data["rules"]:
|
|
200
|
+
if existing_rule.get("pattern") == pattern:
|
|
201
|
+
# Update read and write lists, avoiding duplicates
|
|
202
|
+
existing_access = existing_rule.setdefault("access", {})
|
|
203
|
+
for key, new_values in [("read", read), ("write", write)]:
|
|
204
|
+
existing = set(existing_access.get(key, []))
|
|
205
|
+
updated = list(existing.union(new_values))
|
|
206
|
+
existing_access[key] = updated
|
|
207
|
+
break
|
|
208
|
+
else:
|
|
209
|
+
# No existing pattern, append new rule
|
|
210
|
+
data["rules"].append(rule)
|
|
211
|
+
with open(yaml_file, "w") as f:
|
|
212
|
+
yaml.safe_dump(data, f, sort_keys=False)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/assets/css/tabulator_pysyft.min.css
RENAMED
|
File without changes
|
{syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/assets/data_access_template.py.jinja
RENAMED
|
File without changes
|
|
File without changes
|
{syft_rds-0.1.1.dev1 → syft_rds-0.1.1.dev2}/src/syft_rds/assets/jinja/model_repr_file_section.jinja2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|