diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 0fc9bcf16cf..b1be310ea14 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.9.0-beta.3 +current_version = 0.9.1-beta.1 tag = False tag_name = {new_version} commit = True diff --git a/.bumpversion_stable.cfg b/.bumpversion_stable.cfg index 4af9bb78db5..d529a21d6f2 100644 --- a/.bumpversion_stable.cfg +++ b/.bumpversion_stable.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.8.8 +current_version = 0.9.0 tag = False tag_name = {new_version} commit = True diff --git a/.github/workflows/cd-feature-branch.yml b/.github/workflows/cd-feature-branch.yml index 40fc583caad..9391998930f 100644 --- a/.github/workflows/cd-feature-branch.yml +++ b/.github/workflows/cd-feature-branch.yml @@ -346,8 +346,8 @@ jobs: - name: Copy helm repo files from Syft Repo run: | - cp packages/grid/helm/repo/index.yaml ghpages/helm/ cp packages/grid/helm/repo/syft-${{ needs.merge-docker-images.outputs.server_version }}.tgz ghpages/helm/ + cd ghpages/helm && helm repo index . --url https://openmined.github.io/PySyft/helm - name: Commit changes to gh-pages uses: EndBug/add-and-commit@v9 diff --git a/.github/workflows/cd-syft.yml b/.github/workflows/cd-syft.yml index a186bd95061..977c51f30bb 100644 --- a/.github/workflows/cd-syft.yml +++ b/.github/workflows/cd-syft.yml @@ -557,8 +557,8 @@ jobs: - name: Copy helm repo files from Syft Repo run: | - cp packages/grid/helm/repo/index.yaml ghpages/helm/ cp packages/grid/helm/repo/syft-${{ steps.release_checks.outputs.syft_version }}.tgz ghpages/helm/ + cd ghpages/helm && helm repo index . --url https://openmined.github.io/PySyft/helm - name: Commit changes to gh-pages uses: EndBug/add-and-commit@v9 diff --git a/.github/workflows/pr-tests-stack.yml b/.github/workflows/pr-tests-stack.yml index 44111145e99..789c1a28721 100644 --- a/.github/workflows/pr-tests-stack.yml +++ b/.github/workflows/pr-tests-stack.yml @@ -59,10 +59,10 @@ jobs: - name: Run syft backend base image building test if: steps.changes.outputs.stack == 'true' timeout-minutes: 60 - # run: | - # echo "Skipping pr image test" run: | - tox -e backend.test.basecpu + echo "Skipping pr image test" + # run: | + # tox -e backend.test.basecpu pr-tests-syft-integration: strategy: diff --git a/README.md b/README.md index 78d48b156f4..dfb7218673b 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,30 @@ -
+


- - Syft Logo + + Syft Logo -Perform data science on `data` that remains in `someone else's` server +

Data Science on data you are not allowed to see

+ +PySyft enables a new way to do data science, where you can use non-public information, without seeing nor obtaining a copy of the data itself. All you need is to connect to a Datasite! + +Datasites are like websites, but for data. Designed with the principles of structured transparency, they enable data owners to control how their data is protected and data scientists to use data without obtaining a copy. + +PySyft supports any statistical analysis or machine learning, offering support for directly running Python code - even using third-party Python libraries. + +

Supported on:

+ +✅ Linux +✅ macOS +✅ Windows +✅ Docker +✅ Kubernetes # Quickstart -✅ `Linux` ✅ `macOS` ✅ `Windows` ✅ `Docker` ✅ `Kubernetes` +Try out your first query against a live demo Datasite! ## Install Client @@ -18,34 +32,46 @@ Perform data science on `data` that remains in `someone else's` server $ pip install -U syft[data_science] ``` +More instructions are available here. + ## Launch Server +Launch a development server directly in your Jupyter Notebook: + ```python -# from Jupyter / Python import syft as sy -sy.requires(">=0.8.8,<0.8.9") + +sy.requires(">=0.9,<0.9.1") + server = sy.orchestra.launch( name="my-datasite", port=8080, create_producer=True, n_consumers=1, - dev_mode=True, + dev_mode=False, reset=True, # resets database ) ``` +or from the command line: + ```bash -# or from the command line $ syft launch --name=my-datasite --port=8080 --reset=True Starting syft-datasite server on 0.0.0.0:8080 ``` +Datasite servers can be deployed as a single container using Docker or directly in Kubernetes. Check out our deployment guide. + ## Launch Client +Main way to use a Datasite is via our Syft client, in a Jupyter Notebook. Check out our PySyft client guide: + ```python import syft as sy -sy.requires(">=0.8.8,<0.8.9") + +sy.requires(">=0.9,<0.9.1") + datasite_client = sy.login( port=8080, email="info@openmined.org", @@ -53,321 +79,98 @@ datasite_client = sy.login( ) ``` -## PySyft in 10 minutes +## PySyft - Getting started 📝 -📝 API Example Notebooks +Learn about PySyft via our getting started guide: -- 00-load-data.ipynb -- 01-submit-code.ipynb -- 02-review-code-and-approve.ipynb -- 03-data-scientist-download-result.ipynb -- 04-pytorch-example.ipynb -- 05-custom-policy.ipynb -- 06-multiple-code-requests.ipynb -- 07-datasite-register-control-flow.ipynb -- 08-code-version.ipynb -- 09-blob-storage.ipynb -- 10-container-images.ipynb -- 11-container-images-k8s.ipynb -- 12-custom-api-endpoint.ipynb +- PySyft from the ground up +- Part 1: Datasets & Assets +- Part 2: Client and Datasite Access +- Part 3: Propose the research study +- Part 4: Review Code Requests +- Part 5: Retrieving Results -## Deploy Kubernetes Helm Chart +# PySyft In-depth -#### 0. Deploy Kubernetes +📚 Check out our docs website. -Required resources: 1 CPU and 4GB RAM. However, you will need some special instructions to deploy, please consult [these instructions](https://github.com/OpenMined/PySyft/blob/dev/notebooks/tutorials/deployments/03-deploy-k8s-k3d.ipynb) or look at the resource constraint testing [here](https://github.com/OpenMined/PySyft/pull/8828#issue-2300774645). -Recommended resources: 8+ Cores and 16GB RAM +Quick PySyft components links: -If you're using Docker Desktop to deploy your Kubernetes, you may need to go into Settings > Resources and increase CPUs and Memory. +- DataSite Server -**Note**: Assuming we have a Kubernetes cluster already setup. +- Syft Client -#### 1. Add and update Helm repo for Syft +- Datasets API (`.datasets`) -```sh -helm repo add openmined https://openmined.github.io/PySyft/helm -helm repo update openmined -``` +- Users API (`.users`) -#### 2. Search for available Syft versions +- Projects API (`.projects`) -```sh -helm search repo openmined/syft --versions --devel -``` - -#### 3. Set your preferred Syft Chart version - -```sh -SYFT_VERSION="" -``` - -#### 4. Provisioning Helm Charts - -```sh -helm install my-datasite openmined/syft --version $SYFT_VERSION --namespace syft --create-namespace --set ingress.className="traefik" -``` +- Request API (`.requests`) -### Ingress Controllers +- Code API (`.code`) -For Azure AKS +- Syft Policies API (`.policy`) -```sh -helm install ... --set ingress.className="azure-application-gateway" -``` - -For AWS EKS +- Settings API (`.settings`) -```sh -helm install ... --set ingress.className="alb" -``` +- Notifications API (`.notifications`) -For Google GKE we need the [`gce` annotation](https://cloud.google.com/kubernetes-engine/docs/how-to/load-balance-ingress#create-ingress). +- Sync API (`.sync`) -```sh -helm install ... --set ingress.class="gce" -``` +## Why use PySyft? -## Note: +In a variety of domains across society, data owners have **valid concerns about the risks associated with sharing their data**, such as legal risks, privacy invasion (_misuing the data_), or intellectual property (_copying and redistributing it_). -🚨 Our old deployment tool `HAGrid` has been `deprecated`. For the updated deployment options kindly refer to: +Datasites enable data scientists to **answer questions** without even seeing or acquiring a copy of the data, **within the data owners's definition of acceptable use**. We call this process Remote Data Science. -- 📚 Deployments +This means that the **current risks** of sharing information with someone will **no longer prevent** the vast benefits such as innovation, insights and scientific discovery. With each Datasite, data owners are able to enable `1000x more accesible data` in each scientific field and lead, together with data scientists, breakthrough innovation. -## Docs and Support +Learn more about our work on our website. -- 📚 Docs -- `#support` on Slack +## Support -# Install Notes +For questions about PySyft, reach out via `#support` on Slack. -- PySyft 0.8.6 Requires: 🐍 `python 3.10 - 3.12` - Run: `pip install -U syft` -- Syft Server Requires: 🐳 `docker` or ☸️ `kubernetes` +## Syft Versions -# Versions +:exclamation: PySyft and Syft Server must use the same `version`. -`0.9.0` (Beta) - `dev` branch 👈🏽 API - Coming soon... -`0.8.8` (Stable) - API +**Latest Stable** -Deprecated: +- `0.9.0` (Stable) - Docs +- Install PySyft (Stable): `pip install -U syft` -- `0.8.7` - API -- `0.8.6` - API -- `0.8.5-post.2` - API -- `0.8.4` - API -- `0.8.3` - API -- `0.8.2` - API -- `0.8.1` - API -- `0.8.0` - API -- `0.7.0` - Course 3 Updated -- `0.6.0` - Course 3 -- `0.5.1` - Course 2 + M1 Hotfix -- `0.2.0` - `0.5.0` +**Latest Beta** -PySyft and Syft Server use the same `version` and its best to match them up where possible. We release weekly betas which can be used in each context: +- `0.9.1` (Beta) - `dev` branch 👈🏽 +- Install PySyft (Beta): `pip install -U syft --pre` -PySyft (Stable): `pip install -U syft` - -PySyft (Beta): `pip install -U syft --pre` - -# What is Syft? - - - - Syft - - -`Syft` is OpenMined's `open source` stack that provides `secure` and `private` Data Science in Python. Syft decouples `private data` from model training, using techniques like [Federated Learning](https://ai.googleblog.com/2017/04/federated-learning-collaborative.html), [Differential Privacy](https://en.wikipedia.org/wiki/Differential_privacy), and [Encrypted Computation](https://en.wikipedia.org/wiki/Homomorphic_encryption). This is done with a `numpy`-like interface and integration with `Deep Learning` frameworks, so that you as a `Data Scientist` can maintain your current workflow while using these new `privacy-enhancing techniques`. - -### Why should I use Syft? - -`Syft` allows a `Data Scientist` to ask `questions` about a `dataset` and, within `privacy limits` set by the `data owner`, get `answers` to those `questions`, all without obtaining a `copy` of the data itself. We call this process `Remote Data Science`. It means in a wide variety of `datasites` across society, the current `risks` of sharing information (`copying` data) with someone such as, privacy invasion, IP theft and blackmail will no longer prevent the vast `benefits` such as innovation, insights and scientific discovery which secure access will provide. - -No more cold calls to get `access` to a dataset. No more weeks of `wait times` to get a `result` on your `query`. It also means `1000x more data` in every datasite. PySyft opens the doors to a streamlined Data Scientist `workflow`, all with the individual's `privacy` at its heart. - - - -# Terminology - - - - - - - - - - - - - - - - - - - - -
- -

