From 095fb4e72d59787d704af5330dcae5d2e8fc1148 Mon Sep 17 00:00:00 2001 From: Koen van der Veen Date: Tue, 16 Jul 2024 23:03:03 +0200 Subject: [PATCH 01/18] make serialization of type vars less dynamic --- packages/syft/src/syft/client/api.py | 1 + .../syft/src/syft/custom_worker/config.py | 1 + .../src/syft/protocol/protocol_version.json | 14 +++++ .../src/syft/serde/recursive_primitives.py | 53 ++++++++++++++----- .../src/syft/service/action/action_object.py | 1 + .../syft/src/syft/service/network/routes.py | 1 + .../src/syft/service/notifier/notifier.py | 1 + .../syft/src/syft/service/project/project.py | 1 + packages/syft/src/syft/types/syft_object.py | 1 + .../src/syft/types/syft_object_registry.py | 13 +++-- 10 files changed, 72 insertions(+), 15 deletions(-) diff --git a/packages/syft/src/syft/client/api.py b/packages/syft/src/syft/client/api.py index 6f7253076c4..55c38a3d207 100644 --- a/packages/syft/src/syft/client/api.py +++ b/packages/syft/src/syft/client/api.py @@ -1401,6 +1401,7 @@ def validate_callable_args_and_kwargs( pass else: _type_str = getattr(t, "__name__", str(t)) + raise msg = f"Arg is `{arg}`. \nIt must be of type `{_type_str}`, not `{type(arg).__name__}`" if msg: diff --git a/packages/syft/src/syft/custom_worker/config.py b/packages/syft/src/syft/custom_worker/config.py index 254d64b702e..f01266221bd 100644 --- a/packages/syft/src/syft/custom_worker/config.py +++ b/packages/syft/src/syft/custom_worker/config.py @@ -79,6 +79,7 @@ def merged_custom_cmds(self, sep: str = ";") -> str: return sep.join(self.custom_cmds) +@serializable(canonical_name="WorkerConfig", version=1) class WorkerConfig(SyftBaseModel): pass diff --git a/packages/syft/src/syft/protocol/protocol_version.json b/packages/syft/src/syft/protocol/protocol_version.json index 6602155d200..c500d823f3a 100644 --- a/packages/syft/src/syft/protocol/protocol_version.json +++ b/packages/syft/src/syft/protocol/protocol_version.json @@ -1190,6 +1190,20 @@ "hash": "ae07a6345762b8ebe9d2a100776e2405fd17516c9d224913a3358c96480ba889", "action": "add" } + }, + "SyftObject": { + "2": { + "version": 2, + "hash": "26efd140219eb651d18467b0430b9dbde17c57670f050e300823075f6e44d3e5", + "action": "add" + } + }, + "ProjectEvent": { + "2": { + "version": 2, + "hash": "cbe61714b816b769a856fe7b47c3001e6da716883b2845e03485e3e7b0a02b91", + "action": "add" + } } } } diff --git a/packages/syft/src/syft/serde/recursive_primitives.py b/packages/syft/src/syft/serde/recursive_primitives.py index 9385219b8e0..8808979c45c 100644 --- a/packages/syft/src/syft/serde/recursive_primitives.py +++ b/packages/syft/src/syft/serde/recursive_primitives.py @@ -8,6 +8,7 @@ from enum import Enum from enum import EnumMeta import functools +import inspect import pathlib from pathlib import PurePath import sys @@ -24,8 +25,12 @@ from typing import _SpecialGenericAlias from typing import _UnionGenericAlias from typing import cast +import typing import weakref +from result import Result +from syft.types.syft_object_registry import SyftObjectRegistry + # relative from .capnp import get_capnp_schema from .recursive import chunk_bytes @@ -169,22 +174,29 @@ def deserialize_enum(enum_type: type, enum_buf: bytes) -> Enum: return enum_type(enum_value) -def serialize_type(serialized_type: type) -> bytes: +def serialize_type(_type_to_serialize: type) -> bytes: # relative - from ..util.util import full_name_with_qualname + type_to_serialize = typing.get_origin(_type_to_serialize) or _type_to_serialize + canonical_name, version = SyftObjectRegistry.get_identifier_for_type(type_to_serialize) + return f"{canonical_name}:{version}".encode() - fqn = full_name_with_qualname(klass=serialized_type) - module_parts = fqn.split(".") - return ".".join(module_parts).encode() + # from ..util.util import full_name_with_qualname + + # fqn = full_name_with_qualname(klass=serialized_type) + # module_parts = fqn.split(".") + # return ".".join(module_parts).encode() def deserialize_type(type_blob: bytes) -> type: deserialized_type = type_blob.decode() - module_parts = deserialized_type.split(".") - klass = module_parts.pop() - klass = "None" if klass == "NoneType" else klass - exception_type = getattr(sys.modules[".".join(module_parts)], klass) - return exception_type + canonical_name, version = deserialized_type.split(":", 1) + return SyftObjectRegistry.get_serde_class(canonical_name, int(version)) + + # module_parts = deserialized_type.split(".") + # klass = module_parts.pop() + # klass = "None" if klass == "NoneType" else klass + # exception_type = getattr(sys.modules[".".join(module_parts)], klass) + # return exception_type TPath = TypeVar("TPath", bound=PurePath) @@ -470,6 +482,19 @@ def deserialize_union_type(type_blob: bytes) -> type: args = _deserialize(type_blob, from_bytes=True) return functools.reduce(lambda x, y: x | y, args) +def serialize_union(serialized_type: UnionType) -> bytes: + return b'' + +def deserialize_union(type_blob: bytes) -> type: + return Union + +def serialize_typevar(serialized_type: TypeVar) -> bytes: + return f'{serialized_type.__name__}'.encode() + +def deserialize_typevar(type_blob: bytes) -> type: + name = type_blob.decode() + return TypeVar(name=name) # type: ignore + recursive_serde_register( UnionType, @@ -481,8 +506,8 @@ def deserialize_union_type(type_blob: bytes) -> type: recursive_serde_register_type(_SpecialForm, canonical_name="_SpecialForm", version=1) recursive_serde_register_type(_GenericAlias, canonical_name="_GenericAlias", version=1) -recursive_serde_register_type(Union, canonical_name="Union", version=1) -recursive_serde_register_type(TypeVar, canonical_name="TypeVar", version=1) +recursive_serde_register(Union, canonical_name="Union", serialize=serialize_union, deserialize=deserialize_union, version=1) +recursive_serde_register(TypeVar, canonical_name="TypeVar", serialize=serialize_typevar, deserialize=deserialize_typevar, version=1) recursive_serde_register_type( _UnionGenericAlias, @@ -507,3 +532,7 @@ def deserialize_union_type(type_blob: bytes) -> type: recursive_serde_register_type(EnumMeta, canonical_name="EnumMeta", version=1) recursive_serde_register_type(ABCMeta, canonical_name="ABCMeta", version=1) + +recursive_serde_register_type(inspect._empty, canonical_name="inspect_empty", version=1) + + diff --git a/packages/syft/src/syft/service/action/action_object.py b/packages/syft/src/syft/service/action/action_object.py index ca277149620..3ef0c9fc414 100644 --- a/packages/syft/src/syft/service/action/action_object.py +++ b/packages/syft/src/syft/service/action/action_object.py @@ -235,6 +235,7 @@ def repr_uid(_id: LineageID) -> str: ) +@serializable(canonical_name="ActionObjectPointer", version=1) class ActionObjectPointer: pass diff --git a/packages/syft/src/syft/service/network/routes.py b/packages/syft/src/syft/service/network/routes.py index e64c63ac77a..372ceaa915c 100644 --- a/packages/syft/src/syft/service/network/routes.py +++ b/packages/syft/src/syft/service/network/routes.py @@ -31,6 +31,7 @@ from .server_peer import ServerPeer +@serializable(canonical_name="ServerRoute", version=1) class ServerRoute: def client_with_context( self, context: ServerServiceContext diff --git a/packages/syft/src/syft/service/notifier/notifier.py b/packages/syft/src/syft/service/notifier/notifier.py index 01a601d0da9..26dafe34e44 100644 --- a/packages/syft/src/syft/service/notifier/notifier.py +++ b/packages/syft/src/syft/service/notifier/notifier.py @@ -31,6 +31,7 @@ def send( TBaseNotifier = TypeVar("TBaseNotifier", bound=BaseNotifier) +@serializable(canonical_name="EmailNotifier", version=1) class EmailNotifier(BaseNotifier): smtp_client: SMTPClient sender = "" diff --git a/packages/syft/src/syft/service/project/project.py b/packages/syft/src/syft/service/project/project.py index e3a3d292951..d81f9e8ea07 100644 --- a/packages/syft/src/syft/service/project/project.py +++ b/packages/syft/src/syft/service/project/project.py @@ -65,6 +65,7 @@ def metadata_to_server_identity() -> list[Callable]: return [rename("id", "server_id"), rename("name", "server_name")] +@serializable() class ProjectEvent(SyftObject): __canonical_name__ = "ProjectEvent" __version__ = SYFT_OBJECT_VERSION_2 diff --git a/packages/syft/src/syft/types/syft_object.py b/packages/syft/src/syft/types/syft_object.py index 4e4218cb07b..64625b45bbb 100644 --- a/packages/syft/src/syft/types/syft_object.py +++ b/packages/syft/src/syft/types/syft_object.py @@ -305,6 +305,7 @@ def get_migration_for_version( ] +@serializable() class SyftObject(SyftBaseObject, SyftMigrationRegistry): __canonical_name__ = "SyftObject" __version__ = SYFT_OBJECT_VERSION_2 diff --git a/packages/syft/src/syft/types/syft_object_registry.py b/packages/syft/src/syft/types/syft_object_registry.py index 7226e6a246f..d3dc9219a3b 100644 --- a/packages/syft/src/syft/types/syft_object_registry.py +++ b/packages/syft/src/syft/types/syft_object_registry.py @@ -38,6 +38,14 @@ def get_versions(cls, canonical_name: str) -> list[int]: ) return list(available_versions.keys()) + + @classmethod + def get_identifier_for_type(cls, obj: Any) -> tuple[str, int]: + """ + This is to create the string in nonrecursiveBlob + """ + return cls.__type_to_canonical_name__[obj] + @classmethod def get_canonical_name_version(cls, obj: Any) -> tuple[str, int]: """ @@ -53,7 +61,7 @@ def get_canonical_name_version(cls, obj: Any) -> tuple[str, int]: get_canonical_name_version([1,2,3]) -> "list" get_canonical_name_version(list) -> "type" get_canonical_name_version(MyEnum.A) -> "MyEnum" - get_canonical_name_version(MyEnum) -> "EnumMeta" + get_canonical_name_version(MyEnum) -> "type" Args: obj: The object or type for which to get the canonical name. @@ -62,8 +70,7 @@ def get_canonical_name_version(cls, obj: Any) -> tuple[str, int]: The canonical name and version of the object or type. """ - # NOTE the metaclass of the object is not needed during serde - # so we can safely ignore it + # for types we return "type" if isinstance(obj, type): return cls.__type_to_canonical_name__[type] From 911b4eab57e2ce476bc58bf2afc2b57a4e9bb567 Mon Sep 17 00:00:00 2001 From: Koen van der Veen Date: Wed, 17 Jul 2024 10:58:30 +0200 Subject: [PATCH 02/18] add serialization to a few classes --- .../src/syft/serde/recursive_primitives.py | 44 ++++++++++++------- .../service/notification/email_templates.py | 4 ++ packages/syft/src/syft/types/blob_storage.py | 2 + 3 files changed, 35 insertions(+), 15 deletions(-) diff --git a/packages/syft/src/syft/serde/recursive_primitives.py b/packages/syft/src/syft/serde/recursive_primitives.py index 8808979c45c..e1036eb4f94 100644 --- a/packages/syft/src/syft/serde/recursive_primitives.py +++ b/packages/syft/src/syft/serde/recursive_primitives.py @@ -15,6 +15,7 @@ import tempfile from types import MappingProxyType from types import UnionType +import typing from typing import Any from typing import GenericAlias from typing import Optional @@ -25,13 +26,10 @@ from typing import _SpecialGenericAlias from typing import _UnionGenericAlias from typing import cast -import typing import weakref -from result import Result -from syft.types.syft_object_registry import SyftObjectRegistry - # relative +from ..types.syft_object_registry import SyftObjectRegistry from .capnp import get_capnp_schema from .recursive import chunk_bytes from .recursive import combine_bytes @@ -176,8 +174,10 @@ def deserialize_enum(enum_type: type, enum_buf: bytes) -> Enum: def serialize_type(_type_to_serialize: type) -> bytes: # relative - type_to_serialize = typing.get_origin(_type_to_serialize) or _type_to_serialize - canonical_name, version = SyftObjectRegistry.get_identifier_for_type(type_to_serialize) + type_to_serialize = typing.get_origin(_type_to_serialize) or _type_to_serialize + canonical_name, version = SyftObjectRegistry.get_identifier_for_type( + type_to_serialize + ) return f"{canonical_name}:{version}".encode() # from ..util.util import full_name_with_qualname @@ -482,18 +482,22 @@ def deserialize_union_type(type_blob: bytes) -> type: args = _deserialize(type_blob, from_bytes=True) return functools.reduce(lambda x, y: x | y, args) + def serialize_union(serialized_type: UnionType) -> bytes: - return b'' + return b"" + + +def deserialize_union(type_blob: bytes) -> type: # type: ignore + return Union # type: ignore -def deserialize_union(type_blob: bytes) -> type: - return Union def serialize_typevar(serialized_type: TypeVar) -> bytes: - return f'{serialized_type.__name__}'.encode() + return f"{serialized_type.__name__}".encode() + def deserialize_typevar(type_blob: bytes) -> type: name = type_blob.decode() - return TypeVar(name=name) # type: ignore + return TypeVar(name=name) # type: ignore recursive_serde_register( @@ -506,8 +510,20 @@ def deserialize_typevar(type_blob: bytes) -> type: recursive_serde_register_type(_SpecialForm, canonical_name="_SpecialForm", version=1) recursive_serde_register_type(_GenericAlias, canonical_name="_GenericAlias", version=1) -recursive_serde_register(Union, canonical_name="Union", serialize=serialize_union, deserialize=deserialize_union, version=1) -recursive_serde_register(TypeVar, canonical_name="TypeVar", serialize=serialize_typevar, deserialize=deserialize_typevar, version=1) +recursive_serde_register( + Union, + canonical_name="Union", + serialize=serialize_union, + deserialize=deserialize_union, + version=1, +) +recursive_serde_register( + TypeVar, + canonical_name="TypeVar", + serialize=serialize_typevar, + deserialize=deserialize_typevar, + version=1, +) recursive_serde_register_type( _UnionGenericAlias, @@ -534,5 +550,3 @@ def deserialize_typevar(type_blob: bytes) -> type: recursive_serde_register_type(ABCMeta, canonical_name="ABCMeta", version=1) recursive_serde_register_type(inspect._empty, canonical_name="inspect_empty", version=1) - - diff --git a/packages/syft/src/syft/service/notification/email_templates.py b/packages/syft/src/syft/service/notification/email_templates.py index 1a6965365dc..f8baceee38a 100644 --- a/packages/syft/src/syft/service/notification/email_templates.py +++ b/packages/syft/src/syft/service/notification/email_templates.py @@ -3,6 +3,7 @@ from typing import cast # relative +from ...serde.serializable import serializable from ...store.linked_obj import LinkedObject from ..context import AuthedServiceContext @@ -21,6 +22,7 @@ def email_body(notification: "Notification", context: AuthedServiceContext) -> s return "" +@serializable(canonical_name="OnboardEmailTemplate", version=1) class OnBoardEmailTemplate(EmailTemplate): @staticmethod def email_title(notification: "Notification", context: AuthedServiceContext) -> str: @@ -107,6 +109,7 @@ def email_body(notification: "Notification", context: AuthedServiceContext) -> s return f"""{head} {body}""" +@serializable(canonical_name="RequestEmailTemplate", version=1) class RequestEmailTemplate(EmailTemplate): @staticmethod def email_title(notification: "Notification", context: AuthedServiceContext) -> str: @@ -254,6 +257,7 @@ def email_body(notification: "Notification", context: AuthedServiceContext) -> s return f"""{head} {body}""" +@serializable(canonical_name="RequestUpdateEmailTemplate", version=1) class RequestUpdateEmailTemplate(EmailTemplate): @staticmethod def email_title(notification: "Notification", context: AuthedServiceContext) -> str: diff --git a/packages/syft/src/syft/types/blob_storage.py b/packages/syft/src/syft/types/blob_storage.py index 364a3428b0b..247cf94b365 100644 --- a/packages/syft/src/syft/types/blob_storage.py +++ b/packages/syft/src/syft/types/blob_storage.py @@ -187,10 +187,12 @@ def _coll_repr_(self) -> dict[str, str]: return {"file_name": self.file_name} +@serializable(canonical_name="BlobFileType", version=1) class BlobFileType(type): pass +@serializable(canonical_name="BlobFileObjectPointer", version=1) class BlobFileObjectPointer(ActionObjectPointer): pass From 9cedc5122346761fe557c6a61286d7541a498b9b Mon Sep 17 00:00:00 2001 From: Koen van der Veen Date: Wed, 17 Jul 2024 11:05:08 +0200 Subject: [PATCH 03/18] lint lint lint --- packages/syft/src/syft/client/api.py | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/syft/src/syft/client/api.py b/packages/syft/src/syft/client/api.py index 55c38a3d207..6f7253076c4 100644 --- a/packages/syft/src/syft/client/api.py +++ b/packages/syft/src/syft/client/api.py @@ -1401,7 +1401,6 @@ def validate_callable_args_and_kwargs( pass else: _type_str = getattr(t, "__name__", str(t)) - raise msg = f"Arg is `{arg}`. \nIt must be of type `{_type_str}`, not `{type(arg).__name__}`" if msg: From 29f5a17661aa1729680a93a3ba21800c867340b1 Mon Sep 17 00:00:00 2001 From: Koen van der Veen Date: Wed, 17 Jul 2024 11:10:08 +0200 Subject: [PATCH 04/18] lint lint lint --- packages/syft/src/syft/types/syft_object_registry.py | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/syft/src/syft/types/syft_object_registry.py b/packages/syft/src/syft/types/syft_object_registry.py index d3dc9219a3b..68952b5874b 100644 --- a/packages/syft/src/syft/types/syft_object_registry.py +++ b/packages/syft/src/syft/types/syft_object_registry.py @@ -38,7 +38,6 @@ def get_versions(cls, canonical_name: str) -> list[int]: ) return list(available_versions.keys()) - @classmethod def get_identifier_for_type(cls, obj: Any) -> tuple[str, int]: """ From 5ea3cbd6230573e21ef35ca14ff76f41334de206 Mon Sep 17 00:00:00 2001 From: Koen van der Veen Date: Wed, 17 Jul 2024 11:36:34 +0200 Subject: [PATCH 05/18] fix numpy test --- packages/syft/src/syft/serde/array.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/syft/src/syft/serde/array.py b/packages/syft/src/syft/serde/array.py index fa1ed27e74b..3f19e575b97 100644 --- a/packages/syft/src/syft/serde/array.py +++ b/packages/syft/src/syft/serde/array.py @@ -162,6 +162,14 @@ version=SYFT_OBJECT_VERSION_1, ) +recursive_serde_register( + np.number, + serialize=lambda x: x.tobytes(), + deserialize=lambda buffer: frombuffer(buffer, dtype=np.number)[0], + canonical_name="numpy_number", + version=SYFT_OBJECT_VERSION_1, +) + # TODO: There is an incorrect mapping in looping,which makes it not work. # numpy_scalar_types = [ # np.bool_, From 94faeb3c05d2204c19bc2ec6e90ef867e11d6c93 Mon Sep 17 00:00:00 2001 From: Shubham Gupta Date: Thu, 18 Jul 2024 16:45:32 +0530 Subject: [PATCH 06/18] fix dev values filename in syft.test.helm --- tox.ini | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tox.ini b/tox.ini index ea12d1b8003..d0e58bc3f55 100644 --- a/tox.ini +++ b/tox.ini @@ -723,9 +723,9 @@ commands = echo "Installing local helm charts"; \ if [[ "{posargs}" == "override" ]]; then \ echo "Overriding resourcesPreset"; \ - helm install ${CLUSTER_NAME} ./helm/syft -f ./helm/values.dev.yaml --kube-context k3d-${CLUSTER_NAME} --namespace syft --create-namespace --set server.resourcesPreset=null --set seaweedfs.resourcesPreset=null --set mongo.resourcesPreset=null --set registry.resourcesPreset=null --set proxy.resourcesPreset=null --set frontend.resourcesPreset=null; \ + helm install ${CLUSTER_NAME} ./helm/syft -f ./helm/examples/dev/base.yaml --kube-context k3d-${CLUSTER_NAME} --namespace syft --create-namespace --set server.resourcesPreset=null --set seaweedfs.resourcesPreset=null --set mongo.resourcesPreset=null --set registry.resourcesPreset=null --set proxy.resourcesPreset=null --set frontend.resourcesPreset=null; \ else \ - helm install ${CLUSTER_NAME} ./helm/syft -f ./helm/values.dev.yaml --kube-context k3d-${CLUSTER_NAME} --namespace syft --create-namespace; \ + helm install ${CLUSTER_NAME} ./helm/syft -f ./helm/examples/dev/base.yaml --kube-context k3d-${CLUSTER_NAME} --namespace syft --create-namespace; \ fi \ else \ echo "Installing helm charts from repo for syft version: ${SYFT_VERSION}"; \ @@ -733,9 +733,9 @@ commands = helm repo update openmined; \ if [[ "{posargs}" == "override" ]]; then \ echo "Overriding resourcesPreset"; \ - helm install ${CLUSTER_NAME} openmined/syft --version=${SYFT_VERSION} -f ./helm/values.dev.yaml --kube-context k3d-${CLUSTER_NAME} --namespace syft --create-namespace --set server.resourcesPreset=null --set seaweedfs.resourcesPreset=null --set mongo.resourcesPreset=null --set registry.resourcesPreset=null --set proxy.resourcesPreset=null --set frontend.resourcesPreset=null; \ + helm install ${CLUSTER_NAME} openmined/syft --version=${SYFT_VERSION} -f ./helm/examples/dev/base.yaml --kube-context k3d-${CLUSTER_NAME} --namespace syft --create-namespace --set server.resourcesPreset=null --set seaweedfs.resourcesPreset=null --set mongo.resourcesPreset=null --set registry.resourcesPreset=null --set proxy.resourcesPreset=null --set frontend.resourcesPreset=null; \ else \ - helm install ${CLUSTER_NAME} openmined/syft --version=${SYFT_VERSION} -f ./helm/values.dev.yaml --kube-context k3d-${CLUSTER_NAME} --namespace syft --create-namespace; \ + helm install ${CLUSTER_NAME} openmined/syft --version=${SYFT_VERSION} -f ./helm/examples/dev/base.yaml --kube-context k3d-${CLUSTER_NAME} --namespace syft --create-namespace; \ fi \ fi' From cd609c467bca032174b4f24d0e36d7a529f93d02 Mon Sep 17 00:00:00 2001 From: Aziz Berkay Yesilyurt Date: Thu, 18 Jul 2024 13:34:43 +0200 Subject: [PATCH 07/18] revert asset.data change --- packages/syft/src/syft/service/dataset/dataset.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/syft/src/syft/service/dataset/dataset.py b/packages/syft/src/syft/service/dataset/dataset.py index 5ab3eb1411b..db5fe2f482f 100644 --- a/packages/syft/src/syft/service/dataset/dataset.py +++ b/packages/syft/src/syft/service/dataset/dataset.py @@ -289,8 +289,6 @@ def data(self) -> Any: if api is None or api.services is None: return None res = api.services.action.get(self.action_id) - if isinstance(res, str): - return SyftError(message=f"Could not access private data. {str(res)}") if self.has_permission(res): return res.syft_action_data else: From 8a126f937b75224073669b90bd78e0d0d97451a2 Mon Sep 17 00:00:00 2001 From: Aziz Berkay Yesilyurt Date: Thu, 18 Jul 2024 13:56:14 +0200 Subject: [PATCH 08/18] set log level to critical if not in dev mode --- packages/syft/src/syft/server/uvicorn.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/syft/src/syft/server/uvicorn.py b/packages/syft/src/syft/server/uvicorn.py index 3626db6aa13..953d19a4c2e 100644 --- a/packages/syft/src/syft/server/uvicorn.py +++ b/packages/syft/src/syft/server/uvicorn.py @@ -1,5 +1,6 @@ # stdlib from collections.abc import Callable +import logging import multiprocessing import multiprocessing.synchronize import os @@ -122,7 +123,8 @@ def run_uvicorn( starting_uvicorn_event: multiprocessing.synchronize.Event, **kwargs: Any, ) -> None: - should_reset = kwargs.get("dev_mode") and kwargs.get("reset") + dev_mode = kwargs.get("dev_mode") + should_reset = dev_mode and kwargs.get("reset") if should_reset: print("Found `reset=True` in the launch configuration. Resetting the server...") @@ -140,6 +142,12 @@ def run_uvicorn( except Exception: # nosec print(f"Failed to kill python process on port: {port}") + log_level = "critical" + if dev_mode: + log_level = "info" + logging.getLogger("uvicorn").setLevel(logging.CRITICAL) + logging.getLogger("uvicorn.access").setLevel(logging.CRITICAL) + if kwargs.get("debug"): attach_debugger() @@ -166,8 +174,9 @@ def run_uvicorn( host=host, port=port, factory=True, - reload=kwargs.get("dev_mode"), - reload_dirs=[Path(__file__).parent.parent] if kwargs.get("dev_mode") else None, + reload=dev_mode, + reload_dirs=[Path(__file__).parent.parent] if dev_mode else None, + log_level=log_level, ) From 9c56616217730549e112c5cf9df8d8d13f06c1c1 Mon Sep 17 00:00:00 2001 From: Aziz Berkay Yesilyurt Date: Thu, 18 Jul 2024 14:02:49 +0200 Subject: [PATCH 09/18] data returns None instead and displays a warning --- .../01-data-scientist-submit-code.ipynb | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/notebooks/tutorials/model-training/01-data-scientist-submit-code.ipynb b/notebooks/tutorials/model-training/01-data-scientist-submit-code.ipynb index 6063d233753..13e52c83015 100644 --- a/notebooks/tutorials/model-training/01-data-scientist-submit-code.ipynb +++ b/notebooks/tutorials/model-training/01-data-scientist-submit-code.ipynb @@ -4,7 +4,9 @@ "cell_type": "code", "execution_count": null, "id": "0", - "metadata": {}, + "metadata": { + "metadata": {} + }, "outputs": [], "source": [ "# third party\n", @@ -27,7 +29,9 @@ "cell_type": "code", "execution_count": null, "id": "2", - "metadata": {}, + "metadata": { + "metadata": {} + }, "outputs": [], "source": [ "server = sy.orchestra.launch(name=\"mnist-torch-datasite\", dev_mode=True)\n", @@ -46,7 +50,9 @@ "cell_type": "code", "execution_count": null, "id": "4", - "metadata": {}, + "metadata": { + "metadata": {} + }, "outputs": [], "source": [ "datasets = ds_client.datasets.get_all()\n", @@ -103,7 +109,7 @@ "metadata": {}, "outputs": [], "source": [ - "assert isinstance(training_images.data, sy.SyftError)\n", + "assert training_images.data is None\n", "training_labels.data" ] }, From 01f51e62e0c5c7aa7924b3b3ec4656329decea1f Mon Sep 17 00:00:00 2001 From: Koen van der Veen Date: Thu, 18 Jul 2024 14:26:49 +0200 Subject: [PATCH 10/18] fix py310 any serialization --- notebooks/api/0.8/00-load-data.ipynb | 19 +++++++++++-------- .../src/syft/serde/recursive_primitives.py | 19 ++++++++++++++++++- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/notebooks/api/0.8/00-load-data.ipynb b/notebooks/api/0.8/00-load-data.ipynb index 5370bd2e595..0d7d6b21a57 100644 --- a/notebooks/api/0.8/00-load-data.ipynb +++ b/notebooks/api/0.8/00-load-data.ipynb @@ -609,11 +609,7 @@ }, { "cell_type": "markdown", - "metadata": { - "jupyter": { - "source_hidden": true - } - }, + "metadata": {}, "source": [ "### Reading the Syft Dataset from Datasite Server\n", "\n", @@ -708,6 +704,13 @@ " server.land()" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "code", "execution_count": null, @@ -718,9 +721,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python [conda env:syft310] *", "language": "python", - "name": "python3" + "name": "conda-env-syft310-py" }, "language_info": { "codemirror_mode": { @@ -732,7 +735,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.2" + "version": "3.10.14" }, "toc": { "base_numbering": 1, diff --git a/packages/syft/src/syft/serde/recursive_primitives.py b/packages/syft/src/syft/serde/recursive_primitives.py index e1036eb4f94..38d8281434d 100644 --- a/packages/syft/src/syft/serde/recursive_primitives.py +++ b/packages/syft/src/syft/serde/recursive_primitives.py @@ -446,6 +446,8 @@ def recursive_serde_register_type( canonical_name: str | None = None, version: int | None = None, ) -> None: + # former case is for instance for _GerericAlias itself or UnionGenericAlias + # Latter case is true for for instance List[str], which is currently not used if (isinstance(t, type) and issubclass(t, _GenericAlias)) or issubclass( type(t), _GenericAlias ): @@ -500,6 +502,14 @@ def deserialize_typevar(type_blob: bytes) -> type: return TypeVar(name=name) # type: ignore +def serialize_any(serialized_type: TypeVar) -> bytes: + return b"" + + +def deserialize_any(type_blob: bytes) -> type: # type: ignore + return Any # type: ignore + + recursive_serde_register( UnionType, serialize=serialize_union_type, @@ -524,6 +534,13 @@ def deserialize_typevar(type_blob: bytes) -> type: deserialize=deserialize_typevar, version=1, ) +recursive_serde_register( + Any, + canonical_name="Any", + serialize=serialize_any, + deserialize=deserialize_any, + version=1, +) recursive_serde_register_type( _UnionGenericAlias, @@ -544,7 +561,7 @@ def deserialize_typevar(type_blob: bytes) -> type: ) recursive_serde_register_type(GenericAlias, canonical_name="GenericAlias", version=1) -recursive_serde_register_type(Any, canonical_name="Any", version=1) +# recursive_serde_register_type(Any, canonical_name="Any", version=1) recursive_serde_register_type(EnumMeta, canonical_name="EnumMeta", version=1) recursive_serde_register_type(ABCMeta, canonical_name="ABCMeta", version=1) From 6566332fcdf98c6dbcd071b4f9b526058f0f074e Mon Sep 17 00:00:00 2001 From: Shubham Gupta Date: Thu, 18 Jul 2024 18:14:40 +0530 Subject: [PATCH 11/18] revert asset.data is None in gateway_test --- tests/integration/network/gateway_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration/network/gateway_test.py b/tests/integration/network/gateway_test.py index 39ddc0bad5d..fd4b9751c42 100644 --- a/tests/integration/network/gateway_test.py +++ b/tests/integration/network/gateway_test.py @@ -222,7 +222,7 @@ def test_dataset_search(set_env_var, gateway_port: int, datasite_1_port: int) -> assert isinstance(dataset, Dataset) assert len(dataset.assets) == 1 assert isinstance(dataset.assets[0].mock, np.ndarray) - assert isinstance(dataset.assets[0].data, SyftError) + assert dataset.assets[0].data is None # search a wrong dataset should return an empty list wrong_search = sy.search(_random_hash()) From 3cf2ddf2528e380635302ac5f9a17e6e860c9a77 Mon Sep 17 00:00:00 2001 From: Koen van der Veen Date: Thu, 18 Jul 2024 14:51:16 +0200 Subject: [PATCH 12/18] merge undo nb changes --- notebooks/api/0.8/00-load-data.ipynb | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/notebooks/api/0.8/00-load-data.ipynb b/notebooks/api/0.8/00-load-data.ipynb index 0d7d6b21a57..5370bd2e595 100644 --- a/notebooks/api/0.8/00-load-data.ipynb +++ b/notebooks/api/0.8/00-load-data.ipynb @@ -609,7 +609,11 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "jupyter": { + "source_hidden": true + } + }, "source": [ "### Reading the Syft Dataset from Datasite Server\n", "\n", @@ -704,13 +708,6 @@ " server.land()" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "code", "execution_count": null, @@ -721,9 +718,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python [conda env:syft310] *", + "display_name": "Python 3 (ipykernel)", "language": "python", - "name": "conda-env-syft310-py" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -735,7 +732,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.14" + "version": "3.12.2" }, "toc": { "base_numbering": 1, From 6d290905c989aebeaef546d4c67a3d5aec2fe120 Mon Sep 17 00:00:00 2001 From: Koen van der Veen Date: Thu, 18 Jul 2024 15:21:48 +0200 Subject: [PATCH 13/18] fix syftobject --- .../src/syft/protocol/protocol_version.json | 19 +++++++++++++------ packages/syft/src/syft/types/syft_object.py | 1 + 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/packages/syft/src/syft/protocol/protocol_version.json b/packages/syft/src/syft/protocol/protocol_version.json index a1098e600ee..b4793310320 100644 --- a/packages/syft/src/syft/protocol/protocol_version.json +++ b/packages/syft/src/syft/protocol/protocol_version.json @@ -1052,16 +1052,23 @@ } }, "SyftObject": { - "2": { - "version": 2, - "hash": "26efd140219eb651d18467b0430b9dbde17c57670f050e300823075f6e44d3e5", + "1": { + "version": 1, + "hash": "bb70d874355988908d3a92a3941d6613a6995a4850be3b6a0147f4d387724406", "action": "add" } }, "ProjectEvent": { - "2": { - "version": 2, - "hash": "cbe61714b816b769a856fe7b47c3001e6da716883b2845e03485e3e7b0a02b91", + "1": { + "version": 1, + "hash": "dc0486c52daebd5e98c2b3b03ffd9a9a14bc3d86d8dc0c23e41ebf6c31fe2ffb", + "action": "add" + } + }, + "SyftObjectVersioned": { + "1": { + "version": 1, + "hash": "7c842dcdbb57e2528ffa690ea18c19fff3c8a591811d40cad2b19be3100e2ff4", "action": "add" } } diff --git a/packages/syft/src/syft/types/syft_object.py b/packages/syft/src/syft/types/syft_object.py index 3a84ef5bc3e..f987479cafc 100644 --- a/packages/syft/src/syft/types/syft_object.py +++ b/packages/syft/src/syft/types/syft_object.py @@ -346,6 +346,7 @@ def __lt__(self, other: Self) -> bool: return self.utc_timestamp < other.utc_timestamp +@serializable() class SyftObject(SyftObjectVersioned): __canonical_name__ = "SyftObject" __version__ = SYFT_OBJECT_VERSION_1 From 3fbbdf301747696b1480f8a3b1aa77b8dc3078c1 Mon Sep 17 00:00:00 2001 From: Koen van der Veen Date: Thu, 18 Jul 2024 18:17:20 +0200 Subject: [PATCH 14/18] fix any --- packages/syft/src/syft/types/syft_object_registry.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/syft/src/syft/types/syft_object_registry.py b/packages/syft/src/syft/types/syft_object_registry.py index 68952b5874b..a86bed7ddee 100644 --- a/packages/syft/src/syft/types/syft_object_registry.py +++ b/packages/syft/src/syft/types/syft_object_registry.py @@ -80,7 +80,15 @@ def get_canonical_name_version(cls, obj: Any) -> tuple[str, int]: @classmethod def get_serde_properties(cls, canonical_name: str, version: int) -> tuple: - return cls.__object_serialization_registry__[canonical_name][version] + try: + return cls.__object_serialization_registry__[canonical_name][version] + except Exception: + # This is a hack for python 3.10 in which Any is not a type + # if the server uses py>3.10 and the client 3.10 this goes wrong + if canonical_name == "Any_typing._SpecialForm": + return cls.__object_serialization_registry__["Any"][version] + else: + raise @classmethod def get_serde_class(cls, canonical_name: str, version: int) -> type["SyftObject"]: From 8413d4556cd681ba2963026000aa2ed6c310e76a Mon Sep 17 00:00:00 2001 From: alfred-openmined-bot <145415986+alfred-openmined-bot@users.noreply.github.com> Date: Fri, 19 Jul 2024 08:02:48 +0000 Subject: [PATCH 15/18] [syft]bump version --- .bumpversion.cfg | 2 +- VERSION | 2 +- packages/grid/VERSION | 2 +- .../backend/grid/images/worker_cpu.dockerfile | 2 +- packages/grid/devspace.yaml | 2 +- packages/grid/frontend/package.json | 2 +- packages/grid/helm/repo/index.yaml | 193 ++++++++++-------- .../grid/helm/repo/syft-0.8.7-beta.16.tgz | Bin 0 -> 18043 bytes packages/grid/helm/syft/Chart.yaml | 4 +- packages/grid/helm/syft/values.yaml | 2 +- packages/syft/setup.cfg | 2 +- packages/syft/src/syft/VERSION | 2 +- packages/syft/src/syft/__init__.py | 2 +- packages/syftcli/manifest.yml | 8 +- 14 files changed, 119 insertions(+), 106 deletions(-) create mode 100644 packages/grid/helm/repo/syft-0.8.7-beta.16.tgz diff --git a/.bumpversion.cfg b/.bumpversion.cfg index b503c8bb0f2..112787ac5a9 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.8.7-beta.15 +current_version = 0.8.7-beta.16 tag = False tag_name = {new_version} commit = True diff --git a/VERSION b/VERSION index 27f3763909a..0923036f0b3 100644 --- a/VERSION +++ b/VERSION @@ -1,5 +1,5 @@ # Mono Repo Global Version -__version__ = "0.8.7-beta.15" +__version__ = "0.8.7-beta.16" # 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 27f3763909a..0923036f0b3 100644 --- a/packages/grid/VERSION +++ b/packages/grid/VERSION @@ -1,5 +1,5 @@ # Mono Repo Global Version -__version__ = "0.8.7-beta.15" +__version__ = "0.8.7-beta.16" # elsewhere we can call this file: `python VERSION` and simply take the stdout # stdlib diff --git a/packages/grid/backend/grid/images/worker_cpu.dockerfile b/packages/grid/backend/grid/images/worker_cpu.dockerfile index 179dc4fa70f..abc64b067af 100644 --- a/packages/grid/backend/grid/images/worker_cpu.dockerfile +++ b/packages/grid/backend/grid/images/worker_cpu.dockerfile @@ -5,7 +5,7 @@ # NOTE: This dockerfile will be built inside a syft-backend container in PROD # Hence COPY will not work the same way in DEV vs. PROD -ARG SYFT_VERSION_TAG="0.8.7-beta.15" +ARG SYFT_VERSION_TAG="0.8.7-beta.16" FROM openmined/syft-backend:${SYFT_VERSION_TAG} # should match base image python version diff --git a/packages/grid/devspace.yaml b/packages/grid/devspace.yaml index 7c7f125feec..ffcc497ddb4 100644 --- a/packages/grid/devspace.yaml +++ b/packages/grid/devspace.yaml @@ -28,7 +28,7 @@ vars: DOCKER_IMAGE_RATHOLE: openmined/syft-rathole DOCKER_IMAGE_ENCLAVE_ATTESTATION: openmined/syft-enclave-attestation CONTAINER_REGISTRY: "docker.io" - VERSION: "0.8.7-beta.15" + VERSION: "0.8.7-beta.16" 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 f0abfb28bee..75dc49b4979 100644 --- a/packages/grid/frontend/package.json +++ b/packages/grid/frontend/package.json @@ -1,6 +1,6 @@ { "name": "syft-ui", - "version": "0.8.7-beta.15", + "version": "0.8.7-beta.16", "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 a34bf857801..c2d0dba9c21 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.16 + created: "2024-07-19T08:00:47.014272764Z" + description: Perform numpy-like analysis on data that remains in someone elses + server + digest: 75190eae57b64c2c47ab4a7fe3c6e94f35eb8045807a843ec8d7b26585c9e840 + 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.16.tgz + version: 0.8.7-beta.16 - apiVersion: v2 appVersion: 0.8.7-beta.15 - created: "2024-07-18T09:44:18.697011581Z" + created: "2024-07-19T08:00:47.012948682Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 56879d9a9f10febce88676d3d20621d74d17f9e33f5df6ae1e9bc3078c216f0c @@ -16,7 +29,7 @@ entries: version: 0.8.7-beta.15 - apiVersion: v2 appVersion: 0.8.7-beta.14 - created: "2024-07-18T09:44:18.696136502Z" + created: "2024-07-19T08:00:47.011858282Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 6e7cbca1d603ba11e09ae2a3089cfdafaa08cfa07c553c4f0fb8b42f8d3028f7 @@ -29,7 +42,7 @@ entries: version: 0.8.7-beta.14 - apiVersion: v2 appVersion: 0.8.7-beta.13 - created: "2024-07-18T09:44:18.695250653Z" + created: "2024-07-19T08:00:47.010938574Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 1dbe3ecdfec57bf25020cbcff783fab908f0eb0640ad684470b2fd1da1928005 @@ -42,7 +55,7 @@ entries: version: 0.8.7-beta.13 - apiVersion: v2 appVersion: 0.8.7-beta.12 - created: "2024-07-18T09:44:18.694546535Z" + created: "2024-07-19T08:00:47.010210325Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: e92b2f3a522dabb3a79ff762a7042ae16d2bf3a53eebbb2885a69b9f834d109c @@ -55,7 +68,7 @@ entries: version: 0.8.7-beta.12 - apiVersion: v2 appVersion: 0.8.7-beta.11 - created: "2024-07-18T09:44:18.693800357Z" + created: "2024-07-19T08:00:47.009504488Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 099f6cbd44b699ee2410a4be012ed1a8a65bcacb06a43057b2779d7fe34fc0ad @@ -68,7 +81,7 @@ entries: version: 0.8.7-beta.11 - apiVersion: v2 appVersion: 0.8.7-beta.10 - created: "2024-07-18T09:44:18.693068297Z" + created: "2024-07-19T08:00:47.008807007Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 00773cb241522e281c1915339fc362e047650e08958a736e93d6539f44cb5e25 @@ -81,7 +94,7 @@ entries: version: 0.8.7-beta.10 - apiVersion: v2 appVersion: 0.8.7-beta.9 - created: "2024-07-18T09:44:18.703118454Z" + created: "2024-07-19T08:00:47.019477968Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: a3f8e85d9ddef7a644b959fcc2fcb0fc08f7b6abae1045e893d0d62fa4ae132e @@ -94,7 +107,7 @@ entries: version: 0.8.7-beta.9 - apiVersion: v2 appVersion: 0.8.7-beta.8 - created: "2024-07-18T09:44:18.70245435Z" + created: "2024-07-19T08:00:47.018823548Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: a422ac88d8fd1fb80d5004d5eb6e95fa9efc7f6a87da12e5ac04829da7f04c4d @@ -107,7 +120,7 @@ entries: version: 0.8.7-beta.8 - apiVersion: v2 appVersion: 0.8.7-beta.7 - created: "2024-07-18T09:44:18.701730695Z" + created: "2024-07-19T08:00:47.018142819Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 0dc313a1092e6256a7c8aad002c8ec380b3add2c289d680db1e238a336399b7a @@ -120,7 +133,7 @@ entries: version: 0.8.7-beta.7 - apiVersion: v2 appVersion: 0.8.7-beta.6 - created: "2024-07-18T09:44:18.700741185Z" + created: "2024-07-19T08:00:47.017502776Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 052a2ec1102d2a4c9915f95647abd4a6012f56fa05a106f4952ee9b55bf7bae8 @@ -133,7 +146,7 @@ entries: version: 0.8.7-beta.6 - apiVersion: v2 appVersion: 0.8.7-beta.5 - created: "2024-07-18T09:44:18.699545536Z" + created: "2024-07-19T08:00:47.01686135Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 1728af756907c3fcbe87c2fd2de014a2d963c22a4c2eb6af6596b525a9b9a18a @@ -146,7 +159,7 @@ entries: version: 0.8.7-beta.5 - apiVersion: v2 appVersion: 0.8.7-beta.4 - created: "2024-07-18T09:44:18.698909676Z" + created: "2024-07-19T08:00:47.016237437Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 387a57a3904a05ed61e92ee48605ef6fd5044ff7e822e0924e0d4c485e2c88d2 @@ -159,7 +172,7 @@ entries: version: 0.8.7-beta.4 - apiVersion: v2 appVersion: 0.8.7-beta.3 - created: "2024-07-18T09:44:18.698278614Z" + created: "2024-07-19T08:00:47.015602895Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 3668002b7a4118516b2ecd61d6275f60d83fc12841587ab8f62e1c1200731c67 @@ -172,7 +185,7 @@ entries: version: 0.8.7-beta.3 - apiVersion: v2 appVersion: 0.8.7-beta.2 - created: "2024-07-18T09:44:18.697608639Z" + created: "2024-07-19T08:00:47.014959215Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: e62217ffcadee2b8896ab0543f9ccc42f2df898fd979438ac9376d780b802af7 @@ -185,7 +198,7 @@ entries: version: 0.8.7-beta.2 - apiVersion: v2 appVersion: 0.8.7-beta.1 - created: "2024-07-18T09:44:18.691587681Z" + created: "2024-07-19T08:00:47.008129384Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 553981fe1d5c980e6903b3ff2f1b9b97431f6dd8aee91e3976bcc5594285235e @@ -198,7 +211,7 @@ entries: version: 0.8.7-beta.1 - apiVersion: v2 appVersion: 0.8.6 - created: "2024-07-18T09:44:18.691075221Z" + created: "2024-07-19T08:00:47.00760616Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: ddbbe6fea1702e57404875eb3019a3b1a341017bdbb5fbc6ce418507e5c15756 @@ -211,7 +224,7 @@ entries: version: 0.8.6 - apiVersion: v2 appVersion: 0.8.6-beta.1 - created: "2024-07-18T09:44:18.690541181Z" + created: "2024-07-19T08:00:47.007023435Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: cc2c81ef6796ac853dce256e6bf8a6af966c21803e6534ea21920af681c62e61 @@ -224,7 +237,7 @@ entries: version: 0.8.6-beta.1 - apiVersion: v2 appVersion: 0.8.5 - created: "2024-07-18T09:44:18.689971183Z" + created: "2024-07-19T08:00:47.006372531Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: db5d90d44006209fd5ecdebd88f5fd56c70f7c76898343719a0ff8da46da948a @@ -237,7 +250,7 @@ entries: version: 0.8.5 - apiVersion: v2 appVersion: 0.8.5-post.2 - created: "2024-07-18T09:44:18.689218985Z" + created: "2024-07-19T08:00:47.005121234Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: ea3f7269b55f773fa165d7008c054b7cf3ec4c62eb40a96f08cd3a9b77fd2165 @@ -250,7 +263,7 @@ entries: version: 0.8.5-post.2 - apiVersion: v2 appVersion: 0.8.5-post.1 - created: "2024-07-18T09:44:18.688684404Z" + created: "2024-07-19T08:00:47.004136343Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 9deb844d3dc2d8480c60f8c631dcc7794adfb39cec3aa3b1ce22ea26fdf87d02 @@ -263,7 +276,7 @@ entries: version: 0.8.5-post.1 - apiVersion: v2 appVersion: 0.8.5-beta.10 - created: "2024-07-18T09:44:18.681146757Z" + created: "2024-07-19T08:00:46.996477416Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 9cfe01e8f57eca462261a24a805b41509be2de9a0fee76e331d124ed98c4bc49 @@ -276,7 +289,7 @@ entries: version: 0.8.5-beta.10 - apiVersion: v2 appVersion: 0.8.5-beta.9 - created: "2024-07-18T09:44:18.68792915Z" + created: "2024-07-19T08:00:47.003378218Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 057f1733f2bc966e15618f62629315c8207773ef6211c79c4feb557dae15c32b @@ -289,7 +302,7 @@ entries: version: 0.8.5-beta.9 - apiVersion: v2 appVersion: 0.8.5-beta.8 - created: "2024-07-18T09:44:18.687168595Z" + created: "2024-07-19T08:00:47.002585138Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 921cbce836c3032ef62b48cc82b5b4fcbe44fb81d473cf4d69a4bf0f806eb298 @@ -302,7 +315,7 @@ entries: version: 0.8.5-beta.8 - apiVersion: v2 appVersion: 0.8.5-beta.7 - created: "2024-07-18T09:44:18.686406458Z" + created: "2024-07-19T08:00:47.001833104Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 75482e955b2b9853a80bd653afb1d56535f78f3bfb7726798522307eb3effbbd @@ -315,7 +328,7 @@ entries: version: 0.8.5-beta.7 - apiVersion: v2 appVersion: 0.8.5-beta.6 - created: "2024-07-18T09:44:18.685605628Z" + created: "2024-07-19T08:00:47.001047187Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 6a2dfaf65ca855e1b3d7b966d4ff291e6fcbe761e2fc2a78033211ccd3a75de0 @@ -328,7 +341,7 @@ entries: version: 0.8.5-beta.6 - apiVersion: v2 appVersion: 0.8.5-beta.5 - created: "2024-07-18T09:44:18.68424052Z" + created: "2024-07-19T08:00:47.000294152Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: fead03823bef04d66901d563aa755c68ab277f72b126aaa6f0dce76a6f3bdb6d @@ -341,7 +354,7 @@ entries: version: 0.8.5-beta.5 - apiVersion: v2 appVersion: 0.8.5-beta.4 - created: "2024-07-18T09:44:18.683483723Z" + created: "2024-07-19T08:00:46.999535245Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 93e4539d5726a7fd0d6a3e93d1c17c6a358a923ddc01d102eab22f37377502ab @@ -354,7 +367,7 @@ entries: version: 0.8.5-beta.4 - apiVersion: v2 appVersion: 0.8.5-beta.3 - created: "2024-07-18T09:44:18.682699174Z" + created: "2024-07-19T08:00:46.998765368Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: f91e9390edf3441469048f5da646099af98f8b6d199409d0e2c1e6da3a51f054 @@ -367,7 +380,7 @@ entries: version: 0.8.5-beta.3 - apiVersion: v2 appVersion: 0.8.5-beta.2 - created: "2024-07-18T09:44:18.681900047Z" + created: "2024-07-19T08:00:46.9979415Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 59159c3aa4888038edc3c0135c83402363d7a0639fe62966a1e9d4928a364fa8 @@ -380,7 +393,7 @@ entries: version: 0.8.5-beta.2 - apiVersion: v2 appVersion: 0.8.5-beta.1 - created: "2024-07-18T09:44:18.680370022Z" + created: "2024-07-19T08:00:46.995714843Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 65aeb74c52ed8ba5474af500b4c1188a570ee4cb1f2a2da356b3488d28356ed9 @@ -392,7 +405,7 @@ entries: version: 0.8.5-beta.1 - apiVersion: v2 appVersion: 0.8.4 - created: "2024-07-18T09:44:18.679989029Z" + created: "2024-07-19T08:00:46.995336081Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 08afea8e3a9eef225b7e611f0bc1216c140053ef8e51439b02337faeac621fd0 @@ -404,7 +417,7 @@ entries: version: 0.8.4 - apiVersion: v2 appVersion: 0.8.4-beta.31 - created: "2024-07-18T09:44:18.676732507Z" + created: "2024-07-19T08:00:46.992873452Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: fabf3e2f37e53fa623f5d3d99b00feae06e278e5cd63bce419089946312ab1fc @@ -416,7 +429,7 @@ entries: version: 0.8.4-beta.31 - apiVersion: v2 appVersion: 0.8.4-beta.30 - created: "2024-07-18T09:44:18.676317329Z" + created: "2024-07-19T08:00:46.992462319Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 6e8f792709f73ec14eab48a268bdf50a4505b340bd142cddd7c7bfffd94009ad @@ -428,7 +441,7 @@ entries: version: 0.8.4-beta.30 - apiVersion: v2 appVersion: 0.8.4-beta.29 - created: "2024-07-18T09:44:18.675503365Z" + created: "2024-07-19T08:00:46.991689657Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 4c985d6a9b3456769c4013f9e85e7374c0f963d2d27627e61f914f5537de1971 @@ -440,7 +453,7 @@ entries: version: 0.8.4-beta.29 - apiVersion: v2 appVersion: 0.8.4-beta.28 - created: "2024-07-18T09:44:18.67509477Z" + created: "2024-07-19T08:00:46.991256683Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: bd2aa3c92c768c47c502e31a326f341addcb34e64d22cdcbf5cc3f19689d859c @@ -452,7 +465,7 @@ entries: version: 0.8.4-beta.28 - apiVersion: v2 appVersion: 0.8.4-beta.27 - created: "2024-07-18T09:44:18.674682568Z" + created: "2024-07-19T08:00:46.990803341Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: e8ad0869993af39d7adda8cb868dc0b24cfb63b4bb9820dc579939c1007a60ba @@ -464,7 +477,7 @@ entries: version: 0.8.4-beta.27 - apiVersion: v2 appVersion: 0.8.4-beta.26 - created: "2024-07-18T09:44:18.67426697Z" + created: "2024-07-19T08:00:46.99009183Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 30dccf630aa25a86a03c67572fe5411687d8ce6d58def448ea10efdba2b85e3a @@ -476,7 +489,7 @@ entries: version: 0.8.4-beta.26 - apiVersion: v2 appVersion: 0.8.4-beta.25 - created: "2024-07-18T09:44:18.673810786Z" + created: "2024-07-19T08:00:46.989223538Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: b6e2043bcf5a0335967d770c7939f5a7832955359a7d871c90b265660ff26e5f @@ -488,7 +501,7 @@ entries: version: 0.8.4-beta.25 - apiVersion: v2 appVersion: 0.8.4-beta.24 - created: "2024-07-18T09:44:18.673400587Z" + created: "2024-07-19T08:00:46.98880452Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: b19efa95394d50bb8d76da6ec306de5d3bb9ea55371fafea95a1282a697fa33e @@ -500,7 +513,7 @@ entries: version: 0.8.4-beta.24 - apiVersion: v2 appVersion: 0.8.4-beta.23 - created: "2024-07-18T09:44:18.672990299Z" + created: "2024-07-19T08:00:46.988395281Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 5c5d05c15bff548574896118ce92335ae10c5b78f5307fe9b2618e5a5aa71a5c @@ -512,7 +525,7 @@ entries: version: 0.8.4-beta.23 - apiVersion: v2 appVersion: 0.8.4-beta.22 - created: "2024-07-18T09:44:18.672570453Z" + created: "2024-07-19T08:00:46.987980071Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 0160dbce938198132ca9cd2a5cb362816344687291f5b6d7cf6de8f2855e9414 @@ -524,7 +537,7 @@ entries: version: 0.8.4-beta.22 - apiVersion: v2 appVersion: 0.8.4-beta.21 - created: "2024-07-18T09:44:18.672145167Z" + created: "2024-07-19T08:00:46.9875699Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 7dce153d2fcae7513e9c132e139b2721fd975ea3cc43a370e34dbeb2a1b7f683 @@ -536,7 +549,7 @@ entries: version: 0.8.4-beta.21 - apiVersion: v2 appVersion: 0.8.4-beta.20 - created: "2024-07-18T09:44:18.671692649Z" + created: "2024-07-19T08:00:46.98715537Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: c51189a187bbf24135382e25cb00964e0330dfcd3b2f0c884581a6686f05dd28 @@ -548,7 +561,7 @@ entries: version: 0.8.4-beta.20 - apiVersion: v2 appVersion: 0.8.4-beta.19 - created: "2024-07-18T09:44:18.670359287Z" + created: "2024-07-19T08:00:46.986108272Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 8219575dedb42fa2ddbf2768a4e9afbfacbc2dff7e953d77c7b10a41b78dc687 @@ -560,7 +573,7 @@ entries: version: 0.8.4-beta.19 - apiVersion: v2 appVersion: 0.8.4-beta.18 - created: "2024-07-18T09:44:18.669451207Z" + created: "2024-07-19T08:00:46.985703572Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 6418cde559cf12f1f7fea5a2b123bba950e50eeb3be002441827d2ab7f9e4ef7 @@ -572,7 +585,7 @@ entries: version: 0.8.4-beta.18 - apiVersion: v2 appVersion: 0.8.4-beta.16 - created: "2024-07-18T09:44:18.669046489Z" + created: "2024-07-19T08:00:46.985298099Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 9c9840a7c9476dbb08e0ac83926330718fe50c89879752dd8f92712b036109c0 @@ -584,7 +597,7 @@ entries: version: 0.8.4-beta.16 - apiVersion: v2 appVersion: 0.8.4-beta.15 - created: "2024-07-18T09:44:18.668638194Z" + created: "2024-07-19T08:00:46.984884802Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 0955fd22da028315e30c68132cbfa4bdc82bae622039bcfce0de339707bb82eb @@ -596,7 +609,7 @@ entries: version: 0.8.4-beta.15 - apiVersion: v2 appVersion: 0.8.4-beta.14 - created: "2024-07-18T09:44:18.668233817Z" + created: "2024-07-19T08:00:46.984466677Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 56208571956abe20ed7a5cc1867cab2667ed792c63e53d0e8bb70a9b438b7bf6 @@ -608,7 +621,7 @@ entries: version: 0.8.4-beta.14 - apiVersion: v2 appVersion: 0.8.4-beta.13 - created: "2024-07-18T09:44:18.667883421Z" + created: "2024-07-19T08:00:46.984082114Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: d7222c72412b6ee5833fbb07d2549be179cdfc7ccd89e0ad947d112fce799b83 @@ -620,7 +633,7 @@ entries: version: 0.8.4-beta.13 - apiVersion: v2 appVersion: 0.8.4-beta.12 - created: "2024-07-18T09:44:18.667534357Z" + created: "2024-07-19T08:00:46.983430154Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: af08c723756e397962b2d5190dedfd50797b771c5caf58b93a6f65d8fa24785c @@ -632,7 +645,7 @@ entries: version: 0.8.4-beta.12 - apiVersion: v2 appVersion: 0.8.4-beta.11 - created: "2024-07-18T09:44:18.66718891Z" + created: "2024-07-19T08:00:46.982576489Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: a0235835ba57d185a83dd8a26281fa37b2077c3a37fe3a1c50585005695927e3 @@ -644,7 +657,7 @@ entries: version: 0.8.4-beta.11 - apiVersion: v2 appVersion: 0.8.4-beta.10 - created: "2024-07-18T09:44:18.66684728Z" + created: "2024-07-19T08:00:46.982232382Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 910ddfeba0c5e66651500dd11404afff092adc0f768ed68e0d93b04b83aa4388 @@ -656,7 +669,7 @@ entries: version: 0.8.4-beta.10 - apiVersion: v2 appVersion: 0.8.4-beta.9 - created: "2024-07-18T09:44:18.679575695Z" + created: "2024-07-19T08:00:46.994927233Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: c25ca8a9f072d6a5d02232448deaef5668aca05f24dfffbba3ebe30a4f75bb26 @@ -668,7 +681,7 @@ entries: version: 0.8.4-beta.9 - apiVersion: v2 appVersion: 0.8.4-beta.8 - created: "2024-07-18T09:44:18.679234355Z" + created: "2024-07-19T08:00:46.99455877Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 7249a39d4137e457b369384ba0a365c271c780d93a8327ce25083df763c39999 @@ -680,7 +693,7 @@ entries: version: 0.8.4-beta.8 - apiVersion: v2 appVersion: 0.8.4-beta.7 - created: "2024-07-18T09:44:18.67888997Z" + created: "2024-07-19T08:00:46.994224722Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: ee750c7c8d6ea05bd447375e624fdd7f66dd87680ab81f7b7e73df7379a9024a @@ -692,7 +705,7 @@ entries: version: 0.8.4-beta.7 - apiVersion: v2 appVersion: 0.8.4-beta.6 - created: "2024-07-18T09:44:18.678543091Z" + created: "2024-07-19T08:00:46.993890524Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 0e046be9f73df7444a995608c59af16fab9030b139b2acb4d6db6185b8eb5337 @@ -704,7 +717,7 @@ entries: version: 0.8.4-beta.6 - apiVersion: v2 appVersion: 0.8.4-beta.5 - created: "2024-07-18T09:44:18.678176314Z" + created: "2024-07-19T08:00:46.993554252Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: b56e9a23d46810eccdb4cf5272cc05126da3f6db314e541959c3efb5f260620b @@ -716,7 +729,7 @@ entries: version: 0.8.4-beta.5 - apiVersion: v2 appVersion: 0.8.4-beta.4 - created: "2024-07-18T09:44:18.677468375Z" + created: "2024-07-19T08:00:46.99321273Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 1d5808ecaf55391f3b27ae6236400066508acbd242e33db24a1ab4bffa77409e @@ -728,7 +741,7 @@ entries: version: 0.8.4-beta.4 - apiVersion: v2 appVersion: 0.8.4-beta.3 - created: "2024-07-18T09:44:18.675859813Z" + created: "2024-07-19T08:00:46.992044103Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: b64efa8529d82be56c6ab60487ed24420a5614d96d2509c1f93c1003eda71a54 @@ -740,7 +753,7 @@ entries: version: 0.8.4-beta.3 - apiVersion: v2 appVersion: 0.8.4-beta.2 - created: "2024-07-18T09:44:18.671234101Z" + created: "2024-07-19T08:00:46.986707399Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -756,7 +769,7 @@ entries: version: 0.8.4-beta.2 - apiVersion: v2 appVersion: 0.8.4-beta.1 - created: "2024-07-18T09:44:18.666492967Z" + created: "2024-07-19T08:00:46.981879279Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -772,7 +785,7 @@ entries: version: 0.8.4-beta.1 - apiVersion: v2 appVersion: 0.8.3 - created: "2024-07-18T09:44:18.665903122Z" + created: "2024-07-19T08:00:46.981313395Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -788,7 +801,7 @@ entries: version: 0.8.3 - apiVersion: v2 appVersion: 0.8.3-beta.6 - created: "2024-07-18T09:44:18.665238668Z" + created: "2024-07-19T08:00:46.980660838Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -804,7 +817,7 @@ entries: version: 0.8.3-beta.6 - apiVersion: v2 appVersion: 0.8.3-beta.5 - created: "2024-07-18T09:44:18.664634707Z" + created: "2024-07-19T08:00:46.980088032Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -820,7 +833,7 @@ entries: version: 0.8.3-beta.5 - apiVersion: v2 appVersion: 0.8.3-beta.4 - created: "2024-07-18T09:44:18.663644077Z" + created: "2024-07-19T08:00:46.979508944Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -836,7 +849,7 @@ entries: version: 0.8.3-beta.4 - apiVersion: v2 appVersion: 0.8.3-beta.2 - created: "2024-07-18T09:44:18.662603789Z" + created: "2024-07-19T08:00:46.978843072Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -852,7 +865,7 @@ entries: version: 0.8.3-beta.2 - apiVersion: v2 appVersion: 0.8.3-beta.1 - created: "2024-07-18T09:44:18.662014215Z" + created: "2024-07-19T08:00:46.978250608Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -868,7 +881,7 @@ entries: version: 0.8.3-beta.1 - apiVersion: v2 appVersion: 0.8.2 - created: "2024-07-18T09:44:18.661459726Z" + created: "2024-07-19T08:00:46.977667142Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -884,7 +897,7 @@ entries: version: 0.8.2 - apiVersion: v2 appVersion: 0.8.2-beta.60 - created: "2024-07-18T09:44:18.660824016Z" + created: "2024-07-19T08:00:46.97618559Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -900,7 +913,7 @@ entries: version: 0.8.2-beta.60 - apiVersion: v2 appVersion: 0.8.2-beta.59 - created: "2024-07-18T09:44:18.660176543Z" + created: "2024-07-19T08:00:46.975547231Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -916,7 +929,7 @@ entries: version: 0.8.2-beta.59 - apiVersion: v2 appVersion: 0.8.2-beta.58 - created: "2024-07-18T09:44:18.659537266Z" + created: "2024-07-19T08:00:46.974903561Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -932,7 +945,7 @@ entries: version: 0.8.2-beta.58 - apiVersion: v2 appVersion: 0.8.2-beta.57 - created: "2024-07-18T09:44:18.658888141Z" + created: "2024-07-19T08:00:46.974225186Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -948,7 +961,7 @@ entries: version: 0.8.2-beta.57 - apiVersion: v2 appVersion: 0.8.2-beta.56 - created: "2024-07-18T09:44:18.658212445Z" + created: "2024-07-19T08:00:46.973582167Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -964,7 +977,7 @@ entries: version: 0.8.2-beta.56 - apiVersion: v2 appVersion: 0.8.2-beta.52 - created: "2024-07-18T09:44:18.656843817Z" + created: "2024-07-19T08:00:46.972943056Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -980,7 +993,7 @@ entries: version: 0.8.2-beta.52 - apiVersion: v2 appVersion: 0.8.2-beta.51 - created: "2024-07-18T09:44:18.656202316Z" + created: "2024-07-19T08:00:46.972298074Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -996,7 +1009,7 @@ entries: version: 0.8.2-beta.51 - apiVersion: v2 appVersion: 0.8.2-beta.50 - created: "2024-07-18T09:44:18.65555318Z" + created: "2024-07-19T08:00:46.971632462Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1012,7 +1025,7 @@ entries: version: 0.8.2-beta.50 - apiVersion: v2 appVersion: 0.8.2-beta.49 - created: "2024-07-18T09:44:18.654891381Z" + created: "2024-07-19T08:00:46.970694624Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1028,7 +1041,7 @@ entries: version: 0.8.2-beta.49 - apiVersion: v2 appVersion: 0.8.2-beta.48 - created: "2024-07-18T09:44:18.654246854Z" + created: "2024-07-19T08:00:46.969446138Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1044,7 +1057,7 @@ entries: version: 0.8.2-beta.48 - apiVersion: v2 appVersion: 0.8.2-beta.47 - created: "2024-07-18T09:44:18.653553185Z" + created: "2024-07-19T08:00:46.968789644Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1060,7 +1073,7 @@ entries: version: 0.8.2-beta.47 - apiVersion: v2 appVersion: 0.8.2-beta.46 - created: "2024-07-18T09:44:18.652733921Z" + created: "2024-07-19T08:00:46.968237335Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1076,7 +1089,7 @@ entries: version: 0.8.2-beta.46 - apiVersion: v2 appVersion: 0.8.2-beta.45 - created: "2024-07-18T09:44:18.652155157Z" + created: "2024-07-19T08:00:46.967662255Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1092,7 +1105,7 @@ entries: version: 0.8.2-beta.45 - apiVersion: v2 appVersion: 0.8.2-beta.44 - created: "2024-07-18T09:44:18.65155345Z" + created: "2024-07-19T08:00:46.967077005Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1108,7 +1121,7 @@ entries: version: 0.8.2-beta.44 - apiVersion: v2 appVersion: 0.8.2-beta.43 - created: "2024-07-18T09:44:18.650315225Z" + created: "2024-07-19T08:00:46.966402246Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1124,7 +1137,7 @@ entries: version: 0.8.2-beta.43 - apiVersion: v2 appVersion: 0.8.2-beta.41 - created: "2024-07-18T09:44:18.649618229Z" + created: "2024-07-19T08:00:46.965731856Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1140,7 +1153,7 @@ entries: version: 0.8.2-beta.41 - apiVersion: v2 appVersion: 0.8.2-beta.40 - created: "2024-07-18T09:44:18.648953655Z" + created: "2024-07-19T08:00:46.965047219Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1156,7 +1169,7 @@ entries: version: 0.8.2-beta.40 - apiVersion: v2 appVersion: 0.8.2-beta.39 - created: "2024-07-18T09:44:18.648396651Z" + created: "2024-07-19T08:00:46.964432073Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1172,7 +1185,7 @@ entries: version: 0.8.2-beta.39 - apiVersion: v2 appVersion: 0.8.2-beta.38 - created: "2024-07-18T09:44:18.647841832Z" + created: "2024-07-19T08:00:46.963072083Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1188,7 +1201,7 @@ entries: version: 0.8.2-beta.38 - apiVersion: v2 appVersion: 0.8.2-beta.37 - created: "2024-07-18T09:44:18.647258069Z" + created: "2024-07-19T08:00:46.962468459Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1204,7 +1217,7 @@ entries: version: 0.8.2-beta.37 - apiVersion: v2 appVersion: 0.8.1 - created: "2024-07-18T09:44:18.646646093Z" + created: "2024-07-19T08:00:46.961868861Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1218,4 +1231,4 @@ entries: urls: - https://openmined.github.io/PySyft/helm/syft-0.8.1.tgz version: 0.8.1 -generated: "2024-07-18T09:44:18.645850393Z" +generated: "2024-07-19T08:00:46.961161452Z" diff --git a/packages/grid/helm/repo/syft-0.8.7-beta.16.tgz b/packages/grid/helm/repo/syft-0.8.7-beta.16.tgz new file mode 100644 index 0000000000000000000000000000000000000000..26e288a5be25b5b9adfa556fe54e18c944f0ad90 GIT binary patch literal 18043 zcmV)xK$E{8iwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0POvHbKJ<0D2n@UehU2B-s73`8&dUtFk<3fN}|VFOCpz~#<6E( zL(ZzoB4MF{Hh`vvo|*4{13 zB}JYDs3EDZpiW90Lz-7fnkQ8;#v;cAvkI%E!txr+y{lr3hsjl4PpZRb&o0yYYU&Pr zF@AP3!Te2{V|aFYbKcPCUh12X=T%Gic+gd!R#^HXuQ9K;w+wjwEEK+amX0r<)oGpK z`-bY@XX)iteK5%{_i|{UXddp>HxoQeU^2;44-K+=*W2ggOE26&rRD!?$fj6*HUV%y z|5L7{+T?#B$yfe=igKA14zk0&B>8=E6eIe&;o$5hao|5-9==Or*)mu7E`dBG6~afv z5UZr&IY@IXtGy&C@iMLI^5!rJh5vx%L0ar3$sMfI4)&*_^q2&UFwN?uLSJH?bcC41 zqD%r_V^&PY4O=HKPm;GM7s>hYMRM`ySLeyaN%E(o*XPH{tGCJN*~!ayFD_o4ylvos zJQU;fpBT>D9;?HoE~mJ+_xt4gq08RhxX3SyZtmVRf4+R)%t}lz_mX5%l=Wf4G@*Jg zNg5&5Ntv=J>TU*(f2vDJFuzXAB5&|auA!Yw%&!lVe41rlz0)Ej892bFmhmQ_}}d0PZbD$LN=McGdAqzFwXc@gk@_Iz{PGpvefvrwL59} z#RrRqb!yLQMLQr#FJA5>O?66Q{4C!>dZKXa7 zE(=L9V-TonEccRR-2Tx`?C+EFu2%A6kxj>#G*rvqYjj@237kLmf3%^?vtbQKuo5aZ%&E z(#ne@=`5v7U#&guYQFDe-S$3{#FrSV!{iy({#nOo)w4@qy>Fi%{Jkpjw)zt4#U!=l zUKZDBqgRsp3g^6wKh=$d&9a-MD3kiCET)%N&C?R*tkD6wAsd#nzcaTzAkruybD=gT z?t#Qw(_!1ucv{tS{o77LEV8WlnC6$s2fUdv+?)MVv?sv;DYpoxt7S`wYvkKEmS^RW!*b*bS48zQ<`2uFdX#+`ej^%ag zaigEAd-}u_QH`O6`DxVJ!qUC97=ua?xey}1aejPqtD?N_6!7np#=CFKggVVHTTGS` zz0;q^V@R{ZB+X;-{}vO>$7zn?peP&ryi;ERYN*n>o&Gf7VRDsTUhO4wN$|YYU2j+W zP4hQ6F3Ov~7Uc<HUHhRyFPaF~upKwpPECQtc&4R$RVryqFGxwpTa3yu|W&PB-(m zP*sIb+eJIWe@wBekEV5TG?|peHDt?r(+XeZouWHicw9^3dpYx_I@pp)QDm$0GefF- zds-CP;miX?|H^)uP!@ z?@~H7pckzpGlmbd32u$?rdlHnwiCx+uP{%hRWp70Wt#t#%m!$uxGb^^%a*r_X`Q4q zDUq~>L-Jix;(n*C+Tq&%R)^W^jPthNgIT`^AEpk=9BZr&(&E{)!u=92@u$ON)QFtX z4sA;OSf(}Z*A4mAhsm=)us`r!#+p=hi7?*3?)ZN6hnZ>7ITnjw4d;)V*{QRtTV&i6 zt#caKH23#+Ec0Mha`ew>*;!mZgR1KKgXZD>O1OCc5^DSiH$BJr>-nt_GS{!KA6^`P zw+NT}teA#_%c8i(t1g>2>OhGQaiabA-@x$crbNto7iF?z%>R+V-C)G_%3PP>AhKSF!@7rh1oc1B*C=W)@!n#-+Ek4z&GzUd%46qfh^nB zO7LwADoOjjJkw5)(}8D=ZTT0mHKr$Hg^3K96<=9#k+0-e(frcPNA$*$Qqye#Qhz8Jpdxqg0(Vw&kW~L zL~u+3ocodEE#F*uhqT5*M^oiU=A=B)|cfm0W3UWDMRjFP)1dV6aAjw~P}l zMdVso1q%AH!_3MZ3<+i+8empM8KdF>B@x^(tr37m!3|M{p#l#!G7rpfMuG;>2v~{6 z^du!W7y^hU668?&J43ySHPzn@-2Q3U$#tWrA>4m`2>8s;B zOo}ugf)#uO6*(2cP>?QiFNE=&yT}^It>@f39|`xtTV<4hV1W`76?4RL(U+awfGB`8 z(i;w(1EDr>#Q`M{uY#afQ_GbUoM=xi2*YfME*daC2Ii>|4EpgxdYNNrY>lJSS1%yT zhTw;2r4>>}O*x4IrR9n^10YSLRvYQGLI4sCNU+oxP~Jt(9H*R8-xHBRQIHmmMeQsC zCjkM25`o4Ttn)-G>#Vhb6T=)QQZOSp^E66_TzSPsKf`Z^!pmWdCBukg+InfIhX!yb z39*{6Adm;g7Q&1R!p*`i`h%|^?X<8ikBe6b$pqe<2=ut94m5o&P0{>lwVdVE-KwPHP#toy&)nx%dOX*>!6MHEGlEHBnE`T z<{=Y|QHTtk*18`HHyFHVLz@F&AZ$>?Xk?sN2hv)jBd1IuGYYkE9F!840WlB^iy(P2ImN+zZw7o3*HLFx$z#934{cytOBX6;6kuS6jRKg=K-SRMC(9Y2s~=$ zgN@KnD>oSYnBvC);3rP9prt`hgEYo^>w_^6olqJ81!#d>fMi-(CXi@C857)d5jY_c zKMDR*xEzEJd{B~^Kp1*zNF;^?>A8#~fL0_JkQSm1pdA2MPqn9Bdko$iX<~mqI4#p_ zsPQj&GXyUfs)M0Ig99tL=CQFreXs;LLSj@@PwMsJavqM5lT`m2(eOYFI13?d)*8EGn`~MZ;LvOvkj#o zbh4m?h3KUXno>u&XORaE3O#rrgg9lmjMTXhEJQ;nkveJs?_{K*A4?C614Q8+QIWv^v3YrBQq39k|A- z_R)JI0`)+Q<|w2NRx@;gD1t_N8x%FN@q<1Aokr_*sV74OU8OhR3>AUP2%a~lMxzl( zWARxgE%RPlD@f!7IYb_Oh`=~AT1sd8NvpKp2nsDT;2e{jqZbh*b4;jy3(_Fc?Wrte@CjCU*@I`EKSo1SYKl)I!9dDD@@^1<@j)r!Gj%EILNeNVGAq z$Z3dzFsb@Eb8n#h5Q>la%jJQ?A(S}<&7(0)cnDN+1yTkooB~R;@WByH0|^4DLZce9 ziU$!D2aSeM-Vc>OU%YueSlHF-$k6gAJpvd*s3byDqoPtkb&QmU$Ur%5nRJ43PNPL? zg9J$>*!T&XDRVJ9oTJz1Kmx&N3uuUD#`72fnGZAwqooBGB#kx@s~Z2CNh75X&IvC` zUm3NA%Mjrjps0l=-XQ>>bcTSp4$(W^*t;TX6ew5_%mT3pCSU}qEXWXI>?flBd~tF5 zqR4af1966nlte?7P+n7_tk;TJ<|yOZ3E%-KN}`z(+%hk{v@{T<6;~cr<5l(BZM>V(9Ka>=_S-~ zJf74;sBa`FK>A2cAkrzPg@zD35k^w!Rb(Jz;|Xe|&;g=V!C2#+)fB0h{aB+DQg4g; z3?U4Gh4E2nii}7fh_O7VhCw1>Ob050(;-rCl{Eo~0S?Yu8l|P21*#+3Ph5=GY5rjd zr6H6R+Hk=Iw%41y>{BahLc17j%hU`4=2%ZaEUx&Ww{?`P3=&=02c2*@a$=Yo4jsQ@Nv zBuW{DjWTE)TH&JOp%t*kQLU7<0Ud8-voighrK9|2U^E=}LU^r>@zQ$2BhZF-y^_i^ z4+<6Mjf2~0Iv%4&j|$NW&y5f^_A>=vv}w`vt)hW3@{Lq-5Lsii5*;~OiqcagmNopM zl@E+z^a8z6R7Y;Tk6NLkAc6L?ryABipALnBG|Y!+(J&{2vQ#=9iH+KmAR{rH8AmBF zkJb@t4N78oq)Ic-kh$1TVXUAqSkPI55sZ7LED2IZ!K90b-W%aWW(HA ziXb9W)+rX4$9^hf1(7#6c37Ta)}^gprIR5z-%uh9N6-p^5^o|i$}7TU@We41$v>^jPLQqz5%?x#>5mAi0hADt~jmCyXvwIs+TW_QxihC6x#AvM6p`Vx35z=sL zp^>lc!696$7ztt$B03LlL8zvsj2e)Na_40)~|~}5}uq7 znxb@(M-m)&4v4iXa_*F4E+7}iI_ou!l%jHtPE;91pUm#~IVw z>A;ML`K7;KpnMH=!vu;c<-GL%1|&wLv;NF>G4nKr>)I2ttZnVhzNP( zVk;vtM9H)QE|~UCX;hauXaoPr>o?zsk?G#V6-R*PxIB~w8NNhJj$xQtSV z#zzvKGHRm%)ZPO}gEo4U3>hMI#(j!ZUE=Yg$g3I#Nkh}dNntqijtFJIXhOO3Tsco^ z5L#NJg$L>+Q4*-rltzjYqYPGf7Wzr3H&FYlL3Y7HP{Gm=978V=q9P8NBgR_vF*plU zMs0}z;5M)*f_07s?X=}Y5bPO5EAdb1Ac<#Q14h@_bHWR$Z191ivc_;tiO|3q7>Cqx z20^Gm83YG{TA)@d3;jX`?Z|NhCGF%Elx@uf6b|G4PsG1j9T; z<0;o91mXx7=7bW8h0rg1<@hJ?b;}DwIHTye#^9nvA!)FJp|q9>9XSF9%ebczZLkzE z1_y+>NR%WzD({Kuw-TL-{&QN@#UOjAmMayUwt;dQjaL#Si1sLiCCC7XrxZD10UZ*B zLLoZK9aGKAsQO9Q4vCJGI^zRh6w^VZD+8@jVvt@t!Y!pjOU0C=5Cl;a8F7?qAw9J; zI?si7QrG}oJJ2kA%A%~{bCUZ(0v^&>Pe`Cl2aAqI>3!rtRlsN%wVG>fM3CA!?xJ-l zy;H$(&Kl9s^AtrJ;2)OTHAX{y<2ZANgeaj1LE7+waYQ(Xo+@r6GOam5%c&Jgp)x?U z_R91#r`kNP!7vb9bLTV#&P5cB;i?tmfRw~29rYTes^99~l5d>b3TQa1H%(@0N5m5Eg+s zXM9A;BGJSN2oM7XZ9Ecc3Gq@8>w@8tNExkg6q%7)NQ_EC&j8>Y{)PW~hSfA1lzq3JQI6I}0LXry=DKSiH!%XB# z1jbq;l2d9Llf_3PI3omN<1cv;EGH~l$9j5!OB4nQ5gKQl)q!*2Bn{Lf0gDlwW=v2T zBaYAKOc3Sl)8;6$P8Cw-S_q*x7fOqI}}gKv|9C2I%>g)kx*Wi1Hc0;D%0 z(x?bi=%qx?&~YLt(}F3|U+h+&0~>+CIK!>xOd5p7-HVn+bWBd>etm{s2M z;Dm|FG8>~dqTj*i=UL(YlnxRj3Dz=hDIt-1N1WzfS;rt~4~|eE$`b262Vu2xz#Ml< z`=}yHWKq(7;&%@J$@76?ZpsT1z%g$EV~hk5W7OU&$%AfOCZ@p1##=$=q^8^{E+{f7 zA$X0@)5JnQZKDf#3iZ|NVzBII1ZlN#) J4~$Wzq!W?|DZHhecuIJ~CXy&+fq)N+ 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⩔w)hRtjm*>eBeP1AX^;&3e0QM!Sx0%bxj6x1P@X^W(QK@3LO+7`QzjIUDqr zTw8pTdYe$s@qSHp7ftZa9cl<~2S{50Vs%jQ)(3l6Vfi4{%|wp4iE9oqNyT{?$ zUgu#^G$%EFr^9uJI$DV0S8v~+zxqGN@1MUudH(+V;^ge;hvWBeo#FnPvmal*IKIa!oae7?Z~yN{ z$3NU3r^yNrStEz4t&-KoM!=Qc;-tC)w7Kuy78M=nAa&})qYcVqf&_wPV(&L zusg1|@wS?}ZmfHHscIEyI59IiuqRo9aru-+6`lMZ^Aq|dI|vw2YS|Cux$e81Y; zX1jK#w$5jSG@F)qaaCeZE>tl z&OQ4aTdVch>{tXyeth-f`Jn`lr|XN?tWGyMFEU8S7xR>@E~k7m8{}R~YnN1!_1n5XJz-=uTLQet zs(Mp|mw7!&Bef%Esm z{jo|GE%&}kgnP;c|Hra1`0}v$V?W>|D{jWvm-%-%|H~xV%>UJreC7YAD0k=ozFaK) z76C9PkI%~Si$S(00DrNx-WBAlZRy9@oqzldr0lLhy44h)zu!4)cT0nwdAqAU^~&76 ztAkI>-CcD1*zDcy4F}BMU5MnN5_snw{^r74i>bUPwspJC!-1{4mikr*2=nU}gS$xX z{s_=x1M<^H$K!j46|NAn`fAs($Tq+}PfX!K=l4tN$^WV4LHloj6TlDoe^PDwe}sL# z|LtkYBhUYS8N2VxoB&?Ib;}XpY5xi-%3RF|;7)YqT){x?e4t@Hov ztN-^TrD2^C^2=pvQoHtN3&ZQzU)u{=R*a$5&jx-y!~HK_w)20QUzS*XD&Nn`L-8NY z=?4ERBEQCepQNnn{~YU&MfoAkFK=D2^r|C>Ef&FyR6eUgupDFN!4>5~T+K;!C0uap zUH3)vcBETZzHRt~TbgWM3%6Ef&E;Niypbrj;T7I7F5C`9nrtG#7X*M?mAF}JJk z!+m)IW%l^R{OR2&-#$^Y2EqLF$?Vuv7m4Xi%{ziIld|~f=JqCWM|thb)j-Nx7V#~6 zb;}ye47G)inoq|L%bDS}a{1gu#LzdAE({U2U1|J8;{dZ=0^|aIVkN zU9+$ar!AN*;W|v7t^K}e4eiqsWBSwHwpo2FbhiSK!vfd`q|Iv#9uLts-+lv=^xJO^ z{`a@PN#H`^t6xeCg&!QgMW*xa5OU6M!RWHWJ-cfHUyUbOdk;n{*v=>D)0p~AVRDD; zsG6OjNRU7 zHY=Orc1QicVgI#XsKK>u#?$6)t@cm!GHub;O;_Lp;la#*qe?GM!_?Nr; zb3Q?9H-Fx8pZ*o@{ah7!w*ngT8(4NrAKa|nGk0*&O|Qhkt*t*XYq0C{u_=RFS`C;l z*b&=3$%1W#L;WQ({5s6afL#O}ZQi!W(?Y6RdR`=4*d|EU&S zf3^RgqCB)Iy){1YqNR*CFxlc5tkTYB^$)s@@5OgMZ*mx?{@`Yu9VWlr+Jv8f{B0=~ z7Ka~J1VvUrcn%rl9?Nxs-Ce~~ZK~S+WLjp2$*3Lb*&=CrdAZS+-PKPW zc`};8Il7n5?uPtxfwdE5&cOO+4F;H`fBQE1<(FjbX()WP<#C&I@V9S2D=N3>-(`i{ zpX>MsX1S^Rd1rdTIIFM6X$Tp9gc5J}vvHdhy!UUT@W29q_7SjCC0N zw5p5o%y8OTBT4?;Wf18tt>jk8BrZ?OiMyqb`H$YH`6# zT>{4R!>WAmHdp4o`YZGw-r~oFwpumNE6l@DUgS69Vp_ecT4S(#-|3mw;Cx+N9wtBk z+C9pO%SD6*uQ5AJUcLR(N%w9GU3^5hL=QqJv8oP}LqqoFk>NDI++M@5uFh(W zy1$|Cm!9C4HmLr^%02e~04M*u@{s*cHqZZ4t>oA5|3682jQ#(J`vK-zsh?Xc{Kjqu zn4|q0zZPIUXLu_K>>APEtlcxBzv!k{M1O1RPmJhyeLgm#zopfH5&ebky(^+WQ}~D1 z?10h(@+Bhs-3;6l+25$}=u`W15w+Wq{blXp&g*x}@W>d+q+k^~?S~;WC0|B6hy#aQm!%ksA(oh`=YeuQJ@fZviG{@ptq!uIJ%z z2Dh6|{MyOFS^@h#xC9HRU(DT?!H*pi~SYTZBna*D4q|NpA8A^&ILwfVop z>;XR{{~1@C=f9}_8vl8c^6>ZO9vvZGr=7i}XSwKRH2SP6Vg|q>W_Yn{~`@^Mqcn=|z$@j^K9JK$NZC$QbKB!B`t47rR_aX+=v{-CI zj<(l6SX7v`%c|u2g+I0;oOi&>XDR0O46p9TI$qtgZlDs!MUD4jHt%9L%rzy5mu_en}m`G2i*m9Q+g}_!84CM)>mO(&T2# zP4l%wLCeSM=K51?YCgpOL!1G6X#Y>^Tlaq}Lcj9=Qb=d*UthUBd(4{b@_dDLk4&(_Vy%;w*#d+^NA%ZHCEt$BYBeb{~I zFUH@gNOn2yvs(L+2Yznt({51o?LEWIvo))!jQ4DGu5WX$zq@O5c6rWcn%B2?<<>vM z*Suc;V(Q%+vYSXg&^1gZJ9po2cXJ1ja6GARUZ!Q6WVz!E-LY$V$4HMo_q0eReEO45 ztMc~gzKwRhvwEy|n`@f#1Y>MsKvVTedVAjRwHT>s; zeA!*N6e z;EM=?%}n4`uX+j4zd~qW3GEkm@K;4yvc=e+Q_apU{_O^Ref*W4`Z@V`bnvNO{=C~q zyZKui4wyu|knH#55zp%!vdwo-kwUzfg8Q8ITXjC+ijcG8A6}hboc-tf^NW+SqaTjn zzdU|@d~y8#`0dg2*T-A0Tos?g961t@=Ks4BzWm$a z7%&t5YjD|@=l`8suFC0Uk=)A_>NC1zi8VD>7F>2K;=D)iqmifv$$RETbUwTeKDwMtQg z*s|~6UnD5a!v7z954_3$cRHo~pZ#|Irx~*J|M^TrzA9esCC~o4cs@=juZ$=CzmIfj zd{Od~UK`JyUG}OL>taupE{}hq4y~nHWaa7e-4-Cr15XmhXi)Txkws>pW9@i9}b5KfxF^dAn9A_H&p94l=WkPE*pu1 zPN%DoNQ>J^>XFID{~w9~srLWfZvWzUdHr|L=KpVo_VfRBU?8U&2!6P;AfllPxRv7I z^8C+(l#>K&7lmyBBdRC%M2r+f?FAXpN;nWR!sXTljcA^%i5ek=uKwCIyo}w^DH_wY9f7_(UNZLSl00A>l0?gQRKvt*G*Muy1zg$ zOc#&Vz#yH0B_%IAPlEXY)psI-O0<}p?{>e=HjiIt%%GHGNs**Ui6-NNi$$6yyVtI~ zwJx@R?|K6qfuH~UI3D@@VZWjgTfZl=@(p`Q?OpyTEr%9ap>BP4d493&e6QZZCJL~` zaf~8BFmzVYvovoO6_`OZj1sRxc+b%l1S_5|B!CE8tp{Fw|dPe10%hGe^*v{ND z&dvWAD=ccnH`sNvT4T+sZf^LS3;(d2WlhNqZ5O-df@~t!x&T_`c-Rzzwixj@4WSk0 z=sFB-yNawKy8i1ePM-s9U-aet-@QSn&HvX3x!@B_QJZ60WY!)a2 zw<{dZaTI_hoZZ0y5zleK=LIH!td=x*1Z082kmg}x>!dgeegg>#VT#v?hBrbvjOLCD zA{5ZU3;dELfSQ91P8Z;(Up=rLl|dZQC$}nXBN-6l2zicoHJMJ*I6;mJ-c!E?Zr)G8 z94Ex_0-XBvld11`w~vWWKl6e`;BPZ~ literal 0 HcmV?d00001 diff --git a/packages/grid/helm/syft/Chart.yaml b/packages/grid/helm/syft/Chart.yaml index a0e1bf432c2..a7d7860f844 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.15" -appVersion: "0.8.7-beta.15" +version: "0.8.7-beta.16" +appVersion: "0.8.7-beta.16" 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 69ee750665b..8df3eb69bdc 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.15 + version: 0.8.7-beta.16 # Force default secret values for development. DO NOT SET THIS TO FALSE IN PRODUCTION randomizedSecrets: true diff --git a/packages/syft/setup.cfg b/packages/syft/setup.cfg index ee6e8c2006b..d0e2533e7c6 100644 --- a/packages/syft/setup.cfg +++ b/packages/syft/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = syft -version = attr: "0.8.7-beta.15" +version = attr: "0.8.7-beta.16" 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 27f3763909a..0923036f0b3 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.15" +__version__ = "0.8.7-beta.16" # 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 eff14c659df..f98cb18d57d 100644 --- a/packages/syft/src/syft/__init__.py +++ b/packages/syft/src/syft/__init__.py @@ -1,4 +1,4 @@ -__version__ = "0.8.7-beta.15" +__version__ = "0.8.7-beta.16" # stdlib from collections.abc import Callable diff --git a/packages/syftcli/manifest.yml b/packages/syftcli/manifest.yml index 1e591898eca..f314725fe3a 100644 --- a/packages/syftcli/manifest.yml +++ b/packages/syftcli/manifest.yml @@ -1,11 +1,11 @@ manifestVersion: 1.0 -syftVersion: 0.8.7-beta.15 -dockerTag: 0.8.7-beta.15 +syftVersion: 0.8.7-beta.16 +dockerTag: 0.8.7-beta.16 images: - - docker.io/openmined/syft-frontend:0.8.7-beta.15 - - docker.io/openmined/syft-backend:0.8.7-beta.15 + - docker.io/openmined/syft-frontend:0.8.7-beta.16 + - docker.io/openmined/syft-backend:0.8.7-beta.16 - docker.io/library/mongo:7.0.4 - docker.io/traefik:v2.11.0 From 468a6185ac28dd7f4363d57863a1a66bb3ba49da Mon Sep 17 00:00:00 2001 From: Aziz Berkay Yesilyurt Date: Fri, 19 Jul 2024 11:30:26 +0200 Subject: [PATCH 16/18] asset.data displays error instead of a warning --- packages/syft/src/syft/service/dataset/dataset.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/syft/src/syft/service/dataset/dataset.py b/packages/syft/src/syft/service/dataset/dataset.py index db5fe2f482f..58329a06611 100644 --- a/packages/syft/src/syft/service/dataset/dataset.py +++ b/packages/syft/src/syft/service/dataset/dataset.py @@ -292,7 +292,7 @@ def data(self) -> Any: if self.has_permission(res): return res.syft_action_data else: - warning = SyftWarning( + warning = SyftError( message="You do not have permission to access private data." ) display(warning) From b1910663dd27c1100b1eb89e816fa02f5805d052 Mon Sep 17 00:00:00 2001 From: Koen van der Veen Date: Fri, 19 Jul 2024 11:33:36 +0200 Subject: [PATCH 17/18] remove fullyQualifiedName --- .../syft/src/syft/capnp/recursive_serde.capnp | 7 +- .../src/syft/protocol/protocol_version.json | 42 +++++------ packages/syft/src/syft/serde/recursive.py | 55 ++++---------- .../src/syft/types/syft_object_registry.py | 72 ++----------------- 4 files changed, 43 insertions(+), 133 deletions(-) diff --git a/packages/syft/src/syft/capnp/recursive_serde.capnp b/packages/syft/src/syft/capnp/recursive_serde.capnp index c29ba57aae6..5b6fadb5c65 100644 --- a/packages/syft/src/syft/capnp/recursive_serde.capnp +++ b/packages/syft/src/syft/capnp/recursive_serde.capnp @@ -3,8 +3,7 @@ struct RecursiveSerde { fieldsName @0 :List(Text); fieldsData @1 :List(List(Data)); - fullyQualifiedName @2 :Text; - nonrecursiveBlob @3 :List(Data); - canonicalName @4 :Text; - version @5 :Int32; + nonrecursiveBlob @2 :List(Data); + canonicalName @3 :Text; + version @4 :Int32; } diff --git a/packages/syft/src/syft/protocol/protocol_version.json b/packages/syft/src/syft/protocol/protocol_version.json index b4793310320..fa34ec9c538 100644 --- a/packages/syft/src/syft/protocol/protocol_version.json +++ b/packages/syft/src/syft/protocol/protocol_version.json @@ -1,6 +1,13 @@ { "dev": { "object_versions": { + "SyftObjectVersioned": { + "1": { + "version": 1, + "hash": "7c842dcdbb57e2528ffa690ea18c19fff3c8a591811d40cad2b19be3100e2ff4", + "action": "add" + } + }, "BaseDateTime": { "1": { "version": 1, @@ -8,6 +15,13 @@ "action": "add" } }, + "SyftObject": { + "1": { + "version": 1, + "hash": "bb70d874355988908d3a92a3941d6613a6995a4850be3b6a0147f4d387724406", + "action": "add" + } + }, "PartialSyftObject": { "1": { "version": 1, @@ -988,6 +1002,13 @@ "action": "add" } }, + "ProjectEvent": { + "1": { + "version": 1, + "hash": "dc0486c52daebd5e98c2b3b03ffd9a9a14bc3d86d8dc0c23e41ebf6c31fe2ffb", + "action": "add" + } + }, "ProjectThreadMessage": { "1": { "version": 1, @@ -1050,27 +1071,6 @@ "hash": "ed05cb87aec832098fc464ac36cd6bceaab705463d0d2fa1b2d8e1ccc510018c", "action": "add" } - }, - "SyftObject": { - "1": { - "version": 1, - "hash": "bb70d874355988908d3a92a3941d6613a6995a4850be3b6a0147f4d387724406", - "action": "add" - } - }, - "ProjectEvent": { - "1": { - "version": 1, - "hash": "dc0486c52daebd5e98c2b3b03ffd9a9a14bc3d86d8dc0c23e41ebf6c31fe2ffb", - "action": "add" - } - }, - "SyftObjectVersioned": { - "1": { - "version": 1, - "hash": "7c842dcdbb57e2528ffa690ea18c19fff3c8a591811d40cad2b19be3100e2ff4", - "action": "add" - } } } } diff --git a/packages/syft/src/syft/serde/recursive.py b/packages/syft/src/syft/serde/recursive.py index 19ede3d0040..4c438975245 100644 --- a/packages/syft/src/syft/serde/recursive.py +++ b/packages/syft/src/syft/serde/recursive.py @@ -3,7 +3,6 @@ from enum import Enum from enum import EnumMeta import os -import sys import tempfile import types from typing import Any @@ -17,7 +16,6 @@ # relative from ..types.syft_object_registry import SyftObjectRegistry -from ..util.util import index_syft_by_module_name from .capnp import get_capnp_schema from .util import compatible_with_large_file_writes_capnp @@ -285,7 +283,7 @@ def rs_object2proto(self: Any, for_hashing: bool = False) -> _DynamicStructBuild # todo: rewrite and make sure every object has a canonical name and version canonical_name, version = SyftObjectRegistry.get_canonical_name_version(self) - if not SyftObjectRegistry.has_serde_class("", canonical_name, version): + if not SyftObjectRegistry.has_serde_class(canonical_name, version): # third party raise Exception( f"obj2proto: {canonical_name} version {version} not in SyftObjectRegistry" @@ -382,34 +380,12 @@ def rs_proto2object(proto: _DynamicStructBuilder) -> Any: # relative from .deserialize import _deserialize - # clean this mess, Tudor - module_parts = proto.fullyQualifiedName.split(".") - klass = module_parts.pop() class_type: type | Any = type(None) - if klass != "NoneType": - try: - class_type = index_syft_by_module_name(proto.fullyQualifiedName) # type: ignore[assignment,unused-ignore] - except Exception: # nosec - try: - class_type = getattr(sys.modules[".".join(module_parts)], klass) - except Exception: # nosec - if "syft.user" in proto.fullyQualifiedName: - # relative - from ..server.server import CODE_RELOADER - - for load_user_code in CODE_RELOADER.values(): - load_user_code() - try: - class_type = getattr(sys.modules[".".join(module_parts)], klass) - except Exception: # nosec - pass - canonical_name = proto.canonicalName version = getattr(proto, "version", -1) - fqn = getattr(proto, "fullyQualifiedName", "") - fqn = map_fqns_for_backward_compatibility(fqn) - if not SyftObjectRegistry.has_serde_class(fqn, canonical_name, version): + + if not SyftObjectRegistry.has_serde_class(canonical_name, version): # third party raise Exception( f"proto2obj: {canonical_name} version {version} not in SyftObjectRegistry" @@ -431,13 +407,9 @@ def rs_proto2object(proto: _DynamicStructBuilder) -> Any: cls, _, version, - ) = SyftObjectRegistry.get_serde_properties_bw_compatible( - fqn, canonical_name, version - ) + ) = SyftObjectRegistry.get_serde_properties(canonical_name, version) - if class_type == type(None) or fqn != "": - # yes this looks stupid but it works and the opposite breaks - class_type = cls + class_type = cls if nonrecursive: if deserialize is None: @@ -468,14 +440,15 @@ def rs_proto2object(proto: _DynamicStructBuilder) -> Any: # if we skip the __new__ flow of BaseModel we get the error # AttributeError: object has no attribute '__fields_set__' - if "syft.user" in proto.fullyQualifiedName: - # weird issues with pydantic and ForwardRef on user classes being inited - # with custom state args / kwargs - obj = class_type() - for attr_name, attr_value in kwargs.items(): - setattr(obj, attr_name, attr_value) - else: - obj = class_type(**kwargs) + # if "syft.user" in proto.fullyQualifiedName: + # # weird issues with pydantic and ForwardRef on user classes being inited + # # with custom state args / kwargs + # obj = class_type() + # for attr_name, attr_value in kwargs.items(): + # setattr(obj, attr_name, attr_value) + # else: + # obj = class_type(**kwargs) + obj = class_type(**kwargs) else: obj = class_type.__new__(class_type) # type: ignore diff --git a/packages/syft/src/syft/types/syft_object_registry.py b/packages/syft/src/syft/types/syft_object_registry.py index a86bed7ddee..d5cc342635e 100644 --- a/packages/syft/src/syft/types/syft_object_registry.py +++ b/packages/syft/src/syft/types/syft_object_registry.py @@ -96,74 +96,12 @@ def get_serde_class(cls, canonical_name: str, version: int) -> type["SyftObject" return serde_properties[7] @classmethod - def get_serde_properties_bw_compatible( - cls, fqn: str, canonical_name: str, version: int - ) -> tuple: + def has_serde_class(cls, canonical_name: str | None, version: int) -> bool: # relative - from ..serde.recursive import TYPE_BANK - - if canonical_name != "" and canonical_name is not None: - return cls.get_serde_properties(canonical_name, version) - else: - # this is for backward compatibility with 0.8.6 - try: - # relative - from ..protocol.data_protocol import get_data_protocol - - serde_props = TYPE_BANK[fqn] - klass = serde_props[7] - is_syftobject = hasattr(klass, "__canonical_name__") - if is_syftobject: - canonical_name = klass.__canonical_name__ - dp = get_data_protocol() - try: - version_mutations = dp.protocol_history[ - SYFT_086_PROTOCOL_VERSION - ]["object_versions"][canonical_name] - except Exception: - print(f"could not find {canonical_name} in protocol history") - raise - - version_086 = max( - [ - int(k) - for k, v in version_mutations.items() - if v["action"] == "add" - ] - ) - try: - res = cls.get_serde_properties(canonical_name, version_086) - - except Exception: - print( - f"could not find {canonical_name} {version_086} in ObjectRegistry" - ) - raise - return res - else: - # TODO, add refactoring for non syftobject versions - canonical_name = fqn - version = 1 - return cls.get_serde_properties(canonical_name, version) - except Exception as e: - print(e) - raise - - @classmethod - def has_serde_class( - cls, fqn: str, canonical_name: str | None, version: int - ) -> bool: - # relative - from ..serde.recursive import TYPE_BANK - - if canonical_name != "" and canonical_name is not None: - return ( - canonical_name in cls.__object_serialization_registry__ - and version in cls.__object_serialization_registry__[canonical_name] - ) - else: - # this is for backward compatibility with 0.8.6 - return fqn in TYPE_BANK + return ( + canonical_name in cls.__object_serialization_registry__ + and version in cls.__object_serialization_registry__[canonical_name] + ) @classmethod def add_transform( From 330a7000736c925e73ba0c461a314428a6f3e50a Mon Sep 17 00:00:00 2001 From: Koen van der Veen Date: Fri, 19 Jul 2024 11:51:33 +0200 Subject: [PATCH 18/18] lint --- packages/syft/src/syft/client/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/syft/src/syft/client/api.py b/packages/syft/src/syft/client/api.py index d60416fdf3b..0ff9299bdfe 100644 --- a/packages/syft/src/syft/client/api.py +++ b/packages/syft/src/syft/client/api.py @@ -32,7 +32,6 @@ from ..protocol.data_protocol import get_data_protocol from ..protocol.data_protocol import migrate_args_and_kwargs from ..serde.deserialize import _deserialize -from ..serde.recursive import index_syft_by_module_name from ..serde.serializable import serializable from ..serde.serialize import _serialize from ..serde.signature import Signature @@ -63,6 +62,7 @@ from ..util.markdown import as_markdown_python_code from ..util.notebook_ui.components.tabulator_template import build_tabulator_table from ..util.telemetry import instrument +from ..util.util import index_syft_by_module_name from ..util.util import prompt_warning_message from .connection import ServerConnection