Skip to content

Commit 3a4edcd

Browse files
Merge branch 'master' into feat/databricks-uc-provider
2 parents 0800f13 + 3500349 commit 3a4edcd

6 files changed

Lines changed: 23 additions & 40 deletions

File tree

.github/workflows/nightly_python_sdk_release.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,14 @@ jobs:
5555
set -e
5656
echo "$SEMANTIC_OUTPUT"
5757
58-
BASE_VERSION=$(echo "$SEMANTIC_OUTPUT" | grep 'The next release version is' | sed -E 's/.* ([[:digit:].]+)$/\1/' | tail -n 1)
58+
BASE_VERSION=$(printf '%s\n' "$SEMANTIC_OUTPUT" | sed -nE 's/.*The next release version is ([[:digit:].]+)$/\1/p' | tail -n 1)
5959
if [[ -z "$BASE_VERSION" ]]; then
6060
echo "Could not determine a semantic-release next version (exit code: ${SEMANTIC_STATUS}); falling back to next patch after latest stable tag."
61-
source infra/scripts/setup-common-functions.sh
62-
LATEST_TAG=$(get_tag_release -s)
61+
LATEST_TAG=$(git tag -l 'v[0-9]*.[0-9]*.[0-9]*' --sort=-v:refname | sed -nE '/^v[0-9]+\.[0-9]+\.[0-9]+$/{p;q;}')
62+
if [[ -z "$LATEST_TAG" ]]; then
63+
echo "Could not determine latest stable tag."
64+
exit 1
65+
fi
6366
LATEST_VERSION="${LATEST_TAG#v}"
6467
IFS=. read -r MAJOR MINOR PATCH <<< "$LATEST_VERSION"
6568
BASE_VERSION="${MAJOR}.${MINOR}.$((PATCH + 1))"

Makefile

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -813,13 +813,12 @@ build-helm-docs: ## Build helm docs
813813
# Note: these require node and yarn to be installed
814814

815815
build-ui: ## Build Feast UI
816-
cd $(ROOT_DIR)/sdk/python/feast/ui && yarn upgrade @feast-dev/feast-ui --latest && yarn install && npm run build --omit=dev
817-
818-
build-ui-local: ## Build Feast UI locally
819816
cd $(ROOT_DIR)/ui && yarn install && npm run build --omit=dev
820817
rm -rf $(ROOT_DIR)/sdk/python/feast/ui/build
821818
cp -r $(ROOT_DIR)/ui/build $(ROOT_DIR)/sdk/python/feast/ui/
822819

820+
build-ui-local: build-ui ## Build Feast UI locally
821+
823822
format-ui: ## Format Feast UI
824823
cd $(ROOT_DIR)/ui && NPM_TOKEN= yarn install && NPM_TOKEN= yarn format
825824

infra/feast-operator/bundle/manifests/openlineage-secret_v1_secret.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ kind: Secret
33
metadata:
44
name: openlineage-secret
55
stringData:
6-
api_key: your-marquez-api-key
6+
api_key: your-marquez-api-key # pragma: allowlist secret

sdk/python/feast/api/registry/rest/rest_registry_server.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ def __init__(self, store: FeatureStore):
7878

7979
registry_cfg = getattr(store.config, "registry", None)
8080
mcp_cfg = getattr(registry_cfg, "mcp", None)
81-
if mcp_cfg and getattr(mcp_cfg, "enabled", False):
81+
if mcp_cfg and getattr(mcp_cfg, "enabled", False) is True:
8282
try:
8383
from fastapi_mcp import FastApiMCP
8484

sdk/python/tests/integration/registration/test_universal_registry.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -273,16 +273,18 @@ def mysql_registry_async(mysql_server):
273273
yield SqlRegistry(registry_config, "project", None)
274274

275275

276-
@pytest.fixture(scope="session")
277-
def sqlite_registry():
276+
@pytest.fixture(scope="function")
277+
def sqlite_registry(tmp_path):
278278
registry_config = SqlRegistryConfig(
279279
registry_type="sql",
280-
path="sqlite://",
280+
path=f"sqlite:///{tmp_path / 'registry.db'}",
281281
cache_ttl_seconds=2,
282282
cache_mode="sync",
283283
)
284284

285-
yield SqlRegistry(registry_config, "project", None)
285+
registry = SqlRegistry(registry_config, "project", None)
286+
yield registry
287+
registry.teardown()
286288

287289

288290
@pytest.fixture(scope="function")

sdk/python/tests/unit/api/test_api_rest_registry_server.py

Lines changed: 7 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -54,33 +54,12 @@ def test_rest_registry_server_initializes_correctly(
5454
assert {"BearerAuth": []} in openapi_schema["security"]
5555

5656

57-
def test_routes_registered_in_app(mock_store_and_registry):
58-
from fastapi.routing import APIRoute
57+
def test_routes_registered_in_app():
58+
from feast.api.registry.rest import register_all_routes
5959

60-
store, _ = mock_store_and_registry
60+
app = MagicMock()
61+
grpc_handler = MagicMock()
62+
server = MagicMock()
63+
register_all_routes(app, grpc_handler, server)
6164

62-
server = RestRegistryServer(store)
63-
route_paths = [
64-
route.path for route in server.app.routes if isinstance(route, APIRoute)
65-
]
66-
assert "/feature_services" in route_paths
67-
assert "/entities" in route_paths
68-
assert "/projects" in route_paths
69-
assert "/data_sources" in route_paths
70-
assert "/saved_datasets" in route_paths
71-
assert "/permissions" in route_paths
72-
assert "/lineage/registry" in route_paths
73-
assert "/lineage/objects/{object_type}/{object_name}" in route_paths
74-
assert "/lineage/complete" in route_paths
75-
assert "/entities/all" in route_paths
76-
assert "/feature_views/all" in route_paths
77-
assert "/data_sources/all" in route_paths
78-
assert "/feature_services/all" in route_paths
79-
assert "/saved_datasets/all" in route_paths
80-
assert "/lineage/registry/all" in route_paths
81-
assert "/lineage/complete/all" in route_paths
82-
assert "/features" in route_paths
83-
assert "/features/all" in route_paths
84-
assert "/features/{feature_view}/{name}" in route_paths
85-
assert "/metrics/resource_counts" in route_paths
86-
assert "/metrics/recently_visited" in route_paths
65+
assert app.include_router.call_count == 13

0 commit comments

Comments
 (0)