👨🏻‍💼 Data Owners

-
- -

👩🏽‍🔬 Data Scientists

-
- - -Provide `datasets` which they would like to make available for `study` by an `outside party` they may or may not `fully trust` has good intentions. - - - - -Are end `users` who desire to perform `computations` or `answer` a specific `question` using one or more data owners' `datasets`. - -
- -

🏰 Datasite Server

-
- -

🔗 Gateway Server

-
- - -Manages the `remote study` of the data by a `Data Scientist` and allows the `Data Owner` to manage the `data` and control the `privacy guarantees` of the subjects under study. It also acts as a `gatekeeper` for the `Data Scientist's` access to the data to compute and experiment with the results. - - - - -Provides services to a group of `Data Owners` and `Data Scientists`, such as dataset `search` and bulk `project approval` (legal / technical) to participate in a project. A gateway server acts as a bridge between it's members (`Datasites`) and their subscribers (`Data Scientists`) and can provide access to a collection of `datasites` at once.
+Find more about previous releases here. # Community - - - - - - -
- -
- - - - - - - - -
-
- - - - -
- - - - - +Supported by the OpenMined Foundation, the OpenMined Community is an online network of over 17,000 technologists, researchers, and industry professionals keen to _unlock 1000x more data in every scientific field and industry_. - - -
-
+ # Courses
- +
- +
- +
@@ -377,13 +180,20 @@ Provides services to a group of `Data Owners` and `Data Scientists`, such as dat # Contributors -OpenMined and Syft appreciates all contributors, if you would like to fix a bug or suggest a new feature, please see our [guidelines](https://openmined.github.io/PySyft/developer_guide/index.html).
+OpenMined and Syft appreciates all contributors, if you would like to fix a bug or suggest a new feature, please reach out via Github or Slack! Contributors +# About OpenMined + +OpenMined is a non-profit foundation creating technology infrastructure that helps researchers get answers from data without needing a copy or direct access. Our community of technologists is building Syft. + + + # Supporters @@ -441,10 +251,6 @@ OpenMined and Syft appreciates all contributors, if you would like to fix a bug
-# Disclaimer - -Syft is under active development and is not yet ready for pilots on private data without our assistance. As early access participants, please contact us via [Slack](https://slack.openmined.org/) or email if you would like to ask a question or have a use case that you would like to discuss. - # License [Apache License 2.0](LICENSE)
diff --git a/VERSION b/VERSION index f74ed6cb9df..732f8747c59 100644 --- a/VERSION +++ b/VERSION @@ -1,5 +1,5 @@ # Mono Repo Global Version -__version__ = "0.9.0-beta.3" +__version__ = "0.9.1-beta.1" # elsewhere we can call this file: `python VERSION` and simply take the stdout # stdlib diff --git a/docs/img/Syft-Logo-Light.svg b/docs/img/Syft-Logo-Light.svg new file mode 100644 index 00000000000..8d1bff88f21 --- /dev/null +++ b/docs/img/Syft-Logo-Light.svg @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/img/Syft-Logo.svg b/docs/img/Syft-Logo.svg new file mode 100644 index 00000000000..24adb15bbf7 --- /dev/null +++ b/docs/img/Syft-Logo.svg @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/notebooks/api/0.8/00-load-data.ipynb b/notebooks/api/0.8/00-load-data.ipynb index 7276ef68170..74e111d9e58 100644 --- a/notebooks/api/0.8/00-load-data.ipynb +++ b/notebooks/api/0.8/00-load-data.ipynb @@ -30,7 +30,7 @@ }, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "# %pip install {package_string} -q" ] @@ -732,7 +732,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.2" + "version": "3.11.5" }, "toc": { "base_numbering": 1, diff --git a/notebooks/api/0.8/01-submit-code.ipynb b/notebooks/api/0.8/01-submit-code.ipynb index 74bb381b81d..d559749e5d3 100644 --- a/notebooks/api/0.8/01-submit-code.ipynb +++ b/notebooks/api/0.8/01-submit-code.ipynb @@ -22,7 +22,7 @@ }, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "# %pip install {package_string} -q" ] diff --git a/notebooks/api/0.8/02-review-code-and-approve.ipynb b/notebooks/api/0.8/02-review-code-and-approve.ipynb index 6f1b86f652f..59edd869743 100644 --- a/notebooks/api/0.8/02-review-code-and-approve.ipynb +++ b/notebooks/api/0.8/02-review-code-and-approve.ipynb @@ -22,7 +22,7 @@ }, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "# %pip install {package_string} -q" ] diff --git a/notebooks/api/0.8/03-data-scientist-download-result.ipynb b/notebooks/api/0.8/03-data-scientist-download-result.ipynb index 47b6cfe001a..0e1adc77ed3 100644 --- a/notebooks/api/0.8/03-data-scientist-download-result.ipynb +++ b/notebooks/api/0.8/03-data-scientist-download-result.ipynb @@ -22,7 +22,7 @@ }, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "# %pip install {package_string} -q" ] diff --git a/notebooks/api/0.8/04-pytorch-example.ipynb b/notebooks/api/0.8/04-pytorch-example.ipynb index e0ef01cb19f..ace9c19eb56 100644 --- a/notebooks/api/0.8/04-pytorch-example.ipynb +++ b/notebooks/api/0.8/04-pytorch-example.ipynb @@ -9,7 +9,7 @@ }, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "# %pip install {package_string} -q" ] diff --git a/notebooks/api/0.8/05-custom-policy.ipynb b/notebooks/api/0.8/05-custom-policy.ipynb index 5f1f1305b33..24e54f8ccc5 100644 --- a/notebooks/api/0.8/05-custom-policy.ipynb +++ b/notebooks/api/0.8/05-custom-policy.ipynb @@ -9,7 +9,7 @@ }, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "# %pip install {package_string} -q" ] diff --git a/notebooks/api/0.8/06-multiple-code-requests.ipynb b/notebooks/api/0.8/06-multiple-code-requests.ipynb index 878a1689f52..24364371695 100644 --- a/notebooks/api/0.8/06-multiple-code-requests.ipynb +++ b/notebooks/api/0.8/06-multiple-code-requests.ipynb @@ -9,7 +9,7 @@ }, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "# %pip install {package_string} -q" ] diff --git a/notebooks/api/0.8/07-datasite-register-control-flow.ipynb b/notebooks/api/0.8/07-datasite-register-control-flow.ipynb index a866135c859..fe6fa0c55d8 100644 --- a/notebooks/api/0.8/07-datasite-register-control-flow.ipynb +++ b/notebooks/api/0.8/07-datasite-register-control-flow.ipynb @@ -25,7 +25,7 @@ "metadata": {}, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "# %pip install {package_string} -q" ] diff --git a/notebooks/api/0.8/08-code-version.ipynb b/notebooks/api/0.8/08-code-version.ipynb index b67ffb54f0d..c85361f7a28 100644 --- a/notebooks/api/0.8/08-code-version.ipynb +++ b/notebooks/api/0.8/08-code-version.ipynb @@ -20,7 +20,7 @@ "metadata": {}, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "%pip install {package_string} -q" ] diff --git a/notebooks/api/0.8/09-blob-storage.ipynb b/notebooks/api/0.8/09-blob-storage.ipynb index 59d36b92342..25d3cafdc58 100644 --- a/notebooks/api/0.8/09-blob-storage.ipynb +++ b/notebooks/api/0.8/09-blob-storage.ipynb @@ -6,7 +6,7 @@ "metadata": {}, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "# %pip install {package_string} -q" ] diff --git a/notebooks/api/0.8/10-container-images.ipynb b/notebooks/api/0.8/10-container-images.ipynb index a6eb907613a..6a14cf9fd8d 100644 --- a/notebooks/api/0.8/10-container-images.ipynb +++ b/notebooks/api/0.8/10-container-images.ipynb @@ -7,7 +7,7 @@ "metadata": {}, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'" ] }, @@ -148,7 +148,8 @@ " \"local-dev\"\n", " if (bool(os.environ[\"DEV_MODE\"]) and running_as_container)\n", " else sy.__version__\n", - ")" + ")\n", + "syft_base_worker_tag = \"0.9.0-beta.5\"" ] }, { diff --git a/notebooks/api/0.8/11-container-images-k8s.ipynb b/notebooks/api/0.8/11-container-images-k8s.ipynb index 34431d4ce14..dbe13e9f19e 100644 --- a/notebooks/api/0.8/11-container-images-k8s.ipynb +++ b/notebooks/api/0.8/11-container-images-k8s.ipynb @@ -7,7 +7,7 @@ "metadata": {}, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'" ] }, diff --git a/notebooks/tutorials/data-owner/01-uploading-private-data.ipynb b/notebooks/tutorials/data-owner/01-uploading-private-data.ipynb index c73d04fed2a..a9c8dea21ea 100644 --- a/notebooks/tutorials/data-owner/01-uploading-private-data.ipynb +++ b/notebooks/tutorials/data-owner/01-uploading-private-data.ipynb @@ -25,7 +25,7 @@ "metadata": {}, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "# %pip install {package_string} -q" ] diff --git a/notebooks/tutorials/data-owner/02-account-management.ipynb b/notebooks/tutorials/data-owner/02-account-management.ipynb index 4f266196ad3..9c628723206 100644 --- a/notebooks/tutorials/data-owner/02-account-management.ipynb +++ b/notebooks/tutorials/data-owner/02-account-management.ipynb @@ -23,7 +23,7 @@ "metadata": {}, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "# %pip install {package_string} -q" ] diff --git a/notebooks/tutorials/data-owner/03-messages-and-requests.ipynb b/notebooks/tutorials/data-owner/03-messages-and-requests.ipynb index 6c9f4dcf783..0fb0a12e672 100644 --- a/notebooks/tutorials/data-owner/03-messages-and-requests.ipynb +++ b/notebooks/tutorials/data-owner/03-messages-and-requests.ipynb @@ -23,7 +23,7 @@ "metadata": {}, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "# %pip install {package_string} -q" ] diff --git a/notebooks/tutorials/data-owner/05-syft-services-api.ipynb b/notebooks/tutorials/data-owner/05-syft-services-api.ipynb index b9fc9463ec8..d2b8a90507d 100644 --- a/notebooks/tutorials/data-owner/05-syft-services-api.ipynb +++ b/notebooks/tutorials/data-owner/05-syft-services-api.ipynb @@ -23,7 +23,7 @@ "metadata": {}, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "# %pip install {package_string} -q" ] diff --git a/notebooks/tutorials/data-scientist/03-working-with-private-datasets.ipynb b/notebooks/tutorials/data-scientist/03-working-with-private-datasets.ipynb index fa974e5c79e..731c633473b 100644 --- a/notebooks/tutorials/data-scientist/03-working-with-private-datasets.ipynb +++ b/notebooks/tutorials/data-scientist/03-working-with-private-datasets.ipynb @@ -23,7 +23,7 @@ "metadata": {}, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "# %pip install {package_string} -q" ] diff --git a/notebooks/tutorials/data-scientist/04-syft-functions.ipynb b/notebooks/tutorials/data-scientist/04-syft-functions.ipynb index f5bedb94b81..63355d5f098 100644 --- a/notebooks/tutorials/data-scientist/04-syft-functions.ipynb +++ b/notebooks/tutorials/data-scientist/04-syft-functions.ipynb @@ -23,7 +23,7 @@ "metadata": {}, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "# %pip install {package_string} -q" ] @@ -206,7 +206,7 @@ "metadata": {}, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "# %pip install {package_string} -q" ] diff --git a/notebooks/tutorials/data-scientist/05-messaging-and-requests.ipynb b/notebooks/tutorials/data-scientist/05-messaging-and-requests.ipynb index 7e2e796514a..656d167dbf0 100644 --- a/notebooks/tutorials/data-scientist/05-messaging-and-requests.ipynb +++ b/notebooks/tutorials/data-scientist/05-messaging-and-requests.ipynb @@ -23,7 +23,7 @@ "metadata": {}, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "# %pip install {package_string} -q" ] diff --git a/notebooks/tutorials/hello-syft/01-hello-syft.ipynb b/notebooks/tutorials/hello-syft/01-hello-syft.ipynb index ea38860cbb1..5b51bbf0307 100644 --- a/notebooks/tutorials/hello-syft/01-hello-syft.ipynb +++ b/notebooks/tutorials/hello-syft/01-hello-syft.ipynb @@ -56,7 +56,7 @@ }, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "# %pip install {package_string} -q" ] diff --git a/notebooks/tutorials/model-auditing/colab/01-user-log.ipynb b/notebooks/tutorials/model-auditing/colab/01-user-log.ipynb index e0a05c48fb4..472d2c8cf64 100644 --- a/notebooks/tutorials/model-auditing/colab/01-user-log.ipynb +++ b/notebooks/tutorials/model-auditing/colab/01-user-log.ipynb @@ -44,7 +44,7 @@ "outputs": [], "source": [ "# install syft\n", - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "%pip install {package_string} -q" ] diff --git a/notebooks/tutorials/pandas-cookbook/01-reading-from-a-csv.ipynb b/notebooks/tutorials/pandas-cookbook/01-reading-from-a-csv.ipynb index 1b6e66e359c..39164d8e01a 100644 --- a/notebooks/tutorials/pandas-cookbook/01-reading-from-a-csv.ipynb +++ b/notebooks/tutorials/pandas-cookbook/01-reading-from-a-csv.ipynb @@ -25,7 +25,7 @@ }, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "# %pip install {package_string} -q" ] diff --git a/notebooks/tutorials/pandas-cookbook/02-selecting-data-finding-common-complain.ipynb b/notebooks/tutorials/pandas-cookbook/02-selecting-data-finding-common-complain.ipynb index 875181c6c60..ad24ca33465 100644 --- a/notebooks/tutorials/pandas-cookbook/02-selecting-data-finding-common-complain.ipynb +++ b/notebooks/tutorials/pandas-cookbook/02-selecting-data-finding-common-complain.ipynb @@ -25,7 +25,7 @@ }, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "# %pip install {package_string} -q" ] diff --git a/notebooks/tutorials/pandas-cookbook/03-which-borough-has-the-most-noise-complaints.ipynb b/notebooks/tutorials/pandas-cookbook/03-which-borough-has-the-most-noise-complaints.ipynb index 747c8dbbba4..2ed631c762e 100644 --- a/notebooks/tutorials/pandas-cookbook/03-which-borough-has-the-most-noise-complaints.ipynb +++ b/notebooks/tutorials/pandas-cookbook/03-which-borough-has-the-most-noise-complaints.ipynb @@ -28,7 +28,7 @@ }, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "# %pip install {package_string} -q" ] diff --git a/notebooks/tutorials/pandas-cookbook/04-weekday-bike-most-groupby-aggregate.ipynb b/notebooks/tutorials/pandas-cookbook/04-weekday-bike-most-groupby-aggregate.ipynb index f0225c1bbe2..4a1ccca2234 100644 --- a/notebooks/tutorials/pandas-cookbook/04-weekday-bike-most-groupby-aggregate.ipynb +++ b/notebooks/tutorials/pandas-cookbook/04-weekday-bike-most-groupby-aggregate.ipynb @@ -17,7 +17,7 @@ }, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "# %pip install {package_string} -q" ] diff --git a/notebooks/tutorials/pandas-cookbook/05-combining-dataframes-scraping-weather-data.ipynb b/notebooks/tutorials/pandas-cookbook/05-combining-dataframes-scraping-weather-data.ipynb index 46fd4da0bfa..9cb1ff7a84f 100644 --- a/notebooks/tutorials/pandas-cookbook/05-combining-dataframes-scraping-weather-data.ipynb +++ b/notebooks/tutorials/pandas-cookbook/05-combining-dataframes-scraping-weather-data.ipynb @@ -25,7 +25,7 @@ }, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "# %pip install {package_string} -q" ] diff --git a/notebooks/tutorials/pandas-cookbook/06-string-operations-which-month-was-the-snowiest.ipynb b/notebooks/tutorials/pandas-cookbook/06-string-operations-which-month-was-the-snowiest.ipynb index c9032f5dbd3..6714f338819 100644 --- a/notebooks/tutorials/pandas-cookbook/06-string-operations-which-month-was-the-snowiest.ipynb +++ b/notebooks/tutorials/pandas-cookbook/06-string-operations-which-month-was-the-snowiest.ipynb @@ -25,7 +25,7 @@ }, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "# %pip install {package_string} -q" ] diff --git a/notebooks/tutorials/pandas-cookbook/07-cleaning-up-messy-data.ipynb b/notebooks/tutorials/pandas-cookbook/07-cleaning-up-messy-data.ipynb index 1dc0aa9b928..c1c034d15b1 100644 --- a/notebooks/tutorials/pandas-cookbook/07-cleaning-up-messy-data.ipynb +++ b/notebooks/tutorials/pandas-cookbook/07-cleaning-up-messy-data.ipynb @@ -25,7 +25,7 @@ }, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "# %pip install {package_string} -q" ] diff --git a/notebooks/tutorials/pandas-cookbook/08-how-to-deal-with-timestamps.ipynb b/notebooks/tutorials/pandas-cookbook/08-how-to-deal-with-timestamps.ipynb index 12f05b1c2e5..574929a9953 100644 --- a/notebooks/tutorials/pandas-cookbook/08-how-to-deal-with-timestamps.ipynb +++ b/notebooks/tutorials/pandas-cookbook/08-how-to-deal-with-timestamps.ipynb @@ -27,7 +27,7 @@ }, "outputs": [], "source": [ - "SYFT_VERSION = \">=0.8.2.b0,<0.9\"\n", + "SYFT_VERSION = \">=0.9,<1.0.0\"\n", "package_string = f'\"syft{SYFT_VERSION}\"'\n", "# %pip install {package_string} -q" ] diff --git a/packages/grid/VERSION b/packages/grid/VERSION index f74ed6cb9df..732f8747c59 100644 --- a/packages/grid/VERSION +++ b/packages/grid/VERSION @@ -1,5 +1,5 @@ # Mono Repo Global Version -__version__ = "0.9.0-beta.3" +__version__ = "0.9.1-beta.1" # 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 3f7baa8520f..4298818a6a7 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.9.0-beta.3" +ARG SYFT_VERSION_TAG="0.9.1-beta.1" 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 cfa734a6928..e6b8ac9b83e 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.9.0-beta.3" + VERSION: "0.9.1-beta.1" 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 3fc6edd48af..2f79b05488e 100644 --- a/packages/grid/frontend/package.json +++ b/packages/grid/frontend/package.json @@ -1,6 +1,6 @@ { "name": "syft-ui", - "version": "0.9.0-beta.3", + "version": "0.9.1-beta.1", "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 0632a030e55..4efc2278efa 100644 --- a/packages/grid/helm/repo/index.yaml +++ b/packages/grid/helm/repo/index.yaml @@ -1,9 +1,61 @@ apiVersion: v1 entries: syft: + - apiVersion: v2 + appVersion: 0.9.1-beta.1 + created: "2024-08-01T15:29:13.141607481Z" + description: Perform numpy-like analysis on data that remains in someone elses + server + digest: 9c99243e63888391654f23044144e2095dee48a599cd4b2e4f43ead6f76a8572 + 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.9.1-beta.1.tgz + version: 0.9.1-beta.1 + - apiVersion: v2 + appVersion: 0.9.0 + created: "2024-08-01T15:29:13.140850069Z" + description: Perform numpy-like analysis on data that remains in someone elses + server + digest: baf218c8543a2525f7d4cced1e49b0d4e38ee1661d7171a55a069bf765b5b6d8 + 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.9.0.tgz + version: 0.9.0 + - apiVersion: v2 + appVersion: 0.9.0-beta.5 + created: "2024-08-01T15:29:13.139679484Z" + description: Perform numpy-like analysis on data that remains in someone elses + server + digest: a4eafd04b39b0c75d6a28ed2f7cfece450150477dc2c6a01e10e2087a5b02835 + 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.9.0-beta.5.tgz + version: 0.9.0-beta.5 + - apiVersion: v2 + appVersion: 0.9.0-beta.4 + created: "2024-08-01T15:29:13.138746172Z" + description: Perform numpy-like analysis on data that remains in someone elses + server + digest: 5a3cd3dd57609231ffc13e6af8d55f68b1b79fbbe8261740db957526fb8a536a + 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.9.0-beta.4.tgz + version: 0.9.0-beta.4 - apiVersion: v2 appVersion: 0.9.0-beta.3 - created: "2024-07-30T07:52:02.555199795Z" + created: "2024-08-01T15:29:13.13797819Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: affe0898286720a0281c2363bed404a09d229a5359951b4dfdd8e746d628b4cb @@ -16,7 +68,7 @@ entries: version: 0.9.0-beta.3 - apiVersion: v2 appVersion: 0.9.0-beta.2 - created: "2024-07-30T07:52:02.554486414Z" + created: "2024-08-01T15:29:13.137279439Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 105b60f0ff01f50386d2b063cb58c0e91ee41b74cefee7bca3f56e4025c38dd1 @@ -29,7 +81,7 @@ entries: version: 0.9.0-beta.2 - apiVersion: v2 appVersion: 0.9.0-beta.1 - created: "2024-07-30T07:52:02.553765819Z" + created: "2024-08-01T15:29:13.136551402Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 10246075684d168e6a51c009581b77df8d729e29e11abc4a360fae42659a6409 @@ -42,7 +94,7 @@ entries: version: 0.9.0-beta.1 - apiVersion: v2 appVersion: 0.8.8 - created: "2024-07-30T07:52:02.553000261Z" + created: "2024-08-01T15:29:13.135854133Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 46f75bdf8c39e0f17de266bf19b64852e0dbf7f7bcea60bf7a19018ff17370ad @@ -55,7 +107,7 @@ entries: version: 0.8.8 - apiVersion: v2 appVersion: 0.8.8-beta.4 - created: "2024-07-30T07:52:02.551541399Z" + created: "2024-08-01T15:29:13.135152767Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: cc0a3b49df19435a407e4764be6c5748511f14273e668e7f1d326af28b29f22a @@ -68,7 +120,7 @@ entries: version: 0.8.8-beta.4 - apiVersion: v2 appVersion: 0.8.8-beta.3 - created: "2024-07-30T07:52:02.550844138Z" + created: "2024-08-01T15:29:13.134437244Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: de2fba39516e98be39ae0110a2cfa5bfa2b665d7a35a4516b43c5310bbf621dc @@ -81,7 +133,7 @@ entries: version: 0.8.8-beta.3 - apiVersion: v2 appVersion: 0.8.8-beta.2 - created: "2024-07-30T07:52:02.550142499Z" + created: "2024-08-01T15:29:13.133666357Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 1323f4082c65944b522cd8e36dc7285c83c7dfcf6a56f7962665a8b1256a4d09 @@ -94,7 +146,7 @@ entries: version: 0.8.8-beta.2 - apiVersion: v2 appVersion: 0.8.8-beta.1 - created: "2024-07-30T07:52:02.549409011Z" + created: "2024-08-01T15:29:13.132909256Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: ec027b50b8182ef656be14ddca9537785c37712a4be8cb940f30ac029b63de2d @@ -107,7 +159,7 @@ entries: version: 0.8.8-beta.1 - apiVersion: v2 appVersion: 0.8.7 - created: "2024-07-30T07:52:02.54871199Z" + created: "2024-08-01T15:29:13.131545393Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 7ea7f63d1c6d0948860547f8aa39343fc5ef399c8e62d9d7edd4473cf44d8186 @@ -120,7 +172,7 @@ entries: version: 0.8.7 - apiVersion: v2 appVersion: 0.8.7-beta.16 - created: "2024-07-30T07:52:02.541931969Z" + created: "2024-08-01T15:29:13.125583873Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 75190eae57b64c2c47ab4a7fe3c6e94f35eb8045807a843ec8d7b26585c9e840 @@ -133,7 +185,7 @@ entries: version: 0.8.7-beta.16 - apiVersion: v2 appVersion: 0.8.7-beta.15 - created: "2024-07-30T07:52:02.540990643Z" + created: "2024-08-01T15:29:13.124094167Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 56879d9a9f10febce88676d3d20621d74d17f9e33f5df6ae1e9bc3078c216f0c @@ -146,7 +198,7 @@ entries: version: 0.8.7-beta.15 - apiVersion: v2 appVersion: 0.8.7-beta.14 - created: "2024-07-30T07:52:02.540152078Z" + created: "2024-08-01T15:29:13.123254691Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 6e7cbca1d603ba11e09ae2a3089cfdafaa08cfa07c553c4f0fb8b42f8d3028f7 @@ -159,7 +211,7 @@ entries: version: 0.8.7-beta.14 - apiVersion: v2 appVersion: 0.8.7-beta.13 - created: "2024-07-30T07:52:02.539284649Z" + created: "2024-08-01T15:29:13.122395649Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 1dbe3ecdfec57bf25020cbcff783fab908f0eb0640ad684470b2fd1da1928005 @@ -172,7 +224,7 @@ entries: version: 0.8.7-beta.13 - apiVersion: v2 appVersion: 0.8.7-beta.12 - created: "2024-07-30T07:52:02.538557312Z" + created: "2024-08-01T15:29:13.121699131Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: e92b2f3a522dabb3a79ff762a7042ae16d2bf3a53eebbb2885a69b9f834d109c @@ -185,7 +237,7 @@ entries: version: 0.8.7-beta.12 - apiVersion: v2 appVersion: 0.8.7-beta.11 - created: "2024-07-30T07:52:02.537044321Z" + created: "2024-08-01T15:29:13.120987045Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 099f6cbd44b699ee2410a4be012ed1a8a65bcacb06a43057b2779d7fe34fc0ad @@ -198,7 +250,7 @@ entries: version: 0.8.7-beta.11 - apiVersion: v2 appVersion: 0.8.7-beta.10 - created: "2024-07-30T07:52:02.536350606Z" + created: "2024-08-01T15:29:13.120259269Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 00773cb241522e281c1915339fc362e047650e08958a736e93d6539f44cb5e25 @@ -211,7 +263,7 @@ entries: version: 0.8.7-beta.10 - apiVersion: v2 appVersion: 0.8.7-beta.9 - created: "2024-07-30T07:52:02.547873315Z" + created: "2024-08-01T15:29:13.130714323Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: a3f8e85d9ddef7a644b959fcc2fcb0fc08f7b6abae1045e893d0d62fa4ae132e @@ -224,7 +276,7 @@ entries: version: 0.8.7-beta.9 - apiVersion: v2 appVersion: 0.8.7-beta.8 - created: "2024-07-30T07:52:02.547221759Z" + created: "2024-08-01T15:29:13.130066838Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: a422ac88d8fd1fb80d5004d5eb6e95fa9efc7f6a87da12e5ac04829da7f04c4d @@ -237,7 +289,7 @@ entries: version: 0.8.7-beta.8 - apiVersion: v2 appVersion: 0.8.7-beta.7 - created: "2024-07-30T07:52:02.546554715Z" + created: "2024-08-01T15:29:13.129403813Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 0dc313a1092e6256a7c8aad002c8ec380b3add2c289d680db1e238a336399b7a @@ -250,7 +302,7 @@ entries: version: 0.8.7-beta.7 - apiVersion: v2 appVersion: 0.8.7-beta.6 - created: "2024-07-30T07:52:02.545905463Z" + created: "2024-08-01T15:29:13.128739987Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 052a2ec1102d2a4c9915f95647abd4a6012f56fa05a106f4952ee9b55bf7bae8 @@ -263,7 +315,7 @@ entries: version: 0.8.7-beta.6 - apiVersion: v2 appVersion: 0.8.7-beta.5 - created: "2024-07-30T07:52:02.544434458Z" + created: "2024-08-01T15:29:13.12811294Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 1728af756907c3fcbe87c2fd2de014a2d963c22a4c2eb6af6596b525a9b9a18a @@ -276,7 +328,7 @@ entries: version: 0.8.7-beta.5 - apiVersion: v2 appVersion: 0.8.7-beta.4 - created: "2024-07-30T07:52:02.543810193Z" + created: "2024-08-01T15:29:13.127481375Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 387a57a3904a05ed61e92ee48605ef6fd5044ff7e822e0924e0d4c485e2c88d2 @@ -289,7 +341,7 @@ entries: version: 0.8.7-beta.4 - apiVersion: v2 appVersion: 0.8.7-beta.3 - created: "2024-07-30T07:52:02.543190437Z" + created: "2024-08-01T15:29:13.126855139Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 3668002b7a4118516b2ecd61d6275f60d83fc12841587ab8f62e1c1200731c67 @@ -302,7 +354,7 @@ entries: version: 0.8.7-beta.3 - apiVersion: v2 appVersion: 0.8.7-beta.2 - created: "2024-07-30T07:52:02.542557446Z" + created: "2024-08-01T15:29:13.12621607Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: e62217ffcadee2b8896ab0543f9ccc42f2df898fd979438ac9376d780b802af7 @@ -315,7 +367,7 @@ entries: version: 0.8.7-beta.2 - apiVersion: v2 appVersion: 0.8.7-beta.1 - created: "2024-07-30T07:52:02.535679053Z" + created: "2024-08-01T15:29:13.119587007Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 553981fe1d5c980e6903b3ff2f1b9b97431f6dd8aee91e3976bcc5594285235e @@ -328,7 +380,7 @@ entries: version: 0.8.7-beta.1 - apiVersion: v2 appVersion: 0.8.6 - created: "2024-07-30T07:52:02.53516825Z" + created: "2024-08-01T15:29:13.119067632Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: ddbbe6fea1702e57404875eb3019a3b1a341017bdbb5fbc6ce418507e5c15756 @@ -341,7 +393,7 @@ entries: version: 0.8.6 - apiVersion: v2 appVersion: 0.8.6-beta.1 - created: "2024-07-30T07:52:02.534628343Z" + created: "2024-08-01T15:29:13.118527568Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: cc2c81ef6796ac853dce256e6bf8a6af966c21803e6534ea21920af681c62e61 @@ -354,7 +406,7 @@ entries: version: 0.8.6-beta.1 - apiVersion: v2 appVersion: 0.8.5 - created: "2024-07-30T07:52:02.534086482Z" + created: "2024-08-01T15:29:13.117972175Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: db5d90d44006209fd5ecdebd88f5fd56c70f7c76898343719a0ff8da46da948a @@ -367,7 +419,7 @@ entries: version: 0.8.5 - apiVersion: v2 appVersion: 0.8.5-post.2 - created: "2024-07-30T07:52:02.533282402Z" + created: "2024-08-01T15:29:13.116851852Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: ea3f7269b55f773fa165d7008c054b7cf3ec4c62eb40a96f08cd3a9b77fd2165 @@ -380,7 +432,7 @@ entries: version: 0.8.5-post.2 - apiVersion: v2 appVersion: 0.8.5-post.1 - created: "2024-07-30T07:52:02.532699474Z" + created: "2024-08-01T15:29:13.115968033Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 9deb844d3dc2d8480c60f8c631dcc7794adfb39cec3aa3b1ce22ea26fdf87d02 @@ -393,7 +445,7 @@ entries: version: 0.8.5-post.1 - apiVersion: v2 appVersion: 0.8.5-beta.10 - created: "2024-07-30T07:52:02.524984229Z" + created: "2024-08-01T15:29:13.10834938Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 9cfe01e8f57eca462261a24a805b41509be2de9a0fee76e331d124ed98c4bc49 @@ -406,7 +458,7 @@ entries: version: 0.8.5-beta.10 - apiVersion: v2 appVersion: 0.8.5-beta.9 - created: "2024-07-30T07:52:02.531873443Z" + created: "2024-08-01T15:29:13.115214259Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 057f1733f2bc966e15618f62629315c8207773ef6211c79c4feb557dae15c32b @@ -419,7 +471,7 @@ entries: version: 0.8.5-beta.9 - apiVersion: v2 appVersion: 0.8.5-beta.8 - created: "2024-07-30T07:52:02.531097445Z" + created: "2024-08-01T15:29:13.114465403Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 921cbce836c3032ef62b48cc82b5b4fcbe44fb81d473cf4d69a4bf0f806eb298 @@ -432,7 +484,7 @@ entries: version: 0.8.5-beta.8 - apiVersion: v2 appVersion: 0.8.5-beta.7 - created: "2024-07-30T07:52:02.529642591Z" + created: "2024-08-01T15:29:13.113707921Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 75482e955b2b9853a80bd653afb1d56535f78f3bfb7726798522307eb3effbbd @@ -445,7 +497,7 @@ entries: version: 0.8.5-beta.7 - apiVersion: v2 appVersion: 0.8.5-beta.6 - created: "2024-07-30T07:52:02.528891289Z" + created: "2024-08-01T15:29:13.112901958Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 6a2dfaf65ca855e1b3d7b966d4ff291e6fcbe761e2fc2a78033211ccd3a75de0 @@ -458,7 +510,7 @@ entries: version: 0.8.5-beta.6 - apiVersion: v2 appVersion: 0.8.5-beta.5 - created: "2024-07-30T07:52:02.528139616Z" + created: "2024-08-01T15:29:13.112145739Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: fead03823bef04d66901d563aa755c68ab277f72b126aaa6f0dce76a6f3bdb6d @@ -471,7 +523,7 @@ entries: version: 0.8.5-beta.5 - apiVersion: v2 appVersion: 0.8.5-beta.4 - created: "2024-07-30T07:52:02.527372726Z" + created: "2024-08-01T15:29:13.11138984Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 93e4539d5726a7fd0d6a3e93d1c17c6a358a923ddc01d102eab22f37377502ab @@ -484,7 +536,7 @@ entries: version: 0.8.5-beta.4 - apiVersion: v2 appVersion: 0.8.5-beta.3 - created: "2024-07-30T07:52:02.52654962Z" + created: "2024-08-01T15:29:13.110620826Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: f91e9390edf3441469048f5da646099af98f8b6d199409d0e2c1e6da3a51f054 @@ -497,7 +549,7 @@ entries: version: 0.8.5-beta.3 - apiVersion: v2 appVersion: 0.8.5-beta.2 - created: "2024-07-30T07:52:02.525785675Z" + created: "2024-08-01T15:29:13.10984488Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 59159c3aa4888038edc3c0135c83402363d7a0639fe62966a1e9d4928a364fa8 @@ -510,7 +562,7 @@ entries: version: 0.8.5-beta.2 - apiVersion: v2 appVersion: 0.8.5-beta.1 - created: "2024-07-30T07:52:02.524197541Z" + created: "2024-08-01T15:29:13.107586959Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 65aeb74c52ed8ba5474af500b4c1188a570ee4cb1f2a2da356b3488d28356ed9 @@ -522,7 +574,7 @@ entries: version: 0.8.5-beta.1 - apiVersion: v2 appVersion: 0.8.4 - created: "2024-07-30T07:52:02.523777909Z" + created: "2024-08-01T15:29:13.1072042Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 08afea8e3a9eef225b7e611f0bc1216c140053ef8e51439b02337faeac621fd0 @@ -534,7 +586,7 @@ entries: version: 0.8.4 - apiVersion: v2 appVersion: 0.8.4-beta.31 - created: "2024-07-30T07:52:02.520538172Z" + created: "2024-08-01T15:29:13.104743922Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: fabf3e2f37e53fa623f5d3d99b00feae06e278e5cd63bce419089946312ab1fc @@ -546,7 +598,7 @@ entries: version: 0.8.4-beta.31 - apiVersion: v2 appVersion: 0.8.4-beta.30 - created: "2024-07-30T07:52:02.52011886Z" + created: "2024-08-01T15:29:13.104329705Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 6e8f792709f73ec14eab48a268bdf50a4505b340bd142cddd7c7bfffd94009ad @@ -558,7 +610,7 @@ entries: version: 0.8.4-beta.30 - apiVersion: v2 appVersion: 0.8.4-beta.29 - created: "2024-07-30T07:52:02.519367047Z" + created: "2024-08-01T15:29:13.103538319Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 4c985d6a9b3456769c4013f9e85e7374c0f963d2d27627e61f914f5537de1971 @@ -570,7 +622,7 @@ entries: version: 0.8.4-beta.29 - apiVersion: v2 appVersion: 0.8.4-beta.28 - created: "2024-07-30T07:52:02.51896133Z" + created: "2024-08-01T15:29:13.10310205Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: bd2aa3c92c768c47c502e31a326f341addcb34e64d22cdcbf5cc3f19689d859c @@ -582,7 +634,7 @@ entries: version: 0.8.4-beta.28 - apiVersion: v2 appVersion: 0.8.4-beta.27 - created: "2024-07-30T07:52:02.518551395Z" + created: "2024-08-01T15:29:13.102665741Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: e8ad0869993af39d7adda8cb868dc0b24cfb63b4bb9820dc579939c1007a60ba @@ -594,7 +646,7 @@ entries: version: 0.8.4-beta.27 - apiVersion: v2 appVersion: 0.8.4-beta.26 - created: "2024-07-30T07:52:02.518138565Z" + created: "2024-08-01T15:29:13.101947779Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 30dccf630aa25a86a03c67572fe5411687d8ce6d58def448ea10efdba2b85e3a @@ -606,7 +658,7 @@ entries: version: 0.8.4-beta.26 - apiVersion: v2 appVersion: 0.8.4-beta.25 - created: "2024-07-30T07:52:02.517708863Z" + created: "2024-08-01T15:29:13.101071183Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: b6e2043bcf5a0335967d770c7939f5a7832955359a7d871c90b265660ff26e5f @@ -618,7 +670,7 @@ entries: version: 0.8.4-beta.25 - apiVersion: v2 appVersion: 0.8.4-beta.24 - created: "2024-07-30T07:52:02.517258292Z" + created: "2024-08-01T15:29:13.100625657Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: b19efa95394d50bb8d76da6ec306de5d3bb9ea55371fafea95a1282a697fa33e @@ -630,7 +682,7 @@ entries: version: 0.8.4-beta.24 - apiVersion: v2 appVersion: 0.8.4-beta.23 - created: "2024-07-30T07:52:02.516825515Z" + created: "2024-08-01T15:29:13.100212512Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 5c5d05c15bff548574896118ce92335ae10c5b78f5307fe9b2618e5a5aa71a5c @@ -642,7 +694,7 @@ entries: version: 0.8.4-beta.23 - apiVersion: v2 appVersion: 0.8.4-beta.22 - created: "2024-07-30T07:52:02.516242358Z" + created: "2024-08-01T15:29:13.099809034Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 0160dbce938198132ca9cd2a5cb362816344687291f5b6d7cf6de8f2855e9414 @@ -654,7 +706,7 @@ entries: version: 0.8.4-beta.22 - apiVersion: v2 appVersion: 0.8.4-beta.21 - created: "2024-07-30T07:52:02.515282758Z" + created: "2024-08-01T15:29:13.099404224Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 7dce153d2fcae7513e9c132e139b2721fd975ea3cc43a370e34dbeb2a1b7f683 @@ -666,7 +718,7 @@ entries: version: 0.8.4-beta.21 - apiVersion: v2 appVersion: 0.8.4-beta.20 - created: "2024-07-30T07:52:02.514870298Z" + created: "2024-08-01T15:29:13.098993704Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: c51189a187bbf24135382e25cb00964e0330dfcd3b2f0c884581a6686f05dd28 @@ -678,7 +730,7 @@ entries: version: 0.8.4-beta.20 - apiVersion: v2 appVersion: 0.8.4-beta.19 - created: "2024-07-30T07:52:02.513887054Z" + created: "2024-08-01T15:29:13.098019956Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 8219575dedb42fa2ddbf2768a4e9afbfacbc2dff7e953d77c7b10a41b78dc687 @@ -690,7 +742,7 @@ entries: version: 0.8.4-beta.19 - apiVersion: v2 appVersion: 0.8.4-beta.18 - created: "2024-07-30T07:52:02.51344515Z" + created: "2024-08-01T15:29:13.097619084Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 6418cde559cf12f1f7fea5a2b123bba950e50eeb3be002441827d2ab7f9e4ef7 @@ -702,7 +754,7 @@ entries: version: 0.8.4-beta.18 - apiVersion: v2 appVersion: 0.8.4-beta.16 - created: "2024-07-30T07:52:02.513035806Z" + created: "2024-08-01T15:29:13.097211479Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 9c9840a7c9476dbb08e0ac83926330718fe50c89879752dd8f92712b036109c0 @@ -714,7 +766,7 @@ entries: version: 0.8.4-beta.16 - apiVersion: v2 appVersion: 0.8.4-beta.15 - created: "2024-07-30T07:52:02.512631241Z" + created: "2024-08-01T15:29:13.096765712Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 0955fd22da028315e30c68132cbfa4bdc82bae622039bcfce0de339707bb82eb @@ -726,7 +778,7 @@ entries: version: 0.8.4-beta.15 - apiVersion: v2 appVersion: 0.8.4-beta.14 - created: "2024-07-30T07:52:02.512188014Z" + created: "2024-08-01T15:29:13.096352075Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 56208571956abe20ed7a5cc1867cab2667ed792c63e53d0e8bb70a9b438b7bf6 @@ -738,7 +790,7 @@ entries: version: 0.8.4-beta.14 - apiVersion: v2 appVersion: 0.8.4-beta.13 - created: "2024-07-30T07:52:02.511832842Z" + created: "2024-08-01T15:29:13.095990988Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: d7222c72412b6ee5833fbb07d2549be179cdfc7ccd89e0ad947d112fce799b83 @@ -750,7 +802,7 @@ entries: version: 0.8.4-beta.13 - apiVersion: v2 appVersion: 0.8.4-beta.12 - created: "2024-07-30T07:52:02.511380467Z" + created: "2024-08-01T15:29:13.095268391Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: af08c723756e397962b2d5190dedfd50797b771c5caf58b93a6f65d8fa24785c @@ -762,7 +814,7 @@ entries: version: 0.8.4-beta.12 - apiVersion: v2 appVersion: 0.8.4-beta.11 - created: "2024-07-30T07:52:02.511028791Z" + created: "2024-08-01T15:29:13.094537549Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: a0235835ba57d185a83dd8a26281fa37b2077c3a37fe3a1c50585005695927e3 @@ -774,7 +826,7 @@ entries: version: 0.8.4-beta.11 - apiVersion: v2 appVersion: 0.8.4-beta.10 - created: "2024-07-30T07:52:02.510681654Z" + created: "2024-08-01T15:29:13.094195677Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 910ddfeba0c5e66651500dd11404afff092adc0f768ed68e0d93b04b83aa4388 @@ -786,7 +838,7 @@ entries: version: 0.8.4-beta.10 - apiVersion: v2 appVersion: 0.8.4-beta.9 - created: "2024-07-30T07:52:02.522909196Z" + created: "2024-08-01T15:29:13.106796495Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: c25ca8a9f072d6a5d02232448deaef5668aca05f24dfffbba3ebe30a4f75bb26 @@ -798,7 +850,7 @@ entries: version: 0.8.4-beta.9 - apiVersion: v2 appVersion: 0.8.4-beta.8 - created: "2024-07-30T07:52:02.522355593Z" + created: "2024-08-01T15:29:13.106461226Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 7249a39d4137e457b369384ba0a365c271c780d93a8327ce25083df763c39999 @@ -810,7 +862,7 @@ entries: version: 0.8.4-beta.8 - apiVersion: v2 appVersion: 0.8.4-beta.7 - created: "2024-07-30T07:52:02.521971066Z" + created: "2024-08-01T15:29:13.106129052Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: ee750c7c8d6ea05bd447375e624fdd7f66dd87680ab81f7b7e73df7379a9024a @@ -822,7 +874,7 @@ entries: version: 0.8.4-beta.7 - apiVersion: v2 appVersion: 0.8.4-beta.6 - created: "2024-07-30T07:52:02.521579615Z" + created: "2024-08-01T15:29:13.105798492Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 0e046be9f73df7444a995608c59af16fab9030b139b2acb4d6db6185b8eb5337 @@ -834,7 +886,7 @@ entries: version: 0.8.4-beta.6 - apiVersion: v2 appVersion: 0.8.4-beta.5 - created: "2024-07-30T07:52:02.521228801Z" + created: "2024-08-01T15:29:13.105465156Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: b56e9a23d46810eccdb4cf5272cc05126da3f6db314e541959c3efb5f260620b @@ -846,7 +898,7 @@ entries: version: 0.8.4-beta.5 - apiVersion: v2 appVersion: 0.8.4-beta.4 - created: "2024-07-30T07:52:02.520885831Z" + created: "2024-08-01T15:29:13.105119327Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: 1d5808ecaf55391f3b27ae6236400066508acbd242e33db24a1ab4bffa77409e @@ -858,7 +910,7 @@ entries: version: 0.8.4-beta.4 - apiVersion: v2 appVersion: 0.8.4-beta.3 - created: "2024-07-30T07:52:02.51971155Z" + created: "2024-08-01T15:29:13.103899277Z" description: Perform numpy-like analysis on data that remains in someone elses server digest: b64efa8529d82be56c6ab60487ed24420a5614d96d2509c1f93c1003eda71a54 @@ -870,7 +922,7 @@ entries: version: 0.8.4-beta.3 - apiVersion: v2 appVersion: 0.8.4-beta.2 - created: "2024-07-30T07:52:02.514445265Z" + created: "2024-08-01T15:29:13.098574908Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -886,7 +938,7 @@ entries: version: 0.8.4-beta.2 - apiVersion: v2 appVersion: 0.8.4-beta.1 - created: "2024-07-30T07:52:02.510311433Z" + created: "2024-08-01T15:29:13.093804072Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -902,7 +954,7 @@ entries: version: 0.8.4-beta.1 - apiVersion: v2 appVersion: 0.8.3 - created: "2024-07-30T07:52:02.509304673Z" + created: "2024-08-01T15:29:13.093241035Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -918,7 +970,7 @@ entries: version: 0.8.3 - apiVersion: v2 appVersion: 0.8.3-beta.6 - created: "2024-07-30T07:52:02.508015117Z" + created: "2024-08-01T15:29:13.092549197Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -934,7 +986,7 @@ entries: version: 0.8.3-beta.6 - apiVersion: v2 appVersion: 0.8.3-beta.5 - created: "2024-07-30T07:52:02.507440846Z" + created: "2024-08-01T15:29:13.091977393Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -950,7 +1002,7 @@ entries: version: 0.8.3-beta.5 - apiVersion: v2 appVersion: 0.8.3-beta.4 - created: "2024-07-30T07:52:02.506856866Z" + created: "2024-08-01T15:29:13.091402865Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -966,7 +1018,7 @@ entries: version: 0.8.3-beta.4 - apiVersion: v2 appVersion: 0.8.3-beta.2 - created: "2024-07-30T07:52:02.506193899Z" + created: "2024-08-01T15:29:13.0907448Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -982,7 +1034,7 @@ entries: version: 0.8.3-beta.2 - apiVersion: v2 appVersion: 0.8.3-beta.1 - created: "2024-07-30T07:52:02.505603407Z" + created: "2024-08-01T15:29:13.090180911Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -998,7 +1050,7 @@ entries: version: 0.8.3-beta.1 - apiVersion: v2 appVersion: 0.8.2 - created: "2024-07-30T07:52:02.505051788Z" + created: "2024-08-01T15:29:13.089608637Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1014,7 +1066,7 @@ entries: version: 0.8.2 - apiVersion: v2 appVersion: 0.8.2-beta.60 - created: "2024-07-30T07:52:02.504407877Z" + created: "2024-08-01T15:29:13.088268289Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1030,7 +1082,7 @@ entries: version: 0.8.2-beta.60 - apiVersion: v2 appVersion: 0.8.2-beta.59 - created: "2024-07-30T07:52:02.503739971Z" + created: "2024-08-01T15:29:13.087619702Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1046,7 +1098,7 @@ entries: version: 0.8.2-beta.59 - apiVersion: v2 appVersion: 0.8.2-beta.58 - created: "2024-07-30T07:52:02.485726571Z" + created: "2024-08-01T15:29:13.086980221Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1062,7 +1114,7 @@ entries: version: 0.8.2-beta.58 - apiVersion: v2 appVersion: 0.8.2-beta.57 - created: "2024-07-30T07:52:02.484751702Z" + created: "2024-08-01T15:29:13.086343696Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1078,7 +1130,7 @@ entries: version: 0.8.2-beta.57 - apiVersion: v2 appVersion: 0.8.2-beta.56 - created: "2024-07-30T07:52:02.484113191Z" + created: "2024-08-01T15:29:13.085703886Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1094,7 +1146,7 @@ entries: version: 0.8.2-beta.56 - apiVersion: v2 appVersion: 0.8.2-beta.52 - created: "2024-07-30T07:52:02.483451787Z" + created: "2024-08-01T15:29:13.085064586Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1110,7 +1162,7 @@ entries: version: 0.8.2-beta.52 - apiVersion: v2 appVersion: 0.8.2-beta.51 - created: "2024-07-30T07:52:02.482814638Z" + created: "2024-08-01T15:29:13.084390971Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1126,7 +1178,7 @@ entries: version: 0.8.2-beta.51 - apiVersion: v2 appVersion: 0.8.2-beta.50 - created: "2024-07-30T07:52:02.482155248Z" + created: "2024-08-01T15:29:13.083679075Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1142,7 +1194,7 @@ entries: version: 0.8.2-beta.50 - apiVersion: v2 appVersion: 0.8.2-beta.49 - created: "2024-07-30T07:52:02.481447427Z" + created: "2024-08-01T15:29:13.082747869Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1158,7 +1210,7 @@ entries: version: 0.8.2-beta.49 - apiVersion: v2 appVersion: 0.8.2-beta.48 - created: "2024-07-30T07:52:02.480769352Z" + created: "2024-08-01T15:29:13.081513142Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1174,7 +1226,7 @@ entries: version: 0.8.2-beta.48 - apiVersion: v2 appVersion: 0.8.2-beta.47 - created: "2024-07-30T07:52:02.480081679Z" + created: "2024-08-01T15:29:13.08079811Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1190,7 +1242,7 @@ entries: version: 0.8.2-beta.47 - apiVersion: v2 appVersion: 0.8.2-beta.46 - created: "2024-07-30T07:52:02.478762129Z" + created: "2024-08-01T15:29:13.080237968Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1206,7 +1258,7 @@ entries: version: 0.8.2-beta.46 - apiVersion: v2 appVersion: 0.8.2-beta.45 - created: "2024-07-30T07:52:02.478196233Z" + created: "2024-08-01T15:29:13.079674891Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1222,7 +1274,7 @@ entries: version: 0.8.2-beta.45 - apiVersion: v2 appVersion: 0.8.2-beta.44 - created: "2024-07-30T07:52:02.477596554Z" + created: "2024-08-01T15:29:13.079112686Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1238,7 +1290,7 @@ entries: version: 0.8.2-beta.44 - apiVersion: v2 appVersion: 0.8.2-beta.43 - created: "2024-07-30T07:52:02.477030318Z" + created: "2024-08-01T15:29:13.078530663Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1254,7 +1306,7 @@ entries: version: 0.8.2-beta.43 - apiVersion: v2 appVersion: 0.8.2-beta.41 - created: "2024-07-30T07:52:02.476373301Z" + created: "2024-08-01T15:29:13.07784706Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1270,7 +1322,7 @@ entries: version: 0.8.2-beta.41 - apiVersion: v2 appVersion: 0.8.2-beta.40 - created: "2024-07-30T07:52:02.47569704Z" + created: "2024-08-01T15:29:13.077152346Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1286,7 +1338,7 @@ entries: version: 0.8.2-beta.40 - apiVersion: v2 appVersion: 0.8.2-beta.39 - created: "2024-07-30T07:52:02.475111828Z" + created: "2024-08-01T15:29:13.076487518Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1302,7 +1354,7 @@ entries: version: 0.8.2-beta.39 - apiVersion: v2 appVersion: 0.8.2-beta.38 - created: "2024-07-30T07:52:02.474545501Z" + created: "2024-08-01T15:29:13.075159671Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1318,7 +1370,7 @@ entries: version: 0.8.2-beta.38 - apiVersion: v2 appVersion: 0.8.2-beta.37 - created: "2024-07-30T07:52:02.473933359Z" + created: "2024-08-01T15:29:13.074606673Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1334,7 +1386,7 @@ entries: version: 0.8.2-beta.37 - apiVersion: v2 appVersion: 0.8.1 - created: "2024-07-30T07:52:02.472951647Z" + created: "2024-08-01T15:29:13.074023819Z" dependencies: - name: component-chart repository: https://charts.devspace.sh @@ -1348,4 +1400,4 @@ entries: urls: - https://openmined.github.io/PySyft/helm/syft-0.8.1.tgz version: 0.8.1 -generated: "2024-07-30T07:52:02.47182193Z" +generated: "2024-08-01T15:29:13.07328383Z" diff --git a/packages/grid/helm/repo/syft-0.9.0-beta.4.tgz b/packages/grid/helm/repo/syft-0.9.0-beta.4.tgz new file mode 100644 index 00000000000..dfd98425d2c Binary files /dev/null and b/packages/grid/helm/repo/syft-0.9.0-beta.4.tgz differ diff --git a/packages/grid/helm/repo/syft-0.9.0-beta.5.tgz b/packages/grid/helm/repo/syft-0.9.0-beta.5.tgz new file mode 100644 index 00000000000..544956ed3c5 Binary files /dev/null and b/packages/grid/helm/repo/syft-0.9.0-beta.5.tgz differ diff --git a/packages/grid/helm/repo/syft-0.9.0.tgz b/packages/grid/helm/repo/syft-0.9.0.tgz new file mode 100644 index 00000000000..28872e9f232 Binary files /dev/null and b/packages/grid/helm/repo/syft-0.9.0.tgz differ diff --git a/packages/grid/helm/repo/syft-0.9.1-beta.1.tgz b/packages/grid/helm/repo/syft-0.9.1-beta.1.tgz new file mode 100644 index 00000000000..40c00ff7e08 Binary files /dev/null and b/packages/grid/helm/repo/syft-0.9.1-beta.1.tgz differ diff --git a/packages/grid/helm/syft/Chart.yaml b/packages/grid/helm/syft/Chart.yaml index 9aff9ccaa3c..d5c2f9f728c 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.9.0-beta.3" -appVersion: "0.9.0-beta.3" +version: "0.9.1-beta.1" +appVersion: "0.9.1-beta.1" 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 70603f8d85b..cf6192548f9 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.9.0-beta.3 + version: 0.9.1-beta.1 # Force default secret values for development. DO NOT SET THIS TO FALSE IN PRODUCTION randomizedSecrets: true diff --git a/packages/syft/PYPI.md b/packages/syft/PYPI.md index 5c86db949ef..1cc97e342e2 100644 --- a/packages/syft/PYPI.md +++ b/packages/syft/PYPI.md @@ -1,13 +1,27 @@ -
+


