From a597e513a5993901ee2cbbbcb1cd2abf52d37076 Mon Sep 17 00:00:00 2001 From: Aziz Berkay Yesilyurt Date: Wed, 24 Apr 2024 14:21:02 +0200 Subject: [PATCH 01/26] revive the code execution exception message --- packages/syft/src/syft/service/code/user_code.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/syft/src/syft/service/code/user_code.py b/packages/syft/src/syft/service/code/user_code.py index f7d178b91e9..1bafd0b80df 100644 --- a/packages/syft/src/syft/service/code/user_code.py +++ b/packages/syft/src/syft/service/code/user_code.py @@ -1486,13 +1486,15 @@ def to_str(arg: Any) -> str: original_print( f"{time} EXCEPTION LOG ({job_id}):\n{error_msg}", file=sys.stderr ) - if context.node is not None: + if context.node is not None and context.job is not None: log_id = context.job.log_id log_service = context.node.get_service("LogService") log_service.append(context=context, uid=log_id, new_err=error_msg) - + exc_type, exc_value, exc_traceback = sys.exc_info() + stack = traceback.extract_tb(exc_traceback) + lineno = f" at line {stack[-1].lineno}" if stack else None result_message = ( - f"Exception encountered while running {code_item.service_func_name}" + f"Exception encountered while running {code_item.service_func_name}{lineno}" ", please contact the Node Admin for more info." ) if context.dev_mode: From ec5e70b671979a485c5958a9abbda8bedbbafa06 Mon Sep 17 00:00:00 2001 From: Shubham Gupta Date: Thu, 25 Apr 2024 12:29:15 +0530 Subject: [PATCH 02/26] add a method to delete/kill the consumer in the thread --- packages/syft/src/syft/node/node.py | 16 ++++++++++++++++ .../src/syft/service/worker/worker_service.py | 3 +++ 2 files changed, 19 insertions(+) diff --git a/packages/syft/src/syft/node/node.py b/packages/syft/src/syft/node/node.py index 849e8267004..2c38c54d95e 100644 --- a/packages/syft/src/syft/node/node.py +++ b/packages/syft/src/syft/node/node.py @@ -3,6 +3,7 @@ # stdlib from collections import OrderedDict +from collections import defaultdict from collections.abc import Callable from datetime import datetime from functools import partial @@ -463,6 +464,9 @@ def stop(self) -> None: for p in self.queue_manager.producers.values(): p.close() + self.queue_manager.producers.clear() + self.queue_manager.consumers.clear() + NodeRegistry.remove_node(self.id) def close(self) -> None: @@ -567,6 +571,18 @@ def add_consumer_for_service( ) consumer.run() + def remove_consumer_with_id(self, syft_worker_id: UID) -> None: + for _, consumers in self.queue_manager.consumers.items(): + # Grab the list of consumers for the given queue + consumer_to_pop = None + for consumer_idx, consumer in enumerate(consumers): + if consumer.syft_worker_id == syft_worker_id: + consumer.close() + consumer_to_pop = consumer_idx + break + if consumer_to_pop is not None: + consumers.pop(consumer_to_pop) + @classmethod def named( cls, diff --git a/packages/syft/src/syft/service/worker/worker_service.py b/packages/syft/src/syft/service/worker/worker_service.py index 2c4ddf60dd2..6c574b99735 100644 --- a/packages/syft/src/syft/service/worker/worker_service.py +++ b/packages/syft/src/syft/service/worker/worker_service.py @@ -208,6 +208,9 @@ def delete( stopped = _stop_worker_container(worker, docker_container, force) if stopped is not None: return stopped + else: + # kill the in memory worker thread + context.node.remove_consumer_with_id(syft_worker_id=worker.id) # remove the worker from the pool try: From 862932998c10c59f2fa515a8268dd035a042fb48 Mon Sep 17 00:00:00 2001 From: Shubham Gupta Date: Thu, 25 Apr 2024 13:17:12 +0530 Subject: [PATCH 03/26] send disconnect signal to producer when close is called on consumer --- packages/syft/src/syft/service/queue/zmq_queue.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/syft/src/syft/service/queue/zmq_queue.py b/packages/syft/src/syft/service/queue/zmq_queue.py index 0f42904356a..a006637a33a 100644 --- a/packages/syft/src/syft/service/queue/zmq_queue.py +++ b/packages/syft/src/syft/service/queue/zmq_queue.py @@ -633,7 +633,11 @@ def post_init(self) -> None: self.producer_ping_t = Timeout(PRODUCER_TIMEOUT_SEC) self.reconnect_to_producer() + def disconnect_from_producer(self) -> None: + self.send_to_producer(QueueMsgProtocol.W_DISCONNECT) + def close(self) -> None: + self.disconnect_from_producer() self._stop.set() try: self.poller.unregister(self.socket) From b02cadc91f98e7770510e5727b5fda7f2ee14743 Mon Sep 17 00:00:00 2001 From: Aziz Berkay Yesilyurt Date: Thu, 25 Apr 2024 10:09:10 +0200 Subject: [PATCH 04/26] fix: add default init to Job.creation_time --- .../syft/src/syft/service/code/user_code.py | 11 ++++-- .../syft/src/syft/service/job/job_stash.py | 9 ++--- .../service/sync/sync_resolve_single_test.py | 36 +++++++++++++++++++ 3 files changed, 46 insertions(+), 10 deletions(-) diff --git a/packages/syft/src/syft/service/code/user_code.py b/packages/syft/src/syft/service/code/user_code.py index 1bafd0b80df..c66f7ea3d86 100644 --- a/packages/syft/src/syft/service/code/user_code.py +++ b/packages/syft/src/syft/service/code/user_code.py @@ -1486,10 +1486,15 @@ def to_str(arg: Any) -> str: original_print( f"{time} EXCEPTION LOG ({job_id}):\n{error_msg}", file=sys.stderr ) - if context.node is not None and context.job is not None: - log_id = context.job.log_id + if ( + context.node is not None + and context.job is not None + and context.job.log_id is not None + ): log_service = context.node.get_service("LogService") - log_service.append(context=context, uid=log_id, new_err=error_msg) + log_service.append( + context=context, uid=context.job.log_id, new_err=error_msg + ) exc_type, exc_value, exc_traceback = sys.exc_info() stack = traceback.extract_tb(exc_traceback) lineno = f" at line {stack[-1].lineno}" if stack else None diff --git a/packages/syft/src/syft/service/job/job_stash.py b/packages/syft/src/syft/service/job/job_stash.py index bdf8d3df89d..d66b558cbd1 100644 --- a/packages/syft/src/syft/service/job/job_stash.py +++ b/packages/syft/src/syft/service/job/job_stash.py @@ -7,7 +7,7 @@ from typing import Any # third party -from pydantic import field_validator +from pydantic import Field from pydantic import model_validator from result import Err from result import Ok @@ -86,7 +86,7 @@ class Job(SyncableSyftObject): parent_job_id: UID | None = None n_iters: int | None = 0 current_iter: int | None = None - creation_time: str | None = None + creation_time: str | None = Field(default_factory=lambda: str(datetime.now())) action: Action | None = None job_pid: int | None = None job_worker_id: UID | None = None @@ -115,11 +115,6 @@ class Job(SyncableSyftObject): ] __syft_include_id_coll_repr__ = False - @field_validator("creation_time") - @classmethod - def check_time(cls, time: Any) -> Any: - return str(datetime.now()) if time is None else time - @model_validator(mode="after") def check_user_code_id(self) -> Self: if self.action is not None: diff --git a/packages/syft/tests/syft/service/sync/sync_resolve_single_test.py b/packages/syft/tests/syft/service/sync/sync_resolve_single_test.py index 19f1c6876b2..4c01293e50a 100644 --- a/packages/syft/tests/syft/service/sync/sync_resolve_single_test.py +++ b/packages/syft/tests/syft/service/sync/sync_resolve_single_test.py @@ -88,6 +88,42 @@ def compute() -> int: assert res == compute(blocking=True).get() +def test_sync_with_error(low_worker, high_worker): + """Check syncing with an error in a syft function""" + low_client: DomainClient = low_worker.root_client + client_low_ds = get_ds_client(low_client) + high_client: DomainClient = high_worker.root_client + + @sy.syft_function_single_use() + def compute() -> int: + assert False + return 42 + + compute.code = dedent(compute.code) + + _ = client_low_ds.code.request_code_execution(compute) + + diff_state_before, diff_state_after = compare_and_resolve( + from_client=low_client, to_client=high_client + ) + + assert not diff_state_before.is_same + + assert diff_state_after.is_same + + run_and_accept_result(high_client) + diff_state_before, diff_state_after = compare_and_resolve( + from_client=high_client, to_client=low_client + ) + + assert not diff_state_before.is_same + assert diff_state_after.is_same + + client_low_ds.refresh() + res = client_low_ds.code.compute(blocking=True) + assert isinstance(res, SyftError) + + def test_ignore_unignore_single(low_worker, high_worker): low_client: DomainClient = low_worker.root_client client_low_ds = get_ds_client(low_client) From c69d7203d50a317a982b2d053ca996f1e6404b0a Mon Sep 17 00:00:00 2001 From: Aziz Berkay Yesilyurt Date: Thu, 25 Apr 2024 10:13:50 +0200 Subject: [PATCH 05/26] remove duplicate test, it is already in integration tests --- .../tests/syft/service/sync/sync_flow_test.py | 58 ------------------- 1 file changed, 58 deletions(-) diff --git a/packages/syft/tests/syft/service/sync/sync_flow_test.py b/packages/syft/tests/syft/service/sync/sync_flow_test.py index 5698048c384..11bbd06f8b3 100644 --- a/packages/syft/tests/syft/service/sync/sync_flow_test.py +++ b/packages/syft/tests/syft/service/sync/sync_flow_test.py @@ -307,64 +307,6 @@ def private_function(context) -> str: return 42 -def test_twin_api_integration(full_high_worker, full_low_worker): - low_client = full_low_worker.login( - email="info@openmined.org", password="changethis" - ) - high_client = full_high_worker.login( - email="info@openmined.org", password="changethis" - ) - - low_client.register( - email="newuser@openmined.org", - name="John Doe", - password="pw", - password_verify="pw", - ) - - client_low_ds = low_client.login( - email="newuser@openmined.org", - password="pw", - ) - - new_endpoint = sy.TwinAPIEndpoint( - path="testapi.query", - private_function=private_function, - mock_function=mock_function, - description="", - ) - high_client.api.services.api.add(endpoint=new_endpoint) - high_client.refresh() - high_private_res = high_client.api.services.testapi.query.private() - assert high_private_res == 42 - - low_state = low_client.get_sync_state() - high_state = high_client.get_sync_state() - diff_state = compare_states(high_state, low_state) - - obj_diff_batch = diff_state[0] - widget = resolve_single(obj_diff_batch) - widget.click_sync() - - obj_diff_batch = diff_state[1] - widget = resolve_single(obj_diff_batch) - widget.click_sync() - - high_mock_res = high_client.api.services.testapi.query.mock() - assert high_mock_res == -42 - - client_low_ds.refresh() - high_client.refresh() - low_private_res = client_low_ds.api.services.testapi.query.private() - assert isinstance( - low_private_res, SyftError - ), "Should not have access to private on low side" - low_mock_res = client_low_ds.api.services.testapi.query.mock() - high_mock_res = high_client.api.services.testapi.query.mock() - assert low_mock_res == -42 - assert high_mock_res == -42 - - def test_skip_user_code(low_worker, high_worker): low_client = low_worker.root_client client_low_ds = low_worker.guest_client From 484ea189fb3d3835df7e461f71a275a7633ce0c9 Mon Sep 17 00:00:00 2001 From: Shubham Gupta Date: Thu, 25 Apr 2024 14:15:01 +0530 Subject: [PATCH 06/26] skip update consumer state if worker object is not present in store --- .../syft/src/syft/service/queue/zmq_queue.py | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/packages/syft/src/syft/service/queue/zmq_queue.py b/packages/syft/src/syft/service/queue/zmq_queue.py index a006637a33a..43a948b2abf 100644 --- a/packages/syft/src/syft/service/queue/zmq_queue.py +++ b/packages/syft/src/syft/service/queue/zmq_queue.py @@ -388,6 +388,14 @@ def update_consumer_state_for_worker( return try: + # Check if worker is present in the database + worker = self.worker_stash.get_by_uid( + credentials=self.worker_stash.partition.root_verify_key, + uid=syft_worker_id, + ) + if worker.is_ok() and worker.ok() is None: + return + res = self.worker_stash.update_consumer_state( credentials=self.worker_stash.partition.root_verify_key, worker_uid=syft_worker_id, @@ -395,13 +403,14 @@ def update_consumer_state_for_worker( ) if res.is_err(): logger.error( - "Failed to update consumer state for worker id={} error={}", + "Failed to update consumer state for worker id={} to state: {} error={}", syft_worker_id, + consumer_state, res.err(), ) except Exception as e: logger.error( - f"Failed to update consumer state for worker id: {syft_worker_id}. Error: {e}" + f"Failed to update consumer state for worker id: {syft_worker_id} to state {consumer_state}. Error: {e}" ) def worker_waiting(self, worker: Worker) -> None: @@ -572,9 +581,10 @@ def delete_worker(self, worker: Worker, disconnect: bool) -> None: self.workers.pop(worker.identity, None) - self.update_consumer_state_for_worker( - worker.syft_worker_id, ConsumerState.DETACHED - ) + if worker.syft_worker_id is not None: + self.update_consumer_state_for_worker( + worker.syft_worker_id, ConsumerState.DETACHED + ) @property def alive(self) -> bool: From 8e0e1e475724aece0160278d59008ca231d2c958 Mon Sep 17 00:00:00 2001 From: eelcovdw Date: Thu, 25 Apr 2024 11:11:30 +0200 Subject: [PATCH 07/26] fix table overflow --- packages/syft/src/syft/util/notebook_ui/notebook_addons.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/syft/src/syft/util/notebook_ui/notebook_addons.py b/packages/syft/src/syft/util/notebook_ui/notebook_addons.py index 0e669448e2f..5c7de0a057e 100644 --- a/packages/syft/src/syft/util/notebook_ui/notebook_addons.py +++ b/packages/syft/src/syft/util/notebook_ui/notebook_addons.py @@ -247,7 +247,7 @@ grid-column: ${grid_template_cell_columns}; display: flex; justify-content: center; - align-items: center; width: 100%; height: 100%; + align-items: center; } .grid-index-cells { @@ -256,7 +256,6 @@ font-weight: 600; background-color: var(--secondary-color) !important; color: var(--tertiary-color); - height: 100%; } .center-content-cell{ From ef68a1954202b1022b8afbe089776c578ee129be Mon Sep 17 00:00:00 2001 From: eelcovdw Date: Thu, 25 Apr 2024 11:11:49 +0200 Subject: [PATCH 08/26] fix actionobject markdown repr --- packages/syft/src/syft/service/action/action_object.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/syft/src/syft/service/action/action_object.py b/packages/syft/src/syft/service/action/action_object.py index c7bc59d7064..d8a8f777160 100644 --- a/packages/syft/src/syft/service/action/action_object.py +++ b/packages/syft/src/syft/service/action/action_object.py @@ -1905,7 +1905,7 @@ def _repr_markdown_(self, wrap_as_python: bool = True, indent: int = 0) -> str: else self.syft_action_data_cache.__repr__() ) - return f"```python\n{res}\n{data_repr_}```\n" + return f"```python\n{res}\n{data_repr_}\n```\n" def _data_repr(self) -> str | None: if isinstance(self.syft_action_data_cache, ActionDataEmpty): From d03705d6221301282d5c4bccf62f49b9c7abd1bb Mon Sep 17 00:00:00 2001 From: Koen van der Veen Date: Thu, 25 Apr 2024 11:41:36 +0200 Subject: [PATCH 09/26] add node location to output policy --- packages/syft/src/syft/service/code/user_code.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/syft/src/syft/service/code/user_code.py b/packages/syft/src/syft/service/code/user_code.py index f7d178b91e9..3bfea48a166 100644 --- a/packages/syft/src/syft/service/code/user_code.py +++ b/packages/syft/src/syft/service/code/user_code.py @@ -505,7 +505,10 @@ def _get_output_policy(self) -> OutputPolicy | None: raise Exception("output_policy is None during init") try: - return _deserialize(self.output_policy_state, from_bytes=True) + output_policy = _deserialize(self.output_policy_state, from_bytes=True) + output_policy.syft_node_location = self.syft_node_location + output_policy.syft_client_verify_key = self.syft_client_verify_key + return output_policy except Exception as e: print(f"Failed to deserialize custom output policy state. {e}") return None From 65adbbe730e8e7d36a19c66cd29d2f36d744dc2a Mon Sep 17 00:00:00 2001 From: Ionesio Junior Date: Thu, 25 Apr 2024 09:25:32 -0300 Subject: [PATCH 10/26] Fix api_endpoints() view for DS --- packages/syft/src/syft/service/api/api.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/syft/src/syft/service/api/api.py b/packages/syft/src/syft/service/api/api.py index e596e6bc87c..b6dfd8ddf3b 100644 --- a/packages/syft/src/syft/service/api/api.py +++ b/packages/syft/src/syft/service/api/api.py @@ -98,12 +98,14 @@ class TwinAPIEndpointView(SyftObject): ] def _coll_repr_(self) -> dict[str, Any]: - mock_parsed_code = ast.parse(self.mock_function) - mock_function_name = [ - node.name - for node in ast.walk(mock_parsed_code) - if isinstance(node, ast.FunctionDef) - ][0] + mock_function_name = NOT_ACCESSIBLE_STRING + if self.mock_function != NOT_ACCESSIBLE_STRING: + mock_parsed_code = ast.parse(self.mock_function) + mock_function_name = [ + node.name + for node in ast.walk(mock_parsed_code) + if isinstance(node, ast.FunctionDef) + ][0] private_function_name = NOT_ACCESSIBLE_STRING if self.private_function != NOT_ACCESSIBLE_STRING: private_parsed_code = ast.parse(self.private_function) From 156300ba2b767c18bb9b49b8b3a682b69a3265b2 Mon Sep 17 00:00:00 2001 From: eelcovdw Date: Thu, 25 Apr 2024 14:30:49 +0200 Subject: [PATCH 11/26] diffstate repr fix --- .../syft/src/syft/service/sync/diff_state.py | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/packages/syft/src/syft/service/sync/diff_state.py b/packages/syft/src/syft/service/sync/diff_state.py index af7ebab0980..b4f29c627fc 100644 --- a/packages/syft/src/syft/service/sync/diff_state.py +++ b/packages/syft/src/syft/service/sync/diff_state.py @@ -801,7 +801,14 @@ def flatten_dict(d: dict) -> list: return flatten_dict(self.get_visual_hierarchy()) def _repr_html_(self) -> str: - diffs = self.flatten_visual_hierarchy() + try: + diffs = self.flatten_visual_hierarchy() + except Exception as _: + return SyftError( + message=html.escape( + "Could not render batch, please use resolve_single() instead." + ) + )._repr_html_() return f"""

