From 079395ab09e9ed6e8546a24b88815d6aa22c9ac7 Mon Sep 17 00:00:00 2001 From: Danny Chiao Date: Fri, 13 May 2022 19:49:03 -0400 Subject: [PATCH 1/9] fix: Fix broken roadmap links (#2690) Signed-off-by: Danny Chiao --- README.md | 4 ++-- .../architecture-and-components/online-store.md | 2 +- docs/getting-started/architecture-and-components/overview.md | 2 +- docs/getting-started/quickstart.md | 2 +- docs/roadmap.md | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 5905bbd647f..01776b048ad 100644 --- a/README.md +++ b/README.md @@ -176,7 +176,7 @@ The list below contains the functionality that contributors are planning to deve * [ ] Cassandra * **Streaming** * [x] [Custom streaming ingestion job support](https://docs.feast.dev/how-to-guides/creating-a-custom-provider) - * [x] [Push based streaming data ingestion](https://docs.feast.dev/reference/data-sources/push.md) + * [x] [Push based streaming data ingestion](https://docs.feast.dev/reference/data-sources/push) * [ ] Streaming ingestion on AWS * [ ] Streaming ingestion on GCP * **Feature Engineering** @@ -207,7 +207,7 @@ The list below contains the functionality that contributors are planning to deve * [x] CLI for browsing feature registry * [x] Model-centric feature tracking (feature services) * [x] Amundsen integration (see [Feast extractor](https://github.com/amundsen-io/amundsen/blob/main/databuilder/databuilder/extractor/feast_extractor.py)) - * [x] Feast Web UI (Alpha release. See [documentation](https://docs.feast.dev/reference/alpha-web-ui.md)) + * [x] Feast Web UI (Alpha release. See [documentation](https://docs.feast.dev/reference/alpha-web-ui)) * [ ] REST API for browsing feature registry * [ ] Feature versioning diff --git a/docs/getting-started/architecture-and-components/online-store.md b/docs/getting-started/architecture-and-components/online-store.md index 4f2e44c92ce..21b4dbcb9c7 100644 --- a/docs/getting-started/architecture-and-components/online-store.md +++ b/docs/getting-started/architecture-and-components/online-store.md @@ -12,4 +12,4 @@ Once the above data source is materialized into Feast \(using `feast materialize ![](../../.gitbook/assets/image%20%285%29.png) -Features can also be written to the online store via [push sources](https://docs.feast.dev/reference/data-sources/push) \ No newline at end of file +Features can also be written to the online store via [push sources](../../reference/data-sources/push.md) \ No newline at end of file diff --git a/docs/getting-started/architecture-and-components/overview.md b/docs/getting-started/architecture-and-components/overview.md index bf5c12dcc20..0c47fb2753d 100644 --- a/docs/getting-started/architecture-and-components/overview.md +++ b/docs/getting-started/architecture-and-components/overview.md @@ -23,7 +23,7 @@ A complete Feast deployment contains the following components: * Materialize (load) feature values into the online store. * Build and retrieve training datasets from the offline store. * Retrieve online features. -* **Online Store:** The online store is a database that stores only the latest feature values for each entity. The online store is populated by materialization jobs and from [stream ingestion](../../reference/alpha-stream-ingestion.md). +* **Online Store:** The online store is a database that stores only the latest feature values for each entity. The online store is populated by materialization jobs and from [stream ingestion](../../reference/data-sources/push.md). * **Offline Store:** The offline store persists batch data that has been ingested into Feast. This data is used for producing training datasets. Feast does not manage the offline store directly, but runs queries against it. {% hint style="info" %} diff --git a/docs/getting-started/quickstart.md b/docs/getting-started/quickstart.md index 41449b77e39..1684c720632 100644 --- a/docs/getting-started/quickstart.md +++ b/docs/getting-started/quickstart.md @@ -367,7 +367,7 @@ pprint(feature_vector) ## Step 7: Using a feature service to fetch online features instead. -You can also use feature services to manage multiple features, and decouple feature view definitions and the features needed by end applications. The feature store can also be used to fetch either online or historical features using the same api below. More information can be found [here](https://docs.feast.dev/getting-started/concepts/feature-service). +You can also use feature services to manage multiple features, and decouple feature view definitions and the features needed by end applications. The feature store can also be used to fetch either online or historical features using the same api below. More information can be found [here](https://docs.feast.dev/getting-started/concepts/feature-retrieval). {% tabs %} {% tab title="Python" %} diff --git a/docs/roadmap.md b/docs/roadmap.md index c2f5511f1ed..d893814aafd 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -41,7 +41,7 @@ The list below contains the functionality that contributors are planning to deve * [ ] Cassandra * **Streaming** * [x] [Custom streaming ingestion job support](https://docs.feast.dev/how-to-guides/creating-a-custom-provider) - * [x] [Push based streaming data ingestion](https://docs.feast.dev/reference/data-sources/push.md) + * [x] [Push based streaming data ingestion](https://docs.feast.dev/reference/data-sources/push) * [ ] Streaming ingestion on AWS * [ ] Streaming ingestion on GCP * **Feature Engineering** @@ -72,6 +72,6 @@ The list below contains the functionality that contributors are planning to deve * [x] CLI for browsing feature registry * [x] Model-centric feature tracking (feature services) * [x] Amundsen integration (see [Feast extractor](https://github.com/amundsen-io/amundsen/blob/main/databuilder/databuilder/extractor/feast_extractor.py)) - * [x] Feast Web UI (Alpha release. See [documentation](https://docs.feast.dev/reference/alpha-web-ui.md)) + * [x] Feast Web UI (Alpha release. See [documentation](https://docs.feast.dev/reference/alpha-web-ui)) * [ ] REST API for browsing feature registry * [ ] Feature versioning From 990b779969f0c065ddc0138276c9ffc424048aa8 Mon Sep 17 00:00:00 2001 From: Achal Shah Date: Mon, 16 May 2022 10:00:03 -0700 Subject: [PATCH 2/9] ci: Make version bumping script more robust (#2689) * ci: Make version bumping script more robust Signed-off-by: Achal Shah * bump dockerfiles too Signed-off-by: Achal Shah * fix build-docker-image Signed-off-by: Achal Shah * use buildx instead of build in makefile Signed-off-by: Achal Shah --- .github/workflows/pr_integration_tests.yml | 6 +- Makefile | 2 +- infra/scripts/release/bump_file_versions.py | 67 +++++++------------ infra/scripts/release/files_to_bump.txt | 25 ++++--- .../feature_servers/aws_lambda/Dockerfile | 5 +- .../feature_servers/gcp_cloudrun/Dockerfile | 4 +- .../infra/transformation_servers/Dockerfile | 6 +- 7 files changed, 52 insertions(+), 63 deletions(-) diff --git a/.github/workflows/pr_integration_tests.yml b/.github/workflows/pr_integration_tests.yml index 089d9f47336..c4417056136 100644 --- a/.github/workflows/pr_integration_tests.yml +++ b/.github/workflows/pr_integration_tests.yml @@ -20,7 +20,7 @@ jobs: (github.event.action != 'labeled' && (contains(github.event.pull_request.labels.*.name, 'ok-to-test') || contains(github.event.pull_request.labels.*.name, 'approved') || contains(github.event.pull_request.labels.*.name, 'lgtm'))) runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: # pull_request_target runs the workflow in the context of the base repo # as such actions/checkout needs to be explicit configured to retrieve @@ -30,7 +30,9 @@ jobs: - name: Set up QEMU uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 + uses: docker/setup-buildx-action@v2 + with: + install: true - name: Set up AWS SDK uses: aws-actions/configure-aws-credentials@v1 with: diff --git a/Makefile b/Makefile index e208ab3c451..96558f97dea 100644 --- a/Makefile +++ b/Makefile @@ -212,7 +212,7 @@ push-feature-server-python-aws-docker: docker push $(REGISTRY)/feature-server-python-aws:$$VERSION build-feature-server-python-aws-docker: - docker build --build-arg VERSION=$$VERSION \ + docker buildx --build-arg VERSION=$$VERSION \ -t $(REGISTRY)/feature-server-python-aws:$$VERSION \ -f sdk/python/feast/infra/feature_servers/aws_lambda/Dockerfile . diff --git a/infra/scripts/release/bump_file_versions.py b/infra/scripts/release/bump_file_versions.py index b706c2c141b..e17463c2c7b 100644 --- a/infra/scripts/release/bump_file_versions.py +++ b/infra/scripts/release/bump_file_versions.py @@ -33,46 +33,22 @@ def main() -> None: with open(path_to_file_list, "r") as f: files_to_bump = f.read().splitlines() - # The current version should be 0.18.0 or 0.19.0 or 0.20.0 etc, but we should also make sure to support the - # occasional patch release on the master branch like 0.18.1 or 0.18.2 - versions_in_files = 0 - if current_version[-2:] != ".0": - print(current_version[-2:]) - versions_in_files = count_version(current_version, files_to_bump, repo_root) - if versions_in_files != VERSIONS_TO_BUMP: - raise SystemExit(f"Found {versions_in_files} occurrences of {current_version} in files to bump, but " - f"expected {VERSIONS_TO_BUMP}") - else: - found = False - - # Lets make sure the files don't contain a patch version (e.g, 0.x.0 -> 0.x.20) - for patch_version in range(0, 20): - current_version_patch = current_version[:-1] + str(patch_version) - versions_in_files = count_version(current_version_patch, files_to_bump, repo_root) - - # We are using a patch version, let's change our version number - if versions_in_files == VERSIONS_TO_BUMP: - print(f"Found {versions_in_files} occurrences of {current_version_patch}, changing current version to " - f"{current_version_patch}") - current_version = current_version_patch - found = True - break - else: - print(f"Found {versions_in_files} occurrences of {current_version_patch}, instead of {VERSIONS_TO_BUMP}") - if not found: - raise SystemExit(f"Could not find {VERSIONS_TO_BUMP} versions of {current_version} in {path_to_file_list}") - - print(f"Found {versions_in_files} occurrences of {current_version} in files to bump {path_to_file_list}") + # The current version should be 0.18.0 or 0.19.0 or 0.20.0 etc + validate_files_to_bump(current_version, files_to_bump, repo_root) # Bump the version in the files updated_count = 0 for file in files_to_bump: - with open(repo_root.joinpath(file), "r") as f: - file_contents = f.read() - file_contents = file_contents.replace(current_version, new_version) - - with open(repo_root.joinpath(file), "w") as f: - f.write(file_contents) + components = file.split(" ") + file_path = components[0] + lines = components[1:] + with open(repo_root.joinpath(file_path), "r") as f: + file_contents = f.readlines() + for line in lines: + file_contents[int(line) - 1] = file_contents[int(line) - 1].replace(current_version, new_version) + + with open(repo_root.joinpath(file_path), "w") as f: + f.write(''.join(file_contents)) updated_count += 1 print(f"Updated {updated_count} files with new version {new_version}") @@ -88,14 +64,19 @@ def is_semantic_version(version: str) -> bool: return True -def count_version(current_version, files_to_bump, repo_root): - # Count how many of the existing versions we find - total = 0 +def validate_files_to_bump(current_version, files_to_bump, repo_root): for file in files_to_bump: - with open(repo_root.joinpath(file), "r") as f: - file_contents = f.read() - total += file_contents.count(current_version) - return total + components = file.split(" ") + assert len(components) > 1, f"Entry {file} should have a file name, and a list of line numbers with versions" + file_path = components[0] + lines = components[1:] + with open(repo_root.joinpath(file_path), "r") as f: + file_contents = f.readlines() + for line in lines: + assert current_version in file_contents[int(line) - 1], ( + f"File `{file_path}` line `{line}` didn't contain version {current_version}. " + f"Contents: {file_contents[int(line) - 1]}" + ) if __name__ == "__main__": diff --git a/infra/scripts/release/files_to_bump.txt b/infra/scripts/release/files_to_bump.txt index 2c3eece6bef..a1e2d29623a 100644 --- a/infra/scripts/release/files_to_bump.txt +++ b/infra/scripts/release/files_to_bump.txt @@ -1,13 +1,12 @@ -infra/charts/feast/requirements.yaml -infra/charts/feast/Chart.yaml -infra/charts/feast/charts/transformation-service/Chart.yaml -infra/charts/feast/charts/transformation-service/README.md -infra/charts/feast/charts/transformation-service/values.yaml -infra/charts/feast/charts/feature-server/Chart.yaml -infra/charts/feast/charts/feature-server/README.md -infra/charts/feast/charts/feature-server/values.yaml -infra/charts/feast/README.md -infra/charts/feast-python-server/Chart.yaml -infra/charts/feast-python-server/README.md -java/pom.xml -ui/package.json \ No newline at end of file +infra/charts/feast/requirements.yaml 4 9 +infra/charts/feast/Chart.yaml 4 +infra/charts/feast/charts/transformation-service/Chart.yaml 4 5 +infra/charts/feast/charts/transformation-service/README.md 3 16 +infra/charts/feast/charts/transformation-service/values.yaml 8 +infra/charts/feast/charts/feature-server/Chart.yaml 4 5 +infra/charts/feast/charts/feature-server/README.md 3 20 +infra/charts/feast/charts/feature-server/values.yaml 8 +infra/charts/feast/README.md 11 58 59 +infra/charts/feast-python-server/Chart.yaml 5 +infra/charts/feast-python-server/README.md 3 +java/pom.xml 41 diff --git a/sdk/python/feast/infra/feature_servers/aws_lambda/Dockerfile b/sdk/python/feast/infra/feature_servers/aws_lambda/Dockerfile index fe997afcae4..929227a8106 100644 --- a/sdk/python/feast/infra/feature_servers/aws_lambda/Dockerfile +++ b/sdk/python/feast/infra/feature_servers/aws_lambda/Dockerfile @@ -1,5 +1,8 @@ FROM public.ecr.aws/lambda/python:3.9 +RUN yum install -y git + + # Copy app handler code COPY sdk/python/feast/infra/feature_servers/aws_lambda/app.py ${LAMBDA_TASK_ROOT} @@ -16,7 +19,7 @@ COPY README.md README.md # git dir to infer the version of feast we're installing. # https://github.com/pypa/setuptools_scm#usage-from-docker # I think it also assumes that this dockerfile is being built from the root of the directory. -RUN SETUPTOOLS_SCM_PRETEND_VERSION=1 pip3 install --no-cache-dir -e '.[aws,redis]' +RUN --mount=source=.git,target=.git,type=bind pip3 install --no-cache-dir -e '.[aws,redis]' RUN pip3 install -r sdk/python/feast/infra/feature_servers/aws_lambda/requirements.txt --target "${LAMBDA_TASK_ROOT}" # Set the CMD to your handler (could also be done as a parameter override outside of the Dockerfile) diff --git a/sdk/python/feast/infra/feature_servers/gcp_cloudrun/Dockerfile b/sdk/python/feast/infra/feature_servers/gcp_cloudrun/Dockerfile index e0e16f6a14f..6e3ff424eab 100644 --- a/sdk/python/feast/infra/feature_servers/gcp_cloudrun/Dockerfile +++ b/sdk/python/feast/infra/feature_servers/gcp_cloudrun/Dockerfile @@ -1,5 +1,7 @@ FROM python:3.9-slim +RUN apt-get update && apt-get install -y git + # Allow statements and log messages to immediately appear in the Knative logs ENV PYTHONUNBUFFERED True @@ -18,7 +20,7 @@ COPY pyproject.toml pyproject.toml COPY README.md ./README.md # Install production dependencies. -RUN pip install --no-cache-dir \ +RUN --mount=source=.git,target=.git,type=bind pip install --no-cache-dir \ -e '.[gcp,redis]' \ -r ./sdk/python/feast/infra/feature_servers/gcp_cloudrun/requirements.txt diff --git a/sdk/python/feast/infra/transformation_servers/Dockerfile b/sdk/python/feast/infra/transformation_servers/Dockerfile index ff276c7a70d..5e77144757a 100644 --- a/sdk/python/feast/infra/transformation_servers/Dockerfile +++ b/sdk/python/feast/infra/transformation_servers/Dockerfile @@ -1,4 +1,6 @@ -FROM python:3.7-slim +FROM python:3.9-slim + +RUN apt-get update && apt-get install -y git # Copy app handler code COPY sdk/python/feast/infra/transformation_servers/app.py app.py @@ -13,7 +15,7 @@ COPY README.md README.md # Install dependencies -RUN pip3 install -e '.' +RUN --mount=source=.git,target=.git,type=bind pip3 install --no-cache-dir -e '.' # Start feature transformation server CMD [ "python", "app.py" ] From 232a77bf5adf1635810a00dd1a85ff2a3d14dfb7 Mon Sep 17 00:00:00 2001 From: Achal Shah Date: Mon, 16 May 2022 11:04:46 -0700 Subject: [PATCH 3/9] ci: Use buildx for docker builds when changes merged into master (#2703) * ci: Use buildx for docker builds when changes merged into master Signed-off-by: Achal Shah * use --load to load the built image into docker Signed-off-by: Achal Shah * buildx build smh Signed-off-by: Achal Shah --- .github/workflows/master_only.yml | 9 +++++++-- .github/workflows/pr_integration_tests.yml | 1 + Makefile | 8 ++++---- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/.github/workflows/master_only.yml b/.github/workflows/master_only.yml index 2042987617b..4b23635a182 100644 --- a/.github/workflows/master_only.yml +++ b/.github/workflows/master_only.yml @@ -13,7 +13,9 @@ jobs: - name: Set up QEMU uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 + uses: docker/setup-buildx-action@v2 + with: + install: true - name: Set up AWS SDK uses: aws-actions/configure-aws-credentials@v1 with: @@ -50,6 +52,7 @@ jobs: docker build \ --file sdk/python/feast/infra/feature_servers/aws_lambda/Dockerfile \ --tag $ECR_REGISTRY/$ECR_REPOSITORY:${{ steps.image-tag.outputs.DOCKER_IMAGE_TAG }} \ + --load \ . docker push $ECR_REGISTRY/$ECR_REPOSITORY:${{ steps.image-tag.outputs.DOCKER_IMAGE_TAG }} outputs: @@ -177,7 +180,9 @@ jobs: - name: Set up QEMU uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 + uses: docker/setup-buildx-action@v2 + with: + install: true - name: Login to DockerHub uses: docker/login-action@v1 with: diff --git a/.github/workflows/pr_integration_tests.yml b/.github/workflows/pr_integration_tests.yml index c4417056136..a720865ed42 100644 --- a/.github/workflows/pr_integration_tests.yml +++ b/.github/workflows/pr_integration_tests.yml @@ -69,6 +69,7 @@ jobs: docker build \ --file sdk/python/feast/infra/feature_servers/aws_lambda/Dockerfile \ --tag $ECR_REGISTRY/$ECR_REPOSITORY:${{ steps.image-tag.outputs.DOCKER_IMAGE_TAG }} \ + --load \ . docker push $ECR_REGISTRY/$ECR_REPOSITORY:${{ steps.image-tag.outputs.DOCKER_IMAGE_TAG }} outputs: diff --git a/Makefile b/Makefile index 96558f97dea..876eb909ecc 100644 --- a/Makefile +++ b/Makefile @@ -212,17 +212,17 @@ push-feature-server-python-aws-docker: docker push $(REGISTRY)/feature-server-python-aws:$$VERSION build-feature-server-python-aws-docker: - docker buildx --build-arg VERSION=$$VERSION \ + docker buildx build --build-arg VERSION=$$VERSION \ -t $(REGISTRY)/feature-server-python-aws:$$VERSION \ - -f sdk/python/feast/infra/feature_servers/aws_lambda/Dockerfile . + -f sdk/python/feast/infra/feature_servers/aws_lambda/Dockerfile --load . push-feature-transformation-server-docker: docker push $(REGISTRY)/feature-transformation-server:$(VERSION) build-feature-transformation-server-docker: - docker build --build-arg VERSION=$(VERSION) \ + docker buildx build --build-arg VERSION=$(VERSION) \ -t $(REGISTRY)/feature-transformation-server:$(VERSION) \ - -f sdk/python/feast/infra/transformation_servers/Dockerfile . + -f sdk/python/feast/infra/transformation_servers/Dockerfile --load . push-feature-server-java-docker: docker push $(REGISTRY)/feature-server-java:$(VERSION) From 00a9de92b818723acaf843f2d1e433d194949ad8 Mon Sep 17 00:00:00 2001 From: Danny Chiao Date: Mon, 16 May 2022 15:24:52 -0400 Subject: [PATCH 4/9] fix: Fix issue when user specifies a port for feast ui (#2692) * fix: Fix issue when user specifies a port for feast ui Signed-off-by: Danny Chiao * fx Signed-off-by: Danny Chiao * fix python 3.9 version of importlib Signed-off-by: Danny Chiao * revert to pkg_resources Signed-off-by: Danny Chiao --- sdk/python/feast/ui/README.md | 18 ++++--------- sdk/python/feast/ui/public/projects-list.json | 11 ++++++++ sdk/python/feast/ui/src/index.tsx | 18 +++---------- sdk/python/feast/ui_server.py | 27 +++++++++---------- 4 files changed, 33 insertions(+), 41 deletions(-) create mode 100644 sdk/python/feast/ui/public/projects-list.json diff --git a/sdk/python/feast/ui/README.md b/sdk/python/feast/ui/README.md index ea5243ca4c6..0c11dcf134c 100644 --- a/sdk/python/feast/ui/README.md +++ b/sdk/python/feast/ui/README.md @@ -1,6 +1,6 @@ # Example Feast UI App -This is an example React App that imports the Feast UI module and relies on a "/projects-list" endpoint to get projects. +This is an example React App that imports the Feast UI module. See the module import in `src/index.js`. The main change this implements on top of a vanilla create-react-app is adding: @@ -11,23 +11,15 @@ import "@feast-dev/feast-ui/dist/feast-ui.css"; ReactDOM.render( - { - return res.json(); - }) - }} - /> + , document.getElementById("root") ); ``` -It is used by the `feast ui` command to scaffold a local UI server. The feast python package bundles in resources produced from `npm run build --omit=dev +It is used by the `feast ui` command to scaffold a local UI server. The feast python package bundles in resources produced from `npm run build --omit=dev.` + +The `feast ui` command will generate the necessary `projects-list.json` file and initialize it for the UI to read. **Note**: yarn start will not work on this because of the above dependency. diff --git a/sdk/python/feast/ui/public/projects-list.json b/sdk/python/feast/ui/public/projects-list.json new file mode 100644 index 00000000000..b6e79bda5b8 --- /dev/null +++ b/sdk/python/feast/ui/public/projects-list.json @@ -0,0 +1,11 @@ +{ + "projects": [ + { + "name": "Project", + "description": "Test project", + "id": "project_id", + "registryPath": "http://0.0.0.0:8888/registry" + } + ] + } + \ No newline at end of file diff --git a/sdk/python/feast/ui/src/index.tsx b/sdk/python/feast/ui/src/index.tsx index 4191de17a06..9ddacc9b48a 100644 --- a/sdk/python/feast/ui/src/index.tsx +++ b/sdk/python/feast/ui/src/index.tsx @@ -1,22 +1,12 @@ -import React from 'react'; +import React from "react"; import ReactDOM from "react-dom"; -import './index.css'; +import "./index.css"; import FeastUI from "@feast-dev/feast-ui"; import "@feast-dev/feast-ui/dist/feast-ui.css"; ReactDOM.render( - { - return res.json(); - }) - }} - /> + , document.getElementById("root") -); \ No newline at end of file +); diff --git a/sdk/python/feast/ui_server.py b/sdk/python/feast/ui_server.py index cc546f53716..5206dd5161e 100644 --- a/sdk/python/feast/ui_server.py +++ b/sdk/python/feast/ui_server.py @@ -16,9 +16,9 @@ def get_app( get_registry_dump: Callable, project_id: str, registry_ttl_secs: int, + host: str, + port: int, ): - ui_dir = pkg_resources.resource_filename(__name__, "ui/build/") - app = FastAPI() app.add_middleware( @@ -53,25 +53,24 @@ def shutdown_event(): async_refresh() - @app.get("/registry") - def read_registry(): - return json.loads(registry_json) - - # Generate projects-list json that points to the current repo's project - # TODO(adchia): Enable users to also add project name + description fields in feature_store.yaml - @app.get("/projects-list") - def projects_list(): - projects = { + ui_dir = pkg_resources.resource_filename(__name__, "ui/build/") + # Initialize with the projects-list.json file + with open(ui_dir + "projects-list.json", mode="w") as f: + projects_dict = { "projects": [ { "name": "Project", "description": "Test project", "id": project_id, - "registryPath": "http://0.0.0.0:8888/registry", + "registryPath": f"http://{host}:{port}/registry", } ] } - return projects + f.write(json.dumps(projects_dict)) + + @app.get("/registry") + def read_registry(): + return json.loads(registry_json) # For all other paths (such as paths that would otherwise be handled by react router), pass to React @app.api_route("/p/{path_name:path}", methods=["GET"]) @@ -98,5 +97,5 @@ def start_server( project_id: str, registry_ttl_sec: int, ): - app = get_app(store, get_registry_dump, project_id, registry_ttl_sec) + app = get_app(store, get_registry_dump, project_id, registry_ttl_sec, host, port) uvicorn.run(app, host=host, port=port) From 65316859662fbb857d5158c491ed9bfbb717a141 Mon Sep 17 00:00:00 2001 From: Achal Shah Date: Mon, 16 May 2022 12:25:47 -0700 Subject: [PATCH 5/9] fix: Support push sources in stream feature views (#2704) Signed-off-by: Achal Shah --- sdk/python/feast/stream_feature_view.py | 5 +---- sdk/python/tests/unit/test_feature_views.py | 13 ++++++++++++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/sdk/python/feast/stream_feature_view.py b/sdk/python/feast/stream_feature_view.py index 1c51b94a7cf..cfb3f63d7df 100644 --- a/sdk/python/feast/stream_feature_view.py +++ b/sdk/python/feast/stream_feature_view.py @@ -7,10 +7,7 @@ from feast.field import Field from feast.protos.feast.core.DataSource_pb2 import DataSource as DataSourceProto -SUPPORTED_STREAM_SOURCES = { - "KafkaSource", - "KinesisSource", -} +SUPPORTED_STREAM_SOURCES = {"KafkaSource", "KinesisSource", "PushSource"} class StreamFeatureView(FeatureView): diff --git a/sdk/python/tests/unit/test_feature_views.py b/sdk/python/tests/unit/test_feature_views.py index 8708a983c41..f72ae4fe9cb 100644 --- a/sdk/python/tests/unit/test_feature_views.py +++ b/sdk/python/tests/unit/test_feature_views.py @@ -2,6 +2,7 @@ import pytest +from feast import PushSource from feast.batch_feature_view import BatchFeatureView from feast.data_format import AvroFormat from feast.data_source import KafkaSource @@ -50,12 +51,22 @@ def test_create_stream_feature_view(): batch_source=FileSource(path="some path"), ) StreamFeatureView( - name="test batch feature view", + name="test kafka stream feature view", entities=[], ttl=timedelta(days=30), source=stream_source, ) + push_source = PushSource( + name="push source", batch_source=FileSource(path="some path") + ) + StreamFeatureView( + name="test push source feature view", + entities=[], + ttl=timedelta(days=30), + source=push_source, + ) + with pytest.raises(ValueError): StreamFeatureView( name="test batch feature view", entities=[], ttl=timedelta(days=30) From 1f893f1f6c60927616f2edc9687059a1254562ab Mon Sep 17 00:00:00 2001 From: Danny Chiao Date: Mon, 16 May 2022 16:03:51 -0400 Subject: [PATCH 6/9] fix: Add S3FS dependency (which Dask depends on for S3 files) (#2701) * fix: Add S3FS dependency (which Dask depends on for S3 files) Signed-off-by: Danny Chiao * fix requirements to prevent conflicting requirements Signed-off-by: Danny Chiao --- .../requirements/py3.10-ci-requirements.txt | 67 ++++++++++------- .../requirements/py3.10-requirements.txt | 32 +++----- .../requirements/py3.7-ci-requirements.txt | 68 ++++++++++------- .../requirements/py3.7-requirements.txt | 32 +++----- .../requirements/py3.8-ci-requirements.txt | 68 ++++++++++------- .../requirements/py3.8-requirements.txt | 32 +++----- .../requirements/py3.9-ci-requirements.txt | 74 +++++++++++-------- .../requirements/py3.9-requirements.txt | 32 +++----- setup.py | 5 +- 9 files changed, 213 insertions(+), 197 deletions(-) diff --git a/sdk/python/requirements/py3.10-ci-requirements.txt b/sdk/python/requirements/py3.10-ci-requirements.txt index 0655eb9c769..120f0d1158e 100644 --- a/sdk/python/requirements/py3.10-ci-requirements.txt +++ b/sdk/python/requirements/py3.10-ci-requirements.txt @@ -12,17 +12,23 @@ adal==1.2.7 # msrestazure adlfs==0.5.9 # via feast (setup.py) +aiobotocore==2.1.2 + # via s3fs aiohttp==3.8.1 # via # adlfs + # aiobotocore # gcsfs + # s3fs +aioitertools==0.10.0 + # via aiobotocore aiosignal==1.2.0 # via aiohttp alabaster==0.7.12 # via sphinx altair==4.2.0 # via great-expectations -anyio==3.5.0 +anyio==3.6.1 # via # starlette # watchgod @@ -52,7 +58,7 @@ attrs==21.4.0 # pytest avro==1.10.0 # via feast (setup.py) -azure-core==1.23.1 +azure-core==1.24.0 # via # adlfs # azure-identity @@ -61,7 +67,7 @@ azure-datalake-store==0.0.52 # via adlfs azure-identity==1.10.0 # via adlfs -azure-storage-blob==12.11.0 +azure-storage-blob==12.12.0 # via adlfs babel==2.10.1 # via sphinx @@ -69,12 +75,13 @@ backcall==0.2.0 # via ipython black==19.10b0 # via feast (setup.py) -boto3==1.22.8 +boto3==1.20.23 # via # feast (setup.py) # moto -botocore==1.25.8 +botocore==1.23.24 # via + # aiobotocore # boto3 # moto # s3transfer @@ -115,7 +122,7 @@ colorama==0.4.4 # via # feast (setup.py) # great-expectations -coverage[toml]==6.3.2 +coverage[toml]==6.3.3 # via pytest-cov cryptography==3.4.8 # via @@ -158,7 +165,7 @@ execnet==1.9.0 # via pytest-xdist executing==0.8.3 # via stack-data -fastapi==0.76.0 +fastapi==0.78.0 # via feast (setup.py) fastavro==1.4.11 # via @@ -166,7 +173,7 @@ fastavro==1.4.11 # pandavro fastjsonschema==2.15.3 # via nbformat -filelock==3.6.0 +filelock==3.7.0 # via virtualenv firebase-admin==4.5.2 # via feast (setup.py) @@ -176,12 +183,13 @@ frozenlist==1.3.0 # via # aiohttp # aiosignal -fsspec==2022.3.0 +fsspec==2022.1.0 # via # adlfs # dask # gcsfs -gcsfs==2022.3.0 + # s3fs +gcsfs==0.8.0 # via feast (setup.py) google-api-core[grpc]==1.31.5 # via @@ -227,7 +235,6 @@ google-cloud-storage==1.40.0 # via # feast (setup.py) # firebase-admin - # gcsfs google-crc32c==1.3.0 # via google-resumable-media google-resumable-media==1.3.3 @@ -241,7 +248,7 @@ googleapis-common-protos==1.52.0 # tensorflow-metadata great-expectations==0.14.13 # via feast (setup.py) -grpcio==1.46.0 +grpcio==1.46.1 # via # feast (setup.py) # google-api-core @@ -249,7 +256,7 @@ grpcio==1.46.0 # grpcio-reflection # grpcio-testing # grpcio-tools -grpcio-reflection==1.46.0 +grpcio-reflection==1.46.1 # via feast (setup.py) grpcio-testing==1.44.0 # via feast (setup.py) @@ -296,7 +303,7 @@ jinja2==3.0.3 # great-expectations # moto # sphinx -jmespath==1.0.0 +jmespath==0.10.0 # via # boto3 # botocore @@ -330,7 +337,7 @@ mmh3==3.0.0 # via feast (setup.py) mock==2.0.0 # via feast (setup.py) -moto==3.1.7 +moto==3.1.9 # via feast (setup.py) msal==1.17.0 # via @@ -409,7 +416,7 @@ pexpect==4.8.0 # via ipython pickleshare==0.7.5 # via ipython -pip-tools==6.6.0 +pip-tools==6.6.1 # via feast (setup.py) platformdirs==2.5.2 # via virtualenv @@ -486,7 +493,7 @@ pygments==2.12.0 # via # ipython # sphinx -pyjwt[crypto]==2.3.0 +pyjwt[crypto]==2.4.0 # via # adal # msal @@ -591,6 +598,8 @@ rsa==4.8 # via google-auth ruamel-yaml==0.17.17 # via great-expectations +s3fs==2022.1.0 + # via feast (setup.py) s3transfer==0.5.2 # via boto3 scipy==1.8.0 @@ -639,17 +648,17 @@ sphinxcontrib-serializinghtml==1.1.5 # via sphinx stack-data==0.2.0 # via ipython -starlette==0.18.0 +starlette==0.19.1 # via fastapi tabulate==0.8.9 # via feast (setup.py) tenacity==8.0.1 # via feast (setup.py) -tensorflow-metadata==1.7.0 +tensorflow-metadata==1.8.0 # via feast (setup.py) termcolor==1.1.0 # via great-expectations -testcontainers==3.5.3 +testcontainers==3.5.4 # via feast (setup.py) thriftpy2==0.4.14 # via happybase @@ -674,7 +683,7 @@ tqdm==4.64.0 # via # feast (setup.py) # great-expectations -traitlets==5.1.1 +traitlets==5.2.1.post0 # via # ipython # jupyter-core @@ -684,23 +693,23 @@ trino==0.313.0 # via feast (setup.py) typed-ast==1.5.3 # via black -types-protobuf==3.19.18 +types-protobuf==3.19.20 # via # feast (setup.py) # mypy-protobuf -types-python-dateutil==2.8.14 +types-python-dateutil==2.8.15 # via feast (setup.py) -types-pytz==2021.3.7 +types-pytz==2021.3.8 # via feast (setup.py) types-pyyaml==6.0.7 # via feast (setup.py) -types-redis==4.2.1 +types-redis==4.2.3 # via feast (setup.py) types-requests==2.27.25 # via feast (setup.py) types-setuptools==57.4.14 # via feast (setup.py) -types-tabulate==0.8.8 +types-tabulate==0.8.9 # via feast (setup.py) types-urllib3==1.26.14 # via types-requests @@ -714,12 +723,13 @@ tzdata==2022.1 # via pytz-deprecation-shim tzlocal==4.2 # via great-expectations +ujson==5.2.0 + # via gcsfs uritemplate==4.1.1 # via google-api-python-client urllib3==1.26.9 # via # botocore - # feast (setup.py) # great-expectations # minio # requests @@ -744,9 +754,10 @@ wheel==0.37.1 # via pip-tools wrapt==1.14.1 # via + # aiobotocore # deprecated # testcontainers -xmltodict==0.12.0 +xmltodict==0.13.0 # via moto yarl==1.7.2 # via aiohttp diff --git a/sdk/python/requirements/py3.10-requirements.txt b/sdk/python/requirements/py3.10-requirements.txt index 369c3b8e60b..725b17f8caf 100644 --- a/sdk/python/requirements/py3.10-requirements.txt +++ b/sdk/python/requirements/py3.10-requirements.txt @@ -6,7 +6,7 @@ # absl-py==1.0.0 # via tensorflow-metadata -anyio==3.5.0 +anyio==3.6.1 # via # starlette # watchgod @@ -14,7 +14,7 @@ asgiref==3.5.1 # via uvicorn attrs==21.4.0 # via jsonschema -cachetools==4.2.4 +cachetools==5.1.0 # via google-auth certifi==2021.10.8 # via requests @@ -32,7 +32,7 @@ dask==2022.1.1 # via feast (setup.py) dill==0.3.4 # via feast (setup.py) -fastapi==0.76.0 +fastapi==0.78.0 # via feast (setup.py) fastavro==1.4.11 # via @@ -40,20 +40,20 @@ fastavro==1.4.11 # pandavro fsspec==2022.3.0 # via dask -google-api-core==1.31.5 +google-api-core==2.7.3 # via feast (setup.py) -google-auth==1.35.0 +google-auth==2.6.6 # via google-api-core googleapis-common-protos==1.52.0 # via # feast (setup.py) # google-api-core # tensorflow-metadata -grpcio==1.46.0 +grpcio==1.46.1 # via # feast (setup.py) # grpcio-reflection -grpcio-reflection==1.46.0 +grpcio-reflection==1.46.1 # via feast (setup.py) h11==0.13.0 # via uvicorn @@ -80,9 +80,7 @@ numpy==1.21.6 # pandavro # pyarrow packaging==21.3 - # via - # dask - # google-api-core + # via dask pandas==1.4.2 # via # feast (setup.py) @@ -113,7 +111,7 @@ pydantic==1.9.0 # via # fastapi # feast (setup.py) -pyparsing==3.0.8 +pyparsing==3.0.9 # via packaging pyrsistent==0.18.1 # via jsonschema @@ -122,9 +120,7 @@ python-dateutil==2.8.2 python-dotenv==0.20.0 # via uvicorn pytz==2022.1 - # via - # google-api-core - # pandas + # via pandas pyyaml==6.0 # via # dask @@ -137,20 +133,19 @@ rsa==4.8 six==1.16.0 # via # absl-py - # google-api-core # google-auth # grpcio # pandavro # python-dateutil sniffio==1.2.0 # via anyio -starlette==0.18.0 +starlette==0.19.1 # via fastapi tabulate==0.8.9 # via feast (setup.py) tenacity==8.0.1 # via feast (setup.py) -tensorflow-metadata==1.7.0 +tensorflow-metadata==1.8.0 # via feast (setup.py) toml==0.10.2 # via feast (setup.py) @@ -172,6 +167,3 @@ watchgod==0.8.2 # via uvicorn websockets==10.3 # via uvicorn - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/sdk/python/requirements/py3.7-ci-requirements.txt b/sdk/python/requirements/py3.7-ci-requirements.txt index 4232f5b2941..b445f86ea06 100644 --- a/sdk/python/requirements/py3.7-ci-requirements.txt +++ b/sdk/python/requirements/py3.7-ci-requirements.txt @@ -12,17 +12,23 @@ adal==1.2.7 # msrestazure adlfs==0.5.9 # via feast (setup.py) +aiobotocore==2.1.2 + # via s3fs aiohttp==3.8.1 # via # adlfs + # aiobotocore # gcsfs + # s3fs +aioitertools==0.10.0 + # via aiobotocore aiosignal==1.2.0 # via aiohttp alabaster==0.7.12 # via sphinx altair==4.2.0 # via great-expectations -anyio==3.5.0 +anyio==3.6.1 # via # starlette # watchgod @@ -52,7 +58,7 @@ attrs==21.4.0 # pytest avro==1.10.0 # via feast (setup.py) -azure-core==1.23.1 +azure-core==1.24.0 # via # adlfs # azure-identity @@ -61,7 +67,7 @@ azure-datalake-store==0.0.52 # via adlfs azure-identity==1.10.0 # via adlfs -azure-storage-blob==12.11.0 +azure-storage-blob==12.12.0 # via adlfs babel==2.10.1 # via sphinx @@ -73,12 +79,13 @@ backports-zoneinfo==0.2.1 # tzlocal black==19.10b0 # via feast (setup.py) -boto3==1.22.8 +boto3==1.20.23 # via # feast (setup.py) # moto -botocore==1.25.8 +botocore==1.23.24 # via + # aiobotocore # boto3 # moto # s3transfer @@ -119,7 +126,7 @@ colorama==0.4.4 # via # feast (setup.py) # great-expectations -coverage[toml]==6.3.2 +coverage[toml]==6.3.3 # via pytest-cov cryptography==3.4.8 # via @@ -160,7 +167,7 @@ entrypoints==0.4 # via altair execnet==1.9.0 # via pytest-xdist -fastapi==0.76.0 +fastapi==0.78.0 # via feast (setup.py) fastavro==1.4.11 # via @@ -168,7 +175,7 @@ fastavro==1.4.11 # pandavro fastjsonschema==2.15.3 # via nbformat -filelock==3.6.0 +filelock==3.7.0 # via virtualenv firebase-admin==4.5.2 # via feast (setup.py) @@ -178,12 +185,13 @@ frozenlist==1.3.0 # via # aiohttp # aiosignal -fsspec==2022.3.0 +fsspec==2022.1.0 # via # adlfs # dask # gcsfs -gcsfs==2022.3.0 + # s3fs +gcsfs==0.8.0 # via feast (setup.py) google-api-core[grpc]==1.31.5 # via @@ -229,7 +237,6 @@ google-cloud-storage==1.40.0 # via # feast (setup.py) # firebase-admin - # gcsfs google-crc32c==1.3.0 # via google-resumable-media google-resumable-media==1.3.3 @@ -243,7 +250,7 @@ googleapis-common-protos==1.52.0 # tensorflow-metadata great-expectations==0.14.13 # via feast (setup.py) -grpcio==1.46.0 +grpcio==1.46.1 # via # feast (setup.py) # google-api-core @@ -251,7 +258,7 @@ grpcio==1.46.0 # grpcio-reflection # grpcio-testing # grpcio-tools -grpcio-reflection==1.46.0 +grpcio-reflection==1.46.1 # via feast (setup.py) grpcio-testing==1.44.0 # via feast (setup.py) @@ -312,7 +319,7 @@ jinja2==3.0.3 # great-expectations # moto # sphinx -jmespath==1.0.0 +jmespath==0.10.0 # via # boto3 # botocore @@ -346,7 +353,7 @@ mmh3==3.0.0 # via feast (setup.py) mock==2.0.0 # via feast (setup.py) -moto==3.1.7 +moto==3.1.9 # via feast (setup.py) msal==1.17.0 # via @@ -425,7 +432,7 @@ pexpect==4.8.0 # via ipython pickleshare==0.7.5 # via ipython -pip-tools==6.6.0 +pip-tools==6.6.1 # via feast (setup.py) platformdirs==2.5.2 # via virtualenv @@ -500,7 +507,7 @@ pygments==2.12.0 # via # ipython # sphinx -pyjwt[crypto]==2.3.0 +pyjwt[crypto]==2.4.0 # via # adal # msal @@ -607,6 +614,8 @@ ruamel-yaml==0.17.17 # via great-expectations ruamel-yaml-clib==0.2.6 # via ruamel-yaml +s3fs==2022.1.0 + # via feast (setup.py) s3transfer==0.5.2 # via boto3 scipy==1.7.3 @@ -653,17 +662,17 @@ sphinxcontrib-qthelp==1.0.3 # via sphinx sphinxcontrib-serializinghtml==1.1.5 # via sphinx -starlette==0.18.0 +starlette==0.19.1 # via fastapi tabulate==0.8.9 # via feast (setup.py) tenacity==8.0.1 # via feast (setup.py) -tensorflow-metadata==1.7.0 +tensorflow-metadata==1.8.0 # via feast (setup.py) termcolor==1.1.0 # via great-expectations -testcontainers==3.5.3 +testcontainers==3.5.4 # via feast (setup.py) thriftpy2==0.4.14 # via happybase @@ -688,7 +697,7 @@ tqdm==4.64.0 # via # feast (setup.py) # great-expectations -traitlets==5.1.1 +traitlets==5.2.1.post0 # via # ipython # jupyter-core @@ -700,29 +709,30 @@ typed-ast==1.5.3 # via # black # mypy -types-protobuf==3.19.18 +types-protobuf==3.19.20 # via # feast (setup.py) # mypy-protobuf -types-python-dateutil==2.8.14 +types-python-dateutil==2.8.15 # via feast (setup.py) -types-pytz==2021.3.7 +types-pytz==2021.3.8 # via feast (setup.py) types-pyyaml==6.0.7 # via feast (setup.py) -types-redis==4.2.1 +types-redis==4.2.3 # via feast (setup.py) types-requests==2.27.25 # via feast (setup.py) types-setuptools==57.4.14 # via feast (setup.py) -types-tabulate==0.8.8 +types-tabulate==0.8.9 # via feast (setup.py) types-urllib3==1.26.14 # via types-requests typing-extensions==4.2.0 # via # aiohttp + # aioitertools # anyio # asgiref # async-timeout @@ -741,12 +751,13 @@ tzdata==2022.1 # via pytz-deprecation-shim tzlocal==4.2 # via great-expectations +ujson==5.2.0 + # via gcsfs uritemplate==4.1.1 # via google-api-python-client urllib3==1.26.9 # via # botocore - # feast (setup.py) # great-expectations # minio # requests @@ -771,9 +782,10 @@ wheel==0.37.1 # via pip-tools wrapt==1.14.1 # via + # aiobotocore # deprecated # testcontainers -xmltodict==0.12.0 +xmltodict==0.13.0 # via moto yarl==1.7.2 # via aiohttp diff --git a/sdk/python/requirements/py3.7-requirements.txt b/sdk/python/requirements/py3.7-requirements.txt index dfdd86e39a1..b0e1511d9c6 100644 --- a/sdk/python/requirements/py3.7-requirements.txt +++ b/sdk/python/requirements/py3.7-requirements.txt @@ -6,7 +6,7 @@ # absl-py==1.0.0 # via tensorflow-metadata -anyio==3.5.0 +anyio==3.6.1 # via # starlette # watchgod @@ -14,7 +14,7 @@ asgiref==3.5.1 # via uvicorn attrs==21.4.0 # via jsonschema -cachetools==4.2.4 +cachetools==5.1.0 # via google-auth certifi==2021.10.8 # via requests @@ -32,7 +32,7 @@ dask==2022.1.1 # via feast (setup.py) dill==0.3.4 # via feast (setup.py) -fastapi==0.76.0 +fastapi==0.78.0 # via feast (setup.py) fastavro==1.4.11 # via @@ -40,20 +40,20 @@ fastavro==1.4.11 # pandavro fsspec==2022.3.0 # via dask -google-api-core==1.31.5 +google-api-core==2.7.3 # via feast (setup.py) -google-auth==1.35.0 +google-auth==2.6.6 # via google-api-core googleapis-common-protos==1.52.0 # via # feast (setup.py) # google-api-core # tensorflow-metadata -grpcio==1.46.0 +grpcio==1.46.1 # via # feast (setup.py) # grpcio-reflection -grpcio-reflection==1.46.0 +grpcio-reflection==1.46.1 # via feast (setup.py) h11==0.13.0 # via uvicorn @@ -86,9 +86,7 @@ numpy==1.21.6 # pandavro # pyarrow packaging==21.3 - # via - # dask - # google-api-core + # via dask pandas==1.3.5 # via # feast (setup.py) @@ -119,7 +117,7 @@ pydantic==1.9.0 # via # fastapi # feast (setup.py) -pyparsing==3.0.8 +pyparsing==3.0.9 # via packaging pyrsistent==0.18.1 # via jsonschema @@ -128,9 +126,7 @@ python-dateutil==2.8.2 python-dotenv==0.20.0 # via uvicorn pytz==2022.1 - # via - # google-api-core - # pandas + # via pandas pyyaml==6.0 # via # dask @@ -143,20 +139,19 @@ rsa==4.8 six==1.16.0 # via # absl-py - # google-api-core # google-auth # grpcio # pandavro # python-dateutil sniffio==1.2.0 # via anyio -starlette==0.18.0 +starlette==0.19.1 # via fastapi tabulate==0.8.9 # via feast (setup.py) tenacity==8.0.1 # via feast (setup.py) -tensorflow-metadata==1.7.0 +tensorflow-metadata==1.8.0 # via feast (setup.py) toml==0.10.2 # via feast (setup.py) @@ -190,6 +185,3 @@ zipp==3.8.0 # via # importlib-metadata # importlib-resources - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/sdk/python/requirements/py3.8-ci-requirements.txt b/sdk/python/requirements/py3.8-ci-requirements.txt index db3eca4b538..202f3ac2c71 100644 --- a/sdk/python/requirements/py3.8-ci-requirements.txt +++ b/sdk/python/requirements/py3.8-ci-requirements.txt @@ -12,17 +12,23 @@ adal==1.2.7 # msrestazure adlfs==0.5.9 # via feast (setup.py) +aiobotocore==2.1.2 + # via s3fs aiohttp==3.8.1 # via # adlfs + # aiobotocore # gcsfs + # s3fs +aioitertools==0.10.0 + # via aiobotocore aiosignal==1.2.0 # via aiohttp alabaster==0.7.12 # via sphinx altair==4.2.0 # via great-expectations -anyio==3.5.0 +anyio==3.6.1 # via # starlette # watchgod @@ -52,7 +58,7 @@ attrs==21.4.0 # pytest avro==1.10.0 # via feast (setup.py) -azure-core==1.23.1 +azure-core==1.24.0 # via # adlfs # azure-identity @@ -61,7 +67,7 @@ azure-datalake-store==0.0.52 # via adlfs azure-identity==1.10.0 # via adlfs -azure-storage-blob==12.11.0 +azure-storage-blob==12.12.0 # via adlfs babel==2.10.1 # via sphinx @@ -73,12 +79,13 @@ backports-zoneinfo==0.2.1 # tzlocal black==19.10b0 # via feast (setup.py) -boto3==1.22.8 +boto3==1.20.23 # via # feast (setup.py) # moto -botocore==1.25.8 +botocore==1.23.24 # via + # aiobotocore # boto3 # moto # s3transfer @@ -119,7 +126,7 @@ colorama==0.4.4 # via # feast (setup.py) # great-expectations -coverage[toml]==6.3.2 +coverage[toml]==6.3.3 # via pytest-cov cryptography==3.4.8 # via @@ -162,7 +169,7 @@ execnet==1.9.0 # via pytest-xdist executing==0.8.3 # via stack-data -fastapi==0.76.0 +fastapi==0.78.0 # via feast (setup.py) fastavro==1.4.11 # via @@ -170,7 +177,7 @@ fastavro==1.4.11 # pandavro fastjsonschema==2.15.3 # via nbformat -filelock==3.6.0 +filelock==3.7.0 # via virtualenv firebase-admin==4.5.2 # via feast (setup.py) @@ -180,12 +187,13 @@ frozenlist==1.3.0 # via # aiohttp # aiosignal -fsspec==2022.3.0 +fsspec==2022.1.0 # via # adlfs # dask # gcsfs -gcsfs==2022.3.0 + # s3fs +gcsfs==0.8.0 # via feast (setup.py) google-api-core[grpc]==1.31.5 # via @@ -231,7 +239,6 @@ google-cloud-storage==1.40.0 # via # feast (setup.py) # firebase-admin - # gcsfs google-crc32c==1.3.0 # via google-resumable-media google-resumable-media==1.3.3 @@ -245,7 +252,7 @@ googleapis-common-protos==1.52.0 # tensorflow-metadata great-expectations==0.14.13 # via feast (setup.py) -grpcio==1.46.0 +grpcio==1.46.1 # via # feast (setup.py) # google-api-core @@ -253,7 +260,7 @@ grpcio==1.46.0 # grpcio-reflection # grpcio-testing # grpcio-tools -grpcio-reflection==1.46.0 +grpcio-reflection==1.46.1 # via feast (setup.py) grpcio-testing==1.44.0 # via feast (setup.py) @@ -302,7 +309,7 @@ jinja2==3.0.3 # great-expectations # moto # sphinx -jmespath==1.0.0 +jmespath==0.10.0 # via # boto3 # botocore @@ -336,7 +343,7 @@ mmh3==3.0.0 # via feast (setup.py) mock==2.0.0 # via feast (setup.py) -moto==3.1.7 +moto==3.1.9 # via feast (setup.py) msal==1.17.0 # via @@ -415,7 +422,7 @@ pexpect==4.8.0 # via ipython pickleshare==0.7.5 # via ipython -pip-tools==6.6.0 +pip-tools==6.6.1 # via feast (setup.py) platformdirs==2.5.2 # via virtualenv @@ -492,7 +499,7 @@ pygments==2.12.0 # via # ipython # sphinx -pyjwt[crypto]==2.3.0 +pyjwt[crypto]==2.4.0 # via # adal # msal @@ -599,6 +606,8 @@ ruamel-yaml==0.17.17 # via great-expectations ruamel-yaml-clib==0.2.6 # via ruamel-yaml +s3fs==2022.1.0 + # via feast (setup.py) s3transfer==0.5.2 # via boto3 scipy==1.8.0 @@ -647,17 +656,17 @@ sphinxcontrib-serializinghtml==1.1.5 # via sphinx stack-data==0.2.0 # via ipython -starlette==0.18.0 +starlette==0.19.1 # via fastapi tabulate==0.8.9 # via feast (setup.py) tenacity==8.0.1 # via feast (setup.py) -tensorflow-metadata==1.7.0 +tensorflow-metadata==1.8.0 # via feast (setup.py) termcolor==1.1.0 # via great-expectations -testcontainers==3.5.3 +testcontainers==3.5.4 # via feast (setup.py) thriftpy2==0.4.14 # via happybase @@ -682,7 +691,7 @@ tqdm==4.64.0 # via # feast (setup.py) # great-expectations -traitlets==5.1.1 +traitlets==5.2.1.post0 # via # ipython # jupyter-core @@ -692,28 +701,29 @@ trino==0.313.0 # via feast (setup.py) typed-ast==1.5.3 # via black -types-protobuf==3.19.18 +types-protobuf==3.19.20 # via # feast (setup.py) # mypy-protobuf -types-python-dateutil==2.8.14 +types-python-dateutil==2.8.15 # via feast (setup.py) -types-pytz==2021.3.7 +types-pytz==2021.3.8 # via feast (setup.py) types-pyyaml==6.0.7 # via feast (setup.py) -types-redis==4.2.1 +types-redis==4.2.3 # via feast (setup.py) types-requests==2.27.25 # via feast (setup.py) types-setuptools==57.4.14 # via feast (setup.py) -types-tabulate==0.8.8 +types-tabulate==0.8.9 # via feast (setup.py) types-urllib3==1.26.14 # via types-requests typing-extensions==4.2.0 # via + # aioitertools # azure-core # great-expectations # mypy @@ -723,12 +733,13 @@ tzdata==2022.1 # via pytz-deprecation-shim tzlocal==4.2 # via great-expectations +ujson==5.2.0 + # via gcsfs uritemplate==4.1.1 # via google-api-python-client urllib3==1.26.9 # via # botocore - # feast (setup.py) # great-expectations # minio # requests @@ -753,9 +764,10 @@ wheel==0.37.1 # via pip-tools wrapt==1.14.1 # via + # aiobotocore # deprecated # testcontainers -xmltodict==0.12.0 +xmltodict==0.13.0 # via moto yarl==1.7.2 # via aiohttp diff --git a/sdk/python/requirements/py3.8-requirements.txt b/sdk/python/requirements/py3.8-requirements.txt index 9e47d0e831d..98e1c6a76a9 100644 --- a/sdk/python/requirements/py3.8-requirements.txt +++ b/sdk/python/requirements/py3.8-requirements.txt @@ -6,7 +6,7 @@ # absl-py==1.0.0 # via tensorflow-metadata -anyio==3.5.0 +anyio==3.6.1 # via # starlette # watchgod @@ -14,7 +14,7 @@ asgiref==3.5.1 # via uvicorn attrs==21.4.0 # via jsonschema -cachetools==4.2.4 +cachetools==5.1.0 # via google-auth certifi==2021.10.8 # via requests @@ -32,7 +32,7 @@ dask==2022.1.1 # via feast (setup.py) dill==0.3.4 # via feast (setup.py) -fastapi==0.76.0 +fastapi==0.78.0 # via feast (setup.py) fastavro==1.4.11 # via @@ -40,20 +40,20 @@ fastavro==1.4.11 # pandavro fsspec==2022.3.0 # via dask -google-api-core==1.31.5 +google-api-core==2.7.3 # via feast (setup.py) -google-auth==1.35.0 +google-auth==2.6.6 # via google-api-core googleapis-common-protos==1.52.0 # via # feast (setup.py) # google-api-core # tensorflow-metadata -grpcio==1.46.0 +grpcio==1.46.1 # via # feast (setup.py) # grpcio-reflection -grpcio-reflection==1.46.0 +grpcio-reflection==1.46.1 # via feast (setup.py) h11==0.13.0 # via uvicorn @@ -82,9 +82,7 @@ numpy==1.21.6 # pandavro # pyarrow packaging==21.3 - # via - # dask - # google-api-core + # via dask pandas==1.4.2 # via # feast (setup.py) @@ -115,7 +113,7 @@ pydantic==1.9.0 # via # fastapi # feast (setup.py) -pyparsing==3.0.8 +pyparsing==3.0.9 # via packaging pyrsistent==0.18.1 # via jsonschema @@ -124,9 +122,7 @@ python-dateutil==2.8.2 python-dotenv==0.20.0 # via uvicorn pytz==2022.1 - # via - # google-api-core - # pandas + # via pandas pyyaml==6.0 # via # dask @@ -139,20 +135,19 @@ rsa==4.8 six==1.16.0 # via # absl-py - # google-api-core # google-auth # grpcio # pandavro # python-dateutil sniffio==1.2.0 # via anyio -starlette==0.18.0 +starlette==0.19.1 # via fastapi tabulate==0.8.9 # via feast (setup.py) tenacity==8.0.1 # via feast (setup.py) -tensorflow-metadata==1.7.0 +tensorflow-metadata==1.8.0 # via feast (setup.py) toml==0.10.2 # via feast (setup.py) @@ -178,6 +173,3 @@ websockets==10.3 # via uvicorn zipp==3.8.0 # via importlib-resources - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/sdk/python/requirements/py3.9-ci-requirements.txt b/sdk/python/requirements/py3.9-ci-requirements.txt index 4a96dc6fd2c..d3ecdc34bf3 100644 --- a/sdk/python/requirements/py3.9-ci-requirements.txt +++ b/sdk/python/requirements/py3.9-ci-requirements.txt @@ -12,17 +12,23 @@ adal==1.2.7 # msrestazure adlfs==0.5.9 # via feast (setup.py) +aiobotocore==2.1.2 + # via s3fs aiohttp==3.8.1 # via # adlfs + # aiobotocore # gcsfs + # s3fs +aioitertools==0.10.0 + # via aiobotocore aiosignal==1.2.0 # via aiohttp alabaster==0.7.12 # via sphinx altair==4.2.0 # via great-expectations -anyio==3.5.0 +anyio==3.6.1 # via # starlette # watchgod @@ -52,7 +58,7 @@ attrs==21.4.0 # pytest avro==1.10.0 # via feast (setup.py) -azure-core==1.23.1 +azure-core==1.24.0 # via # adlfs # azure-identity @@ -61,7 +67,7 @@ azure-datalake-store==0.0.52 # via adlfs azure-identity==1.10.0 # via adlfs -azure-storage-blob==12.11.0 +azure-storage-blob==12.12.0 # via adlfs babel==2.10.1 # via sphinx @@ -69,12 +75,13 @@ backcall==0.2.0 # via ipython black==19.10b0 # via feast (setup.py) -boto3==1.22.8 +boto3==1.20.23 # via # feast (setup.py) # moto -botocore==1.25.8 +botocore==1.23.24 # via + # aiobotocore # boto3 # moto # s3transfer @@ -115,7 +122,7 @@ colorama==0.4.4 # via # feast (setup.py) # great-expectations -coverage[toml]==6.3.2 +coverage[toml]==6.3.3 # via pytest-cov cryptography==3.4.8 # via @@ -158,7 +165,7 @@ execnet==1.9.0 # via pytest-xdist executing==0.8.3 # via stack-data -fastapi==0.76.0 +fastapi==0.78.0 # via feast (setup.py) fastavro==1.4.11 # via @@ -166,7 +173,7 @@ fastavro==1.4.11 # pandavro fastjsonschema==2.15.3 # via nbformat -filelock==3.6.0 +filelock==3.7.0 # via virtualenv firebase-admin==4.5.2 # via feast (setup.py) @@ -176,12 +183,13 @@ frozenlist==1.3.0 # via # aiohttp # aiosignal -fsspec==2022.3.0 +fsspec==2022.1.0 # via # adlfs # dask # gcsfs -gcsfs==2022.3.0 + # s3fs +gcsfs==0.8.0 # via feast (setup.py) google-api-core[grpc]==1.31.5 # via @@ -227,7 +235,6 @@ google-cloud-storage==1.40.0 # via # feast (setup.py) # firebase-admin - # gcsfs google-crc32c==1.3.0 # via google-resumable-media google-resumable-media==1.3.3 @@ -241,7 +248,7 @@ googleapis-common-protos==1.52.0 # tensorflow-metadata great-expectations==0.14.13 # via feast (setup.py) -grpcio==1.46.0 +grpcio==1.46.1 # via # feast (setup.py) # google-api-core @@ -249,7 +256,7 @@ grpcio==1.46.0 # grpcio-reflection # grpcio-testing # grpcio-tools -grpcio-reflection==1.46.0 +grpcio-reflection==1.46.1 # via feast (setup.py) grpcio-testing==1.44.0 # via feast (setup.py) @@ -296,7 +303,7 @@ jinja2==3.0.3 # great-expectations # moto # sphinx -jmespath==1.0.0 +jmespath==0.10.0 # via # boto3 # botocore @@ -330,7 +337,7 @@ mmh3==3.0.0 # via feast (setup.py) mock==2.0.0 # via feast (setup.py) -moto==3.1.7 +moto==3.1.9 # via feast (setup.py) msal==1.17.0 # via @@ -409,7 +416,7 @@ pexpect==4.8.0 # via ipython pickleshare==0.7.5 # via ipython -pip-tools==6.6.0 +pip-tools==6.6.1 # via feast (setup.py) platformdirs==2.5.2 # via virtualenv @@ -486,7 +493,7 @@ pygments==2.12.0 # via # ipython # sphinx -pyjwt[crypto]==2.3.0 +pyjwt[crypto]==2.4.0 # via # adal # msal @@ -589,10 +596,12 @@ responses==0.20.0 # via moto rsa==4.8 # via google-auth -ruamel-yaml==0.17.17 +ruamel.yaml==0.17.17 # via great-expectations -ruamel-yaml-clib==0.2.6 - # via ruamel-yaml +ruamel.yaml.clib==0.2.6 + # via ruamel.yaml +s3fs==2022.1.0 + # via feast (setup.py) s3transfer==0.5.2 # via boto3 scipy==1.8.0 @@ -641,17 +650,17 @@ sphinxcontrib-serializinghtml==1.1.5 # via sphinx stack-data==0.2.0 # via ipython -starlette==0.18.0 +starlette==0.19.1 # via fastapi tabulate==0.8.9 # via feast (setup.py) tenacity==8.0.1 # via feast (setup.py) -tensorflow-metadata==1.7.0 +tensorflow-metadata==1.8.0 # via feast (setup.py) termcolor==1.1.0 # via great-expectations -testcontainers==3.5.3 +testcontainers==3.5.4 # via feast (setup.py) thriftpy2==0.4.14 # via happybase @@ -676,7 +685,7 @@ tqdm==4.64.0 # via # feast (setup.py) # great-expectations -traitlets==5.1.1 +traitlets==5.2.1.post0 # via # ipython # jupyter-core @@ -686,28 +695,29 @@ trino==0.313.0 # via feast (setup.py) typed-ast==1.5.3 # via black -types-protobuf==3.19.18 +types-protobuf==3.19.20 # via # feast (setup.py) # mypy-protobuf -types-python-dateutil==2.8.14 +types-python-dateutil==2.8.15 # via feast (setup.py) -types-pytz==2021.3.7 +types-pytz==2021.3.8 # via feast (setup.py) types-pyyaml==6.0.7 # via feast (setup.py) -types-redis==4.2.1 +types-redis==4.2.3 # via feast (setup.py) types-requests==2.27.25 # via feast (setup.py) types-setuptools==57.4.14 # via feast (setup.py) -types-tabulate==0.8.8 +types-tabulate==0.8.9 # via feast (setup.py) types-urllib3==1.26.14 # via types-requests typing-extensions==4.2.0 # via + # aioitertools # azure-core # great-expectations # mypy @@ -717,12 +727,13 @@ tzdata==2022.1 # via pytz-deprecation-shim tzlocal==4.2 # via great-expectations +ujson==5.2.0 + # via gcsfs uritemplate==4.1.1 # via google-api-python-client urllib3==1.26.9 # via # botocore - # feast (setup.py) # great-expectations # minio # requests @@ -747,9 +758,10 @@ wheel==0.37.1 # via pip-tools wrapt==1.14.1 # via + # aiobotocore # deprecated # testcontainers -xmltodict==0.12.0 +xmltodict==0.13.0 # via moto yarl==1.7.2 # via aiohttp diff --git a/sdk/python/requirements/py3.9-requirements.txt b/sdk/python/requirements/py3.9-requirements.txt index 0ad985b828e..3eded689a58 100644 --- a/sdk/python/requirements/py3.9-requirements.txt +++ b/sdk/python/requirements/py3.9-requirements.txt @@ -6,7 +6,7 @@ # absl-py==1.0.0 # via tensorflow-metadata -anyio==3.5.0 +anyio==3.6.1 # via # starlette # watchgod @@ -14,7 +14,7 @@ asgiref==3.5.1 # via uvicorn attrs==21.4.0 # via jsonschema -cachetools==4.2.4 +cachetools==5.1.0 # via google-auth certifi==2021.10.8 # via requests @@ -32,7 +32,7 @@ dask==2022.1.1 # via feast (setup.py) dill==0.3.4 # via feast (setup.py) -fastapi==0.76.0 +fastapi==0.78.0 # via feast (setup.py) fastavro==1.4.11 # via @@ -40,20 +40,20 @@ fastavro==1.4.11 # pandavro fsspec==2022.3.0 # via dask -google-api-core==1.31.5 +google-api-core==2.7.3 # via feast (setup.py) -google-auth==1.35.0 +google-auth==2.6.6 # via google-api-core googleapis-common-protos==1.52.0 # via # feast (setup.py) # google-api-core # tensorflow-metadata -grpcio==1.46.0 +grpcio==1.46.1 # via # feast (setup.py) # grpcio-reflection -grpcio-reflection==1.46.0 +grpcio-reflection==1.46.1 # via feast (setup.py) h11==0.13.0 # via uvicorn @@ -80,9 +80,7 @@ numpy==1.21.6 # pandavro # pyarrow packaging==21.3 - # via - # dask - # google-api-core + # via dask pandas==1.4.2 # via # feast (setup.py) @@ -113,7 +111,7 @@ pydantic==1.9.0 # via # fastapi # feast (setup.py) -pyparsing==3.0.8 +pyparsing==3.0.9 # via packaging pyrsistent==0.18.1 # via jsonschema @@ -122,9 +120,7 @@ python-dateutil==2.8.2 python-dotenv==0.20.0 # via uvicorn pytz==2022.1 - # via - # google-api-core - # pandas + # via pandas pyyaml==6.0 # via # dask @@ -137,20 +133,19 @@ rsa==4.8 six==1.16.0 # via # absl-py - # google-api-core # google-auth # grpcio # pandavro # python-dateutil sniffio==1.2.0 # via anyio -starlette==0.18.0 +starlette==0.19.1 # via fastapi tabulate==0.8.9 # via feast (setup.py) tenacity==8.0.1 # via feast (setup.py) -tensorflow-metadata==1.7.0 +tensorflow-metadata==1.8.0 # via feast (setup.py) toml==0.10.2 # via feast (setup.py) @@ -174,6 +169,3 @@ watchgod==0.8.2 # via uvicorn websockets==10.3 # via uvicorn - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/setup.py b/setup.py index 2044de008fc..f5f092e3f50 100644 --- a/setup.py +++ b/setup.py @@ -90,8 +90,9 @@ ] AWS_REQUIRED = [ - "boto3>=1.17.0", + "boto3>=1.17.0,<=1.20.23", "docker>=5.0.2", + "s3fs>=0.4.0,<=2022.01.0" ] SNOWFLAKE_REQUIRED = [ @@ -135,7 +136,7 @@ "mypy==0.931", "mypy-protobuf==3.1", "avro==1.10.0", - "gcsfs", + "gcsfs>=0.4.0,<=2022.01.0" "urllib3>=1.25.4,<2", "psutil==5.9.0", "pytest>=6.0.0,<8", From 156c6f11a4e6bc2f4931b59ca3e574664b1ff75d Mon Sep 17 00:00:00 2001 From: Achal Shah Date: Mon, 16 May 2022 13:21:48 -0700 Subject: [PATCH 7/9] ci: Use buildx for docker builds in remaining places as well (#2705) * ci: Use buildx for docker builds in remaining places as well Signed-off-by: Achal Shah * fix oops Signed-off-by: Achal Shah --- CONTRIBUTING.md | 3 ++- Makefile | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9cce520d346..4bd14d762a5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -75,7 +75,8 @@ Note that this means if you are midway through working through a PR and rebase, ## Feast Python SDK / CLI ### Environment Setup Setting up your development environment for Feast Python SDK / CLI: -1. Ensure that you have Docker installed in your environment. Docker is used to provision service dependencies during testing. +1. Ensure that you have Docker installed in your environment. Docker is used to provision service dependencies during testing, and build images for feature servers and other components. + 1. Please note that we use [Docker with BuiltKit](https://docs.docker.com/develop/develop-images/build_enhancements/). 2. Ensure that you have `make`, Python (3.7 and above) with `pip`, installed. 3. _Recommended:_ Create a virtual environment to isolate development dependencies to be installed ```sh diff --git a/Makefile b/Makefile index 876eb909ecc..5dfbaba53bd 100644 --- a/Makefile +++ b/Makefile @@ -206,7 +206,7 @@ push-ci-docker: # TODO(adchia): consider removing. This doesn't run successfully right now build-ci-docker: - docker build -t $(REGISTRY)/feast-ci:$(VERSION) -f infra/docker/ci/Dockerfile . + docker buildx build -t $(REGISTRY)/feast-ci:$(VERSION) -f infra/docker/ci/Dockerfile --load . push-feature-server-python-aws-docker: docker push $(REGISTRY)/feature-server-python-aws:$$VERSION @@ -228,9 +228,9 @@ push-feature-server-java-docker: docker push $(REGISTRY)/feature-server-java:$(VERSION) build-feature-server-java-docker: - docker build --build-arg VERSION=$(VERSION) \ + docker buildx build --build-arg VERSION=$(VERSION) \ -t $(REGISTRY)/feature-server-java:$(VERSION) \ - -f java/infra/docker/feature-server/Dockerfile . + -f java/infra/docker/feature-server/Dockerfile --load . # Documentation From 45253366d09a69385d0e688b6cb017119d31883e Mon Sep 17 00:00:00 2001 From: Oleksii Moskalenko Date: Mon, 16 May 2022 13:22:46 -0700 Subject: [PATCH 8/9] fix: Python server is not correctly starting in integration tests (#2706) Signed-off-by: Oleksii Moskalenko --- sdk/python/tests/conftest.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/sdk/python/tests/conftest.py b/sdk/python/tests/conftest.py index d492c7ba845..092f5a07873 100644 --- a/sdk/python/tests/conftest.py +++ b/sdk/python/tests/conftest.py @@ -274,10 +274,11 @@ def pytest_generate_tests(metafunc: pytest.Metafunc): @pytest.fixture(scope="session") def python_server(environment): + assert not _check_port_open("localhost", environment.get_local_server_port()) + proc = Process( target=start_test_local_server, args=(environment.feature_store.repo_path, environment.get_local_server_port()), - daemon=True, ) if ( environment.python_feature_server @@ -298,6 +299,15 @@ def python_server(environment): if proc.is_alive(): proc.kill() + # wait server to free the port + wait_retry_backoff( + lambda: ( + None, + not _check_port_open("localhost", environment.get_local_server_port()), + ), + timeout_secs=30, + ) + def _check_port_open(host, port) -> bool: with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as sock: From 9ae2699a2db38e41a99928eb98872dd5069bb67c Mon Sep 17 00:00:00 2001 From: feast-ci-bot Date: Tue, 17 May 2022 20:05:15 +0000 Subject: [PATCH 9/9] chore(release): release 0.21.1 ## [0.21.1](https://github.com/feast-dev/feast/compare/v0.21.0...v0.21.1) (2022-05-17) ### Bug Fixes * Add S3FS dependency (which Dask depends on for S3 files) ([#2701](https://github.com/feast-dev/feast/issues/2701)) ([1f893f1](https://github.com/feast-dev/feast/commit/1f893f1f6c60927616f2edc9687059a1254562ab)) * Fix broken roadmap links ([#2690](https://github.com/feast-dev/feast/issues/2690)) ([079395a](https://github.com/feast-dev/feast/commit/079395ab09e9ed6e8546a24b88815d6aa22c9ac7)) * Fix issue when user specifies a port for feast ui ([#2692](https://github.com/feast-dev/feast/issues/2692)) ([00a9de9](https://github.com/feast-dev/feast/commit/00a9de92b818723acaf843f2d1e433d194949ad8)) * Python server is not correctly starting in integration tests ([#2706](https://github.com/feast-dev/feast/issues/2706)) ([4525336](https://github.com/feast-dev/feast/commit/45253366d09a69385d0e688b6cb017119d31883e)) * Support push sources in stream feature views ([#2704](https://github.com/feast-dev/feast/issues/2704)) ([6531685](https://github.com/feast-dev/feast/commit/65316859662fbb857d5158c491ed9bfbb717a141)) --- CHANGELOG.md | 11 +++++++++++ infra/charts/feast-python-server/Chart.yaml | 2 +- infra/charts/feast-python-server/README.md | 2 +- infra/charts/feast/Chart.yaml | 2 +- infra/charts/feast/README.md | 6 +++--- infra/charts/feast/charts/feature-server/Chart.yaml | 4 ++-- infra/charts/feast/charts/feature-server/README.md | 4 ++-- infra/charts/feast/charts/feature-server/values.yaml | 2 +- .../feast/charts/transformation-service/Chart.yaml | 4 ++-- .../feast/charts/transformation-service/README.md | 4 ++-- .../feast/charts/transformation-service/values.yaml | 2 +- infra/charts/feast/requirements.yaml | 4 ++-- java/pom.xml | 2 +- 13 files changed, 30 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ef9d0ec369..dcf60282d83 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## [0.21.1](https://github.com/feast-dev/feast/compare/v0.21.0...v0.21.1) (2022-05-17) + + +### Bug Fixes + +* Add S3FS dependency (which Dask depends on for S3 files) ([#2701](https://github.com/feast-dev/feast/issues/2701)) ([1f893f1](https://github.com/feast-dev/feast/commit/1f893f1f6c60927616f2edc9687059a1254562ab)) +* Fix broken roadmap links ([#2690](https://github.com/feast-dev/feast/issues/2690)) ([079395a](https://github.com/feast-dev/feast/commit/079395ab09e9ed6e8546a24b88815d6aa22c9ac7)) +* Fix issue when user specifies a port for feast ui ([#2692](https://github.com/feast-dev/feast/issues/2692)) ([00a9de9](https://github.com/feast-dev/feast/commit/00a9de92b818723acaf843f2d1e433d194949ad8)) +* Python server is not correctly starting in integration tests ([#2706](https://github.com/feast-dev/feast/issues/2706)) ([4525336](https://github.com/feast-dev/feast/commit/45253366d09a69385d0e688b6cb017119d31883e)) +* Support push sources in stream feature views ([#2704](https://github.com/feast-dev/feast/issues/2704)) ([6531685](https://github.com/feast-dev/feast/commit/65316859662fbb857d5158c491ed9bfbb717a141)) + # [0.21.0](https://github.com/feast-dev/feast/compare/v0.20.0...v0.21.0) (2022-05-13) diff --git a/infra/charts/feast-python-server/Chart.yaml b/infra/charts/feast-python-server/Chart.yaml index bd0140485c4..60b2e06d2c7 100644 --- a/infra/charts/feast-python-server/Chart.yaml +++ b/infra/charts/feast-python-server/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: feast-python-server description: Feast Feature Server in Python type: application -version: 0.21.0 +version: 0.21.1 keywords: - machine learning - big data diff --git a/infra/charts/feast-python-server/README.md b/infra/charts/feast-python-server/README.md index af844bf7d35..21487a9658d 100644 --- a/infra/charts/feast-python-server/README.md +++ b/infra/charts/feast-python-server/README.md @@ -1,6 +1,6 @@ # feast-python-server -![Version: 0.21.0](https://img.shields.io/badge/Version-0.21.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) +![Version: 0.21.1](https://img.shields.io/badge/Version-0.21.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) Feast Feature Server in Python diff --git a/infra/charts/feast/Chart.yaml b/infra/charts/feast/Chart.yaml index bf1020ffa28..cb235b2ad0a 100644 --- a/infra/charts/feast/Chart.yaml +++ b/infra/charts/feast/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v1 description: Feature store for machine learning name: feast -version: 0.21.0 +version: 0.21.1 keywords: - machine learning - big data diff --git a/infra/charts/feast/README.md b/infra/charts/feast/README.md index 8d2865f9e09..98625344e0b 100644 --- a/infra/charts/feast/README.md +++ b/infra/charts/feast/README.md @@ -8,7 +8,7 @@ This repo contains Helm charts for Feast components that are being installed on ## Chart: Feast -Feature store for machine learning Current chart version is `0.21.0` +Feature store for machine learning Current chart version is `0.21.1` ## Installation @@ -55,8 +55,8 @@ For more details, please see: https://docs.feast.dev/how-to-guides/running-feast | Repository | Name | Version | |------------|------|---------| | https://charts.helm.sh/stable | redis | 10.5.6 | -| https://feast-helm-charts.storage.googleapis.com | feature-server(feature-server) | 0.21.0 | -| https://feast-helm-charts.storage.googleapis.com | transformation-service(transformation-service) | 0.21.0 | +| https://feast-helm-charts.storage.googleapis.com | feature-server(feature-server) | 0.21.1 | +| https://feast-helm-charts.storage.googleapis.com | transformation-service(transformation-service) | 0.21.1 | ## Values diff --git a/infra/charts/feast/charts/feature-server/Chart.yaml b/infra/charts/feast/charts/feature-server/Chart.yaml index 812719b5f09..5ee50905ead 100644 --- a/infra/charts/feast/charts/feature-server/Chart.yaml +++ b/infra/charts/feast/charts/feature-server/Chart.yaml @@ -1,8 +1,8 @@ apiVersion: v1 description: "Feast Feature Server: Online feature serving service for Feast" name: feature-server -version: 0.21.0 -appVersion: v0.21.0 +version: 0.21.1 +appVersion: v0.21.1 keywords: - machine learning - big data diff --git a/infra/charts/feast/charts/feature-server/README.md b/infra/charts/feast/charts/feature-server/README.md index 5577b94dcf1..3ee88859916 100644 --- a/infra/charts/feast/charts/feature-server/README.md +++ b/infra/charts/feast/charts/feature-server/README.md @@ -1,6 +1,6 @@ # feature-server -![Version: 0.21.0](https://img.shields.io/badge/Version-0.21.0-informational?style=flat-square) ![AppVersion: v0.21.0](https://img.shields.io/badge/AppVersion-v0.21.0-informational?style=flat-square) +![Version: 0.21.1](https://img.shields.io/badge/Version-0.21.1-informational?style=flat-square) ![AppVersion: v0.21.1](https://img.shields.io/badge/AppVersion-v0.21.1-informational?style=flat-square) Feast Feature Server: Online feature serving service for Feast @@ -17,7 +17,7 @@ Feast Feature Server: Online feature serving service for Feast | envOverrides | object | `{}` | Extra environment variables to set | | image.pullPolicy | string | `"IfNotPresent"` | Image pull policy | | image.repository | string | `"feastdev/feature-server-java"` | Docker image for Feature Server repository | -| image.tag | string | `"0.21.0"` | Image tag | +| image.tag | string | `"0.21.1"` | Image tag | | ingress.grpc.annotations | object | `{}` | Extra annotations for the ingress | | ingress.grpc.auth.enabled | bool | `false` | Flag to enable auth | | ingress.grpc.class | string | `"nginx"` | Which ingress controller to use | diff --git a/infra/charts/feast/charts/feature-server/values.yaml b/infra/charts/feast/charts/feature-server/values.yaml index 457e83875af..85393a1d240 100644 --- a/infra/charts/feast/charts/feature-server/values.yaml +++ b/infra/charts/feast/charts/feature-server/values.yaml @@ -5,7 +5,7 @@ image: # image.repository -- Docker image for Feature Server repository repository: feastdev/feature-server-java # image.tag -- Image tag - tag: 0.21.0 + tag: 0.21.1 # image.pullPolicy -- Image pull policy pullPolicy: IfNotPresent diff --git a/infra/charts/feast/charts/transformation-service/Chart.yaml b/infra/charts/feast/charts/transformation-service/Chart.yaml index 7922a648c85..45d5d85b763 100644 --- a/infra/charts/feast/charts/transformation-service/Chart.yaml +++ b/infra/charts/feast/charts/transformation-service/Chart.yaml @@ -1,8 +1,8 @@ apiVersion: v1 description: "Transformation service: to compute on-demand features" name: transformation-service -version: 0.21.0 -appVersion: v0.21.0 +version: 0.21.1 +appVersion: v0.21.1 keywords: - machine learning - big data diff --git a/infra/charts/feast/charts/transformation-service/README.md b/infra/charts/feast/charts/transformation-service/README.md index 73a738f1ed6..c904c10dddd 100644 --- a/infra/charts/feast/charts/transformation-service/README.md +++ b/infra/charts/feast/charts/transformation-service/README.md @@ -1,6 +1,6 @@ # transformation-service -![Version: 0.21.0](https://img.shields.io/badge/Version-0.21.0-informational?style=flat-square) ![AppVersion: v0.21.0](https://img.shields.io/badge/AppVersion-v0.21.0-informational?style=flat-square) +![Version: 0.21.1](https://img.shields.io/badge/Version-0.21.1-informational?style=flat-square) ![AppVersion: v0.21.1](https://img.shields.io/badge/AppVersion-v0.21.1-informational?style=flat-square) Transformation service: to compute on-demand features @@ -13,7 +13,7 @@ Transformation service: to compute on-demand features | envOverrides | object | `{}` | Extra environment variables to set | | image.pullPolicy | string | `"IfNotPresent"` | Image pull policy | | image.repository | string | `"feastdev/feature-transformation-server"` | Docker image for Transformation Server repository | -| image.tag | string | `"0.21.0"` | Image tag | +| image.tag | string | `"0.21.1"` | Image tag | | nodeSelector | object | `{}` | Node labels for pod assignment | | podLabels | object | `{}` | Labels to be added to Feast Serving pods | | replicaCount | int | `1` | Number of pods that will be created | diff --git a/infra/charts/feast/charts/transformation-service/values.yaml b/infra/charts/feast/charts/transformation-service/values.yaml index 3d111984e51..a2296ae3c98 100644 --- a/infra/charts/feast/charts/transformation-service/values.yaml +++ b/infra/charts/feast/charts/transformation-service/values.yaml @@ -5,7 +5,7 @@ image: # image.repository -- Docker image for Transformation Server repository repository: feastdev/feature-transformation-server # image.tag -- Image tag - tag: 0.21.0 + tag: 0.21.1 # image.pullPolicy -- Image pull policy pullPolicy: IfNotPresent diff --git a/infra/charts/feast/requirements.yaml b/infra/charts/feast/requirements.yaml index ad0cb850bb3..78c62eb12cc 100644 --- a/infra/charts/feast/requirements.yaml +++ b/infra/charts/feast/requirements.yaml @@ -1,12 +1,12 @@ dependencies: - name: feature-server alias: feature-server - version: 0.21.0 + version: 0.21.1 condition: feature-server.enabled repository: https://feast-helm-charts.storage.googleapis.com - name: transformation-service alias: transformation-service - version: 0.21.0 + version: 0.21.1 condition: transformation-service.enabled repository: https://feast-helm-charts.storage.googleapis.com - name: redis diff --git a/java/pom.xml b/java/pom.xml index 3b794d97ed0..5609751a926 100644 --- a/java/pom.xml +++ b/java/pom.xml @@ -38,7 +38,7 @@ - 0.21.0 + 0.21.1 https://github.com/feast-dev/feast UTF-8