-Syft Logo +Syft Logo -Perform data science on `data` that remains in `someone else's` server +

Data Science on data you are not allowed to see

+ +PySyft enables a new way to do data science, where you can use non-public information, without seeing nor obtaining a copy of the data itself. All you need is to connect to a Datasite! + +Datasites are like websites, but for data. Designed with the principles of structured transparency, they enable data owners to control how their data is protected and data scientists to use data without obtaining a copy. + +PySyft supports any statistical analysis or machine learning, offering support for directly running Python code - even using third-party Python libraries. + +

Supported on:

+ +✅ Linux +✅ macOS +✅ Windows +✅ Docker +✅ Kubernetes # Quickstart -✅ `Linux` ✅ `macOS` ✅ `Windows` ✅ `Docker` ✅ `Kubernetes` +Try out your first query against a live demo Datasite! ## Install Client @@ -15,34 +29,46 @@ Perform data science on `data` that remains in `someone else's` server $ pip install -U syft[data_science] ``` +More instructions are available here. + ## Launch Server +Launch a development server directly in your Jupyter Notebook: + ```python -# from Jupyter / Python import syft as sy -sy.requires(">=0.8.8,<0.8.9") + +sy.requires(">=0.9,<0.9.1") + server = sy.orchestra.launch( name="my-datasite", port=8080, create_producer=True, n_consumers=1, - dev_mode=True, + dev_mode=False, reset=True, # resets database ) ``` +or from the command line: + ```bash -# or from the command line $ syft launch --name=my-datasite --port=8080 --reset=True Starting syft-datasite server on 0.0.0.0:8080 ``` +Datasite servers can be deployed as a single container using Docker or directly in Kubernetes. Check out our deployment guide. + ## Launch Client +Main way to use a Datasite is via our Syft client, in a Jupyter Notebook. Check out our PySyft client guide: + ```python import syft as sy -sy.requires(">=0.8.8,<0.8.9") + +sy.requires(">=0.9,<0.9.1") + datasite_client = sy.login( port=8080, email="info@openmined.org", @@ -50,311 +76,100 @@ datasite_client = sy.login( ) ``` -## PySyft in 10 minutes - -📝 API Example Notebooks - -- 00-load-data.ipynb -- 01-submit-code.ipynb -- 02-review-code-and-approve.ipynb -- 03-data-scientist-download-result.ipynb -- 04-pytorch-example.ipynb -- 05-custom-policy.ipynb -- 06-multiple-code-requests.ipynb -- 07-datasite-register-control-flow.ipynb -- 08-code-version.ipynb -- 09-blob-storage.ipynb -- 10-container-images.ipynb -- 11-container-images-k8s.ipynb -- 12-custom-api-endpoint.ipynb - -## Deploy Kubernetes Helm Chart - -#### 0. Deploy Kubernetes - -Required resources: 1 CPU and 4GB RAM. However, you will need some special instructions to deploy, please consult [these instructions](https://github.com/OpenMined/PySyft/blob/dev/notebooks/tutorials/deployments/03-deploy-k8s-k3d.ipynb) or look at the resource constraint testing [here](https://github.com/OpenMined/PySyft/pull/8828#issue-2300774645). -Recommended resources: 8+ Cores and 16GB RAM - -If you're using Docker Desktop to deploy your Kubernetes, you may need to go into Settings > Resources and increase CPUs and Memory. - -**Note**: Assuming we have a Kubernetes cluster already setup. - -#### 1. Add and update Helm repo for Syft - -```sh -helm repo add openmined https://openmined.github.io/PySyft/helm -helm repo update openmined -``` - -#### 2. Search for available Syft versions - -```sh -helm search repo openmined/syft --versions --devel -``` - -#### 3. Set your preferred Syft Chart version - -```sh -SYFT_VERSION="" -``` - -#### 4. Provisioning Helm Charts - -```sh -helm install my-datasite openmined/syft --version $SYFT_VERSION --namespace syft --create-namespace --set ingress.className="traefik" -``` - -### Ingress Controllers - -For Azure AKS - -```sh -helm install ... --set ingress.className="azure-application-gateway" -``` - -For AWS EKS - -```sh -helm install ... --set ingress.className="alb" -``` - -For Google GKE we need the [`gce` annotation](https://cloud.google.com/kubernetes-engine/docs/how-to/load-balance-ingress#create-ingress). - -```sh -helm install ... --set ingress.class="gce" -``` - -## Note: - -🚨 Our old deployment tool `HAGrid` has been `deprecated`. For the updated deployment options kindly refer to: - -- 📚 Deployments +## PySyft - Getting started 📝 -## Docs and Support +Learn about PySyft via our getting started guide: -- 📚 Docs -- `#support` on Slack +- PySyft from the ground up +- Part 1: Datasets & Assets +- Part 2: Client and Datasite Access +- Part 3: Propose the research study +- Part 4: Review Code Requests +- Part 5: Retrieving Results -# Install Notes +# PySyft In-depth -- PySyft 0.8.6 Requires: 🐍 `python 3.10 - 3.12` - Run: `pip install -U syft` -- Syft Server Requires: 🐳 `docker` or ☸️ `kubernetes` +📚 Check out our docs website. -# Versions +Quick PySyft components links: -`0.9.0` (Beta) - `dev` branch 👈🏽 API - Coming soon... -`0.8.8` (Stable) - API +- DataSite Server -Deprecated: +- Syft Client -- `0.8.7` - API -- `0.8.6` - API -- `0.8.5-post.2` - API -- `0.8.4` - API -- `0.8.3` - API -- `0.8.2` - API -- `0.8.1` - API -- `0.8.0` - API -- `0.7.0` - Course 3 Updated -- `0.6.0` - Course 3 -- `0.5.1` - Course 2 + M1 Hotfix -- `0.2.0` - `0.5.0` +- Datasets API (`.datasets`) -PySyft and Syft Server use the same `version` and its best to match them up where possible. We release weekly betas which can be used in each context: +- Users API (`.users`) -PySyft (Stable): `pip install -U syft` +- Projects API (`.projects`) -PySyft (Beta): `pip install -U syft --pre` +- Request API (`.requests`) -# What is Syft? +- Code API (`.code`) -Syft +- Syft Policies API (`.policy`) -`Syft` is OpenMined's `open source` stack that provides `secure` and `private` Data Science in Python. Syft decouples `private data` from model training, using techniques like [Federated Learning](https://ai.googleblog.com/2017/04/federated-learning-collaborative.html), [Differential Privacy](https://en.wikipedia.org/wiki/Differential_privacy), and [Encrypted Computation](https://en.wikipedia.org/wiki/Homomorphic_encryption). This is done with a `numpy`-like interface and integration with `Deep Learning` frameworks, so that you as a `Data Scientist` can maintain your current workflow while using these new `privacy-enhancing techniques`. +- Settings API (`.settings`) -### Why should I use Syft? +- Notifications API (`.notifications`) -`Syft` allows a `Data Scientist` to ask `questions` about a `dataset` and, within `privacy limits` set by the `data owner`, get `answers` to those `questions`, all without obtaining a `copy` of the data itself. We call this process `Remote Data Science`. It means in a wide variety of `datasites` across society, the current `risks` of sharing information (`copying` data) with someone such as, privacy invasion, IP theft and blackmail will no longer prevent the vast `benefits` such as innovation, insights and scientific discovery which secure access will provide. +- Sync API (`.sync`) -No more cold calls to get `access` to a dataset. No more weeks of `wait times` to get a `result` on your `query`. It also means `1000x more data` in every datasite. PySyft opens the doors to a streamlined Data Scientist `workflow`, all with the individual's `privacy` at its heart. +## Why use PySyft? - +This means that the **current risks** of sharing information with someone will **no longer prevent** the vast benefits such as innovation, insights and scientific discovery. With each Datasite, data owners are able to enable `1000x more accesible data` in each scientific field and lead, together with data scientists, breakthrough innovation. -# Terminology +Learn more about our work on our website. - - - - - - - - - - - - - - - - +- `0.9.1` (Beta) - `dev` branch 👈🏽 +- Install PySyft (Beta): `pip install -U syft --pre` - - -
- -