ObjectBatchDiff

@@ -876,11 +883,18 @@ def make_dependents(self) -> Self: def root(self) -> ObjectDiff: return self.root_diff - def __repr__(self) -> str: - return f"""{self.hierarchy_str('low')} + def __repr__(self) -> Any: + try: + return f"""{self.hierarchy_str('low')} -{self.hierarchy_str('high')} -""" + {self.hierarchy_str('high')} + """ + except Exception as _: + return SyftError( + message=html.escape( + "Could not render batch, please use resolve_single() instead." + ) + )._repr_html_() def _repr_markdown_(self, wrap_as_python: bool = True, indent: int = 0) -> str: return "" # Turns off the _repr_markdown_ of SyftObject From 614ebb567f8e2a7ecfa9f7ecff32ebad6b9d7783 Mon Sep 17 00:00:00 2001 From: Aziz Berkay Yesilyurt Date: Thu, 25 Apr 2024 16:05:56 +0200 Subject: [PATCH 12/26] fix job error reporting --- .../syft/src/syft/service/code/user_code.py | 6 ++- .../syft/service/code/user_code_service.py | 2 +- .../syft/src/syft/service/job/job_stash.py | 2 +- packages/syft/src/syft/service/queue/queue.py | 6 ++- .../syft/src/syft/service/request/request.py | 5 +++ .../syft/tests/syft/users/user_code_test.py | 3 +- tests/integration/local/twin_api_sync_test.py | 37 +++++++++++++++++++ 7 files changed, 56 insertions(+), 5 deletions(-) diff --git a/packages/syft/src/syft/service/code/user_code.py b/packages/syft/src/syft/service/code/user_code.py index 3bfea48a166..0c936dd20ae 100644 --- a/packages/syft/src/syft/service/code/user_code.py +++ b/packages/syft/src/syft/service/code/user_code.py @@ -1489,7 +1489,11 @@ def to_str(arg: Any) -> str: original_print( f"{time} EXCEPTION LOG ({job_id}):\n{error_msg}", file=sys.stderr ) - if context.node is not None: + if ( + context.node is not None + and context.job is not None + and context.job.log_id is not None + ): log_id = context.job.log_id log_service = context.node.get_service("LogService") log_service.append(context=context, uid=log_id, new_err=error_msg) diff --git a/packages/syft/src/syft/service/code/user_code_service.py b/packages/syft/src/syft/service/code/user_code_service.py index c7d3ff1b758..c2b0686b2fa 100644 --- a/packages/syft/src/syft/service/code/user_code_service.py +++ b/packages/syft/src/syft/service/code/user_code_service.py @@ -550,7 +550,7 @@ def _call( return Ok(result) elif result.syft_action_data_type is Err: # result contains the error but the request was handled correctly - return result.syft_action_data + return Ok(result) elif has_result_read_permission: return Ok(result) else: diff --git a/packages/syft/src/syft/service/job/job_stash.py b/packages/syft/src/syft/service/job/job_stash.py index bdf8d3df89d..9daf864a78f 100644 --- a/packages/syft/src/syft/service/job/job_stash.py +++ b/packages/syft/src/syft/service/job/job_stash.py @@ -677,7 +677,7 @@ def wait( return self.resolve if not job_only and self.result is not None: - self.result.wait() + self.result.wait(timeout) if api is None: raise ValueError( diff --git a/packages/syft/src/syft/service/queue/queue.py b/packages/syft/src/syft/service/queue/queue.py index 35212843651..cc2d502d122 100644 --- a/packages/syft/src/syft/service/queue/queue.py +++ b/packages/syft/src/syft/service/queue/queue.py @@ -200,11 +200,15 @@ def handle_message_multiprocessing( status = Status.COMPLETED job_status = JobStatus.COMPLETED - if isinstance(result, Ok): + if isinstance(result.ok().syft_action_data, Err): + status = Status.ERRORED + job_status = JobStatus.ERRORED result = result.ok() elif isinstance(result, SyftError) or isinstance(result, Err): status = Status.ERRORED job_status = JobStatus.ERRORED + elif isinstance(result, Ok): + result = result.ok() except Exception as e: # nosec status = Status.ERRORED job_status = JobStatus.ERRORED diff --git a/packages/syft/src/syft/service/request/request.py b/packages/syft/src/syft/service/request/request.py index 5b4792c9fc6..78c21bd8c1c 100644 --- a/packages/syft/src/syft/service/request/request.py +++ b/packages/syft/src/syft/service/request/request.py @@ -877,6 +877,11 @@ def accept_by_depositing_result( return res job_info.result = action_object + job_info.status = ( + JobStatus.ERRORED + if isinstance(action_object.syft_action_data, Err) + else JobStatus.COMPLETED + ) existing_result = job.result.id if job.result is not None else None print( diff --git a/packages/syft/tests/syft/users/user_code_test.py b/packages/syft/tests/syft/users/user_code_test.py index da4602ebde4..cb98ee29112 100644 --- a/packages/syft/tests/syft/users/user_code_test.py +++ b/packages/syft/tests/syft/users/user_code_test.py @@ -87,7 +87,8 @@ def test_duplicated_user_code(worker, guest_client: User) -> None: assert len(guest_client.code.get_all()) == 1 # request the a different function name but same content will also succeed - mock_syft_func_2() + # flaky if not blocking + mock_syft_func_2(blocking=True) result = guest_client.api.services.code.request_code_execution(mock_syft_func_2) assert isinstance(result, Request) assert len(guest_client.code.get_all()) == 2 diff --git a/tests/integration/local/twin_api_sync_test.py b/tests/integration/local/twin_api_sync_test.py index daccc398c04..62547ebda52 100644 --- a/tests/integration/local/twin_api_sync_test.py +++ b/tests/integration/local/twin_api_sync_test.py @@ -4,6 +4,7 @@ # third party import pytest +from result import Err # syft absolute import syft @@ -13,6 +14,8 @@ from syft.client.syncing import compare_clients from syft.client.syncing import resolve_single from syft.node.worker import Worker +from syft.service.job.job_stash import JobStash +from syft.service.job.job_stash import JobStatus from syft.service.response import SyftError from syft.service.response import SyftSuccess @@ -162,3 +165,37 @@ def compute(query): assert isinstance( private_res, SyftError ), "Should not be able to access private function on low side." + + +def test_function_error(full_low_worker) -> None: + root_domain_client = full_low_worker.login( + email="info@openmined.org", password="changethis" + ) + root_domain_client.register( + name="data-scientist", + email="test_user@openmined.org", + password="0000", + password_verify="0000", + ) + ds_client = root_domain_client.login( + email="test_user@openmined.org", + password="0000", + ) + + users = root_domain_client.users.get_all() + + @sy.syft_function_single_use() + def compute_sum(): + assert False + + compute_sum.code = dedent(compute_sum.code) + ds_client.api.services.code.request_code_execution(compute_sum) + + users[-1].allow_mock_execution() + result = ds_client.api.services.code.compute_sum(blocking=True) + assert isinstance(result.get(), Err) + + job_info = ds_client.api.services.code.compute_sum(blocking=False) + result = job_info.wait(timeout=10) + assert isinstance(result.get(), Err) + assert job_info.status == JobStatus.ERRORED From b56b3e1b178176a00b2577a76ffa913b9be96d0c Mon Sep 17 00:00:00 2001 From: Ionesio Junior Date: Thu, 25 Apr 2024 12:12:12 -0300 Subject: [PATCH 13/26] Simplify __col__repr logic --- packages/syft/src/syft/client/api.py | 7 +++++-- packages/syft/src/syft/service/api/api.py | 14 +++++++++----- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/packages/syft/src/syft/client/api.py b/packages/syft/src/syft/client/api.py index 184c97bdf06..10933886d03 100644 --- a/packages/syft/src/syft/client/api.py +++ b/packages/syft/src/syft/client/api.py @@ -373,13 +373,16 @@ def _repr_markdown_(self, wrap_as_python: bool = False, indent: int = 0) -> str: + "\n" ) str_repr += "#### Private Code:\n" - str_repr += as_markdown_python_code(endpoint.private_function) + "\n" + not_accessible_code = "N / A" + private_code_repr = endpoint.private_function or not_accessible_code + public_code_repr = endpoint.mock_function or not_accessible_code + str_repr += as_markdown_python_code(private_code_repr) + "\n" if endpoint.private_helper_functions: str_repr += "##### Helper Functions:\n" for helper_function in endpoint.private_helper_functions: str_repr += as_markdown_python_code(helper_function) + "\n" str_repr += "#### Public Code:\n" - str_repr += as_markdown_python_code(endpoint.mock_function) + "\n" + str_repr += as_markdown_python_code(public_code_repr) + "\n" if endpoint.mock_helper_functions: str_repr += "##### Helper Functions:\n" for helper_function in endpoint.mock_helper_functions: diff --git a/packages/syft/src/syft/service/api/api.py b/packages/syft/src/syft/service/api/api.py index b6dfd8ddf3b..1267ab0bffb 100644 --- a/packages/syft/src/syft/service/api/api.py +++ b/packages/syft/src/syft/service/api/api.py @@ -98,22 +98,26 @@ class TwinAPIEndpointView(SyftObject): ] def _coll_repr_(self) -> dict[str, Any]: - mock_function_name = NOT_ACCESSIBLE_STRING - if self.mock_function != NOT_ACCESSIBLE_STRING: + if self.mock_function: mock_parsed_code = ast.parse(self.mock_function) mock_function_name = [ node.name for node in ast.walk(mock_parsed_code) if isinstance(node, ast.FunctionDef) ][0] - private_function_name = NOT_ACCESSIBLE_STRING - if self.private_function != NOT_ACCESSIBLE_STRING: + else: + mock_function_name = NOT_ACCESSIBLE_STRING + + if self.private_function: private_parsed_code = ast.parse(self.private_function) private_function_name = [ node.name for node in ast.walk(private_parsed_code) if isinstance(node, ast.FunctionDef) ][0] + else: + private_function_name = NOT_ACCESSIBLE_STRING + worker_pool = "UNSET (DEFAULT)" if self.worker_pool is not None: worker_pool = self.worker_pool @@ -559,7 +563,7 @@ def code_string(context: TransformContext) -> TransformContext: endpoint_type.helper_functions.values() or [] ) else: - context.output[code_field] = NOT_ACCESSIBLE_STRING + context.output[code_field] = None context.output[helper_function_field] = [] return context From edde393807649c250705e4792079771087422f8d Mon Sep 17 00:00:00 2001 From: Koen van der Veen Date: Thu, 25 Apr 2024 17:20:10 +0200 Subject: [PATCH 14/26] fix handling for missing worker --- .../syft/src/syft/custom_worker/config.py | 5 ++++- .../syft/src/syft/service/job/job_stash.py | 21 ++++++++++--------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/packages/syft/src/syft/custom_worker/config.py b/packages/syft/src/syft/custom_worker/config.py index 5e9522c2b88..34624986923 100644 --- a/packages/syft/src/syft/custom_worker/config.py +++ b/packages/syft/src/syft/custom_worker/config.py @@ -179,4 +179,7 @@ def test_image_build(self, tag: str, **kwargs: Any) -> SyftSuccess | SyftError: ) return SyftSuccess(message=iterator_to_string(iterator=logs)) except Exception as e: - return SyftError(message=f"Failed to build: {e}") + # stdlib + import traceback + + return SyftError(message=f"Failed to build: {e} {traceback.format_exc()}") diff --git a/packages/syft/src/syft/service/job/job_stash.py b/packages/syft/src/syft/service/job/job_stash.py index bdf8d3df89d..dd38bf72bf7 100644 --- a/packages/syft/src/syft/service/job/job_stash.py +++ b/packages/syft/src/syft/service/job/job_stash.py @@ -609,16 +609,17 @@ def _repr_html_(self) -> str: worker_attr = "" if self.job_worker_id: worker = self.worker - worker_pool_id_button = CopyIDButton( - copy_text=str(worker.worker_pool_name), max_width=60 - ) - worker_attr = f""" -
- - Worker Pool: - {worker.name} on worker {worker_pool_id_button.to_html()} -
- """ + if not isinstance(worker, SyftError): + worker_pool_id_button = CopyIDButton( + copy_text=str(worker.worker_pool_name), max_width=60 + ) + worker_attr = f""" +
+ + Worker Pool: + {worker.name} on worker {worker_pool_id_button.to_html()} +
+ """ logs = self.logs(_print=False, stderr=False) logs_lines = logs.split("\n") if logs else [] From a150a01ccded2d75aba63f9ebbcfd7af1bfacc98 Mon Sep 17 00:00:00 2001 From: Koen van der Veen Date: Thu, 25 Apr 2024 18:08:54 +0200 Subject: [PATCH 15/26] add some fixes for logs --- packages/syft/src/syft/service/code/user_code.py | 4 ++++ packages/syft/src/syft/service/job/html_template.py | 4 ++-- packages/syft/src/syft/service/job/job_stash.py | 8 ++++---- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/packages/syft/src/syft/service/code/user_code.py b/packages/syft/src/syft/service/code/user_code.py index 0c936dd20ae..7582d18d512 100644 --- a/packages/syft/src/syft/service/code/user_code.py +++ b/packages/syft/src/syft/service/code/user_code.py @@ -1489,6 +1489,10 @@ def to_str(arg: Any) -> str: original_print( f"{time} EXCEPTION LOG ({job_id}):\n{error_msg}", file=sys.stderr ) + else: + # for local execution + time = datetime.datetime.now().strftime("%d/%m/%y %H:%M:%S") + original_print(f"{time} EXCEPTION LOG:\n{error_msg}\n", file=sys.stderr) if ( context.node is not None and context.job is not None diff --git a/packages/syft/src/syft/service/job/html_template.py b/packages/syft/src/syft/service/job/html_template.py index cc0b0f7f74b..221ac12dbe3 100644 --- a/packages/syft/src/syft/service/job/html_template.py +++ b/packages/syft/src/syft/service/job/html_template.py @@ -65,8 +65,8 @@ display: none;align-items:left">
- - + - + - - - - - """ + log_lines = logs.strip().split("\n") if logs else [] + log_lines.insert(0, "Message") + + log_lines = [f"{line}" for line in log_lines] + logs = "\n".join(log_lines) + + logs_lines_html = r""" + + +
+{logs}
+
+""".format(logs=logs) template = Template(job_repr_template) return template.substitute( From 748ed583a385eb197a427bbe02857b28f4e2a483 Mon Sep 17 00:00:00 2001 From: Aziz Berkay Yesilyurt Date: Thu, 25 Apr 2024 19:21:15 +0200 Subject: [PATCH 18/26] fix styling --- packages/syft/src/syft/service/job/job_stash.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/syft/src/syft/service/job/job_stash.py b/packages/syft/src/syft/service/job/job_stash.py index 000301bf11b..8d8d0b8b339 100644 --- a/packages/syft/src/syft/service/job/job_stash.py +++ b/packages/syft/src/syft/service/job/job_stash.py @@ -623,7 +623,7 @@ def _repr_html_(self) -> str: logs = self.logs(_print=False) log_lines = logs.strip().split("\n") if logs else [] - log_lines.insert(0, "Message") + log_lines.insert(0, f"{"Message"}") log_lines = [f"{line}" for line in log_lines] logs = "\n".join(log_lines) @@ -656,6 +656,7 @@ def _repr_html_(self) -> str: pre code:first-of-type::before {{ content: "#"; + font-weight: bold; }} From 6db33862d708cfba51a98439d9214a1165e18af8 Mon Sep 17 00:00:00 2001 From: alfred-openmined-bot <145415986+alfred-openmined-bot@users.noreply.github.com> Date: Thu, 25 Apr 2024 17:33:28 +0000 Subject: [PATCH 19/26] [syft]bump version --- .bumpversion.cfg | 2 +- VERSION | 2 +- packages/grid/VERSION | 2 +- packages/grid/backend/worker_cpu.dockerfile | 2 +- packages/grid/devspace.yaml | 2 +- packages/grid/frontend/package.json | 2 +- packages/grid/helm/repo/index.yaml | 175 ++++++++++-------- packages/grid/helm/repo/syft-0.8.7-beta.4.tgz | Bin 0 -> 10174 bytes packages/grid/helm/syft/Chart.yaml | 4 +- packages/grid/helm/syft/values.yaml | 2 +- .../podman-kube/podman-syft-kube-config.yaml | 2 +- .../podman/podman-kube/podman-syft-kube.yaml | 4 +- packages/hagrid/hagrid/deps.py | 2 +- packages/hagrid/hagrid/manifest_template.yml | 6 +- packages/syft/setup.cfg | 2 +- packages/syft/src/syft/VERSION | 2 +- packages/syft/src/syft/__init__.py | 2 +- packages/syftcli/manifest.yml | 8 +- 18 files changed, 117 insertions(+), 104 deletions(-) create mode 100644 packages/grid/helm/repo/syft-0.8.7-beta.4.tgz diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 11276ba7839..89f07d73181 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.8.7-beta.3 +current_version = 0.8.7-beta.4 tag = False tag_name = {new_version} commit = True diff --git a/VERSION b/VERSION index 76c7847fbba..6fc85f1bdbc 100644 --- a/VERSION +++ b/VERSION @@ -1,5 +1,5 @@ # Mono Repo Global Version -__version__ = "0.8.7-beta.3" +__version__ = "0.8.7-beta.4" # elsewhere we can call this file: `python VERSION` and simply take the stdout # stdlib diff --git a/packages/grid/VERSION b/packages/grid/VERSION index 76c7847fbba..6fc85f1bdbc 100644 --- a/packages/grid/VERSION +++ b/packages/grid/VERSION @@ -1,5 +1,5 @@ # Mono Repo Global Version -__version__ = "0.8.7-beta.3" +__version__ = "0.8.7-beta.4" # elsewhere we can call this file: `python VERSION` and simply take the stdout # stdlib diff --git a/packages/grid/backend/worker_cpu.dockerfile b/packages/grid/backend/worker_cpu.dockerfile index 0f33c19cdfc..d199511240b 100644 --- a/packages/grid/backend/worker_cpu.dockerfile +++ b/packages/grid/backend/worker_cpu.dockerfile @@ -9,7 +9,7 @@ # Later we'd want to uninstall old python, and then install a new python runtime... # ... but pre-built syft deps may break! -ARG SYFT_VERSION_TAG="0.8.7-beta.3" +ARG SYFT_VERSION_TAG="0.8.7-beta.4" FROM openmined/grid-backend:${SYFT_VERSION_TAG} ARG PYTHON_VERSION="3.12" diff --git a/packages/grid/devspace.yaml b/packages/grid/devspace.yaml index a777e699d5a..87ef9eb3f34 100644 --- a/packages/grid/devspace.yaml +++ b/packages/grid/devspace.yaml @@ -26,7 +26,7 @@ vars: DOCKER_IMAGE_FRONTEND: openmined/grid-frontend DOCKER_IMAGE_SEAWEEDFS: openmined/grid-seaweedfs CONTAINER_REGISTRY: "docker.io" - VERSION: "0.8.7-beta.3" + VERSION: "0.8.7-beta.4" PLATFORM: $(uname -m | grep -q 'arm64' && echo "arm64" || echo "amd64") # This is a list of `images` that DevSpace can build for this project diff --git a/packages/grid/frontend/package.json b/packages/grid/frontend/package.json index 4d03df2ab6e..4acf6233c3e 100644 --- a/packages/grid/frontend/package.json +++ b/packages/grid/frontend/package.json @@ -1,6 +1,6 @@ { "name": "pygrid-ui", - "version": "0.8.7-beta.3", + "version": "0.8.7-beta.4", "private": true, "scripts": { "dev": "pnpm i && vite dev --host --port 80", diff --git a/packages/grid/helm/repo/index.yaml b/packages/grid/helm/repo/index.yaml index 3e18c21eb0e..afb43051fbf 100644 --- a/packages/grid/helm/repo/index.yaml +++ b/packages/grid/helm/repo/index.yaml @@ -1,9 +1,22 @@ apiVersion: v1 entries: syft: + - apiVersion: v2 + appVersion: 0.8.7-beta.4 + created: "2024-04-25T17:31:18.368633926Z" + description: Perform numpy-like analysis on data that remains in someone elses + server + digest: 387a57a3904a05ed61e92ee48605ef6fd5044ff7e822e0924e0d4c485e2c88d2 + home: https://github.com/OpenMined/PySyft/ + icon: https://raw.githubusercontent.com/OpenMined/PySyft/dev/docs/img/title_syft_light.png + name: syft + type: application + urls: + - https://openmined.github.io/PySyft/helm/syft-0.8.7-beta.4.tgz + version: 0.8.7-beta.4 - apiVersion: v2 appVersion: 0.8.7-beta.3 - created: "2024-04-25T04:48:27.713137611Z" + created: "2024-04-25T17:31:18.368010604Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 3668002b7a4118516b2ecd61d6275f60d83fc12841587ab8f62e1c1200731c67 @@ -16,7 +29,7 @@ entries: version: 0.8.7-beta.3 - apiVersion: v2 appVersion: 0.8.7-beta.2 - created: "2024-04-25T04:48:27.712513782Z" + created: "2024-04-25T17:31:18.367396379Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: e62217ffcadee2b8896ab0543f9ccc42f2df898fd979438ac9376d780b802af7 @@ -29,7 +42,7 @@ entries: version: 0.8.7-beta.2 - apiVersion: v2 appVersion: 0.8.7-beta.1 - created: "2024-04-25T04:48:27.711933514Z" + created: "2024-04-25T17:31:18.366808313Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 553981fe1d5c980e6903b3ff2f1b9b97431f6dd8aee91e3976bcc5594285235e @@ -42,7 +55,7 @@ entries: version: 0.8.7-beta.1 - apiVersion: v2 appVersion: 0.8.6 - created: "2024-04-25T04:48:27.711412166Z" + created: "2024-04-25T17:31:18.366279056Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: ddbbe6fea1702e57404875eb3019a3b1a341017bdbb5fbc6ce418507e5c15756 @@ -55,7 +68,7 @@ entries: version: 0.8.6 - apiVersion: v2 appVersion: 0.8.6-beta.1 - created: "2024-04-25T04:48:27.710831026Z" + created: "2024-04-25T17:31:18.365745872Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: cc2c81ef6796ac853dce256e6bf8a6af966c21803e6534ea21920af681c62e61 @@ -68,7 +81,7 @@ entries: version: 0.8.6-beta.1 - apiVersion: v2 appVersion: 0.8.5 - created: "2024-04-25T04:48:27.710301433Z" + created: "2024-04-25T17:31:18.365204362Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: db5d90d44006209fd5ecdebd88f5fd56c70f7c76898343719a0ff8da46da948a @@ -81,7 +94,7 @@ entries: version: 0.8.5 - apiVersion: v2 appVersion: 0.8.5-post.2 - created: "2024-04-25T04:48:27.709558002Z" + created: "2024-04-25T17:31:18.364391256Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: ea3f7269b55f773fa165d7008c054b7cf3ec4c62eb40a96f08cd3a9b77fd2165 @@ -94,7 +107,7 @@ entries: version: 0.8.5-post.2 - apiVersion: v2 appVersion: 0.8.5-post.1 - created: "2024-04-25T04:48:27.709014122Z" + created: "2024-04-25T17:31:18.363315745Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 9deb844d3dc2d8480c60f8c631dcc7794adfb39cec3aa3b1ce22ea26fdf87d02 @@ -107,7 +120,7 @@ entries: version: 0.8.5-post.1 - apiVersion: v2 appVersion: 0.8.5-beta.10 - created: "2024-04-25T04:48:27.701449153Z" + created: "2024-04-25T17:31:18.355888017Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 9cfe01e8f57eca462261a24a805b41509be2de9a0fee76e331d124ed98c4bc49 @@ -120,7 +133,7 @@ entries: version: 0.8.5-beta.10 - apiVersion: v2 appVersion: 0.8.5-beta.9 - created: "2024-04-25T04:48:27.708158372Z" + created: "2024-04-25T17:31:18.362362829Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 057f1733f2bc966e15618f62629315c8207773ef6211c79c4feb557dae15c32b @@ -133,7 +146,7 @@ entries: version: 0.8.5-beta.9 - apiVersion: v2 appVersion: 0.8.5-beta.8 - created: "2024-04-25T04:48:27.706713301Z" + created: "2024-04-25T17:31:18.361595328Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 921cbce836c3032ef62b48cc82b5b4fcbe44fb81d473cf4d69a4bf0f806eb298 @@ -146,7 +159,7 @@ entries: version: 0.8.5-beta.8 - apiVersion: v2 appVersion: 0.8.5-beta.7 - created: "2024-04-25T04:48:27.705977274Z" + created: "2024-04-25T17:31:18.360854937Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 75482e955b2b9853a80bd653afb1d56535f78f3bfb7726798522307eb3effbbd @@ -159,7 +172,7 @@ entries: version: 0.8.5-beta.7 - apiVersion: v2 appVersion: 0.8.5-beta.6 - created: "2024-04-25T04:48:27.705244072Z" + created: "2024-04-25T17:31:18.36008933Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 6a2dfaf65ca855e1b3d7b966d4ff291e6fcbe761e2fc2a78033211ccd3a75de0 @@ -172,7 +185,7 @@ entries: version: 0.8.5-beta.6 - apiVersion: v2 appVersion: 0.8.5-beta.5 - created: "2024-04-25T04:48:27.704509107Z" + created: "2024-04-25T17:31:18.359345623Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: fead03823bef04d66901d563aa755c68ab277f72b126aaa6f0dce76a6f3bdb6d @@ -185,7 +198,7 @@ entries: version: 0.8.5-beta.5 - apiVersion: v2 appVersion: 0.8.5-beta.4 - created: "2024-04-25T04:48:27.703766437Z" + created: "2024-04-25T17:31:18.358608188Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 93e4539d5726a7fd0d6a3e93d1c17c6a358a923ddc01d102eab22f37377502ab @@ -198,7 +211,7 @@ entries: version: 0.8.5-beta.4 - apiVersion: v2 appVersion: 0.8.5-beta.3 - created: "2024-04-25T04:48:27.702974476Z" + created: "2024-04-25T17:31:18.357854984Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: f91e9390edf3441469048f5da646099af98f8b6d199409d0e2c1e6da3a51f054 @@ -211,7 +224,7 @@ entries: version: 0.8.5-beta.3 - apiVersion: v2 appVersion: 0.8.5-beta.2 - created: "2024-04-25T04:48:27.702224814Z" + created: "2024-04-25T17:31:18.357099636Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 59159c3aa4888038edc3c0135c83402363d7a0639fe62966a1e9d4928a364fa8 @@ -224,7 +237,7 @@ entries: version: 0.8.5-beta.2 - apiVersion: v2 appVersion: 0.8.5-beta.1 - created: "2024-04-25T04:48:27.700039151Z" + created: "2024-04-25T17:31:18.354955408Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 65aeb74c52ed8ba5474af500b4c1188a570ee4cb1f2a2da356b3488d28356ed9 @@ -236,7 +249,7 @@ entries: version: 0.8.5-beta.1 - apiVersion: v2 appVersion: 0.8.4 - created: "2024-04-25T04:48:27.699658975Z" + created: "2024-04-25T17:31:18.354582543Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 08afea8e3a9eef225b7e611f0bc1216c140053ef8e51439b02337faeac621fd0 @@ -248,7 +261,7 @@ entries: version: 0.8.4 - apiVersion: v2 appVersion: 0.8.4-beta.31 - created: "2024-04-25T04:48:27.697226657Z" + created: "2024-04-25T17:31:18.352165857Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: fabf3e2f37e53fa623f5d3d99b00feae06e278e5cd63bce419089946312ab1fc @@ -260,7 +273,7 @@ entries: version: 0.8.4-beta.31 - apiVersion: v2 appVersion: 0.8.4-beta.30 - created: "2024-04-25T04:48:27.696823839Z" + created: "2024-04-25T17:31:18.351764528Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 6e8f792709f73ec14eab48a268bdf50a4505b340bd142cddd7c7bfffd94009ad @@ -272,7 +285,7 @@ entries: version: 0.8.4-beta.30 - apiVersion: v2 appVersion: 0.8.4-beta.29 - created: "2024-04-25T04:48:27.696074938Z" + created: "2024-04-25T17:31:18.3509448Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 4c985d6a9b3456769c4013f9e85e7374c0f963d2d27627e61f914f5537de1971 @@ -284,7 +297,7 @@ entries: version: 0.8.4-beta.29 - apiVersion: v2 appVersion: 0.8.4-beta.28 - created: "2024-04-25T04:48:27.695664936Z" + created: "2024-04-25T17:31:18.350508376Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: bd2aa3c92c768c47c502e31a326f341addcb34e64d22cdcbf5cc3f19689d859c @@ -296,7 +309,7 @@ entries: version: 0.8.4-beta.28 - apiVersion: v2 appVersion: 0.8.4-beta.27 - created: "2024-04-25T04:48:27.69523642Z" + created: "2024-04-25T17:31:18.349452396Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: e8ad0869993af39d7adda8cb868dc0b24cfb63b4bb9820dc579939c1007a60ba @@ -308,7 +321,7 @@ entries: version: 0.8.4-beta.27 - apiVersion: v2 appVersion: 0.8.4-beta.26 - created: "2024-04-25T04:48:27.694267023Z" + created: "2024-04-25T17:31:18.349048793Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 30dccf630aa25a86a03c67572fe5411687d8ce6d58def448ea10efdba2b85e3a @@ -320,7 +333,7 @@ entries: version: 0.8.4-beta.26 - apiVersion: v2 appVersion: 0.8.4-beta.25 - created: "2024-04-25T04:48:27.693621283Z" + created: "2024-04-25T17:31:18.348598504Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: b6e2043bcf5a0335967d770c7939f5a7832955359a7d871c90b265660ff26e5f @@ -332,7 +345,7 @@ entries: version: 0.8.4-beta.25 - apiVersion: v2 appVersion: 0.8.4-beta.24 - created: "2024-04-25T04:48:27.693224286Z" + created: "2024-04-25T17:31:18.348200832Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: b19efa95394d50bb8d76da6ec306de5d3bb9ea55371fafea95a1282a697fa33e @@ -344,7 +357,7 @@ entries: version: 0.8.4-beta.24 - apiVersion: v2 appVersion: 0.8.4-beta.23 - created: "2024-04-25T04:48:27.692827559Z" + created: "2024-04-25T17:31:18.34780799Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 5c5d05c15bff548574896118ce92335ae10c5b78f5307fe9b2618e5a5aa71a5c @@ -356,7 +369,7 @@ entries: version: 0.8.4-beta.23 - apiVersion: v2 appVersion: 0.8.4-beta.22 - created: "2024-04-25T04:48:27.692432295Z" + created: "2024-04-25T17:31:18.347415929Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 0160dbce938198132ca9cd2a5cb362816344687291f5b6d7cf6de8f2855e9414 @@ -368,7 +381,7 @@ entries: version: 0.8.4-beta.22 - apiVersion: v2 appVersion: 0.8.4-beta.21 - created: "2024-04-25T04:48:27.692036499Z" + created: "2024-04-25T17:31:18.347017706Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 7dce153d2fcae7513e9c132e139b2721fd975ea3cc43a370e34dbeb2a1b7f683 @@ -380,7 +393,7 @@ entries: version: 0.8.4-beta.21 - apiVersion: v2 appVersion: 0.8.4-beta.20 - created: "2024-04-25T04:48:27.691632349Z" + created: "2024-04-25T17:31:18.346604516Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: c51189a187bbf24135382e25cb00964e0330dfcd3b2f0c884581a6686f05dd28 @@ -392,7 +405,7 @@ entries: version: 0.8.4-beta.20 - apiVersion: v2 appVersion: 0.8.4-beta.19 - created: "2024-04-25T04:48:27.690635968Z" + created: "2024-04-25T17:31:18.345584614Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 8219575dedb42fa2ddbf2768a4e9afbfacbc2dff7e953d77c7b10a41b78dc687 @@ -404,7 +417,7 @@ entries: version: 0.8.4-beta.19 - apiVersion: v2 appVersion: 0.8.4-beta.18 - created: "2024-04-25T04:48:27.690246054Z" + created: "2024-04-25T17:31:18.345160614Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 6418cde559cf12f1f7fea5a2b123bba950e50eeb3be002441827d2ab7f9e4ef7 @@ -416,7 +429,7 @@ entries: version: 0.8.4-beta.18 - apiVersion: v2 appVersion: 0.8.4-beta.17 - created: "2024-04-25T04:48:27.689850529Z" + created: "2024-04-25T17:31:18.344687873Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 71b39c5a4c64037eadbb154f7029282ba90d9a0d703f8d4c7dfc1ba2f5d81498 @@ -428,7 +441,7 @@ entries: version: 0.8.4-beta.17 - apiVersion: v2 appVersion: 0.8.4-beta.16 - created: "2024-04-25T04:48:27.689453962Z" + created: "2024-04-25T17:31:18.344287015Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 9c9840a7c9476dbb08e0ac83926330718fe50c89879752dd8f92712b036109c0 @@ -440,7 +453,7 @@ entries: version: 0.8.4-beta.16 - apiVersion: v2 appVersion: 0.8.4-beta.15 - created: "2024-04-25T04:48:27.689050543Z" + created: "2024-04-25T17:31:18.34380122Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 0955fd22da028315e30c68132cbfa4bdc82bae622039bcfce0de339707bb82eb @@ -452,7 +465,7 @@ entries: version: 0.8.4-beta.15 - apiVersion: v2 appVersion: 0.8.4-beta.14 - created: "2024-04-25T04:48:27.68862925Z" + created: "2024-04-25T17:31:18.342861078Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 56208571956abe20ed7a5cc1867cab2667ed792c63e53d0e8bb70a9b438b7bf6 @@ -464,7 +477,7 @@ entries: version: 0.8.4-beta.14 - apiVersion: v2 appVersion: 0.8.4-beta.13 - created: "2024-04-25T04:48:27.687913147Z" + created: "2024-04-25T17:31:18.342522016Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: d7222c72412b6ee5833fbb07d2549be179cdfc7ccd89e0ad947d112fce799b83 @@ -476,7 +489,7 @@ entries: version: 0.8.4-beta.13 - apiVersion: v2 appVersion: 0.8.4-beta.12 - created: "2024-04-25T04:48:27.687322179Z" + created: "2024-04-25T17:31:18.342182603Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: af08c723756e397962b2d5190dedfd50797b771c5caf58b93a6f65d8fa24785c @@ -488,7 +501,7 @@ entries: version: 0.8.4-beta.12 - apiVersion: v2 appVersion: 0.8.4-beta.11 - created: "2024-04-25T04:48:27.686938707Z" + created: "2024-04-25T17:31:18.341843772Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: a0235835ba57d185a83dd8a26281fa37b2077c3a37fe3a1c50585005695927e3 @@ -500,7 +513,7 @@ entries: version: 0.8.4-beta.11 - apiVersion: v2 appVersion: 0.8.4-beta.10 - created: "2024-04-25T04:48:27.686598926Z" + created: "2024-04-25T17:31:18.341497085Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 910ddfeba0c5e66651500dd11404afff092adc0f768ed68e0d93b04b83aa4388 @@ -512,7 +525,7 @@ entries: version: 0.8.4-beta.10 - apiVersion: v2 appVersion: 0.8.4-beta.9 - created: "2024-04-25T04:48:27.699254253Z" + created: "2024-04-25T17:31:18.354179441Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: c25ca8a9f072d6a5d02232448deaef5668aca05f24dfffbba3ebe30a4f75bb26 @@ -524,7 +537,7 @@ entries: version: 0.8.4-beta.9 - apiVersion: v2 appVersion: 0.8.4-beta.8 - created: "2024-04-25T04:48:27.698885217Z" + created: "2024-04-25T17:31:18.353852581Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 7249a39d4137e457b369384ba0a365c271c780d93a8327ce25083df763c39999 @@ -536,7 +549,7 @@ entries: version: 0.8.4-beta.8 - apiVersion: v2 appVersion: 0.8.4-beta.7 - created: "2024-04-25T04:48:27.6985583Z" + created: "2024-04-25T17:31:18.353528007Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: ee750c7c8d6ea05bd447375e624fdd7f66dd87680ab81f7b7e73df7379a9024a @@ -548,7 +561,7 @@ entries: version: 0.8.4-beta.7 - apiVersion: v2 appVersion: 0.8.4-beta.6 - created: "2024-04-25T04:48:27.698231253Z" + created: "2024-04-25T17:31:18.353200305Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 0e046be9f73df7444a995608c59af16fab9030b139b2acb4d6db6185b8eb5337 @@ -560,7 +573,7 @@ entries: version: 0.8.4-beta.6 - apiVersion: v2 appVersion: 0.8.4-beta.5 - created: "2024-04-25T04:48:27.697899306Z" + created: "2024-04-25T17:31:18.352869509Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: b56e9a23d46810eccdb4cf5272cc05126da3f6db314e541959c3efb5f260620b @@ -572,7 +585,7 @@ entries: version: 0.8.4-beta.5 - apiVersion: v2 appVersion: 0.8.4-beta.4 - created: "2024-04-25T04:48:27.69756773Z" + created: "2024-04-25T17:31:18.35250032Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 1d5808ecaf55391f3b27ae6236400066508acbd242e33db24a1ab4bffa77409e @@ -584,7 +597,7 @@ entries: version: 0.8.4-beta.4 - apiVersion: v2 appVersion: 0.8.4-beta.3 - created: "2024-04-25T04:48:27.696419628Z" + created: "2024-04-25T17:31:18.35130921Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: b64efa8529d82be56c6ab60487ed24420a5614d96d2509c1f93c1003eda71a54 @@ -596,7 +609,7 @@ entries: version: 0.8.4-beta.3 - apiVersion: v2 appVersion: 0.8.4-beta.2 - created: "2024-04-25T04:48:27.69121307Z" + created: "2024-04-25T17:31:18.346157012Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -612,7 +625,7 @@ entries: version: 0.8.4-beta.2 - apiVersion: v2 appVersion: 0.8.4-beta.1 - created: "2024-04-25T04:48:27.686250168Z" + created: "2024-04-25T17:31:18.341122968Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -628,7 +641,7 @@ entries: version: 0.8.4-beta.1 - apiVersion: v2 appVersion: 0.8.3 - created: "2024-04-25T04:48:27.685709704Z" + created: "2024-04-25T17:31:18.340512179Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -644,7 +657,7 @@ entries: version: 0.8.3 - apiVersion: v2 appVersion: 0.8.3-beta.6 - created: "2024-04-25T04:48:27.685067772Z" + created: "2024-04-25T17:31:18.339864742Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -660,7 +673,7 @@ entries: version: 0.8.3-beta.6 - apiVersion: v2 appVersion: 0.8.3-beta.5 - created: "2024-04-25T04:48:27.68450175Z" + created: "2024-04-25T17:31:18.339288578Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -676,7 +689,7 @@ entries: version: 0.8.3-beta.5 - apiVersion: v2 appVersion: 0.8.3-beta.4 - created: "2024-04-25T04:48:27.68387719Z" + created: "2024-04-25T17:31:18.338712854Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -692,7 +705,7 @@ entries: version: 0.8.3-beta.4 - apiVersion: v2 appVersion: 0.8.3-beta.3 - created: "2024-04-25T04:48:27.683203068Z" + created: "2024-04-25T17:31:18.338042314Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -708,7 +721,7 @@ entries: version: 0.8.3-beta.3 - apiVersion: v2 appVersion: 0.8.3-beta.2 - created: "2024-04-25T04:48:27.682350845Z" + created: "2024-04-25T17:31:18.336841573Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -724,7 +737,7 @@ entries: version: 0.8.3-beta.2 - apiVersion: v2 appVersion: 0.8.3-beta.1 - created: "2024-04-25T04:48:27.68147605Z" + created: "2024-04-25T17:31:18.336221347Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -740,7 +753,7 @@ entries: version: 0.8.3-beta.1 - apiVersion: v2 appVersion: 0.8.2 - created: "2024-04-25T04:48:27.680896123Z" + created: "2024-04-25T17:31:18.335664408Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -756,7 +769,7 @@ entries: version: 0.8.2 - apiVersion: v2 appVersion: 0.8.2-beta.60 - created: "2024-04-25T04:48:27.680277374Z" + created: "2024-04-25T17:31:18.335018895Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -772,7 +785,7 @@ entries: version: 0.8.2-beta.60 - apiVersion: v2 appVersion: 0.8.2-beta.59 - created: "2024-04-25T04:48:27.679626785Z" + created: "2024-04-25T17:31:18.334389311Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -788,7 +801,7 @@ entries: version: 0.8.2-beta.59 - apiVersion: v2 appVersion: 0.8.2-beta.58 - created: "2024-04-25T04:48:27.678962161Z" + created: "2024-04-25T17:31:18.333764496Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -804,7 +817,7 @@ entries: version: 0.8.2-beta.58 - apiVersion: v2 appVersion: 0.8.2-beta.57 - created: "2024-04-25T04:48:27.678330367Z" + created: "2024-04-25T17:31:18.333125434Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -820,7 +833,7 @@ entries: version: 0.8.2-beta.57 - apiVersion: v2 appVersion: 0.8.2-beta.56 - created: "2024-04-25T04:48:27.677678967Z" + created: "2024-04-25T17:31:18.332444575Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -836,7 +849,7 @@ entries: version: 0.8.2-beta.56 - apiVersion: v2 appVersion: 0.8.2-beta.53 - created: "2024-04-25T04:48:27.676748549Z" + created: "2024-04-25T17:31:18.331769677Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -852,7 +865,7 @@ entries: version: 0.8.2-beta.53 - apiVersion: v2 appVersion: 0.8.2-beta.52 - created: "2024-04-25T04:48:27.675657713Z" + created: "2024-04-25T17:31:18.330465716Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -868,7 +881,7 @@ entries: version: 0.8.2-beta.52 - apiVersion: v2 appVersion: 0.8.2-beta.51 - created: "2024-04-25T04:48:27.674995703Z" + created: "2024-04-25T17:31:18.32984581Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -884,7 +897,7 @@ entries: version: 0.8.2-beta.51 - apiVersion: v2 appVersion: 0.8.2-beta.50 - created: "2024-04-25T04:48:27.674367867Z" + created: "2024-04-25T17:31:18.329203252Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -900,7 +913,7 @@ entries: version: 0.8.2-beta.50 - apiVersion: v2 appVersion: 0.8.2-beta.49 - created: "2024-04-25T04:48:27.67365871Z" + created: "2024-04-25T17:31:18.328540577Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -916,7 +929,7 @@ entries: version: 0.8.2-beta.49 - apiVersion: v2 appVersion: 0.8.2-beta.48 - created: "2024-04-25T04:48:27.673039259Z" + created: "2024-04-25T17:31:18.327905052Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -932,7 +945,7 @@ entries: version: 0.8.2-beta.48 - apiVersion: v2 appVersion: 0.8.2-beta.47 - created: "2024-04-25T04:48:27.67240993Z" + created: "2024-04-25T17:31:18.327250081Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -948,7 +961,7 @@ entries: version: 0.8.2-beta.47 - apiVersion: v2 appVersion: 0.8.2-beta.46 - created: "2024-04-25T04:48:27.671847986Z" + created: "2024-04-25T17:31:18.326693773Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -964,7 +977,7 @@ entries: version: 0.8.2-beta.46 - apiVersion: v2 appVersion: 0.8.2-beta.45 - created: "2024-04-25T04:48:27.671067937Z" + created: "2024-04-25T17:31:18.326055473Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -980,7 +993,7 @@ entries: version: 0.8.2-beta.45 - apiVersion: v2 appVersion: 0.8.2-beta.44 - created: "2024-04-25T04:48:27.66976656Z" + created: "2024-04-25T17:31:18.325483677Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -996,7 +1009,7 @@ entries: version: 0.8.2-beta.44 - apiVersion: v2 appVersion: 0.8.2-beta.43 - created: "2024-04-25T04:48:27.669219584Z" + created: "2024-04-25T17:31:18.323961295Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1012,7 +1025,7 @@ entries: version: 0.8.2-beta.43 - apiVersion: v2 appVersion: 0.8.2-beta.41 - created: "2024-04-25T04:48:27.668568945Z" + created: "2024-04-25T17:31:18.323319659Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1028,7 +1041,7 @@ entries: version: 0.8.2-beta.41 - apiVersion: v2 appVersion: 0.8.2-beta.40 - created: "2024-04-25T04:48:27.667920762Z" + created: "2024-04-25T17:31:18.322674356Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1044,7 +1057,7 @@ entries: version: 0.8.2-beta.40 - apiVersion: v2 appVersion: 0.8.2-beta.39 - created: "2024-04-25T04:48:27.667368155Z" + created: "2024-04-25T17:31:18.322121796Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1060,7 +1073,7 @@ entries: version: 0.8.2-beta.39 - apiVersion: v2 appVersion: 0.8.2-beta.38 - created: "2024-04-25T04:48:27.666766017Z" + created: "2024-04-25T17:31:18.321558936Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1076,7 +1089,7 @@ entries: version: 0.8.2-beta.38 - apiVersion: v2 appVersion: 0.8.2-beta.37 - created: "2024-04-25T04:48:27.666205165Z" + created: "2024-04-25T17:31:18.320963897Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1092,7 +1105,7 @@ entries: version: 0.8.2-beta.37 - apiVersion: v2 appVersion: 0.8.1 - created: "2024-04-25T04:48:27.665576357Z" + created: "2024-04-25T17:31:18.320321279Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1106,4 +1119,4 @@ entries: urls: - https://openmined.github.io/PySyft/helm/syft-0.8.1.tgz version: 0.8.1 -generated: "2024-04-25T04:48:27.664074748Z" +generated: "2024-04-25T17:31:18.319575598Z" diff --git a/packages/grid/helm/repo/syft-0.8.7-beta.4.tgz b/packages/grid/helm/repo/syft-0.8.7-beta.4.tgz new file mode 100644 index 0000000000000000000000000000000000000000..92fc910d5d71df36b744bea9eb98711c3e0c3198 GIT binary patch literal 10174 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 literal 0 HcmV?d00001 diff --git a/packages/grid/helm/syft/Chart.yaml b/packages/grid/helm/syft/Chart.yaml index f062b058146..8e68e0efa75 100644 --- a/packages/grid/helm/syft/Chart.yaml +++ b/packages/grid/helm/syft/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: syft description: Perform numpy-like analysis on data that remains in someone elses server type: application -version: "0.8.7-beta.3" -appVersion: "0.8.7-beta.3" +version: "0.8.7-beta.4" +appVersion: "0.8.7-beta.4" home: https://github.com/OpenMined/PySyft/ icon: https://raw.githubusercontent.com/OpenMined/PySyft/dev/docs/img/title_syft_light.png diff --git a/packages/grid/helm/syft/values.yaml b/packages/grid/helm/syft/values.yaml index 16f9cdf8ff3..ed37ef89815 100644 --- a/packages/grid/helm/syft/values.yaml +++ b/packages/grid/helm/syft/values.yaml @@ -1,7 +1,7 @@ global: # Affects only backend, frontend, and seaweedfs containers registry: docker.io - version: 0.8.7-beta.3 + version: 0.8.7-beta.4 # Force default secret values for development. DO NOT SET THIS TO FALSE IN PRODUCTION randomizedSecrets: true diff --git a/packages/grid/podman/podman-kube/podman-syft-kube-config.yaml b/packages/grid/podman/podman-kube/podman-syft-kube-config.yaml index f0b7a5a3374..2a182f3a4de 100644 --- a/packages/grid/podman/podman-kube/podman-syft-kube-config.yaml +++ b/packages/grid/podman/podman-kube/podman-syft-kube-config.yaml @@ -29,7 +29,7 @@ data: TRAEFIK_VERSION: v2.11.0 REDIS_VERSION: 6.2 RABBITMQ_VERSION: 3 - VERSION: 0.8.7-beta.3 + VERSION: 0.8.7-beta.4 VERSION_HASH: unknown STACK_API_KEY: "" diff --git a/packages/grid/podman/podman-kube/podman-syft-kube.yaml b/packages/grid/podman/podman-kube/podman-syft-kube.yaml index faa6dafbd5e..03624c72152 100644 --- a/packages/grid/podman/podman-kube/podman-syft-kube.yaml +++ b/packages/grid/podman/podman-kube/podman-syft-kube.yaml @@ -41,7 +41,7 @@ spec: - configMapRef: name: podman-syft-config - image: docker.io/openmined/grid-backend:0.8.7-beta.3 + image: docker.io/openmined/grid-backend:0.8.7-beta.4 imagePullPolicy: IfNotPresent resources: {} tty: true @@ -57,7 +57,7 @@ spec: envFrom: - configMapRef: name: podman-syft-config - image: docker.io/openmined/grid-frontend:0.8.7-beta.3 + image: docker.io/openmined/grid-frontend:0.8.7-beta.4 imagePullPolicy: IfNotPresent resources: {} tty: true diff --git a/packages/hagrid/hagrid/deps.py b/packages/hagrid/hagrid/deps.py index a1d85762028..d192b2d5604 100644 --- a/packages/hagrid/hagrid/deps.py +++ b/packages/hagrid/hagrid/deps.py @@ -36,7 +36,7 @@ from .nb_output import NBOutput from .version import __version__ -LATEST_BETA_SYFT = "0.8.7-beta.3" +LATEST_BETA_SYFT = "0.8.7-beta.4" DOCKER_ERROR = """ You are running an old version of docker, possibly on Linux. You need to install v2. diff --git a/packages/hagrid/hagrid/manifest_template.yml b/packages/hagrid/hagrid/manifest_template.yml index cc46479bef3..b8ab2cb5bd8 100644 --- a/packages/hagrid/hagrid/manifest_template.yml +++ b/packages/hagrid/hagrid/manifest_template.yml @@ -1,9 +1,9 @@ manifestVersion: 0.1 hagrid_version: 0.3.117 -syft_version: 0.8.7-beta.3 -dockerTag: 0.8.7-beta.3 +syft_version: 0.8.7-beta.4 +dockerTag: 0.8.7-beta.4 baseUrl: https://raw.githubusercontent.com/OpenMined/PySyft/ -hash: 24036b3fe85425f318860392124449dc6b41d71b +hash: a62c51ca7536a848a40dbf36cab66767c013cb99 target_dir: ~/.hagrid/PySyft/ files: grid: diff --git a/packages/syft/setup.cfg b/packages/syft/setup.cfg index 37d042a5dc8..95528d5014d 100644 --- a/packages/syft/setup.cfg +++ b/packages/syft/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = syft -version = attr: "0.8.7-beta.3" +version = attr: "0.8.7-beta.4" description = Perform numpy-like analysis on data that remains in someone elses server author = OpenMined author_email = info@openmined.org diff --git a/packages/syft/src/syft/VERSION b/packages/syft/src/syft/VERSION index 76c7847fbba..6fc85f1bdbc 100644 --- a/packages/syft/src/syft/VERSION +++ b/packages/syft/src/syft/VERSION @@ -1,5 +1,5 @@ # Mono Repo Global Version -__version__ = "0.8.7-beta.3" +__version__ = "0.8.7-beta.4" # elsewhere we can call this file: `python VERSION` and simply take the stdout # stdlib diff --git a/packages/syft/src/syft/__init__.py b/packages/syft/src/syft/__init__.py index 08326e6a122..e8850a112cf 100644 --- a/packages/syft/src/syft/__init__.py +++ b/packages/syft/src/syft/__init__.py @@ -1,4 +1,4 @@ -__version__ = "0.8.7-beta.3" +__version__ = "0.8.7-beta.4" # stdlib from collections.abc import Callable diff --git a/packages/syftcli/manifest.yml b/packages/syftcli/manifest.yml index a7a2437761f..b9f4ed787b1 100644 --- a/packages/syftcli/manifest.yml +++ b/packages/syftcli/manifest.yml @@ -1,11 +1,11 @@ manifestVersion: 1.0 -syftVersion: 0.8.7-beta.3 -dockerTag: 0.8.7-beta.3 +syftVersion: 0.8.7-beta.4 +dockerTag: 0.8.7-beta.4 images: - - docker.io/openmined/grid-frontend:0.8.7-beta.3 - - docker.io/openmined/grid-backend:0.8.7-beta.3 + - docker.io/openmined/grid-frontend:0.8.7-beta.4 + - docker.io/openmined/grid-backend:0.8.7-beta.4 - docker.io/library/mongo:7.0.4 - docker.io/traefik:v2.11.0 From 256443b9b1c1a15c76203ae2f3094ea5dbf6efc4 Mon Sep 17 00:00:00 2001 From: Aziz Berkay Yesilyurt Date: Fri, 26 Apr 2024 08:32:59 +0200 Subject: [PATCH 20/26] revert lineno change --- packages/syft/src/syft/service/code/user_code.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/packages/syft/src/syft/service/code/user_code.py b/packages/syft/src/syft/service/code/user_code.py index bbb990a399c..7582d18d512 100644 --- a/packages/syft/src/syft/service/code/user_code.py +++ b/packages/syft/src/syft/service/code/user_code.py @@ -1498,15 +1498,12 @@ def to_str(arg: Any) -> str: and context.job is not None and context.job.log_id is not None ): + log_id = context.job.log_id log_service = context.node.get_service("LogService") - log_service.append( - context=context, uid=context.job.log_id, new_err=error_msg - ) - exc_type, exc_value, exc_traceback = sys.exc_info() - stack = traceback.extract_tb(exc_traceback) - lineno = f" at line {stack[-1].lineno}" if stack else None + log_service.append(context=context, uid=log_id, new_err=error_msg) + result_message = ( - f"Exception encountered while running {code_item.service_func_name}{lineno}" + f"Exception encountered while running {code_item.service_func_name}" ", please contact the Node Admin for more info." ) if context.dev_mode: From d32e3abe4a1a40ff98fe897ecd5d7343b9476933 Mon Sep 17 00:00:00 2001 From: Aziz Berkay Yesilyurt Date: Fri, 26 Apr 2024 08:39:47 +0200 Subject: [PATCH 21/26] fix fstring --- packages/syft/src/syft/service/job/job_stash.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/syft/src/syft/service/job/job_stash.py b/packages/syft/src/syft/service/job/job_stash.py index 8d8d0b8b339..3cbaa608a10 100644 --- a/packages/syft/src/syft/service/job/job_stash.py +++ b/packages/syft/src/syft/service/job/job_stash.py @@ -623,7 +623,7 @@ def _repr_html_(self) -> str: logs = self.logs(_print=False) log_lines = logs.strip().split("\n") if logs else [] - log_lines.insert(0, f"{"Message"}") + log_lines.insert(0, "Message") log_lines = [f"{line}" for line in log_lines] logs = "\n".join(log_lines) @@ -631,7 +631,7 @@ def _repr_html_(self) -> str: logs_lines_html = r""" + +
+
         ${logs_lines_html}
-    
+ """ diff --git a/packages/syft/src/syft/service/job/job_stash.py b/packages/syft/src/syft/service/job/job_stash.py index 3cbaa608a10..d394e35991a 100644 --- a/packages/syft/src/syft/service/job/job_stash.py +++ b/packages/syft/src/syft/service/job/job_stash.py @@ -622,49 +622,11 @@ def _repr_html_(self) -> str: """ logs = self.logs(_print=False) - log_lines = logs.strip().split("\n") if logs else [] - log_lines.insert(0, "Message") - - log_lines = [f"{line}" for line in log_lines] - logs = "\n".join(log_lines) - - logs_lines_html = r""" - - -
-{logs}
-
-""".format(logs=logs) + logs_lines = logs.strip().split("\n") if logs else [] + logs_lines.insert(0, "Message") + + logs_lines = [f"{line}" for line in logs_lines] + logs_lines_html = "\n".join(logs_lines) template = Template(job_repr_template) return template.substitute( From 6ee322b724b96e2e2d6158aadfd6850bb6ba2a64 Mon Sep 17 00:00:00 2001 From: Aziz Berkay Yesilyurt Date: Fri, 26 Apr 2024 09:05:47 +0200 Subject: [PATCH 23/26] fix test --- .../syft/tests/syft/service/sync/sync_resolve_single_test.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/syft/tests/syft/service/sync/sync_resolve_single_test.py b/packages/syft/tests/syft/service/sync/sync_resolve_single_test.py index 4c01293e50a..550b299a619 100644 --- a/packages/syft/tests/syft/service/sync/sync_resolve_single_test.py +++ b/packages/syft/tests/syft/service/sync/sync_resolve_single_test.py @@ -4,6 +4,7 @@ # third party import pytest +from result import Err # syft absolute import syft @@ -121,7 +122,7 @@ def compute() -> int: client_low_ds.refresh() res = client_low_ds.code.compute(blocking=True) - assert isinstance(res, SyftError) + assert isinstance(res.get(), Err) def test_ignore_unignore_single(low_worker, high_worker): From 2be8bd0de16c49e929e6c8f851557aa6bb238900 Mon Sep 17 00:00:00 2001 From: Aziz Berkay Yesilyurt Date: Fri, 26 Apr 2024 10:03:23 +0200 Subject: [PATCH 24/26] fix error handling in queue --- packages/syft/src/syft/service/queue/queue.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/syft/src/syft/service/queue/queue.py b/packages/syft/src/syft/service/queue/queue.py index cc2d502d122..fcf5cd2b397 100644 --- a/packages/syft/src/syft/service/queue/queue.py +++ b/packages/syft/src/syft/service/queue/queue.py @@ -200,15 +200,19 @@ def handle_message_multiprocessing( status = Status.COMPLETED job_status = JobStatus.COMPLETED - if isinstance(result.ok().syft_action_data, Err): - status = Status.ERRORED - job_status = JobStatus.ERRORED + if isinstance(result, Ok): result = result.ok() + if hasattr(result, "syft_action_data") and isinstance( + result.syft_action_data, Err + ): + status = Status.ERRORED + job_status = JobStatus.ERRORED elif isinstance(result, SyftError) or isinstance(result, Err): status = Status.ERRORED job_status = JobStatus.ERRORED - elif isinstance(result, Ok): - result = result.ok() + + else: + raise Exception(f"Unknown result type: {type(result)}") except Exception as e: # nosec status = Status.ERRORED job_status = JobStatus.ERRORED From 276348c2105f112d9db5ea7846918340b9bb7c8c Mon Sep 17 00:00:00 2001 From: eelcovdw Date: Fri, 26 Apr 2024 11:46:31 +0200 Subject: [PATCH 25/26] create Action for twinapi exec --- packages/syft/src/syft/node/node.py | 9 ++++++++- .../syft/src/syft/service/action/action_object.py | 11 +++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/packages/syft/src/syft/node/node.py b/packages/syft/src/syft/node/node.py index 849e8267004..2af9504cf13 100644 --- a/packages/syft/src/syft/node/node.py +++ b/packages/syft/src/syft/node/node.py @@ -1236,7 +1236,14 @@ def add_api_endpoint_execution_to_queue( has_execute_permissions=True, worker_pool=worker_pool_ref, # set worker pool reference as part of queue item ) - return self.add_queueitem_to_queue(queue_item, credentials, None, None) + + action = Action.from_api_endpoint_execution() + return self.add_queueitem_to_queue( + queue_item, + credentials, + action, + None, + ) def add_action_to_queue( self, diff --git a/packages/syft/src/syft/service/action/action_object.py b/packages/syft/src/syft/service/action/action_object.py index d8a8f777160..6b68f4c2232 100644 --- a/packages/syft/src/syft/service/action/action_object.py +++ b/packages/syft/src/syft/service/action/action_object.py @@ -81,6 +81,7 @@ class ActionType(Enum): FUNCTION = 8 CREATEOBJECT = 16 SYFTFUNCTION = 32 + TWINAPI = 64 def repr_cls(c: Any) -> str: @@ -199,6 +200,16 @@ def from_api_call(cls, api_call: SyftAPICall) -> Action: ) return action + @classmethod + def from_api_endpoint_execution(cls: type[Self]) -> Action: + return cls( + args=[], + kwargs={}, + result_id=LineageID(), + action_type=ActionType.TWINAPI, + user_code_id=None, + ) + def __repr__(self) -> str: def repr_uid(_id: LineageID) -> str: return f"{str(_id)[:3]}..{str(_id)[-1]}" From 948fa1a85bae427e44fc7998303f12752e1c861e Mon Sep 17 00:00:00 2001 From: alfred-openmined-bot <145415986+alfred-openmined-bot@users.noreply.github.com> Date: Fri, 26 Apr 2024 12:51:12 +0000 Subject: [PATCH 26/26] [syft]bump version --- .bumpversion.cfg | 2 +- VERSION | 2 +- packages/grid/VERSION | 2 +- packages/grid/backend/worker_cpu.dockerfile | 2 +- packages/grid/devspace.yaml | 2 +- packages/grid/frontend/package.json | 2 +- packages/grid/helm/repo/index.yaml | 177 ++++++++++-------- packages/grid/helm/repo/syft-0.8.7-beta.5.tgz | Bin 0 -> 10174 bytes packages/grid/helm/syft/Chart.yaml | 4 +- packages/grid/helm/syft/values.yaml | 2 +- .../podman-kube/podman-syft-kube-config.yaml | 2 +- .../podman/podman-kube/podman-syft-kube.yaml | 4 +- packages/hagrid/hagrid/deps.py | 2 +- packages/hagrid/hagrid/manifest_template.yml | 6 +- packages/syft/setup.cfg | 2 +- packages/syft/src/syft/VERSION | 2 +- packages/syft/src/syft/__init__.py | 2 +- packages/syftcli/manifest.yml | 8 +- 18 files changed, 118 insertions(+), 105 deletions(-) create mode 100644 packages/grid/helm/repo/syft-0.8.7-beta.5.tgz diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 89f07d73181..b773b027577 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.8.7-beta.4 +current_version = 0.8.7-beta.5 tag = False tag_name = {new_version} commit = True diff --git a/VERSION b/VERSION index 6fc85f1bdbc..580a5526c03 100644 --- a/VERSION +++ b/VERSION @@ -1,5 +1,5 @@ # Mono Repo Global Version -__version__ = "0.8.7-beta.4" +__version__ = "0.8.7-beta.5" # elsewhere we can call this file: `python VERSION` and simply take the stdout # stdlib diff --git a/packages/grid/VERSION b/packages/grid/VERSION index 6fc85f1bdbc..580a5526c03 100644 --- a/packages/grid/VERSION +++ b/packages/grid/VERSION @@ -1,5 +1,5 @@ # Mono Repo Global Version -__version__ = "0.8.7-beta.4" +__version__ = "0.8.7-beta.5" # elsewhere we can call this file: `python VERSION` and simply take the stdout # stdlib diff --git a/packages/grid/backend/worker_cpu.dockerfile b/packages/grid/backend/worker_cpu.dockerfile index d199511240b..79bd8359f6a 100644 --- a/packages/grid/backend/worker_cpu.dockerfile +++ b/packages/grid/backend/worker_cpu.dockerfile @@ -9,7 +9,7 @@ # Later we'd want to uninstall old python, and then install a new python runtime... # ... but pre-built syft deps may break! -ARG SYFT_VERSION_TAG="0.8.7-beta.4" +ARG SYFT_VERSION_TAG="0.8.7-beta.5" FROM openmined/grid-backend:${SYFT_VERSION_TAG} ARG PYTHON_VERSION="3.12" diff --git a/packages/grid/devspace.yaml b/packages/grid/devspace.yaml index 87ef9eb3f34..46357aaf3db 100644 --- a/packages/grid/devspace.yaml +++ b/packages/grid/devspace.yaml @@ -26,7 +26,7 @@ vars: DOCKER_IMAGE_FRONTEND: openmined/grid-frontend DOCKER_IMAGE_SEAWEEDFS: openmined/grid-seaweedfs CONTAINER_REGISTRY: "docker.io" - VERSION: "0.8.7-beta.4" + VERSION: "0.8.7-beta.5" PLATFORM: $(uname -m | grep -q 'arm64' && echo "arm64" || echo "amd64") # This is a list of `images` that DevSpace can build for this project diff --git a/packages/grid/frontend/package.json b/packages/grid/frontend/package.json index 4acf6233c3e..ba307623849 100644 --- a/packages/grid/frontend/package.json +++ b/packages/grid/frontend/package.json @@ -1,6 +1,6 @@ { "name": "pygrid-ui", - "version": "0.8.7-beta.4", + "version": "0.8.7-beta.5", "private": true, "scripts": { "dev": "pnpm i && vite dev --host --port 80", diff --git a/packages/grid/helm/repo/index.yaml b/packages/grid/helm/repo/index.yaml index afb43051fbf..9fe138a67bc 100644 --- a/packages/grid/helm/repo/index.yaml +++ b/packages/grid/helm/repo/index.yaml @@ -1,9 +1,22 @@ apiVersion: v1 entries: syft: + - apiVersion: v2 + appVersion: 0.8.7-beta.5 + created: "2024-04-26T12:48:58.442166798Z" + description: Perform numpy-like analysis on data that remains in someone elses + server + digest: 1728af756907c3fcbe87c2fd2de014a2d963c22a4c2eb6af6596b525a9b9a18a + home: https://github.com/OpenMined/PySyft/ + icon: https://raw.githubusercontent.com/OpenMined/PySyft/dev/docs/img/title_syft_light.png + name: syft + type: application + urls: + - https://openmined.github.io/PySyft/helm/syft-0.8.7-beta.5.tgz + version: 0.8.7-beta.5 - apiVersion: v2 appVersion: 0.8.7-beta.4 - created: "2024-04-25T17:31:18.368633926Z" + created: "2024-04-26T12:48:58.44154187Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 387a57a3904a05ed61e92ee48605ef6fd5044ff7e822e0924e0d4c485e2c88d2 @@ -16,7 +29,7 @@ entries: version: 0.8.7-beta.4 - apiVersion: v2 appVersion: 0.8.7-beta.3 - created: "2024-04-25T17:31:18.368010604Z" + created: "2024-04-26T12:48:58.440927392Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 3668002b7a4118516b2ecd61d6275f60d83fc12841587ab8f62e1c1200731c67 @@ -29,7 +42,7 @@ entries: version: 0.8.7-beta.3 - apiVersion: v2 appVersion: 0.8.7-beta.2 - created: "2024-04-25T17:31:18.367396379Z" + created: "2024-04-26T12:48:58.440312042Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: e62217ffcadee2b8896ab0543f9ccc42f2df898fd979438ac9376d780b802af7 @@ -42,7 +55,7 @@ entries: version: 0.8.7-beta.2 - apiVersion: v2 appVersion: 0.8.7-beta.1 - created: "2024-04-25T17:31:18.366808313Z" + created: "2024-04-26T12:48:58.439693025Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 553981fe1d5c980e6903b3ff2f1b9b97431f6dd8aee91e3976bcc5594285235e @@ -55,7 +68,7 @@ entries: version: 0.8.7-beta.1 - apiVersion: v2 appVersion: 0.8.6 - created: "2024-04-25T17:31:18.366279056Z" + created: "2024-04-26T12:48:58.439190817Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: ddbbe6fea1702e57404875eb3019a3b1a341017bdbb5fbc6ce418507e5c15756 @@ -68,7 +81,7 @@ entries: version: 0.8.6 - apiVersion: v2 appVersion: 0.8.6-beta.1 - created: "2024-04-25T17:31:18.365745872Z" + created: "2024-04-26T12:48:58.438661698Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: cc2c81ef6796ac853dce256e6bf8a6af966c21803e6534ea21920af681c62e61 @@ -81,7 +94,7 @@ entries: version: 0.8.6-beta.1 - apiVersion: v2 appVersion: 0.8.5 - created: "2024-04-25T17:31:18.365204362Z" + created: "2024-04-26T12:48:58.438128802Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: db5d90d44006209fd5ecdebd88f5fd56c70f7c76898343719a0ff8da46da948a @@ -94,7 +107,7 @@ entries: version: 0.8.5 - apiVersion: v2 appVersion: 0.8.5-post.2 - created: "2024-04-25T17:31:18.364391256Z" + created: "2024-04-26T12:48:58.437296517Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: ea3f7269b55f773fa165d7008c054b7cf3ec4c62eb40a96f08cd3a9b77fd2165 @@ -107,7 +120,7 @@ entries: version: 0.8.5-post.2 - apiVersion: v2 appVersion: 0.8.5-post.1 - created: "2024-04-25T17:31:18.363315745Z" + created: "2024-04-26T12:48:58.436701324Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 9deb844d3dc2d8480c60f8c631dcc7794adfb39cec3aa3b1ce22ea26fdf87d02 @@ -120,7 +133,7 @@ entries: version: 0.8.5-post.1 - apiVersion: v2 appVersion: 0.8.5-beta.10 - created: "2024-04-25T17:31:18.355888017Z" + created: "2024-04-26T12:48:58.428728596Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 9cfe01e8f57eca462261a24a805b41509be2de9a0fee76e331d124ed98c4bc49 @@ -133,7 +146,7 @@ entries: version: 0.8.5-beta.10 - apiVersion: v2 appVersion: 0.8.5-beta.9 - created: "2024-04-25T17:31:18.362362829Z" + created: "2024-04-26T12:48:58.435396533Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 057f1733f2bc966e15618f62629315c8207773ef6211c79c4feb557dae15c32b @@ -146,7 +159,7 @@ entries: version: 0.8.5-beta.9 - apiVersion: v2 appVersion: 0.8.5-beta.8 - created: "2024-04-25T17:31:18.361595328Z" + created: "2024-04-26T12:48:58.434665668Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 921cbce836c3032ef62b48cc82b5b4fcbe44fb81d473cf4d69a4bf0f806eb298 @@ -159,7 +172,7 @@ entries: version: 0.8.5-beta.8 - apiVersion: v2 appVersion: 0.8.5-beta.7 - created: "2024-04-25T17:31:18.360854937Z" + created: "2024-04-26T12:48:58.43392327Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 75482e955b2b9853a80bd653afb1d56535f78f3bfb7726798522307eb3effbbd @@ -172,7 +185,7 @@ entries: version: 0.8.5-beta.7 - apiVersion: v2 appVersion: 0.8.5-beta.6 - created: "2024-04-25T17:31:18.36008933Z" + created: "2024-04-26T12:48:58.433188858Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 6a2dfaf65ca855e1b3d7b966d4ff291e6fcbe761e2fc2a78033211ccd3a75de0 @@ -185,7 +198,7 @@ entries: version: 0.8.5-beta.6 - apiVersion: v2 appVersion: 0.8.5-beta.5 - created: "2024-04-25T17:31:18.359345623Z" + created: "2024-04-26T12:48:58.432453674Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: fead03823bef04d66901d563aa755c68ab277f72b126aaa6f0dce76a6f3bdb6d @@ -198,7 +211,7 @@ entries: version: 0.8.5-beta.5 - apiVersion: v2 appVersion: 0.8.5-beta.4 - created: "2024-04-25T17:31:18.358608188Z" + created: "2024-04-26T12:48:58.431676733Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 93e4539d5726a7fd0d6a3e93d1c17c6a358a923ddc01d102eab22f37377502ab @@ -211,7 +224,7 @@ entries: version: 0.8.5-beta.4 - apiVersion: v2 appVersion: 0.8.5-beta.3 - created: "2024-04-25T17:31:18.357854984Z" + created: "2024-04-26T12:48:58.430926851Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: f91e9390edf3441469048f5da646099af98f8b6d199409d0e2c1e6da3a51f054 @@ -224,7 +237,7 @@ entries: version: 0.8.5-beta.3 - apiVersion: v2 appVersion: 0.8.5-beta.2 - created: "2024-04-25T17:31:18.357099636Z" + created: "2024-04-26T12:48:58.430156742Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 59159c3aa4888038edc3c0135c83402363d7a0639fe62966a1e9d4928a364fa8 @@ -237,7 +250,7 @@ entries: version: 0.8.5-beta.2 - apiVersion: v2 appVersion: 0.8.5-beta.1 - created: "2024-04-25T17:31:18.354955408Z" + created: "2024-04-26T12:48:58.427948268Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 65aeb74c52ed8ba5474af500b4c1188a570ee4cb1f2a2da356b3488d28356ed9 @@ -249,7 +262,7 @@ entries: version: 0.8.5-beta.1 - apiVersion: v2 appVersion: 0.8.4 - created: "2024-04-25T17:31:18.354582543Z" + created: "2024-04-26T12:48:58.4275429Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 08afea8e3a9eef225b7e611f0bc1216c140053ef8e51439b02337faeac621fd0 @@ -261,7 +274,7 @@ entries: version: 0.8.4 - apiVersion: v2 appVersion: 0.8.4-beta.31 - created: "2024-04-25T17:31:18.352165857Z" + created: "2024-04-26T12:48:58.42516138Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: fabf3e2f37e53fa623f5d3d99b00feae06e278e5cd63bce419089946312ab1fc @@ -273,7 +286,7 @@ entries: version: 0.8.4-beta.31 - apiVersion: v2 appVersion: 0.8.4-beta.30 - created: "2024-04-25T17:31:18.351764528Z" + created: "2024-04-26T12:48:58.42475444Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 6e8f792709f73ec14eab48a268bdf50a4505b340bd142cddd7c7bfffd94009ad @@ -285,7 +298,7 @@ entries: version: 0.8.4-beta.30 - apiVersion: v2 appVersion: 0.8.4-beta.29 - created: "2024-04-25T17:31:18.3509448Z" + created: "2024-04-26T12:48:58.423506395Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 4c985d6a9b3456769c4013f9e85e7374c0f963d2d27627e61f914f5537de1971 @@ -297,7 +310,7 @@ entries: version: 0.8.4-beta.29 - apiVersion: v2 appVersion: 0.8.4-beta.28 - created: "2024-04-25T17:31:18.350508376Z" + created: "2024-04-26T12:48:58.422811988Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: bd2aa3c92c768c47c502e31a326f341addcb34e64d22cdcbf5cc3f19689d859c @@ -309,7 +322,7 @@ entries: version: 0.8.4-beta.28 - apiVersion: v2 appVersion: 0.8.4-beta.27 - created: "2024-04-25T17:31:18.349452396Z" + created: "2024-04-26T12:48:58.422415476Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: e8ad0869993af39d7adda8cb868dc0b24cfb63b4bb9820dc579939c1007a60ba @@ -321,7 +334,7 @@ entries: version: 0.8.4-beta.27 - apiVersion: v2 appVersion: 0.8.4-beta.26 - created: "2024-04-25T17:31:18.349048793Z" + created: "2024-04-26T12:48:58.422017513Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 30dccf630aa25a86a03c67572fe5411687d8ce6d58def448ea10efdba2b85e3a @@ -333,7 +346,7 @@ entries: version: 0.8.4-beta.26 - apiVersion: v2 appVersion: 0.8.4-beta.25 - created: "2024-04-25T17:31:18.348598504Z" + created: "2024-04-26T12:48:58.421622254Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: b6e2043bcf5a0335967d770c7939f5a7832955359a7d871c90b265660ff26e5f @@ -345,7 +358,7 @@ entries: version: 0.8.4-beta.25 - apiVersion: v2 appVersion: 0.8.4-beta.24 - created: "2024-04-25T17:31:18.348200832Z" + created: "2024-04-26T12:48:58.421209563Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: b19efa95394d50bb8d76da6ec306de5d3bb9ea55371fafea95a1282a697fa33e @@ -357,7 +370,7 @@ entries: version: 0.8.4-beta.24 - apiVersion: v2 appVersion: 0.8.4-beta.23 - created: "2024-04-25T17:31:18.34780799Z" + created: "2024-04-26T12:48:58.4207423Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 5c5d05c15bff548574896118ce92335ae10c5b78f5307fe9b2618e5a5aa71a5c @@ -369,7 +382,7 @@ entries: version: 0.8.4-beta.23 - apiVersion: v2 appVersion: 0.8.4-beta.22 - created: "2024-04-25T17:31:18.347415929Z" + created: "2024-04-26T12:48:58.420338716Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 0160dbce938198132ca9cd2a5cb362816344687291f5b6d7cf6de8f2855e9414 @@ -381,7 +394,7 @@ entries: version: 0.8.4-beta.22 - apiVersion: v2 appVersion: 0.8.4-beta.21 - created: "2024-04-25T17:31:18.347017706Z" + created: "2024-04-26T12:48:58.419921115Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 7dce153d2fcae7513e9c132e139b2721fd975ea3cc43a370e34dbeb2a1b7f683 @@ -393,7 +406,7 @@ entries: version: 0.8.4-beta.21 - apiVersion: v2 appVersion: 0.8.4-beta.20 - created: "2024-04-25T17:31:18.346604516Z" + created: "2024-04-26T12:48:58.419469462Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: c51189a187bbf24135382e25cb00964e0330dfcd3b2f0c884581a6686f05dd28 @@ -405,7 +418,7 @@ entries: version: 0.8.4-beta.20 - apiVersion: v2 appVersion: 0.8.4-beta.19 - created: "2024-04-25T17:31:18.345584614Z" + created: "2024-04-26T12:48:58.418433265Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 8219575dedb42fa2ddbf2768a4e9afbfacbc2dff7e953d77c7b10a41b78dc687 @@ -417,7 +430,7 @@ entries: version: 0.8.4-beta.19 - apiVersion: v2 appVersion: 0.8.4-beta.18 - created: "2024-04-25T17:31:18.345160614Z" + created: "2024-04-26T12:48:58.417990007Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 6418cde559cf12f1f7fea5a2b123bba950e50eeb3be002441827d2ab7f9e4ef7 @@ -429,7 +442,7 @@ entries: version: 0.8.4-beta.18 - apiVersion: v2 appVersion: 0.8.4-beta.17 - created: "2024-04-25T17:31:18.344687873Z" + created: "2024-04-26T12:48:58.417134496Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 71b39c5a4c64037eadbb154f7029282ba90d9a0d703f8d4c7dfc1ba2f5d81498 @@ -441,7 +454,7 @@ entries: version: 0.8.4-beta.17 - apiVersion: v2 appVersion: 0.8.4-beta.16 - created: "2024-04-25T17:31:18.344287015Z" + created: "2024-04-26T12:48:58.416588767Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 9c9840a7c9476dbb08e0ac83926330718fe50c89879752dd8f92712b036109c0 @@ -453,7 +466,7 @@ entries: version: 0.8.4-beta.16 - apiVersion: v2 appVersion: 0.8.4-beta.15 - created: "2024-04-25T17:31:18.34380122Z" + created: "2024-04-26T12:48:58.416186144Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 0955fd22da028315e30c68132cbfa4bdc82bae622039bcfce0de339707bb82eb @@ -465,7 +478,7 @@ entries: version: 0.8.4-beta.15 - apiVersion: v2 appVersion: 0.8.4-beta.14 - created: "2024-04-25T17:31:18.342861078Z" + created: "2024-04-26T12:48:58.415762743Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 56208571956abe20ed7a5cc1867cab2667ed792c63e53d0e8bb70a9b438b7bf6 @@ -477,7 +490,7 @@ entries: version: 0.8.4-beta.14 - apiVersion: v2 appVersion: 0.8.4-beta.13 - created: "2024-04-25T17:31:18.342522016Z" + created: "2024-04-26T12:48:58.41541838Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: d7222c72412b6ee5833fbb07d2549be179cdfc7ccd89e0ad947d112fce799b83 @@ -489,7 +502,7 @@ entries: version: 0.8.4-beta.13 - apiVersion: v2 appVersion: 0.8.4-beta.12 - created: "2024-04-25T17:31:18.342182603Z" + created: "2024-04-26T12:48:58.415076691Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: af08c723756e397962b2d5190dedfd50797b771c5caf58b93a6f65d8fa24785c @@ -501,7 +514,7 @@ entries: version: 0.8.4-beta.12 - apiVersion: v2 appVersion: 0.8.4-beta.11 - created: "2024-04-25T17:31:18.341843772Z" + created: "2024-04-26T12:48:58.414735564Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: a0235835ba57d185a83dd8a26281fa37b2077c3a37fe3a1c50585005695927e3 @@ -513,7 +526,7 @@ entries: version: 0.8.4-beta.11 - apiVersion: v2 appVersion: 0.8.4-beta.10 - created: "2024-04-25T17:31:18.341497085Z" + created: "2024-04-26T12:48:58.414395538Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 910ddfeba0c5e66651500dd11404afff092adc0f768ed68e0d93b04b83aa4388 @@ -525,7 +538,7 @@ entries: version: 0.8.4-beta.10 - apiVersion: v2 appVersion: 0.8.4-beta.9 - created: "2024-04-25T17:31:18.354179441Z" + created: "2024-04-26T12:48:58.427147161Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: c25ca8a9f072d6a5d02232448deaef5668aca05f24dfffbba3ebe30a4f75bb26 @@ -537,7 +550,7 @@ entries: version: 0.8.4-beta.9 - apiVersion: v2 appVersion: 0.8.4-beta.8 - created: "2024-04-25T17:31:18.353852581Z" + created: "2024-04-26T12:48:58.426818757Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 7249a39d4137e457b369384ba0a365c271c780d93a8327ce25083df763c39999 @@ -549,7 +562,7 @@ entries: version: 0.8.4-beta.8 - apiVersion: v2 appVersion: 0.8.4-beta.7 - created: "2024-04-25T17:31:18.353528007Z" + created: "2024-04-26T12:48:58.42648857Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: ee750c7c8d6ea05bd447375e624fdd7f66dd87680ab81f7b7e73df7379a9024a @@ -561,7 +574,7 @@ entries: version: 0.8.4-beta.7 - apiVersion: v2 appVersion: 0.8.4-beta.6 - created: "2024-04-25T17:31:18.353200305Z" + created: "2024-04-26T12:48:58.426162491Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 0e046be9f73df7444a995608c59af16fab9030b139b2acb4d6db6185b8eb5337 @@ -573,7 +586,7 @@ entries: version: 0.8.4-beta.6 - apiVersion: v2 appVersion: 0.8.4-beta.5 - created: "2024-04-25T17:31:18.352869509Z" + created: "2024-04-26T12:48:58.425832555Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: b56e9a23d46810eccdb4cf5272cc05126da3f6db314e541959c3efb5f260620b @@ -585,7 +598,7 @@ entries: version: 0.8.4-beta.5 - apiVersion: v2 appVersion: 0.8.4-beta.4 - created: "2024-04-25T17:31:18.35250032Z" + created: "2024-04-26T12:48:58.425498721Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 1d5808ecaf55391f3b27ae6236400066508acbd242e33db24a1ab4bffa77409e @@ -597,7 +610,7 @@ entries: version: 0.8.4-beta.4 - apiVersion: v2 appVersion: 0.8.4-beta.3 - created: "2024-04-25T17:31:18.35130921Z" + created: "2024-04-26T12:48:58.424323916Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: b64efa8529d82be56c6ab60487ed24420a5614d96d2509c1f93c1003eda71a54 @@ -609,7 +622,7 @@ entries: version: 0.8.4-beta.3 - apiVersion: v2 appVersion: 0.8.4-beta.2 - created: "2024-04-25T17:31:18.346157012Z" + created: "2024-04-26T12:48:58.41905135Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -625,7 +638,7 @@ entries: version: 0.8.4-beta.2 - apiVersion: v2 appVersion: 0.8.4-beta.1 - created: "2024-04-25T17:31:18.341122968Z" + created: "2024-04-26T12:48:58.414050463Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -641,7 +654,7 @@ entries: version: 0.8.4-beta.1 - apiVersion: v2 appVersion: 0.8.3 - created: "2024-04-25T17:31:18.340512179Z" + created: "2024-04-26T12:48:58.413500576Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -657,7 +670,7 @@ entries: version: 0.8.3 - apiVersion: v2 appVersion: 0.8.3-beta.6 - created: "2024-04-25T17:31:18.339864742Z" + created: "2024-04-26T12:48:58.41283398Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -673,7 +686,7 @@ entries: version: 0.8.3-beta.6 - apiVersion: v2 appVersion: 0.8.3-beta.5 - created: "2024-04-25T17:31:18.339288578Z" + created: "2024-04-26T12:48:58.412240471Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -689,7 +702,7 @@ entries: version: 0.8.3-beta.5 - apiVersion: v2 appVersion: 0.8.3-beta.4 - created: "2024-04-25T17:31:18.338712854Z" + created: "2024-04-26T12:48:58.411041448Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -705,7 +718,7 @@ entries: version: 0.8.3-beta.4 - apiVersion: v2 appVersion: 0.8.3-beta.3 - created: "2024-04-25T17:31:18.338042314Z" + created: "2024-04-26T12:48:58.410250049Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -721,7 +734,7 @@ entries: version: 0.8.3-beta.3 - apiVersion: v2 appVersion: 0.8.3-beta.2 - created: "2024-04-25T17:31:18.336841573Z" + created: "2024-04-26T12:48:58.409715069Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -737,7 +750,7 @@ entries: version: 0.8.3-beta.2 - apiVersion: v2 appVersion: 0.8.3-beta.1 - created: "2024-04-25T17:31:18.336221347Z" + created: "2024-04-26T12:48:58.409179478Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -753,7 +766,7 @@ entries: version: 0.8.3-beta.1 - apiVersion: v2 appVersion: 0.8.2 - created: "2024-04-25T17:31:18.335664408Z" + created: "2024-04-26T12:48:58.408605356Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -769,7 +782,7 @@ entries: version: 0.8.2 - apiVersion: v2 appVersion: 0.8.2-beta.60 - created: "2024-04-25T17:31:18.335018895Z" + created: "2024-04-26T12:48:58.407963346Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -785,7 +798,7 @@ entries: version: 0.8.2-beta.60 - apiVersion: v2 appVersion: 0.8.2-beta.59 - created: "2024-04-25T17:31:18.334389311Z" + created: "2024-04-26T12:48:58.407271573Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -801,7 +814,7 @@ entries: version: 0.8.2-beta.59 - apiVersion: v2 appVersion: 0.8.2-beta.58 - created: "2024-04-25T17:31:18.333764496Z" + created: "2024-04-26T12:48:58.406608975Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -817,7 +830,7 @@ entries: version: 0.8.2-beta.58 - apiVersion: v2 appVersion: 0.8.2-beta.57 - created: "2024-04-25T17:31:18.333125434Z" + created: "2024-04-26T12:48:58.405763974Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -833,7 +846,7 @@ entries: version: 0.8.2-beta.57 - apiVersion: v2 appVersion: 0.8.2-beta.56 - created: "2024-04-25T17:31:18.332444575Z" + created: "2024-04-26T12:48:58.40449902Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -849,7 +862,7 @@ entries: version: 0.8.2-beta.56 - apiVersion: v2 appVersion: 0.8.2-beta.53 - created: "2024-04-25T17:31:18.331769677Z" + created: "2024-04-26T12:48:58.403866177Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -865,7 +878,7 @@ entries: version: 0.8.2-beta.53 - apiVersion: v2 appVersion: 0.8.2-beta.52 - created: "2024-04-25T17:31:18.330465716Z" + created: "2024-04-26T12:48:58.403220711Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -881,7 +894,7 @@ entries: version: 0.8.2-beta.52 - apiVersion: v2 appVersion: 0.8.2-beta.51 - created: "2024-04-25T17:31:18.32984581Z" + created: "2024-04-26T12:48:58.402601274Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -897,7 +910,7 @@ entries: version: 0.8.2-beta.51 - apiVersion: v2 appVersion: 0.8.2-beta.50 - created: "2024-04-25T17:31:18.329203252Z" + created: "2024-04-26T12:48:58.401964654Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -913,7 +926,7 @@ entries: version: 0.8.2-beta.50 - apiVersion: v2 appVersion: 0.8.2-beta.49 - created: "2024-04-25T17:31:18.328540577Z" + created: "2024-04-26T12:48:58.401334507Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -929,7 +942,7 @@ entries: version: 0.8.2-beta.49 - apiVersion: v2 appVersion: 0.8.2-beta.48 - created: "2024-04-25T17:31:18.327905052Z" + created: "2024-04-26T12:48:58.40063545Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -945,7 +958,7 @@ entries: version: 0.8.2-beta.48 - apiVersion: v2 appVersion: 0.8.2-beta.47 - created: "2024-04-25T17:31:18.327250081Z" + created: "2024-04-26T12:48:58.399352981Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -961,7 +974,7 @@ entries: version: 0.8.2-beta.47 - apiVersion: v2 appVersion: 0.8.2-beta.46 - created: "2024-04-25T17:31:18.326693773Z" + created: "2024-04-26T12:48:58.398797683Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -977,7 +990,7 @@ entries: version: 0.8.2-beta.46 - apiVersion: v2 appVersion: 0.8.2-beta.45 - created: "2024-04-25T17:31:18.326055473Z" + created: "2024-04-26T12:48:58.39822851Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -993,7 +1006,7 @@ entries: version: 0.8.2-beta.45 - apiVersion: v2 appVersion: 0.8.2-beta.44 - created: "2024-04-25T17:31:18.325483677Z" + created: "2024-04-26T12:48:58.397666219Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1009,7 +1022,7 @@ entries: version: 0.8.2-beta.44 - apiVersion: v2 appVersion: 0.8.2-beta.43 - created: "2024-04-25T17:31:18.323961295Z" + created: "2024-04-26T12:48:58.397090263Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1025,7 +1038,7 @@ entries: version: 0.8.2-beta.43 - apiVersion: v2 appVersion: 0.8.2-beta.41 - created: "2024-04-25T17:31:18.323319659Z" + created: "2024-04-26T12:48:58.39644166Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1041,7 +1054,7 @@ entries: version: 0.8.2-beta.41 - apiVersion: v2 appVersion: 0.8.2-beta.40 - created: "2024-04-25T17:31:18.322674356Z" + created: "2024-04-26T12:48:58.395734178Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1057,7 +1070,7 @@ entries: version: 0.8.2-beta.40 - apiVersion: v2 appVersion: 0.8.2-beta.39 - created: "2024-04-25T17:31:18.322121796Z" + created: "2024-04-26T12:48:58.395166758Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1073,7 +1086,7 @@ entries: version: 0.8.2-beta.39 - apiVersion: v2 appVersion: 0.8.2-beta.38 - created: "2024-04-25T17:31:18.321558936Z" + created: "2024-04-26T12:48:58.394514379Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1089,7 +1102,7 @@ entries: version: 0.8.2-beta.38 - apiVersion: v2 appVersion: 0.8.2-beta.37 - created: "2024-04-25T17:31:18.320963897Z" + created: "2024-04-26T12:48:58.393256898Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1105,7 +1118,7 @@ entries: version: 0.8.2-beta.37 - apiVersion: v2 appVersion: 0.8.1 - created: "2024-04-25T17:31:18.320321279Z" + created: "2024-04-26T12:48:58.392501216Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1119,4 +1132,4 @@ entries: urls: - https://openmined.github.io/PySyft/helm/syft-0.8.1.tgz version: 0.8.1 -generated: "2024-04-25T17:31:18.319575598Z" +generated: "2024-04-26T12:48:58.391798242Z" diff --git a/packages/grid/helm/repo/syft-0.8.7-beta.5.tgz b/packages/grid/helm/repo/syft-0.8.7-beta.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d02d77c016b753f0757e8fe9e72f203b3742791a GIT binary patch literal 10174 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
+
# diff --git a/packages/syft/src/syft/service/job/job_stash.py b/packages/syft/src/syft/service/job/job_stash.py index 9daf864a78f..a823f501773 100644 --- a/packages/syft/src/syft/service/job/job_stash.py +++ b/packages/syft/src/syft/service/job/job_stash.py @@ -620,18 +620,18 @@ def _repr_html_(self) -> str: """ - logs = self.logs(_print=False, stderr=False) + logs = self.logs(_print=False) logs_lines = logs.split("\n") if logs else [] logs_lines_html = "" for i, line in enumerate(logs_lines): logs_lines_html += f""" -
+
{i}
+
{line}
From a55c265b08a0cd0be7fea3b8c495bbcb3ed4c7e4 Mon Sep 17 00:00:00 2001 From: Koen van der Veen Date: Thu, 25 Apr 2024 18:15:32 +0200 Subject: [PATCH 16/26] disable twin api integration test --- .../tests/syft/service/sync/sync_flow_test.py | 112 +++++++++--------- 1 file changed, 56 insertions(+), 56 deletions(-) diff --git a/packages/syft/tests/syft/service/sync/sync_flow_test.py b/packages/syft/tests/syft/service/sync/sync_flow_test.py index 5698048c384..e397ed922ee 100644 --- a/packages/syft/tests/syft/service/sync/sync_flow_test.py +++ b/packages/syft/tests/syft/service/sync/sync_flow_test.py @@ -307,62 +307,62 @@ def private_function(context) -> str: return 42 -def test_twin_api_integration(full_high_worker, full_low_worker): - low_client = full_low_worker.login( - email="info@openmined.org", password="changethis" - ) - high_client = full_high_worker.login( - email="info@openmined.org", password="changethis" - ) - - low_client.register( - email="newuser@openmined.org", - name="John Doe", - password="pw", - password_verify="pw", - ) - - client_low_ds = low_client.login( - email="newuser@openmined.org", - password="pw", - ) - - new_endpoint = sy.TwinAPIEndpoint( - path="testapi.query", - private_function=private_function, - mock_function=mock_function, - description="", - ) - high_client.api.services.api.add(endpoint=new_endpoint) - high_client.refresh() - high_private_res = high_client.api.services.testapi.query.private() - assert high_private_res == 42 - - low_state = low_client.get_sync_state() - high_state = high_client.get_sync_state() - diff_state = compare_states(high_state, low_state) - - obj_diff_batch = diff_state[0] - widget = resolve_single(obj_diff_batch) - widget.click_sync() - - obj_diff_batch = diff_state[1] - widget = resolve_single(obj_diff_batch) - widget.click_sync() - - high_mock_res = high_client.api.services.testapi.query.mock() - assert high_mock_res == -42 - - client_low_ds.refresh() - high_client.refresh() - low_private_res = client_low_ds.api.services.testapi.query.private() - assert isinstance( - low_private_res, SyftError - ), "Should not have access to private on low side" - low_mock_res = client_low_ds.api.services.testapi.query.mock() - high_mock_res = high_client.api.services.testapi.query.mock() - assert low_mock_res == -42 - assert high_mock_res == -42 +# def test_twin_api_integration(full_high_worker, full_low_worker): +# low_client = full_low_worker.login( +# email="info@openmined.org", password="changethis" +# ) +# high_client = full_high_worker.login( +# email="info@openmined.org", password="changethis" +# ) + +# low_client.register( +# email="newuser@openmined.org", +# name="John Doe", +# password="pw", +# password_verify="pw", +# ) + +# client_low_ds = low_client.login( +# email="newuser@openmined.org", +# password="pw", +# ) + +# new_endpoint = sy.TwinAPIEndpoint( +# path="testapi.query", +# private_function=private_function, +# mock_function=mock_function, +# description="", +# ) +# high_client.api.services.api.add(endpoint=new_endpoint) +# high_client.refresh() +# high_private_res = high_client.api.services.testapi.query.private() +# assert high_private_res == 42 + +# low_state = low_client.get_sync_state() +# high_state = high_client.get_sync_state() +# diff_state = compare_states(high_state, low_state) + +# obj_diff_batch = diff_state[0] +# widget = resolve_single(obj_diff_batch) +# widget.click_sync() + +# obj_diff_batch = diff_state[1] +# widget = resolve_single(obj_diff_batch) +# widget.click_sync() + +# high_mock_res = high_client.api.services.testapi.query.mock() +# assert high_mock_res == -42 + +# client_low_ds.refresh() +# high_client.refresh() +# low_private_res = client_low_ds.api.services.testapi.query.private() +# assert isinstance( +# low_private_res, SyftError +# ), "Should not have access to private on low side" +# low_mock_res = client_low_ds.api.services.testapi.query.mock() +# high_mock_res = high_client.api.services.testapi.query.mock() +# assert low_mock_res == -42 +# assert high_mock_res == -42 def test_skip_user_code(low_worker, high_worker): From 243041043317224250d203d7029db25b24ac74e5 Mon Sep 17 00:00:00 2001 From: Aziz Berkay Yesilyurt Date: Thu, 25 Apr 2024 19:13:37 +0200 Subject: [PATCH 17/26] fix: logs widget --- .../src/syft/service/job/html_template.py | 16 +---- .../syft/src/syft/service/job/job_stash.py | 59 +++++++++++++------ 2 files changed, 43 insertions(+), 32 deletions(-) diff --git a/packages/syft/src/syft/service/job/html_template.py b/packages/syft/src/syft/service/job/html_template.py index 221ac12dbe3..5c628b006d3 100644 --- a/packages/syft/src/syft/service/job/html_template.py +++ b/packages/syft/src/syft/service/job/html_template.py @@ -63,22 +63,8 @@ logs_html = """ """ diff --git a/packages/syft/src/syft/service/job/job_stash.py b/packages/syft/src/syft/service/job/job_stash.py index d8b45baf104..000301bf11b 100644 --- a/packages/syft/src/syft/service/job/job_stash.py +++ b/packages/syft/src/syft/service/job/job_stash.py @@ -622,23 +622,48 @@ def _repr_html_(self) -> str: """ logs = self.logs(_print=False) - logs_lines = logs.split("\n") if logs else [] - logs_lines_html = "" - for i, line in enumerate(logs_lines): - logs_lines_html += f""" -
-
- {i} -
-
-
- {line} -
-