👨🏻‍💼 Data Owners

-
- -

👩🏽‍🔬 Data Scientists

-
- +## Support -Provide `datasets` which they would like to make available for `study` by an `outside party` they may or may not `fully trust` has good intentions. +For questions about PySyft, reach out via `#support` on Slack. - - +## Syft Versions -Are end `users` who desire to perform `computations` or `answer` a specific `question` using one or more data owners' `datasets`. +:exclamation: PySyft and Syft Server must use the same `version`. -
- -

🏰 Datasite Server

-
- -

🔗 Gateway Server

-
- +**Latest Stable** -Manages the `remote study` of the data by a `Data Scientist` and allows the `Data Owner` to manage the `data` and control the `privacy guarantees` of the subjects under study. It also acts as a `gatekeeper` for the `Data Scientist's` access to the data to compute and experiment with the results. +- `0.9.0` (Stable) - Docs +- Install PySyft (Stable): `pip install -U syft` - - +**Latest Beta** -Provides services to a group of `Data Owners` and `Data Scientists`, such as dataset `search` and bulk `project approval` (legal / technical) to participate in a project. A gateway server acts as a bridge between it's members (`Datasites`) and their subscribers (`Data Scientists`) and can provide access to a collection of `datasites` at once.
+Find more about previous releases here. # Community - - - - - - -
- -
- - - - - -
-
- - - - -
- - +Supported by the OpenMined Foundation, the OpenMined Community is an online network of over 17,000 technologists, researchers, and industry professionals keen to _unlock 1000x more data in every scientific field and industry_. - - -
-
+ # Courses @@ -362,62 +177,65 @@ Provides services to a group of `Data Owners` and `Data Scientists`, such as dat # Contributors -OpenMined and Syft appreciates all contributors, if you would like to fix a bug or suggest a new feature, please see our [guidelines](https://openmined.github.io/PySyft/developer_guide/index.html).
+OpenMined and Syft appreciates all contributors, if you would like to fix a bug or suggest a new feature, please reach out via Github or Slack! + +Contributors + +# About OpenMined -Contributors +OpenMined is a non-profit foundation creating technology infrastructure that helps researchers get answers from data without needing a copy or direct access. Our community of technologists is building Syft. + + # Supporters
- +
- +
- +
- +
- +
- +
- + - + - + - + - + - + - + - + - + - + - +
-# Disclaimer - -Syft is under active development and is not yet ready for pilots on private data without our assistance. As early access participants, please contact us via [Slack](https://slack.openmined.org/) or email if you would like to ask a question or have a use case that you would like to discuss. - # License [Apache License 2.0](LICENSE)
diff --git a/packages/syft/setup.cfg b/packages/syft/setup.cfg index bfc7ded91a4..68996be7474 100644 --- a/packages/syft/setup.cfg +++ b/packages/syft/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = syft -version = attr: "0.9.0-beta.3" +version = attr: "0.9.1-beta.1" description = Perform numpy-like analysis on data that remains in someone elses server author = OpenMined author_email = info@openmined.org @@ -108,7 +108,7 @@ telemetry = opentelemetry-exporter-jaeger==1.14.0 opentelemetry-instrumentation==0.35b0 opentelemetry-instrumentation-requests==0.35b0 - ; opentelemetry-instrumentation-digma==0.9.0 + ; opentelemetry-instrumentation-digma==0.9.1-beta.1 # pytest>=8.0 broke pytest-lazy-fixture which doesn't seem to be actively maintained # temporarily pin to pytest<8 diff --git a/packages/syft/src/syft/VERSION b/packages/syft/src/syft/VERSION index f74ed6cb9df..732f8747c59 100644 --- a/packages/syft/src/syft/VERSION +++ b/packages/syft/src/syft/VERSION @@ -1,5 +1,5 @@ # Mono Repo Global Version -__version__ = "0.9.0-beta.3" +__version__ = "0.9.1-beta.1" # 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 1b48b2852fb..0a0b6098d2f 100644 --- a/packages/syft/src/syft/__init__.py +++ b/packages/syft/src/syft/__init__.py @@ -1,4 +1,4 @@ -__version__ = "0.9.0-beta.3" +__version__ = "0.9.1-beta.1" # stdlib from collections.abc import Callable diff --git a/packages/syft/src/syft/protocol/protocol_version.json b/packages/syft/src/syft/protocol/protocol_version.json index 9cf7d42efd0..49f2dcd4d8e 100644 --- a/packages/syft/src/syft/protocol/protocol_version.json +++ b/packages/syft/src/syft/protocol/protocol_version.json @@ -5,50 +5,7 @@ "2": { "release_name": "0.8.8.json" }, - "dev": { - "object_versions": { - "User": { - "2": { - "version": 2, - "hash": "af6fb5b2e1606e97838f4a60f0536ad95db606d455e94acbd1977df866608a2c", - "action": "add" - } - }, - "UserNotificationActivity": { - "1": { - "version": 1, - "hash": "422fd01c6d9af38688a9982abd34e80794a1f6ddd444cca225d77f49189847a9", - "action": "add" - } - }, - "NotifierSettings": { - "2": { - "version": 2, - "hash": "be8b52597fc628d1b7cd22b776ee81416e1adbb04a45188778eb0e32ed1416b4", - "action": "add" - } - }, - "PwdTokenResetConfig": { - "1": { - "version": 1, - "hash": "0415a272428f22add4896c64aa9f29c8c1d35619e2433da6564eb5f1faff39ac", - "action": "add" - } - }, - "ServerSettingsUpdate": { - "3": { - "version": 3, - "hash": "335c7946f2e52d09c7b26f511120cd340717c74c5cca9107e84f839da993c55c", - "action": "add" - } - }, - "ServerSettings": { - "3": { - "version": 3, - "hash": "997667e1cba22d151857aacc2caba6b1ca73c1648adbd03461dc74a0c0c372b3", - "action": "add" - } - } - } + "3": { + "release_name": "0.9.0.json" } } diff --git a/packages/syft/src/syft/protocol/releases/0.9.0.json b/packages/syft/src/syft/protocol/releases/0.9.0.json new file mode 100644 index 00000000000..3e0585e74fb --- /dev/null +++ b/packages/syft/src/syft/protocol/releases/0.9.0.json @@ -0,0 +1,48 @@ +{ + "3": { + "object_versions": { + "User": { + "2": { + "version": 2, + "hash": "af6fb5b2e1606e97838f4a60f0536ad95db606d455e94acbd1977df866608a2c", + "action": "add" + } + }, + "UserNotificationActivity": { + "1": { + "version": 1, + "hash": "422fd01c6d9af38688a9982abd34e80794a1f6ddd444cca225d77f49189847a9", + "action": "add" + } + }, + "NotifierSettings": { + "2": { + "version": 2, + "hash": "be8b52597fc628d1b7cd22b776ee81416e1adbb04a45188778eb0e32ed1416b4", + "action": "add" + } + }, + "PwdTokenResetConfig": { + "1": { + "version": 1, + "hash": "0415a272428f22add4896c64aa9f29c8c1d35619e2433da6564eb5f1faff39ac", + "action": "add" + } + }, + "ServerSettingsUpdate": { + "3": { + "version": 3, + "hash": "335c7946f2e52d09c7b26f511120cd340717c74c5cca9107e84f839da993c55c", + "action": "add" + } + }, + "ServerSettings": { + "3": { + "version": 3, + "hash": "997667e1cba22d151857aacc2caba6b1ca73c1648adbd03461dc74a0c0c372b3", + "action": "add" + } + } + } + } +} diff --git a/packages/syft/src/syft/service/code/user_code.py b/packages/syft/src/syft/service/code/user_code.py index c0bf28d626f..e90404c9de1 100644 --- a/packages/syft/src/syft/service/code/user_code.py +++ b/packages/syft/src/syft/service/code/user_code.py @@ -71,7 +71,6 @@ from ..action.action_object import Action from ..action.action_object import ActionObject from ..dataset.dataset import Asset -from ..dataset.dataset import Dataset from ..job.job_stash import Job from ..output.output_service import ExecutionOutput from ..output.output_service import OutputService @@ -733,17 +732,6 @@ def assets(self) -> DictTuple[str, Asset] | SyftError: if isinstance(api, SyftError): return api - # get all assets on the server - datasets: list[Dataset] = api.services.dataset.get_all() - if isinstance(datasets, SyftError): - return datasets - - all_assets: dict[UID, Asset] = {} - for dataset in datasets: - for asset in dataset.asset_list: - asset._dataset_name = dataset.name - all_assets[asset.action_id] = asset - # get a flat dict of all inputs all_inputs = {} inputs = self.input_policy_init_kwargs or {} @@ -753,8 +741,11 @@ def assets(self) -> DictTuple[str, Asset] | SyftError: # map the action_id to the asset used_assets: list[Asset] = [] for kwarg_name, action_id in all_inputs.items(): - asset = all_assets.get(action_id) - if asset: + assets = api.dataset.get_assets_by_action_id(uid=action_id) + if isinstance(assets, SyftError): + return assets + if assets: + asset = assets[0] asset._kwarg_name = kwarg_name used_assets.append(asset) diff --git a/packages/syft/src/syft/service/notifier/notifier.py b/packages/syft/src/syft/service/notifier/notifier.py index d77aae257f7..3675914f9f5 100644 --- a/packages/syft/src/syft/service/notifier/notifier.py +++ b/packages/syft/src/syft/service/notifier/notifier.py @@ -12,6 +12,7 @@ from typing import TypeVar # third party +from pydantic import BaseModel from result import Err from result import Ok from result import Result @@ -33,7 +34,7 @@ from .smtp_client import SMTPClient -class BaseNotifier: +class BaseNotifier(BaseModel): def send( self, target: SyftVerifyKey, notification: Notification, ) -> SyftSuccess | SyftError: @@ -54,7 +55,7 @@ class UserNotificationActivity(SyftObject): @serializable(canonical_name="EmailNotifier", version=1) class EmailNotifier(BaseNotifier): smtp_client: SMTPClient - sender = "" + sender: str = "" def __init__( self, diff --git a/packages/syft/src/syft/service/notifier/smtp_client.py b/packages/syft/src/syft/service/notifier/smtp_client.py index f92930f720e..d8e79d89e9f 100644 --- a/packages/syft/src/syft/service/notifier/smtp_client.py +++ b/packages/syft/src/syft/service/notifier/smtp_client.py @@ -4,13 +4,14 @@ import smtplib # third party +from pydantic import BaseModel from result import Err from result import Ok from result import Result -class SMTPClient: - SOCKET_TIMEOUT = 5 # seconds +class SMTPClient(BaseModel): + SOCKET_TIMEOUT: int = 5 # seconds def __init__( self, diff --git a/packages/syft/src/syft/service/user/user_service.py b/packages/syft/src/syft/service/user/user_service.py index 739e648fce2..fb09d7e9efc 100644 --- a/packages/syft/src/syft/service/user/user_service.py +++ b/packages/syft/src/syft/service/user/user_service.py @@ -491,6 +491,20 @@ def update( # Get user to be updated by its UID result = self.stash.get_by_uid(credentials=context.credentials, uid=uid) + immutable_fields = {"created_date", "updated_date", "deleted_date"} + updated_fields = user_update.to_dict( + exclude_none=True, exclude_empty=True + ).keys() + + for field_name in immutable_fields: + if field_name in updated_fields: + return SyftError( + message=f"You are not allowed to modify '{field_name}'." + ) + + if user_update.name is not Empty and user_update.name.strip() == "": # type: ignore[comparison-overlap] + return SyftError(message="Name can't be an empty string.") + # check if the email already exists (with root's key) if user_update.email is not Empty: user_with_email_exists: bool = self.stash.email_exists( diff --git a/packages/syft/src/syft/stable_version.py b/packages/syft/src/syft/stable_version.py index c0f11e1478b..85f41d02b4a 100644 --- a/packages/syft/src/syft/stable_version.py +++ b/packages/syft/src/syft/stable_version.py @@ -1 +1 @@ -LATEST_STABLE_SYFT = "0.8.8" +LATEST_STABLE_SYFT = "0.9.0" diff --git a/packages/syftcli/manifest.yml b/packages/syftcli/manifest.yml index b170a80519d..25fff968774 100644 --- a/packages/syftcli/manifest.yml +++ b/packages/syftcli/manifest.yml @@ -1,11 +1,11 @@ manifestVersion: 1.0 -syftVersion: 0.9.0-beta.3 -dockerTag: 0.9.0-beta.3 +syftVersion: 0.9.1-beta.1 +dockerTag: 0.9.1-beta.1 images: - - docker.io/openmined/syft-frontend:0.9.0-beta.3 - - docker.io/openmined/syft-backend:0.9.0-beta.3 + - docker.io/openmined/syft-frontend:0.9.1-beta.1 + - docker.io/openmined/syft-backend:0.9.1-beta.1 - docker.io/library/mongo:7.0.4 - docker.io/traefik:v2.11.0 diff --git a/releases.md b/releases.md new file mode 100644 index 00000000000..a21919cf21f --- /dev/null +++ b/releases.md @@ -0,0 +1,29 @@ +# Releases + +:exclamation: PySyft and Syft Server must use the same `version`. + +### Latest Stable + +- `0.9.0` (Stable) - Docs +- Install PySyft (Stable): `pip install -U syft` + +### Latest Beta + +- `0.9.1` (Beta) - `dev` branch 👈🏽 +- Install PySyft (Beta): `pip install -U syft --pre` + +**Deprecated**: + +- `0.8.8` - API +- `0.8.7` - API +- `0.8.6` - API +- `0.8.5-post.2` - API +- `0.8.4` - API +- `0.8.3` - API +- `0.8.2` - API +- `0.8.1` - API +- `0.8.0` - API +- `0.7.0` - Course 3 Updated +- `0.6.0` - Course 3 +- `0.5.1` - Course 2 + M1 Hotfix +- `0.2.0` - `0.5.0`