From 825897901d5d4493485d96ff06d32254b35022ab Mon Sep 17 00:00:00 2001 From: Alessio Pragliola <83355398+Al-Pragliola@users.noreply.github.com> Date: Mon, 5 May 2025 17:09:56 +0200 Subject: [PATCH 01/44] feat(controller): added reconciliation of inferenceservice url (#960) * feat(controller): added reconciliation to inferenceservice url Signed-off-by: Alessio Pragliola * fix(controller): remove FIt from tests Signed-off-by: Alessio Pragliola * fix(controller): linting issues Signed-off-by: Alessio Pragliola * chore(controller): lower complexity of customproperties check Co-authored-by: Paul Boyd Signed-off-by: Alessio Pragliola <83355398+Al-Pragliola@users.noreply.github.com> * fix(controller): potential nil pointer exception Co-authored-by: Paul Boyd Signed-off-by: Alessio Pragliola * chore(controller): remove sync.Maps as are not needed Signed-off-by: Alessio Pragliola * feat(controller): improve test coverage Signed-off-by: Alessio Pragliola --------- Signed-off-by: Alessio Pragliola Signed-off-by: Alessio Pragliola <83355398+Al-Pragliola@users.noreply.github.com> Co-authored-by: Paul Boyd --- pkg/inferenceservice-controller/controller.go | 77 +++- .../controller_test.go | 331 ++++++++++++++++++ pkg/inferenceservice-controller/suite_test.go | 130 ++++++- 3 files changed, 521 insertions(+), 17 deletions(-) diff --git a/pkg/inferenceservice-controller/controller.go b/pkg/inferenceservice-controller/controller.go index 60986a92d7..ae1779a436 100644 --- a/pkg/inferenceservice-controller/controller.go +++ b/pkg/inferenceservice-controller/controller.go @@ -166,6 +166,27 @@ func (r *InferenceServiceController) Reconcile(ctx context.Context, req ctrl.Req if err != nil { return ctrl.Result{}, fmt.Errorf("unable to find InferenceService with id %s in model registry: %w", mrIsvcId, err) } + + mrCurrentIvcUrl := "" + + if mrIs.CustomProperties != nil { + mrCurrentIvcUrl = (*mrIs.CustomProperties)["url"].MetadataStringValue.GetStringValue() + } + + urlAreDiff := r.checkURLDiff(isvc, mrCurrentIvcUrl) + if urlAreDiff { + err := r.updateMRInferenceService( + mrApiCtx, + log, + mrApi, + isvc, + mrIs, + ) + if err != nil { + return ctrl.Result{}, err + } + } + } else if okRegisteredModelId { // No corresponding InferenceService in model registry, create new one mrIs, err = r.createMRInferenceService(mrApiCtx, log, mrApi, isvc, *servingEnvironment.Id, registeredModelId, modelVersionId) @@ -225,6 +246,18 @@ func (r *InferenceServiceController) SetupWithManager(mgr ctrl.Manager) error { return builder.Complete(r) } +func (r *InferenceServiceController) checkURLDiff(isvc *kservev1beta1.InferenceService, mrIsvcUrl string) bool { + if mrIsvcUrl == "" && isvc.Status.URL == nil { + return false + } + + if isvc.Status.URL == nil { + return true + } + + return mrIsvcUrl != isvc.Status.URL.String() +} + func (r *InferenceServiceController) initModelRegistryService(ctx context.Context, log logr.Logger, name, namespace, url string) (*openapi.APIClient, error) { var err error @@ -334,19 +367,59 @@ func (r *InferenceServiceController) createMRInferenceService( if err != nil { log.Info("Creating new model registry InferenceService", "name", isName, "registeredModelId", registeredModelId, "modelVersionId", modelVersionId) - is, _, err = mr.ModelRegistryServiceAPI.CreateInferenceService(ctx).InferenceServiceCreate(openapi.InferenceServiceCreate{ + isCreate := openapi.InferenceServiceCreate{ DesiredState: openapi.INFERENCESERVICESTATE_DEPLOYED.Ptr(), ModelVersionId: modelVersionIdPtr, Name: &isName, RegisteredModelId: registeredModelId, Runtime: isvc.Spec.Predictor.Model.Runtime, ServingEnvironmentId: servingEnvironmentId, - }).Execute() + } + + if isvc.Status.URL != nil { + isCreate.CustomProperties = &map[string]openapi.MetadataValue{} + + (*isCreate.CustomProperties)["url"] = openapi.MetadataValue{ + MetadataStringValue: openapi.NewMetadataStringValue(isvc.Status.URL.String(), "MetadataStringValue"), + } + } + + is, _, err = mr.ModelRegistryServiceAPI.CreateInferenceService(ctx).InferenceServiceCreate(isCreate).Execute() } return is, err } +func (r *InferenceServiceController) updateMRInferenceService( + ctx context.Context, + log logr.Logger, + mr *openapi.APIClient, + isvc *kservev1beta1.InferenceService, + mrIsvc *openapi.InferenceService, +) error { + log.Info("Updating model registry InferenceService..") + + url := "" + + if isvc.Status.URL != nil { + url = isvc.Status.URL.String() + } + + if mrIsvc.CustomProperties == nil { + mrIsvc.CustomProperties = &map[string]openapi.MetadataValue{} + } + + (*mrIsvc.CustomProperties)["url"] = openapi.MetadataValue{ + MetadataStringValue: openapi.NewMetadataStringValue(url, "MetadataStringValue"), + } + + _, _, err := mr.ModelRegistryServiceAPI.UpdateInferenceService(ctx, *mrIsvc.Id).InferenceServiceUpdate(openapi.InferenceServiceUpdate{ + CustomProperties: mrIsvc.CustomProperties, + }).Execute() + + return err +} + func (r *InferenceServiceController) getOrCreateServingEnvironment(ctx context.Context, log logr.Logger, mr *openapi.APIClient, namespace string) (*openapi.ServingEnvironment, error) { servingEnvironment, _, err := mr.ModelRegistryServiceAPI.FindServingEnvironment(ctx).Name(namespace).Execute() if err != nil { diff --git a/pkg/inferenceservice-controller/controller_test.go b/pkg/inferenceservice-controller/controller_test.go index 7945971e84..c7d0ac7e0b 100644 --- a/pkg/inferenceservice-controller/controller_test.go +++ b/pkg/inferenceservice-controller/controller_test.go @@ -1,12 +1,16 @@ package inferenceservicecontroller_test import ( + "encoding/json" "fmt" + "io" "time" kservev1beta1 "github.com/kserve/kserve/pkg/apis/serving/v1beta1" + "github.com/kubeflow/model-registry/pkg/openapi" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" + "knative.dev/pkg/apis" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/errors" @@ -237,4 +241,331 @@ var _ = Describe("InferenceService Controller", func() { }, 10*time.Second, 1*time.Second).Should(Succeed()) }) }) + + When("An InferenceService have a status.url defined", func() { + It("Should get reconciled in the model registry InferenceService resource", func() { + const InferenceServiceMissingNamePath = "./testdata/inferenceservices/inference-service-missing-name.yaml" + const ModelRegistrySVCPath = "./testdata/deploy/model-registry-svc.yaml" + const namespace = "url-reconcile" + const mrUrl = "http://model-registry.svc.cluster.local:8080" + + ns := &corev1.Namespace{} + + ns.SetName(namespace) + + if err := cli.Create(ctx, ns); err != nil && !errors.IsAlreadyExists(err) { + Fail(err.Error()) + } + + mrSvc := &corev1.Service{} + Expect(ConvertFileToStructuredResource(ModelRegistrySVCPath, mrSvc)).To(Succeed()) + + mrSvc.SetNamespace(namespace) + + if err := cli.Create(ctx, mrSvc); err != nil && !errors.IsAlreadyExists(err) { + Fail(err.Error()) + } + + inferenceService := &kservev1beta1.InferenceService{} + Expect(ConvertFileToStructuredResource(InferenceServiceMissingNamePath, inferenceService)).To(Succeed()) + + inferenceService.SetNamespace(namespace) + + inferenceService.Labels[namespaceLabel] = namespace + + if err := cli.Create(ctx, inferenceService); err != nil && !errors.IsAlreadyExists(err) { + Fail(err.Error()) + } + + Eventually(func() error { + isvc := &kservev1beta1.InferenceService{} + err := cli.Get(ctx, types.NamespacedName{ + Name: inferenceService.Name, + Namespace: inferenceService.Namespace, + }, isvc) + if err != nil { + return err + } + + if isvc.Labels[inferenceServiceIDLabel] != "1" { + return fmt.Errorf("Label for InferenceServiceID is not set, got %s", isvc.Labels[inferenceServiceIDLabel]) + } + + return nil + }, 10*time.Second, 1*time.Second).Should(Succeed()) + + restIsvc := &openapi.InferenceService{} + + resp, err := mrMockServer.Client().Get(mrUrl + "/api/model_registry/v1alpha3/inference_services/1") + Expect(err).To(BeNil()) + + //nolint:errcheck + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + Expect(err).To(BeNil()) + + err = json.Unmarshal(body, &restIsvc) + Expect(err).To(BeNil()) + Expect(restIsvc.CustomProperties).To(BeNil()) + + url, err := apis.ParseURL("https://example.com") + Expect(err).To(BeNil()) + + err = cli.Get(ctx, types.NamespacedName{Name: inferenceService.Name, Namespace: inferenceService.Namespace}, inferenceService) + Expect(err).To(BeNil()) + + inferenceService.Status.URL = url + + if err := cli.Status().Update(ctx, inferenceService); err != nil { + Fail(err.Error()) + } + + Eventually(func() error { + resp, err := mrMockServer.Client().Get(mrUrl + "/api/model_registry/v1alpha3/inference_services/1") + Expect(err).To(BeNil()) + + //nolint:errcheck + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + Expect(err).To(BeNil()) + + err = json.Unmarshal(body, &restIsvc) + Expect(err).To(BeNil()) + + if restIsvc.CustomProperties == nil { + return fmt.Errorf("InferenceService URL is not set") + } + + if (*restIsvc.CustomProperties)["url"].MetadataStringValue.GetStringValue() != url.String() { + return fmt.Errorf("InferenceService URL is not set correctly, got %s, want %s", (*restIsvc.CustomProperties)["url"].MetadataStringValue.GetStringValue(), url.String()) + } + + return nil + }, 20*time.Second, 1*time.Second).Should(Succeed()) + }) + + It("Should not set the model registry InferenceService url if the status.url is nil", func() { + const InferenceServiceMissingNamePath = "./testdata/inferenceservices/inference-service-missing-name.yaml" + const ModelRegistrySVCPath = "./testdata/deploy/model-registry-svc.yaml" + const namespace = "url-reconcile-empty-status-url" + const mrUrl = "http://model-registry.svc.cluster.local:8080" + + ns := &corev1.Namespace{} + + ns.SetName(namespace) + + if err := cli.Create(ctx, ns); err != nil && !errors.IsAlreadyExists(err) { + Fail(err.Error()) + } + + mrSvc := &corev1.Service{} + Expect(ConvertFileToStructuredResource(ModelRegistrySVCPath, mrSvc)).To(Succeed()) + + mrSvc.SetNamespace(namespace) + + if err := cli.Create(ctx, mrSvc); err != nil && !errors.IsAlreadyExists(err) { + Fail(err.Error()) + } + + inferenceService := &kservev1beta1.InferenceService{} + Expect(ConvertFileToStructuredResource(InferenceServiceMissingNamePath, inferenceService)).To(Succeed()) + + inferenceService.SetNamespace(namespace) + + inferenceService.Labels[namespaceLabel] = namespace + + if err := cli.Create(ctx, inferenceService); err != nil && !errors.IsAlreadyExists(err) { + Fail(err.Error()) + } + + Eventually(func() error { + isvc := &kservev1beta1.InferenceService{} + err := cli.Get(ctx, types.NamespacedName{ + Name: inferenceService.Name, + Namespace: inferenceService.Namespace, + }, isvc) + if err != nil { + return err + } + + if isvc.Labels[inferenceServiceIDLabel] != "1" { + return fmt.Errorf("Label for InferenceServiceID is not set, got %s", isvc.Labels[inferenceServiceIDLabel]) + } + + return nil + }, 10*time.Second, 1*time.Second).Should(Succeed()) + + restIsvc := &openapi.InferenceService{} + + err := cli.Get(ctx, types.NamespacedName{Name: inferenceService.Name, Namespace: inferenceService.Namespace}, inferenceService) + Expect(err).To(BeNil()) + + inferenceService.Status.URL = nil + + if err := cli.Status().Update(ctx, inferenceService); err != nil { + Fail(err.Error()) + } + + Eventually(func() error { + resp, err := mrMockServer.Client().Get(mrUrl + "/api/model_registry/v1alpha3/inference_services/1") + Expect(err).To(BeNil()) + + //nolint:errcheck + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + Expect(err).To(BeNil()) + + err = json.Unmarshal(body, &restIsvc) + Expect(err).To(BeNil()) + + if restIsvc.CustomProperties != nil { + return fmt.Errorf("InferenceService URL should not be set") + } + + return nil + }, 20*time.Second, 1*time.Second).Should(Succeed()) + }) + + It("Should update the model registry InferenceService url if the status.url is updated", func() { + const InferenceServiceMissingNamePath = "./testdata/inferenceservices/inference-service-missing-name.yaml" + const ModelRegistrySVCPath = "./testdata/deploy/model-registry-svc.yaml" + const namespace = "url-reconcile-update-status-url" + const mrUrl = "http://model-registry.svc.cluster.local:8080" + + ns := &corev1.Namespace{} + + ns.SetName(namespace) + + if err := cli.Create(ctx, ns); err != nil && !errors.IsAlreadyExists(err) { + Fail(err.Error()) + } + + mrSvc := &corev1.Service{} + Expect(ConvertFileToStructuredResource(ModelRegistrySVCPath, mrSvc)).To(Succeed()) + + mrSvc.SetNamespace(namespace) + + if err := cli.Create(ctx, mrSvc); err != nil && !errors.IsAlreadyExists(err) { + Fail(err.Error()) + } + + inferenceService := &kservev1beta1.InferenceService{} + Expect(ConvertFileToStructuredResource(InferenceServiceMissingNamePath, inferenceService)).To(Succeed()) + + inferenceService.SetNamespace(namespace) + + inferenceService.Labels[namespaceLabel] = namespace + + if err := cli.Create(ctx, inferenceService); err != nil && !errors.IsAlreadyExists(err) { + Fail(err.Error()) + } + + Eventually(func() error { + isvc := &kservev1beta1.InferenceService{} + err := cli.Get(ctx, types.NamespacedName{ + Name: inferenceService.Name, + Namespace: inferenceService.Namespace, + }, isvc) + if err != nil { + return err + } + + if isvc.Labels[inferenceServiceIDLabel] != "1" { + return fmt.Errorf("Label for InferenceServiceID is not set, got %s", isvc.Labels[inferenceServiceIDLabel]) + } + + return nil + }, 10*time.Second, 1*time.Second).Should(Succeed()) + + restIsvc := &openapi.InferenceService{} + + resp, err := mrMockServer.Client().Get(mrUrl + "/api/model_registry/v1alpha3/inference_services/1") + Expect(err).To(BeNil()) + + //nolint:errcheck + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + Expect(err).To(BeNil()) + + err = json.Unmarshal(body, &restIsvc) + Expect(err).To(BeNil()) + Expect(restIsvc.CustomProperties).To(BeNil()) + + url, err := apis.ParseURL("https://example.com") + Expect(err).To(BeNil()) + + err = cli.Get(ctx, types.NamespacedName{Name: inferenceService.Name, Namespace: inferenceService.Namespace}, inferenceService) + Expect(err).To(BeNil()) + + inferenceService.Status.URL = url + + if err := cli.Status().Update(ctx, inferenceService); err != nil { + Fail(err.Error()) + } + + Eventually(func() error { + resp, err := mrMockServer.Client().Get(mrUrl + "/api/model_registry/v1alpha3/inference_services/1") + Expect(err).To(BeNil()) + + //nolint:errcheck + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + Expect(err).To(BeNil()) + + err = json.Unmarshal(body, &restIsvc) + Expect(err).To(BeNil()) + + if restIsvc.CustomProperties == nil { + return fmt.Errorf("InferenceService URL is not set") + } + + if (*restIsvc.CustomProperties)["url"].MetadataStringValue.GetStringValue() != url.String() { + return fmt.Errorf("InferenceService URL is not set correctly, got %s, want %s", (*restIsvc.CustomProperties)["url"].MetadataStringValue.GetStringValue(), url.String()) + } + + return nil + }, 20*time.Second, 1*time.Second).Should(Succeed()) + + url, err = apis.ParseURL("https://example-updated.com") + Expect(err).To(BeNil()) + + err = cli.Get(ctx, types.NamespacedName{Name: inferenceService.Name, Namespace: inferenceService.Namespace}, inferenceService) + Expect(err).To(BeNil()) + + inferenceService.Status.URL = url + + if err := cli.Status().Update(ctx, inferenceService); err != nil { + Fail(err.Error()) + } + + Eventually(func() error { + resp, err := mrMockServer.Client().Get(mrUrl + "/api/model_registry/v1alpha3/inference_services/1") + Expect(err).To(BeNil()) + + //nolint:errcheck + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + Expect(err).To(BeNil()) + + err = json.Unmarshal(body, &restIsvc) + Expect(err).To(BeNil()) + + if restIsvc.CustomProperties == nil { + return fmt.Errorf("InferenceService URL is not set") + } + + if (*restIsvc.CustomProperties)["url"].MetadataStringValue.GetStringValue() != url.String() { + return fmt.Errorf("InferenceService URL is not set correctly, got %s, want %s", (*restIsvc.CustomProperties)["url"].MetadataStringValue.GetStringValue(), url.String()) + } + + return nil + }, 20*time.Second, 1*time.Second).Should(Succeed()) + }) + }) }) diff --git a/pkg/inferenceservice-controller/suite_test.go b/pkg/inferenceservice-controller/suite_test.go index cf0798bb5f..1b40cd6b83 100644 --- a/pkg/inferenceservice-controller/suite_test.go +++ b/pkg/inferenceservice-controller/suite_test.go @@ -2,6 +2,7 @@ package inferenceservicecontroller_test import ( "context" + "encoding/json" "fmt" "io" "net/http" @@ -15,6 +16,7 @@ import ( kservev1beta1 "github.com/kserve/kserve/pkg/apis/serving/v1beta1" inferenceservicecontroller "github.com/kubeflow/model-registry/pkg/inferenceservice-controller" + "github.com/kubeflow/model-registry/pkg/openapi" "go.uber.org/zap/zapcore" corev1 "k8s.io/api/core/v1" authv1 "k8s.io/api/rbac/v1" @@ -177,6 +179,9 @@ var _ = AfterSuite(func() { func ModelRegistryDefaultMockServer() *httptest.Server { handler := http.NewServeMux() + servingEnvironments := make(map[string]*openapi.ServingEnvironment) + inferenceServices := make(map[string]*openapi.InferenceService) + handler.HandleFunc("/api/model_registry/v1alpha3/serving_environments", func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") @@ -187,14 +192,35 @@ func ModelRegistryDefaultMockServer() *httptest.Server { } if r.Method == http.MethodPost { + id := "1" + + senv := &openapi.ServingEnvironment{} + + senvJson, err := io.ReadAll(r.Body) + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + } + + if err := json.Unmarshal(senvJson, &senv); err != nil { + w.WriteHeader(http.StatusInternalServerError) + + return + } + + senv.Id = &id + + servingEnvironments[id] = senv + w.WriteHeader(http.StatusCreated) - res := `{ - "id": "1", - "name": "default" - }` + res, err := json.Marshal(senv) + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + + return + } - _, err := w.Write([]byte(res)) + _, err = w.Write([]byte(res)) if err != nil { w.WriteHeader(http.StatusInternalServerError) } @@ -207,14 +233,66 @@ func ModelRegistryDefaultMockServer() *httptest.Server { handler.HandleFunc("/api/model_registry/v1alpha3/inference_services/1", func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") + id := "1" + + if r.Method == http.MethodGet { + isvc, ok := inferenceServices[id] + if !ok { + w.WriteHeader(http.StatusNotFound) + + return + } + + res, err := json.Marshal(isvc) + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + + return + } + + _, err = w.Write([]byte(res)) + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + + return + } + + return + } + + if r.Method == http.MethodPatch { + isvc := &openapi.InferenceService{} + + isvcvJson, err := io.ReadAll(r.Body) + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + } + + if err := json.Unmarshal(isvcvJson, &isvc); err != nil { + w.WriteHeader(http.StatusInternalServerError) + + return + } + + isvc.Id = &id + + inferenceServices[id] = isvc - res := `{ - "id": "1" - }` + w.WriteHeader(http.StatusCreated) + + res, err := json.Marshal(isvc) + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + + return + } + + _, err = w.Write([]byte(res)) + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + } - _, err := w.Write([]byte(res)) - if err != nil { - w.WriteHeader(http.StatusInternalServerError) + return } }) @@ -228,13 +306,35 @@ func ModelRegistryDefaultMockServer() *httptest.Server { } if r.Method == http.MethodPost { + id := "1" + + isvc := &openapi.InferenceService{} + + isvcvJson, err := io.ReadAll(r.Body) + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + } + + if err := json.Unmarshal(isvcvJson, &isvc); err != nil { + w.WriteHeader(http.StatusInternalServerError) + + return + } + + isvc.Id = &id + + inferenceServices[id] = isvc + w.WriteHeader(http.StatusCreated) - res := `{ - "id": "1" - }` + res, err := json.Marshal(isvc) + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + + return + } - _, err := w.Write([]byte(res)) + _, err = w.Write([]byte(res)) if err != nil { w.WriteHeader(http.StatusInternalServerError) } From 095ec5346fc9caac3323284600630828d5292345 Mon Sep 17 00:00:00 2001 From: Debarati Basu-Nag Date: Mon, 5 May 2025 11:12:55 -0400 Subject: [PATCH 02/44] =?UTF-8?q?specify=20python=20version=20range=20for?= =?UTF-8?q?=20ray=20and=20add=20importorskip=20for=20ray=20in=20=E2=80=A6?= =?UTF-8?q?=20(#1033)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * specify python version range for ray and add importorskip for ray in test Signed-off-by: Debarati Basu-Nag * Update clients/python/pyproject.toml Co-authored-by: Matteo Mortari Signed-off-by: Debarati Basu-Nag --------- Signed-off-by: Debarati Basu-Nag Co-authored-by: Matteo Mortari --- clients/python/poetry.lock | 14 +++++++++++--- clients/python/pyproject.toml | 5 ++++- clients/python/tests/test_client.py | 3 +-- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/clients/python/poetry.lock b/clients/python/poetry.lock index fc16a50378..9575daf22a 100644 --- a/clients/python/poetry.lock +++ b/clients/python/poetry.lock @@ -142,6 +142,7 @@ files = [ {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"}, {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"}, ] +markers = {dev = "python_version < \"3.13\""} [package.dependencies] frozenlist = ">=1.1.0" @@ -217,6 +218,7 @@ files = [ {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, ] +markers = {dev = "python_version < \"3.13\""} [package.extras] dev = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "six", "sphinx", "sphinx-notfound-page", "zope.interface"] @@ -627,7 +629,7 @@ files = [ {file = "filelock-3.13.1-py3-none-any.whl", hash = "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c"}, {file = "filelock-3.13.1.tar.gz", hash = "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e"}, ] -markers = {main = "extra == \"hf\""} +markers = {main = "extra == \"hf\"", dev = "python_version < \"3.13\""} [package.extras] docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.24)"] @@ -720,6 +722,7 @@ files = [ {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"}, {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"}, ] +markers = {dev = "python_version < \"3.13\""} [[package]] name = "fsspec" @@ -920,6 +923,7 @@ description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.7" groups = ["dev"] +markers = "python_version < \"3.13\"" files = [ {file = "jsonschema-4.17.3-py3-none-any.whl", hash = "sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6"}, {file = "jsonschema-4.17.3.tar.gz", hash = "sha256:0f864437ab8b6076ba6707453ef8f98a6a0d512a80e93f8abdb676f737ecb60d"}, @@ -1088,6 +1092,7 @@ description = "MessagePack serializer" optional = false python-versions = ">=3.8" groups = ["dev"] +markers = "python_version < \"3.13\"" files = [ {file = "msgpack-1.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7ad442d527a7e358a469faf43fda45aaf4ac3249c8310a82f0ccff9164e5dccd"}, {file = "msgpack-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:74bed8f63f8f14d75eec75cf3d04ad581da6b914001b474a5d3cd3372c8cc27d"}, @@ -1551,6 +1556,7 @@ description = "" optional = false python-versions = ">=3.9" groups = ["dev"] +markers = "python_version < \"3.13\"" files = [ {file = "protobuf-6.30.0-cp310-abi3-win32.whl", hash = "sha256:7337d76d8efe65ee09ee566b47b5914c517190196f414e5418fa236dfd1aed3e"}, {file = "protobuf-6.30.0-cp310-abi3-win_amd64.whl", hash = "sha256:9b33d51cc95a7ec4f407004c8b744330b6911a37a782e2629c67e1e8ac41318f"}, @@ -1720,6 +1726,7 @@ description = "Persistent/Functional/Immutable data structures" optional = false python-versions = ">=3.8" groups = ["dev"] +markers = "python_version < \"3.13\"" files = [ {file = "pyrsistent-0.20.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8c3aba3e01235221e5b229a6c05f585f344734bd1ad42a8ac51493d74722bbce"}, {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1beb78af5423b879edaf23c5591ff292cf7c33979734c99aa66d5914ead880f"}, @@ -1892,7 +1899,7 @@ files = [ {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, ] -markers = {main = "extra == \"hf\""} +markers = {main = "extra == \"hf\"", dev = "python_version < \"3.13\""} [[package]] name = "ray" @@ -1901,6 +1908,7 @@ description = "Ray provides a simple, universal API for building distributed app optional = false python-versions = ">=3.9" groups = ["dev"] +markers = "python_version < \"3.13\"" files = [ {file = "ray-2.44.1-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:7d83999ead98bed7e70afddcda870cc1684773cb888e90768ce1a4c72c5fe009"}, {file = "ray-2.44.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6f221b1426d8657ce0c24508d5ff11cabc4a8c40a833c8c5bb63e2217f37cfd9"}, @@ -2765,4 +2773,4 @@ olot = ["olot"] [metadata] lock-version = "2.1" python-versions = ">= 3.9, < 4.0" -content-hash = "dce978a008624eb0606f45d3f630d42443e3da92a033eb519c5a6cc0060cbafb" +content-hash = "6ab0a701612b40cef582568f8be07a54a926ebcf6f0b00557187b2046f42ba92" diff --git a/clients/python/pyproject.toml b/clients/python/pyproject.toml index 97aaffa60f..b0ef0cc006 100644 --- a/clients/python/pyproject.toml +++ b/clients/python/pyproject.toml @@ -50,7 +50,10 @@ coverage = { extras = ["toml"], version = "^7.3.2" } pytest-cov = ">=4.1,<7.0" ruff = ">=0.5.2,<0.12.0" mypy = "^1.7.0" -ray = "^2.43.0" +# atm Ray is only available <3.13, so we will E2E test using Ray in compatible py environments. +ray = [ + {version = "^2.43.0", python = ">=3.9, <3.13"} +] uvloop = "^0.21.0" pytest-asyncio = ">=0.23.7,<0.27.0" requests = "^2.32.2" diff --git a/clients/python/tests/test_client.py b/clients/python/tests/test_client.py index 93fe592ec6..b3879dcfa1 100644 --- a/clients/python/tests/test_client.py +++ b/clients/python/tests/test_client.py @@ -843,8 +843,7 @@ async def test_custom_async_runner_with_ray( client_attrs: dict[str, any], client: ModelRegistry ): import asyncio - - import ray + ray = pytest.importorskip("ray") import uvloop # Check to make sure the uvloop event loop is running From 8b07b60d30749b86ea4683dd50c8831150394b58 Mon Sep 17 00:00:00 2001 From: Milos Grubjesic Date: Tue, 6 May 2025 06:57:37 +0200 Subject: [PATCH 03/44] add company to model registry adopters (#1068) * add company to model registry adopters Signed-off-by: milosjava * add more details and fixed formatting Signed-off-by: milosjava --------- Signed-off-by: milosjava --- ADOPTERS.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ADOPTERS.md b/ADOPTERS.md index 258d9cec6d..728c902fb1 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -2,6 +2,7 @@ Below are the adopters of the Model Registry project. If you are using Model Registry, please add your name to the list by submitting a pull request: this will help foster the Kubeflow community. Kindly ensure the list remains in alphabetical order. -| Organization | Contact (GitHub User Name) | Environment | Description of Use | -| ------------- | ------------- | ------------- | ------------- | -| | | Production/Testing/Experimenting/etc | | +| Organization | Contact (GitHub User Name) | Environment | Description of Use | +|-------------------------------|--------------------------------------------|--------------------------------------------|-----------------------------------------------------------------------| +| [Pepsico](https://www.pepsico.com/) | [@milosjava](https://github.com/milosjava) | Experimenting | Evaluating a transition from Azure Model Registry to Kubeflow Model Registry | +| | | Production/Testing/Experimenting/etc | | From 65a2e07acb041d8744651bdbfa719d4ca276762c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 May 2025 10:49:37 +0000 Subject: [PATCH 04/44] build(deps-dev): bump ray from 2.44.1 to 2.45.0 in /clients/python (#1062) Bumps [ray](https://github.com/ray-project/ray) from 2.44.1 to 2.45.0. - [Release notes](https://github.com/ray-project/ray/releases) - [Commits](https://github.com/ray-project/ray/compare/ray-2.44.1...ray-2.45.0) --- updated-dependencies: - dependency-name: ray dependency-version: 2.45.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- clients/python/poetry.lock | 66 +++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/clients/python/poetry.lock b/clients/python/poetry.lock index 9575daf22a..1056af7dbd 100644 --- a/clients/python/poetry.lock +++ b/clients/python/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.1.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.1 and should not be changed by hand. [[package]] name = "aiohappyeyeballs" @@ -137,12 +137,11 @@ version = "1.3.1" description = "aiosignal: a list of registered asynchronous callbacks" optional = false python-versions = ">=3.7" -groups = ["main", "dev"] +groups = ["main"] files = [ {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"}, {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"}, ] -markers = {dev = "python_version < \"3.13\""} [package.dependencies] frozenlist = ">=1.1.0" @@ -642,7 +641,7 @@ version = "1.4.1" description = "A list-like structure which implements collections.abc.MutableSequence" optional = false python-versions = ">=3.8" -groups = ["main", "dev"] +groups = ["main"] files = [ {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"}, {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"}, @@ -722,7 +721,6 @@ files = [ {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"}, {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"}, ] -markers = {dev = "python_version < \"3.13\""} [[package]] name = "fsspec" @@ -859,7 +857,7 @@ description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" groups = ["docs"] -markers = "python_version == \"3.9\"" +markers = "python_version < \"3.10\"" files = [ {file = "importlib_metadata-7.0.0-py3-none-any.whl", hash = "sha256:d97503976bb81f40a193d41ee6570868479c69d5068651eb039c40d850c59d67"}, {file = "importlib_metadata-7.0.0.tar.gz", hash = "sha256:7fc841f8b8332803464e5dc1c63a2e59121f46ca186c0e2e182e80bf8c1319f7"}, @@ -1903,40 +1901,42 @@ markers = {main = "extra == \"hf\"", dev = "python_version < \"3.13\""} [[package]] name = "ray" -version = "2.44.1" +version = "2.45.0" description = "Ray provides a simple, universal API for building distributed applications." optional = false python-versions = ">=3.9" groups = ["dev"] markers = "python_version < \"3.13\"" files = [ - {file = "ray-2.44.1-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:7d83999ead98bed7e70afddcda870cc1684773cb888e90768ce1a4c72c5fe009"}, - {file = "ray-2.44.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6f221b1426d8657ce0c24508d5ff11cabc4a8c40a833c8c5bb63e2217f37cfd9"}, - {file = "ray-2.44.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:3a3db83c54085535bed9b4861d871f6527c5df61532bf7d2285701485de8968f"}, - {file = "ray-2.44.1-cp310-cp310-manylinux2014_x86_64.whl", hash = "sha256:18073261c09811d5faefc918abbd8a6bf5f4968277eeae6fbc0992e3724d1496"}, - {file = "ray-2.44.1-cp310-cp310-win_amd64.whl", hash = "sha256:9decf32c1402f44b5f7a54f29bd422e0ae9a45afc0a10090acf9ba6011ca12a7"}, - {file = "ray-2.44.1-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:949dbd735e5edec80f6140fa6bb536248c7c97535fe5a11acd279295b7bd1a6d"}, - {file = "ray-2.44.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c21a452227eeecfa3d89b50480d1f9bab11b15c9b3695af41421ab8e7e608cfd"}, - {file = "ray-2.44.1-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:0c6d395c05542a882d14e31abec1dd1a1808a9a0c0dcf94200a827d2d04c08a1"}, - {file = "ray-2.44.1-cp311-cp311-manylinux2014_x86_64.whl", hash = "sha256:6e6bd0430d2eb664ae632c96e74c01e4a1bf14ab2a15102e1809b05ea9e0c2c7"}, - {file = "ray-2.44.1-cp311-cp311-win_amd64.whl", hash = "sha256:5e94bd887898dc08db7f87c0429bc41219aceb552af0b1cd4924c01718fc6a77"}, - {file = "ray-2.44.1-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:b6c7b677035c08141ae01adc25eade20a979eb7c9cabfe9ad1c99396e157ed59"}, - {file = "ray-2.44.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:865a83eaf06d5e988c441bc2607b8d1f326d952d139f66c18ea21f077fedbff4"}, - {file = "ray-2.44.1-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:3d9807c9c31d42793ca309747b9c7affdd7488a532979aa346d4c889b828783a"}, - {file = "ray-2.44.1-cp312-cp312-manylinux2014_x86_64.whl", hash = "sha256:a4c0175cc40e6b065391bc8be0f208bacf8cee7ee61392c7791004f17622e7bd"}, - {file = "ray-2.44.1-cp312-cp312-win_amd64.whl", hash = "sha256:2d62f875c36432b6d5ee666ec23280d23a8de44c0a14a56959aa9b75e644b49f"}, - {file = "ray-2.44.1-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:12e94c27fedd703566de016314c8a5b164a96c5802313c64e7b643157c3930eb"}, - {file = "ray-2.44.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:16ecb31e1156a8952ad7a27da6e91704a67e8f37cb5519b0afc76fb5b21515d6"}, - {file = "ray-2.44.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:72d09a7bd2803979c322f0820f1138257b2fe7f557a615b6521441a1a14a044a"}, - {file = "ray-2.44.1-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:1cadfa4ec992d3f9c56ffc5ce22b4a937546954a3f5ea10f32d3cf870e0a6c37"}, - {file = "ray-2.44.1-cp39-cp39-win_amd64.whl", hash = "sha256:35028f39090de977374f7ecdd10fdbd6cffd1dece22c31a9143b5be1da76ac50"}, + {file = "ray-2.45.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:3afe594589061641b6b87d5a6d181f703d88eb8edec29f6b315449fb32b58d3a"}, + {file = "ray-2.45.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:65e6c5bf3c9eb1ace9b90e3ea04cc73f7f3ca4fd53abd2048c0a7efa457d2e98"}, + {file = "ray-2.45.0-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:c89f4ffd8e4623b6c690142e55813c1286a4941175c62e1056801bc139ad7ea7"}, + {file = "ray-2.45.0-cp310-cp310-manylinux2014_x86_64.whl", hash = "sha256:948e11a1247f7b0b45a29108ba1cfedfabd80f1f3db7a5deda5698213588d8eb"}, + {file = "ray-2.45.0-cp310-cp310-win_amd64.whl", hash = "sha256:ea5182b4f0559803e6dcf75309fb502dafae0bd323f76f38dc09205a70d1fba4"}, + {file = "ray-2.45.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:40c8c146bec3710c511dd0380ea7c930b43487c0f9c8c78b583b0e890374528f"}, + {file = "ray-2.45.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5dc3b5ed8ab6f6978daa7bd7f8268c3e4042fac7811e8b661f74f820d7b2620f"}, + {file = "ray-2.45.0-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:afbb85c9d05af3b2509602e13b5adb0b20979aa7ab177a710b41f060435bb7c2"}, + {file = "ray-2.45.0-cp311-cp311-manylinux2014_x86_64.whl", hash = "sha256:d3f8d8c807f899465e3ce48fad4e51f84671886d731e3f3a494f3ba50ed09458"}, + {file = "ray-2.45.0-cp311-cp311-win_amd64.whl", hash = "sha256:f1869ce384d332d9b22252fd0f6d1873d286eafa72d892fd30d40ef68ba31942"}, + {file = "ray-2.45.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:d3c33113f4196b923d7895fdcbf6b680a1642dd121444e974401c350da7ac809"}, + {file = "ray-2.45.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:eeeff1da4803a5d2321a2bcb5fc16e20d8f104543e8ddf4f30d1acf6fa22fac2"}, + {file = "ray-2.45.0-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:11582102a1757591a75376c4947db9819d5fab765e3ed307c884ed6761db8646"}, + {file = "ray-2.45.0-cp312-cp312-manylinux2014_x86_64.whl", hash = "sha256:482d45f2f867fbec814595ce99fe558e9ff124327a61a486a4975e6a7c224a7e"}, + {file = "ray-2.45.0-cp312-cp312-win_amd64.whl", hash = "sha256:31284755041291b51ff6b667f891e70da779d3496732831c570631e87396f680"}, + {file = "ray-2.45.0-cp313-cp313-macosx_10_15_x86_64.whl", hash = "sha256:fa0dfa3b9606799d251262ae74afa86152da98351ca429d4026bac5759943569"}, + {file = "ray-2.45.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d3c7f340b08d4826c445f68024bb71e42861f4056b06f50df49a0957613cd729"}, + {file = "ray-2.45.0-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:6ba58cbdc0af2cf44ce49184bbdaa9886b559cad4ba4821a02e84020ed888fd7"}, + {file = "ray-2.45.0-cp313-cp313-manylinux2014_x86_64.whl", hash = "sha256:517476ffadd4af135ca5dd8af015417c0062ccbb44a866740a2963dd7fd0d2f0"}, + {file = "ray-2.45.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:dfcd4ccb4edb44ea893ef7348d35d70230eec1be9f9290c584bf021778160b01"}, + {file = "ray-2.45.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f0f062927b118025c774643f18e4276130e3fe5754bc35e2aaca5b99083b7e3"}, + {file = "ray-2.45.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:ed5c846af6c056c05a3ece3c6fdb5036b5cdda152b1e31bd13cdf5b5cd5b9fd3"}, + {file = "ray-2.45.0-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:f63e450df6bfb0dfa2716a721d98656b7a134056202c41c9b95fdeabac31591f"}, + {file = "ray-2.45.0-cp39-cp39-win_amd64.whl", hash = "sha256:ce6351c518f17cb415b169b0070026f04e0a6015ab427dc5dea588f01014dbbb"}, ] [package.dependencies] -aiosignal = "*" click = ">=7.0" filelock = "*" -frozenlist = "*" jsonschema = "*" msgpack = ">=1.0.0,<2.0.0" packaging = "*" @@ -1948,13 +1948,13 @@ requests = "*" adag = ["cupy-cuda12x ; sys_platform != \"darwin\""] air = ["aiohttp (>=3.7)", "aiohttp-cors", "colorful", "fastapi", "fsspec", "grpcio (>=1.32.0) ; python_version < \"3.10\"", "grpcio (>=1.42.0) ; python_version >= \"3.10\"", "numpy (>=1.20)", "opencensus", "pandas", "pandas (>=1.3)", "prometheus-client (>=0.7.1)", "py-spy (>=0.2.0) ; python_version < \"3.12\"", "py-spy (>=0.4.0) ; python_version >= \"3.12\"", "pyarrow (<18) ; sys_platform == \"darwin\" and platform_machine == \"x86_64\"", "pyarrow (>=9.0.0)", "pydantic (<2.0.dev0 || >=2.5.dev0,<3)", "requests", "smart-open", "starlette", "tensorboardX (>=1.9)", "uvicorn[standard]", "virtualenv (>=20.0.24,!=20.21.1)", "watchfiles"] all = ["aiohttp (>=3.7)", "aiohttp-cors", "colorful", "cupy-cuda12x ; sys_platform != \"darwin\"", "dm-tree", "fastapi", "fsspec", "grpcio", "grpcio (!=1.56.0) ; sys_platform == \"darwin\"", "grpcio (>=1.32.0) ; python_version < \"3.10\"", "grpcio (>=1.42.0) ; python_version >= \"3.10\"", "gymnasium (==1.0.0)", "lz4", "memray ; sys_platform != \"win32\"", "numpy (>=1.20)", "opencensus", "opentelemetry-api", "opentelemetry-exporter-otlp", "opentelemetry-sdk", "ormsgpack (==1.7.0)", "pandas", "pandas (>=1.3)", "prometheus-client (>=0.7.1)", "py-spy (>=0.2.0) ; python_version < \"3.12\"", "py-spy (>=0.4.0) ; python_version >= \"3.12\"", "pyOpenSSL", "pyarrow (<18) ; sys_platform == \"darwin\" and platform_machine == \"x86_64\"", "pyarrow (>=9.0.0)", "pydantic (<2.0.dev0 || >=2.5.dev0,<3)", "pyyaml", "requests", "scipy", "smart-open", "starlette", "tensorboardX (>=1.9)", "uvicorn[standard]", "virtualenv (>=20.0.24,!=20.21.1)", "watchfiles"] -all-cpp = ["aiohttp (>=3.7)", "aiohttp-cors", "colorful", "cupy-cuda12x ; sys_platform != \"darwin\"", "dm-tree", "fastapi", "fsspec", "grpcio", "grpcio (!=1.56.0) ; sys_platform == \"darwin\"", "grpcio (>=1.32.0) ; python_version < \"3.10\"", "grpcio (>=1.42.0) ; python_version >= \"3.10\"", "gymnasium (==1.0.0)", "lz4", "memray ; sys_platform != \"win32\"", "numpy (>=1.20)", "opencensus", "opentelemetry-api", "opentelemetry-exporter-otlp", "opentelemetry-sdk", "ormsgpack (==1.7.0)", "pandas", "pandas (>=1.3)", "prometheus-client (>=0.7.1)", "py-spy (>=0.2.0) ; python_version < \"3.12\"", "py-spy (>=0.4.0) ; python_version >= \"3.12\"", "pyOpenSSL", "pyarrow (<18) ; sys_platform == \"darwin\" and platform_machine == \"x86_64\"", "pyarrow (>=9.0.0)", "pydantic (<2.0.dev0 || >=2.5.dev0,<3)", "pyyaml", "ray-cpp (==2.44.1)", "requests", "scipy", "smart-open", "starlette", "tensorboardX (>=1.9)", "uvicorn[standard]", "virtualenv (>=20.0.24,!=20.21.1)", "watchfiles"] +all-cpp = ["aiohttp (>=3.7)", "aiohttp-cors", "colorful", "cupy-cuda12x ; sys_platform != \"darwin\"", "dm-tree", "fastapi", "fsspec", "grpcio", "grpcio (!=1.56.0) ; sys_platform == \"darwin\"", "grpcio (>=1.32.0) ; python_version < \"3.10\"", "grpcio (>=1.42.0) ; python_version >= \"3.10\"", "gymnasium (==1.0.0)", "lz4", "memray ; sys_platform != \"win32\"", "numpy (>=1.20)", "opencensus", "opentelemetry-api", "opentelemetry-exporter-otlp", "opentelemetry-sdk", "ormsgpack (==1.7.0)", "pandas", "pandas (>=1.3)", "prometheus-client (>=0.7.1)", "py-spy (>=0.2.0) ; python_version < \"3.12\"", "py-spy (>=0.4.0) ; python_version >= \"3.12\"", "pyOpenSSL", "pyarrow (<18) ; sys_platform == \"darwin\" and platform_machine == \"x86_64\"", "pyarrow (>=9.0.0)", "pydantic (<2.0.dev0 || >=2.5.dev0,<3)", "pyyaml", "ray-cpp (==2.45.0)", "requests", "scipy", "smart-open", "starlette", "tensorboardX (>=1.9)", "uvicorn[standard]", "virtualenv (>=20.0.24,!=20.21.1)", "watchfiles"] cgraph = ["cupy-cuda12x ; sys_platform != \"darwin\""] client = ["grpcio", "grpcio (!=1.56.0) ; sys_platform == \"darwin\""] -cpp = ["ray-cpp (==2.44.1)"] +cpp = ["ray-cpp (==2.45.0)"] data = ["fsspec", "numpy (>=1.20)", "pandas (>=1.3)", "pyarrow (<18) ; sys_platform == \"darwin\" and platform_machine == \"x86_64\"", "pyarrow (>=9.0.0)"] default = ["aiohttp (>=3.7)", "aiohttp-cors", "colorful", "grpcio (>=1.32.0) ; python_version < \"3.10\"", "grpcio (>=1.42.0) ; python_version >= \"3.10\"", "opencensus", "prometheus-client (>=0.7.1)", "py-spy (>=0.2.0) ; python_version < \"3.12\"", "py-spy (>=0.4.0) ; python_version >= \"3.12\"", "pydantic (<2.0.dev0 || >=2.5.dev0,<3)", "requests", "smart-open", "virtualenv (>=20.0.24,!=20.21.1)"] -llm = ["aiohttp (>=3.7)", "aiohttp-cors", "async-timeout ; python_version < \"3.11\"", "colorful", "fastapi", "fsspec", "grpcio (>=1.32.0) ; python_version < \"3.10\"", "grpcio (>=1.42.0) ; python_version >= \"3.10\"", "jsonref (>=1.1.0)", "jsonschema", "ninja", "numpy (>=1.20)", "opencensus", "pandas (>=1.3)", "prometheus-client (>=0.7.1)", "py-spy (>=0.2.0) ; python_version < \"3.12\"", "py-spy (>=0.4.0) ; python_version >= \"3.12\"", "pyarrow (<18) ; sys_platform == \"darwin\" and platform_machine == \"x86_64\"", "pyarrow (>=9.0.0)", "pydantic (<2.0.dev0 || >=2.5.dev0,<3)", "requests", "smart-open", "starlette", "typer", "uvicorn[standard]", "virtualenv (>=20.0.24,!=20.21.1)", "vllm (>=0.7.2)", "watchfiles"] +llm = ["aiohttp (>=3.7)", "aiohttp-cors", "async-timeout ; python_version < \"3.11\"", "colorful", "fastapi", "fsspec", "grpcio (>=1.32.0) ; python_version < \"3.10\"", "grpcio (>=1.42.0) ; python_version >= \"3.10\"", "jsonref (>=1.1.0)", "jsonschema", "ninja", "numpy (>=1.20)", "opencensus", "pandas (>=1.3)", "prometheus-client (>=0.7.1)", "py-spy (>=0.2.0) ; python_version < \"3.12\"", "py-spy (>=0.4.0) ; python_version >= \"3.12\"", "pyarrow (<18) ; sys_platform == \"darwin\" and platform_machine == \"x86_64\"", "pyarrow (>=9.0.0)", "pydantic (<2.0.dev0 || >=2.5.dev0,<3)", "requests", "smart-open", "starlette", "typer", "uvicorn[standard]", "virtualenv (>=20.0.24,!=20.21.1)", "vllm (>=0.8.2)", "watchfiles"] observability = ["memray ; sys_platform != \"win32\"", "opentelemetry-api", "opentelemetry-exporter-otlp", "opentelemetry-sdk"] rllib = ["dm-tree", "fsspec", "gymnasium (==1.0.0)", "lz4", "ormsgpack (==1.7.0)", "pandas", "pyarrow (<18) ; sys_platform == \"darwin\" and platform_machine == \"x86_64\"", "pyarrow (>=9.0.0)", "pyyaml", "requests", "scipy", "tensorboardX (>=1.9)"] serve = ["aiohttp (>=3.7)", "aiohttp-cors", "colorful", "fastapi", "grpcio (>=1.32.0) ; python_version < \"3.10\"", "grpcio (>=1.42.0) ; python_version >= \"3.10\"", "opencensus", "prometheus-client (>=0.7.1)", "py-spy (>=0.2.0) ; python_version < \"3.12\"", "py-spy (>=0.4.0) ; python_version >= \"3.12\"", "pydantic (<2.0.dev0 || >=2.5.dev0,<3)", "requests", "smart-open", "starlette", "uvicorn[standard]", "virtualenv (>=20.0.24,!=20.21.1)", "watchfiles"] @@ -2755,7 +2755,7 @@ description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" groups = ["docs"] -markers = "python_version == \"3.9\"" +markers = "python_version < \"3.10\"" files = [ {file = "zipp-3.19.1-py3-none-any.whl", hash = "sha256:2828e64edb5386ea6a52e7ba7cdb17bb30a73a858f5eb6eb93d8d36f5ea26091"}, {file = "zipp-3.19.1.tar.gz", hash = "sha256:35427f6d5594f4acf82d25541438348c26736fa9b3afa2754bcd63cdb99d8e8f"}, From 0130f9e291592f51aba0b9bea67fec560148d7a5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 May 2025 11:10:38 +0000 Subject: [PATCH 05/44] build(deps-dev): bump ruff from 0.11.7 to 0.11.8 in /clients/python (#1065) Bumps [ruff](https://github.com/astral-sh/ruff) from 0.11.7 to 0.11.8. - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/0.11.7...0.11.8) --- updated-dependencies: - dependency-name: ruff dependency-version: 0.11.8 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- clients/python/poetry.lock | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/clients/python/poetry.lock b/clients/python/poetry.lock index 1056af7dbd..9d54e9479e 100644 --- a/clients/python/poetry.lock +++ b/clients/python/poetry.lock @@ -1986,30 +1986,30 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "ruff" -version = "0.11.7" +version = "0.11.8" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "ruff-0.11.7-py3-none-linux_armv6l.whl", hash = "sha256:d29e909d9a8d02f928d72ab7837b5cbc450a5bdf578ab9ebee3263d0a525091c"}, - {file = "ruff-0.11.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:dd1fb86b168ae349fb01dd497d83537b2c5541fe0626e70c786427dd8363aaee"}, - {file = "ruff-0.11.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d3d7d2e140a6fbbc09033bce65bd7ea29d6a0adeb90b8430262fbacd58c38ada"}, - {file = "ruff-0.11.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4809df77de390a1c2077d9b7945d82f44b95d19ceccf0c287c56e4dc9b91ca64"}, - {file = "ruff-0.11.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f3a0c2e169e6b545f8e2dba185eabbd9db4f08880032e75aa0e285a6d3f48201"}, - {file = "ruff-0.11.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49b888200a320dd96a68e86736cf531d6afba03e4f6cf098401406a257fcf3d6"}, - {file = "ruff-0.11.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:2b19cdb9cf7dae00d5ee2e7c013540cdc3b31c4f281f1dacb5a799d610e90db4"}, - {file = "ruff-0.11.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64e0ee994c9e326b43539d133a36a455dbaab477bc84fe7bfbd528abe2f05c1e"}, - {file = "ruff-0.11.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bad82052311479a5865f52c76ecee5d468a58ba44fb23ee15079f17dd4c8fd63"}, - {file = "ruff-0.11.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7940665e74e7b65d427b82bffc1e46710ec7f30d58b4b2d5016e3f0321436502"}, - {file = "ruff-0.11.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:169027e31c52c0e36c44ae9a9c7db35e505fee0b39f8d9fca7274a6305295a92"}, - {file = "ruff-0.11.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:305b93f9798aee582e91e34437810439acb28b5fc1fee6b8205c78c806845a94"}, - {file = "ruff-0.11.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a681db041ef55550c371f9cd52a3cf17a0da4c75d6bd691092dfc38170ebc4b6"}, - {file = "ruff-0.11.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:07f1496ad00a4a139f4de220b0c97da6d4c85e0e4aa9b2624167b7d4d44fd6b6"}, - {file = "ruff-0.11.7-py3-none-win32.whl", hash = "sha256:f25dfb853ad217e6e5f1924ae8a5b3f6709051a13e9dad18690de6c8ff299e26"}, - {file = "ruff-0.11.7-py3-none-win_amd64.whl", hash = "sha256:0a931d85959ceb77e92aea4bbedfded0a31534ce191252721128f77e5ae1f98a"}, - {file = "ruff-0.11.7-py3-none-win_arm64.whl", hash = "sha256:778c1e5d6f9e91034142dfd06110534ca13220bfaad5c3735f6cb844654f6177"}, - {file = "ruff-0.11.7.tar.gz", hash = "sha256:655089ad3224070736dc32844fde783454f8558e71f501cb207485fe4eee23d4"}, + {file = "ruff-0.11.8-py3-none-linux_armv6l.whl", hash = "sha256:896a37516c594805e34020c4a7546c8f8a234b679a7716a3f08197f38913e1a3"}, + {file = "ruff-0.11.8-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ab86d22d3d721a40dd3ecbb5e86ab03b2e053bc93c700dc68d1c3346b36ce835"}, + {file = "ruff-0.11.8-py3-none-macosx_11_0_arm64.whl", hash = "sha256:258f3585057508d317610e8a412788cf726efeefa2fec4dba4001d9e6f90d46c"}, + {file = "ruff-0.11.8-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:727d01702f7c30baed3fc3a34901a640001a2828c793525043c29f7614994a8c"}, + {file = "ruff-0.11.8-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3dca977cc4fc8f66e89900fa415ffe4dbc2e969da9d7a54bfca81a128c5ac219"}, + {file = "ruff-0.11.8-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c657fa987d60b104d2be8b052d66da0a2a88f9bd1d66b2254333e84ea2720c7f"}, + {file = "ruff-0.11.8-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:f2e74b021d0de5eceb8bd32919f6ff8a9b40ee62ed97becd44993ae5b9949474"}, + {file = "ruff-0.11.8-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f9b5ef39820abc0f2c62111f7045009e46b275f5b99d5e59dda113c39b7f4f38"}, + {file = "ruff-0.11.8-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c1dba3135ca503727aa4648152c0fa67c3b1385d3dc81c75cd8a229c4b2a1458"}, + {file = "ruff-0.11.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f024d32e62faad0f76b2d6afd141b8c171515e4fb91ce9fd6464335c81244e5"}, + {file = "ruff-0.11.8-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:d365618d3ad747432e1ae50d61775b78c055fee5936d77fb4d92c6f559741948"}, + {file = "ruff-0.11.8-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:4d9aaa91035bdf612c8ee7266153bcf16005c7c7e2f5878406911c92a31633cb"}, + {file = "ruff-0.11.8-py3-none-musllinux_1_2_i686.whl", hash = "sha256:0eba551324733efc76116d9f3a0d52946bc2751f0cd30661564117d6fd60897c"}, + {file = "ruff-0.11.8-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:161eb4cff5cfefdb6c9b8b3671d09f7def2f960cee33481dd898caf2bcd02304"}, + {file = "ruff-0.11.8-py3-none-win32.whl", hash = "sha256:5b18caa297a786465cc511d7f8be19226acf9c0a1127e06e736cd4e1878c3ea2"}, + {file = "ruff-0.11.8-py3-none-win_amd64.whl", hash = "sha256:6e70d11043bef637c5617297bdedec9632af15d53ac1e1ba29c448da9341b0c4"}, + {file = "ruff-0.11.8-py3-none-win_arm64.whl", hash = "sha256:304432e4c4a792e3da85b7699feb3426a0908ab98bf29df22a31b0cdd098fac2"}, + {file = "ruff-0.11.8.tar.gz", hash = "sha256:6d742d10626f9004b781f4558154bb226620a7242080e11caeffab1a40e99df8"}, ] [[package]] From 8e6e4f7c987dcfbb69fb379a8df6eb9005234de0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 May 2025 11:11:38 +0000 Subject: [PATCH 06/44] build(deps): bump boto3 from 1.38.3 to 1.38.8 in /clients/python (#1066) Bumps [boto3](https://github.com/boto/boto3) from 1.38.3 to 1.38.8. - [Release notes](https://github.com/boto/boto3/releases) - [Commits](https://github.com/boto/boto3/compare/1.38.3...1.38.8) --- updated-dependencies: - dependency-name: boto3 dependency-version: 1.38.8 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- clients/python/poetry.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/clients/python/poetry.lock b/clients/python/poetry.lock index 9d54e9479e..b39b2d2693 100644 --- a/clients/python/poetry.lock +++ b/clients/python/poetry.lock @@ -311,19 +311,19 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "boto3" -version = "1.38.3" +version = "1.38.8" description = "The AWS SDK for Python" optional = true python-versions = ">=3.9" groups = ["main"] markers = "extra == \"boto3\"" files = [ - {file = "boto3-1.38.3-py3-none-any.whl", hash = "sha256:9218f86e2164e1bddb75d435bbde4fa651aa58687213d7e3e1b50f7eb8868f66"}, - {file = "boto3-1.38.3.tar.gz", hash = "sha256:655d51abcd68a40a33c52dbaa2ca73fc63c746b894e2ae22ed8ddc1912ddd93f"}, + {file = "boto3-1.38.8-py3-none-any.whl", hash = "sha256:f3a4d79f499f567d327d2d8846d02ad18244d2927f88858a42a2438f52d9a0ef"}, + {file = "boto3-1.38.8.tar.gz", hash = "sha256:6bbc75bb51be9c5a33d07a4adf13d133c60f77b7c47bef1c46fda90b1297a867"}, ] [package.dependencies] -botocore = ">=1.38.3,<1.39.0" +botocore = ">=1.38.8,<1.39.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.12.0,<0.13.0" @@ -332,15 +332,15 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.38.3" +version = "1.38.8" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">=3.9" groups = ["main"] markers = "extra == \"boto3\"" files = [ - {file = "botocore-1.38.3-py3-none-any.whl", hash = "sha256:96f823240fe3704b99c17d1d1b2fd2d1679cf56d2a55b095f00255b76087cbf0"}, - {file = "botocore-1.38.3.tar.gz", hash = "sha256:790f8f966201781f5fcf486d48b4492e9f734446bbf9d19ef8159d08be854243"}, + {file = "botocore-1.38.8-py3-none-any.whl", hash = "sha256:f6ae08a56fe94e18d2aa223611a3b5e94123315d0cb3cb85764b029b2326c710"}, + {file = "botocore-1.38.8.tar.gz", hash = "sha256:68d739300cc94232373517b27c5570de6ae6d809a2db644f30219f5c8e0371ce"}, ] [package.dependencies] From 1d7b3304d9799e0afe89811c037f533a5384be62 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 May 2025 14:25:39 +0000 Subject: [PATCH 07/44] build(deps): bump pydantic from 2.11.3 to 2.11.4 in /clients/python (#1063) Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.11.3 to 2.11.4. - [Release notes](https://github.com/pydantic/pydantic/releases) - [Changelog](https://github.com/pydantic/pydantic/blob/main/HISTORY.md) - [Commits](https://github.com/pydantic/pydantic/compare/v2.11.3...v2.11.4) --- updated-dependencies: - dependency-name: pydantic dependency-version: 2.11.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- clients/python/poetry.lock | 208 ++++++++++++++++++------------------- 1 file changed, 104 insertions(+), 104 deletions(-) diff --git a/clients/python/poetry.lock b/clients/python/poetry.lock index b39b2d2693..779dfee766 100644 --- a/clients/python/poetry.lock +++ b/clients/python/poetry.lock @@ -1569,19 +1569,19 @@ files = [ [[package]] name = "pydantic" -version = "2.11.3" +version = "2.11.4" description = "Data validation using Python type hints" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "pydantic-2.11.3-py3-none-any.whl", hash = "sha256:a082753436a07f9ba1289c6ffa01cd93db3548776088aa917cc43b63f68fa60f"}, - {file = "pydantic-2.11.3.tar.gz", hash = "sha256:7471657138c16adad9322fe3070c0116dd6c3ad8d649300e3cbdfe91f4db4ec3"}, + {file = "pydantic-2.11.4-py3-none-any.whl", hash = "sha256:d9615eaa9ac5a063471da949c8fc16376a84afb5024688b3ff885693506764eb"}, + {file = "pydantic-2.11.4.tar.gz", hash = "sha256:32738d19d63a226a52eed76645a98ee07c1f410ee41d93b4afbfa85ed8111c2d"}, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.33.1" +pydantic-core = "2.33.2" typing-extensions = ">=4.12.2" typing-inspection = ">=0.4.0" @@ -1591,111 +1591,111 @@ timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows [[package]] name = "pydantic-core" -version = "2.33.1" +version = "2.33.2" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "pydantic_core-2.33.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3077cfdb6125cc8dab61b155fdd714663e401f0e6883f9632118ec12cf42df26"}, - {file = "pydantic_core-2.33.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8ffab8b2908d152e74862d276cf5017c81a2f3719f14e8e3e8d6b83fda863927"}, - {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5183e4f6a2d468787243ebcd70cf4098c247e60d73fb7d68d5bc1e1beaa0c4db"}, - {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:398a38d323f37714023be1e0285765f0a27243a8b1506b7b7de87b647b517e48"}, - {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87d3776f0001b43acebfa86f8c64019c043b55cc5a6a2e313d728b5c95b46969"}, - {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c566dd9c5f63d22226409553531f89de0cac55397f2ab8d97d6f06cfce6d947e"}, - {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0d5f3acc81452c56895e90643a625302bd6be351e7010664151cc55b7b97f89"}, - {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d3a07fadec2a13274a8d861d3d37c61e97a816beae717efccaa4b36dfcaadcde"}, - {file = "pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f99aeda58dce827f76963ee87a0ebe75e648c72ff9ba1174a253f6744f518f65"}, - {file = "pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:902dbc832141aa0ec374f4310f1e4e7febeebc3256f00dc359a9ac3f264a45dc"}, - {file = "pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fe44d56aa0b00d66640aa84a3cbe80b7a3ccdc6f0b1ca71090696a6d4777c091"}, - {file = "pydantic_core-2.33.1-cp310-cp310-win32.whl", hash = "sha256:ed3eb16d51257c763539bde21e011092f127a2202692afaeaccb50db55a31383"}, - {file = "pydantic_core-2.33.1-cp310-cp310-win_amd64.whl", hash = "sha256:694ad99a7f6718c1a498dc170ca430687a39894a60327f548e02a9c7ee4b6504"}, - {file = "pydantic_core-2.33.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6e966fc3caaf9f1d96b349b0341c70c8d6573bf1bac7261f7b0ba88f96c56c24"}, - {file = "pydantic_core-2.33.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bfd0adeee563d59c598ceabddf2c92eec77abcb3f4a391b19aa7366170bd9e30"}, - {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91815221101ad3c6b507804178a7bb5cb7b2ead9ecd600041669c8d805ebd595"}, - {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9fea9c1869bb4742d174a57b4700c6dadea951df8b06de40c2fedb4f02931c2e"}, - {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d20eb4861329bb2484c021b9d9a977566ab16d84000a57e28061151c62b349a"}, - {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb935c5591573ae3201640579f30128ccc10739b45663f93c06796854405505"}, - {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c964fd24e6166420d18fb53996d8c9fd6eac9bf5ae3ec3d03015be4414ce497f"}, - {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:681d65e9011f7392db5aa002b7423cc442d6a673c635668c227c6c8d0e5a4f77"}, - {file = "pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e100c52f7355a48413e2999bfb4e139d2977a904495441b374f3d4fb4a170961"}, - {file = "pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:048831bd363490be79acdd3232f74a0e9951b11b2b4cc058aeb72b22fdc3abe1"}, - {file = "pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bdc84017d28459c00db6f918a7272a5190bec3090058334e43a76afb279eac7c"}, - {file = "pydantic_core-2.33.1-cp311-cp311-win32.whl", hash = "sha256:32cd11c5914d1179df70406427097c7dcde19fddf1418c787540f4b730289896"}, - {file = "pydantic_core-2.33.1-cp311-cp311-win_amd64.whl", hash = "sha256:2ea62419ba8c397e7da28a9170a16219d310d2cf4970dbc65c32faf20d828c83"}, - {file = "pydantic_core-2.33.1-cp311-cp311-win_arm64.whl", hash = "sha256:fc903512177361e868bc1f5b80ac8c8a6e05fcdd574a5fb5ffeac5a9982b9e89"}, - {file = "pydantic_core-2.33.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1293d7febb995e9d3ec3ea09caf1a26214eec45b0f29f6074abb004723fc1de8"}, - {file = "pydantic_core-2.33.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:99b56acd433386c8f20be5c4000786d1e7ca0523c8eefc995d14d79c7a081498"}, - {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35a5ec3fa8c2fe6c53e1b2ccc2454398f95d5393ab398478f53e1afbbeb4d939"}, - {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b172f7b9d2f3abc0efd12e3386f7e48b576ef309544ac3a63e5e9cdd2e24585d"}, - {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9097b9f17f91eea659b9ec58148c0747ec354a42f7389b9d50701610d86f812e"}, - {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc77ec5b7e2118b152b0d886c7514a4653bcb58c6b1d760134a9fab915f777b3"}, - {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3d15245b08fa4a84cefc6c9222e6f37c98111c8679fbd94aa145f9a0ae23d"}, - {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef99779001d7ac2e2461d8ab55d3373fe7315caefdbecd8ced75304ae5a6fc6b"}, - {file = "pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fc6bf8869e193855e8d91d91f6bf59699a5cdfaa47a404e278e776dd7f168b39"}, - {file = "pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:b1caa0bc2741b043db7823843e1bde8aaa58a55a58fda06083b0569f8b45693a"}, - {file = "pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ec259f62538e8bf364903a7d0d0239447059f9434b284f5536e8402b7dd198db"}, - {file = "pydantic_core-2.33.1-cp312-cp312-win32.whl", hash = "sha256:e14f369c98a7c15772b9da98987f58e2b509a93235582838bd0d1d8c08b68fda"}, - {file = "pydantic_core-2.33.1-cp312-cp312-win_amd64.whl", hash = "sha256:1c607801d85e2e123357b3893f82c97a42856192997b95b4d8325deb1cd0c5f4"}, - {file = "pydantic_core-2.33.1-cp312-cp312-win_arm64.whl", hash = "sha256:8d13f0276806ee722e70a1c93da19748594f19ac4299c7e41237fc791d1861ea"}, - {file = "pydantic_core-2.33.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:70af6a21237b53d1fe7b9325b20e65cbf2f0a848cf77bed492b029139701e66a"}, - {file = "pydantic_core-2.33.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:282b3fe1bbbe5ae35224a0dbd05aed9ccabccd241e8e6b60370484234b456266"}, - {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b315e596282bbb5822d0c7ee9d255595bd7506d1cb20c2911a4da0b970187d3"}, - {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1dfae24cf9921875ca0ca6a8ecb4bb2f13c855794ed0d468d6abbec6e6dcd44a"}, - {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6dd8ecfde08d8bfadaea669e83c63939af76f4cf5538a72597016edfa3fad516"}, - {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f593494876eae852dc98c43c6f260f45abdbfeec9e4324e31a481d948214764"}, - {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:948b73114f47fd7016088e5186d13faf5e1b2fe83f5e320e371f035557fd264d"}, - {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e11f3864eb516af21b01e25fac915a82e9ddad3bb0fb9e95a246067398b435a4"}, - {file = "pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:549150be302428b56fdad0c23c2741dcdb5572413776826c965619a25d9c6bde"}, - {file = "pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:495bc156026efafd9ef2d82372bd38afce78ddd82bf28ef5276c469e57c0c83e"}, - {file = "pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ec79de2a8680b1a67a07490bddf9636d5c2fab609ba8c57597e855fa5fa4dacd"}, - {file = "pydantic_core-2.33.1-cp313-cp313-win32.whl", hash = "sha256:ee12a7be1742f81b8a65b36c6921022301d466b82d80315d215c4c691724986f"}, - {file = "pydantic_core-2.33.1-cp313-cp313-win_amd64.whl", hash = "sha256:ede9b407e39949d2afc46385ce6bd6e11588660c26f80576c11c958e6647bc40"}, - {file = "pydantic_core-2.33.1-cp313-cp313-win_arm64.whl", hash = "sha256:aa687a23d4b7871a00e03ca96a09cad0f28f443690d300500603bd0adba4b523"}, - {file = "pydantic_core-2.33.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:401d7b76e1000d0dd5538e6381d28febdcacb097c8d340dde7d7fc6e13e9f95d"}, - {file = "pydantic_core-2.33.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7aeb055a42d734c0255c9e489ac67e75397d59c6fbe60d155851e9782f276a9c"}, - {file = "pydantic_core-2.33.1-cp313-cp313t-win_amd64.whl", hash = "sha256:338ea9b73e6e109f15ab439e62cb3b78aa752c7fd9536794112e14bee02c8d18"}, - {file = "pydantic_core-2.33.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5ab77f45d33d264de66e1884fca158bc920cb5e27fd0764a72f72f5756ae8bdb"}, - {file = "pydantic_core-2.33.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7aaba1b4b03aaea7bb59e1b5856d734be011d3e6d98f5bcaa98cb30f375f2ad"}, - {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fb66263e9ba8fea2aa85e1e5578980d127fb37d7f2e292773e7bc3a38fb0c7b"}, - {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3f2648b9262607a7fb41d782cc263b48032ff7a03a835581abbf7a3bec62bcf5"}, - {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:723c5630c4259400818b4ad096735a829074601805d07f8cafc366d95786d331"}, - {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d100e3ae783d2167782391e0c1c7a20a31f55f8015f3293647544df3f9c67824"}, - {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:177d50460bc976a0369920b6c744d927b0ecb8606fb56858ff542560251b19e5"}, - {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a3edde68d1a1f9af1273b2fe798997b33f90308fb6d44d8550c89fc6a3647cf6"}, - {file = "pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a62c3c3ef6a7e2c45f7853b10b5bc4ddefd6ee3cd31024754a1a5842da7d598d"}, - {file = "pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:c91dbb0ab683fa0cd64a6e81907c8ff41d6497c346890e26b23de7ee55353f96"}, - {file = "pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f466e8bf0a62dc43e068c12166281c2eca72121dd2adc1040f3aa1e21ef8599"}, - {file = "pydantic_core-2.33.1-cp39-cp39-win32.whl", hash = "sha256:ab0277cedb698749caada82e5d099dc9fed3f906a30d4c382d1a21725777a1e5"}, - {file = "pydantic_core-2.33.1-cp39-cp39-win_amd64.whl", hash = "sha256:5773da0ee2d17136b1f1c6fbde543398d452a6ad2a7b54ea1033e2daa739b8d2"}, - {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c834f54f8f4640fd7e4b193f80eb25a0602bba9e19b3cd2fc7ffe8199f5ae02"}, - {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:049e0de24cf23766f12cc5cc71d8abc07d4a9deb9061b334b62093dedc7cb068"}, - {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a28239037b3d6f16916a4c831a5a0eadf856bdd6d2e92c10a0da3a59eadcf3e"}, - {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d3da303ab5f378a268fa7d45f37d7d85c3ec19769f28d2cc0c61826a8de21fe"}, - {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:25626fb37b3c543818c14821afe0fd3830bc327a43953bc88db924b68c5723f1"}, - {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3ab2d36e20fbfcce8f02d73c33a8a7362980cff717926bbae030b93ae46b56c7"}, - {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:2f9284e11c751b003fd4215ad92d325d92c9cb19ee6729ebd87e3250072cdcde"}, - {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:048c01eee07d37cbd066fc512b9d8b5ea88ceeb4e629ab94b3e56965ad655add"}, - {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5ccd429694cf26af7997595d627dd2637e7932214486f55b8a357edaac9dae8c"}, - {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3a371dc00282c4b84246509a5ddc808e61b9864aa1eae9ecc92bb1268b82db4a"}, - {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:f59295ecc75a1788af8ba92f2e8c6eeaa5a94c22fc4d151e8d9638814f85c8fc"}, - {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08530b8ac922003033f399128505f513e30ca770527cc8bbacf75a84fcc2c74b"}, - {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bae370459da6a5466978c0eacf90690cb57ec9d533f8e63e564ef3822bfa04fe"}, - {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e3de2777e3b9f4d603112f78006f4ae0acb936e95f06da6cb1a45fbad6bdb4b5"}, - {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3a64e81e8cba118e108d7126362ea30e021291b7805d47e4896e52c791be2761"}, - {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:52928d8c1b6bda03cc6d811e8923dffc87a2d3c8b3bfd2ce16471c7147a24850"}, - {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1b30d92c9412beb5ac6b10a3eb7ef92ccb14e3f2a8d7732e2d739f58b3aa7544"}, - {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f995719707e0e29f0f41a8aa3bcea6e761a36c9136104d3189eafb83f5cec5e5"}, - {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7edbc454a29fc6aeae1e1eecba4f07b63b8d76e76a748532233c4c167b4cb9ea"}, - {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ad05b683963f69a1d5d2c2bdab1274a31221ca737dbbceaa32bcb67359453cdd"}, - {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df6a94bf9452c6da9b5d76ed229a5683d0306ccb91cca8e1eea883189780d568"}, - {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7965c13b3967909a09ecc91f21d09cfc4576bf78140b988904e94f130f188396"}, - {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3f1fdb790440a34f6ecf7679e1863b825cb5ffde858a9197f851168ed08371e5"}, - {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:5277aec8d879f8d05168fdd17ae811dd313b8ff894aeeaf7cd34ad28b4d77e33"}, - {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8ab581d3530611897d863d1a649fb0644b860286b4718db919bfd51ece41f10b"}, - {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0483847fa9ad5e3412265c1bd72aad35235512d9ce9d27d81a56d935ef489672"}, - {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:de9e06abe3cc5ec6a2d5f75bc99b0bdca4f5c719a5b34026f8c57efbdecd2ee3"}, - {file = "pydantic_core-2.33.1.tar.gz", hash = "sha256:bcc9c6fdb0ced789245b02b7d6603e17d1563064ddcfc36f046b61c0c05dd9df"}, + {file = "pydantic_core-2.33.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2b3d326aaef0c0399d9afffeb6367d5e26ddc24d351dbc9c636840ac355dc5d8"}, + {file = "pydantic_core-2.33.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e5b2671f05ba48b94cb90ce55d8bdcaaedb8ba00cc5359f6810fc918713983d"}, + {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0069c9acc3f3981b9ff4cdfaf088e98d83440a4c7ea1bc07460af3d4dc22e72d"}, + {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d53b22f2032c42eaaf025f7c40c2e3b94568ae077a606f006d206a463bc69572"}, + {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0405262705a123b7ce9f0b92f123334d67b70fd1f20a9372b907ce1080c7ba02"}, + {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4b25d91e288e2c4e0662b8038a28c6a07eaac3e196cfc4ff69de4ea3db992a1b"}, + {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bdfe4b3789761f3bcb4b1ddf33355a71079858958e3a552f16d5af19768fef2"}, + {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:efec8db3266b76ef9607c2c4c419bdb06bf335ae433b80816089ea7585816f6a"}, + {file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:031c57d67ca86902726e0fae2214ce6770bbe2f710dc33063187a68744a5ecac"}, + {file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:f8de619080e944347f5f20de29a975c2d815d9ddd8be9b9b7268e2e3ef68605a"}, + {file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:73662edf539e72a9440129f231ed3757faab89630d291b784ca99237fb94db2b"}, + {file = "pydantic_core-2.33.2-cp310-cp310-win32.whl", hash = "sha256:0a39979dcbb70998b0e505fb1556a1d550a0781463ce84ebf915ba293ccb7e22"}, + {file = "pydantic_core-2.33.2-cp310-cp310-win_amd64.whl", hash = "sha256:b0379a2b24882fef529ec3b4987cb5d003b9cda32256024e6fe1586ac45fc640"}, + {file = "pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7"}, + {file = "pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246"}, + {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f"}, + {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc"}, + {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de"}, + {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a"}, + {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef"}, + {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e"}, + {file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d"}, + {file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30"}, + {file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf"}, + {file = "pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51"}, + {file = "pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab"}, + {file = "pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65"}, + {file = "pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc"}, + {file = "pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7"}, + {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025"}, + {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011"}, + {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f"}, + {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88"}, + {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1"}, + {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b"}, + {file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1"}, + {file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6"}, + {file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea"}, + {file = "pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290"}, + {file = "pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2"}, + {file = "pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab"}, + {file = "pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f"}, + {file = "pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6"}, + {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef"}, + {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a"}, + {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916"}, + {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a"}, + {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d"}, + {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56"}, + {file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5"}, + {file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e"}, + {file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162"}, + {file = "pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849"}, + {file = "pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9"}, + {file = "pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9"}, + {file = "pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac"}, + {file = "pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5"}, + {file = "pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9"}, + {file = "pydantic_core-2.33.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a2b911a5b90e0374d03813674bf0a5fbbb7741570dcd4b4e85a2e48d17def29d"}, + {file = "pydantic_core-2.33.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6fa6dfc3e4d1f734a34710f391ae822e0a8eb8559a85c6979e14e65ee6ba2954"}, + {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c54c939ee22dc8e2d545da79fc5381f1c020d6d3141d3bd747eab59164dc89fb"}, + {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53a57d2ed685940a504248187d5685e49eb5eef0f696853647bf37c418c538f7"}, + {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09fb9dd6571aacd023fe6aaca316bd01cf60ab27240d7eb39ebd66a3a15293b4"}, + {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0e6116757f7959a712db11f3e9c0a99ade00a5bbedae83cb801985aa154f071b"}, + {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d55ab81c57b8ff8548c3e4947f119551253f4e3787a7bbc0b6b3ca47498a9d3"}, + {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c20c462aa4434b33a2661701b861604913f912254e441ab8d78d30485736115a"}, + {file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:44857c3227d3fb5e753d5fe4a3420d6376fa594b07b621e220cd93703fe21782"}, + {file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:eb9b459ca4df0e5c87deb59d37377461a538852765293f9e6ee834f0435a93b9"}, + {file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9fcd347d2cc5c23b06de6d3b7b8275be558a0c90549495c699e379a80bf8379e"}, + {file = "pydantic_core-2.33.2-cp39-cp39-win32.whl", hash = "sha256:83aa99b1285bc8f038941ddf598501a86f1536789740991d7d8756e34f1e74d9"}, + {file = "pydantic_core-2.33.2-cp39-cp39-win_amd64.whl", hash = "sha256:f481959862f57f29601ccced557cc2e817bce7533ab8e01a797a48b49c9692b3"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c4aa4e82353f65e548c476b37e64189783aa5384903bfea4f41580f255fddfa"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d946c8bf0d5c24bf4fe333af284c59a19358aa3ec18cb3dc4370080da1e8ad29"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87b31b6846e361ef83fedb187bb5b4372d0da3f7e28d85415efa92d6125d6e6d"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa9d91b338f2df0508606f7009fde642391425189bba6d8c653afd80fd6bb64e"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2058a32994f1fde4ca0480ab9d1e75a0e8c87c22b53a3ae66554f9af78f2fe8c"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:0e03262ab796d986f978f79c943fc5f620381be7287148b8010b4097f79a39ec"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1a8695a8d00c73e50bff9dfda4d540b7dee29ff9b8053e38380426a85ef10052"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:fa754d1850735a0b0e03bcffd9d4b4343eb417e47196e4485d9cca326073a42c"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a11c8d26a50bfab49002947d3d237abe4d9e4b5bdc8846a63537b6488e197808"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:87acbfcf8e90ca885206e98359d7dca4bcbb35abdc0ff66672a293e1d7a19101"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:7f92c15cd1e97d4b12acd1cc9004fa092578acfa57b67ad5e43a197175d01a64"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3f26877a748dc4251cfcfda9dfb5f13fcb034f5308388066bcfe9031b63ae7d"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac89aea9af8cd672fa7b510e7b8c33b0bba9a43186680550ccf23020f32d535"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:970919794d126ba8645f3837ab6046fb4e72bbc057b3709144066204c19a455d"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3eb3fe62804e8f859c49ed20a8451342de53ed764150cb14ca71357c765dc2a6"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:3abcd9392a36025e3bd55f9bd38d908bd17962cc49bc6da8e7e96285336e2bca"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:3a1c81334778f9e3af2f8aeb7a960736e5cab1dfebfb26aabca09afd2906c039"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2807668ba86cb38c6817ad9bc66215ab8584d1d304030ce4f0887336f28a5e27"}, + {file = "pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc"}, ] [package.dependencies] From da0a708b258bf12571b542cc00f05448de8dbcce Mon Sep 17 00:00:00 2001 From: Ramesh Reddy Date: Tue, 6 May 2025 10:28:38 -0500 Subject: [PATCH 08/44] Adding Red hat as one of the adopters of Kubeflow Model Registry (#1069) Signed-off-by: Ramesh Reddy --- ADOPTERS.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ADOPTERS.md b/ADOPTERS.md index 728c902fb1..3bf382de69 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -5,4 +5,5 @@ Below are the adopters of the Model Registry project. If you are using Model Reg | Organization | Contact (GitHub User Name) | Environment | Description of Use | |-------------------------------|--------------------------------------------|--------------------------------------------|-----------------------------------------------------------------------| | [Pepsico](https://www.pepsico.com/) | [@milosjava](https://github.com/milosjava) | Experimenting | Evaluating a transition from Azure Model Registry to Kubeflow Model Registry | -| | | Production/Testing/Experimenting/etc | | +| [Red Hat](https://www.redhat.com) | [@rareddy](https://github.com/rareddy)| Production | Kubeflow Model Registry is part of [OpenShift AI](https://www.redhat.com/en/products/ai/openshift-ai) | +| < company name here> | < your github handle here > | | | From eb7b82b8b3890fb166406c58348683b45a069f0d Mon Sep 17 00:00:00 2001 From: Matteo Mortari Date: Tue, 6 May 2025 19:10:38 +0200 Subject: [PATCH 09/44] docs: fix typo (#1070) * docs: fix typo Signed-off-by: Matteo Mortari * Update RELEASE.md Co-authored-by: Alessio Pragliola <83355398+Al-Pragliola@users.noreply.github.com> Signed-off-by: Matteo Mortari * Update RELEASE.md Co-authored-by: Alessio Pragliola <83355398+Al-Pragliola@users.noreply.github.com> Signed-off-by: Matteo Mortari --------- Signed-off-by: Matteo Mortari Co-authored-by: Alessio Pragliola <83355398+Al-Pragliola@users.noreply.github.com> --- RELEASE.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/RELEASE.md b/RELEASE.md index e39f95f4c3..223cfc8459 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -17,10 +17,10 @@ The Kubeflow Model Registry per governance of the Kubeflow Community, Kubeflow P The Release of the Kubeflow Model Registry provides: - a container image for the Backend; known as the "KF MR Go REST server" -- a Python client to be used in Jupyter notebook, programmatically, or that can be integrated in the Kubeflow SDK; known as the "MR py client" +- a Python client to be used in a Jupyter notebook, programmatically, or that can be integrated in the Kubeflow SDK; known as the "MR py client" - an optional Model Registry Custom Storage Initializer container image for KServe; the "Model Registry CSI" -- a collection of Kubernetes Manifest, which get synchronized to the `kubeflow/manifests` repository -- an update the the Kubeflow website +- a collection of Kubernetes Manifests, which get synchronized to the `kubeflow/manifests` repository +- an update to the Kubeflow website # Instructions From b7b4690731ba1e73627b813779e3a6fe43b3409d Mon Sep 17 00:00:00 2001 From: Matteo Mortari Date: Wed, 7 May 2025 12:02:40 +0200 Subject: [PATCH 10/44] docs(py): minor fix for the tutorial (#1058) - in the previous section, the client is referred as `registry.method()` - suggest to the reader the expected import, useful for copy-paste Signed-off-by: Matteo Mortari --- clients/python/README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/clients/python/README.md b/clients/python/README.md index 0c092b7b56..faa64c0ffc 100644 --- a/clients/python/README.md +++ b/clients/python/README.md @@ -201,12 +201,14 @@ In order to utilize this method you must instantiate an `upload_params` object w Common S3 env vars will be automatically read, such ass the access_key_id, etc. It can also be provided explicitly in the `S3Params` object if desired. ```python +from model_registry.utils import S3Params + s3_upload_params = S3Params( bucket_name="my-bucket", s3_prefix="models/my_fraud_model", ) -registered_model = client.upload_artifact_and_register_model( +registered_model = registry.upload_artifact_and_register_model( name="hello_world_model", model_files_path="/home/user-01/models/model_training_01", # If the model consists of a single file, such as a .onnx file, you can specify that as well @@ -243,12 +245,14 @@ First, you must ensure you are logged in the to appropriate OCI registry using Full example: ```python +from model_registry.utils import OCIParams + oci_upload_params = OCIParams( base_image="busybox", oci_ref="registry.example.com/acme_org/hello_world_model:0.0.1" ) -registered_model = client.upload_artifact_and_register_model( +registered_model = registry.upload_artifact_and_register_model( name="hello_world_model", model_files_path="/home/user-01/models/model_training_01", # If the model consists of a single file, such as a .onnx file, you can specify that as well From 565f49efdf128f0a3cf54c356e6ef1a06d67e27c Mon Sep 17 00:00:00 2001 From: Eder Ignatowicz Date: Wed, 7 May 2025 12:44:39 -0400 Subject: [PATCH 11/44] chore(bff): cleanup as a fup to #918 (#1073) Signed-off-by: Eder Ignatowicz --- clients/ui/bff/internal/api/errors.go | 8 ++++++-- clients/ui/bff/internal/api/middleware.go | 13 +++++++------ 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/clients/ui/bff/internal/api/errors.go b/clients/ui/bff/internal/api/errors.go index 275a814875..9c4b938191 100644 --- a/clients/ui/bff/internal/api/errors.go +++ b/clients/ui/bff/internal/api/errors.go @@ -3,9 +3,10 @@ package api import ( "encoding/json" "fmt" - "github.com/kubeflow/model-registry/ui/bff/internal/integrations/mrserver" "net/http" "strconv" + + "github.com/kubeflow/model-registry/ui/bff/internal/integrations/mrserver" ) type HTTPError struct { @@ -43,11 +44,14 @@ func (app *App) badRequestResponse(w http.ResponseWriter, r *http.Request, err e } func (app *App) forbiddenResponse(w http.ResponseWriter, r *http.Request, message string) { + // Log the detailed error message as a warning + app.logger.Warn("Access forbidden", "message", message, "method", r.Method, "uri", r.URL.RequestURI()) + httpError := &mrserver.HTTPError{ StatusCode: http.StatusForbidden, ErrorResponse: mrserver.ErrorResponse{ Code: strconv.Itoa(http.StatusForbidden), - Message: message, + Message: "Access forbidden", }, } app.errorResponse(w, r, httpError) diff --git a/clients/ui/bff/internal/api/middleware.go b/clients/ui/bff/internal/api/middleware.go index a7880fd912..d14415271b 100644 --- a/clients/ui/bff/internal/api/middleware.go +++ b/clients/ui/bff/internal/api/middleware.go @@ -3,13 +3,14 @@ package api import ( "context" "fmt" - "github.com/kubeflow/model-registry/ui/bff/internal/integrations/kubernetes" - "github.com/kubeflow/model-registry/ui/bff/internal/integrations/mrserver" "log/slog" "net/http" "runtime/debug" "strings" + "github.com/kubeflow/model-registry/ui/bff/internal/integrations/kubernetes" + "github.com/kubeflow/model-registry/ui/bff/internal/integrations/mrserver" + "github.com/google/uuid" "github.com/julienschmidt/httprouter" "github.com/kubeflow/model-registry/ui/bff/internal/constants" @@ -180,11 +181,11 @@ func (app *App) RequireListServiceAccessInNamespace(next func(http.ResponseWrite allowed, err := client.CanListServicesInNamespace(ctx, identity, namespace) if err != nil { - app.forbiddenResponse(w, r, fmt.Sprintf("failed to perform SAR: %v", err)) + app.forbiddenResponse(w, r, fmt.Sprintf("SAR or SelfSAR failed for namespace %s: %v", namespace, err)) return } if !allowed { - app.forbiddenResponse(w, r, "access denied") + app.forbiddenResponse(w, r, fmt.Sprintf("SAR or SelfSAR denied access to namespace %s", namespace)) return } @@ -228,11 +229,11 @@ func (app *App) RequireAccessToService(next func(http.ResponseWriter, *http.Requ allowed, err := client.CanAccessServiceInNamespace(r.Context(), identity, namespace, serviceName) if err != nil { - app.forbiddenResponse(w, r, "failed to perform SAR: %v") + app.forbiddenResponse(w, r, fmt.Sprintf("SAR or SelfSAR AccessReview failed for service %s in namespace %s: %v", serviceName, namespace, err)) return } if !allowed { - app.forbiddenResponse(w, r, "access denied") + app.forbiddenResponse(w, r, fmt.Sprintf("SAR or SelfSAR AccessReview denied access to service %s in namespace %s", serviceName, namespace)) return } From e409d9fdca7ff6d0d3ea2ca12fc249e3da126a7c Mon Sep 17 00:00:00 2001 From: mginfn <116359611+mginfn@users.noreply.github.com> Date: Wed, 7 May 2025 21:02:39 +0200 Subject: [PATCH 12/44] chore: Update ADOPTERS.md (#1077) Signed-off-by: mginfn <116359611+mginfn@users.noreply.github.com> --- ADOPTERS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ADOPTERS.md b/ADOPTERS.md index 3bf382de69..730f14c2e2 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -6,4 +6,5 @@ Below are the adopters of the Model Registry project. If you are using Model Reg |-------------------------------|--------------------------------------------|--------------------------------------------|-----------------------------------------------------------------------| | [Pepsico](https://www.pepsico.com/) | [@milosjava](https://github.com/milosjava) | Experimenting | Evaluating a transition from Azure Model Registry to Kubeflow Model Registry | | [Red Hat](https://www.redhat.com) | [@rareddy](https://github.com/rareddy)| Production | Kubeflow Model Registry is part of [OpenShift AI](https://www.redhat.com/en/products/ai/openshift-ai) | +| [INFN (National Institute for Nuclear Physics)](https://www.infn.it/en/) | [@mginfn](https://github.com/mginfn) | Experimenting | Building a platform for running ML workflows | | < company name here> | < your github handle here > | | | From 01c9830488b59ff02a24e90c92fff75d109eea22 Mon Sep 17 00:00:00 2001 From: Matteo Mortari Date: Thu, 8 May 2025 10:42:40 +0200 Subject: [PATCH 13/44] gha: workflow for comment first-time PR, onboarding (#1053) instead of just relying on self-assessed bulletpoint in PR template: https://github.com/kubeflow/model-registry/blame/de5f225d96a4daeca77506d233082b1c4ea5afa3/.github/pull_request_template.md#L21 this adds a comment to help out with the review of the PR. Signed-off-by: Matteo Mortari --- .../workflows/first-time-contributor-pr.yml | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .github/workflows/first-time-contributor-pr.yml diff --git a/.github/workflows/first-time-contributor-pr.yml b/.github/workflows/first-time-contributor-pr.yml new file mode 100644 index 0000000000..2fbfa66867 --- /dev/null +++ b/.github/workflows/first-time-contributor-pr.yml @@ -0,0 +1,28 @@ +name: Welcome first-time contributors +on: + pull_request_target: + types: + - opened +permissions: + issues: write + pull-requests: read + +# do NOT: add actions/checkout to this flow, add-third party scripts, or auto-trigger CI jobs +# goal: this is meant to remind maintainers/approvers to add labels to ensure all tests are executed before merging +# and avoid merging without realizing that required tests has not been run; complementary to bulletpoint in template: https://github.com/kubeflow/model-registry/blame/de5f225d96a4daeca77506d233082b1c4ea5afa3/.github/pull_request_template.md#L21 +jobs: + welcome: + runs-on: ubuntu-latest + if: github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR' + steps: + - name: Add a comment to the PR + uses: actions/github-script@v7 + with: + script: | + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: "Maintainers: let's ensure the label `ok-to-test` has been maintained and all the tests has been executed before merging.

Thank you for your first Pull Request!🎉🎉" + }) +# do NOT: add actions/checkout to this flow, add-third party scripts, or auto-trigger CI jobs From 8292c4a4f88387c59d94453d9b62e5e8952898f6 Mon Sep 17 00:00:00 2001 From: Matteo Mortari Date: Thu, 8 May 2025 10:46:40 +0200 Subject: [PATCH 14/44] doc(py): fix by move this section in the correct place (#1054) Signed-off-by: Matteo Mortari --- clients/python/README.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/clients/python/README.md b/clients/python/README.md index faa64c0ffc..23b8250c9b 100644 --- a/clients/python/README.md +++ b/clients/python/README.md @@ -188,6 +188,12 @@ By default, all queries will be `ascending`, but this method is also available f > Advanced usage note: You can also set the `page_size()` that you want the Pager to use when invoking the Model Registry backend. > When using it as an iterator, it will automatically manage pages for you. +#### Implementation notes + +The pager will manage pages for you in order to prevent infinite looping. +Currently, the Model Registry backend treats model lists as a circular buffer, and **will not end iteration** for you. + + ### Uploading local models to external storage and registering them To both upload and register a model, use the convenience method `upload_artifact_and_register_model`. @@ -300,11 +306,6 @@ oci_upload_params = OCIParams( ) ``` -#### Implementation notes - -The pager will manage pages for you in order to prevent infinite looping. -Currently, the Model Registry backend treats model lists as a circular buffer, and **will not end iteration** for you. - ### Running ModelRegistry on Ray or Uvloop When running `ModelRegistry` on a platform that sets a custom event loop that cannot be nested, an error will occur. From a0f41af77a69cd9c50091127c5a515bf323bc923 Mon Sep 17 00:00:00 2001 From: Matteo Mortari Date: Thu, 8 May 2025 10:47:39 +0200 Subject: [PATCH 15/44] docs: add Blog about KF 1.10 entry (#1056) Signed-off-by: Matteo Mortari --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 300defb0c0..364e19cbbd 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ Model registry provides a central repository for model developers to store and m 1. Introduction - [What is Kubeflow Model Registry](https://www.kubeflow.org/docs/components/model-registry/overview/) - [Blog KF 1.9 introducing Model Registry](https://blog.kubeflow.org/kubeflow-1.9-release/#model-registry) + - [Blog KF 1.10 introducing UI for Model Registry, CSI, and other features](https://blog.kubeflow.org/kubeflow-1.10-release/#model-registry) 2. Installation - [installing Model Registry standalone](https://www.kubeflow.org/docs/components/model-registry/installation/#standalone-installation) - [installing Model Registry with Kubeflow manifests](https://github.com/kubeflow/manifests/tree/master/apps/model-registry/upstream#readme) From d7aa8161275c87b6cf122943f18a1896f921e003 Mon Sep 17 00:00:00 2001 From: Eder Ignatowicz Date: Thu, 8 May 2025 09:00:40 -0400 Subject: [PATCH 16/44] chore(bff): adding vscode/cursor debug capabilities on bff (#1072) Signed-off-by: Eder Ignatowicz --- clients/ui/bff/.gitignore | 6 ++- clients/ui/bff/.vscode/launch.json | 68 ++++++++++++++++++++++++++++++ clients/ui/bff/.vscode/tasks.json | 13 ++++++ clients/ui/bff/Makefile | 6 +++ 4 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 clients/ui/bff/.vscode/launch.json create mode 100644 clients/ui/bff/.vscode/tasks.json diff --git a/clients/ui/bff/.gitignore b/clients/ui/bff/.gitignore index ee5236afe8..79751c7cb3 100644 --- a/clients/ui/bff/.gitignore +++ b/clients/ui/bff/.gitignore @@ -1,2 +1,6 @@ /bin -/static-local-run \ No newline at end of file +/static-local-run +# Ignore personal vscode settings but keep launch/tasks +.vscode/* +!.vscode/launch.json +!.vscode/tasks.json diff --git a/clients/ui/bff/.vscode/launch.json b/clients/ui/bff/.vscode/launch.json new file mode 100644 index 0000000000..13ba91b86c --- /dev/null +++ b/clients/ui/bff/.vscode/launch.json @@ -0,0 +1,68 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Debug BFF (default mocks enabled)", + "type": "go", + "request": "launch", + "mode": "exec", + "program": "${workspaceFolder}/bin/bff", + "args": [ + "--port=4000", + "--auth-method=internal", + "--auth-token-header=Authorization", + "--auth-token-prefix=Bearer", + "--static-assets-dir=./static", + "--mock-k8s-client=true", + "--mock-mr-client=true", + "--dev-mode=false", + "--dev-mode-port=8080", + "--standalone-mode=true", + "--log-level=info" + ], + "preLaunchTask": "make build debug" + }, + { + "name": "Debug BFF (MOCK_K8S_CLIENT=false, MOCK_MR_CLIENT=true)", + "type": "go", + "request": "launch", + "mode": "exec", + "program": "${workspaceFolder}/bin/bff", + "args": [ + "--port=4000", + "--auth-method=internal", + "--auth-token-header=Authorization", + "--auth-token-prefix=Bearer", + "--static-assets-dir=./static", + "--mock-k8s-client=false", + "--mock-mr-client=true", + "--dev-mode=false", + "--dev-mode-port=8080", + "--standalone-mode=true", + "--log-level=info" + ], + "preLaunchTask": "make build debug" + }, + { + "name": "Debug BFF (MOCK_K8S_CLIENT=false, MOCK_MR_CLIENT=false)", + "type": "go", + "request": "launch", + "mode": "exec", + "program": "${workspaceFolder}/bin/bff", + "args": [ + "--port=4000", + "--auth-method=internal", + "--auth-token-header=Authorization", + "--auth-token-prefix=Bearer", + "--static-assets-dir=./static", + "--mock-k8s-client=false", + "--mock-mr-client=false", + "--dev-mode=false", + "--dev-mode-port=8080", + "--standalone-mode=true", + "--log-level=info" + ], + "preLaunchTask": "make build debug" + } + ] +} diff --git a/clients/ui/bff/.vscode/tasks.json b/clients/ui/bff/.vscode/tasks.json new file mode 100644 index 0000000000..072b246808 --- /dev/null +++ b/clients/ui/bff/.vscode/tasks.json @@ -0,0 +1,13 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "make build debug", + "type": "shell", + "command": "make build DEBUG=true", + "group": "build", + "problemMatcher": [] + } + ] + } + \ No newline at end of file diff --git a/clients/ui/bff/Makefile b/clients/ui/bff/Makefile index 986cc1fb3a..3a4ee6de16 100644 --- a/clients/ui/bff/Makefile +++ b/clients/ui/bff/Makefile @@ -13,6 +13,8 @@ STATIC_ASSETS_DIR ?= ./static ENVTEST_K8S_VERSION = 1.29.0 LOG_LEVEL ?= info ALLOWED_ORIGINS ?= "" +DEBUG ?= false +GCFLAGS_DEBUG := -gcflags="all=-N -l" .PHONY: all all: build @@ -48,7 +50,11 @@ test: fmt vet envtest ## Runs the full test suite. .PHONY: build build: fmt vet test ## Builds the project to produce a binary executable. +ifeq ($(DEBUG), true) ## If DEBUG is true, build with debugging symbols + go build $(GCFLAGS_DEBUG) -o bin/bff ./cmd +else go build -o bin/bff ./cmd +endif .PHONY: run run: fmt vet envtest ## Runs the project. From a2b83f7bbbf3b8e19ce23a18ebda0a55de64ca47 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 8 May 2025 14:51:42 +0000 Subject: [PATCH 17/44] build(deps): bump http-proxy-middleware from 2.0.7 to 2.0.9 in /clients/ui/frontend (#986) Bumps [http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware) from 2.0.7 to 2.0.9. - [Release notes](https://github.com/chimurai/http-proxy-middleware/releases) - [Changelog](https://github.com/chimurai/http-proxy-middleware/blob/v2.0.9/CHANGELOG.md) - [Commits](https://github.com/chimurai/http-proxy-middleware/compare/v2.0.7...v2.0.9) --- updated-dependencies: - dependency-name: http-proxy-middleware dependency-version: 2.0.9 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- clients/ui/frontend/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/clients/ui/frontend/package-lock.json b/clients/ui/frontend/package-lock.json index 363cb38da2..4636a77f97 100644 --- a/clients/ui/frontend/package-lock.json +++ b/clients/ui/frontend/package-lock.json @@ -12017,9 +12017,9 @@ } }, "node_modules/http-proxy-middleware": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz", - "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==", + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", + "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", "dev": true, "license": "MIT", "dependencies": { From 764ca98418efc184709430bc2b29c547dce54c87 Mon Sep 17 00:00:00 2001 From: Jenny <32821331+jenny-s51@users.noreply.github.com> Date: Thu, 8 May 2025 11:37:40 -0400 Subject: [PATCH 18/44] Apply Iconography, Descriptions, and Color Palette to Page Sections (#992) Signed-off-by: Jenny <32821331+jenny-s51@users.noreply.github.com> fix tests --- .../modelRegistry/ModelRegistryCoreLoader.tsx | 23 ++++++------ .../modelRegistry/screens/ModelRegistry.tsx | 25 +++++++------ .../pages/settings/ModelRegistrySettings.tsx | 36 ++++++++++--------- 3 files changed, 44 insertions(+), 40 deletions(-) diff --git a/clients/ui/frontend/src/app/pages/modelRegistry/ModelRegistryCoreLoader.tsx b/clients/ui/frontend/src/app/pages/modelRegistry/ModelRegistryCoreLoader.tsx index 958a9e4f2b..daa3e8004e 100644 --- a/clients/ui/frontend/src/app/pages/modelRegistry/ModelRegistryCoreLoader.tsx +++ b/clients/ui/frontend/src/app/pages/modelRegistry/ModelRegistryCoreLoader.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { Navigate, Outlet, useParams } from 'react-router-dom'; -import { Bullseye, Alert, Divider } from '@patternfly/react-core'; +import { Bullseye, Alert, Divider, Stack, StackItem } from '@patternfly/react-core'; import ApplicationsPage from '~/shared/components/ApplicationsPage'; import { ModelRegistrySelectorContext } from '~/app/context/ModelRegistrySelectorContext'; import { ProjectObjectType, typedEmptyImage } from '~/shared/components/design/utils'; @@ -104,18 +104,19 @@ const ModelRegistryCoreLoader: React.FC = ({ return ( - ) : ( - 'Model Registry' - ) + } description={ - !isMUITheme ? ( - 'Select a model registry to view and manage your registered models. Model registries provide a structured and organized way to store, share, version, deploy, and track models.' - ) : ( - - ) + + + Select a model registry to view and manage your registered models. Model registries + provide a structured and organized way to store, share, version, deploy, and track + models. + + + + + } headerContent={ = ({ ...pageProps }) => { const [registeredModels, modelsLoaded, modelsLoadError, refreshModels] = useRegisteredModels(); const [modelVersions, versionsLoaded, versionsLoadError, refreshVersions] = useModelVersions(); - const { isMUITheme } = useThemeContext(); const loaded = modelsLoaded && versionsLoaded; const loadError = modelsLoadError || versionsLoadError; @@ -38,18 +36,19 @@ const ModelRegistry: React.FC = ({ ...pageProps }) => { - ) : ( - 'Model Registry' - ) + } description={ - !isMUITheme ? ( - 'Select a model registry to view and manage your registered models. Model registries provide a structured and organized way to store, share, version, deploy, and track models.' - ) : ( - - ) + + + Select a model registry to view and manage your registered models. Model registries + provide a structured and organized way to store, share, version, deploy, and track + models. + + + + + } headerContent={ { loadError, // refreshModelRegistries ] = useModelRegistries(queryParams); - const { isMUITheme } = useThemeContext(); const [createModalOpen, setCreateModalOpen] = React.useState(false); // TODO: [Midstream] Implement this when adding logic for rules review // const { refreshRulesReview } = React.useContext(ModelRegistrySelectorContext); @@ -36,21 +41,20 @@ const ModelRegistrySettings: React.FC = () => { <> - ) : ( - 'Model Registry Settings' - ) + } description={ - !isMUITheme ? ( - 'Manage model registry settings for all users in your organization.' - ) : ( - - ) + + + Manage model registry settings for all users in your organization. + + + + + } loaded={loaded} loadError={loadError} From 009614575444e17716b5729496fc868acd8c95a5 Mon Sep 17 00:00:00 2001 From: Jieke Choo Date: Fri, 9 May 2025 01:24:23 +0800 Subject: [PATCH 19/44] Update ADOPTERS.md (#1087) Signed-off-by: Jieke Choo --- ADOPTERS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ADOPTERS.md b/ADOPTERS.md index 730f14c2e2..b0f43e19d7 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -7,4 +7,5 @@ Below are the adopters of the Model Registry project. If you are using Model Reg | [Pepsico](https://www.pepsico.com/) | [@milosjava](https://github.com/milosjava) | Experimenting | Evaluating a transition from Azure Model Registry to Kubeflow Model Registry | | [Red Hat](https://www.redhat.com) | [@rareddy](https://github.com/rareddy)| Production | Kubeflow Model Registry is part of [OpenShift AI](https://www.redhat.com/en/products/ai/openshift-ai) | | [INFN (National Institute for Nuclear Physics)](https://www.infn.it/en/) | [@mginfn](https://github.com/mginfn) | Experimenting | Building a platform for running ML workflows | +| [YIQISOFT](https://www.yiqisoft.com) | [@jiekechoo](https://github.com/jiekechoo) | Production | Model Registry is part of [YiAI](https://www.yiqisoft.cn/products/)| | < company name here> | < your github handle here > | | | From fdca36c83986c102994c06d783c2470fe6869714 Mon Sep 17 00:00:00 2001 From: Eder Ignatowicz Date: Thu, 8 May 2025 14:45:40 -0400 Subject: [PATCH 20/44] chore(deps): bump Go to 1.24.3 and update k8s/client dependencies (#1076) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Upgrade Go version to 1.24.3 across gha, Dockerfile, go.mod - Bump Kubernetes dependencies to v0.33.0 - Update golangci-lint action and version (v7 → v8, v2.0.2 → v2.1.0) - Refresh go.sum with indirect dependency updates - Minor README cleanup and formatting fixes Signed-off-by: Eder Ignatowicz --- .github/workflows/ui-bff-build.yml | 8 +++--- clients/ui/Dockerfile | 2 +- clients/ui/bff/README.md | 41 +++++++++++++++++----------- clients/ui/bff/go.mod | 21 +++++++-------- clients/ui/bff/go.sum | 43 +++++++++++++++--------------- 5 files changed, 61 insertions(+), 54 deletions(-) diff --git a/.github/workflows/ui-bff-build.yml b/.github/workflows/ui-bff-build.yml index 82fb45ccdf..786e019d60 100644 --- a/.github/workflows/ui-bff-build.yml +++ b/.github/workflows/ui-bff-build.yml @@ -9,7 +9,7 @@ on: - "!DOCKERFILE*" - "!**.gitignore" - "!**.md" - + pull_request: paths: - "clients/ui/**" @@ -27,16 +27,16 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: "1.23.5" + go-version: "1.24.3" - name: Clean working-directory: clients/ui/bff run: make clean - name: Lint - uses: golangci/golangci-lint-action@v7 + uses: golangci/golangci-lint-action@v8 with: - version: v2.0.2 + version: v2.1.0 working-directory: clients/ui/bff/ - name: Build diff --git a/clients/ui/Dockerfile b/clients/ui/Dockerfile index d61463aea6..6de3416e96 100644 --- a/clients/ui/Dockerfile +++ b/clients/ui/Dockerfile @@ -4,7 +4,7 @@ ARG BFF_SOURCE_CODE=./bff # Set the base images for the build stages ARG NODE_BASE_IMAGE=node:20 -ARG GOLANG_BASE_IMAGE=golang:1.23.5 +ARG GOLANG_BASE_IMAGE=golang:1.24.3 ARG DISTROLESS_BASE_IMAGE=gcr.io/distroless/static:nonroot # UI build stage diff --git a/clients/ui/bff/README.md b/clients/ui/bff/README.md index 426807dae2..70c45a40ba 100644 --- a/clients/ui/bff/README.md +++ b/clients/ui/bff/README.md @@ -6,7 +6,7 @@ The Kubeflow Model Registry UI BFF is the _backend for frontend_ (BFF) used by t ### Dependencies -- Go >= 1.23.5 +- Go >= 1.24.3 ### Running model registry & ml-metadata @@ -52,6 +52,7 @@ make run LOG_LEVEL=DEBUG ``` ## Running the linter locally + The BFF directory uses golangci-lint to combine multiple linters for a more comprehensive linting process. To install and run simply use: ```shell @@ -62,6 +63,7 @@ make lint For more information on configuring golangci-lint see the [documentation](https://golangci-lint.run/). ## Running the linter locally + The BFF directory uses golangci-lint to combine multiple linters for a more comprehensive linting process. To install and run simply use: ```shell @@ -98,15 +100,18 @@ See the [OpenAPI specification](../api/openapi/mod-arch.yaml) for a complete lis You will need to inject your requests with a `kubeflow-userid` header and namespace for authorization purposes. When running the service with the mocked Kubernetes client (MOCK_K8S_CLIENT=true), the user `user@example.com` is preconfigured with the necessary RBAC permissions to perform these actions. + ``` -# GET /v1/healthcheck +# GET /v1/healthcheck curl -i "localhost:4000/healthcheck" -``` ``` -# GET /v1/user + +``` +# GET /v1/user curl -i -H "kubeflow-userid: user@example.com" "localhost:4000/api/v1/user" curl -i -H "Authorization: Bearer $TOKEN" "localhost:4000/api/v1/user" ``` + ``` # GET /v1/namespaces (only works when DEV_MODE=true) curl -i -H "kubeflow-userid: user@example.com" "localhost:4000/api/v1/namespaces" @@ -376,10 +381,10 @@ The mock Kubernetes environment is activated when the environment variable `MOCK The BFF supports two authentication modes, selectable via the --auth-method flag or AUTH_METHOD environment variable (default: internal): - `internal`: Uses the credentials of the running backend. - - If running inside the cluster, it uses the pod’s service account. - - If running locally (e.g. for development), it uses the current user's active kubeconfig context. - - In this mode, user identity is passed via the kubeflow-userid and optionally kubeflow-groups headers. - - This is the default mode and works well with mock clients and local testing. + - If running inside the cluster, it uses the pod’s service account. + - If running locally (e.g. for development), it uses the current user's active kubeconfig context. + - In this mode, user identity is passed via the kubeflow-userid and optionally kubeflow-groups headers. + - This is the default mode and works well with mock clients and local testing. - `user_token`: Uses a user-provided Bearer token for authentication. - The token must be passed in the `Authorization` header using the Bearer schema (e.g., `Authorization: Bearer `). - This method works with OIDC-authenticated flows and frontend proxies that preserve standard Bearer tokens. @@ -388,18 +393,21 @@ The BFF supports two authentication modes, selectable via the --auth-method flag Authorization is performed using Kubernetes access reviews, validating whether the user (or their groups) can perform certain actions. There are two review mechanisms depending on the authentication mode: + - Internal mode (auth-method=internal): -Uses SubjectAccessReview (SAR) to check whether the impersonated user (from kubeflow-userid and kubeflow-groups headers) has the required permissions. + Uses SubjectAccessReview (SAR) to check whether the impersonated user (from kubeflow-userid and kubeflow-groups headers) has the required permissions. - User token mode (auth-method=user_token): Uses SelfSubjectAccessReview (SSAR), leveraging the Bearer token provided in the `Authorization` header to check the current user's permissions directly. ##### Authorization logic -* Access to Model Registry List (/v1/model_registry): - - Checks for get and list on services in the target namespace. - - If the user (or groups, in internal mode) has permission, access is granted. -* Access to Specific Model Registry Endpoints (/v1/model_registry/{model_registry_id}/...): - - Checks for get on the specific service (identified by model_registry_id) in the namespace. - - If authorized, access is granted. +- Access to Model Registry List (/v1/model_registry): + + - Checks for get and list on services in the target namespace. + - If the user (or groups, in internal mode) has permission, access is granted. + +- Access to Specific Model Registry Endpoints (/v1/model_registry/{model_registry_id}/...): + - Checks for get on the specific service (identified by model_registry_id) in the namespace. + - If authorized, access is granted. ##### Overriding Token Header and Prefix @@ -408,18 +416,19 @@ By default, the BFF expects the token to be passed in the standard Authorization ```shell Authorization: Bearer ``` + If you're integrating with a proxy or tool that uses a custom header (e.g., X-Forwarded-Access-Token without a prefix), you can override this behavior using environment variables or Makefile arguments. ```shell make run AUTH_METHOD=user_token AUTH_TOKEN_HEADER=X-Forwarded-Access-Token AUTH_TOKEN_PREFIX="" ``` + This will configure the BFF to extract the raw token from the following header: ```shell X-Forwarded-Access-Token: ``` - #### 5. How do I allow CORS requests from other origins When serving the UI directly from the BFF there is no need for any CORS headers to be served, by default they are turned off for security reasons. diff --git a/clients/ui/bff/go.mod b/clients/ui/bff/go.mod index b377d70800..6637bb8a68 100644 --- a/clients/ui/bff/go.mod +++ b/clients/ui/bff/go.mod @@ -1,6 +1,6 @@ module github.com/kubeflow/model-registry/ui/bff -go 1.23.5 +go 1.24.3 require ( github.com/brianvoe/gofakeit/v7 v7.1.2 @@ -11,9 +11,9 @@ require ( github.com/onsi/gomega v1.37.0 github.com/rs/cors v1.11.1 github.com/stretchr/testify v1.10.0 - k8s.io/api v0.32.3 - k8s.io/apimachinery v0.32.3 - k8s.io/client-go v0.32.3 + k8s.io/api v0.33.0 + k8s.io/apimachinery v0.33.0 + k8s.io/client-go v0.33.0 sigs.k8s.io/controller-runtime v0.19.1 ) @@ -29,10 +29,8 @@ require ( github.com/go-openapi/swag v0.23.0 // indirect github.com/go-task/slim-sprig/v3 v3.0.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/protobuf v1.5.4 // indirect - github.com/google/gnostic-models v0.6.8 // indirect + github.com/google/gnostic-models v0.6.9 // indirect github.com/google/go-cmp v0.7.0 // indirect - github.com/google/gofuzz v1.2.0 // indirect github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect @@ -50,11 +48,11 @@ require ( go.uber.org/zap v1.26.0 // indirect golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect golang.org/x/net v0.38.0 // indirect - golang.org/x/oauth2 v0.23.0 // indirect + golang.org/x/oauth2 v0.27.0 // indirect golang.org/x/sys v0.32.0 // indirect golang.org/x/term v0.30.0 // indirect golang.org/x/text v0.23.0 // indirect - golang.org/x/time v0.7.0 // indirect + golang.org/x/time v0.9.0 // indirect golang.org/x/tools v0.31.0 // indirect google.golang.org/protobuf v1.36.5 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect @@ -62,9 +60,10 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/apiextensions-apiserver v0.31.0 // indirect k8s.io/klog/v2 v2.130.1 // indirect - k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect + k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff // indirect k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect + sigs.k8s.io/randfill v1.0.0 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.6.0 // indirect sigs.k8s.io/yaml v1.4.0 // indirect ) diff --git a/clients/ui/bff/go.sum b/clients/ui/bff/go.sum index 98b639d9b4..0810ae5b45 100644 --- a/clients/ui/bff/go.sum +++ b/clients/ui/bff/go.sum @@ -33,16 +33,12 @@ github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1v github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= -github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= -github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= +github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= +github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= -github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J0b1vyeLSOYI8bm5wbJM/8yDe8= github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= @@ -92,8 +88,8 @@ github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= @@ -134,8 +130,8 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= -golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= -golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.27.0 h1:da9Vo7/tDv5RH/7nZDz1eMGS/q1Vv1N/7FCrBhI9I3M= +golang.org/x/oauth2 v0.27.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -150,8 +146,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= -golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= -golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= +golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -176,25 +172,28 @@ gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.32.3 h1:Hw7KqxRusq+6QSplE3NYG4MBxZw1BZnq4aP4cJVINls= -k8s.io/api v0.32.3/go.mod h1:2wEDTXADtm/HA7CCMD8D8bK4yuBUptzaRhYcYEEYA3k= +k8s.io/api v0.33.0 h1:yTgZVn1XEe6opVpP1FylmNrIFWuDqe2H0V8CT5gxfIU= +k8s.io/api v0.33.0/go.mod h1:CTO61ECK/KU7haa3qq8sarQ0biLq2ju405IZAd9zsiM= k8s.io/apiextensions-apiserver v0.31.0 h1:fZgCVhGwsclj3qCw1buVXCV6khjRzKC5eCFt24kyLSk= k8s.io/apiextensions-apiserver v0.31.0/go.mod h1:b9aMDEYaEe5sdK+1T0KU78ApR/5ZVp4i56VacZYEHxk= -k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U= -k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= -k8s.io/client-go v0.32.3 h1:RKPVltzopkSgHS7aS98QdscAgtgah/+zmpAogooIqVU= -k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY= +k8s.io/apimachinery v0.33.0 h1:1a6kHrJxb2hs4t8EE5wuR/WxKDwGN1FKH3JvDtA0CIQ= +k8s.io/apimachinery v0.33.0/go.mod h1:BHW0YOu7n22fFv/JkYOEfkUYNRN0fj0BlvMFWA7b+SM= +k8s.io/client-go v0.33.0 h1:UASR0sAYVUzs2kYuKn/ZakZlcs2bEHaizrrHUZg0G98= +k8s.io/client-go v0.33.0/go.mod h1:kGkd+l/gNGg8GYWAPr0xF1rRKvVWvzh9vmZAMXtaKOg= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f h1:GA7//TjRY9yWGy1poLzYYJJ4JRdzg3+O6e8I+e+8T5Y= -k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f/go.mod h1:R/HEjbvWI0qdfb8viZUeVZm0X6IZnxAydC7YU42CMw4= +k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff h1:/usPimJzUKKu+m+TE36gUyGcf03XZEP0ZIKgKj35LS4= +k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff/go.mod h1:5jIi+8yX4RIb8wk3XwBo5Pq2ccx4FP10ohkbSKCZoK8= k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro= k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= sigs.k8s.io/controller-runtime v0.19.1 h1:Son+Q40+Be3QWb+niBXAg2vFiYWolDjjRfO8hn/cxOk= sigs.k8s.io/controller-runtime v0.19.1/go.mod h1:iRmWllt8IlaLjvTTDLhRBXIEtkCK6hwVBJJsYS9Ajf4= sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= -sigs.k8s.io/structured-merge-diff/v4 v4.4.2 h1:MdmvkGuXi/8io6ixD5wud3vOLwc1rj0aNqRlpuvjmwA= -sigs.k8s.io/structured-merge-diff/v4 v4.4.2/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4= +sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= +sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= +sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= +sigs.k8s.io/structured-merge-diff/v4 v4.6.0 h1:IUA9nvMmnKWcj5jl84xn+T5MnlZKThmUW1TdblaLVAc= +sigs.k8s.io/structured-merge-diff/v4 v4.6.0/go.mod h1:dDy58f92j70zLsuZVuUX5Wp9vtxXpaZnkPGWeqDfCps= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= From e83da4aadc4680b5cb6999753c259b21ba144f09 Mon Sep 17 00:00:00 2001 From: Eder Ignatowicz Date: Thu, 8 May 2025 17:17:40 -0400 Subject: [PATCH 21/44] chore(frontend): update development dependencies (#1089) - Update sass to v1.87.0 - Update TypeScript ESLint packages to v8.31.1 - Update ESLint plugins: - eslint-plugin-prettier to v5.4.0 - eslint-plugin-react to v7.37.5 Signed-off-by: Eder Ignatowicz --- clients/ui/frontend/package-lock.json | 1122 +++++++++++++++---------- clients/ui/frontend/package.json | 10 +- 2 files changed, 677 insertions(+), 455 deletions(-) diff --git a/clients/ui/frontend/package-lock.json b/clients/ui/frontend/package-lock.json index 4636a77f97..5762abef39 100644 --- a/clients/ui/frontend/package-lock.json +++ b/clients/ui/frontend/package-lock.json @@ -78,7 +78,7 @@ "raw-loader": "^4.0.2", "react-refresh": "^0.14.2", "regenerator-runtime": "^0.14.1", - "sass": "^1.83.0", + "sass": "^1.87.0", "sass-loader": "^13.2.0", "serve": "^14.2.4", "speed-measure-webpack-plugin": "^1.5.0", @@ -102,8 +102,8 @@ "node": ">=20.0.0" }, "optionalDependencies": { - "@typescript-eslint/eslint-plugin": "^8.26.1", - "@typescript-eslint/parser": "^8.26.1", + "@typescript-eslint/eslint-plugin": "^8.31.1", + "@typescript-eslint/parser": "^8.31.1", "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", "eslint-import-resolver-node": "^0.3.7", @@ -113,8 +113,8 @@ "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-no-only-tests": "^3.1.0", "eslint-plugin-no-relative-import-paths": "^1.6.1", - "eslint-plugin-prettier": "^5.0.0", - "eslint-plugin-react": "^7.37.2", + "eslint-plugin-prettier": "^5.4.0", + "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.2.0" } }, @@ -2248,9 +2248,9 @@ "license": "MIT" }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", "license": "MIT", "optional": true, "dependencies": { @@ -3997,16 +3997,16 @@ "integrity": "sha512-KyzbsQYXTCxTmwkLlN4GdmTCNlOKnPUpY389loaC4/B0wHNq8Vw4OMIsAPVi4RSSvTaSxitlPAwt3xBTjNIzFA==" }, "node_modules/@pkgr/core": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", - "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.4.tgz", + "integrity": "sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw==", "license": "MIT", "optional": true, "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/unts" + "url": "https://opencollective.com/pkgr" } }, "node_modules/@pmmmwh/react-refresh-webpack-plugin": { @@ -5317,21 +5317,21 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.26.1.tgz", - "integrity": "sha512-2X3mwqsj9Bd3Ciz508ZUtoQQYpOhU/kWoUqIf49H8Z0+Vbh6UF/y0OEYp0Q0axOGzaBGs7QxRwq0knSQ8khQNA==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.32.0.tgz", + "integrity": "sha512-/jU9ettcntkBFmWUzzGgsClEi2ZFiikMX5eEQsmxIAWMOn4H3D4rvHssstmAHGVvrYnaMqdWWWg0b5M6IN/MTQ==", "license": "MIT", "optional": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.26.1", - "@typescript-eslint/type-utils": "8.26.1", - "@typescript-eslint/utils": "8.26.1", - "@typescript-eslint/visitor-keys": "8.26.1", + "@typescript-eslint/scope-manager": "8.32.0", + "@typescript-eslint/type-utils": "8.32.0", + "@typescript-eslint/utils": "8.32.0", + "@typescript-eslint/visitor-keys": "8.32.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.0.1" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5347,16 +5347,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.26.1.tgz", - "integrity": "sha512-w6HZUV4NWxqd8BdeFf81t07d7/YV9s7TCWrQQbG5uhuvGUAW+fq1usZ1Hmz9UPNLniFnD8GLSsDpjP0hm1S4lQ==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.32.0.tgz", + "integrity": "sha512-B2MdzyWxCE2+SqiZHAjPphft+/2x2FlO9YBx7eKE1BCb+rqBlQdhtAEhzIEdozHd55DXPmxBdpMygFJjfjjA9A==", "license": "MIT", "optional": true, "dependencies": { - "@typescript-eslint/scope-manager": "8.26.1", - "@typescript-eslint/types": "8.26.1", - "@typescript-eslint/typescript-estree": "8.26.1", - "@typescript-eslint/visitor-keys": "8.26.1", + "@typescript-eslint/scope-manager": "8.32.0", + "@typescript-eslint/types": "8.32.0", + "@typescript-eslint/typescript-estree": "8.32.0", + "@typescript-eslint/visitor-keys": "8.32.0", "debug": "^4.3.4" }, "engines": { @@ -5372,14 +5372,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.26.1.tgz", - "integrity": "sha512-6EIvbE5cNER8sqBu6V7+KeMZIC1664d2Yjt+B9EWUXrsyWpxx4lEZrmvxgSKRC6gX+efDL/UY9OpPZ267io3mg==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.32.0.tgz", + "integrity": "sha512-jc/4IxGNedXkmG4mx4nJTILb6TMjL66D41vyeaPWvDUmeYQzF3lKtN15WsAeTr65ce4mPxwopPSo1yUUAWw0hQ==", "license": "MIT", "optional": true, "dependencies": { - "@typescript-eslint/types": "8.26.1", - "@typescript-eslint/visitor-keys": "8.26.1" + "@typescript-eslint/types": "8.32.0", + "@typescript-eslint/visitor-keys": "8.32.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5390,16 +5390,16 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.26.1.tgz", - "integrity": "sha512-Kcj/TagJLwoY/5w9JGEFV0dclQdyqw9+VMndxOJKtoFSjfZhLXhYjzsQEeyza03rwHx2vFEGvrJWJBXKleRvZg==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.32.0.tgz", + "integrity": "sha512-t2vouuYQKEKSLtJaa5bB4jHeha2HJczQ6E5IXPDPgIty9EqcJxpr1QHQ86YyIPwDwxvUmLfP2YADQ5ZY4qddZg==", "license": "MIT", "optional": true, "dependencies": { - "@typescript-eslint/typescript-estree": "8.26.1", - "@typescript-eslint/utils": "8.26.1", + "@typescript-eslint/typescript-estree": "8.32.0", + "@typescript-eslint/utils": "8.32.0", "debug": "^4.3.4", - "ts-api-utils": "^2.0.1" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5414,9 +5414,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.26.1.tgz", - "integrity": "sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.32.0.tgz", + "integrity": "sha512-O5Id6tGadAZEMThM6L9HmVf5hQUXNSxLVKeGJYWNhhVseps/0LddMkp7//VDkzwJ69lPL0UmZdcZwggj9akJaA==", "license": "MIT", "optional": true, "engines": { @@ -5428,20 +5428,20 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.26.1.tgz", - "integrity": "sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.32.0.tgz", + "integrity": "sha512-pU9VD7anSCOIoBFnhTGfOzlVFQIA1XXiQpH/CezqOBaDppRwTglJzCC6fUQGpfwey4T183NKhF1/mfatYmjRqQ==", "license": "MIT", "optional": true, "dependencies": { - "@typescript-eslint/types": "8.26.1", - "@typescript-eslint/visitor-keys": "8.26.1", + "@typescript-eslint/types": "8.32.0", + "@typescript-eslint/visitor-keys": "8.32.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", - "ts-api-utils": "^2.0.1" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5468,16 +5468,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.26.1.tgz", - "integrity": "sha512-V4Urxa/XtSUroUrnI7q6yUTD3hDtfJ2jzVfeT3VK0ciizfK2q/zGC0iDh1lFMUZR8cImRrep6/q0xd/1ZGPQpg==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.32.0.tgz", + "integrity": "sha512-8S9hXau6nQ/sYVtC3D6ISIDoJzS1NsCK+gluVhLN2YkBPX+/1wkwyUiDKnxRh15579WoOIyVWnoyIf3yGI9REw==", "license": "MIT", "optional": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.26.1", - "@typescript-eslint/types": "8.26.1", - "@typescript-eslint/typescript-estree": "8.26.1" + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.32.0", + "@typescript-eslint/types": "8.32.0", + "@typescript-eslint/typescript-estree": "8.32.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5492,13 +5492,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.26.1.tgz", - "integrity": "sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.32.0.tgz", + "integrity": "sha512-1rYQTCLFFzOI5Nl0c8LUpJT8HxpwVRn9E4CkMsYfuN6ctmQqExjSTzzSk0Tz2apmXy7WU6/6fyaZVVA/thPN+w==", "license": "MIT", "optional": true, "dependencies": { - "@typescript-eslint/types": "8.26.1", + "@typescript-eslint/types": "8.32.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -6083,13 +6083,13 @@ } }, "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" }, "engines": { "node": ">= 0.4" @@ -6197,16 +6197,16 @@ } }, "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", "license": "MIT", "optional": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -6233,19 +6233,18 @@ } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" }, "engines": { "node": ">= 0.4" @@ -6298,6 +6297,15 @@ "dev": true, "license": "MIT" }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -7108,16 +7116,44 @@ } }, "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -8506,14 +8542,14 @@ } }, "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -8523,29 +8559,29 @@ } }, "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/inspect-js" } }, "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-data-view": "^1.0.1" }, @@ -9112,6 +9148,20 @@ "webpack": "^1 || ^2 || ^3 || ^4 || ^5" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", @@ -9303,57 +9353,62 @@ } }, "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" }, "engines": { "node": ">= 0.4" @@ -9363,13 +9418,10 @@ } }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, "engines": { "node": ">= 0.4" } @@ -9384,27 +9436,28 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.0.tgz", - "integrity": "sha512-tpxqxncxnpw3c93u8n3VOzACmRFoVmWJqbWXvX/JfKbkhBw1oslgPrUfeSt2psuqyEJFD6N/9lg5i7bsKpoq+Q==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", "license": "MIT", "optional": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", + "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.0.3", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", + "get-intrinsic": "^1.2.6", "globalthis": "^1.0.4", - "gopd": "^1.0.1", + "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "iterator.prototype": "^1.1.3", - "safe-array-concat": "^1.1.2" + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" }, "engines": { "node": ">= 0.4" @@ -9418,9 +9471,9 @@ "license": "MIT" }, "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -9430,14 +9483,15 @@ } }, "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.4", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -9454,14 +9508,14 @@ } }, "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "license": "MIT", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { "node": ">= 0.4" @@ -9899,14 +9953,14 @@ "optional": true }, "node_modules/eslint-plugin-prettier": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", - "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.4.0.tgz", + "integrity": "sha512-BvQOvUhkVQM1i63iMETK9Hjud9QhqBnbtT1Zc642p9ynzBuCe5pybkOnvqZIBypXmMlsGcnU4HZ8sCTPfpAexA==", "license": "MIT", "optional": true, "dependencies": { "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.9.1" + "synckit": "^0.11.0" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -9917,7 +9971,7 @@ "peerDependencies": { "@types/eslint": ">=8.0.0", "eslint": ">=8.0.0", - "eslint-config-prettier": "*", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", "prettier": ">=3.0.0" }, "peerDependenciesMeta": { @@ -9930,29 +9984,29 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.37.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.2.tgz", - "integrity": "sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w==", + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", "license": "MIT", "optional": true, "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.2", + "array.prototype.flatmap": "^1.3.3", "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.1.0", + "es-iterator-helpers": "^1.2.1", "estraverse": "^5.3.0", "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.8", + "object.entries": "^1.1.9", "object.fromentries": "^2.0.8", - "object.values": "^1.2.0", + "object.values": "^1.2.1", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.5", "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.11", + "string.prototype.matchall": "^4.0.12", "string.prototype.repeat": "^1.0.0" }, "engines": { @@ -10906,12 +10960,18 @@ } }, "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "license": "MIT", "dependencies": { - "is-callable": "^1.1.3" + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/foreground-child": { @@ -11207,15 +11267,17 @@ } }, "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" }, "engines": { "node": ">= 0.4" @@ -11254,16 +11316,21 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -11282,6 +11349,19 @@ "node": ">=8.0.0" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", @@ -11299,14 +11379,14 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -11525,12 +11605,12 @@ } }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3" + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11573,10 +11653,13 @@ "license": "MIT" }, "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -11604,10 +11687,13 @@ } }, "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -11616,9 +11702,9 @@ } }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -12395,14 +12481,14 @@ } }, "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" + "hasown": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -12429,13 +12515,14 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -12451,13 +12538,16 @@ "license": "MIT" }, "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "license": "MIT", - "optional": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -12467,12 +12557,15 @@ } }, "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "license": "MIT", "dependencies": { - "has-bigints": "^1.0.1" + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12492,13 +12585,13 @@ } }, "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -12558,11 +12651,13 @@ } }, "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "license": "MIT", "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" }, "engines": { @@ -12573,12 +12668,13 @@ } }, "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -12614,13 +12710,15 @@ } }, "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "license": "MIT", - "optional": true, "dependencies": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12650,7 +12748,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "devOptional": true, "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" @@ -12749,19 +12846,6 @@ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "license": "MIT", - "optional": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -12793,12 +12877,13 @@ } }, "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -12864,13 +12949,15 @@ "license": "MIT" }, "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -12884,7 +12971,6 @@ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "license": "MIT", - "optional": true, "engines": { "node": ">= 0.4" }, @@ -12893,12 +12979,12 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7" + "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -12921,12 +13007,13 @@ } }, "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -12936,12 +13023,14 @@ } }, "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -12951,12 +13040,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.14" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -12990,7 +13079,6 @@ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "license": "MIT", - "optional": true, "engines": { "node": ">= 0.4" }, @@ -12999,26 +13087,28 @@ } }, "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-weakset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", - "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "license": "MIT", - "optional": true, "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4" + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -13244,17 +13334,18 @@ } }, "node_modules/iterator.prototype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.3.tgz", - "integrity": "sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", "license": "MIT", "optional": true, "dependencies": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -15128,6 +15219,15 @@ "tmpl": "1.0.5" } }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/mdn-data": { "version": "2.0.30", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", @@ -16387,9 +16487,9 @@ } }, "node_modules/object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -16408,14 +16508,16 @@ } }, "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", "object-keys": "^1.1.1" }, "engines": { @@ -16426,15 +16528,16 @@ } }, "node_modules/object.entries": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", - "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", "license": "MIT", "optional": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "es-object-atoms": "^1.1.1" }, "engines": { "node": ">= 0.4" @@ -16475,13 +16578,14 @@ } }, "node_modules/object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", "license": "MIT", "optional": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" }, @@ -16658,6 +16762,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -17097,9 +17218,9 @@ } }, "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -18270,19 +18391,19 @@ } }, "node_modules/reflect.getprototypeof": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", - "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", "license": "MIT", - "optional": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "es-abstract": "^1.23.1", + "es-abstract": "^1.23.9", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -18673,14 +18794,15 @@ } }, "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", "isarray": "^2.0.5" }, "engines": { @@ -18711,15 +18833,31 @@ ], "license": "MIT" }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", - "is-regex": "^1.1.4" + "is-regex": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -18736,9 +18874,9 @@ "license": "MIT" }, "node_modules/sass": { - "version": "1.83.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.83.0.tgz", - "integrity": "sha512-qsSxlayzoOjdvXMVLkzF84DJFc2HZEL/rFyGIKbbilYtAvlCxyuzUeff9LawTn4btVnLKg75Z8MMr1lxU1lfGw==", + "version": "1.87.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.87.0.tgz", + "integrity": "sha512-d0NoFH4v6SjEK7BoX810Jsrhj7IQSYHAHLi/iSpgqKc7LaIDshFRlSg5LOymf9FqQhxEHs2W5ZQXlvy0KD45Uw==", "dev": true, "license": "MIT", "dependencies": { @@ -19273,6 +19411,20 @@ "node": ">= 0.4" } }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -19350,15 +19502,69 @@ } }, "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -19797,24 +20003,25 @@ } }, "node_modules/string.prototype.matchall": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", - "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", "license": "MIT", "optional": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", + "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "regexp.prototype.flags": "^1.5.2", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", "set-function-name": "^2.0.2", - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -19853,15 +20060,18 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -19871,15 +20081,19 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -20196,20 +20410,20 @@ "license": "MIT" }, "node_modules/synckit": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz", - "integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==", + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.4.tgz", + "integrity": "sha512-Q/XQKRaJiLiFIBNN+mndW7S/RHxvwzuZS6ZwmRzUBqJBv/5QIKCEwkBC8GBf8EQJKYnaFs0wOZbKTXBPj8L9oQ==", "license": "MIT", "optional": true, "dependencies": { - "@pkgr/core": "^0.1.0", - "tslib": "^2.6.2" + "@pkgr/core": "^0.2.3", + "tslib": "^2.8.1" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/unts" + "url": "https://opencollective.com/synckit" } }, "node_modules/tabbable": { @@ -20642,9 +20856,9 @@ } }, "node_modules/ts-api-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", - "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", "license": "MIT", "optional": true, "engines": { @@ -20937,30 +21151,30 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" + "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -20970,17 +21184,18 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" }, "engines": { "node": ">= 0.4" @@ -20990,17 +21205,17 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-proto": "^1.0.3", "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" }, "engines": { "node": ">= 0.4" @@ -21047,15 +21262,18 @@ } }, "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", + "call-bound": "^1.0.3", "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -21848,40 +22066,43 @@ } }, "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", "license": "MIT", "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-builtin-type": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", - "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", "license": "MIT", - "optional": true, "dependencies": { + "call-bound": "^1.0.2", "function.prototype.name": "^1.1.6", "has-tostringtag": "^1.0.2", "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", + "is-regex": "^1.2.1", "is-weakref": "^1.0.2", "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", + "which-boxed-primitive": "^1.1.0", "which-collection": "^1.0.2", - "which-typed-array": "^1.1.15" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -21895,7 +22116,6 @@ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "license": "MIT", - "optional": true, "dependencies": { "is-map": "^2.0.3", "is-set": "^2.0.3", @@ -21917,15 +22137,17 @@ "license": "ISC" }, "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" }, "engines": { diff --git a/clients/ui/frontend/package.json b/clients/ui/frontend/package.json index cf9e2e36a8..de5c211b52 100644 --- a/clients/ui/frontend/package.json +++ b/clients/ui/frontend/package.json @@ -80,7 +80,7 @@ "raw-loader": "^4.0.2", "react-refresh": "^0.14.2", "regenerator-runtime": "^0.14.1", - "sass": "^1.83.0", + "sass": "^1.87.0", "sass-loader": "^13.2.0", "serve": "^14.2.4", "speed-measure-webpack-plugin": "^1.5.0", @@ -121,8 +121,8 @@ "showdown": "^2.1.0" }, "optionalDependencies": { - "@typescript-eslint/eslint-plugin": "^8.26.1", - "@typescript-eslint/parser": "^8.26.1", + "@typescript-eslint/eslint-plugin": "^8.31.1", + "@typescript-eslint/parser": "^8.31.1", "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", "eslint-import-resolver-node": "^0.3.7", @@ -132,8 +132,8 @@ "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-no-only-tests": "^3.1.0", "eslint-plugin-no-relative-import-paths": "^1.6.1", - "eslint-plugin-prettier": "^5.0.0", - "eslint-plugin-react": "^7.37.2", + "eslint-plugin-prettier": "^5.4.0", + "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.2.0" }, "overrides": { From a9d4d7d4678cc8b701fbd73a4d79e863de279f25 Mon Sep 17 00:00:00 2001 From: Jenny <32821331+jenny-s51@users.noreply.github.com> Date: Fri, 9 May 2025 08:44:41 -0400 Subject: [PATCH 22/44] Refactor Theme-Dependent MUI Component Instances (#993) Signed-off-by: Jenny <32821331+jenny-s51@users.noreply.github.com> refactor instances of FormGroup and SearchInput remove unnecessary comments Signed-off-by: Jenny <32821331+jenny-s51@users.noreply.github.com> remove unnecessary comments --- .../screens/ModelPropertiesTableRow.tsx | 14 +- .../ModelVersions/ModelVersionListView.tsx | 70 ++---- .../ModelVersionsArchiveListView.tsx | 54 ++--- .../PrefilledModelRegistryField.tsx | 5 +- .../RegisterModelDetailsFormSection.tsx | 11 +- .../RegisterModel/RegisteredModelSelector.tsx | 8 +- .../RegistrationCommonFormSections.tsx | 47 +--- .../RegisteredModelListView.tsx | 51 +--- .../RegisteredModelsArchiveListView.tsx | 54 ++--- .../screens/components/FormFieldset.tsx | 33 ++- .../components/ThemeAwareSearchInput.tsx | 70 ++++++ .../settings/ModelRegistryCreateModal.tsx | 228 +++++------------- .../components/ThemeAwareFormGroupWrapper.tsx | 61 +++++ .../EditableTextDescriptionListGroup.tsx | 6 +- .../frontend/src/shared/style/MUI-theme.scss | 2 +- 15 files changed, 295 insertions(+), 419 deletions(-) create mode 100644 clients/ui/frontend/src/app/pages/modelRegistry/screens/components/ThemeAwareSearchInput.tsx create mode 100644 clients/ui/frontend/src/app/pages/settings/components/ThemeAwareFormGroupWrapper.tsx diff --git a/clients/ui/frontend/src/app/pages/modelRegistry/screens/ModelPropertiesTableRow.tsx b/clients/ui/frontend/src/app/pages/modelRegistry/screens/ModelPropertiesTableRow.tsx index fc15ba5bfc..bcf0b3aeec 100644 --- a/clients/ui/frontend/src/app/pages/modelRegistry/screens/ModelPropertiesTableRow.tsx +++ b/clients/ui/frontend/src/app/pages/modelRegistry/screens/ModelPropertiesTableRow.tsx @@ -15,7 +15,6 @@ import { CheckIcon, ExternalLinkAltIcon, TimesIcon } from '@patternfly/react-ico import { KeyValuePair } from '~/shared/types'; import { EitherNotBoth } from '~/shared/typeHelpers'; import FormFieldset from '~/app/pages/modelRegistry/screens/components/FormFieldset'; -import { useThemeContext } from '~/app/ThemeContext'; import { isValidHttpUrl } from './utils'; type ModelPropertiesTableRowProps = { @@ -47,7 +46,6 @@ const ModelPropertiesTableRow: React.FC = ({ saveEditedProperty, }) => { const { key, value } = keyValuePair; - const { isMUITheme } = useThemeContext(); const [unsavedKey, setUnsavedKey] = React.useState(key); const [unsavedValue, setUnsavedValue] = React.useState(value); @@ -130,11 +128,7 @@ const ModelPropertiesTableRow: React.FC = ({ {isEditing ? ( <> - {isMUITheme ? ( - - ) : ( - propertyKeyInput - )} + {keyValidationError && ( @@ -150,11 +144,7 @@ const ModelPropertiesTableRow: React.FC = ({ {isEditing ? ( - isMUITheme ? ( - - ) : ( - propertyValueInput - ) + ) : ( = ({ const filteredModelVersions = filterModelVersions(unfilteredModelVersions, search, searchType); const date = rm.lastUpdateTimeSinceEpoch && new Date(parseInt(rm.lastUpdateTimeSinceEpoch)); + const resetFilters = () => setSearch(''); + if (unfilteredModelVersions.length === 0) { if (isArchiveModel) { return ( @@ -129,7 +128,7 @@ const ModelVersionListView: React.FC = ({ setSearch('')} + clearFilters={resetFilters} modelVersions={sortModelVersionsByCreateTime(filteredModelVersions)} toolbarContent={ @@ -137,8 +136,8 @@ const ModelVersionListView: React.FC = ({ setSearch('')} - deleteLabelGroup={() => setSearch('')} + deleteLabel={resetFilters} + deleteLabelGroup={resetFilters} categoryName={searchType} > = ({ /> - {isMUITheme() ? ( - { - setSearch(searchValue); - }} - style={{ minWidth: '200px' }} - data-testid="model-versions-table-search" - aria-label="Search" - /> - } - field={`Find by ${searchType.toLowerCase()}`} - /> - ) : ( - { - setSearch(searchValue); - }} - onClear={() => setSearch('')} - style={{ minWidth: '200px' }} - data-testid="model-versions-table-search" - /> - )} + diff --git a/clients/ui/frontend/src/app/pages/modelRegistry/screens/ModelVersionsArchive/ModelVersionsArchiveListView.tsx b/clients/ui/frontend/src/app/pages/modelRegistry/screens/ModelVersionsArchive/ModelVersionsArchiveListView.tsx index 49246490f0..8277a24994 100644 --- a/clients/ui/frontend/src/app/pages/modelRegistry/screens/ModelVersionsArchive/ModelVersionsArchiveListView.tsx +++ b/clients/ui/frontend/src/app/pages/modelRegistry/screens/ModelVersionsArchive/ModelVersionsArchiveListView.tsx @@ -1,7 +1,5 @@ import * as React from 'react'; import { - SearchInput, - TextInput, ToolbarContent, ToolbarFilter, ToolbarGroup, @@ -15,8 +13,7 @@ import SimpleSelect from '~/shared/components/SimpleSelect'; import { asEnumMember } from '~/shared/utilities/utils'; import { filterModelVersions } from '~/app/pages/modelRegistry/screens/utils'; import EmptyModelRegistryState from '~/app/pages/modelRegistry/screens/components/EmptyModelRegistryState'; -import FormFieldset from '~/app/pages/modelRegistry/screens/components/FormFieldset'; -import { useThemeContext } from '~/app/ThemeContext'; +import ThemeAwareSearchInput from '~/app/pages/modelRegistry/screens/components/ThemeAwareSearchInput'; import ModelVersionsArchiveTable from './ModelVersionsArchiveTable'; type ModelVersionsArchiveListViewProps = { @@ -33,8 +30,6 @@ const ModelVersionsArchiveListView: React.FC const searchTypes = [SearchType.KEYWORD, SearchType.AUTHOR]; - const { isMUITheme } = useThemeContext(); - const filteredModelVersions = filterModelVersions(unfilteredmodelVersions, search, searchType); if (unfilteredmodelVersions.length === 0) { @@ -48,10 +43,12 @@ const ModelVersionsArchiveListView: React.FC ); } + const resetFilters = () => setSearch(''); + return ( setSearch('')} + clearFilters={resetFilters} modelVersions={filteredModelVersions} toolbarContent={ @@ -59,8 +56,8 @@ const ModelVersionsArchiveListView: React.FC setSearch('')} - deleteLabelGroup={() => setSearch('')} + deleteLabel={resetFilters} + deleteLabelGroup={resetFilters} categoryName="Keyword" > /> - {isMUITheme ? ( - { - setSearch(searchValue); - }} - style={{ minWidth: '200px' }} - data-testid="model-versions-archive-table-search" - aria-label="Search" - /> - } - field={`Find by ${searchType.toLowerCase()}`} - /> - ) : ( - { - setSearch(searchValue); - }} - onClear={() => setSearch('')} - style={{ minWidth: '200px' }} - data-testid="model-versions-archive-table-search" - /> - )} + diff --git a/clients/ui/frontend/src/app/pages/modelRegistry/screens/RegisterModel/PrefilledModelRegistryField.tsx b/clients/ui/frontend/src/app/pages/modelRegistry/screens/RegisterModel/PrefilledModelRegistryField.tsx index f7343f3b0c..d16cfcad0e 100644 --- a/clients/ui/frontend/src/app/pages/modelRegistry/screens/RegisterModel/PrefilledModelRegistryField.tsx +++ b/clients/ui/frontend/src/app/pages/modelRegistry/screens/RegisterModel/PrefilledModelRegistryField.tsx @@ -1,22 +1,19 @@ import React from 'react'; import { FormGroup, TextInput } from '@patternfly/react-core'; import FormFieldset from '~/app/pages/modelRegistry/screens/components/FormFieldset'; -import { useThemeContext } from '~/app/ThemeContext'; type PrefilledModelRegistryFieldProps = { mrName?: string; }; const PrefilledModelRegistryField: React.FC = ({ mrName }) => { - const { isMUITheme } = useThemeContext(); - const mrNameInput = ( ); return ( - {isMUITheme ? : mrNameInput} + ); }; diff --git a/clients/ui/frontend/src/app/pages/modelRegistry/screens/RegisterModel/RegisterModelDetailsFormSection.tsx b/clients/ui/frontend/src/app/pages/modelRegistry/screens/RegisterModel/RegisterModelDetailsFormSection.tsx index 12e8446a6b..e5f44dcf8c 100644 --- a/clients/ui/frontend/src/app/pages/modelRegistry/screens/RegisterModel/RegisterModelDetailsFormSection.tsx +++ b/clients/ui/frontend/src/app/pages/modelRegistry/screens/RegisterModel/RegisterModelDetailsFormSection.tsx @@ -10,7 +10,6 @@ import React from 'react'; import FormSection from '~/shared/components/pf-overrides/FormSection'; import { UpdateObjectAtPropAndValue } from '~/shared/types'; import FormFieldset from '~/app/pages/modelRegistry/screens/components/FormFieldset'; -import { useThemeContext } from '~/app/ThemeContext'; import { MR_CHARACTER_LIMIT } from './const'; import { RegisterModelFormData } from './useRegisterModelData'; @@ -26,8 +25,6 @@ const RegisterModelDetailsFormSection = ({ hasModelNameError, isModelNameDuplicate, }: RegisterModelDetailsFormSectionProp): React.ReactNode => { - const { isMUITheme } = useThemeContext(); - const modelNameInput = ( ({ description="Provide general details that apply to all versions of this model." > - {isMUITheme ? : modelNameInput} + {hasModelNameError && ( @@ -70,11 +67,7 @@ const RegisterModelDetailsFormSection = ({ )} - {isMUITheme ? ( - - ) : ( - modelDescriptionInput - )} + ); diff --git a/clients/ui/frontend/src/app/pages/modelRegistry/screens/RegisterModel/RegisteredModelSelector.tsx b/clients/ui/frontend/src/app/pages/modelRegistry/screens/RegisterModel/RegisteredModelSelector.tsx index 0c7fda3a00..ab2157f005 100644 --- a/clients/ui/frontend/src/app/pages/modelRegistry/screens/RegisterModel/RegisteredModelSelector.tsx +++ b/clients/ui/frontend/src/app/pages/modelRegistry/screens/RegisterModel/RegisteredModelSelector.tsx @@ -3,7 +3,6 @@ import { FormGroup, TextInput } from '@patternfly/react-core'; import { RegisteredModel } from '~/app/types'; import FormFieldset from '~/app/pages/modelRegistry/screens/components/FormFieldset'; import TypeaheadSelect, { TypeaheadSelectOption } from '~/shared/components/TypeaheadSelect'; -import { useThemeContext } from '~/app/ThemeContext'; type RegisteredModelSelectorProps = { registeredModels: RegisteredModel[]; @@ -18,7 +17,6 @@ const RegisteredModelSelector: React.FC = ({ setRegisteredModelId, isDisabled, }) => { - const { isMUITheme } = useThemeContext(); const options: TypeaheadSelectOption[] = React.useMemo( () => registeredModels.map(({ name, id }) => ({ @@ -49,11 +47,7 @@ const RegisteredModelSelector: React.FC = ({ */ return ( - {isMUITheme ? ( - - ) : ( - modelNameInput - )} + ); } diff --git a/clients/ui/frontend/src/app/pages/modelRegistry/screens/RegisterModel/RegistrationCommonFormSections.tsx b/clients/ui/frontend/src/app/pages/modelRegistry/screens/RegisterModel/RegistrationCommonFormSections.tsx index 8b1b02bb64..188a9b9807 100644 --- a/clients/ui/frontend/src/app/pages/modelRegistry/screens/RegisterModel/RegistrationCommonFormSections.tsx +++ b/clients/ui/frontend/src/app/pages/modelRegistry/screens/RegisterModel/RegistrationCommonFormSections.tsx @@ -17,7 +17,6 @@ import { UpdateObjectAtPropAndValue } from '~/shared/types'; import FormFieldset from '~/app/pages/modelRegistry/screens/components/FormFieldset'; import FormSection from '~/shared/components/pf-overrides/FormSection'; import { ModelVersion } from '~/app/types'; -import { useThemeContext } from '~/app/ThemeContext'; import { ModelLocationType, RegistrationCommonFormData } from './useRegisterModelData'; import { isNameValid } from './utils'; import { MR_CHARACTER_LIMIT } from './const'; @@ -41,8 +40,6 @@ const RegistrationCommonFormSections = ({ // const [isAutofillModalOpen, setAutofillModalOpen] = React.useState(false); const isVersionNameValid = isNameValid(formData.versionName); - const { isMUITheme } = useThemeContext(); - // const connectionDataMap: Record< // string, // keyof Pick< @@ -185,11 +182,7 @@ const RegistrationCommonFormSections = ({ } > - {isMUITheme ? ( - - ) : ( - versionNameInput - )} + {latestVersion && ( @@ -206,28 +199,16 @@ const RegistrationCommonFormSections = ({ - {isMUITheme ? ( - - ) : ( - versionDescriptionInput - )} + - {isMUITheme ? ( - - ) : ( - sourceModelFormatInput - )} + - {isMUITheme ? ( - - ) : ( - sourceModelFormatVersionInput - )} + ({ isRequired fieldId="location-endpoint" > - {isMUITheme ? ( - - ) : ( - endpointInput - )} + - {isMUITheme ? : bucketInput} + - {isMUITheme ? : regionInput} + ({ isRequired fieldId="location-path" > - {isMUITheme ? : pathInput} + Enter a path to a model or folder. This path cannot point to a root folder. @@ -304,7 +281,7 @@ const RegistrationCommonFormSections = ({ {modelLocationType === ModelLocationType.URI && ( <> - {isMUITheme ? : uriInput} + )} diff --git a/clients/ui/frontend/src/app/pages/modelRegistry/screens/RegisteredModels/RegisteredModelListView.tsx b/clients/ui/frontend/src/app/pages/modelRegistry/screens/RegisteredModels/RegisteredModelListView.tsx index 521a810b22..4d664d66b5 100644 --- a/clients/ui/frontend/src/app/pages/modelRegistry/screens/RegisteredModels/RegisteredModelListView.tsx +++ b/clients/ui/frontend/src/app/pages/modelRegistry/screens/RegisteredModels/RegisteredModelListView.tsx @@ -1,11 +1,5 @@ import * as React from 'react'; -import { - SearchInput, - TextInput, - ToolbarFilter, - ToolbarGroup, - ToolbarItem, -} from '@patternfly/react-core'; +import { ToolbarFilter, ToolbarGroup, ToolbarItem } from '@patternfly/react-core'; import { FilterIcon } from '@patternfly/react-icons'; import { useNavigate } from 'react-router-dom'; import { ModelVersion, RegisteredModel } from '~/app/types'; @@ -18,11 +12,10 @@ import { registerModelUrl, } from '~/app/pages/modelRegistry/screens/routeUtils'; import EmptyModelRegistryState from '~/app/pages/modelRegistry/screens/components/EmptyModelRegistryState'; -import FormFieldset from '~/app/pages/modelRegistry/screens/components/FormFieldset'; import { filterRegisteredModels } from '~/app/pages/modelRegistry/screens/utils'; import { asEnumMember } from '~/shared/utilities/utils'; import { filterArchiveModels, filterLiveModels } from '~/app/utils'; -import { useThemeContext } from '~/app/ThemeContext'; +import ThemeAwareSearchInput from '~/app/pages/modelRegistry/screens/components/ThemeAwareSearchInput'; import RegisteredModelTable from './RegisteredModelTable'; import RegisteredModelsTableToolbar from './RegisteredModelsTableToolbar'; @@ -44,7 +37,6 @@ const RegisteredModelListView: React.FC = ({ const unfilteredRegisteredModels = filterLiveModels(registeredModels); const archiveRegisteredModels = filterArchiveModels(registeredModels); const searchTypes = React.useMemo(() => [SearchType.KEYWORD, SearchType.OWNER], []); - const { isMUITheme } = useThemeContext(); if (unfilteredRegisteredModels.length === 0) { return ( @@ -109,35 +101,16 @@ const RegisteredModelListView: React.FC = ({ /> - {isMUITheme ? ( - { - setSearch(searchValue); - }} - style={{ minWidth: '200px' }} - data-testid="registered-model-table-search" - aria-label="Search" - /> - } - field={`Find by ${searchType.toLowerCase()}`} - /> - ) : ( - { - setSearch(searchValue); - }} - onClear={resetFilters} - style={{ minWidth: '200px' }} - data-testid="registered-model-table-search" - /> - )} + ); diff --git a/clients/ui/frontend/src/app/pages/modelRegistry/screens/RegisteredModelsArchive/RegisteredModelsArchiveListView.tsx b/clients/ui/frontend/src/app/pages/modelRegistry/screens/RegisteredModelsArchive/RegisteredModelsArchiveListView.tsx index e65967d1ee..c47e5f25b7 100644 --- a/clients/ui/frontend/src/app/pages/modelRegistry/screens/RegisteredModelsArchive/RegisteredModelsArchiveListView.tsx +++ b/clients/ui/frontend/src/app/pages/modelRegistry/screens/RegisteredModelsArchive/RegisteredModelsArchiveListView.tsx @@ -1,7 +1,5 @@ import * as React from 'react'; import { - SearchInput, - TextInput, ToolbarContent, ToolbarFilter, ToolbarGroup, @@ -15,8 +13,7 @@ import { filterRegisteredModels } from '~/app/pages/modelRegistry/screens/utils' import EmptyModelRegistryState from '~/app/pages/modelRegistry/screens/components/EmptyModelRegistryState'; import SimpleSelect from '~/shared/components/SimpleSelect'; import { asEnumMember } from '~/shared/utilities/utils'; -import FormFieldset from '~/app/pages/modelRegistry/screens/components/FormFieldset'; -import { useThemeContext } from '~/app/ThemeContext'; +import ThemeAwareSearchInput from '~/app/pages/modelRegistry/screens/components/ThemeAwareSearchInput'; import RegisteredModelsArchiveTable from './RegisteredModelsArchiveTable'; type RegisteredModelsArchiveListViewProps = { @@ -33,8 +30,6 @@ const RegisteredModelsArchiveListView: React.FC(SearchType.KEYWORD); const [search, setSearch] = React.useState(''); - const { isMUITheme } = useThemeContext(); - const searchTypes = [SearchType.KEYWORD, SearchType.OWNER]; const filteredRegisteredModels = filterRegisteredModels( unfilteredRegisteredModels, @@ -55,10 +50,12 @@ const RegisteredModelsArchiveListView: React.FC setSearch(''); + return ( setSearch('')} + clearFilters={resetFilters} registeredModels={filteredRegisteredModels} toolbarContent={ @@ -66,8 +63,8 @@ const RegisteredModelsArchiveListView: React.FC setSearch('')} - deleteLabelGroup={() => setSearch('')} + deleteLabel={resetFilters} + deleteLabelGroup={resetFilters} categoryName="Keyword" > - {isMUITheme ? ( - { - setSearch(searchValue); - }} - style={{ minWidth: '200px' }} - data-testid="registered-models-archive-table-search" - aria-label="Search" - /> - } - field={`Find by ${searchType.toLowerCase()}`} - /> - ) : ( - { - setSearch(searchValue); - }} - onClear={() => setSearch('')} - style={{ minWidth: '200px' }} - data-testid="registered-models-archive-table-search" - /> - )} + diff --git a/clients/ui/frontend/src/app/pages/modelRegistry/screens/components/FormFieldset.tsx b/clients/ui/frontend/src/app/pages/modelRegistry/screens/components/FormFieldset.tsx index 8869aef304..6b51d1a326 100644 --- a/clients/ui/frontend/src/app/pages/modelRegistry/screens/components/FormFieldset.tsx +++ b/clients/ui/frontend/src/app/pages/modelRegistry/screens/components/FormFieldset.tsx @@ -1,4 +1,5 @@ import React, { ReactNode } from 'react'; +import { useThemeContext } from '~/app/ThemeContext'; interface FormFieldsetProps { component: ReactNode; @@ -6,17 +7,25 @@ interface FormFieldsetProps { className?: string; } -const FormFieldset: React.FC = ({ component, field, className }) => ( -
- {component} - -
-); +const FormFieldset: React.FC = ({ component, field, className }) => { + const { isMUITheme } = useThemeContext(); + + if (!isMUITheme) { + return <>{component}; + } + + return ( +
+ {component} + +
+ ); +}; export default FormFieldset; diff --git a/clients/ui/frontend/src/app/pages/modelRegistry/screens/components/ThemeAwareSearchInput.tsx b/clients/ui/frontend/src/app/pages/modelRegistry/screens/components/ThemeAwareSearchInput.tsx new file mode 100644 index 0000000000..30cdd73081 --- /dev/null +++ b/clients/ui/frontend/src/app/pages/modelRegistry/screens/components/ThemeAwareSearchInput.tsx @@ -0,0 +1,70 @@ +import * as React from 'react'; +import { SearchInput, SearchInputProps, TextInput } from '@patternfly/react-core'; +import { useThemeContext } from '~/app/ThemeContext'; +import FormFieldset from '~/app/pages/modelRegistry/screens/components/FormFieldset'; + +type ThemeAwareSearchInputProps = Omit & { + onChange: (value: string) => void; // Simplified onChange signature + onClear?: () => void; // Simplified optional onClear signature + fieldLabel?: string; // Additional prop for MUI FormFieldset label + 'data-testid'?: string; +}; + +const ThemeAwareSearchInput: React.FC = ({ + value, + onChange, + onClear, + fieldLabel, + placeholder, + isDisabled, + className, + style, + 'aria-label': ariaLabel = 'Search', + 'data-testid': dataTestId, + ...rest +}) => { + const { isMUITheme } = useThemeContext(); + + if (isMUITheme) { + // Render MUI version using TextInput + FormFieldset + return ( + onChange(newValue)} // Adapt signature + isDisabled={isDisabled} + aria-label={ariaLabel} + data-testid={dataTestId} + style={style} + /> + } + /> + ); + } + + // Render PF version using SearchInput + return ( + onChange(newValue)} // Adapt signature + onClear={(event) => { + event.stopPropagation(); + onChange(''); + onClear?.(); // Adapt signature + }} + /> + ); +}; + +export default ThemeAwareSearchInput; diff --git a/clients/ui/frontend/src/app/pages/settings/ModelRegistryCreateModal.tsx b/clients/ui/frontend/src/app/pages/settings/ModelRegistryCreateModal.tsx index e8b153865c..df65442a06 100644 --- a/clients/ui/frontend/src/app/pages/settings/ModelRegistryCreateModal.tsx +++ b/clients/ui/frontend/src/app/pages/settings/ModelRegistryCreateModal.tsx @@ -6,16 +6,16 @@ import { HelperText, HelperTextItem, TextInput, + Alert, } from '@patternfly/react-core'; import { Modal } from '@patternfly/react-core/deprecated'; import { useNavigate } from 'react-router'; import ModelRegistryCreateModalFooter from '~/app/pages/settings/ModelRegistryCreateModalFooter'; -import FormFieldset from '~/app/pages/modelRegistry/screens/components/FormFieldset'; import FormSection from '~/shared/components/pf-overrides/FormSection'; import ModelRegistryDatabasePassword from '~/app/pages/settings/ModelRegistryDatabasePassword'; import K8sNameDescriptionField from '~/concepts/k8s/K8sNameDescriptionField/K8sNameDescriptionField'; -import { useThemeContext } from '~/app/ThemeContext'; +import ThemeAwareFormGroupWrapper from './components/ThemeAwareFormGroupWrapper'; type CreateModalProps = { onClose: () => void; @@ -28,7 +28,6 @@ const CreateModal: React.FC = ({ // refresh, // modelRegistry, }) => { - const { isMUITheme } = useThemeContext(); const [error, setError] = React.useState(); const [host, setHost] = React.useState(''); @@ -36,7 +35,6 @@ const CreateModal: React.FC = ({ const [username, setUsername] = React.useState(''); const [password, setPassword] = React.useState(''); const [database, setDatabase] = React.useState(''); - // const [addSecureDB, setAddSecureDB] = React.useState(false); const [isHostTouched, setIsHostTouched] = React.useState(false); const [isPortTouched, setIsPortTouched] = React.useState(false); const [isUsernameTouched, setIsUsernameTouched] = React.useState(false); @@ -47,9 +45,7 @@ const CreateModal: React.FC = ({ const navigate = useNavigate(); const onBeforeClose = () => { - // setIsSubmitting(false); setError(undefined); - setHost(''); setPort(''); setUsername(''); @@ -67,17 +63,11 @@ const CreateModal: React.FC = ({ const hasContent = (value: string): boolean => !!value.trim().length; const canSubmit = () => - // TODO: implement once we have the endpoint - // !isSubmitting && - // isValidK8sName(nameDesc.k8sName.value || translateDisplayNameForK8s(nameDesc.name)) - // && hasContent(host) && hasContent(password) && hasContent(port) && hasContent(username) && hasContent(database); - // && - // (!addSecureDB || (secureDBInfo.isValid && !configSecretsError)) const onSubmit = () => { navigate(`/model-registry-settings`); @@ -93,7 +83,6 @@ const CreateModal: React.FC = ({ value={host} onBlur={() => setIsHostTouched(true)} onChange={(_e, value) => setHost(value)} - validated={isHostTouched && !hasContent(host) ? 'error' : 'default'} /> ); @@ -105,20 +94,6 @@ const CreateModal: React.FC = ({
); - const hostFormGroup = ( - <> - - - - {hostHelperText} - - ); - const portInput = ( = ({ value={port} onBlur={() => setIsPortTouched(true)} onChange={(_e, value) => setPort(value)} - validated={isPortTouched && !hasContent(port) ? 'error' : 'default'} /> ); @@ -140,20 +114,6 @@ const CreateModal: React.FC = ({ ); - const portFormGroup = ( - <> - - - - {portHelperText} - - ); - const userNameInput = ( = ({ value={username} onBlur={() => setIsUsernameTouched(true)} onChange={(_e, value) => setUsername(value)} - validated={isUsernameTouched && !hasContent(username) ? 'error' : 'default'} /> ); @@ -175,20 +134,6 @@ const CreateModal: React.FC = ({ ); - const usernameFormGroup = ( - <> - - - - {usernameHelperText} - - ); - const passwordInput = ( = ({ isPasswordTouched={isPasswordTouched} setIsPasswordTouched={setIsPasswordTouched} showPassword={showPassword} - // editRegistry={mr} /> ); @@ -208,20 +152,6 @@ const CreateModal: React.FC = ({ ); - const passwordFormGroup = ( - <> - - - - {passwordHelperText} - - ); - const databaseInput = ( = ({ value={database} onBlur={() => setIsDatabaseTouched(true)} onChange={(_e, value) => setDatabase(value)} - validated={isDatabaseTouched && !hasContent(database) ? 'error' : 'default'} /> ); @@ -243,20 +172,6 @@ const CreateModal: React.FC = ({ ); - const databaseFormGroup = ( - <> - - - - {databaseHelperText} - - ); - return ( = ({ onCancel={onBeforeClose} onSubmit={onSubmit} submitLabel="Create" - // isSubmitLoading={isSubmitting} isSubmitDisabled={!canSubmit()} error={error} alertTitle={`Error ${'creating'} model registry`} @@ -293,93 +207,59 @@ const CreateModal: React.FC = ({ title="Connect to external MySQL database" description="This external database is where model data is stored." > - {isMUITheme ? ( - hostFormGroup - ) : ( - <> - - {hostInput} - {hostHelperText} - - - )} - {isMUITheme ? ( - portFormGroup - ) : ( - <> - - {portInput} - {portHelperText} - - - )} - {isMUITheme ? ( - usernameFormGroup - ) : ( - <> - - {userNameInput} - {usernameHelperText} - - - )} - {isMUITheme ? ( - passwordFormGroup - ) : ( - <> - - {passwordInput} - {passwordHelperText} - - - )} - {isMUITheme ? ( - databaseFormGroup - ) : ( - <> - - {databaseInput} - {databaseFormGroup} - - - )} - {/* {secureDbEnabled && ( - <> - - setAddSecureDB(value)} - id="add-secure-db" - data-testid="add-secure-db-mr-checkbox" - name="add-secure-db" - /> - - {addSecureDB && - (!configSecretsLoaded && !configSecretsError ? ( - - ) : configSecretsLoaded ? ( - - ) : ( - - {configSecretsError?.message} - - ))} - - )} */} + + {hostInput} + + + + {portInput} + + + + {userNameInput} + + + + {passwordInput} + + + + {databaseInput} + + + {/* ... Optional TLS section ... */}
+ + {error && ( + + + + )} ); diff --git a/clients/ui/frontend/src/app/pages/settings/components/ThemeAwareFormGroupWrapper.tsx b/clients/ui/frontend/src/app/pages/settings/components/ThemeAwareFormGroupWrapper.tsx new file mode 100644 index 0000000000..4345c9bf58 --- /dev/null +++ b/clients/ui/frontend/src/app/pages/settings/components/ThemeAwareFormGroupWrapper.tsx @@ -0,0 +1,61 @@ +import * as React from 'react'; +import { FormGroup } from '@patternfly/react-core'; +import { useThemeContext } from '~/app/ThemeContext'; +import FormFieldset from '~/app/pages/modelRegistry/screens/components/FormFieldset'; + +// Props required by this wrapper component +type ThemeAwareFormGroupWrapperProps = { + children: React.ReactNode; // The input component + label: string; + fieldId: string; + isRequired?: boolean; + helperTextNode?: React.ReactNode; // The pre-rendered HelperText component or null + className?: string; // Optional className for the outer FormGroup +}; + +const ThemeAwareFormGroupWrapper: React.FC = ({ + children, + label, + fieldId, + isRequired, + helperTextNode, + className, +}) => { + const { isMUITheme } = useThemeContext(); + const hasError = !!helperTextNode; // Determine error state based on helper text presence + + if (isMUITheme) { + // For MUI theme, render FormGroup -> FormFieldset -> Input + // Helper text is rendered *after* the FormGroup wrapper + return ( + <> + + + + {helperTextNode} + + ); + } + + // For PF theme, render standard FormGroup + return ( + <> + + {children} + {helperTextNode} + + + ); +}; + +export default ThemeAwareFormGroupWrapper; diff --git a/clients/ui/frontend/src/shared/components/EditableTextDescriptionListGroup.tsx b/clients/ui/frontend/src/shared/components/EditableTextDescriptionListGroup.tsx index 3fba50421e..584e9465b7 100644 --- a/clients/ui/frontend/src/shared/components/EditableTextDescriptionListGroup.tsx +++ b/clients/ui/frontend/src/shared/components/EditableTextDescriptionListGroup.tsx @@ -4,7 +4,6 @@ import DashboardDescriptionListGroup, { DashboardDescriptionListGroupProps, } from '~/shared/components/DashboardDescriptionListGroup'; import FormFieldset from '~/app/pages/modelRegistry/screens/components/FormFieldset'; -import { useThemeContext } from '~/app/ThemeContext'; type EditableTextDescriptionListGroupProps = Pick< DashboardDescriptionListGroupProps, @@ -30,7 +29,6 @@ const EditableTextDescriptionListGroup: React.FC : editableTextArea - } + contentWhenEditing={} onEditClick={() => { setUnsavedValue(value); setIsEditing(true); diff --git a/clients/ui/frontend/src/shared/style/MUI-theme.scss b/clients/ui/frontend/src/shared/style/MUI-theme.scss index 007e1d328e..f191191114 100644 --- a/clients/ui/frontend/src/shared/style/MUI-theme.scss +++ b/clients/ui/frontend/src/shared/style/MUI-theme.scss @@ -462,7 +462,7 @@ display: none; } -.pf-v6-c-helper-text__item.pf-m-error { +.mui-theme .pf-v6-c-helper-text__item.pf-m-error { --pf-v6-c-helper-text__item-text--Color: var(--mui-palette-error-main); --pf-v6-c-helper-text__item-text--FontWeight: var(--mui-helper-text__item--FontWeight); margin-left: 14px; From f9daf57cfeaf9afda6e38f8ed3fc48bdbbfeed9f Mon Sep 17 00:00:00 2001 From: Matteo Mortari Date: Fri, 9 May 2025 15:21:41 +0200 Subject: [PATCH 23/44] docs: refresh CONTRIBUTING.md (#1086) * docs: refresh CONTRIBUTING.md Signed-off-by: Matteo Mortari * Update CONTRIBUTING.md Co-authored-by: Paul Boyd Signed-off-by: Matteo Mortari --------- Signed-off-by: Matteo Mortari Co-authored-by: Paul Boyd --- CONTRIBUTING.md | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7fd47cc204..137d02e8e8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,20 +1,24 @@ # Kubeflow Contributor Guide -Welcome to the Kubeflow project! We'd love to accept your patches and +Welcome to the Kubeflow Model Registry project! We'd love to accept your patches and contributions to this project. Please read the [contributor's guide in our docs](https://www.kubeflow.org/docs/about/contributing/). -The contributor's guide +The contributor's guide: -* shows you where to find the Contributor License Agreement (CLA) that you need - to sign, -* helps you get started with your first contribution to Kubeflow, -* and describes the pull request and review workflow in detail, including the - OWNERS files and automated workflow tool. +* explains how to use the Developer Certificate of Origin (DCO) with git commit system + * like explained in [this guide](https://wiki.linuxfoundation.org/dco), or [this example](https://github.com/kubeflow/community/tree/master/dco-signoff-hook#signing-off-commits) +* references the [Code of Conduct](https://www.kubeflow.org/docs/about/contributing/#follow-the-code-of-conduct) +* helps you get started with your first contribution to Kubeflow + * like how to identify [good-first-issue](https://github.com/kubeflow/model-registry/labels/good%20first%20issue) tickets +* and [describes](https://www.kubeflow.org/docs/about/contributing/#owners-files-and-pr-workflow) the pull request and review workflow in detail, including the + OWNERS files and automated workflow tool
-This document focus on technical aspects while contributing to the Model Registry project +The remainder of this document focuses on technical aspects while contributing to the Model Registry project specifically. + +Don't forget to reference the [Model Registry documentation](https://github.com/kubeflow/model-registry?tab=readme-ov-file#documentation-links) that details: what is a Model Registry, how to Install, logical model Concepts, how the MR python client works, Tutorials, FAQs and most importantly the [Technical References](https://github.com/kubeflow/model-registry?tab=readme-ov-file#documentation-links:~:text=FAQs-,Development,-introduction%20to%20local)! # Contributing to Model Registry using Apple-silicon/ARM-based computers From 4a632cd7d21796c1999a16f5879626efa44a18f6 Mon Sep 17 00:00:00 2001 From: Tian Siyuan Date: Sat, 10 May 2025 13:09:41 +0800 Subject: [PATCH 24/44] Add @tiansiyuan (#1093) Signed-off-by: Tian Siyuan --- ADOPTERS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ADOPTERS.md b/ADOPTERS.md index b0f43e19d7..1820e9bbbf 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -8,4 +8,5 @@ Below are the adopters of the Model Registry project. If you are using Model Reg | [Red Hat](https://www.redhat.com) | [@rareddy](https://github.com/rareddy)| Production | Kubeflow Model Registry is part of [OpenShift AI](https://www.redhat.com/en/products/ai/openshift-ai) | | [INFN (National Institute for Nuclear Physics)](https://www.infn.it/en/) | [@mginfn](https://github.com/mginfn) | Experimenting | Building a platform for running ML workflows | | [YIQISOFT](https://www.yiqisoft.com) | [@jiekechoo](https://github.com/jiekechoo) | Production | Model Registry is part of [YiAI](https://www.yiqisoft.cn/products/)| +| [VMware](https://www.vmware.com) | [@tiansiyuan](https://github.com/tiansiyuan) | Testing | Model Registry is important for LLMs | | < company name here> | < your github handle here > | | | From 3825f99a588fb1256d1b4b26d56fa119981de79d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 May 2025 13:08:39 +0000 Subject: [PATCH 25/44] build(deps): bump olot from 0.1.6 to 0.1.7 in /clients/python (#1099) Bumps olot from 0.1.6 to 0.1.7. --- updated-dependencies: - dependency-name: olot dependency-version: 0.1.7 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- clients/python/poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/clients/python/poetry.lock b/clients/python/poetry.lock index 779dfee766..4d6696b905 100644 --- a/clients/python/poetry.lock +++ b/clients/python/poetry.lock @@ -1366,15 +1366,15 @@ files = [ [[package]] name = "olot" -version = "0.1.6" +version = "0.1.7" description = "oci layers on top" optional = true python-versions = "<4.0,>=3.9" groups = ["main"] markers = "extra == \"olot\"" files = [ - {file = "olot-0.1.6-py3-none-any.whl", hash = "sha256:7ab8461a019ff280fd508fb75af8abaec3a9e625b578a4b6224dc9346faad002"}, - {file = "olot-0.1.6.tar.gz", hash = "sha256:aaf8f9196d80ef7ba25a4bf9e7c9c6128a60d5f4032c776763aa6f57a16d4290"}, + {file = "olot-0.1.7-py3-none-any.whl", hash = "sha256:38f65a09e9cb22acfb2325b0f9853f98b866a9203f4d5efd67917fe466c0afc5"}, + {file = "olot-0.1.7.tar.gz", hash = "sha256:c94656d286ec02d6a6e31567901af064b0c9aa66fd2bc4b542bc96e1de8b1f76"}, ] [package.dependencies] From be6792d7bbda279a1237558b0b5403bd88cd16e1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 May 2025 13:09:39 +0000 Subject: [PATCH 26/44] build(deps): bump boto3 from 1.38.8 to 1.38.13 in /clients/python (#1100) Bumps [boto3](https://github.com/boto/boto3) from 1.38.8 to 1.38.13. - [Release notes](https://github.com/boto/boto3/releases) - [Commits](https://github.com/boto/boto3/compare/1.38.8...1.38.13) --- updated-dependencies: - dependency-name: boto3 dependency-version: 1.38.13 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- clients/python/poetry.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/clients/python/poetry.lock b/clients/python/poetry.lock index 4d6696b905..54ec61ce24 100644 --- a/clients/python/poetry.lock +++ b/clients/python/poetry.lock @@ -311,19 +311,19 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "boto3" -version = "1.38.8" +version = "1.38.13" description = "The AWS SDK for Python" optional = true python-versions = ">=3.9" groups = ["main"] markers = "extra == \"boto3\"" files = [ - {file = "boto3-1.38.8-py3-none-any.whl", hash = "sha256:f3a4d79f499f567d327d2d8846d02ad18244d2927f88858a42a2438f52d9a0ef"}, - {file = "boto3-1.38.8.tar.gz", hash = "sha256:6bbc75bb51be9c5a33d07a4adf13d133c60f77b7c47bef1c46fda90b1297a867"}, + {file = "boto3-1.38.13-py3-none-any.whl", hash = "sha256:668400d13889d2d2fcd66ce785cc0b0fc040681f58a9c7f67daa9149a52b6c63"}, + {file = "boto3-1.38.13.tar.gz", hash = "sha256:6633bce2b73284acce1453ca85834c7c5a59e0dbcce1170be461cc079bdcdfcf"}, ] [package.dependencies] -botocore = ">=1.38.8,<1.39.0" +botocore = ">=1.38.13,<1.39.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.12.0,<0.13.0" @@ -332,15 +332,15 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.38.8" +version = "1.38.13" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">=3.9" groups = ["main"] markers = "extra == \"boto3\"" files = [ - {file = "botocore-1.38.8-py3-none-any.whl", hash = "sha256:f6ae08a56fe94e18d2aa223611a3b5e94123315d0cb3cb85764b029b2326c710"}, - {file = "botocore-1.38.8.tar.gz", hash = "sha256:68d739300cc94232373517b27c5570de6ae6d809a2db644f30219f5c8e0371ce"}, + {file = "botocore-1.38.13-py3-none-any.whl", hash = "sha256:de29fee43a1f02787fb5b3756ec09917d5661ed95b2b2d64797ab04196f69e14"}, + {file = "botocore-1.38.13.tar.gz", hash = "sha256:22feee15753cd3f9f7179d041604078a1024701497d27b22be7c6707e8d13ccb"}, ] [package.dependencies] From c8a38678d4c0edb01835c4207d3f401b61bafc44 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 May 2025 13:10:39 +0000 Subject: [PATCH 27/44] build(deps-dev): bump ray from 2.45.0 to 2.46.0 in /clients/python (#1101) Bumps [ray](https://github.com/ray-project/ray) from 2.45.0 to 2.46.0. - [Release notes](https://github.com/ray-project/ray/releases) - [Commits](https://github.com/ray-project/ray/compare/ray-2.45.0...ray-2.46.0) --- updated-dependencies: - dependency-name: ray dependency-version: 2.46.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- clients/python/poetry.lock | 56 +++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/clients/python/poetry.lock b/clients/python/poetry.lock index 54ec61ce24..1654f23b3f 100644 --- a/clients/python/poetry.lock +++ b/clients/python/poetry.lock @@ -1901,37 +1901,37 @@ markers = {main = "extra == \"hf\"", dev = "python_version < \"3.13\""} [[package]] name = "ray" -version = "2.45.0" +version = "2.46.0" description = "Ray provides a simple, universal API for building distributed applications." optional = false python-versions = ">=3.9" groups = ["dev"] markers = "python_version < \"3.13\"" files = [ - {file = "ray-2.45.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:3afe594589061641b6b87d5a6d181f703d88eb8edec29f6b315449fb32b58d3a"}, - {file = "ray-2.45.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:65e6c5bf3c9eb1ace9b90e3ea04cc73f7f3ca4fd53abd2048c0a7efa457d2e98"}, - {file = "ray-2.45.0-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:c89f4ffd8e4623b6c690142e55813c1286a4941175c62e1056801bc139ad7ea7"}, - {file = "ray-2.45.0-cp310-cp310-manylinux2014_x86_64.whl", hash = "sha256:948e11a1247f7b0b45a29108ba1cfedfabd80f1f3db7a5deda5698213588d8eb"}, - {file = "ray-2.45.0-cp310-cp310-win_amd64.whl", hash = "sha256:ea5182b4f0559803e6dcf75309fb502dafae0bd323f76f38dc09205a70d1fba4"}, - {file = "ray-2.45.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:40c8c146bec3710c511dd0380ea7c930b43487c0f9c8c78b583b0e890374528f"}, - {file = "ray-2.45.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5dc3b5ed8ab6f6978daa7bd7f8268c3e4042fac7811e8b661f74f820d7b2620f"}, - {file = "ray-2.45.0-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:afbb85c9d05af3b2509602e13b5adb0b20979aa7ab177a710b41f060435bb7c2"}, - {file = "ray-2.45.0-cp311-cp311-manylinux2014_x86_64.whl", hash = "sha256:d3f8d8c807f899465e3ce48fad4e51f84671886d731e3f3a494f3ba50ed09458"}, - {file = "ray-2.45.0-cp311-cp311-win_amd64.whl", hash = "sha256:f1869ce384d332d9b22252fd0f6d1873d286eafa72d892fd30d40ef68ba31942"}, - {file = "ray-2.45.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:d3c33113f4196b923d7895fdcbf6b680a1642dd121444e974401c350da7ac809"}, - {file = "ray-2.45.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:eeeff1da4803a5d2321a2bcb5fc16e20d8f104543e8ddf4f30d1acf6fa22fac2"}, - {file = "ray-2.45.0-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:11582102a1757591a75376c4947db9819d5fab765e3ed307c884ed6761db8646"}, - {file = "ray-2.45.0-cp312-cp312-manylinux2014_x86_64.whl", hash = "sha256:482d45f2f867fbec814595ce99fe558e9ff124327a61a486a4975e6a7c224a7e"}, - {file = "ray-2.45.0-cp312-cp312-win_amd64.whl", hash = "sha256:31284755041291b51ff6b667f891e70da779d3496732831c570631e87396f680"}, - {file = "ray-2.45.0-cp313-cp313-macosx_10_15_x86_64.whl", hash = "sha256:fa0dfa3b9606799d251262ae74afa86152da98351ca429d4026bac5759943569"}, - {file = "ray-2.45.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d3c7f340b08d4826c445f68024bb71e42861f4056b06f50df49a0957613cd729"}, - {file = "ray-2.45.0-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:6ba58cbdc0af2cf44ce49184bbdaa9886b559cad4ba4821a02e84020ed888fd7"}, - {file = "ray-2.45.0-cp313-cp313-manylinux2014_x86_64.whl", hash = "sha256:517476ffadd4af135ca5dd8af015417c0062ccbb44a866740a2963dd7fd0d2f0"}, - {file = "ray-2.45.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:dfcd4ccb4edb44ea893ef7348d35d70230eec1be9f9290c584bf021778160b01"}, - {file = "ray-2.45.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f0f062927b118025c774643f18e4276130e3fe5754bc35e2aaca5b99083b7e3"}, - {file = "ray-2.45.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:ed5c846af6c056c05a3ece3c6fdb5036b5cdda152b1e31bd13cdf5b5cd5b9fd3"}, - {file = "ray-2.45.0-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:f63e450df6bfb0dfa2716a721d98656b7a134056202c41c9b95fdeabac31591f"}, - {file = "ray-2.45.0-cp39-cp39-win_amd64.whl", hash = "sha256:ce6351c518f17cb415b169b0070026f04e0a6015ab427dc5dea588f01014dbbb"}, + {file = "ray-2.46.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:719244b84df79502e5f09497f256618d94d78d66fbaf229422008a0568d3a0ff"}, + {file = "ray-2.46.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4378a86919e6643238a1094f711b87fa8dc1a18b998d4190f69ab33c64a22a8c"}, + {file = "ray-2.46.0-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:396b912a4dbf64966e2fdfca9facbcafe57b792ca4842ac5ae17507fdbdfe89f"}, + {file = "ray-2.46.0-cp310-cp310-manylinux2014_x86_64.whl", hash = "sha256:c12850608c57c8afd9613a9f757d77663c50d4bd4e77ba2f181425052520c01a"}, + {file = "ray-2.46.0-cp310-cp310-win_amd64.whl", hash = "sha256:bc953aa4879c7a77893f921905df5cf65227cafd94fbc8273bec65ea393eacdd"}, + {file = "ray-2.46.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:942ba51de6f9cd7fb2ed17618181af48ce6b9517743d3235d846ec32295eca76"}, + {file = "ray-2.46.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:af84f3ed0854bb6de28192ca9e0a3bfa1eb34d69f118ae6348522198896480c8"}, + {file = "ray-2.46.0-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:81c8ce8b7ba33cb607ec78f5eb2555470e3046bb317732d8282e8189bb58ccbd"}, + {file = "ray-2.46.0-cp311-cp311-manylinux2014_x86_64.whl", hash = "sha256:d4ddedc3f4d48df564bcee7b131c98c9f898fef0a57483f4ba335f47f951a62f"}, + {file = "ray-2.46.0-cp311-cp311-win_amd64.whl", hash = "sha256:130415c4d231830156f37ce70acbdb5fdee10f6886adc4e85bdc4533d51c24c6"}, + {file = "ray-2.46.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:d1f37ead29299637144726f809c2e0ff958dd9c0e75930ef614156d6a0a3a57f"}, + {file = "ray-2.46.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b7a064acfeee7f0677d9e3f25daef9c59593559faea764b44a3e2c5331d5d832"}, + {file = "ray-2.46.0-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:006cbe1a8fdc37664114aa218773100ee891399785e256c202e48958d2dac167"}, + {file = "ray-2.46.0-cp312-cp312-manylinux2014_x86_64.whl", hash = "sha256:5cec1edda93f618ffd2301f81d5398037f03fa9b16825e7e4d8a00ae7a9a4381"}, + {file = "ray-2.46.0-cp312-cp312-win_amd64.whl", hash = "sha256:7d3160f8d187baaea91a86d16a9fd81136cf8607419c94b7a74d66fce774b5c2"}, + {file = "ray-2.46.0-cp313-cp313-macosx_10_15_x86_64.whl", hash = "sha256:b2fc2c43ea0a37521193c61ef9a27b6fca8dbab116a58a52fd44344cd73e1ece"}, + {file = "ray-2.46.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4296dd8c0174256a04ee4b54abe013b6802a45fb85fb7cfdb1375231965d6d4d"}, + {file = "ray-2.46.0-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:808daece1f12bd8924b9c6382a0f98da6f5c6886cfb271ed8d89407a89413cd5"}, + {file = "ray-2.46.0-cp313-cp313-manylinux2014_x86_64.whl", hash = "sha256:a5a28c0a311d2c3221dcf729c40898a6df82466bb5af21e81be0453e09856adf"}, + {file = "ray-2.46.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:e0ec198c16d0e9af7f03242ef7ad7d548eee37a918193917278a124ddd57410a"}, + {file = "ray-2.46.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e31568818973efa4f8ce18b82bce03089395a62ac9fe639e94d755959f607fe9"}, + {file = "ray-2.46.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:7c44a98cb24f4905e898d05b787cbe9f267a9f66c1e1f8cda50814f8b3673be2"}, + {file = "ray-2.46.0-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:91ea998a49578b1450cbef60705f6ece8622a262a3d764d5c99ba89b741de5d0"}, + {file = "ray-2.46.0-cp39-cp39-win_amd64.whl", hash = "sha256:018e98c9745eae53b53ad14fef1ca1c43bb64c39c3cceb9e6d4517729396003b"}, ] [package.dependencies] @@ -1948,13 +1948,13 @@ requests = "*" adag = ["cupy-cuda12x ; sys_platform != \"darwin\""] air = ["aiohttp (>=3.7)", "aiohttp-cors", "colorful", "fastapi", "fsspec", "grpcio (>=1.32.0) ; python_version < \"3.10\"", "grpcio (>=1.42.0) ; python_version >= \"3.10\"", "numpy (>=1.20)", "opencensus", "pandas", "pandas (>=1.3)", "prometheus-client (>=0.7.1)", "py-spy (>=0.2.0) ; python_version < \"3.12\"", "py-spy (>=0.4.0) ; python_version >= \"3.12\"", "pyarrow (<18) ; sys_platform == \"darwin\" and platform_machine == \"x86_64\"", "pyarrow (>=9.0.0)", "pydantic (<2.0.dev0 || >=2.5.dev0,<3)", "requests", "smart-open", "starlette", "tensorboardX (>=1.9)", "uvicorn[standard]", "virtualenv (>=20.0.24,!=20.21.1)", "watchfiles"] all = ["aiohttp (>=3.7)", "aiohttp-cors", "colorful", "cupy-cuda12x ; sys_platform != \"darwin\"", "dm-tree", "fastapi", "fsspec", "grpcio", "grpcio (!=1.56.0) ; sys_platform == \"darwin\"", "grpcio (>=1.32.0) ; python_version < \"3.10\"", "grpcio (>=1.42.0) ; python_version >= \"3.10\"", "gymnasium (==1.0.0)", "lz4", "memray ; sys_platform != \"win32\"", "numpy (>=1.20)", "opencensus", "opentelemetry-api", "opentelemetry-exporter-otlp", "opentelemetry-sdk", "ormsgpack (==1.7.0)", "pandas", "pandas (>=1.3)", "prometheus-client (>=0.7.1)", "py-spy (>=0.2.0) ; python_version < \"3.12\"", "py-spy (>=0.4.0) ; python_version >= \"3.12\"", "pyOpenSSL", "pyarrow (<18) ; sys_platform == \"darwin\" and platform_machine == \"x86_64\"", "pyarrow (>=9.0.0)", "pydantic (<2.0.dev0 || >=2.5.dev0,<3)", "pyyaml", "requests", "scipy", "smart-open", "starlette", "tensorboardX (>=1.9)", "uvicorn[standard]", "virtualenv (>=20.0.24,!=20.21.1)", "watchfiles"] -all-cpp = ["aiohttp (>=3.7)", "aiohttp-cors", "colorful", "cupy-cuda12x ; sys_platform != \"darwin\"", "dm-tree", "fastapi", "fsspec", "grpcio", "grpcio (!=1.56.0) ; sys_platform == \"darwin\"", "grpcio (>=1.32.0) ; python_version < \"3.10\"", "grpcio (>=1.42.0) ; python_version >= \"3.10\"", "gymnasium (==1.0.0)", "lz4", "memray ; sys_platform != \"win32\"", "numpy (>=1.20)", "opencensus", "opentelemetry-api", "opentelemetry-exporter-otlp", "opentelemetry-sdk", "ormsgpack (==1.7.0)", "pandas", "pandas (>=1.3)", "prometheus-client (>=0.7.1)", "py-spy (>=0.2.0) ; python_version < \"3.12\"", "py-spy (>=0.4.0) ; python_version >= \"3.12\"", "pyOpenSSL", "pyarrow (<18) ; sys_platform == \"darwin\" and platform_machine == \"x86_64\"", "pyarrow (>=9.0.0)", "pydantic (<2.0.dev0 || >=2.5.dev0,<3)", "pyyaml", "ray-cpp (==2.45.0)", "requests", "scipy", "smart-open", "starlette", "tensorboardX (>=1.9)", "uvicorn[standard]", "virtualenv (>=20.0.24,!=20.21.1)", "watchfiles"] +all-cpp = ["aiohttp (>=3.7)", "aiohttp-cors", "colorful", "cupy-cuda12x ; sys_platform != \"darwin\"", "dm-tree", "fastapi", "fsspec", "grpcio", "grpcio (!=1.56.0) ; sys_platform == \"darwin\"", "grpcio (>=1.32.0) ; python_version < \"3.10\"", "grpcio (>=1.42.0) ; python_version >= \"3.10\"", "gymnasium (==1.0.0)", "lz4", "memray ; sys_platform != \"win32\"", "numpy (>=1.20)", "opencensus", "opentelemetry-api", "opentelemetry-exporter-otlp", "opentelemetry-sdk", "ormsgpack (==1.7.0)", "pandas", "pandas (>=1.3)", "prometheus-client (>=0.7.1)", "py-spy (>=0.2.0) ; python_version < \"3.12\"", "py-spy (>=0.4.0) ; python_version >= \"3.12\"", "pyOpenSSL", "pyarrow (<18) ; sys_platform == \"darwin\" and platform_machine == \"x86_64\"", "pyarrow (>=9.0.0)", "pydantic (<2.0.dev0 || >=2.5.dev0,<3)", "pyyaml", "ray-cpp (==2.46.0)", "requests", "scipy", "smart-open", "starlette", "tensorboardX (>=1.9)", "uvicorn[standard]", "virtualenv (>=20.0.24,!=20.21.1)", "watchfiles"] cgraph = ["cupy-cuda12x ; sys_platform != \"darwin\""] client = ["grpcio", "grpcio (!=1.56.0) ; sys_platform == \"darwin\""] -cpp = ["ray-cpp (==2.45.0)"] +cpp = ["ray-cpp (==2.46.0)"] data = ["fsspec", "numpy (>=1.20)", "pandas (>=1.3)", "pyarrow (<18) ; sys_platform == \"darwin\" and platform_machine == \"x86_64\"", "pyarrow (>=9.0.0)"] default = ["aiohttp (>=3.7)", "aiohttp-cors", "colorful", "grpcio (>=1.32.0) ; python_version < \"3.10\"", "grpcio (>=1.42.0) ; python_version >= \"3.10\"", "opencensus", "prometheus-client (>=0.7.1)", "py-spy (>=0.2.0) ; python_version < \"3.12\"", "py-spy (>=0.4.0) ; python_version >= \"3.12\"", "pydantic (<2.0.dev0 || >=2.5.dev0,<3)", "requests", "smart-open", "virtualenv (>=20.0.24,!=20.21.1)"] -llm = ["aiohttp (>=3.7)", "aiohttp-cors", "async-timeout ; python_version < \"3.11\"", "colorful", "fastapi", "fsspec", "grpcio (>=1.32.0) ; python_version < \"3.10\"", "grpcio (>=1.42.0) ; python_version >= \"3.10\"", "jsonref (>=1.1.0)", "jsonschema", "ninja", "numpy (>=1.20)", "opencensus", "pandas (>=1.3)", "prometheus-client (>=0.7.1)", "py-spy (>=0.2.0) ; python_version < \"3.12\"", "py-spy (>=0.4.0) ; python_version >= \"3.12\"", "pyarrow (<18) ; sys_platform == \"darwin\" and platform_machine == \"x86_64\"", "pyarrow (>=9.0.0)", "pydantic (<2.0.dev0 || >=2.5.dev0,<3)", "requests", "smart-open", "starlette", "typer", "uvicorn[standard]", "virtualenv (>=20.0.24,!=20.21.1)", "vllm (>=0.8.2)", "watchfiles"] +llm = ["aiohttp (>=3.7)", "aiohttp-cors", "async-timeout ; python_version < \"3.11\"", "colorful", "fastapi", "fsspec", "grpcio (>=1.32.0) ; python_version < \"3.10\"", "grpcio (>=1.42.0) ; python_version >= \"3.10\"", "jsonref (>=1.1.0)", "jsonschema", "ninja", "numpy (>=1.20)", "opencensus", "pandas (>=1.3)", "prometheus-client (>=0.7.1)", "py-spy (>=0.2.0) ; python_version < \"3.12\"", "py-spy (>=0.4.0) ; python_version >= \"3.12\"", "pyarrow (<18) ; sys_platform == \"darwin\" and platform_machine == \"x86_64\"", "pyarrow (>=9.0.0)", "pydantic (<2.0.dev0 || >=2.5.dev0,<3)", "requests", "smart-open", "starlette", "typer", "uvicorn[standard]", "virtualenv (>=20.0.24,!=20.21.1)", "vllm (>=0.8.5)", "watchfiles"] observability = ["memray ; sys_platform != \"win32\"", "opentelemetry-api", "opentelemetry-exporter-otlp", "opentelemetry-sdk"] rllib = ["dm-tree", "fsspec", "gymnasium (==1.0.0)", "lz4", "ormsgpack (==1.7.0)", "pandas", "pyarrow (<18) ; sys_platform == \"darwin\" and platform_machine == \"x86_64\"", "pyarrow (>=9.0.0)", "pyyaml", "requests", "scipy", "tensorboardX (>=1.9)"] serve = ["aiohttp (>=3.7)", "aiohttp-cors", "colorful", "fastapi", "grpcio (>=1.32.0) ; python_version < \"3.10\"", "grpcio (>=1.42.0) ; python_version >= \"3.10\"", "opencensus", "prometheus-client (>=0.7.1)", "py-spy (>=0.2.0) ; python_version < \"3.12\"", "py-spy (>=0.4.0) ; python_version >= \"3.12\"", "pydantic (<2.0.dev0 || >=2.5.dev0,<3)", "requests", "smart-open", "starlette", "uvicorn[standard]", "virtualenv (>=20.0.24,!=20.21.1)", "watchfiles"] From ab662e4d1616320d58c7194e92d75245ebe359d8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 May 2025 13:11:38 +0000 Subject: [PATCH 28/44] build(deps): bump huggingface-hub from 0.30.2 to 0.31.1 in /clients/python (#1102) Bumps [huggingface-hub](https://github.com/huggingface/huggingface_hub) from 0.30.2 to 0.31.1. - [Release notes](https://github.com/huggingface/huggingface_hub/releases) - [Commits](https://github.com/huggingface/huggingface_hub/compare/v0.30.2...v0.31.1) --- updated-dependencies: - dependency-name: huggingface-hub dependency-version: 0.31.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- clients/python/poetry.lock | 33 ++++++++++++++++++++++++++++----- clients/python/pyproject.toml | 2 +- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/clients/python/poetry.lock b/clients/python/poetry.lock index 1654f23b3f..61db33fce8 100644 --- a/clients/python/poetry.lock +++ b/clients/python/poetry.lock @@ -789,22 +789,45 @@ files = [ {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, ] +[[package]] +name = "hf-xet" +version = "1.1.0" +description = "" +optional = true +python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"hf\" and (platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"arm64\" or platform_machine == \"aarch64\")" +files = [ + {file = "hf_xet-1.1.0-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:0322c42551e275fcb7949c083a54a81b2898e50787c9aa74284fcb8d2c58c12c"}, + {file = "hf_xet-1.1.0-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:667153a0304ac2debf2af95a8ff7687186f885b493f4cd16344869af270cd110"}, + {file = "hf_xet-1.1.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:995eeffb119636ea617b96c7d7bf3c3f5ea8727fa57974574e25d700b8532d48"}, + {file = "hf_xet-1.1.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3aee847da362393331f515c4010d0aaa1c2669acfcca1f4b28946d6949cc0086"}, + {file = "hf_xet-1.1.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:68c5813a6074aa36e12ef5983230e3b03148cce61e0fcdd294096493795565b4"}, + {file = "hf_xet-1.1.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:4ee9222bf9274b1c198b88a929de0b5a49349c4962d89c5b3b2f0f7f47d9761c"}, + {file = "hf_xet-1.1.0-cp37-abi3-win_amd64.whl", hash = "sha256:73153eab9abf3d6973b21e94a67ccba5d595c3e12feb8c0bf50be02964e7f126"}, + {file = "hf_xet-1.1.0.tar.gz", hash = "sha256:a7c2a4c2b6eee9ce0a1a367a82b60d95ba634420ef1c250addad7aa4af419cf4"}, +] + +[package.extras] +tests = ["pytest"] + [[package]] name = "huggingface-hub" -version = "0.30.2" +version = "0.31.1" description = "Client library to download and publish models, datasets and other repos on the huggingface.co hub" optional = true python-versions = ">=3.8.0" groups = ["main"] markers = "extra == \"hf\"" files = [ - {file = "huggingface_hub-0.30.2-py3-none-any.whl", hash = "sha256:68ff05969927058cfa41df4f2155d4bb48f5f54f719dd0390103eefa9b191e28"}, - {file = "huggingface_hub-0.30.2.tar.gz", hash = "sha256:9a7897c5b6fd9dad3168a794a8998d6378210f5b9688d0dfc180b1a228dc2466"}, + {file = "huggingface_hub-0.31.1-py3-none-any.whl", hash = "sha256:43f73124819b48b42d140cbc0d7a2e6bd15b2853b1b9d728d4d55ad1750cac5b"}, + {file = "huggingface_hub-0.31.1.tar.gz", hash = "sha256:492bb5f545337aa9e2f59b75ef4c5f535a371e8958a6ce90af056387e67f1180"}, ] [package.dependencies] filelock = "*" fsspec = ">=2023.5.0" +hf-xet = {version = ">=1.1.0,<2.0.0", markers = "platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"arm64\" or platform_machine == \"aarch64\""} packaging = ">=20.9" pyyaml = ">=5.1" requests = "*" @@ -817,7 +840,7 @@ cli = ["InquirerPy (==0.3.4)"] dev = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio (>=4.0.0)", "jedi", "libcst (==1.4.0)", "mypy (==1.5.1)", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.9.0)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"] fastai = ["fastai (>=2.4)", "fastcore (>=1.3.27)", "toml"] hf-transfer = ["hf-transfer (>=0.1.4)"] -hf-xet = ["hf-xet (>=0.1.4)"] +hf-xet = ["hf-xet (>=1.1.0,<2.0.0)"] inference = ["aiohttp"] quality = ["libcst (==1.4.0)", "mypy (==1.5.1)", "ruff (>=0.9.0)"] tensorflow = ["graphviz", "pydot", "tensorflow"] @@ -2773,4 +2796,4 @@ olot = ["olot"] [metadata] lock-version = "2.1" python-versions = ">= 3.9, < 4.0" -content-hash = "6ab0a701612b40cef582568f8be07a54a926ebcf6f0b00557187b2046f42ba92" +content-hash = "e7a592aa999086f73695a83016b300b9ce79ea07eb5c28cf7d26d8c07b779615" diff --git a/clients/python/pyproject.toml b/clients/python/pyproject.toml index b0ef0cc006..c99fb76839 100644 --- a/clients/python/pyproject.toml +++ b/clients/python/pyproject.toml @@ -26,7 +26,7 @@ nest-asyncio = "^1.6.0" # necessary for modern type annotations using pydantic on 3.9 eval-type-backport = "^0.2.0" -huggingface-hub = { version = ">=0.20.1,<0.31.0", optional = true } +huggingface-hub = { version = ">=0.20.1,<0.32.0", optional = true } olot = { version = "^0.1.6", optional = true } boto3 = { version = "^1.37.34", optional = true } From bf6cc97bfc3044a0f6782d8e7f711a936bc278f1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 May 2025 13:12:38 +0000 Subject: [PATCH 29/44] build(deps-dev): bump ruff from 0.11.8 to 0.11.9 in /clients/python (#1103) Bumps [ruff](https://github.com/astral-sh/ruff) from 0.11.8 to 0.11.9. - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/0.11.8...0.11.9) --- updated-dependencies: - dependency-name: ruff dependency-version: 0.11.9 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- clients/python/poetry.lock | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/clients/python/poetry.lock b/clients/python/poetry.lock index 61db33fce8..4977e65255 100644 --- a/clients/python/poetry.lock +++ b/clients/python/poetry.lock @@ -2009,30 +2009,30 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "ruff" -version = "0.11.8" +version = "0.11.9" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "ruff-0.11.8-py3-none-linux_armv6l.whl", hash = "sha256:896a37516c594805e34020c4a7546c8f8a234b679a7716a3f08197f38913e1a3"}, - {file = "ruff-0.11.8-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ab86d22d3d721a40dd3ecbb5e86ab03b2e053bc93c700dc68d1c3346b36ce835"}, - {file = "ruff-0.11.8-py3-none-macosx_11_0_arm64.whl", hash = "sha256:258f3585057508d317610e8a412788cf726efeefa2fec4dba4001d9e6f90d46c"}, - {file = "ruff-0.11.8-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:727d01702f7c30baed3fc3a34901a640001a2828c793525043c29f7614994a8c"}, - {file = "ruff-0.11.8-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3dca977cc4fc8f66e89900fa415ffe4dbc2e969da9d7a54bfca81a128c5ac219"}, - {file = "ruff-0.11.8-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c657fa987d60b104d2be8b052d66da0a2a88f9bd1d66b2254333e84ea2720c7f"}, - {file = "ruff-0.11.8-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:f2e74b021d0de5eceb8bd32919f6ff8a9b40ee62ed97becd44993ae5b9949474"}, - {file = "ruff-0.11.8-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f9b5ef39820abc0f2c62111f7045009e46b275f5b99d5e59dda113c39b7f4f38"}, - {file = "ruff-0.11.8-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c1dba3135ca503727aa4648152c0fa67c3b1385d3dc81c75cd8a229c4b2a1458"}, - {file = "ruff-0.11.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f024d32e62faad0f76b2d6afd141b8c171515e4fb91ce9fd6464335c81244e5"}, - {file = "ruff-0.11.8-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:d365618d3ad747432e1ae50d61775b78c055fee5936d77fb4d92c6f559741948"}, - {file = "ruff-0.11.8-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:4d9aaa91035bdf612c8ee7266153bcf16005c7c7e2f5878406911c92a31633cb"}, - {file = "ruff-0.11.8-py3-none-musllinux_1_2_i686.whl", hash = "sha256:0eba551324733efc76116d9f3a0d52946bc2751f0cd30661564117d6fd60897c"}, - {file = "ruff-0.11.8-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:161eb4cff5cfefdb6c9b8b3671d09f7def2f960cee33481dd898caf2bcd02304"}, - {file = "ruff-0.11.8-py3-none-win32.whl", hash = "sha256:5b18caa297a786465cc511d7f8be19226acf9c0a1127e06e736cd4e1878c3ea2"}, - {file = "ruff-0.11.8-py3-none-win_amd64.whl", hash = "sha256:6e70d11043bef637c5617297bdedec9632af15d53ac1e1ba29c448da9341b0c4"}, - {file = "ruff-0.11.8-py3-none-win_arm64.whl", hash = "sha256:304432e4c4a792e3da85b7699feb3426a0908ab98bf29df22a31b0cdd098fac2"}, - {file = "ruff-0.11.8.tar.gz", hash = "sha256:6d742d10626f9004b781f4558154bb226620a7242080e11caeffab1a40e99df8"}, + {file = "ruff-0.11.9-py3-none-linux_armv6l.whl", hash = "sha256:a31a1d143a5e6f499d1fb480f8e1e780b4dfdd580f86e05e87b835d22c5c6f8c"}, + {file = "ruff-0.11.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:66bc18ca783b97186a1f3100e91e492615767ae0a3be584e1266aa9051990722"}, + {file = "ruff-0.11.9-py3-none-macosx_11_0_arm64.whl", hash = "sha256:bd576cd06962825de8aece49f28707662ada6a1ff2db848d1348e12c580acbf1"}, + {file = "ruff-0.11.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b1d18b4be8182cc6fddf859ce432cc9631556e9f371ada52f3eaefc10d878de"}, + {file = "ruff-0.11.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0f3f46f759ac623e94824b1e5a687a0df5cd7f5b00718ff9c24f0a894a683be7"}, + {file = "ruff-0.11.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f34847eea11932d97b521450cf3e1d17863cfa5a94f21a056b93fb86f3f3dba2"}, + {file = "ruff-0.11.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:f33b15e00435773df97cddcd263578aa83af996b913721d86f47f4e0ee0ff271"}, + {file = "ruff-0.11.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7b27613a683b086f2aca8996f63cb3dd7bc49e6eccf590563221f7b43ded3f65"}, + {file = "ruff-0.11.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9e0d88756e63e8302e630cee3ce2ffb77859797cc84a830a24473939e6da3ca6"}, + {file = "ruff-0.11.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:537c82c9829d7811e3aa680205f94c81a2958a122ac391c0eb60336ace741a70"}, + {file = "ruff-0.11.9-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:440ac6a7029f3dee7d46ab7de6f54b19e34c2b090bb4f2480d0a2d635228f381"}, + {file = "ruff-0.11.9-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:71c539bac63d0788a30227ed4d43b81353c89437d355fdc52e0cda4ce5651787"}, + {file = "ruff-0.11.9-py3-none-musllinux_1_2_i686.whl", hash = "sha256:c67117bc82457e4501473c5f5217d49d9222a360794bfb63968e09e70f340abd"}, + {file = "ruff-0.11.9-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:e4b78454f97aa454586e8a5557facb40d683e74246c97372af3c2d76901d697b"}, + {file = "ruff-0.11.9-py3-none-win32.whl", hash = "sha256:7fe1bc950e7d7b42caaee2a8a3bc27410547cc032c9558ee2e0f6d3b209e845a"}, + {file = "ruff-0.11.9-py3-none-win_amd64.whl", hash = "sha256:52edaa4a6d70f8180343a5b7f030c7edd36ad180c9f4d224959c2d689962d964"}, + {file = "ruff-0.11.9-py3-none-win_arm64.whl", hash = "sha256:bcf42689c22f2e240f496d0c183ef2c6f7b35e809f12c1db58f75d9aa8d630ca"}, + {file = "ruff-0.11.9.tar.gz", hash = "sha256:ebd58d4f67a00afb3a30bf7d383e52d0e036e6195143c6db7019604a05335517"}, ] [[package]] From 9125316b9f87f4d9c10759619c7221da67f16137 Mon Sep 17 00:00:00 2001 From: Matteo Mortari Date: Mon, 12 May 2025 15:53:38 +0200 Subject: [PATCH 30/44] OWNERS: add ederign as approvers (#1091) Signed-off-by: Matteo Mortari --- OWNERS | 1 + 1 file changed, 1 insertion(+) diff --git a/OWNERS b/OWNERS index a876d871e9..9731231e6e 100644 --- a/OWNERS +++ b/OWNERS @@ -1,6 +1,7 @@ approvers: - andreyvelich - ckadner + - ederign - tarilabs - rareddy - Tomcli From cbf228f9bce0591b61d49ded69a10973907aefaf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 May 2025 16:46:40 +0000 Subject: [PATCH 31/44] build(deps): bump github.com/golang/glog from 1.2.4 to 1.2.5 (#1095) Bumps [github.com/golang/glog](https://github.com/golang/glog) from 1.2.4 to 1.2.5. - [Release notes](https://github.com/golang/glog/releases) - [Commits](https://github.com/golang/glog/compare/v1.2.4...v1.2.5) --- updated-dependencies: - dependency-name: github.com/golang/glog dependency-version: 1.2.5 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 661708f46d..72a2b69e59 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/go-chi/chi/v5 v5.2.1 github.com/go-chi/cors v1.2.1 github.com/go-logr/logr v1.4.2 - github.com/golang/glog v1.2.4 + github.com/golang/glog v1.2.5 github.com/kserve/kserve v0.15.0 github.com/onsi/ginkgo v1.16.5 github.com/onsi/ginkgo/v2 v2.23.4 @@ -22,6 +22,7 @@ require ( k8s.io/api v0.32.3 k8s.io/apimachinery v0.32.3 k8s.io/client-go v0.32.3 + knative.dev/pkg v0.0.0-20250117084104-c43477f0052b sigs.k8s.io/controller-runtime v0.20.4 ) @@ -135,7 +136,6 @@ require ( k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff // indirect k8s.io/utils v0.0.0-20250321185631-1f6e0b77f77e // indirect knative.dev/networking v0.0.0-20250117155906-67d1c274ba6a // indirect - knative.dev/pkg v0.0.0-20250117084104-c43477f0052b // indirect knative.dev/serving v0.44.0 // indirect sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.0 // indirect sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect diff --git a/go.sum b/go.sum index 47cb024aea..9205e05177 100644 --- a/go.sum +++ b/go.sum @@ -161,8 +161,8 @@ github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlnd github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.4 h1:CNNw5U8lSiiBk7druxtSHHTsRWcxKoac6kZKm2peBBc= -github.com/golang/glog v1.2.4/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/glog v1.2.5 h1:DrW6hGnjIhtvhOIiAKT6Psh/Kd/ldepEa81DKeiRJ5I= +github.com/golang/glog v1.2.5/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= From 8e3e6a55ec3f78c53e76e29e0d8c2b3d5f104b92 Mon Sep 17 00:00:00 2001 From: Ramesh Reddy Date: Tue, 13 May 2025 01:17:21 -0500 Subject: [PATCH 32/44] API Simplification - Flatten base types (#1090) * chore(openapi): flatten base types Signed-off-by: Paul Boyd * Simplification of the API of the Model Registry by reducing nested objects and making the API little flat Signed-off-by: Ramesh Reddy --------- Signed-off-by: Paul Boyd Signed-off-by: Ramesh Reddy Co-authored-by: Paul Boyd --- api/openapi/model-registry.yaml | 161 ++++--- clients/python/src/.openapi-generator/FILES | 6 - clients/python/src/mr_openapi/README.md | 6 - clients/python/src/mr_openapi/__init__.py | 6 - .../python/src/mr_openapi/models/__init__.py | 6 - .../src/mr_openapi/models/base_artifact.py | 147 ------ .../mr_openapi/models/base_artifact_create.py | 118 ----- .../mr_openapi/models/base_artifact_update.py | 113 ----- .../src/mr_openapi/models/base_execution.py | 141 ------ .../models/base_execution_create.py | 113 ----- .../models/base_execution_update.py | 108 ----- .../src/mr_openapi/models/doc_artifact.py | 18 +- .../mr_openapi/models/doc_artifact_create.py | 18 +- .../mr_openapi/models/doc_artifact_update.py | 6 +- .../src/mr_openapi/models/model_artifact.py | 18 +- .../models/model_artifact_create.py | 18 +- .../models/model_artifact_update.py | 18 +- .../src/mr_openapi/models/serve_model.py | 6 +- .../mr_openapi/models/serve_model_create.py | 6 +- .../mr_openapi/models/serve_model_update.py | 6 +- .../generated/mlmd_openapi_converter.gen.go | 22 +- .../generated/openapi_converter.gen.go | 168 +++---- .../generated/openapi_reconciler.gen.go | 88 ++-- .../server/openapi/.openapi-generator/FILES | 6 - internal/server/openapi/type_asserts.go | 60 --- pkg/openapi/.openapi-generator/FILES | 6 - pkg/openapi/model_base_artifact.go | 424 ------------------ pkg/openapi/model_base_artifact_create.go | 313 ------------- pkg/openapi/model_base_artifact_update.go | 276 ------------ pkg/openapi/model_base_execution.go | 387 ---------------- pkg/openapi/model_base_execution_create.go | 276 ------------ pkg/openapi/model_base_execution_update.go | 239 ---------- pkg/openapi/model_doc_artifact.go | 154 +++---- pkg/openapi/model_doc_artifact_create.go | 142 +++--- pkg/openapi/model_doc_artifact_update.go | 86 ++-- pkg/openapi/model_model_artifact.go | 154 +++---- pkg/openapi/model_model_artifact_create.go | 150 +++---- pkg/openapi/model_model_artifact_update.go | 158 +++---- pkg/openapi/model_serve_model.go | 74 +-- pkg/openapi/model_serve_model_create.go | 74 +-- pkg/openapi/model_serve_model_update.go | 74 +-- 41 files changed, 816 insertions(+), 3554 deletions(-) delete mode 100644 clients/python/src/mr_openapi/models/base_artifact.py delete mode 100644 clients/python/src/mr_openapi/models/base_artifact_create.py delete mode 100644 clients/python/src/mr_openapi/models/base_artifact_update.py delete mode 100644 clients/python/src/mr_openapi/models/base_execution.py delete mode 100644 clients/python/src/mr_openapi/models/base_execution_create.py delete mode 100644 clients/python/src/mr_openapi/models/base_execution_update.py delete mode 100644 pkg/openapi/model_base_artifact.go delete mode 100644 pkg/openapi/model_base_artifact_create.go delete mode 100644 pkg/openapi/model_base_artifact_update.go delete mode 100644 pkg/openapi/model_base_execution.go delete mode 100644 pkg/openapi/model_base_execution_create.go delete mode 100644 pkg/openapi/model_base_execution_update.go diff --git a/api/openapi/model-registry.yaml b/api/openapi/model-registry.yaml index 3aee7d1b32..8252176f5c 100644 --- a/api/openapi/model-registry.yaml +++ b/api/openapi/model-registry.yaml @@ -1188,73 +1188,68 @@ components: mapping: model-artifact: "#/components/schemas/ModelArtifactUpdate" doc-artifact: "#/components/schemas/DocArtifactUpdate" - BaseArtifact: - allOf: - - $ref: "#/components/schemas/BaseArtifactCreate" - - $ref: "#/components/schemas/BaseResource" - BaseArtifactCreate: - allOf: - - $ref: "#/components/schemas/BaseArtifactUpdate" - - $ref: "#/components/schemas/BaseResourceCreate" - BaseArtifactUpdate: - allOf: - - $ref: "#/components/schemas/BaseResourceUpdate" - - type: object - properties: - uri: - description: |- - The uniform resource identifier of the physical artifact. - May be empty if there is no physical artifact. - type: string - state: - $ref: "#/components/schemas/ArtifactState" - BaseExecution: - allOf: - - $ref: "#/components/schemas/BaseExecutionCreate" - - $ref: "#/components/schemas/BaseResource" - BaseExecutionCreate: - allOf: - - $ref: "#/components/schemas/BaseExecutionUpdate" - - $ref: "#/components/schemas/BaseResourceCreate" - BaseExecutionUpdate: - allOf: - - type: object - properties: - lastKnownState: - $ref: "#/components/schemas/ExecutionState" - - $ref: "#/components/schemas/BaseResourceUpdate" BaseResource: - allOf: - - $ref: "#/components/schemas/BaseResourceCreate" - - type: object - properties: - id: - format: int64 - description: The unique server generated id of the resource. - type: string - createTimeSinceEpoch: - format: int64 - description: Output only. Create time of the resource in millisecond since epoch. - type: string - readOnly: true - lastUpdateTimeSinceEpoch: - format: int64 - description: |- - Output only. Last update time of the resource since epoch in millisecond - since epoch. - type: string - readOnly: true + type: object + properties: + customProperties: + description: User provided custom properties which are not defined by its type. + type: object + additionalProperties: + $ref: "#/components/schemas/MetadataValue" + description: + description: |- + An optional description about the resource. + type: string + externalId: + description: |- + The external id that come from the clients’ system. This field is optional. + If set, it must be unique among all resources within a database instance. + type: string + name: + description: |- + The client provided name of the artifact. This field is optional. If set, + it must be unique among all the artifacts of the same artifact type within + a database instance and cannot be changed once set. + type: string + id: + format: int64 + description: The unique server generated id of the resource. + type: string + createTimeSinceEpoch: + format: int64 + description: Output only. Create time of the resource in millisecond since epoch. + type: string + readOnly: true + lastUpdateTimeSinceEpoch: + format: int64 + description: |- + Output only. Last update time of the resource since epoch in millisecond + since epoch. + type: string + readOnly: true BaseResourceCreate: - allOf: - - $ref: "#/components/schemas/BaseResourceUpdate" - - type: object - properties: - name: - description: |- - The client provided name of the artifact. This field is optional. If set, - it must be unique among all the artifacts of the same artifact type within - a database instance and cannot be changed once set. - type: string + type: object + properties: + customProperties: + description: User provided custom properties which are not defined by its type. + type: object + additionalProperties: + $ref: "#/components/schemas/MetadataValue" + description: + description: |- + An optional description about the resource. + type: string + externalId: + description: |- + The external id that come from the clients’ system. This field is optional. + If set, it must be unique among all resources within a database instance. + type: string + name: + description: |- + The client provided name of the artifact. This field is optional. If set, + it must be unique among all the artifacts of the same artifact type within + a database instance and cannot be changed once set. + type: string BaseResourceList: required: - nextPageToken @@ -1293,7 +1288,7 @@ components: DocArtifact: description: A document. allOf: - - $ref: "#/components/schemas/BaseArtifact" + - $ref: "#/components/schemas/BaseResource" - $ref: "#/components/schemas/DocArtifactCreate" - type: object properties: @@ -1303,7 +1298,7 @@ components: DocArtifactCreate: description: A document artifact to be created. allOf: - - $ref: "#/components/schemas/BaseArtifactCreate" + - $ref: "#/components/schemas/BaseResourceCreate" - $ref: "#/components/schemas/DocArtifactUpdate" - type: object properties: @@ -1313,12 +1308,19 @@ components: DocArtifactUpdate: description: A document artifact to be updated. allOf: - - $ref: "#/components/schemas/BaseArtifactUpdate" + - $ref: "#/components/schemas/BaseResourceUpdate" - type: object properties: artifactType: type: string default: "doc-artifact" + uri: + description: |- + The uniform resource identifier of the physical artifact. + May be empty if there is no physical artifact. + type: string + state: + $ref: "#/components/schemas/ArtifactState" Error: description: Error code and message. required: @@ -1527,7 +1529,7 @@ components: ModelArtifact: description: An ML model artifact. allOf: - - $ref: "#/components/schemas/BaseArtifact" + - $ref: "#/components/schemas/BaseResource" - $ref: "#/components/schemas/ModelArtifactCreate" - type: object properties: @@ -1541,7 +1543,7 @@ components: type: string default: "model-artifact" allOf: - - $ref: "#/components/schemas/BaseArtifactCreate" + - $ref: "#/components/schemas/BaseResourceCreate" - $ref: "#/components/schemas/ModelArtifactUpdate" ModelArtifactList: description: List of ModelArtifact entities. @@ -1559,7 +1561,7 @@ components: ModelArtifactUpdate: description: An ML model artifact to be updated. allOf: - - $ref: "#/components/schemas/BaseArtifactUpdate" + - $ref: "#/components/schemas/BaseResourceUpdate" - type: object properties: artifactType: @@ -1600,6 +1602,13 @@ components: modelSourceName: type: string description: "A human-readable name for the source model. \nE.g. `my-project/1`, `ibm-granite/granite-3.1-8b-base:2.1.2`." + uri: + description: |- + The uniform resource identifier of the physical artifact. + May be empty if there is no physical artifact. + type: string + state: + $ref: "#/components/schemas/ArtifactState" ModelVersion: description: Represents a ModelVersion belonging to a RegisteredModel. allOf: @@ -1718,14 +1727,14 @@ components: ServeModel: description: An ML model serving action. allOf: - - $ref: "#/components/schemas/BaseExecution" + - $ref: "#/components/schemas/BaseResource" - $ref: "#/components/schemas/ServeModelCreate" ServeModelCreate: description: An ML model serving action. required: - modelVersionId allOf: - - $ref: "#/components/schemas/BaseExecutionCreate" + - $ref: "#/components/schemas/BaseResourceCreate" - $ref: "#/components/schemas/ServeModelUpdate" - type: object properties: @@ -1748,7 +1757,11 @@ components: ServeModelUpdate: description: An ML model serving action. allOf: - - $ref: "#/components/schemas/BaseExecutionUpdate" + - $ref: "#/components/schemas/BaseResourceUpdate" + - type: object + properties: + lastKnownState: + $ref: "#/components/schemas/ExecutionState" ServingEnvironment: description: A Model Serving environment for serving `RegisteredModels`. allOf: diff --git a/clients/python/src/.openapi-generator/FILES b/clients/python/src/.openapi-generator/FILES index 1d6f28a42f..0d0d9e93f6 100644 --- a/clients/python/src/.openapi-generator/FILES +++ b/clients/python/src/.openapi-generator/FILES @@ -11,12 +11,6 @@ mr_openapi/models/artifact_create.py mr_openapi/models/artifact_list.py mr_openapi/models/artifact_state.py mr_openapi/models/artifact_update.py -mr_openapi/models/base_artifact.py -mr_openapi/models/base_artifact_create.py -mr_openapi/models/base_artifact_update.py -mr_openapi/models/base_execution.py -mr_openapi/models/base_execution_create.py -mr_openapi/models/base_execution_update.py mr_openapi/models/base_resource.py mr_openapi/models/base_resource_create.py mr_openapi/models/base_resource_list.py diff --git a/clients/python/src/mr_openapi/README.md b/clients/python/src/mr_openapi/README.md index c7f687c7b2..01bebdd948 100644 --- a/clients/python/src/mr_openapi/README.md +++ b/clients/python/src/mr_openapi/README.md @@ -122,12 +122,6 @@ Class | Method | HTTP request | Description - [ArtifactList](mr_openapi/docs/ArtifactList.md) - [ArtifactState](mr_openapi/docs/ArtifactState.md) - [ArtifactUpdate](mr_openapi/docs/ArtifactUpdate.md) - - [BaseArtifact](mr_openapi/docs/BaseArtifact.md) - - [BaseArtifactCreate](mr_openapi/docs/BaseArtifactCreate.md) - - [BaseArtifactUpdate](mr_openapi/docs/BaseArtifactUpdate.md) - - [BaseExecution](mr_openapi/docs/BaseExecution.md) - - [BaseExecutionCreate](mr_openapi/docs/BaseExecutionCreate.md) - - [BaseExecutionUpdate](mr_openapi/docs/BaseExecutionUpdate.md) - [BaseResource](mr_openapi/docs/BaseResource.md) - [BaseResourceCreate](mr_openapi/docs/BaseResourceCreate.md) - [BaseResourceList](mr_openapi/docs/BaseResourceList.md) diff --git a/clients/python/src/mr_openapi/__init__.py b/clients/python/src/mr_openapi/__init__.py index 08a4a0a7a1..4740b215f2 100644 --- a/clients/python/src/mr_openapi/__init__.py +++ b/clients/python/src/mr_openapi/__init__.py @@ -36,12 +36,6 @@ from mr_openapi.models.artifact_list import ArtifactList from mr_openapi.models.artifact_state import ArtifactState from mr_openapi.models.artifact_update import ArtifactUpdate -from mr_openapi.models.base_artifact import BaseArtifact -from mr_openapi.models.base_artifact_create import BaseArtifactCreate -from mr_openapi.models.base_artifact_update import BaseArtifactUpdate -from mr_openapi.models.base_execution import BaseExecution -from mr_openapi.models.base_execution_create import BaseExecutionCreate -from mr_openapi.models.base_execution_update import BaseExecutionUpdate from mr_openapi.models.base_resource import BaseResource from mr_openapi.models.base_resource_create import BaseResourceCreate from mr_openapi.models.base_resource_list import BaseResourceList diff --git a/clients/python/src/mr_openapi/models/__init__.py b/clients/python/src/mr_openapi/models/__init__.py index 7fd7bc2600..4c362eaddf 100644 --- a/clients/python/src/mr_openapi/models/__init__.py +++ b/clients/python/src/mr_openapi/models/__init__.py @@ -19,12 +19,6 @@ from mr_openapi.models.artifact_list import ArtifactList from mr_openapi.models.artifact_state import ArtifactState from mr_openapi.models.artifact_update import ArtifactUpdate -from mr_openapi.models.base_artifact import BaseArtifact -from mr_openapi.models.base_artifact_create import BaseArtifactCreate -from mr_openapi.models.base_artifact_update import BaseArtifactUpdate -from mr_openapi.models.base_execution import BaseExecution -from mr_openapi.models.base_execution_create import BaseExecutionCreate -from mr_openapi.models.base_execution_update import BaseExecutionUpdate from mr_openapi.models.base_resource import BaseResource from mr_openapi.models.base_resource_create import BaseResourceCreate from mr_openapi.models.base_resource_list import BaseResourceList diff --git a/clients/python/src/mr_openapi/models/base_artifact.py b/clients/python/src/mr_openapi/models/base_artifact.py deleted file mode 100644 index 742b33ff12..0000000000 --- a/clients/python/src/mr_openapi/models/base_artifact.py +++ /dev/null @@ -1,147 +0,0 @@ -"""Model Registry REST API. - -REST API for Model Registry to create and manage ML model metadata - -The version of the OpenAPI document: v1alpha3 -Generated by OpenAPI Generator (https://openapi-generator.tech) - -Do not edit the class manually. -""" # noqa: E501 - -from __future__ import annotations - -import json -import pprint -import re # noqa: F401 -from typing import Any, ClassVar - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing_extensions import Self - -from mr_openapi.models.artifact_state import ArtifactState -from mr_openapi.models.metadata_value import MetadataValue - - -class BaseArtifact(BaseModel): - """BaseArtifact.""" # noqa: E501 - - custom_properties: dict[str, MetadataValue] | None = Field( - default=None, - description="User provided custom properties which are not defined by its type.", - alias="customProperties", - ) - description: StrictStr | None = Field(default=None, description="An optional description about the resource.") - external_id: StrictStr | None = Field( - default=None, - description="The external id that come from the clients’ system. This field is optional. If set, it must be unique among all resources within a database instance.", - alias="externalId", - ) - uri: StrictStr | None = Field( - default=None, - description="The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact.", - ) - state: ArtifactState | None = None - name: StrictStr | None = Field( - default=None, - description="The client provided name of the artifact. This field is optional. If set, it must be unique among all the artifacts of the same artifact type within a database instance and cannot be changed once set.", - ) - id: StrictStr | None = Field(default=None, description="The unique server generated id of the resource.") - create_time_since_epoch: StrictStr | None = Field( - default=None, - description="Output only. Create time of the resource in millisecond since epoch.", - alias="createTimeSinceEpoch", - ) - last_update_time_since_epoch: StrictStr | None = Field( - default=None, - description="Output only. Last update time of the resource since epoch in millisecond since epoch.", - alias="lastUpdateTimeSinceEpoch", - ) - __properties: ClassVar[list[str]] = [ - "customProperties", - "description", - "externalId", - "uri", - "state", - "name", - "id", - "createTimeSinceEpoch", - "lastUpdateTimeSinceEpoch", - ] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - def to_str(self) -> str: - """Returns the string representation of the model using alias.""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias.""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Self | None: - """Create an instance of BaseArtifact from a JSON string.""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. - """ - excluded_fields: set[str] = { - "create_time_since_epoch", - "last_update_time_since_epoch", - } - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each value in custom_properties (dict) - _field_dict = {} - if self.custom_properties: - for _key in self.custom_properties: - if self.custom_properties[_key]: - _field_dict[_key] = self.custom_properties[_key].to_dict() - _dict["customProperties"] = _field_dict - return _dict - - @classmethod - def from_dict(cls, obj: dict[str, Any] | None) -> Self | None: - """Create an instance of BaseArtifact from a dict.""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - return cls.model_validate( - { - "customProperties": ( - {_k: MetadataValue.from_dict(_v) for _k, _v in obj["customProperties"].items()} - if obj.get("customProperties") is not None - else None - ), - "description": obj.get("description"), - "externalId": obj.get("externalId"), - "uri": obj.get("uri"), - "state": obj.get("state"), - "name": obj.get("name"), - "id": obj.get("id"), - "createTimeSinceEpoch": obj.get("createTimeSinceEpoch"), - "lastUpdateTimeSinceEpoch": obj.get("lastUpdateTimeSinceEpoch"), - } - ) diff --git a/clients/python/src/mr_openapi/models/base_artifact_create.py b/clients/python/src/mr_openapi/models/base_artifact_create.py deleted file mode 100644 index 40540b0f0f..0000000000 --- a/clients/python/src/mr_openapi/models/base_artifact_create.py +++ /dev/null @@ -1,118 +0,0 @@ -"""Model Registry REST API. - -REST API for Model Registry to create and manage ML model metadata - -The version of the OpenAPI document: v1alpha3 -Generated by OpenAPI Generator (https://openapi-generator.tech) - -Do not edit the class manually. -""" # noqa: E501 - -from __future__ import annotations - -import json -import pprint -import re # noqa: F401 -from typing import Any, ClassVar - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing_extensions import Self - -from mr_openapi.models.artifact_state import ArtifactState -from mr_openapi.models.metadata_value import MetadataValue - - -class BaseArtifactCreate(BaseModel): - """BaseArtifactCreate.""" # noqa: E501 - - custom_properties: dict[str, MetadataValue] | None = Field( - default=None, - description="User provided custom properties which are not defined by its type.", - alias="customProperties", - ) - description: StrictStr | None = Field(default=None, description="An optional description about the resource.") - external_id: StrictStr | None = Field( - default=None, - description="The external id that come from the clients’ system. This field is optional. If set, it must be unique among all resources within a database instance.", - alias="externalId", - ) - uri: StrictStr | None = Field( - default=None, - description="The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact.", - ) - state: ArtifactState | None = None - name: StrictStr | None = Field( - default=None, - description="The client provided name of the artifact. This field is optional. If set, it must be unique among all the artifacts of the same artifact type within a database instance and cannot be changed once set.", - ) - __properties: ClassVar[list[str]] = ["customProperties", "description", "externalId", "uri", "state", "name"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - def to_str(self) -> str: - """Returns the string representation of the model using alias.""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias.""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Self | None: - """Create an instance of BaseArtifactCreate from a JSON string.""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: set[str] = set() - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each value in custom_properties (dict) - _field_dict = {} - if self.custom_properties: - for _key in self.custom_properties: - if self.custom_properties[_key]: - _field_dict[_key] = self.custom_properties[_key].to_dict() - _dict["customProperties"] = _field_dict - return _dict - - @classmethod - def from_dict(cls, obj: dict[str, Any] | None) -> Self | None: - """Create an instance of BaseArtifactCreate from a dict.""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - return cls.model_validate( - { - "customProperties": ( - {_k: MetadataValue.from_dict(_v) for _k, _v in obj["customProperties"].items()} - if obj.get("customProperties") is not None - else None - ), - "description": obj.get("description"), - "externalId": obj.get("externalId"), - "uri": obj.get("uri"), - "state": obj.get("state"), - "name": obj.get("name"), - } - ) diff --git a/clients/python/src/mr_openapi/models/base_artifact_update.py b/clients/python/src/mr_openapi/models/base_artifact_update.py deleted file mode 100644 index 08c6b4c2e3..0000000000 --- a/clients/python/src/mr_openapi/models/base_artifact_update.py +++ /dev/null @@ -1,113 +0,0 @@ -"""Model Registry REST API. - -REST API for Model Registry to create and manage ML model metadata - -The version of the OpenAPI document: v1alpha3 -Generated by OpenAPI Generator (https://openapi-generator.tech) - -Do not edit the class manually. -""" # noqa: E501 - -from __future__ import annotations - -import json -import pprint -import re # noqa: F401 -from typing import Any, ClassVar - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing_extensions import Self - -from mr_openapi.models.artifact_state import ArtifactState -from mr_openapi.models.metadata_value import MetadataValue - - -class BaseArtifactUpdate(BaseModel): - """BaseArtifactUpdate.""" # noqa: E501 - - custom_properties: dict[str, MetadataValue] | None = Field( - default=None, - description="User provided custom properties which are not defined by its type.", - alias="customProperties", - ) - description: StrictStr | None = Field(default=None, description="An optional description about the resource.") - external_id: StrictStr | None = Field( - default=None, - description="The external id that come from the clients’ system. This field is optional. If set, it must be unique among all resources within a database instance.", - alias="externalId", - ) - uri: StrictStr | None = Field( - default=None, - description="The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact.", - ) - state: ArtifactState | None = None - __properties: ClassVar[list[str]] = ["customProperties", "description", "externalId", "uri", "state"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - def to_str(self) -> str: - """Returns the string representation of the model using alias.""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias.""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Self | None: - """Create an instance of BaseArtifactUpdate from a JSON string.""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: set[str] = set() - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each value in custom_properties (dict) - _field_dict = {} - if self.custom_properties: - for _key in self.custom_properties: - if self.custom_properties[_key]: - _field_dict[_key] = self.custom_properties[_key].to_dict() - _dict["customProperties"] = _field_dict - return _dict - - @classmethod - def from_dict(cls, obj: dict[str, Any] | None) -> Self | None: - """Create an instance of BaseArtifactUpdate from a dict.""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - return cls.model_validate( - { - "customProperties": ( - {_k: MetadataValue.from_dict(_v) for _k, _v in obj["customProperties"].items()} - if obj.get("customProperties") is not None - else None - ), - "description": obj.get("description"), - "externalId": obj.get("externalId"), - "uri": obj.get("uri"), - "state": obj.get("state"), - } - ) diff --git a/clients/python/src/mr_openapi/models/base_execution.py b/clients/python/src/mr_openapi/models/base_execution.py deleted file mode 100644 index b1fed836d7..0000000000 --- a/clients/python/src/mr_openapi/models/base_execution.py +++ /dev/null @@ -1,141 +0,0 @@ -"""Model Registry REST API. - -REST API for Model Registry to create and manage ML model metadata - -The version of the OpenAPI document: v1alpha3 -Generated by OpenAPI Generator (https://openapi-generator.tech) - -Do not edit the class manually. -""" # noqa: E501 - -from __future__ import annotations - -import json -import pprint -import re # noqa: F401 -from typing import Any, ClassVar - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing_extensions import Self - -from mr_openapi.models.execution_state import ExecutionState -from mr_openapi.models.metadata_value import MetadataValue - - -class BaseExecution(BaseModel): - """BaseExecution.""" # noqa: E501 - - last_known_state: ExecutionState | None = Field(default=None, alias="lastKnownState") - custom_properties: dict[str, MetadataValue] | None = Field( - default=None, - description="User provided custom properties which are not defined by its type.", - alias="customProperties", - ) - description: StrictStr | None = Field(default=None, description="An optional description about the resource.") - external_id: StrictStr | None = Field( - default=None, - description="The external id that come from the clients’ system. This field is optional. If set, it must be unique among all resources within a database instance.", - alias="externalId", - ) - name: StrictStr | None = Field( - default=None, - description="The client provided name of the artifact. This field is optional. If set, it must be unique among all the artifacts of the same artifact type within a database instance and cannot be changed once set.", - ) - id: StrictStr | None = Field(default=None, description="The unique server generated id of the resource.") - create_time_since_epoch: StrictStr | None = Field( - default=None, - description="Output only. Create time of the resource in millisecond since epoch.", - alias="createTimeSinceEpoch", - ) - last_update_time_since_epoch: StrictStr | None = Field( - default=None, - description="Output only. Last update time of the resource since epoch in millisecond since epoch.", - alias="lastUpdateTimeSinceEpoch", - ) - __properties: ClassVar[list[str]] = [ - "lastKnownState", - "customProperties", - "description", - "externalId", - "name", - "id", - "createTimeSinceEpoch", - "lastUpdateTimeSinceEpoch", - ] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - def to_str(self) -> str: - """Returns the string representation of the model using alias.""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias.""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Self | None: - """Create an instance of BaseExecution from a JSON string.""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. - """ - excluded_fields: set[str] = { - "create_time_since_epoch", - "last_update_time_since_epoch", - } - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each value in custom_properties (dict) - _field_dict = {} - if self.custom_properties: - for _key in self.custom_properties: - if self.custom_properties[_key]: - _field_dict[_key] = self.custom_properties[_key].to_dict() - _dict["customProperties"] = _field_dict - return _dict - - @classmethod - def from_dict(cls, obj: dict[str, Any] | None) -> Self | None: - """Create an instance of BaseExecution from a dict.""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - return cls.model_validate( - { - "lastKnownState": obj.get("lastKnownState"), - "customProperties": ( - {_k: MetadataValue.from_dict(_v) for _k, _v in obj["customProperties"].items()} - if obj.get("customProperties") is not None - else None - ), - "description": obj.get("description"), - "externalId": obj.get("externalId"), - "name": obj.get("name"), - "id": obj.get("id"), - "createTimeSinceEpoch": obj.get("createTimeSinceEpoch"), - "lastUpdateTimeSinceEpoch": obj.get("lastUpdateTimeSinceEpoch"), - } - ) diff --git a/clients/python/src/mr_openapi/models/base_execution_create.py b/clients/python/src/mr_openapi/models/base_execution_create.py deleted file mode 100644 index 3cd70a8a3f..0000000000 --- a/clients/python/src/mr_openapi/models/base_execution_create.py +++ /dev/null @@ -1,113 +0,0 @@ -"""Model Registry REST API. - -REST API for Model Registry to create and manage ML model metadata - -The version of the OpenAPI document: v1alpha3 -Generated by OpenAPI Generator (https://openapi-generator.tech) - -Do not edit the class manually. -""" # noqa: E501 - -from __future__ import annotations - -import json -import pprint -import re # noqa: F401 -from typing import Any, ClassVar - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing_extensions import Self - -from mr_openapi.models.execution_state import ExecutionState -from mr_openapi.models.metadata_value import MetadataValue - - -class BaseExecutionCreate(BaseModel): - """BaseExecutionCreate.""" # noqa: E501 - - last_known_state: ExecutionState | None = Field(default=None, alias="lastKnownState") - custom_properties: dict[str, MetadataValue] | None = Field( - default=None, - description="User provided custom properties which are not defined by its type.", - alias="customProperties", - ) - description: StrictStr | None = Field(default=None, description="An optional description about the resource.") - external_id: StrictStr | None = Field( - default=None, - description="The external id that come from the clients’ system. This field is optional. If set, it must be unique among all resources within a database instance.", - alias="externalId", - ) - name: StrictStr | None = Field( - default=None, - description="The client provided name of the artifact. This field is optional. If set, it must be unique among all the artifacts of the same artifact type within a database instance and cannot be changed once set.", - ) - __properties: ClassVar[list[str]] = ["lastKnownState", "customProperties", "description", "externalId", "name"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - def to_str(self) -> str: - """Returns the string representation of the model using alias.""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias.""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Self | None: - """Create an instance of BaseExecutionCreate from a JSON string.""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: set[str] = set() - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each value in custom_properties (dict) - _field_dict = {} - if self.custom_properties: - for _key in self.custom_properties: - if self.custom_properties[_key]: - _field_dict[_key] = self.custom_properties[_key].to_dict() - _dict["customProperties"] = _field_dict - return _dict - - @classmethod - def from_dict(cls, obj: dict[str, Any] | None) -> Self | None: - """Create an instance of BaseExecutionCreate from a dict.""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - return cls.model_validate( - { - "lastKnownState": obj.get("lastKnownState"), - "customProperties": ( - {_k: MetadataValue.from_dict(_v) for _k, _v in obj["customProperties"].items()} - if obj.get("customProperties") is not None - else None - ), - "description": obj.get("description"), - "externalId": obj.get("externalId"), - "name": obj.get("name"), - } - ) diff --git a/clients/python/src/mr_openapi/models/base_execution_update.py b/clients/python/src/mr_openapi/models/base_execution_update.py deleted file mode 100644 index bdef49c4b5..0000000000 --- a/clients/python/src/mr_openapi/models/base_execution_update.py +++ /dev/null @@ -1,108 +0,0 @@ -"""Model Registry REST API. - -REST API for Model Registry to create and manage ML model metadata - -The version of the OpenAPI document: v1alpha3 -Generated by OpenAPI Generator (https://openapi-generator.tech) - -Do not edit the class manually. -""" # noqa: E501 - -from __future__ import annotations - -import json -import pprint -import re # noqa: F401 -from typing import Any, ClassVar - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing_extensions import Self - -from mr_openapi.models.execution_state import ExecutionState -from mr_openapi.models.metadata_value import MetadataValue - - -class BaseExecutionUpdate(BaseModel): - """BaseExecutionUpdate.""" # noqa: E501 - - custom_properties: dict[str, MetadataValue] | None = Field( - default=None, - description="User provided custom properties which are not defined by its type.", - alias="customProperties", - ) - description: StrictStr | None = Field(default=None, description="An optional description about the resource.") - external_id: StrictStr | None = Field( - default=None, - description="The external id that come from the clients’ system. This field is optional. If set, it must be unique among all resources within a database instance.", - alias="externalId", - ) - last_known_state: ExecutionState | None = Field(default=None, alias="lastKnownState") - __properties: ClassVar[list[str]] = ["customProperties", "description", "externalId", "lastKnownState"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - def to_str(self) -> str: - """Returns the string representation of the model using alias.""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias.""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Self | None: - """Create an instance of BaseExecutionUpdate from a JSON string.""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: set[str] = set() - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each value in custom_properties (dict) - _field_dict = {} - if self.custom_properties: - for _key in self.custom_properties: - if self.custom_properties[_key]: - _field_dict[_key] = self.custom_properties[_key].to_dict() - _dict["customProperties"] = _field_dict - return _dict - - @classmethod - def from_dict(cls, obj: dict[str, Any] | None) -> Self | None: - """Create an instance of BaseExecutionUpdate from a dict.""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - return cls.model_validate( - { - "customProperties": ( - {_k: MetadataValue.from_dict(_v) for _k, _v in obj["customProperties"].items()} - if obj.get("customProperties") is not None - else None - ), - "description": obj.get("description"), - "externalId": obj.get("externalId"), - "lastKnownState": obj.get("lastKnownState"), - } - ) diff --git a/clients/python/src/mr_openapi/models/doc_artifact.py b/clients/python/src/mr_openapi/models/doc_artifact.py index 5326d7dd3b..4dabeeda8b 100644 --- a/clients/python/src/mr_openapi/models/doc_artifact.py +++ b/clients/python/src/mr_openapi/models/doc_artifact.py @@ -36,11 +36,6 @@ class DocArtifact(BaseModel): description="The external id that come from the clients’ system. This field is optional. If set, it must be unique among all resources within a database instance.", alias="externalId", ) - uri: StrictStr | None = Field( - default=None, - description="The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact.", - ) - state: ArtifactState | None = None name: StrictStr | None = Field( default=None, description="The client provided name of the artifact. This field is optional. If set, it must be unique among all the artifacts of the same artifact type within a database instance and cannot be changed once set.", @@ -57,17 +52,22 @@ class DocArtifact(BaseModel): alias="lastUpdateTimeSinceEpoch", ) artifact_type: StrictStr | None = Field(default="doc-artifact", alias="artifactType") + uri: StrictStr | None = Field( + default=None, + description="The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact.", + ) + state: ArtifactState | None = None __properties: ClassVar[list[str]] = [ "customProperties", "description", "externalId", - "uri", - "state", "name", "id", "createTimeSinceEpoch", "lastUpdateTimeSinceEpoch", "artifactType", + "uri", + "state", ] model_config = ConfigDict( @@ -140,12 +140,12 @@ def from_dict(cls, obj: dict[str, Any] | None) -> Self | None: ), "description": obj.get("description"), "externalId": obj.get("externalId"), - "uri": obj.get("uri"), - "state": obj.get("state"), "name": obj.get("name"), "id": obj.get("id"), "createTimeSinceEpoch": obj.get("createTimeSinceEpoch"), "lastUpdateTimeSinceEpoch": obj.get("lastUpdateTimeSinceEpoch"), "artifactType": obj.get("artifactType") if obj.get("artifactType") is not None else "doc-artifact", + "uri": obj.get("uri"), + "state": obj.get("state"), } ) diff --git a/clients/python/src/mr_openapi/models/doc_artifact_create.py b/clients/python/src/mr_openapi/models/doc_artifact_create.py index e2cdc7857c..ff24f41790 100644 --- a/clients/python/src/mr_openapi/models/doc_artifact_create.py +++ b/clients/python/src/mr_openapi/models/doc_artifact_create.py @@ -36,24 +36,24 @@ class DocArtifactCreate(BaseModel): description="The external id that come from the clients’ system. This field is optional. If set, it must be unique among all resources within a database instance.", alias="externalId", ) - uri: StrictStr | None = Field( - default=None, - description="The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact.", - ) - state: ArtifactState | None = None name: StrictStr | None = Field( default=None, description="The client provided name of the artifact. This field is optional. If set, it must be unique among all the artifacts of the same artifact type within a database instance and cannot be changed once set.", ) artifact_type: StrictStr | None = Field(default="doc-artifact", alias="artifactType") + uri: StrictStr | None = Field( + default=None, + description="The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact.", + ) + state: ArtifactState | None = None __properties: ClassVar[list[str]] = [ "customProperties", "description", "externalId", - "uri", - "state", "name", "artifactType", + "uri", + "state", ] model_config = ConfigDict( @@ -120,9 +120,9 @@ def from_dict(cls, obj: dict[str, Any] | None) -> Self | None: ), "description": obj.get("description"), "externalId": obj.get("externalId"), - "uri": obj.get("uri"), - "state": obj.get("state"), "name": obj.get("name"), "artifactType": obj.get("artifactType") if obj.get("artifactType") is not None else "doc-artifact", + "uri": obj.get("uri"), + "state": obj.get("state"), } ) diff --git a/clients/python/src/mr_openapi/models/doc_artifact_update.py b/clients/python/src/mr_openapi/models/doc_artifact_update.py index 3f5c84c9c4..ef86ee4516 100644 --- a/clients/python/src/mr_openapi/models/doc_artifact_update.py +++ b/clients/python/src/mr_openapi/models/doc_artifact_update.py @@ -36,19 +36,19 @@ class DocArtifactUpdate(BaseModel): description="The external id that come from the clients’ system. This field is optional. If set, it must be unique among all resources within a database instance.", alias="externalId", ) + artifact_type: StrictStr | None = Field(default="doc-artifact", alias="artifactType") uri: StrictStr | None = Field( default=None, description="The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact.", ) state: ArtifactState | None = None - artifact_type: StrictStr | None = Field(default="doc-artifact", alias="artifactType") __properties: ClassVar[list[str]] = [ "customProperties", "description", "externalId", + "artifactType", "uri", "state", - "artifactType", ] model_config = ConfigDict( @@ -115,8 +115,8 @@ def from_dict(cls, obj: dict[str, Any] | None) -> Self | None: ), "description": obj.get("description"), "externalId": obj.get("externalId"), + "artifactType": obj.get("artifactType") if obj.get("artifactType") is not None else "doc-artifact", "uri": obj.get("uri"), "state": obj.get("state"), - "artifactType": obj.get("artifactType") if obj.get("artifactType") is not None else "doc-artifact", } ) diff --git a/clients/python/src/mr_openapi/models/model_artifact.py b/clients/python/src/mr_openapi/models/model_artifact.py index aea9ce2eb2..bde281d693 100644 --- a/clients/python/src/mr_openapi/models/model_artifact.py +++ b/clients/python/src/mr_openapi/models/model_artifact.py @@ -36,11 +36,6 @@ class ModelArtifact(BaseModel): description="The external id that come from the clients’ system. This field is optional. If set, it must be unique among all resources within a database instance.", alias="externalId", ) - uri: StrictStr | None = Field( - default=None, - description="The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact.", - ) - state: ArtifactState | None = None name: StrictStr | None = Field( default=None, description="The client provided name of the artifact. This field is optional. If set, it must be unique among all the artifacts of the same artifact type within a database instance and cannot be changed once set.", @@ -95,12 +90,15 @@ class ModelArtifact(BaseModel): description="A human-readable name for the source model. E.g. `my-project/1`, `ibm-granite/granite-3.1-8b-base:2.1.2`.", alias="modelSourceName", ) + uri: StrictStr | None = Field( + default=None, + description="The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact.", + ) + state: ArtifactState | None = None __properties: ClassVar[list[str]] = [ "customProperties", "description", "externalId", - "uri", - "state", "name", "id", "createTimeSinceEpoch", @@ -116,6 +114,8 @@ class ModelArtifact(BaseModel): "modelSourceGroup", "modelSourceId", "modelSourceName", + "uri", + "state", ] model_config = ConfigDict( @@ -188,8 +188,6 @@ def from_dict(cls, obj: dict[str, Any] | None) -> Self | None: ), "description": obj.get("description"), "externalId": obj.get("externalId"), - "uri": obj.get("uri"), - "state": obj.get("state"), "name": obj.get("name"), "id": obj.get("id"), "createTimeSinceEpoch": obj.get("createTimeSinceEpoch"), @@ -205,5 +203,7 @@ def from_dict(cls, obj: dict[str, Any] | None) -> Self | None: "modelSourceGroup": obj.get("modelSourceGroup"), "modelSourceId": obj.get("modelSourceId"), "modelSourceName": obj.get("modelSourceName"), + "uri": obj.get("uri"), + "state": obj.get("state"), } ) diff --git a/clients/python/src/mr_openapi/models/model_artifact_create.py b/clients/python/src/mr_openapi/models/model_artifact_create.py index 8cc5055969..7b79f4521c 100644 --- a/clients/python/src/mr_openapi/models/model_artifact_create.py +++ b/clients/python/src/mr_openapi/models/model_artifact_create.py @@ -37,11 +37,6 @@ class ModelArtifactCreate(BaseModel): description="The external id that come from the clients’ system. This field is optional. If set, it must be unique among all resources within a database instance.", alias="externalId", ) - uri: StrictStr | None = Field( - default=None, - description="The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact.", - ) - state: ArtifactState | None = None name: StrictStr | None = Field( default=None, description="The client provided name of the artifact. This field is optional. If set, it must be unique among all the artifacts of the same artifact type within a database instance and cannot be changed once set.", @@ -84,12 +79,15 @@ class ModelArtifactCreate(BaseModel): description="A human-readable name for the source model. E.g. `my-project/1`, `ibm-granite/granite-3.1-8b-base:2.1.2`.", alias="modelSourceName", ) + uri: StrictStr | None = Field( + default=None, + description="The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact.", + ) + state: ArtifactState | None = None __properties: ClassVar[list[str]] = [ "customProperties", "description", "externalId", - "uri", - "state", "name", "artifactType", "modelFormatName", @@ -102,6 +100,8 @@ class ModelArtifactCreate(BaseModel): "modelSourceGroup", "modelSourceId", "modelSourceName", + "uri", + "state", ] model_config = ConfigDict( @@ -168,8 +168,6 @@ def from_dict(cls, obj: dict[str, Any] | None) -> Self | None: ), "description": obj.get("description"), "externalId": obj.get("externalId"), - "uri": obj.get("uri"), - "state": obj.get("state"), "name": obj.get("name"), "artifactType": obj.get("artifactType") if obj.get("artifactType") is not None else "model-artifact", "modelFormatName": obj.get("modelFormatName"), @@ -182,5 +180,7 @@ def from_dict(cls, obj: dict[str, Any] | None) -> Self | None: "modelSourceGroup": obj.get("modelSourceGroup"), "modelSourceId": obj.get("modelSourceId"), "modelSourceName": obj.get("modelSourceName"), + "uri": obj.get("uri"), + "state": obj.get("state"), } ) diff --git a/clients/python/src/mr_openapi/models/model_artifact_update.py b/clients/python/src/mr_openapi/models/model_artifact_update.py index da6ce71d15..ad68b4213e 100644 --- a/clients/python/src/mr_openapi/models/model_artifact_update.py +++ b/clients/python/src/mr_openapi/models/model_artifact_update.py @@ -36,11 +36,6 @@ class ModelArtifactUpdate(BaseModel): description="The external id that come from the clients’ system. This field is optional. If set, it must be unique among all resources within a database instance.", alias="externalId", ) - uri: StrictStr | None = Field( - default=None, - description="The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact.", - ) - state: ArtifactState | None = None artifact_type: StrictStr | None = Field(default="model-artifact", alias="artifactType") model_format_name: StrictStr | None = Field( default=None, description="Name of the model format.", alias="modelFormatName" @@ -80,12 +75,15 @@ class ModelArtifactUpdate(BaseModel): description="A human-readable name for the source model. E.g. `my-project/1`, `ibm-granite/granite-3.1-8b-base:2.1.2`.", alias="modelSourceName", ) + uri: StrictStr | None = Field( + default=None, + description="The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact.", + ) + state: ArtifactState | None = None __properties: ClassVar[list[str]] = [ "customProperties", "description", "externalId", - "uri", - "state", "artifactType", "modelFormatName", "storageKey", @@ -97,6 +95,8 @@ class ModelArtifactUpdate(BaseModel): "modelSourceGroup", "modelSourceId", "modelSourceName", + "uri", + "state", ] model_config = ConfigDict( @@ -163,8 +163,6 @@ def from_dict(cls, obj: dict[str, Any] | None) -> Self | None: ), "description": obj.get("description"), "externalId": obj.get("externalId"), - "uri": obj.get("uri"), - "state": obj.get("state"), "artifactType": obj.get("artifactType") if obj.get("artifactType") is not None else "model-artifact", "modelFormatName": obj.get("modelFormatName"), "storageKey": obj.get("storageKey"), @@ -176,5 +174,7 @@ def from_dict(cls, obj: dict[str, Any] | None) -> Self | None: "modelSourceGroup": obj.get("modelSourceGroup"), "modelSourceId": obj.get("modelSourceId"), "modelSourceName": obj.get("modelSourceName"), + "uri": obj.get("uri"), + "state": obj.get("state"), } ) diff --git a/clients/python/src/mr_openapi/models/serve_model.py b/clients/python/src/mr_openapi/models/serve_model.py index 0c4473942a..4b95ecef5a 100644 --- a/clients/python/src/mr_openapi/models/serve_model.py +++ b/clients/python/src/mr_openapi/models/serve_model.py @@ -25,7 +25,6 @@ class ServeModel(BaseModel): """An ML model serving action.""" # noqa: E501 - last_known_state: ExecutionState | None = Field(default=None, alias="lastKnownState") custom_properties: dict[str, MetadataValue] | None = Field( default=None, description="User provided custom properties which are not defined by its type.", @@ -52,11 +51,11 @@ class ServeModel(BaseModel): description="Output only. Last update time of the resource since epoch in millisecond since epoch.", alias="lastUpdateTimeSinceEpoch", ) + last_known_state: ExecutionState | None = Field(default=None, alias="lastKnownState") model_version_id: StrictStr = Field( description="ID of the `ModelVersion` that was served in `InferenceService`.", alias="modelVersionId" ) __properties: ClassVar[list[str]] = [ - "lastKnownState", "customProperties", "description", "externalId", @@ -64,6 +63,7 @@ class ServeModel(BaseModel): "id", "createTimeSinceEpoch", "lastUpdateTimeSinceEpoch", + "lastKnownState", "modelVersionId", ] @@ -129,7 +129,6 @@ def from_dict(cls, obj: dict[str, Any] | None) -> Self | None: return cls.model_validate( { - "lastKnownState": obj.get("lastKnownState"), "customProperties": ( {_k: MetadataValue.from_dict(_v) for _k, _v in obj["customProperties"].items()} if obj.get("customProperties") is not None @@ -141,6 +140,7 @@ def from_dict(cls, obj: dict[str, Any] | None) -> Self | None: "id": obj.get("id"), "createTimeSinceEpoch": obj.get("createTimeSinceEpoch"), "lastUpdateTimeSinceEpoch": obj.get("lastUpdateTimeSinceEpoch"), + "lastKnownState": obj.get("lastKnownState"), "modelVersionId": obj.get("modelVersionId"), } ) diff --git a/clients/python/src/mr_openapi/models/serve_model_create.py b/clients/python/src/mr_openapi/models/serve_model_create.py index 005e601b36..95893d3be9 100644 --- a/clients/python/src/mr_openapi/models/serve_model_create.py +++ b/clients/python/src/mr_openapi/models/serve_model_create.py @@ -25,7 +25,6 @@ class ServeModelCreate(BaseModel): """An ML model serving action.""" # noqa: E501 - last_known_state: ExecutionState | None = Field(default=None, alias="lastKnownState") custom_properties: dict[str, MetadataValue] | None = Field( default=None, description="User provided custom properties which are not defined by its type.", @@ -41,15 +40,16 @@ class ServeModelCreate(BaseModel): default=None, description="The client provided name of the artifact. This field is optional. If set, it must be unique among all the artifacts of the same artifact type within a database instance and cannot be changed once set.", ) + last_known_state: ExecutionState | None = Field(default=None, alias="lastKnownState") model_version_id: StrictStr = Field( description="ID of the `ModelVersion` that was served in `InferenceService`.", alias="modelVersionId" ) __properties: ClassVar[list[str]] = [ - "lastKnownState", "customProperties", "description", "externalId", "name", + "lastKnownState", "modelVersionId", ] @@ -110,7 +110,6 @@ def from_dict(cls, obj: dict[str, Any] | None) -> Self | None: return cls.model_validate( { - "lastKnownState": obj.get("lastKnownState"), "customProperties": ( {_k: MetadataValue.from_dict(_v) for _k, _v in obj["customProperties"].items()} if obj.get("customProperties") is not None @@ -119,6 +118,7 @@ def from_dict(cls, obj: dict[str, Any] | None) -> Self | None: "description": obj.get("description"), "externalId": obj.get("externalId"), "name": obj.get("name"), + "lastKnownState": obj.get("lastKnownState"), "modelVersionId": obj.get("modelVersionId"), } ) diff --git a/clients/python/src/mr_openapi/models/serve_model_update.py b/clients/python/src/mr_openapi/models/serve_model_update.py index 59c8cce096..7a12448ac1 100644 --- a/clients/python/src/mr_openapi/models/serve_model_update.py +++ b/clients/python/src/mr_openapi/models/serve_model_update.py @@ -25,7 +25,6 @@ class ServeModelUpdate(BaseModel): """An ML model serving action.""" # noqa: E501 - last_known_state: ExecutionState | None = Field(default=None, alias="lastKnownState") custom_properties: dict[str, MetadataValue] | None = Field( default=None, description="User provided custom properties which are not defined by its type.", @@ -37,7 +36,8 @@ class ServeModelUpdate(BaseModel): description="The external id that come from the clients’ system. This field is optional. If set, it must be unique among all resources within a database instance.", alias="externalId", ) - __properties: ClassVar[list[str]] = ["lastKnownState", "customProperties", "description", "externalId"] + last_known_state: ExecutionState | None = Field(default=None, alias="lastKnownState") + __properties: ClassVar[list[str]] = ["customProperties", "description", "externalId", "lastKnownState"] model_config = ConfigDict( populate_by_name=True, @@ -96,7 +96,6 @@ def from_dict(cls, obj: dict[str, Any] | None) -> Self | None: return cls.model_validate( { - "lastKnownState": obj.get("lastKnownState"), "customProperties": ( {_k: MetadataValue.from_dict(_v) for _k, _v in obj["customProperties"].items()} if obj.get("customProperties") is not None @@ -104,5 +103,6 @@ def from_dict(cls, obj: dict[str, Any] | None) -> Self | None: ), "description": obj.get("description"), "externalId": obj.get("externalId"), + "lastKnownState": obj.get("lastKnownState"), } ) diff --git a/internal/converter/generated/mlmd_openapi_converter.gen.go b/internal/converter/generated/mlmd_openapi_converter.gen.go index b58c32bfb6..11ea754799 100644 --- a/internal/converter/generated/mlmd_openapi_converter.gen.go +++ b/internal/converter/generated/mlmd_openapi_converter.gen.go @@ -26,11 +26,6 @@ func (c *MLMDToOpenAPIConverterImpl) ConvertDocArtifact(source *proto.Artifact) xstring := *(*source).ExternalId openapiDocArtifact.ExternalId = &xstring } - if (*source).Uri != nil { - xstring2 := *(*source).Uri - openapiDocArtifact.Uri = &xstring2 - } - openapiDocArtifact.State = converter.MapMLMDArtifactState((*source).State) openapiDocArtifact.Name = converter.MapNameFromOwned((*source).Name) openapiDocArtifact.Id = converter.Int64ToString((*source).Id) openapiDocArtifact.CreateTimeSinceEpoch = converter.Int64ToString((*source).CreateTimeSinceEpoch) @@ -40,6 +35,11 @@ func (c *MLMDToOpenAPIConverterImpl) ConvertDocArtifact(source *proto.Artifact) return nil, fmt.Errorf("error setting field ArtifactType: %w", err) } openapiDocArtifact.ArtifactType = pString + if (*source).Uri != nil { + xstring2 := *(*source).Uri + openapiDocArtifact.Uri = &xstring2 + } + openapiDocArtifact.State = converter.MapMLMDArtifactState((*source).State) pOpenapiDocArtifact = &openapiDocArtifact } return pOpenapiDocArtifact, nil @@ -85,11 +85,6 @@ func (c *MLMDToOpenAPIConverterImpl) ConvertModelArtifact(source *proto.Artifact xstring := *(*source).ExternalId openapiModelArtifact.ExternalId = &xstring } - if (*source).Uri != nil { - xstring2 := *(*source).Uri - openapiModelArtifact.Uri = &xstring2 - } - openapiModelArtifact.State = converter.MapMLMDArtifactState((*source).State) openapiModelArtifact.Name = converter.MapNameFromOwned((*source).Name) openapiModelArtifact.Id = converter.Int64ToString((*source).Id) openapiModelArtifact.CreateTimeSinceEpoch = converter.Int64ToString((*source).CreateTimeSinceEpoch) @@ -109,6 +104,11 @@ func (c *MLMDToOpenAPIConverterImpl) ConvertModelArtifact(source *proto.Artifact openapiModelArtifact.ModelSourceGroup = converter.MapModelArtifactModelSourceGroup((*source).Properties) openapiModelArtifact.ModelSourceId = converter.MapModelArtifactModelSourceId((*source).Properties) openapiModelArtifact.ModelSourceName = converter.MapModelArtifactModelSourceName((*source).Properties) + if (*source).Uri != nil { + xstring2 := *(*source).Uri + openapiModelArtifact.Uri = &xstring2 + } + openapiModelArtifact.State = converter.MapMLMDArtifactState((*source).State) pOpenapiModelArtifact = &openapiModelArtifact } return pOpenapiModelArtifact, nil @@ -172,7 +172,6 @@ func (c *MLMDToOpenAPIConverterImpl) ConvertServeModel(source *proto.Execution) var pOpenapiServeModel *openapi.ServeModel if source != nil { var openapiServeModel openapi.ServeModel - openapiServeModel.LastKnownState = converter.MapMLMDServeModelLastKnownState((*source).LastKnownState) mapStringOpenapiMetadataValue, err := converter.MapMLMDCustomProperties((*source).CustomProperties) if err != nil { return nil, fmt.Errorf("error setting field CustomProperties: %w", err) @@ -187,6 +186,7 @@ func (c *MLMDToOpenAPIConverterImpl) ConvertServeModel(source *proto.Execution) openapiServeModel.Id = converter.Int64ToString((*source).Id) openapiServeModel.CreateTimeSinceEpoch = converter.Int64ToString((*source).CreateTimeSinceEpoch) openapiServeModel.LastUpdateTimeSinceEpoch = converter.Int64ToString((*source).LastUpdateTimeSinceEpoch) + openapiServeModel.LastKnownState = converter.MapMLMDServeModelLastKnownState((*source).LastKnownState) openapiServeModel.ModelVersionId = converter.MapPropertyModelVersionIdAsValue((*source).Properties) pOpenapiServeModel = &openapiServeModel } diff --git a/internal/converter/generated/openapi_converter.gen.go b/internal/converter/generated/openapi_converter.gen.go index ed94216c8d..86f29b61ba 100644 --- a/internal/converter/generated/openapi_converter.gen.go +++ b/internal/converter/generated/openapi_converter.gen.go @@ -69,9 +69,13 @@ func (c *OpenAPIConverterImpl) ConvertDocArtifactCreate(source *openapi.DocArtif xstring2 := *(*source).ExternalId openapiDocArtifact.ExternalId = &xstring2 } + if (*source).Name != nil { + xstring3 := *(*source).Name + openapiDocArtifact.Name = &xstring3 + } if (*source).Uri != nil { - xstring3 := *(*source).Uri - openapiDocArtifact.Uri = &xstring3 + xstring4 := *(*source).Uri + openapiDocArtifact.Uri = &xstring4 } if (*source).State != nil { openapiArtifactState, err := c.openapiArtifactStateToOpenapiArtifactState(*(*source).State) @@ -80,10 +84,6 @@ func (c *OpenAPIConverterImpl) ConvertDocArtifactCreate(source *openapi.DocArtif } openapiDocArtifact.State = &openapiArtifactState } - if (*source).Name != nil { - xstring4 := *(*source).Name - openapiDocArtifact.Name = &xstring4 - } pOpenapiDocArtifact = &openapiDocArtifact } return pOpenapiDocArtifact, nil @@ -235,60 +235,60 @@ func (c *OpenAPIConverterImpl) ConvertModelArtifactCreate(source *openapi.ModelA xstring2 := *(*source).ExternalId openapiModelArtifact.ExternalId = &xstring2 } - if (*source).Uri != nil { - xstring3 := *(*source).Uri - openapiModelArtifact.Uri = &xstring3 - } - if (*source).State != nil { - openapiArtifactState, err := c.openapiArtifactStateToOpenapiArtifactState(*(*source).State) - if err != nil { - return nil, fmt.Errorf("error setting field State: %w", err) - } - openapiModelArtifact.State = &openapiArtifactState - } if (*source).Name != nil { - xstring4 := *(*source).Name - openapiModelArtifact.Name = &xstring4 + xstring3 := *(*source).Name + openapiModelArtifact.Name = &xstring3 } if (*source).ModelFormatName != nil { - xstring5 := *(*source).ModelFormatName - openapiModelArtifact.ModelFormatName = &xstring5 + xstring4 := *(*source).ModelFormatName + openapiModelArtifact.ModelFormatName = &xstring4 } if (*source).StorageKey != nil { - xstring6 := *(*source).StorageKey - openapiModelArtifact.StorageKey = &xstring6 + xstring5 := *(*source).StorageKey + openapiModelArtifact.StorageKey = &xstring5 } if (*source).StoragePath != nil { - xstring7 := *(*source).StoragePath - openapiModelArtifact.StoragePath = &xstring7 + xstring6 := *(*source).StoragePath + openapiModelArtifact.StoragePath = &xstring6 } if (*source).ModelFormatVersion != nil { - xstring8 := *(*source).ModelFormatVersion - openapiModelArtifact.ModelFormatVersion = &xstring8 + xstring7 := *(*source).ModelFormatVersion + openapiModelArtifact.ModelFormatVersion = &xstring7 } if (*source).ServiceAccountName != nil { - xstring9 := *(*source).ServiceAccountName - openapiModelArtifact.ServiceAccountName = &xstring9 + xstring8 := *(*source).ServiceAccountName + openapiModelArtifact.ServiceAccountName = &xstring8 } if (*source).ModelSourceKind != nil { - xstring10 := *(*source).ModelSourceKind - openapiModelArtifact.ModelSourceKind = &xstring10 + xstring9 := *(*source).ModelSourceKind + openapiModelArtifact.ModelSourceKind = &xstring9 } if (*source).ModelSourceClass != nil { - xstring11 := *(*source).ModelSourceClass - openapiModelArtifact.ModelSourceClass = &xstring11 + xstring10 := *(*source).ModelSourceClass + openapiModelArtifact.ModelSourceClass = &xstring10 } if (*source).ModelSourceGroup != nil { - xstring12 := *(*source).ModelSourceGroup - openapiModelArtifact.ModelSourceGroup = &xstring12 + xstring11 := *(*source).ModelSourceGroup + openapiModelArtifact.ModelSourceGroup = &xstring11 } if (*source).ModelSourceId != nil { - xstring13 := *(*source).ModelSourceId - openapiModelArtifact.ModelSourceId = &xstring13 + xstring12 := *(*source).ModelSourceId + openapiModelArtifact.ModelSourceId = &xstring12 } if (*source).ModelSourceName != nil { - xstring14 := *(*source).ModelSourceName - openapiModelArtifact.ModelSourceName = &xstring14 + xstring13 := *(*source).ModelSourceName + openapiModelArtifact.ModelSourceName = &xstring13 + } + if (*source).Uri != nil { + xstring14 := *(*source).Uri + openapiModelArtifact.Uri = &xstring14 + } + if (*source).State != nil { + openapiArtifactState, err := c.openapiArtifactStateToOpenapiArtifactState(*(*source).State) + if err != nil { + return nil, fmt.Errorf("error setting field State: %w", err) + } + openapiModelArtifact.State = &openapiArtifactState } pOpenapiModelArtifact = &openapiModelArtifact } @@ -316,56 +316,56 @@ func (c *OpenAPIConverterImpl) ConvertModelArtifactUpdate(source *openapi.ModelA xstring2 := *(*source).ExternalId openapiModelArtifact.ExternalId = &xstring2 } - if (*source).Uri != nil { - xstring3 := *(*source).Uri - openapiModelArtifact.Uri = &xstring3 - } - if (*source).State != nil { - openapiArtifactState, err := c.openapiArtifactStateToOpenapiArtifactState(*(*source).State) - if err != nil { - return nil, fmt.Errorf("error setting field State: %w", err) - } - openapiModelArtifact.State = &openapiArtifactState - } if (*source).ModelFormatName != nil { - xstring4 := *(*source).ModelFormatName - openapiModelArtifact.ModelFormatName = &xstring4 + xstring3 := *(*source).ModelFormatName + openapiModelArtifact.ModelFormatName = &xstring3 } if (*source).StorageKey != nil { - xstring5 := *(*source).StorageKey - openapiModelArtifact.StorageKey = &xstring5 + xstring4 := *(*source).StorageKey + openapiModelArtifact.StorageKey = &xstring4 } if (*source).StoragePath != nil { - xstring6 := *(*source).StoragePath - openapiModelArtifact.StoragePath = &xstring6 + xstring5 := *(*source).StoragePath + openapiModelArtifact.StoragePath = &xstring5 } if (*source).ModelFormatVersion != nil { - xstring7 := *(*source).ModelFormatVersion - openapiModelArtifact.ModelFormatVersion = &xstring7 + xstring6 := *(*source).ModelFormatVersion + openapiModelArtifact.ModelFormatVersion = &xstring6 } if (*source).ServiceAccountName != nil { - xstring8 := *(*source).ServiceAccountName - openapiModelArtifact.ServiceAccountName = &xstring8 + xstring7 := *(*source).ServiceAccountName + openapiModelArtifact.ServiceAccountName = &xstring7 } if (*source).ModelSourceKind != nil { - xstring9 := *(*source).ModelSourceKind - openapiModelArtifact.ModelSourceKind = &xstring9 + xstring8 := *(*source).ModelSourceKind + openapiModelArtifact.ModelSourceKind = &xstring8 } if (*source).ModelSourceClass != nil { - xstring10 := *(*source).ModelSourceClass - openapiModelArtifact.ModelSourceClass = &xstring10 + xstring9 := *(*source).ModelSourceClass + openapiModelArtifact.ModelSourceClass = &xstring9 } if (*source).ModelSourceGroup != nil { - xstring11 := *(*source).ModelSourceGroup - openapiModelArtifact.ModelSourceGroup = &xstring11 + xstring10 := *(*source).ModelSourceGroup + openapiModelArtifact.ModelSourceGroup = &xstring10 } if (*source).ModelSourceId != nil { - xstring12 := *(*source).ModelSourceId - openapiModelArtifact.ModelSourceId = &xstring12 + xstring11 := *(*source).ModelSourceId + openapiModelArtifact.ModelSourceId = &xstring11 } if (*source).ModelSourceName != nil { - xstring13 := *(*source).ModelSourceName - openapiModelArtifact.ModelSourceName = &xstring13 + xstring12 := *(*source).ModelSourceName + openapiModelArtifact.ModelSourceName = &xstring12 + } + if (*source).Uri != nil { + xstring13 := *(*source).Uri + openapiModelArtifact.Uri = &xstring13 + } + if (*source).State != nil { + openapiArtifactState, err := c.openapiArtifactStateToOpenapiArtifactState(*(*source).State) + if err != nil { + return nil, fmt.Errorf("error setting field State: %w", err) + } + openapiModelArtifact.State = &openapiArtifactState } pOpenapiModelArtifact = &openapiModelArtifact } @@ -526,13 +526,6 @@ func (c *OpenAPIConverterImpl) ConvertServeModelCreate(source *openapi.ServeMode var pOpenapiServeModel *openapi.ServeModel if source != nil { var openapiServeModel openapi.ServeModel - if (*source).LastKnownState != nil { - openapiExecutionState, err := c.openapiExecutionStateToOpenapiExecutionState(*(*source).LastKnownState) - if err != nil { - return nil, fmt.Errorf("error setting field LastKnownState: %w", err) - } - openapiServeModel.LastKnownState = &openapiExecutionState - } if (*source).CustomProperties != nil { var mapStringOpenapiMetadataValue map[string]openapi.MetadataValue if (*(*source).CustomProperties) != nil { @@ -555,6 +548,13 @@ func (c *OpenAPIConverterImpl) ConvertServeModelCreate(source *openapi.ServeMode xstring3 := *(*source).Name openapiServeModel.Name = &xstring3 } + if (*source).LastKnownState != nil { + openapiExecutionState, err := c.openapiExecutionStateToOpenapiExecutionState(*(*source).LastKnownState) + if err != nil { + return nil, fmt.Errorf("error setting field LastKnownState: %w", err) + } + openapiServeModel.LastKnownState = &openapiExecutionState + } openapiServeModel.ModelVersionId = (*source).ModelVersionId pOpenapiServeModel = &openapiServeModel } @@ -564,13 +564,6 @@ func (c *OpenAPIConverterImpl) ConvertServeModelUpdate(source *openapi.ServeMode var pOpenapiServeModel *openapi.ServeModel if source != nil { var openapiServeModel openapi.ServeModel - if (*source).LastKnownState != nil { - openapiExecutionState, err := c.openapiExecutionStateToOpenapiExecutionState(*(*source).LastKnownState) - if err != nil { - return nil, fmt.Errorf("error setting field LastKnownState: %w", err) - } - openapiServeModel.LastKnownState = &openapiExecutionState - } if (*source).CustomProperties != nil { var mapStringOpenapiMetadataValue map[string]openapi.MetadataValue if (*(*source).CustomProperties) != nil { @@ -589,6 +582,13 @@ func (c *OpenAPIConverterImpl) ConvertServeModelUpdate(source *openapi.ServeMode xstring2 := *(*source).ExternalId openapiServeModel.ExternalId = &xstring2 } + if (*source).LastKnownState != nil { + openapiExecutionState, err := c.openapiExecutionStateToOpenapiExecutionState(*(*source).LastKnownState) + if err != nil { + return nil, fmt.Errorf("error setting field LastKnownState: %w", err) + } + openapiServeModel.LastKnownState = &openapiExecutionState + } pOpenapiServeModel = &openapiServeModel } return pOpenapiServeModel, nil diff --git a/internal/converter/generated/openapi_reconciler.gen.go b/internal/converter/generated/openapi_reconciler.gen.go index 6ef3311e9d..088c71aa42 100644 --- a/internal/converter/generated/openapi_reconciler.gen.go +++ b/internal/converter/generated/openapi_reconciler.gen.go @@ -159,102 +159,102 @@ func (c *OpenAPIReconcilerImpl) UpdateExistingModelArtifact(source converter.Ope } var pString3 *string if source.Update != nil { - pString3 = source.Update.Uri + pString3 = source.Update.ModelFormatName } if pString3 != nil { xstring3 := *pString3 - openapiModelArtifact.Uri = &xstring3 - } - var pOpenapiArtifactState *openapi.ArtifactState - if source.Update != nil { - pOpenapiArtifactState = source.Update.State - } - if pOpenapiArtifactState != nil { - openapiArtifactState, err := c.openapiArtifactStateToOpenapiArtifactState(*pOpenapiArtifactState) - if err != nil { - return openapiModelArtifact, fmt.Errorf("error setting field State: %w", err) - } - openapiModelArtifact.State = &openapiArtifactState + openapiModelArtifact.ModelFormatName = &xstring3 } var pString4 *string if source.Update != nil { - pString4 = source.Update.ModelFormatName + pString4 = source.Update.StorageKey } if pString4 != nil { xstring4 := *pString4 - openapiModelArtifact.ModelFormatName = &xstring4 + openapiModelArtifact.StorageKey = &xstring4 } var pString5 *string if source.Update != nil { - pString5 = source.Update.StorageKey + pString5 = source.Update.StoragePath } if pString5 != nil { xstring5 := *pString5 - openapiModelArtifact.StorageKey = &xstring5 + openapiModelArtifact.StoragePath = &xstring5 } var pString6 *string if source.Update != nil { - pString6 = source.Update.StoragePath + pString6 = source.Update.ModelFormatVersion } if pString6 != nil { xstring6 := *pString6 - openapiModelArtifact.StoragePath = &xstring6 + openapiModelArtifact.ModelFormatVersion = &xstring6 } var pString7 *string if source.Update != nil { - pString7 = source.Update.ModelFormatVersion + pString7 = source.Update.ServiceAccountName } if pString7 != nil { xstring7 := *pString7 - openapiModelArtifact.ModelFormatVersion = &xstring7 + openapiModelArtifact.ServiceAccountName = &xstring7 } var pString8 *string if source.Update != nil { - pString8 = source.Update.ServiceAccountName + pString8 = source.Update.ModelSourceKind } if pString8 != nil { xstring8 := *pString8 - openapiModelArtifact.ServiceAccountName = &xstring8 + openapiModelArtifact.ModelSourceKind = &xstring8 } var pString9 *string if source.Update != nil { - pString9 = source.Update.ModelSourceKind + pString9 = source.Update.ModelSourceClass } if pString9 != nil { xstring9 := *pString9 - openapiModelArtifact.ModelSourceKind = &xstring9 + openapiModelArtifact.ModelSourceClass = &xstring9 } var pString10 *string if source.Update != nil { - pString10 = source.Update.ModelSourceClass + pString10 = source.Update.ModelSourceGroup } if pString10 != nil { xstring10 := *pString10 - openapiModelArtifact.ModelSourceClass = &xstring10 + openapiModelArtifact.ModelSourceGroup = &xstring10 } var pString11 *string if source.Update != nil { - pString11 = source.Update.ModelSourceGroup + pString11 = source.Update.ModelSourceId } if pString11 != nil { xstring11 := *pString11 - openapiModelArtifact.ModelSourceGroup = &xstring11 + openapiModelArtifact.ModelSourceId = &xstring11 } var pString12 *string if source.Update != nil { - pString12 = source.Update.ModelSourceId + pString12 = source.Update.ModelSourceName } if pString12 != nil { xstring12 := *pString12 - openapiModelArtifact.ModelSourceId = &xstring12 + openapiModelArtifact.ModelSourceName = &xstring12 } var pString13 *string if source.Update != nil { - pString13 = source.Update.ModelSourceName + pString13 = source.Update.Uri } if pString13 != nil { xstring13 := *pString13 - openapiModelArtifact.ModelSourceName = &xstring13 + openapiModelArtifact.Uri = &xstring13 + } + var pOpenapiArtifactState *openapi.ArtifactState + if source.Update != nil { + pOpenapiArtifactState = source.Update.State + } + if pOpenapiArtifactState != nil { + openapiArtifactState, err := c.openapiArtifactStateToOpenapiArtifactState(*pOpenapiArtifactState) + if err != nil { + return openapiModelArtifact, fmt.Errorf("error setting field State: %w", err) + } + openapiModelArtifact.State = &openapiArtifactState } return openapiModelArtifact, nil } @@ -366,17 +366,6 @@ func (c *OpenAPIReconcilerImpl) UpdateExistingRegisteredModel(source converter.O } func (c *OpenAPIReconcilerImpl) UpdateExistingServeModel(source converter.OpenapiUpdateWrapper[openapi.ServeModel]) (openapi.ServeModel, error) { openapiServeModel := converter.InitWithExisting(source) - var pOpenapiExecutionState *openapi.ExecutionState - if source.Update != nil { - pOpenapiExecutionState = source.Update.LastKnownState - } - if pOpenapiExecutionState != nil { - openapiExecutionState, err := c.openapiExecutionStateToOpenapiExecutionState(*pOpenapiExecutionState) - if err != nil { - return openapiServeModel, fmt.Errorf("error setting field LastKnownState: %w", err) - } - openapiServeModel.LastKnownState = &openapiExecutionState - } var pMapStringOpenapiMetadataValue *map[string]openapi.MetadataValue if source.Update != nil { pMapStringOpenapiMetadataValue = source.Update.CustomProperties @@ -407,6 +396,17 @@ func (c *OpenAPIReconcilerImpl) UpdateExistingServeModel(source converter.Openap xstring2 := *pString2 openapiServeModel.ExternalId = &xstring2 } + var pOpenapiExecutionState *openapi.ExecutionState + if source.Update != nil { + pOpenapiExecutionState = source.Update.LastKnownState + } + if pOpenapiExecutionState != nil { + openapiExecutionState, err := c.openapiExecutionStateToOpenapiExecutionState(*pOpenapiExecutionState) + if err != nil { + return openapiServeModel, fmt.Errorf("error setting field LastKnownState: %w", err) + } + openapiServeModel.LastKnownState = &openapiExecutionState + } return openapiServeModel, nil } func (c *OpenAPIReconcilerImpl) UpdateExistingServingEnvironment(source converter.OpenapiUpdateWrapper[openapi.ServingEnvironment]) (openapi.ServingEnvironment, error) { diff --git a/internal/server/openapi/.openapi-generator/FILES b/internal/server/openapi/.openapi-generator/FILES index 3b916e2313..b7f294ba29 100644 --- a/internal/server/openapi/.openapi-generator/FILES +++ b/internal/server/openapi/.openapi-generator/FILES @@ -9,12 +9,6 @@ model_artifact_create.go model_artifact_list.go model_artifact_state.go model_artifact_update.go -model_base_artifact.go -model_base_artifact_create.go -model_base_artifact_update.go -model_base_execution.go -model_base_execution_create.go -model_base_execution_update.go model_base_resource.go model_base_resource_create.go model_base_resource_list.go diff --git a/internal/server/openapi/type_asserts.go b/internal/server/openapi/type_asserts.go index a3dc15d519..dba8faf3eb 100644 --- a/internal/server/openapi/type_asserts.go +++ b/internal/server/openapi/type_asserts.go @@ -83,66 +83,6 @@ func AssertArtifactUpdateRequired(obj model.ArtifactUpdate) error { return nil } -// AssertBaseArtifactConstraints checks if the values respects the defined constraints -func AssertBaseArtifactConstraints(obj model.BaseArtifact) error { - return nil -} - -// AssertBaseArtifactCreateConstraints checks if the values respects the defined constraints -func AssertBaseArtifactCreateConstraints(obj model.BaseArtifactCreate) error { - return nil -} - -// AssertBaseArtifactCreateRequired checks if the required fields are not zero-ed -func AssertBaseArtifactCreateRequired(obj model.BaseArtifactCreate) error { - return nil -} - -// AssertBaseArtifactRequired checks if the required fields are not zero-ed -func AssertBaseArtifactRequired(obj model.BaseArtifact) error { - return nil -} - -// AssertBaseArtifactUpdateConstraints checks if the values respects the defined constraints -func AssertBaseArtifactUpdateConstraints(obj model.BaseArtifactUpdate) error { - return nil -} - -// AssertBaseArtifactUpdateRequired checks if the required fields are not zero-ed -func AssertBaseArtifactUpdateRequired(obj model.BaseArtifactUpdate) error { - return nil -} - -// AssertBaseExecutionConstraints checks if the values respects the defined constraints -func AssertBaseExecutionConstraints(obj model.BaseExecution) error { - return nil -} - -// AssertBaseExecutionCreateConstraints checks if the values respects the defined constraints -func AssertBaseExecutionCreateConstraints(obj model.BaseExecutionCreate) error { - return nil -} - -// AssertBaseExecutionCreateRequired checks if the required fields are not zero-ed -func AssertBaseExecutionCreateRequired(obj model.BaseExecutionCreate) error { - return nil -} - -// AssertBaseExecutionRequired checks if the required fields are not zero-ed -func AssertBaseExecutionRequired(obj model.BaseExecution) error { - return nil -} - -// AssertBaseExecutionUpdateConstraints checks if the values respects the defined constraints -func AssertBaseExecutionUpdateConstraints(obj model.BaseExecutionUpdate) error { - return nil -} - -// AssertBaseExecutionUpdateRequired checks if the required fields are not zero-ed -func AssertBaseExecutionUpdateRequired(obj model.BaseExecutionUpdate) error { - return nil -} - // AssertBaseResourceConstraints checks if the values respects the defined constraints func AssertBaseResourceConstraints(obj model.BaseResource) error { return nil diff --git a/pkg/openapi/.openapi-generator/FILES b/pkg/openapi/.openapi-generator/FILES index 8a56f21b24..2532c997e9 100644 --- a/pkg/openapi/.openapi-generator/FILES +++ b/pkg/openapi/.openapi-generator/FILES @@ -6,12 +6,6 @@ model_artifact_create.go model_artifact_list.go model_artifact_state.go model_artifact_update.go -model_base_artifact.go -model_base_artifact_create.go -model_base_artifact_update.go -model_base_execution.go -model_base_execution_create.go -model_base_execution_update.go model_base_resource.go model_base_resource_create.go model_base_resource_list.go diff --git a/pkg/openapi/model_base_artifact.go b/pkg/openapi/model_base_artifact.go deleted file mode 100644 index c6bd888f12..0000000000 --- a/pkg/openapi/model_base_artifact.go +++ /dev/null @@ -1,424 +0,0 @@ -/* -Model Registry REST API - -REST API for Model Registry to create and manage ML model metadata - -API version: v1alpha3 -*/ - -// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. - -package openapi - -import ( - "encoding/json" -) - -// checks if the BaseArtifact type satisfies the MappedNullable interface at compile time -var _ MappedNullable = &BaseArtifact{} - -// BaseArtifact struct for BaseArtifact -type BaseArtifact struct { - // User provided custom properties which are not defined by its type. - CustomProperties *map[string]MetadataValue `json:"customProperties,omitempty"` - // An optional description about the resource. - Description *string `json:"description,omitempty"` - // The external id that come from the clients’ system. This field is optional. If set, it must be unique among all resources within a database instance. - ExternalId *string `json:"externalId,omitempty"` - // The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact. - Uri *string `json:"uri,omitempty"` - State *ArtifactState `json:"state,omitempty"` - // The client provided name of the artifact. This field is optional. If set, it must be unique among all the artifacts of the same artifact type within a database instance and cannot be changed once set. - Name *string `json:"name,omitempty"` - // The unique server generated id of the resource. - Id *string `json:"id,omitempty"` - // Output only. Create time of the resource in millisecond since epoch. - CreateTimeSinceEpoch *string `json:"createTimeSinceEpoch,omitempty"` - // Output only. Last update time of the resource since epoch in millisecond since epoch. - LastUpdateTimeSinceEpoch *string `json:"lastUpdateTimeSinceEpoch,omitempty"` -} - -// NewBaseArtifact instantiates a new BaseArtifact object -// This constructor will assign default values to properties that have it defined, -// and makes sure properties required by API are set, but the set of arguments -// will change when the set of required properties is changed -func NewBaseArtifact() *BaseArtifact { - this := BaseArtifact{} - var state ArtifactState = ARTIFACTSTATE_UNKNOWN - this.State = &state - return &this -} - -// NewBaseArtifactWithDefaults instantiates a new BaseArtifact object -// This constructor will only assign default values to properties that have it defined, -// but it doesn't guarantee that properties required by API are set -func NewBaseArtifactWithDefaults() *BaseArtifact { - this := BaseArtifact{} - var state ArtifactState = ARTIFACTSTATE_UNKNOWN - this.State = &state - return &this -} - -// GetCustomProperties returns the CustomProperties field value if set, zero value otherwise. -func (o *BaseArtifact) GetCustomProperties() map[string]MetadataValue { - if o == nil || IsNil(o.CustomProperties) { - var ret map[string]MetadataValue - return ret - } - return *o.CustomProperties -} - -// GetCustomPropertiesOk returns a tuple with the CustomProperties field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseArtifact) GetCustomPropertiesOk() (*map[string]MetadataValue, bool) { - if o == nil || IsNil(o.CustomProperties) { - return nil, false - } - return o.CustomProperties, true -} - -// HasCustomProperties returns a boolean if a field has been set. -func (o *BaseArtifact) HasCustomProperties() bool { - if o != nil && !IsNil(o.CustomProperties) { - return true - } - - return false -} - -// SetCustomProperties gets a reference to the given map[string]MetadataValue and assigns it to the CustomProperties field. -func (o *BaseArtifact) SetCustomProperties(v map[string]MetadataValue) { - o.CustomProperties = &v -} - -// GetDescription returns the Description field value if set, zero value otherwise. -func (o *BaseArtifact) GetDescription() string { - if o == nil || IsNil(o.Description) { - var ret string - return ret - } - return *o.Description -} - -// GetDescriptionOk returns a tuple with the Description field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseArtifact) GetDescriptionOk() (*string, bool) { - if o == nil || IsNil(o.Description) { - return nil, false - } - return o.Description, true -} - -// HasDescription returns a boolean if a field has been set. -func (o *BaseArtifact) HasDescription() bool { - if o != nil && !IsNil(o.Description) { - return true - } - - return false -} - -// SetDescription gets a reference to the given string and assigns it to the Description field. -func (o *BaseArtifact) SetDescription(v string) { - o.Description = &v -} - -// GetExternalId returns the ExternalId field value if set, zero value otherwise. -func (o *BaseArtifact) GetExternalId() string { - if o == nil || IsNil(o.ExternalId) { - var ret string - return ret - } - return *o.ExternalId -} - -// GetExternalIdOk returns a tuple with the ExternalId field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseArtifact) GetExternalIdOk() (*string, bool) { - if o == nil || IsNil(o.ExternalId) { - return nil, false - } - return o.ExternalId, true -} - -// HasExternalId returns a boolean if a field has been set. -func (o *BaseArtifact) HasExternalId() bool { - if o != nil && !IsNil(o.ExternalId) { - return true - } - - return false -} - -// SetExternalId gets a reference to the given string and assigns it to the ExternalId field. -func (o *BaseArtifact) SetExternalId(v string) { - o.ExternalId = &v -} - -// GetUri returns the Uri field value if set, zero value otherwise. -func (o *BaseArtifact) GetUri() string { - if o == nil || IsNil(o.Uri) { - var ret string - return ret - } - return *o.Uri -} - -// GetUriOk returns a tuple with the Uri field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseArtifact) GetUriOk() (*string, bool) { - if o == nil || IsNil(o.Uri) { - return nil, false - } - return o.Uri, true -} - -// HasUri returns a boolean if a field has been set. -func (o *BaseArtifact) HasUri() bool { - if o != nil && !IsNil(o.Uri) { - return true - } - - return false -} - -// SetUri gets a reference to the given string and assigns it to the Uri field. -func (o *BaseArtifact) SetUri(v string) { - o.Uri = &v -} - -// GetState returns the State field value if set, zero value otherwise. -func (o *BaseArtifact) GetState() ArtifactState { - if o == nil || IsNil(o.State) { - var ret ArtifactState - return ret - } - return *o.State -} - -// GetStateOk returns a tuple with the State field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseArtifact) GetStateOk() (*ArtifactState, bool) { - if o == nil || IsNil(o.State) { - return nil, false - } - return o.State, true -} - -// HasState returns a boolean if a field has been set. -func (o *BaseArtifact) HasState() bool { - if o != nil && !IsNil(o.State) { - return true - } - - return false -} - -// SetState gets a reference to the given ArtifactState and assigns it to the State field. -func (o *BaseArtifact) SetState(v ArtifactState) { - o.State = &v -} - -// GetName returns the Name field value if set, zero value otherwise. -func (o *BaseArtifact) GetName() string { - if o == nil || IsNil(o.Name) { - var ret string - return ret - } - return *o.Name -} - -// GetNameOk returns a tuple with the Name field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseArtifact) GetNameOk() (*string, bool) { - if o == nil || IsNil(o.Name) { - return nil, false - } - return o.Name, true -} - -// HasName returns a boolean if a field has been set. -func (o *BaseArtifact) HasName() bool { - if o != nil && !IsNil(o.Name) { - return true - } - - return false -} - -// SetName gets a reference to the given string and assigns it to the Name field. -func (o *BaseArtifact) SetName(v string) { - o.Name = &v -} - -// GetId returns the Id field value if set, zero value otherwise. -func (o *BaseArtifact) GetId() string { - if o == nil || IsNil(o.Id) { - var ret string - return ret - } - return *o.Id -} - -// GetIdOk returns a tuple with the Id field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseArtifact) GetIdOk() (*string, bool) { - if o == nil || IsNil(o.Id) { - return nil, false - } - return o.Id, true -} - -// HasId returns a boolean if a field has been set. -func (o *BaseArtifact) HasId() bool { - if o != nil && !IsNil(o.Id) { - return true - } - - return false -} - -// SetId gets a reference to the given string and assigns it to the Id field. -func (o *BaseArtifact) SetId(v string) { - o.Id = &v -} - -// GetCreateTimeSinceEpoch returns the CreateTimeSinceEpoch field value if set, zero value otherwise. -func (o *BaseArtifact) GetCreateTimeSinceEpoch() string { - if o == nil || IsNil(o.CreateTimeSinceEpoch) { - var ret string - return ret - } - return *o.CreateTimeSinceEpoch -} - -// GetCreateTimeSinceEpochOk returns a tuple with the CreateTimeSinceEpoch field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseArtifact) GetCreateTimeSinceEpochOk() (*string, bool) { - if o == nil || IsNil(o.CreateTimeSinceEpoch) { - return nil, false - } - return o.CreateTimeSinceEpoch, true -} - -// HasCreateTimeSinceEpoch returns a boolean if a field has been set. -func (o *BaseArtifact) HasCreateTimeSinceEpoch() bool { - if o != nil && !IsNil(o.CreateTimeSinceEpoch) { - return true - } - - return false -} - -// SetCreateTimeSinceEpoch gets a reference to the given string and assigns it to the CreateTimeSinceEpoch field. -func (o *BaseArtifact) SetCreateTimeSinceEpoch(v string) { - o.CreateTimeSinceEpoch = &v -} - -// GetLastUpdateTimeSinceEpoch returns the LastUpdateTimeSinceEpoch field value if set, zero value otherwise. -func (o *BaseArtifact) GetLastUpdateTimeSinceEpoch() string { - if o == nil || IsNil(o.LastUpdateTimeSinceEpoch) { - var ret string - return ret - } - return *o.LastUpdateTimeSinceEpoch -} - -// GetLastUpdateTimeSinceEpochOk returns a tuple with the LastUpdateTimeSinceEpoch field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseArtifact) GetLastUpdateTimeSinceEpochOk() (*string, bool) { - if o == nil || IsNil(o.LastUpdateTimeSinceEpoch) { - return nil, false - } - return o.LastUpdateTimeSinceEpoch, true -} - -// HasLastUpdateTimeSinceEpoch returns a boolean if a field has been set. -func (o *BaseArtifact) HasLastUpdateTimeSinceEpoch() bool { - if o != nil && !IsNil(o.LastUpdateTimeSinceEpoch) { - return true - } - - return false -} - -// SetLastUpdateTimeSinceEpoch gets a reference to the given string and assigns it to the LastUpdateTimeSinceEpoch field. -func (o *BaseArtifact) SetLastUpdateTimeSinceEpoch(v string) { - o.LastUpdateTimeSinceEpoch = &v -} - -func (o BaseArtifact) MarshalJSON() ([]byte, error) { - toSerialize, err := o.ToMap() - if err != nil { - return []byte{}, err - } - return json.Marshal(toSerialize) -} - -func (o BaseArtifact) ToMap() (map[string]interface{}, error) { - toSerialize := map[string]interface{}{} - if !IsNil(o.CustomProperties) { - toSerialize["customProperties"] = o.CustomProperties - } - if !IsNil(o.Description) { - toSerialize["description"] = o.Description - } - if !IsNil(o.ExternalId) { - toSerialize["externalId"] = o.ExternalId - } - if !IsNil(o.Uri) { - toSerialize["uri"] = o.Uri - } - if !IsNil(o.State) { - toSerialize["state"] = o.State - } - if !IsNil(o.Name) { - toSerialize["name"] = o.Name - } - if !IsNil(o.Id) { - toSerialize["id"] = o.Id - } - if !IsNil(o.CreateTimeSinceEpoch) { - toSerialize["createTimeSinceEpoch"] = o.CreateTimeSinceEpoch - } - if !IsNil(o.LastUpdateTimeSinceEpoch) { - toSerialize["lastUpdateTimeSinceEpoch"] = o.LastUpdateTimeSinceEpoch - } - return toSerialize, nil -} - -type NullableBaseArtifact struct { - value *BaseArtifact - isSet bool -} - -func (v NullableBaseArtifact) Get() *BaseArtifact { - return v.value -} - -func (v *NullableBaseArtifact) Set(val *BaseArtifact) { - v.value = val - v.isSet = true -} - -func (v NullableBaseArtifact) IsSet() bool { - return v.isSet -} - -func (v *NullableBaseArtifact) Unset() { - v.value = nil - v.isSet = false -} - -func NewNullableBaseArtifact(val *BaseArtifact) *NullableBaseArtifact { - return &NullableBaseArtifact{value: val, isSet: true} -} - -func (v NullableBaseArtifact) MarshalJSON() ([]byte, error) { - return json.Marshal(v.value) -} - -func (v *NullableBaseArtifact) UnmarshalJSON(src []byte) error { - v.isSet = true - return json.Unmarshal(src, &v.value) -} diff --git a/pkg/openapi/model_base_artifact_create.go b/pkg/openapi/model_base_artifact_create.go deleted file mode 100644 index 75e99cfacc..0000000000 --- a/pkg/openapi/model_base_artifact_create.go +++ /dev/null @@ -1,313 +0,0 @@ -/* -Model Registry REST API - -REST API for Model Registry to create and manage ML model metadata - -API version: v1alpha3 -*/ - -// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. - -package openapi - -import ( - "encoding/json" -) - -// checks if the BaseArtifactCreate type satisfies the MappedNullable interface at compile time -var _ MappedNullable = &BaseArtifactCreate{} - -// BaseArtifactCreate struct for BaseArtifactCreate -type BaseArtifactCreate struct { - // User provided custom properties which are not defined by its type. - CustomProperties *map[string]MetadataValue `json:"customProperties,omitempty"` - // An optional description about the resource. - Description *string `json:"description,omitempty"` - // The external id that come from the clients’ system. This field is optional. If set, it must be unique among all resources within a database instance. - ExternalId *string `json:"externalId,omitempty"` - // The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact. - Uri *string `json:"uri,omitempty"` - State *ArtifactState `json:"state,omitempty"` - // The client provided name of the artifact. This field is optional. If set, it must be unique among all the artifacts of the same artifact type within a database instance and cannot be changed once set. - Name *string `json:"name,omitempty"` -} - -// NewBaseArtifactCreate instantiates a new BaseArtifactCreate object -// This constructor will assign default values to properties that have it defined, -// and makes sure properties required by API are set, but the set of arguments -// will change when the set of required properties is changed -func NewBaseArtifactCreate() *BaseArtifactCreate { - this := BaseArtifactCreate{} - var state ArtifactState = ARTIFACTSTATE_UNKNOWN - this.State = &state - return &this -} - -// NewBaseArtifactCreateWithDefaults instantiates a new BaseArtifactCreate object -// This constructor will only assign default values to properties that have it defined, -// but it doesn't guarantee that properties required by API are set -func NewBaseArtifactCreateWithDefaults() *BaseArtifactCreate { - this := BaseArtifactCreate{} - var state ArtifactState = ARTIFACTSTATE_UNKNOWN - this.State = &state - return &this -} - -// GetCustomProperties returns the CustomProperties field value if set, zero value otherwise. -func (o *BaseArtifactCreate) GetCustomProperties() map[string]MetadataValue { - if o == nil || IsNil(o.CustomProperties) { - var ret map[string]MetadataValue - return ret - } - return *o.CustomProperties -} - -// GetCustomPropertiesOk returns a tuple with the CustomProperties field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseArtifactCreate) GetCustomPropertiesOk() (*map[string]MetadataValue, bool) { - if o == nil || IsNil(o.CustomProperties) { - return nil, false - } - return o.CustomProperties, true -} - -// HasCustomProperties returns a boolean if a field has been set. -func (o *BaseArtifactCreate) HasCustomProperties() bool { - if o != nil && !IsNil(o.CustomProperties) { - return true - } - - return false -} - -// SetCustomProperties gets a reference to the given map[string]MetadataValue and assigns it to the CustomProperties field. -func (o *BaseArtifactCreate) SetCustomProperties(v map[string]MetadataValue) { - o.CustomProperties = &v -} - -// GetDescription returns the Description field value if set, zero value otherwise. -func (o *BaseArtifactCreate) GetDescription() string { - if o == nil || IsNil(o.Description) { - var ret string - return ret - } - return *o.Description -} - -// GetDescriptionOk returns a tuple with the Description field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseArtifactCreate) GetDescriptionOk() (*string, bool) { - if o == nil || IsNil(o.Description) { - return nil, false - } - return o.Description, true -} - -// HasDescription returns a boolean if a field has been set. -func (o *BaseArtifactCreate) HasDescription() bool { - if o != nil && !IsNil(o.Description) { - return true - } - - return false -} - -// SetDescription gets a reference to the given string and assigns it to the Description field. -func (o *BaseArtifactCreate) SetDescription(v string) { - o.Description = &v -} - -// GetExternalId returns the ExternalId field value if set, zero value otherwise. -func (o *BaseArtifactCreate) GetExternalId() string { - if o == nil || IsNil(o.ExternalId) { - var ret string - return ret - } - return *o.ExternalId -} - -// GetExternalIdOk returns a tuple with the ExternalId field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseArtifactCreate) GetExternalIdOk() (*string, bool) { - if o == nil || IsNil(o.ExternalId) { - return nil, false - } - return o.ExternalId, true -} - -// HasExternalId returns a boolean if a field has been set. -func (o *BaseArtifactCreate) HasExternalId() bool { - if o != nil && !IsNil(o.ExternalId) { - return true - } - - return false -} - -// SetExternalId gets a reference to the given string and assigns it to the ExternalId field. -func (o *BaseArtifactCreate) SetExternalId(v string) { - o.ExternalId = &v -} - -// GetUri returns the Uri field value if set, zero value otherwise. -func (o *BaseArtifactCreate) GetUri() string { - if o == nil || IsNil(o.Uri) { - var ret string - return ret - } - return *o.Uri -} - -// GetUriOk returns a tuple with the Uri field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseArtifactCreate) GetUriOk() (*string, bool) { - if o == nil || IsNil(o.Uri) { - return nil, false - } - return o.Uri, true -} - -// HasUri returns a boolean if a field has been set. -func (o *BaseArtifactCreate) HasUri() bool { - if o != nil && !IsNil(o.Uri) { - return true - } - - return false -} - -// SetUri gets a reference to the given string and assigns it to the Uri field. -func (o *BaseArtifactCreate) SetUri(v string) { - o.Uri = &v -} - -// GetState returns the State field value if set, zero value otherwise. -func (o *BaseArtifactCreate) GetState() ArtifactState { - if o == nil || IsNil(o.State) { - var ret ArtifactState - return ret - } - return *o.State -} - -// GetStateOk returns a tuple with the State field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseArtifactCreate) GetStateOk() (*ArtifactState, bool) { - if o == nil || IsNil(o.State) { - return nil, false - } - return o.State, true -} - -// HasState returns a boolean if a field has been set. -func (o *BaseArtifactCreate) HasState() bool { - if o != nil && !IsNil(o.State) { - return true - } - - return false -} - -// SetState gets a reference to the given ArtifactState and assigns it to the State field. -func (o *BaseArtifactCreate) SetState(v ArtifactState) { - o.State = &v -} - -// GetName returns the Name field value if set, zero value otherwise. -func (o *BaseArtifactCreate) GetName() string { - if o == nil || IsNil(o.Name) { - var ret string - return ret - } - return *o.Name -} - -// GetNameOk returns a tuple with the Name field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseArtifactCreate) GetNameOk() (*string, bool) { - if o == nil || IsNil(o.Name) { - return nil, false - } - return o.Name, true -} - -// HasName returns a boolean if a field has been set. -func (o *BaseArtifactCreate) HasName() bool { - if o != nil && !IsNil(o.Name) { - return true - } - - return false -} - -// SetName gets a reference to the given string and assigns it to the Name field. -func (o *BaseArtifactCreate) SetName(v string) { - o.Name = &v -} - -func (o BaseArtifactCreate) MarshalJSON() ([]byte, error) { - toSerialize, err := o.ToMap() - if err != nil { - return []byte{}, err - } - return json.Marshal(toSerialize) -} - -func (o BaseArtifactCreate) ToMap() (map[string]interface{}, error) { - toSerialize := map[string]interface{}{} - if !IsNil(o.CustomProperties) { - toSerialize["customProperties"] = o.CustomProperties - } - if !IsNil(o.Description) { - toSerialize["description"] = o.Description - } - if !IsNil(o.ExternalId) { - toSerialize["externalId"] = o.ExternalId - } - if !IsNil(o.Uri) { - toSerialize["uri"] = o.Uri - } - if !IsNil(o.State) { - toSerialize["state"] = o.State - } - if !IsNil(o.Name) { - toSerialize["name"] = o.Name - } - return toSerialize, nil -} - -type NullableBaseArtifactCreate struct { - value *BaseArtifactCreate - isSet bool -} - -func (v NullableBaseArtifactCreate) Get() *BaseArtifactCreate { - return v.value -} - -func (v *NullableBaseArtifactCreate) Set(val *BaseArtifactCreate) { - v.value = val - v.isSet = true -} - -func (v NullableBaseArtifactCreate) IsSet() bool { - return v.isSet -} - -func (v *NullableBaseArtifactCreate) Unset() { - v.value = nil - v.isSet = false -} - -func NewNullableBaseArtifactCreate(val *BaseArtifactCreate) *NullableBaseArtifactCreate { - return &NullableBaseArtifactCreate{value: val, isSet: true} -} - -func (v NullableBaseArtifactCreate) MarshalJSON() ([]byte, error) { - return json.Marshal(v.value) -} - -func (v *NullableBaseArtifactCreate) UnmarshalJSON(src []byte) error { - v.isSet = true - return json.Unmarshal(src, &v.value) -} diff --git a/pkg/openapi/model_base_artifact_update.go b/pkg/openapi/model_base_artifact_update.go deleted file mode 100644 index 2042402bc9..0000000000 --- a/pkg/openapi/model_base_artifact_update.go +++ /dev/null @@ -1,276 +0,0 @@ -/* -Model Registry REST API - -REST API for Model Registry to create and manage ML model metadata - -API version: v1alpha3 -*/ - -// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. - -package openapi - -import ( - "encoding/json" -) - -// checks if the BaseArtifactUpdate type satisfies the MappedNullable interface at compile time -var _ MappedNullable = &BaseArtifactUpdate{} - -// BaseArtifactUpdate struct for BaseArtifactUpdate -type BaseArtifactUpdate struct { - // User provided custom properties which are not defined by its type. - CustomProperties *map[string]MetadataValue `json:"customProperties,omitempty"` - // An optional description about the resource. - Description *string `json:"description,omitempty"` - // The external id that come from the clients’ system. This field is optional. If set, it must be unique among all resources within a database instance. - ExternalId *string `json:"externalId,omitempty"` - // The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact. - Uri *string `json:"uri,omitempty"` - State *ArtifactState `json:"state,omitempty"` -} - -// NewBaseArtifactUpdate instantiates a new BaseArtifactUpdate object -// This constructor will assign default values to properties that have it defined, -// and makes sure properties required by API are set, but the set of arguments -// will change when the set of required properties is changed -func NewBaseArtifactUpdate() *BaseArtifactUpdate { - this := BaseArtifactUpdate{} - var state ArtifactState = ARTIFACTSTATE_UNKNOWN - this.State = &state - return &this -} - -// NewBaseArtifactUpdateWithDefaults instantiates a new BaseArtifactUpdate object -// This constructor will only assign default values to properties that have it defined, -// but it doesn't guarantee that properties required by API are set -func NewBaseArtifactUpdateWithDefaults() *BaseArtifactUpdate { - this := BaseArtifactUpdate{} - var state ArtifactState = ARTIFACTSTATE_UNKNOWN - this.State = &state - return &this -} - -// GetCustomProperties returns the CustomProperties field value if set, zero value otherwise. -func (o *BaseArtifactUpdate) GetCustomProperties() map[string]MetadataValue { - if o == nil || IsNil(o.CustomProperties) { - var ret map[string]MetadataValue - return ret - } - return *o.CustomProperties -} - -// GetCustomPropertiesOk returns a tuple with the CustomProperties field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseArtifactUpdate) GetCustomPropertiesOk() (*map[string]MetadataValue, bool) { - if o == nil || IsNil(o.CustomProperties) { - return nil, false - } - return o.CustomProperties, true -} - -// HasCustomProperties returns a boolean if a field has been set. -func (o *BaseArtifactUpdate) HasCustomProperties() bool { - if o != nil && !IsNil(o.CustomProperties) { - return true - } - - return false -} - -// SetCustomProperties gets a reference to the given map[string]MetadataValue and assigns it to the CustomProperties field. -func (o *BaseArtifactUpdate) SetCustomProperties(v map[string]MetadataValue) { - o.CustomProperties = &v -} - -// GetDescription returns the Description field value if set, zero value otherwise. -func (o *BaseArtifactUpdate) GetDescription() string { - if o == nil || IsNil(o.Description) { - var ret string - return ret - } - return *o.Description -} - -// GetDescriptionOk returns a tuple with the Description field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseArtifactUpdate) GetDescriptionOk() (*string, bool) { - if o == nil || IsNil(o.Description) { - return nil, false - } - return o.Description, true -} - -// HasDescription returns a boolean if a field has been set. -func (o *BaseArtifactUpdate) HasDescription() bool { - if o != nil && !IsNil(o.Description) { - return true - } - - return false -} - -// SetDescription gets a reference to the given string and assigns it to the Description field. -func (o *BaseArtifactUpdate) SetDescription(v string) { - o.Description = &v -} - -// GetExternalId returns the ExternalId field value if set, zero value otherwise. -func (o *BaseArtifactUpdate) GetExternalId() string { - if o == nil || IsNil(o.ExternalId) { - var ret string - return ret - } - return *o.ExternalId -} - -// GetExternalIdOk returns a tuple with the ExternalId field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseArtifactUpdate) GetExternalIdOk() (*string, bool) { - if o == nil || IsNil(o.ExternalId) { - return nil, false - } - return o.ExternalId, true -} - -// HasExternalId returns a boolean if a field has been set. -func (o *BaseArtifactUpdate) HasExternalId() bool { - if o != nil && !IsNil(o.ExternalId) { - return true - } - - return false -} - -// SetExternalId gets a reference to the given string and assigns it to the ExternalId field. -func (o *BaseArtifactUpdate) SetExternalId(v string) { - o.ExternalId = &v -} - -// GetUri returns the Uri field value if set, zero value otherwise. -func (o *BaseArtifactUpdate) GetUri() string { - if o == nil || IsNil(o.Uri) { - var ret string - return ret - } - return *o.Uri -} - -// GetUriOk returns a tuple with the Uri field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseArtifactUpdate) GetUriOk() (*string, bool) { - if o == nil || IsNil(o.Uri) { - return nil, false - } - return o.Uri, true -} - -// HasUri returns a boolean if a field has been set. -func (o *BaseArtifactUpdate) HasUri() bool { - if o != nil && !IsNil(o.Uri) { - return true - } - - return false -} - -// SetUri gets a reference to the given string and assigns it to the Uri field. -func (o *BaseArtifactUpdate) SetUri(v string) { - o.Uri = &v -} - -// GetState returns the State field value if set, zero value otherwise. -func (o *BaseArtifactUpdate) GetState() ArtifactState { - if o == nil || IsNil(o.State) { - var ret ArtifactState - return ret - } - return *o.State -} - -// GetStateOk returns a tuple with the State field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseArtifactUpdate) GetStateOk() (*ArtifactState, bool) { - if o == nil || IsNil(o.State) { - return nil, false - } - return o.State, true -} - -// HasState returns a boolean if a field has been set. -func (o *BaseArtifactUpdate) HasState() bool { - if o != nil && !IsNil(o.State) { - return true - } - - return false -} - -// SetState gets a reference to the given ArtifactState and assigns it to the State field. -func (o *BaseArtifactUpdate) SetState(v ArtifactState) { - o.State = &v -} - -func (o BaseArtifactUpdate) MarshalJSON() ([]byte, error) { - toSerialize, err := o.ToMap() - if err != nil { - return []byte{}, err - } - return json.Marshal(toSerialize) -} - -func (o BaseArtifactUpdate) ToMap() (map[string]interface{}, error) { - toSerialize := map[string]interface{}{} - if !IsNil(o.CustomProperties) { - toSerialize["customProperties"] = o.CustomProperties - } - if !IsNil(o.Description) { - toSerialize["description"] = o.Description - } - if !IsNil(o.ExternalId) { - toSerialize["externalId"] = o.ExternalId - } - if !IsNil(o.Uri) { - toSerialize["uri"] = o.Uri - } - if !IsNil(o.State) { - toSerialize["state"] = o.State - } - return toSerialize, nil -} - -type NullableBaseArtifactUpdate struct { - value *BaseArtifactUpdate - isSet bool -} - -func (v NullableBaseArtifactUpdate) Get() *BaseArtifactUpdate { - return v.value -} - -func (v *NullableBaseArtifactUpdate) Set(val *BaseArtifactUpdate) { - v.value = val - v.isSet = true -} - -func (v NullableBaseArtifactUpdate) IsSet() bool { - return v.isSet -} - -func (v *NullableBaseArtifactUpdate) Unset() { - v.value = nil - v.isSet = false -} - -func NewNullableBaseArtifactUpdate(val *BaseArtifactUpdate) *NullableBaseArtifactUpdate { - return &NullableBaseArtifactUpdate{value: val, isSet: true} -} - -func (v NullableBaseArtifactUpdate) MarshalJSON() ([]byte, error) { - return json.Marshal(v.value) -} - -func (v *NullableBaseArtifactUpdate) UnmarshalJSON(src []byte) error { - v.isSet = true - return json.Unmarshal(src, &v.value) -} diff --git a/pkg/openapi/model_base_execution.go b/pkg/openapi/model_base_execution.go deleted file mode 100644 index b491dbb5a7..0000000000 --- a/pkg/openapi/model_base_execution.go +++ /dev/null @@ -1,387 +0,0 @@ -/* -Model Registry REST API - -REST API for Model Registry to create and manage ML model metadata - -API version: v1alpha3 -*/ - -// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. - -package openapi - -import ( - "encoding/json" -) - -// checks if the BaseExecution type satisfies the MappedNullable interface at compile time -var _ MappedNullable = &BaseExecution{} - -// BaseExecution struct for BaseExecution -type BaseExecution struct { - LastKnownState *ExecutionState `json:"lastKnownState,omitempty"` - // User provided custom properties which are not defined by its type. - CustomProperties *map[string]MetadataValue `json:"customProperties,omitempty"` - // An optional description about the resource. - Description *string `json:"description,omitempty"` - // The external id that come from the clients’ system. This field is optional. If set, it must be unique among all resources within a database instance. - ExternalId *string `json:"externalId,omitempty"` - // The client provided name of the artifact. This field is optional. If set, it must be unique among all the artifacts of the same artifact type within a database instance and cannot be changed once set. - Name *string `json:"name,omitempty"` - // The unique server generated id of the resource. - Id *string `json:"id,omitempty"` - // Output only. Create time of the resource in millisecond since epoch. - CreateTimeSinceEpoch *string `json:"createTimeSinceEpoch,omitempty"` - // Output only. Last update time of the resource since epoch in millisecond since epoch. - LastUpdateTimeSinceEpoch *string `json:"lastUpdateTimeSinceEpoch,omitempty"` -} - -// NewBaseExecution instantiates a new BaseExecution object -// This constructor will assign default values to properties that have it defined, -// and makes sure properties required by API are set, but the set of arguments -// will change when the set of required properties is changed -func NewBaseExecution() *BaseExecution { - this := BaseExecution{} - var lastKnownState ExecutionState = EXECUTIONSTATE_UNKNOWN - this.LastKnownState = &lastKnownState - return &this -} - -// NewBaseExecutionWithDefaults instantiates a new BaseExecution object -// This constructor will only assign default values to properties that have it defined, -// but it doesn't guarantee that properties required by API are set -func NewBaseExecutionWithDefaults() *BaseExecution { - this := BaseExecution{} - var lastKnownState ExecutionState = EXECUTIONSTATE_UNKNOWN - this.LastKnownState = &lastKnownState - return &this -} - -// GetLastKnownState returns the LastKnownState field value if set, zero value otherwise. -func (o *BaseExecution) GetLastKnownState() ExecutionState { - if o == nil || IsNil(o.LastKnownState) { - var ret ExecutionState - return ret - } - return *o.LastKnownState -} - -// GetLastKnownStateOk returns a tuple with the LastKnownState field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseExecution) GetLastKnownStateOk() (*ExecutionState, bool) { - if o == nil || IsNil(o.LastKnownState) { - return nil, false - } - return o.LastKnownState, true -} - -// HasLastKnownState returns a boolean if a field has been set. -func (o *BaseExecution) HasLastKnownState() bool { - if o != nil && !IsNil(o.LastKnownState) { - return true - } - - return false -} - -// SetLastKnownState gets a reference to the given ExecutionState and assigns it to the LastKnownState field. -func (o *BaseExecution) SetLastKnownState(v ExecutionState) { - o.LastKnownState = &v -} - -// GetCustomProperties returns the CustomProperties field value if set, zero value otherwise. -func (o *BaseExecution) GetCustomProperties() map[string]MetadataValue { - if o == nil || IsNil(o.CustomProperties) { - var ret map[string]MetadataValue - return ret - } - return *o.CustomProperties -} - -// GetCustomPropertiesOk returns a tuple with the CustomProperties field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseExecution) GetCustomPropertiesOk() (*map[string]MetadataValue, bool) { - if o == nil || IsNil(o.CustomProperties) { - return nil, false - } - return o.CustomProperties, true -} - -// HasCustomProperties returns a boolean if a field has been set. -func (o *BaseExecution) HasCustomProperties() bool { - if o != nil && !IsNil(o.CustomProperties) { - return true - } - - return false -} - -// SetCustomProperties gets a reference to the given map[string]MetadataValue and assigns it to the CustomProperties field. -func (o *BaseExecution) SetCustomProperties(v map[string]MetadataValue) { - o.CustomProperties = &v -} - -// GetDescription returns the Description field value if set, zero value otherwise. -func (o *BaseExecution) GetDescription() string { - if o == nil || IsNil(o.Description) { - var ret string - return ret - } - return *o.Description -} - -// GetDescriptionOk returns a tuple with the Description field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseExecution) GetDescriptionOk() (*string, bool) { - if o == nil || IsNil(o.Description) { - return nil, false - } - return o.Description, true -} - -// HasDescription returns a boolean if a field has been set. -func (o *BaseExecution) HasDescription() bool { - if o != nil && !IsNil(o.Description) { - return true - } - - return false -} - -// SetDescription gets a reference to the given string and assigns it to the Description field. -func (o *BaseExecution) SetDescription(v string) { - o.Description = &v -} - -// GetExternalId returns the ExternalId field value if set, zero value otherwise. -func (o *BaseExecution) GetExternalId() string { - if o == nil || IsNil(o.ExternalId) { - var ret string - return ret - } - return *o.ExternalId -} - -// GetExternalIdOk returns a tuple with the ExternalId field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseExecution) GetExternalIdOk() (*string, bool) { - if o == nil || IsNil(o.ExternalId) { - return nil, false - } - return o.ExternalId, true -} - -// HasExternalId returns a boolean if a field has been set. -func (o *BaseExecution) HasExternalId() bool { - if o != nil && !IsNil(o.ExternalId) { - return true - } - - return false -} - -// SetExternalId gets a reference to the given string and assigns it to the ExternalId field. -func (o *BaseExecution) SetExternalId(v string) { - o.ExternalId = &v -} - -// GetName returns the Name field value if set, zero value otherwise. -func (o *BaseExecution) GetName() string { - if o == nil || IsNil(o.Name) { - var ret string - return ret - } - return *o.Name -} - -// GetNameOk returns a tuple with the Name field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseExecution) GetNameOk() (*string, bool) { - if o == nil || IsNil(o.Name) { - return nil, false - } - return o.Name, true -} - -// HasName returns a boolean if a field has been set. -func (o *BaseExecution) HasName() bool { - if o != nil && !IsNil(o.Name) { - return true - } - - return false -} - -// SetName gets a reference to the given string and assigns it to the Name field. -func (o *BaseExecution) SetName(v string) { - o.Name = &v -} - -// GetId returns the Id field value if set, zero value otherwise. -func (o *BaseExecution) GetId() string { - if o == nil || IsNil(o.Id) { - var ret string - return ret - } - return *o.Id -} - -// GetIdOk returns a tuple with the Id field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseExecution) GetIdOk() (*string, bool) { - if o == nil || IsNil(o.Id) { - return nil, false - } - return o.Id, true -} - -// HasId returns a boolean if a field has been set. -func (o *BaseExecution) HasId() bool { - if o != nil && !IsNil(o.Id) { - return true - } - - return false -} - -// SetId gets a reference to the given string and assigns it to the Id field. -func (o *BaseExecution) SetId(v string) { - o.Id = &v -} - -// GetCreateTimeSinceEpoch returns the CreateTimeSinceEpoch field value if set, zero value otherwise. -func (o *BaseExecution) GetCreateTimeSinceEpoch() string { - if o == nil || IsNil(o.CreateTimeSinceEpoch) { - var ret string - return ret - } - return *o.CreateTimeSinceEpoch -} - -// GetCreateTimeSinceEpochOk returns a tuple with the CreateTimeSinceEpoch field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseExecution) GetCreateTimeSinceEpochOk() (*string, bool) { - if o == nil || IsNil(o.CreateTimeSinceEpoch) { - return nil, false - } - return o.CreateTimeSinceEpoch, true -} - -// HasCreateTimeSinceEpoch returns a boolean if a field has been set. -func (o *BaseExecution) HasCreateTimeSinceEpoch() bool { - if o != nil && !IsNil(o.CreateTimeSinceEpoch) { - return true - } - - return false -} - -// SetCreateTimeSinceEpoch gets a reference to the given string and assigns it to the CreateTimeSinceEpoch field. -func (o *BaseExecution) SetCreateTimeSinceEpoch(v string) { - o.CreateTimeSinceEpoch = &v -} - -// GetLastUpdateTimeSinceEpoch returns the LastUpdateTimeSinceEpoch field value if set, zero value otherwise. -func (o *BaseExecution) GetLastUpdateTimeSinceEpoch() string { - if o == nil || IsNil(o.LastUpdateTimeSinceEpoch) { - var ret string - return ret - } - return *o.LastUpdateTimeSinceEpoch -} - -// GetLastUpdateTimeSinceEpochOk returns a tuple with the LastUpdateTimeSinceEpoch field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseExecution) GetLastUpdateTimeSinceEpochOk() (*string, bool) { - if o == nil || IsNil(o.LastUpdateTimeSinceEpoch) { - return nil, false - } - return o.LastUpdateTimeSinceEpoch, true -} - -// HasLastUpdateTimeSinceEpoch returns a boolean if a field has been set. -func (o *BaseExecution) HasLastUpdateTimeSinceEpoch() bool { - if o != nil && !IsNil(o.LastUpdateTimeSinceEpoch) { - return true - } - - return false -} - -// SetLastUpdateTimeSinceEpoch gets a reference to the given string and assigns it to the LastUpdateTimeSinceEpoch field. -func (o *BaseExecution) SetLastUpdateTimeSinceEpoch(v string) { - o.LastUpdateTimeSinceEpoch = &v -} - -func (o BaseExecution) MarshalJSON() ([]byte, error) { - toSerialize, err := o.ToMap() - if err != nil { - return []byte{}, err - } - return json.Marshal(toSerialize) -} - -func (o BaseExecution) ToMap() (map[string]interface{}, error) { - toSerialize := map[string]interface{}{} - if !IsNil(o.LastKnownState) { - toSerialize["lastKnownState"] = o.LastKnownState - } - if !IsNil(o.CustomProperties) { - toSerialize["customProperties"] = o.CustomProperties - } - if !IsNil(o.Description) { - toSerialize["description"] = o.Description - } - if !IsNil(o.ExternalId) { - toSerialize["externalId"] = o.ExternalId - } - if !IsNil(o.Name) { - toSerialize["name"] = o.Name - } - if !IsNil(o.Id) { - toSerialize["id"] = o.Id - } - if !IsNil(o.CreateTimeSinceEpoch) { - toSerialize["createTimeSinceEpoch"] = o.CreateTimeSinceEpoch - } - if !IsNil(o.LastUpdateTimeSinceEpoch) { - toSerialize["lastUpdateTimeSinceEpoch"] = o.LastUpdateTimeSinceEpoch - } - return toSerialize, nil -} - -type NullableBaseExecution struct { - value *BaseExecution - isSet bool -} - -func (v NullableBaseExecution) Get() *BaseExecution { - return v.value -} - -func (v *NullableBaseExecution) Set(val *BaseExecution) { - v.value = val - v.isSet = true -} - -func (v NullableBaseExecution) IsSet() bool { - return v.isSet -} - -func (v *NullableBaseExecution) Unset() { - v.value = nil - v.isSet = false -} - -func NewNullableBaseExecution(val *BaseExecution) *NullableBaseExecution { - return &NullableBaseExecution{value: val, isSet: true} -} - -func (v NullableBaseExecution) MarshalJSON() ([]byte, error) { - return json.Marshal(v.value) -} - -func (v *NullableBaseExecution) UnmarshalJSON(src []byte) error { - v.isSet = true - return json.Unmarshal(src, &v.value) -} diff --git a/pkg/openapi/model_base_execution_create.go b/pkg/openapi/model_base_execution_create.go deleted file mode 100644 index e2f8d40593..0000000000 --- a/pkg/openapi/model_base_execution_create.go +++ /dev/null @@ -1,276 +0,0 @@ -/* -Model Registry REST API - -REST API for Model Registry to create and manage ML model metadata - -API version: v1alpha3 -*/ - -// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. - -package openapi - -import ( - "encoding/json" -) - -// checks if the BaseExecutionCreate type satisfies the MappedNullable interface at compile time -var _ MappedNullable = &BaseExecutionCreate{} - -// BaseExecutionCreate struct for BaseExecutionCreate -type BaseExecutionCreate struct { - LastKnownState *ExecutionState `json:"lastKnownState,omitempty"` - // User provided custom properties which are not defined by its type. - CustomProperties *map[string]MetadataValue `json:"customProperties,omitempty"` - // An optional description about the resource. - Description *string `json:"description,omitempty"` - // The external id that come from the clients’ system. This field is optional. If set, it must be unique among all resources within a database instance. - ExternalId *string `json:"externalId,omitempty"` - // The client provided name of the artifact. This field is optional. If set, it must be unique among all the artifacts of the same artifact type within a database instance and cannot be changed once set. - Name *string `json:"name,omitempty"` -} - -// NewBaseExecutionCreate instantiates a new BaseExecutionCreate object -// This constructor will assign default values to properties that have it defined, -// and makes sure properties required by API are set, but the set of arguments -// will change when the set of required properties is changed -func NewBaseExecutionCreate() *BaseExecutionCreate { - this := BaseExecutionCreate{} - var lastKnownState ExecutionState = EXECUTIONSTATE_UNKNOWN - this.LastKnownState = &lastKnownState - return &this -} - -// NewBaseExecutionCreateWithDefaults instantiates a new BaseExecutionCreate object -// This constructor will only assign default values to properties that have it defined, -// but it doesn't guarantee that properties required by API are set -func NewBaseExecutionCreateWithDefaults() *BaseExecutionCreate { - this := BaseExecutionCreate{} - var lastKnownState ExecutionState = EXECUTIONSTATE_UNKNOWN - this.LastKnownState = &lastKnownState - return &this -} - -// GetLastKnownState returns the LastKnownState field value if set, zero value otherwise. -func (o *BaseExecutionCreate) GetLastKnownState() ExecutionState { - if o == nil || IsNil(o.LastKnownState) { - var ret ExecutionState - return ret - } - return *o.LastKnownState -} - -// GetLastKnownStateOk returns a tuple with the LastKnownState field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseExecutionCreate) GetLastKnownStateOk() (*ExecutionState, bool) { - if o == nil || IsNil(o.LastKnownState) { - return nil, false - } - return o.LastKnownState, true -} - -// HasLastKnownState returns a boolean if a field has been set. -func (o *BaseExecutionCreate) HasLastKnownState() bool { - if o != nil && !IsNil(o.LastKnownState) { - return true - } - - return false -} - -// SetLastKnownState gets a reference to the given ExecutionState and assigns it to the LastKnownState field. -func (o *BaseExecutionCreate) SetLastKnownState(v ExecutionState) { - o.LastKnownState = &v -} - -// GetCustomProperties returns the CustomProperties field value if set, zero value otherwise. -func (o *BaseExecutionCreate) GetCustomProperties() map[string]MetadataValue { - if o == nil || IsNil(o.CustomProperties) { - var ret map[string]MetadataValue - return ret - } - return *o.CustomProperties -} - -// GetCustomPropertiesOk returns a tuple with the CustomProperties field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseExecutionCreate) GetCustomPropertiesOk() (*map[string]MetadataValue, bool) { - if o == nil || IsNil(o.CustomProperties) { - return nil, false - } - return o.CustomProperties, true -} - -// HasCustomProperties returns a boolean if a field has been set. -func (o *BaseExecutionCreate) HasCustomProperties() bool { - if o != nil && !IsNil(o.CustomProperties) { - return true - } - - return false -} - -// SetCustomProperties gets a reference to the given map[string]MetadataValue and assigns it to the CustomProperties field. -func (o *BaseExecutionCreate) SetCustomProperties(v map[string]MetadataValue) { - o.CustomProperties = &v -} - -// GetDescription returns the Description field value if set, zero value otherwise. -func (o *BaseExecutionCreate) GetDescription() string { - if o == nil || IsNil(o.Description) { - var ret string - return ret - } - return *o.Description -} - -// GetDescriptionOk returns a tuple with the Description field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseExecutionCreate) GetDescriptionOk() (*string, bool) { - if o == nil || IsNil(o.Description) { - return nil, false - } - return o.Description, true -} - -// HasDescription returns a boolean if a field has been set. -func (o *BaseExecutionCreate) HasDescription() bool { - if o != nil && !IsNil(o.Description) { - return true - } - - return false -} - -// SetDescription gets a reference to the given string and assigns it to the Description field. -func (o *BaseExecutionCreate) SetDescription(v string) { - o.Description = &v -} - -// GetExternalId returns the ExternalId field value if set, zero value otherwise. -func (o *BaseExecutionCreate) GetExternalId() string { - if o == nil || IsNil(o.ExternalId) { - var ret string - return ret - } - return *o.ExternalId -} - -// GetExternalIdOk returns a tuple with the ExternalId field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseExecutionCreate) GetExternalIdOk() (*string, bool) { - if o == nil || IsNil(o.ExternalId) { - return nil, false - } - return o.ExternalId, true -} - -// HasExternalId returns a boolean if a field has been set. -func (o *BaseExecutionCreate) HasExternalId() bool { - if o != nil && !IsNil(o.ExternalId) { - return true - } - - return false -} - -// SetExternalId gets a reference to the given string and assigns it to the ExternalId field. -func (o *BaseExecutionCreate) SetExternalId(v string) { - o.ExternalId = &v -} - -// GetName returns the Name field value if set, zero value otherwise. -func (o *BaseExecutionCreate) GetName() string { - if o == nil || IsNil(o.Name) { - var ret string - return ret - } - return *o.Name -} - -// GetNameOk returns a tuple with the Name field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseExecutionCreate) GetNameOk() (*string, bool) { - if o == nil || IsNil(o.Name) { - return nil, false - } - return o.Name, true -} - -// HasName returns a boolean if a field has been set. -func (o *BaseExecutionCreate) HasName() bool { - if o != nil && !IsNil(o.Name) { - return true - } - - return false -} - -// SetName gets a reference to the given string and assigns it to the Name field. -func (o *BaseExecutionCreate) SetName(v string) { - o.Name = &v -} - -func (o BaseExecutionCreate) MarshalJSON() ([]byte, error) { - toSerialize, err := o.ToMap() - if err != nil { - return []byte{}, err - } - return json.Marshal(toSerialize) -} - -func (o BaseExecutionCreate) ToMap() (map[string]interface{}, error) { - toSerialize := map[string]interface{}{} - if !IsNil(o.LastKnownState) { - toSerialize["lastKnownState"] = o.LastKnownState - } - if !IsNil(o.CustomProperties) { - toSerialize["customProperties"] = o.CustomProperties - } - if !IsNil(o.Description) { - toSerialize["description"] = o.Description - } - if !IsNil(o.ExternalId) { - toSerialize["externalId"] = o.ExternalId - } - if !IsNil(o.Name) { - toSerialize["name"] = o.Name - } - return toSerialize, nil -} - -type NullableBaseExecutionCreate struct { - value *BaseExecutionCreate - isSet bool -} - -func (v NullableBaseExecutionCreate) Get() *BaseExecutionCreate { - return v.value -} - -func (v *NullableBaseExecutionCreate) Set(val *BaseExecutionCreate) { - v.value = val - v.isSet = true -} - -func (v NullableBaseExecutionCreate) IsSet() bool { - return v.isSet -} - -func (v *NullableBaseExecutionCreate) Unset() { - v.value = nil - v.isSet = false -} - -func NewNullableBaseExecutionCreate(val *BaseExecutionCreate) *NullableBaseExecutionCreate { - return &NullableBaseExecutionCreate{value: val, isSet: true} -} - -func (v NullableBaseExecutionCreate) MarshalJSON() ([]byte, error) { - return json.Marshal(v.value) -} - -func (v *NullableBaseExecutionCreate) UnmarshalJSON(src []byte) error { - v.isSet = true - return json.Unmarshal(src, &v.value) -} diff --git a/pkg/openapi/model_base_execution_update.go b/pkg/openapi/model_base_execution_update.go deleted file mode 100644 index aab74c8ed3..0000000000 --- a/pkg/openapi/model_base_execution_update.go +++ /dev/null @@ -1,239 +0,0 @@ -/* -Model Registry REST API - -REST API for Model Registry to create and manage ML model metadata - -API version: v1alpha3 -*/ - -// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. - -package openapi - -import ( - "encoding/json" -) - -// checks if the BaseExecutionUpdate type satisfies the MappedNullable interface at compile time -var _ MappedNullable = &BaseExecutionUpdate{} - -// BaseExecutionUpdate struct for BaseExecutionUpdate -type BaseExecutionUpdate struct { - // User provided custom properties which are not defined by its type. - CustomProperties *map[string]MetadataValue `json:"customProperties,omitempty"` - // An optional description about the resource. - Description *string `json:"description,omitempty"` - // The external id that come from the clients’ system. This field is optional. If set, it must be unique among all resources within a database instance. - ExternalId *string `json:"externalId,omitempty"` - LastKnownState *ExecutionState `json:"lastKnownState,omitempty"` -} - -// NewBaseExecutionUpdate instantiates a new BaseExecutionUpdate object -// This constructor will assign default values to properties that have it defined, -// and makes sure properties required by API are set, but the set of arguments -// will change when the set of required properties is changed -func NewBaseExecutionUpdate() *BaseExecutionUpdate { - this := BaseExecutionUpdate{} - var lastKnownState ExecutionState = EXECUTIONSTATE_UNKNOWN - this.LastKnownState = &lastKnownState - return &this -} - -// NewBaseExecutionUpdateWithDefaults instantiates a new BaseExecutionUpdate object -// This constructor will only assign default values to properties that have it defined, -// but it doesn't guarantee that properties required by API are set -func NewBaseExecutionUpdateWithDefaults() *BaseExecutionUpdate { - this := BaseExecutionUpdate{} - var lastKnownState ExecutionState = EXECUTIONSTATE_UNKNOWN - this.LastKnownState = &lastKnownState - return &this -} - -// GetCustomProperties returns the CustomProperties field value if set, zero value otherwise. -func (o *BaseExecutionUpdate) GetCustomProperties() map[string]MetadataValue { - if o == nil || IsNil(o.CustomProperties) { - var ret map[string]MetadataValue - return ret - } - return *o.CustomProperties -} - -// GetCustomPropertiesOk returns a tuple with the CustomProperties field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseExecutionUpdate) GetCustomPropertiesOk() (*map[string]MetadataValue, bool) { - if o == nil || IsNil(o.CustomProperties) { - return nil, false - } - return o.CustomProperties, true -} - -// HasCustomProperties returns a boolean if a field has been set. -func (o *BaseExecutionUpdate) HasCustomProperties() bool { - if o != nil && !IsNil(o.CustomProperties) { - return true - } - - return false -} - -// SetCustomProperties gets a reference to the given map[string]MetadataValue and assigns it to the CustomProperties field. -func (o *BaseExecutionUpdate) SetCustomProperties(v map[string]MetadataValue) { - o.CustomProperties = &v -} - -// GetDescription returns the Description field value if set, zero value otherwise. -func (o *BaseExecutionUpdate) GetDescription() string { - if o == nil || IsNil(o.Description) { - var ret string - return ret - } - return *o.Description -} - -// GetDescriptionOk returns a tuple with the Description field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseExecutionUpdate) GetDescriptionOk() (*string, bool) { - if o == nil || IsNil(o.Description) { - return nil, false - } - return o.Description, true -} - -// HasDescription returns a boolean if a field has been set. -func (o *BaseExecutionUpdate) HasDescription() bool { - if o != nil && !IsNil(o.Description) { - return true - } - - return false -} - -// SetDescription gets a reference to the given string and assigns it to the Description field. -func (o *BaseExecutionUpdate) SetDescription(v string) { - o.Description = &v -} - -// GetExternalId returns the ExternalId field value if set, zero value otherwise. -func (o *BaseExecutionUpdate) GetExternalId() string { - if o == nil || IsNil(o.ExternalId) { - var ret string - return ret - } - return *o.ExternalId -} - -// GetExternalIdOk returns a tuple with the ExternalId field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseExecutionUpdate) GetExternalIdOk() (*string, bool) { - if o == nil || IsNil(o.ExternalId) { - return nil, false - } - return o.ExternalId, true -} - -// HasExternalId returns a boolean if a field has been set. -func (o *BaseExecutionUpdate) HasExternalId() bool { - if o != nil && !IsNil(o.ExternalId) { - return true - } - - return false -} - -// SetExternalId gets a reference to the given string and assigns it to the ExternalId field. -func (o *BaseExecutionUpdate) SetExternalId(v string) { - o.ExternalId = &v -} - -// GetLastKnownState returns the LastKnownState field value if set, zero value otherwise. -func (o *BaseExecutionUpdate) GetLastKnownState() ExecutionState { - if o == nil || IsNil(o.LastKnownState) { - var ret ExecutionState - return ret - } - return *o.LastKnownState -} - -// GetLastKnownStateOk returns a tuple with the LastKnownState field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *BaseExecutionUpdate) GetLastKnownStateOk() (*ExecutionState, bool) { - if o == nil || IsNil(o.LastKnownState) { - return nil, false - } - return o.LastKnownState, true -} - -// HasLastKnownState returns a boolean if a field has been set. -func (o *BaseExecutionUpdate) HasLastKnownState() bool { - if o != nil && !IsNil(o.LastKnownState) { - return true - } - - return false -} - -// SetLastKnownState gets a reference to the given ExecutionState and assigns it to the LastKnownState field. -func (o *BaseExecutionUpdate) SetLastKnownState(v ExecutionState) { - o.LastKnownState = &v -} - -func (o BaseExecutionUpdate) MarshalJSON() ([]byte, error) { - toSerialize, err := o.ToMap() - if err != nil { - return []byte{}, err - } - return json.Marshal(toSerialize) -} - -func (o BaseExecutionUpdate) ToMap() (map[string]interface{}, error) { - toSerialize := map[string]interface{}{} - if !IsNil(o.CustomProperties) { - toSerialize["customProperties"] = o.CustomProperties - } - if !IsNil(o.Description) { - toSerialize["description"] = o.Description - } - if !IsNil(o.ExternalId) { - toSerialize["externalId"] = o.ExternalId - } - if !IsNil(o.LastKnownState) { - toSerialize["lastKnownState"] = o.LastKnownState - } - return toSerialize, nil -} - -type NullableBaseExecutionUpdate struct { - value *BaseExecutionUpdate - isSet bool -} - -func (v NullableBaseExecutionUpdate) Get() *BaseExecutionUpdate { - return v.value -} - -func (v *NullableBaseExecutionUpdate) Set(val *BaseExecutionUpdate) { - v.value = val - v.isSet = true -} - -func (v NullableBaseExecutionUpdate) IsSet() bool { - return v.isSet -} - -func (v *NullableBaseExecutionUpdate) Unset() { - v.value = nil - v.isSet = false -} - -func NewNullableBaseExecutionUpdate(val *BaseExecutionUpdate) *NullableBaseExecutionUpdate { - return &NullableBaseExecutionUpdate{value: val, isSet: true} -} - -func (v NullableBaseExecutionUpdate) MarshalJSON() ([]byte, error) { - return json.Marshal(v.value) -} - -func (v *NullableBaseExecutionUpdate) UnmarshalJSON(src []byte) error { - v.isSet = true - return json.Unmarshal(src, &v.value) -} diff --git a/pkg/openapi/model_doc_artifact.go b/pkg/openapi/model_doc_artifact.go index cd8b058bde..4ef81fc108 100644 --- a/pkg/openapi/model_doc_artifact.go +++ b/pkg/openapi/model_doc_artifact.go @@ -25,9 +25,6 @@ type DocArtifact struct { Description *string `json:"description,omitempty"` // The external id that come from the clients’ system. This field is optional. If set, it must be unique among all resources within a database instance. ExternalId *string `json:"externalId,omitempty"` - // The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact. - Uri *string `json:"uri,omitempty"` - State *ArtifactState `json:"state,omitempty"` // The client provided name of the artifact. This field is optional. If set, it must be unique among all the artifacts of the same artifact type within a database instance and cannot be changed once set. Name *string `json:"name,omitempty"` // The unique server generated id of the resource. @@ -37,6 +34,9 @@ type DocArtifact struct { // Output only. Last update time of the resource since epoch in millisecond since epoch. LastUpdateTimeSinceEpoch *string `json:"lastUpdateTimeSinceEpoch,omitempty"` ArtifactType *string `json:"artifactType,omitempty"` + // The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact. + Uri *string `json:"uri,omitempty"` + State *ArtifactState `json:"state,omitempty"` } // NewDocArtifact instantiates a new DocArtifact object @@ -45,10 +45,10 @@ type DocArtifact struct { // will change when the set of required properties is changed func NewDocArtifact() *DocArtifact { this := DocArtifact{} - var state ArtifactState = ARTIFACTSTATE_UNKNOWN - this.State = &state var artifactType string = "doc-artifact" this.ArtifactType = &artifactType + var state ArtifactState = ARTIFACTSTATE_UNKNOWN + this.State = &state return &this } @@ -57,10 +57,10 @@ func NewDocArtifact() *DocArtifact { // but it doesn't guarantee that properties required by API are set func NewDocArtifactWithDefaults() *DocArtifact { this := DocArtifact{} - var state ArtifactState = ARTIFACTSTATE_UNKNOWN - this.State = &state var artifactType string = "doc-artifact" this.ArtifactType = &artifactType + var state ArtifactState = ARTIFACTSTATE_UNKNOWN + this.State = &state return &this } @@ -160,70 +160,6 @@ func (o *DocArtifact) SetExternalId(v string) { o.ExternalId = &v } -// GetUri returns the Uri field value if set, zero value otherwise. -func (o *DocArtifact) GetUri() string { - if o == nil || IsNil(o.Uri) { - var ret string - return ret - } - return *o.Uri -} - -// GetUriOk returns a tuple with the Uri field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *DocArtifact) GetUriOk() (*string, bool) { - if o == nil || IsNil(o.Uri) { - return nil, false - } - return o.Uri, true -} - -// HasUri returns a boolean if a field has been set. -func (o *DocArtifact) HasUri() bool { - if o != nil && !IsNil(o.Uri) { - return true - } - - return false -} - -// SetUri gets a reference to the given string and assigns it to the Uri field. -func (o *DocArtifact) SetUri(v string) { - o.Uri = &v -} - -// GetState returns the State field value if set, zero value otherwise. -func (o *DocArtifact) GetState() ArtifactState { - if o == nil || IsNil(o.State) { - var ret ArtifactState - return ret - } - return *o.State -} - -// GetStateOk returns a tuple with the State field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *DocArtifact) GetStateOk() (*ArtifactState, bool) { - if o == nil || IsNil(o.State) { - return nil, false - } - return o.State, true -} - -// HasState returns a boolean if a field has been set. -func (o *DocArtifact) HasState() bool { - if o != nil && !IsNil(o.State) { - return true - } - - return false -} - -// SetState gets a reference to the given ArtifactState and assigns it to the State field. -func (o *DocArtifact) SetState(v ArtifactState) { - o.State = &v -} - // GetName returns the Name field value if set, zero value otherwise. func (o *DocArtifact) GetName() string { if o == nil || IsNil(o.Name) { @@ -384,6 +320,70 @@ func (o *DocArtifact) SetArtifactType(v string) { o.ArtifactType = &v } +// GetUri returns the Uri field value if set, zero value otherwise. +func (o *DocArtifact) GetUri() string { + if o == nil || IsNil(o.Uri) { + var ret string + return ret + } + return *o.Uri +} + +// GetUriOk returns a tuple with the Uri field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DocArtifact) GetUriOk() (*string, bool) { + if o == nil || IsNil(o.Uri) { + return nil, false + } + return o.Uri, true +} + +// HasUri returns a boolean if a field has been set. +func (o *DocArtifact) HasUri() bool { + if o != nil && !IsNil(o.Uri) { + return true + } + + return false +} + +// SetUri gets a reference to the given string and assigns it to the Uri field. +func (o *DocArtifact) SetUri(v string) { + o.Uri = &v +} + +// GetState returns the State field value if set, zero value otherwise. +func (o *DocArtifact) GetState() ArtifactState { + if o == nil || IsNil(o.State) { + var ret ArtifactState + return ret + } + return *o.State +} + +// GetStateOk returns a tuple with the State field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DocArtifact) GetStateOk() (*ArtifactState, bool) { + if o == nil || IsNil(o.State) { + return nil, false + } + return o.State, true +} + +// HasState returns a boolean if a field has been set. +func (o *DocArtifact) HasState() bool { + if o != nil && !IsNil(o.State) { + return true + } + + return false +} + +// SetState gets a reference to the given ArtifactState and assigns it to the State field. +func (o *DocArtifact) SetState(v ArtifactState) { + o.State = &v +} + func (o DocArtifact) MarshalJSON() ([]byte, error) { toSerialize, err := o.ToMap() if err != nil { @@ -403,12 +403,6 @@ func (o DocArtifact) ToMap() (map[string]interface{}, error) { if !IsNil(o.ExternalId) { toSerialize["externalId"] = o.ExternalId } - if !IsNil(o.Uri) { - toSerialize["uri"] = o.Uri - } - if !IsNil(o.State) { - toSerialize["state"] = o.State - } if !IsNil(o.Name) { toSerialize["name"] = o.Name } @@ -424,6 +418,12 @@ func (o DocArtifact) ToMap() (map[string]interface{}, error) { if !IsNil(o.ArtifactType) { toSerialize["artifactType"] = o.ArtifactType } + if !IsNil(o.Uri) { + toSerialize["uri"] = o.Uri + } + if !IsNil(o.State) { + toSerialize["state"] = o.State + } return toSerialize, nil } diff --git a/pkg/openapi/model_doc_artifact_create.go b/pkg/openapi/model_doc_artifact_create.go index b8e4761d49..920b680a3c 100644 --- a/pkg/openapi/model_doc_artifact_create.go +++ b/pkg/openapi/model_doc_artifact_create.go @@ -25,12 +25,12 @@ type DocArtifactCreate struct { Description *string `json:"description,omitempty"` // The external id that come from the clients’ system. This field is optional. If set, it must be unique among all resources within a database instance. ExternalId *string `json:"externalId,omitempty"` - // The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact. - Uri *string `json:"uri,omitempty"` - State *ArtifactState `json:"state,omitempty"` // The client provided name of the artifact. This field is optional. If set, it must be unique among all the artifacts of the same artifact type within a database instance and cannot be changed once set. Name *string `json:"name,omitempty"` ArtifactType *string `json:"artifactType,omitempty"` + // The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact. + Uri *string `json:"uri,omitempty"` + State *ArtifactState `json:"state,omitempty"` } // NewDocArtifactCreate instantiates a new DocArtifactCreate object @@ -39,10 +39,10 @@ type DocArtifactCreate struct { // will change when the set of required properties is changed func NewDocArtifactCreate() *DocArtifactCreate { this := DocArtifactCreate{} - var state ArtifactState = ARTIFACTSTATE_UNKNOWN - this.State = &state var artifactType string = "doc-artifact" this.ArtifactType = &artifactType + var state ArtifactState = ARTIFACTSTATE_UNKNOWN + this.State = &state return &this } @@ -51,10 +51,10 @@ func NewDocArtifactCreate() *DocArtifactCreate { // but it doesn't guarantee that properties required by API are set func NewDocArtifactCreateWithDefaults() *DocArtifactCreate { this := DocArtifactCreate{} - var state ArtifactState = ARTIFACTSTATE_UNKNOWN - this.State = &state var artifactType string = "doc-artifact" this.ArtifactType = &artifactType + var state ArtifactState = ARTIFACTSTATE_UNKNOWN + this.State = &state return &this } @@ -154,132 +154,132 @@ func (o *DocArtifactCreate) SetExternalId(v string) { o.ExternalId = &v } -// GetUri returns the Uri field value if set, zero value otherwise. -func (o *DocArtifactCreate) GetUri() string { - if o == nil || IsNil(o.Uri) { +// GetName returns the Name field value if set, zero value otherwise. +func (o *DocArtifactCreate) GetName() string { + if o == nil || IsNil(o.Name) { var ret string return ret } - return *o.Uri + return *o.Name } -// GetUriOk returns a tuple with the Uri field value if set, nil otherwise +// GetNameOk returns a tuple with the Name field value if set, nil otherwise // and a boolean to check if the value has been set. -func (o *DocArtifactCreate) GetUriOk() (*string, bool) { - if o == nil || IsNil(o.Uri) { +func (o *DocArtifactCreate) GetNameOk() (*string, bool) { + if o == nil || IsNil(o.Name) { return nil, false } - return o.Uri, true + return o.Name, true } -// HasUri returns a boolean if a field has been set. -func (o *DocArtifactCreate) HasUri() bool { - if o != nil && !IsNil(o.Uri) { +// HasName returns a boolean if a field has been set. +func (o *DocArtifactCreate) HasName() bool { + if o != nil && !IsNil(o.Name) { return true } return false } -// SetUri gets a reference to the given string and assigns it to the Uri field. -func (o *DocArtifactCreate) SetUri(v string) { - o.Uri = &v +// SetName gets a reference to the given string and assigns it to the Name field. +func (o *DocArtifactCreate) SetName(v string) { + o.Name = &v } -// GetState returns the State field value if set, zero value otherwise. -func (o *DocArtifactCreate) GetState() ArtifactState { - if o == nil || IsNil(o.State) { - var ret ArtifactState +// GetArtifactType returns the ArtifactType field value if set, zero value otherwise. +func (o *DocArtifactCreate) GetArtifactType() string { + if o == nil || IsNil(o.ArtifactType) { + var ret string return ret } - return *o.State + return *o.ArtifactType } -// GetStateOk returns a tuple with the State field value if set, nil otherwise +// GetArtifactTypeOk returns a tuple with the ArtifactType field value if set, nil otherwise // and a boolean to check if the value has been set. -func (o *DocArtifactCreate) GetStateOk() (*ArtifactState, bool) { - if o == nil || IsNil(o.State) { +func (o *DocArtifactCreate) GetArtifactTypeOk() (*string, bool) { + if o == nil || IsNil(o.ArtifactType) { return nil, false } - return o.State, true + return o.ArtifactType, true } -// HasState returns a boolean if a field has been set. -func (o *DocArtifactCreate) HasState() bool { - if o != nil && !IsNil(o.State) { +// HasArtifactType returns a boolean if a field has been set. +func (o *DocArtifactCreate) HasArtifactType() bool { + if o != nil && !IsNil(o.ArtifactType) { return true } return false } -// SetState gets a reference to the given ArtifactState and assigns it to the State field. -func (o *DocArtifactCreate) SetState(v ArtifactState) { - o.State = &v +// SetArtifactType gets a reference to the given string and assigns it to the ArtifactType field. +func (o *DocArtifactCreate) SetArtifactType(v string) { + o.ArtifactType = &v } -// GetName returns the Name field value if set, zero value otherwise. -func (o *DocArtifactCreate) GetName() string { - if o == nil || IsNil(o.Name) { +// GetUri returns the Uri field value if set, zero value otherwise. +func (o *DocArtifactCreate) GetUri() string { + if o == nil || IsNil(o.Uri) { var ret string return ret } - return *o.Name + return *o.Uri } -// GetNameOk returns a tuple with the Name field value if set, nil otherwise +// GetUriOk returns a tuple with the Uri field value if set, nil otherwise // and a boolean to check if the value has been set. -func (o *DocArtifactCreate) GetNameOk() (*string, bool) { - if o == nil || IsNil(o.Name) { +func (o *DocArtifactCreate) GetUriOk() (*string, bool) { + if o == nil || IsNil(o.Uri) { return nil, false } - return o.Name, true + return o.Uri, true } -// HasName returns a boolean if a field has been set. -func (o *DocArtifactCreate) HasName() bool { - if o != nil && !IsNil(o.Name) { +// HasUri returns a boolean if a field has been set. +func (o *DocArtifactCreate) HasUri() bool { + if o != nil && !IsNil(o.Uri) { return true } return false } -// SetName gets a reference to the given string and assigns it to the Name field. -func (o *DocArtifactCreate) SetName(v string) { - o.Name = &v +// SetUri gets a reference to the given string and assigns it to the Uri field. +func (o *DocArtifactCreate) SetUri(v string) { + o.Uri = &v } -// GetArtifactType returns the ArtifactType field value if set, zero value otherwise. -func (o *DocArtifactCreate) GetArtifactType() string { - if o == nil || IsNil(o.ArtifactType) { - var ret string +// GetState returns the State field value if set, zero value otherwise. +func (o *DocArtifactCreate) GetState() ArtifactState { + if o == nil || IsNil(o.State) { + var ret ArtifactState return ret } - return *o.ArtifactType + return *o.State } -// GetArtifactTypeOk returns a tuple with the ArtifactType field value if set, nil otherwise +// GetStateOk returns a tuple with the State field value if set, nil otherwise // and a boolean to check if the value has been set. -func (o *DocArtifactCreate) GetArtifactTypeOk() (*string, bool) { - if o == nil || IsNil(o.ArtifactType) { +func (o *DocArtifactCreate) GetStateOk() (*ArtifactState, bool) { + if o == nil || IsNil(o.State) { return nil, false } - return o.ArtifactType, true + return o.State, true } -// HasArtifactType returns a boolean if a field has been set. -func (o *DocArtifactCreate) HasArtifactType() bool { - if o != nil && !IsNil(o.ArtifactType) { +// HasState returns a boolean if a field has been set. +func (o *DocArtifactCreate) HasState() bool { + if o != nil && !IsNil(o.State) { return true } return false } -// SetArtifactType gets a reference to the given string and assigns it to the ArtifactType field. -func (o *DocArtifactCreate) SetArtifactType(v string) { - o.ArtifactType = &v +// SetState gets a reference to the given ArtifactState and assigns it to the State field. +func (o *DocArtifactCreate) SetState(v ArtifactState) { + o.State = &v } func (o DocArtifactCreate) MarshalJSON() ([]byte, error) { @@ -301,18 +301,18 @@ func (o DocArtifactCreate) ToMap() (map[string]interface{}, error) { if !IsNil(o.ExternalId) { toSerialize["externalId"] = o.ExternalId } - if !IsNil(o.Uri) { - toSerialize["uri"] = o.Uri - } - if !IsNil(o.State) { - toSerialize["state"] = o.State - } if !IsNil(o.Name) { toSerialize["name"] = o.Name } if !IsNil(o.ArtifactType) { toSerialize["artifactType"] = o.ArtifactType } + if !IsNil(o.Uri) { + toSerialize["uri"] = o.Uri + } + if !IsNil(o.State) { + toSerialize["state"] = o.State + } return toSerialize, nil } diff --git a/pkg/openapi/model_doc_artifact_update.go b/pkg/openapi/model_doc_artifact_update.go index 697e036bc9..2f4197a7a5 100644 --- a/pkg/openapi/model_doc_artifact_update.go +++ b/pkg/openapi/model_doc_artifact_update.go @@ -24,11 +24,11 @@ type DocArtifactUpdate struct { // An optional description about the resource. Description *string `json:"description,omitempty"` // The external id that come from the clients’ system. This field is optional. If set, it must be unique among all resources within a database instance. - ExternalId *string `json:"externalId,omitempty"` + ExternalId *string `json:"externalId,omitempty"` + ArtifactType *string `json:"artifactType,omitempty"` // The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact. - Uri *string `json:"uri,omitempty"` - State *ArtifactState `json:"state,omitempty"` - ArtifactType *string `json:"artifactType,omitempty"` + Uri *string `json:"uri,omitempty"` + State *ArtifactState `json:"state,omitempty"` } // NewDocArtifactUpdate instantiates a new DocArtifactUpdate object @@ -37,10 +37,10 @@ type DocArtifactUpdate struct { // will change when the set of required properties is changed func NewDocArtifactUpdate() *DocArtifactUpdate { this := DocArtifactUpdate{} - var state ArtifactState = ARTIFACTSTATE_UNKNOWN - this.State = &state var artifactType string = "doc-artifact" this.ArtifactType = &artifactType + var state ArtifactState = ARTIFACTSTATE_UNKNOWN + this.State = &state return &this } @@ -49,10 +49,10 @@ func NewDocArtifactUpdate() *DocArtifactUpdate { // but it doesn't guarantee that properties required by API are set func NewDocArtifactUpdateWithDefaults() *DocArtifactUpdate { this := DocArtifactUpdate{} - var state ArtifactState = ARTIFACTSTATE_UNKNOWN - this.State = &state var artifactType string = "doc-artifact" this.ArtifactType = &artifactType + var state ArtifactState = ARTIFACTSTATE_UNKNOWN + this.State = &state return &this } @@ -152,6 +152,38 @@ func (o *DocArtifactUpdate) SetExternalId(v string) { o.ExternalId = &v } +// GetArtifactType returns the ArtifactType field value if set, zero value otherwise. +func (o *DocArtifactUpdate) GetArtifactType() string { + if o == nil || IsNil(o.ArtifactType) { + var ret string + return ret + } + return *o.ArtifactType +} + +// GetArtifactTypeOk returns a tuple with the ArtifactType field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DocArtifactUpdate) GetArtifactTypeOk() (*string, bool) { + if o == nil || IsNil(o.ArtifactType) { + return nil, false + } + return o.ArtifactType, true +} + +// HasArtifactType returns a boolean if a field has been set. +func (o *DocArtifactUpdate) HasArtifactType() bool { + if o != nil && !IsNil(o.ArtifactType) { + return true + } + + return false +} + +// SetArtifactType gets a reference to the given string and assigns it to the ArtifactType field. +func (o *DocArtifactUpdate) SetArtifactType(v string) { + o.ArtifactType = &v +} + // GetUri returns the Uri field value if set, zero value otherwise. func (o *DocArtifactUpdate) GetUri() string { if o == nil || IsNil(o.Uri) { @@ -216,38 +248,6 @@ func (o *DocArtifactUpdate) SetState(v ArtifactState) { o.State = &v } -// GetArtifactType returns the ArtifactType field value if set, zero value otherwise. -func (o *DocArtifactUpdate) GetArtifactType() string { - if o == nil || IsNil(o.ArtifactType) { - var ret string - return ret - } - return *o.ArtifactType -} - -// GetArtifactTypeOk returns a tuple with the ArtifactType field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *DocArtifactUpdate) GetArtifactTypeOk() (*string, bool) { - if o == nil || IsNil(o.ArtifactType) { - return nil, false - } - return o.ArtifactType, true -} - -// HasArtifactType returns a boolean if a field has been set. -func (o *DocArtifactUpdate) HasArtifactType() bool { - if o != nil && !IsNil(o.ArtifactType) { - return true - } - - return false -} - -// SetArtifactType gets a reference to the given string and assigns it to the ArtifactType field. -func (o *DocArtifactUpdate) SetArtifactType(v string) { - o.ArtifactType = &v -} - func (o DocArtifactUpdate) MarshalJSON() ([]byte, error) { toSerialize, err := o.ToMap() if err != nil { @@ -267,15 +267,15 @@ func (o DocArtifactUpdate) ToMap() (map[string]interface{}, error) { if !IsNil(o.ExternalId) { toSerialize["externalId"] = o.ExternalId } + if !IsNil(o.ArtifactType) { + toSerialize["artifactType"] = o.ArtifactType + } if !IsNil(o.Uri) { toSerialize["uri"] = o.Uri } if !IsNil(o.State) { toSerialize["state"] = o.State } - if !IsNil(o.ArtifactType) { - toSerialize["artifactType"] = o.ArtifactType - } return toSerialize, nil } diff --git a/pkg/openapi/model_model_artifact.go b/pkg/openapi/model_model_artifact.go index 614c0c7cb6..7c5b9178f0 100644 --- a/pkg/openapi/model_model_artifact.go +++ b/pkg/openapi/model_model_artifact.go @@ -25,9 +25,6 @@ type ModelArtifact struct { Description *string `json:"description,omitempty"` // The external id that come from the clients’ system. This field is optional. If set, it must be unique among all resources within a database instance. ExternalId *string `json:"externalId,omitempty"` - // The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact. - Uri *string `json:"uri,omitempty"` - State *ArtifactState `json:"state,omitempty"` // The client provided name of the artifact. This field is optional. If set, it must be unique among all the artifacts of the same artifact type within a database instance and cannot be changed once set. Name *string `json:"name,omitempty"` // The unique server generated id of the resource. @@ -57,6 +54,9 @@ type ModelArtifact struct { ModelSourceId *string `json:"modelSourceId,omitempty"` // A human-readable name for the source model. E.g. `my-project/1`, `ibm-granite/granite-3.1-8b-base:2.1.2`. ModelSourceName *string `json:"modelSourceName,omitempty"` + // The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact. + Uri *string `json:"uri,omitempty"` + State *ArtifactState `json:"state,omitempty"` } // NewModelArtifact instantiates a new ModelArtifact object @@ -65,10 +65,10 @@ type ModelArtifact struct { // will change when the set of required properties is changed func NewModelArtifact() *ModelArtifact { this := ModelArtifact{} - var state ArtifactState = ARTIFACTSTATE_UNKNOWN - this.State = &state var artifactType string = "model-artifact" this.ArtifactType = &artifactType + var state ArtifactState = ARTIFACTSTATE_UNKNOWN + this.State = &state return &this } @@ -77,10 +77,10 @@ func NewModelArtifact() *ModelArtifact { // but it doesn't guarantee that properties required by API are set func NewModelArtifactWithDefaults() *ModelArtifact { this := ModelArtifact{} - var state ArtifactState = ARTIFACTSTATE_UNKNOWN - this.State = &state var artifactType string = "model-artifact" this.ArtifactType = &artifactType + var state ArtifactState = ARTIFACTSTATE_UNKNOWN + this.State = &state return &this } @@ -180,70 +180,6 @@ func (o *ModelArtifact) SetExternalId(v string) { o.ExternalId = &v } -// GetUri returns the Uri field value if set, zero value otherwise. -func (o *ModelArtifact) GetUri() string { - if o == nil || IsNil(o.Uri) { - var ret string - return ret - } - return *o.Uri -} - -// GetUriOk returns a tuple with the Uri field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *ModelArtifact) GetUriOk() (*string, bool) { - if o == nil || IsNil(o.Uri) { - return nil, false - } - return o.Uri, true -} - -// HasUri returns a boolean if a field has been set. -func (o *ModelArtifact) HasUri() bool { - if o != nil && !IsNil(o.Uri) { - return true - } - - return false -} - -// SetUri gets a reference to the given string and assigns it to the Uri field. -func (o *ModelArtifact) SetUri(v string) { - o.Uri = &v -} - -// GetState returns the State field value if set, zero value otherwise. -func (o *ModelArtifact) GetState() ArtifactState { - if o == nil || IsNil(o.State) { - var ret ArtifactState - return ret - } - return *o.State -} - -// GetStateOk returns a tuple with the State field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *ModelArtifact) GetStateOk() (*ArtifactState, bool) { - if o == nil || IsNil(o.State) { - return nil, false - } - return o.State, true -} - -// HasState returns a boolean if a field has been set. -func (o *ModelArtifact) HasState() bool { - if o != nil && !IsNil(o.State) { - return true - } - - return false -} - -// SetState gets a reference to the given ArtifactState and assigns it to the State field. -func (o *ModelArtifact) SetState(v ArtifactState) { - o.State = &v -} - // GetName returns the Name field value if set, zero value otherwise. func (o *ModelArtifact) GetName() string { if o == nil || IsNil(o.Name) { @@ -724,6 +660,70 @@ func (o *ModelArtifact) SetModelSourceName(v string) { o.ModelSourceName = &v } +// GetUri returns the Uri field value if set, zero value otherwise. +func (o *ModelArtifact) GetUri() string { + if o == nil || IsNil(o.Uri) { + var ret string + return ret + } + return *o.Uri +} + +// GetUriOk returns a tuple with the Uri field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelArtifact) GetUriOk() (*string, bool) { + if o == nil || IsNil(o.Uri) { + return nil, false + } + return o.Uri, true +} + +// HasUri returns a boolean if a field has been set. +func (o *ModelArtifact) HasUri() bool { + if o != nil && !IsNil(o.Uri) { + return true + } + + return false +} + +// SetUri gets a reference to the given string and assigns it to the Uri field. +func (o *ModelArtifact) SetUri(v string) { + o.Uri = &v +} + +// GetState returns the State field value if set, zero value otherwise. +func (o *ModelArtifact) GetState() ArtifactState { + if o == nil || IsNil(o.State) { + var ret ArtifactState + return ret + } + return *o.State +} + +// GetStateOk returns a tuple with the State field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelArtifact) GetStateOk() (*ArtifactState, bool) { + if o == nil || IsNil(o.State) { + return nil, false + } + return o.State, true +} + +// HasState returns a boolean if a field has been set. +func (o *ModelArtifact) HasState() bool { + if o != nil && !IsNil(o.State) { + return true + } + + return false +} + +// SetState gets a reference to the given ArtifactState and assigns it to the State field. +func (o *ModelArtifact) SetState(v ArtifactState) { + o.State = &v +} + func (o ModelArtifact) MarshalJSON() ([]byte, error) { toSerialize, err := o.ToMap() if err != nil { @@ -743,12 +743,6 @@ func (o ModelArtifact) ToMap() (map[string]interface{}, error) { if !IsNil(o.ExternalId) { toSerialize["externalId"] = o.ExternalId } - if !IsNil(o.Uri) { - toSerialize["uri"] = o.Uri - } - if !IsNil(o.State) { - toSerialize["state"] = o.State - } if !IsNil(o.Name) { toSerialize["name"] = o.Name } @@ -794,6 +788,12 @@ func (o ModelArtifact) ToMap() (map[string]interface{}, error) { if !IsNil(o.ModelSourceName) { toSerialize["modelSourceName"] = o.ModelSourceName } + if !IsNil(o.Uri) { + toSerialize["uri"] = o.Uri + } + if !IsNil(o.State) { + toSerialize["state"] = o.State + } return toSerialize, nil } diff --git a/pkg/openapi/model_model_artifact_create.go b/pkg/openapi/model_model_artifact_create.go index 821786fd3f..28c081fb30 100644 --- a/pkg/openapi/model_model_artifact_create.go +++ b/pkg/openapi/model_model_artifact_create.go @@ -26,9 +26,6 @@ type ModelArtifactCreate struct { Description *string `json:"description,omitempty"` // The external id that come from the clients’ system. This field is optional. If set, it must be unique among all resources within a database instance. ExternalId *string `json:"externalId,omitempty"` - // The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact. - Uri *string `json:"uri,omitempty"` - State *ArtifactState `json:"state,omitempty"` // The client provided name of the artifact. This field is optional. If set, it must be unique among all the artifacts of the same artifact type within a database instance and cannot be changed once set. Name *string `json:"name,omitempty"` // Name of the model format. @@ -51,6 +48,9 @@ type ModelArtifactCreate struct { ModelSourceId *string `json:"modelSourceId,omitempty"` // A human-readable name for the source model. E.g. `my-project/1`, `ibm-granite/granite-3.1-8b-base:2.1.2`. ModelSourceName *string `json:"modelSourceName,omitempty"` + // The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact. + Uri *string `json:"uri,omitempty"` + State *ArtifactState `json:"state,omitempty"` } // NewModelArtifactCreate instantiates a new ModelArtifactCreate object @@ -59,10 +59,10 @@ type ModelArtifactCreate struct { // will change when the set of required properties is changed func NewModelArtifactCreate() *ModelArtifactCreate { this := ModelArtifactCreate{} - var state ArtifactState = ARTIFACTSTATE_UNKNOWN - this.State = &state var artifactType string = "model-artifact" this.ArtifactType = &artifactType + var state ArtifactState = ARTIFACTSTATE_UNKNOWN + this.State = &state return &this } @@ -206,70 +206,6 @@ func (o *ModelArtifactCreate) SetExternalId(v string) { o.ExternalId = &v } -// GetUri returns the Uri field value if set, zero value otherwise. -func (o *ModelArtifactCreate) GetUri() string { - if o == nil || IsNil(o.Uri) { - var ret string - return ret - } - return *o.Uri -} - -// GetUriOk returns a tuple with the Uri field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *ModelArtifactCreate) GetUriOk() (*string, bool) { - if o == nil || IsNil(o.Uri) { - return nil, false - } - return o.Uri, true -} - -// HasUri returns a boolean if a field has been set. -func (o *ModelArtifactCreate) HasUri() bool { - if o != nil && !IsNil(o.Uri) { - return true - } - - return false -} - -// SetUri gets a reference to the given string and assigns it to the Uri field. -func (o *ModelArtifactCreate) SetUri(v string) { - o.Uri = &v -} - -// GetState returns the State field value if set, zero value otherwise. -func (o *ModelArtifactCreate) GetState() ArtifactState { - if o == nil || IsNil(o.State) { - var ret ArtifactState - return ret - } - return *o.State -} - -// GetStateOk returns a tuple with the State field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *ModelArtifactCreate) GetStateOk() (*ArtifactState, bool) { - if o == nil || IsNil(o.State) { - return nil, false - } - return o.State, true -} - -// HasState returns a boolean if a field has been set. -func (o *ModelArtifactCreate) HasState() bool { - if o != nil && !IsNil(o.State) { - return true - } - - return false -} - -// SetState gets a reference to the given ArtifactState and assigns it to the State field. -func (o *ModelArtifactCreate) SetState(v ArtifactState) { - o.State = &v -} - // GetName returns the Name field value if set, zero value otherwise. func (o *ModelArtifactCreate) GetName() string { if o == nil || IsNil(o.Name) { @@ -622,6 +558,70 @@ func (o *ModelArtifactCreate) SetModelSourceName(v string) { o.ModelSourceName = &v } +// GetUri returns the Uri field value if set, zero value otherwise. +func (o *ModelArtifactCreate) GetUri() string { + if o == nil || IsNil(o.Uri) { + var ret string + return ret + } + return *o.Uri +} + +// GetUriOk returns a tuple with the Uri field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelArtifactCreate) GetUriOk() (*string, bool) { + if o == nil || IsNil(o.Uri) { + return nil, false + } + return o.Uri, true +} + +// HasUri returns a boolean if a field has been set. +func (o *ModelArtifactCreate) HasUri() bool { + if o != nil && !IsNil(o.Uri) { + return true + } + + return false +} + +// SetUri gets a reference to the given string and assigns it to the Uri field. +func (o *ModelArtifactCreate) SetUri(v string) { + o.Uri = &v +} + +// GetState returns the State field value if set, zero value otherwise. +func (o *ModelArtifactCreate) GetState() ArtifactState { + if o == nil || IsNil(o.State) { + var ret ArtifactState + return ret + } + return *o.State +} + +// GetStateOk returns a tuple with the State field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelArtifactCreate) GetStateOk() (*ArtifactState, bool) { + if o == nil || IsNil(o.State) { + return nil, false + } + return o.State, true +} + +// HasState returns a boolean if a field has been set. +func (o *ModelArtifactCreate) HasState() bool { + if o != nil && !IsNil(o.State) { + return true + } + + return false +} + +// SetState gets a reference to the given ArtifactState and assigns it to the State field. +func (o *ModelArtifactCreate) SetState(v ArtifactState) { + o.State = &v +} + func (o ModelArtifactCreate) MarshalJSON() ([]byte, error) { toSerialize, err := o.ToMap() if err != nil { @@ -644,12 +644,6 @@ func (o ModelArtifactCreate) ToMap() (map[string]interface{}, error) { if !IsNil(o.ExternalId) { toSerialize["externalId"] = o.ExternalId } - if !IsNil(o.Uri) { - toSerialize["uri"] = o.Uri - } - if !IsNil(o.State) { - toSerialize["state"] = o.State - } if !IsNil(o.Name) { toSerialize["name"] = o.Name } @@ -683,6 +677,12 @@ func (o ModelArtifactCreate) ToMap() (map[string]interface{}, error) { if !IsNil(o.ModelSourceName) { toSerialize["modelSourceName"] = o.ModelSourceName } + if !IsNil(o.Uri) { + toSerialize["uri"] = o.Uri + } + if !IsNil(o.State) { + toSerialize["state"] = o.State + } return toSerialize, nil } diff --git a/pkg/openapi/model_model_artifact_update.go b/pkg/openapi/model_model_artifact_update.go index 1a9e151077..09f92415cc 100644 --- a/pkg/openapi/model_model_artifact_update.go +++ b/pkg/openapi/model_model_artifact_update.go @@ -24,11 +24,8 @@ type ModelArtifactUpdate struct { // An optional description about the resource. Description *string `json:"description,omitempty"` // The external id that come from the clients’ system. This field is optional. If set, it must be unique among all resources within a database instance. - ExternalId *string `json:"externalId,omitempty"` - // The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact. - Uri *string `json:"uri,omitempty"` - State *ArtifactState `json:"state,omitempty"` - ArtifactType *string `json:"artifactType,omitempty"` + ExternalId *string `json:"externalId,omitempty"` + ArtifactType *string `json:"artifactType,omitempty"` // Name of the model format. ModelFormatName *string `json:"modelFormatName,omitempty"` // Storage secret name. @@ -49,6 +46,9 @@ type ModelArtifactUpdate struct { ModelSourceId *string `json:"modelSourceId,omitempty"` // A human-readable name for the source model. E.g. `my-project/1`, `ibm-granite/granite-3.1-8b-base:2.1.2`. ModelSourceName *string `json:"modelSourceName,omitempty"` + // The uniform resource identifier of the physical artifact. May be empty if there is no physical artifact. + Uri *string `json:"uri,omitempty"` + State *ArtifactState `json:"state,omitempty"` } // NewModelArtifactUpdate instantiates a new ModelArtifactUpdate object @@ -57,10 +57,10 @@ type ModelArtifactUpdate struct { // will change when the set of required properties is changed func NewModelArtifactUpdate() *ModelArtifactUpdate { this := ModelArtifactUpdate{} - var state ArtifactState = ARTIFACTSTATE_UNKNOWN - this.State = &state var artifactType string = "model-artifact" this.ArtifactType = &artifactType + var state ArtifactState = ARTIFACTSTATE_UNKNOWN + this.State = &state return &this } @@ -69,10 +69,10 @@ func NewModelArtifactUpdate() *ModelArtifactUpdate { // but it doesn't guarantee that properties required by API are set func NewModelArtifactUpdateWithDefaults() *ModelArtifactUpdate { this := ModelArtifactUpdate{} - var state ArtifactState = ARTIFACTSTATE_UNKNOWN - this.State = &state var artifactType string = "model-artifact" this.ArtifactType = &artifactType + var state ArtifactState = ARTIFACTSTATE_UNKNOWN + this.State = &state return &this } @@ -172,70 +172,6 @@ func (o *ModelArtifactUpdate) SetExternalId(v string) { o.ExternalId = &v } -// GetUri returns the Uri field value if set, zero value otherwise. -func (o *ModelArtifactUpdate) GetUri() string { - if o == nil || IsNil(o.Uri) { - var ret string - return ret - } - return *o.Uri -} - -// GetUriOk returns a tuple with the Uri field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *ModelArtifactUpdate) GetUriOk() (*string, bool) { - if o == nil || IsNil(o.Uri) { - return nil, false - } - return o.Uri, true -} - -// HasUri returns a boolean if a field has been set. -func (o *ModelArtifactUpdate) HasUri() bool { - if o != nil && !IsNil(o.Uri) { - return true - } - - return false -} - -// SetUri gets a reference to the given string and assigns it to the Uri field. -func (o *ModelArtifactUpdate) SetUri(v string) { - o.Uri = &v -} - -// GetState returns the State field value if set, zero value otherwise. -func (o *ModelArtifactUpdate) GetState() ArtifactState { - if o == nil || IsNil(o.State) { - var ret ArtifactState - return ret - } - return *o.State -} - -// GetStateOk returns a tuple with the State field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *ModelArtifactUpdate) GetStateOk() (*ArtifactState, bool) { - if o == nil || IsNil(o.State) { - return nil, false - } - return o.State, true -} - -// HasState returns a boolean if a field has been set. -func (o *ModelArtifactUpdate) HasState() bool { - if o != nil && !IsNil(o.State) { - return true - } - - return false -} - -// SetState gets a reference to the given ArtifactState and assigns it to the State field. -func (o *ModelArtifactUpdate) SetState(v ArtifactState) { - o.State = &v -} - // GetArtifactType returns the ArtifactType field value if set, zero value otherwise. func (o *ModelArtifactUpdate) GetArtifactType() string { if o == nil || IsNil(o.ArtifactType) { @@ -588,6 +524,70 @@ func (o *ModelArtifactUpdate) SetModelSourceName(v string) { o.ModelSourceName = &v } +// GetUri returns the Uri field value if set, zero value otherwise. +func (o *ModelArtifactUpdate) GetUri() string { + if o == nil || IsNil(o.Uri) { + var ret string + return ret + } + return *o.Uri +} + +// GetUriOk returns a tuple with the Uri field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelArtifactUpdate) GetUriOk() (*string, bool) { + if o == nil || IsNil(o.Uri) { + return nil, false + } + return o.Uri, true +} + +// HasUri returns a boolean if a field has been set. +func (o *ModelArtifactUpdate) HasUri() bool { + if o != nil && !IsNil(o.Uri) { + return true + } + + return false +} + +// SetUri gets a reference to the given string and assigns it to the Uri field. +func (o *ModelArtifactUpdate) SetUri(v string) { + o.Uri = &v +} + +// GetState returns the State field value if set, zero value otherwise. +func (o *ModelArtifactUpdate) GetState() ArtifactState { + if o == nil || IsNil(o.State) { + var ret ArtifactState + return ret + } + return *o.State +} + +// GetStateOk returns a tuple with the State field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelArtifactUpdate) GetStateOk() (*ArtifactState, bool) { + if o == nil || IsNil(o.State) { + return nil, false + } + return o.State, true +} + +// HasState returns a boolean if a field has been set. +func (o *ModelArtifactUpdate) HasState() bool { + if o != nil && !IsNil(o.State) { + return true + } + + return false +} + +// SetState gets a reference to the given ArtifactState and assigns it to the State field. +func (o *ModelArtifactUpdate) SetState(v ArtifactState) { + o.State = &v +} + func (o ModelArtifactUpdate) MarshalJSON() ([]byte, error) { toSerialize, err := o.ToMap() if err != nil { @@ -607,12 +607,6 @@ func (o ModelArtifactUpdate) ToMap() (map[string]interface{}, error) { if !IsNil(o.ExternalId) { toSerialize["externalId"] = o.ExternalId } - if !IsNil(o.Uri) { - toSerialize["uri"] = o.Uri - } - if !IsNil(o.State) { - toSerialize["state"] = o.State - } if !IsNil(o.ArtifactType) { toSerialize["artifactType"] = o.ArtifactType } @@ -646,6 +640,12 @@ func (o ModelArtifactUpdate) ToMap() (map[string]interface{}, error) { if !IsNil(o.ModelSourceName) { toSerialize["modelSourceName"] = o.ModelSourceName } + if !IsNil(o.Uri) { + toSerialize["uri"] = o.Uri + } + if !IsNil(o.State) { + toSerialize["state"] = o.State + } return toSerialize, nil } diff --git a/pkg/openapi/model_serve_model.go b/pkg/openapi/model_serve_model.go index 2a5bed2492..30a3b5bed8 100644 --- a/pkg/openapi/model_serve_model.go +++ b/pkg/openapi/model_serve_model.go @@ -19,7 +19,6 @@ var _ MappedNullable = &ServeModel{} // ServeModel An ML model serving action. type ServeModel struct { - LastKnownState *ExecutionState `json:"lastKnownState,omitempty"` // User provided custom properties which are not defined by its type. CustomProperties *map[string]MetadataValue `json:"customProperties,omitempty"` // An optional description about the resource. @@ -33,7 +32,8 @@ type ServeModel struct { // Output only. Create time of the resource in millisecond since epoch. CreateTimeSinceEpoch *string `json:"createTimeSinceEpoch,omitempty"` // Output only. Last update time of the resource since epoch in millisecond since epoch. - LastUpdateTimeSinceEpoch *string `json:"lastUpdateTimeSinceEpoch,omitempty"` + LastUpdateTimeSinceEpoch *string `json:"lastUpdateTimeSinceEpoch,omitempty"` + LastKnownState *ExecutionState `json:"lastKnownState,omitempty"` // ID of the `ModelVersion` that was served in `InferenceService`. ModelVersionId string `json:"modelVersionId"` } @@ -60,38 +60,6 @@ func NewServeModelWithDefaults() *ServeModel { return &this } -// GetLastKnownState returns the LastKnownState field value if set, zero value otherwise. -func (o *ServeModel) GetLastKnownState() ExecutionState { - if o == nil || IsNil(o.LastKnownState) { - var ret ExecutionState - return ret - } - return *o.LastKnownState -} - -// GetLastKnownStateOk returns a tuple with the LastKnownState field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *ServeModel) GetLastKnownStateOk() (*ExecutionState, bool) { - if o == nil || IsNil(o.LastKnownState) { - return nil, false - } - return o.LastKnownState, true -} - -// HasLastKnownState returns a boolean if a field has been set. -func (o *ServeModel) HasLastKnownState() bool { - if o != nil && !IsNil(o.LastKnownState) { - return true - } - - return false -} - -// SetLastKnownState gets a reference to the given ExecutionState and assigns it to the LastKnownState field. -func (o *ServeModel) SetLastKnownState(v ExecutionState) { - o.LastKnownState = &v -} - // GetCustomProperties returns the CustomProperties field value if set, zero value otherwise. func (o *ServeModel) GetCustomProperties() map[string]MetadataValue { if o == nil || IsNil(o.CustomProperties) { @@ -316,6 +284,38 @@ func (o *ServeModel) SetLastUpdateTimeSinceEpoch(v string) { o.LastUpdateTimeSinceEpoch = &v } +// GetLastKnownState returns the LastKnownState field value if set, zero value otherwise. +func (o *ServeModel) GetLastKnownState() ExecutionState { + if o == nil || IsNil(o.LastKnownState) { + var ret ExecutionState + return ret + } + return *o.LastKnownState +} + +// GetLastKnownStateOk returns a tuple with the LastKnownState field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ServeModel) GetLastKnownStateOk() (*ExecutionState, bool) { + if o == nil || IsNil(o.LastKnownState) { + return nil, false + } + return o.LastKnownState, true +} + +// HasLastKnownState returns a boolean if a field has been set. +func (o *ServeModel) HasLastKnownState() bool { + if o != nil && !IsNil(o.LastKnownState) { + return true + } + + return false +} + +// SetLastKnownState gets a reference to the given ExecutionState and assigns it to the LastKnownState field. +func (o *ServeModel) SetLastKnownState(v ExecutionState) { + o.LastKnownState = &v +} + // GetModelVersionId returns the ModelVersionId field value func (o *ServeModel) GetModelVersionId() string { if o == nil { @@ -350,9 +350,6 @@ func (o ServeModel) MarshalJSON() ([]byte, error) { func (o ServeModel) ToMap() (map[string]interface{}, error) { toSerialize := map[string]interface{}{} - if !IsNil(o.LastKnownState) { - toSerialize["lastKnownState"] = o.LastKnownState - } if !IsNil(o.CustomProperties) { toSerialize["customProperties"] = o.CustomProperties } @@ -374,6 +371,9 @@ func (o ServeModel) ToMap() (map[string]interface{}, error) { if !IsNil(o.LastUpdateTimeSinceEpoch) { toSerialize["lastUpdateTimeSinceEpoch"] = o.LastUpdateTimeSinceEpoch } + if !IsNil(o.LastKnownState) { + toSerialize["lastKnownState"] = o.LastKnownState + } toSerialize["modelVersionId"] = o.ModelVersionId return toSerialize, nil } diff --git a/pkg/openapi/model_serve_model_create.go b/pkg/openapi/model_serve_model_create.go index b4ea488096..00ea932e82 100644 --- a/pkg/openapi/model_serve_model_create.go +++ b/pkg/openapi/model_serve_model_create.go @@ -19,7 +19,6 @@ var _ MappedNullable = &ServeModelCreate{} // ServeModelCreate An ML model serving action. type ServeModelCreate struct { - LastKnownState *ExecutionState `json:"lastKnownState,omitempty"` // User provided custom properties which are not defined by its type. CustomProperties *map[string]MetadataValue `json:"customProperties,omitempty"` // An optional description about the resource. @@ -27,7 +26,8 @@ type ServeModelCreate struct { // The external id that come from the clients’ system. This field is optional. If set, it must be unique among all resources within a database instance. ExternalId *string `json:"externalId,omitempty"` // The client provided name of the artifact. This field is optional. If set, it must be unique among all the artifacts of the same artifact type within a database instance and cannot be changed once set. - Name *string `json:"name,omitempty"` + Name *string `json:"name,omitempty"` + LastKnownState *ExecutionState `json:"lastKnownState,omitempty"` // ID of the `ModelVersion` that was served in `InferenceService`. ModelVersionId string `json:"modelVersionId"` } @@ -54,38 +54,6 @@ func NewServeModelCreateWithDefaults() *ServeModelCreate { return &this } -// GetLastKnownState returns the LastKnownState field value if set, zero value otherwise. -func (o *ServeModelCreate) GetLastKnownState() ExecutionState { - if o == nil || IsNil(o.LastKnownState) { - var ret ExecutionState - return ret - } - return *o.LastKnownState -} - -// GetLastKnownStateOk returns a tuple with the LastKnownState field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *ServeModelCreate) GetLastKnownStateOk() (*ExecutionState, bool) { - if o == nil || IsNil(o.LastKnownState) { - return nil, false - } - return o.LastKnownState, true -} - -// HasLastKnownState returns a boolean if a field has been set. -func (o *ServeModelCreate) HasLastKnownState() bool { - if o != nil && !IsNil(o.LastKnownState) { - return true - } - - return false -} - -// SetLastKnownState gets a reference to the given ExecutionState and assigns it to the LastKnownState field. -func (o *ServeModelCreate) SetLastKnownState(v ExecutionState) { - o.LastKnownState = &v -} - // GetCustomProperties returns the CustomProperties field value if set, zero value otherwise. func (o *ServeModelCreate) GetCustomProperties() map[string]MetadataValue { if o == nil || IsNil(o.CustomProperties) { @@ -214,6 +182,38 @@ func (o *ServeModelCreate) SetName(v string) { o.Name = &v } +// GetLastKnownState returns the LastKnownState field value if set, zero value otherwise. +func (o *ServeModelCreate) GetLastKnownState() ExecutionState { + if o == nil || IsNil(o.LastKnownState) { + var ret ExecutionState + return ret + } + return *o.LastKnownState +} + +// GetLastKnownStateOk returns a tuple with the LastKnownState field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ServeModelCreate) GetLastKnownStateOk() (*ExecutionState, bool) { + if o == nil || IsNil(o.LastKnownState) { + return nil, false + } + return o.LastKnownState, true +} + +// HasLastKnownState returns a boolean if a field has been set. +func (o *ServeModelCreate) HasLastKnownState() bool { + if o != nil && !IsNil(o.LastKnownState) { + return true + } + + return false +} + +// SetLastKnownState gets a reference to the given ExecutionState and assigns it to the LastKnownState field. +func (o *ServeModelCreate) SetLastKnownState(v ExecutionState) { + o.LastKnownState = &v +} + // GetModelVersionId returns the ModelVersionId field value func (o *ServeModelCreate) GetModelVersionId() string { if o == nil { @@ -248,9 +248,6 @@ func (o ServeModelCreate) MarshalJSON() ([]byte, error) { func (o ServeModelCreate) ToMap() (map[string]interface{}, error) { toSerialize := map[string]interface{}{} - if !IsNil(o.LastKnownState) { - toSerialize["lastKnownState"] = o.LastKnownState - } if !IsNil(o.CustomProperties) { toSerialize["customProperties"] = o.CustomProperties } @@ -263,6 +260,9 @@ func (o ServeModelCreate) ToMap() (map[string]interface{}, error) { if !IsNil(o.Name) { toSerialize["name"] = o.Name } + if !IsNil(o.LastKnownState) { + toSerialize["lastKnownState"] = o.LastKnownState + } toSerialize["modelVersionId"] = o.ModelVersionId return toSerialize, nil } diff --git a/pkg/openapi/model_serve_model_update.go b/pkg/openapi/model_serve_model_update.go index f7d826aaaa..5e9a8a305e 100644 --- a/pkg/openapi/model_serve_model_update.go +++ b/pkg/openapi/model_serve_model_update.go @@ -19,13 +19,13 @@ var _ MappedNullable = &ServeModelUpdate{} // ServeModelUpdate An ML model serving action. type ServeModelUpdate struct { - LastKnownState *ExecutionState `json:"lastKnownState,omitempty"` // User provided custom properties which are not defined by its type. CustomProperties *map[string]MetadataValue `json:"customProperties,omitempty"` // An optional description about the resource. Description *string `json:"description,omitempty"` // The external id that come from the clients’ system. This field is optional. If set, it must be unique among all resources within a database instance. - ExternalId *string `json:"externalId,omitempty"` + ExternalId *string `json:"externalId,omitempty"` + LastKnownState *ExecutionState `json:"lastKnownState,omitempty"` } // NewServeModelUpdate instantiates a new ServeModelUpdate object @@ -49,38 +49,6 @@ func NewServeModelUpdateWithDefaults() *ServeModelUpdate { return &this } -// GetLastKnownState returns the LastKnownState field value if set, zero value otherwise. -func (o *ServeModelUpdate) GetLastKnownState() ExecutionState { - if o == nil || IsNil(o.LastKnownState) { - var ret ExecutionState - return ret - } - return *o.LastKnownState -} - -// GetLastKnownStateOk returns a tuple with the LastKnownState field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *ServeModelUpdate) GetLastKnownStateOk() (*ExecutionState, bool) { - if o == nil || IsNil(o.LastKnownState) { - return nil, false - } - return o.LastKnownState, true -} - -// HasLastKnownState returns a boolean if a field has been set. -func (o *ServeModelUpdate) HasLastKnownState() bool { - if o != nil && !IsNil(o.LastKnownState) { - return true - } - - return false -} - -// SetLastKnownState gets a reference to the given ExecutionState and assigns it to the LastKnownState field. -func (o *ServeModelUpdate) SetLastKnownState(v ExecutionState) { - o.LastKnownState = &v -} - // GetCustomProperties returns the CustomProperties field value if set, zero value otherwise. func (o *ServeModelUpdate) GetCustomProperties() map[string]MetadataValue { if o == nil || IsNil(o.CustomProperties) { @@ -177,6 +145,38 @@ func (o *ServeModelUpdate) SetExternalId(v string) { o.ExternalId = &v } +// GetLastKnownState returns the LastKnownState field value if set, zero value otherwise. +func (o *ServeModelUpdate) GetLastKnownState() ExecutionState { + if o == nil || IsNil(o.LastKnownState) { + var ret ExecutionState + return ret + } + return *o.LastKnownState +} + +// GetLastKnownStateOk returns a tuple with the LastKnownState field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ServeModelUpdate) GetLastKnownStateOk() (*ExecutionState, bool) { + if o == nil || IsNil(o.LastKnownState) { + return nil, false + } + return o.LastKnownState, true +} + +// HasLastKnownState returns a boolean if a field has been set. +func (o *ServeModelUpdate) HasLastKnownState() bool { + if o != nil && !IsNil(o.LastKnownState) { + return true + } + + return false +} + +// SetLastKnownState gets a reference to the given ExecutionState and assigns it to the LastKnownState field. +func (o *ServeModelUpdate) SetLastKnownState(v ExecutionState) { + o.LastKnownState = &v +} + func (o ServeModelUpdate) MarshalJSON() ([]byte, error) { toSerialize, err := o.ToMap() if err != nil { @@ -187,9 +187,6 @@ func (o ServeModelUpdate) MarshalJSON() ([]byte, error) { func (o ServeModelUpdate) ToMap() (map[string]interface{}, error) { toSerialize := map[string]interface{}{} - if !IsNil(o.LastKnownState) { - toSerialize["lastKnownState"] = o.LastKnownState - } if !IsNil(o.CustomProperties) { toSerialize["customProperties"] = o.CustomProperties } @@ -199,6 +196,9 @@ func (o ServeModelUpdate) ToMap() (map[string]interface{}, error) { if !IsNil(o.ExternalId) { toSerialize["externalId"] = o.ExternalId } + if !IsNil(o.LastKnownState) { + toSerialize["lastKnownState"] = o.LastKnownState + } return toSerialize, nil } From 8d48d2cbbf0b3f74cd6959463d80100a7a228b11 Mon Sep 17 00:00:00 2001 From: Luca Giorgi Date: Tue, 13 May 2025 12:38:21 +0200 Subject: [PATCH 33/44] Move robot TC to pytest (#1105) * Translate robot TC to pytest Signed-off-by: lugi0 * Update test to only use methods exposed directly by the client Signed-off-by: lugi0 --------- Signed-off-by: lugi0 --- clients/python/README.md | 31 +++++++++++++++++- clients/python/tests/test_client.py | 50 +++++++++++++++++++++++++++++ test/robot/UserStory.robot | 1 + 3 files changed, 81 insertions(+), 1 deletion(-) diff --git a/clients/python/README.md b/clients/python/README.md index 23b8250c9b..434e6cd583 100644 --- a/clients/python/README.md +++ b/clients/python/README.md @@ -362,6 +362,35 @@ Check out our [recommendations on setting up your docker engine](https://github. ### Troubleshooting -- On running `make test test-e2e` if you see a similar problem `unknown flag: --load`, install [buildx](https://formulae.brew.sh/formula/docker-buildx) +- On running `make test test-e2e` if you see a similar problem `unknown flag: --load`, install [buildx](https://formulae.brew.sh/formula/docker-buildx). You will then need to add `cliPluginsExtraDirs` to ~/.docker/config.json, like so: +``` +"cliPluginsExtraDirs": [ + "/opt/homebrew/lib/docker/cli-plugins" # depending on your system config, brew should give you the proper one + ] +``` +Before running make, ensure docker is running (`docker ps -a`). If it's not, assuming you're using `colima` on macos, run +`colima start`. + +- On running `make test-e2e` you might see an error similar to +``` +102.7 /workspace/bin/golangci-lint run cmd/... internal/... ./pkg/... --timeout 3m +124.6 make: *** [Makefile:243: lint] Killed +------ +Dockerfile:60 +-------------------- + 58 | + 59 | # prepare the build in a separate layer + 60 | >>> RUN make clean build/prepare + 61 | # compile separately to optimize multi-platform builds + 62 | RUN CGO_ENABLED=0 GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH} make build/compile +-------------------- +ERROR: failed to solve: process "/bin/sh -c make clean build/prepare" did not complete successfully: exit code: 2 +make[1]: *** [image/build] Error 1 +make: *** [deploy-latest-mr] Error 2 +``` +To solve it, you can try launching `colima` with these settings: +``` +colima start --cpu 6 --memory 16 --profile docker --arch aarch64 --vm-type=vz --vz-rosetta +``` diff --git a/clients/python/tests/test_client.py b/clients/python/tests/test_client.py index b3879dcfa1..ff354d6a77 100644 --- a/clients/python/tests/test_client.py +++ b/clients/python/tests/test_client.py @@ -997,3 +997,53 @@ async def test_register_model_with_owner(client): assert rm.owner == model_params["owner"] assert (_get_rm := client.get_registered_model(name=model_params["name"])) assert _get_rm.owner == model_params["owner"] + + +@pytest.mark.e2e +async def test_register_model_with_s3_data_connection(client: ModelRegistry): + """As a MLOps engineer I want to track a Model from an S3 bucket Data Connection""" + data_connection_name = "aws-connection-my-data-connection" + s3_bucket = "my-bucket" + s3_path = "my-path" + s3_endpoint = "https://minio-api.acme.org" + s3_region = "us-east-1" + + # Create the S3 URI using the utility function + uri = utils.s3_uri_from( + path=s3_path, + bucket=s3_bucket, + endpoint=s3_endpoint, + region=s3_region + ) + + model_params = { + "name": "test_model", + "uri": uri, + "model_format_name": "onnx", + "model_format_version": "1", + "version": "v1.0", + "description": "The Model", # This will be set on the model version + "storage_key": data_connection_name, + "storage_path": s3_path + } + + # Register the model with S3 connection details + rm = client.register_model(**model_params) + assert rm.id + + # Get and verify the registered model + rm_by_name = client.get_registered_model(model_params["name"]) + assert rm_by_name.id == rm.id + + # Get and verify the model version + mv = client.get_model_version(model_params["name"], model_params["version"]) + assert mv.description == "The Model" + assert mv.name == "v1.0" + + # Get and verify the model artifact + ma = client.get_model_artifact(model_params["name"], model_params["version"]) + assert ma.uri == uri + assert ma.model_format_name == "onnx" + assert ma.model_format_version == "1" + assert ma.storage_key == data_connection_name + assert ma.storage_path == s3_path diff --git a/test/robot/UserStory.robot b/test/robot/UserStory.robot index c4dea1c12e..1fdf1a735b 100644 --- a/test/robot/UserStory.robot +++ b/test/robot/UserStory.robot @@ -100,6 +100,7 @@ As a MLOps engineer I would like to store an owner for the RegisteredModel And Should be equal ${r["owner"]} My owner As a MLOps engineer I want to track a Model from an S3 bucket Data Connection + # MIGRATED TO test_register_model_with_s3_data_connection in pytest ${data_connection_name} Set Variable aws-connection-my-data-connection ${s3_bucket} Set Variable my-bucket ${s3_path} Set Variable my-path From c58d14f935feb748a0e929c2054bcf8f97171300 Mon Sep 17 00:00:00 2001 From: Matteo Mortari Date: Wed, 14 May 2025 08:57:22 +0200 Subject: [PATCH 34/44] py: change str repr to mitigate confusion (#1106) * py: change str repr to mitigate confusion Signed-off-by: Matteo Mortari * linting Signed-off-by: Matteo Mortari --------- Signed-off-by: Matteo Mortari --- .../src/model_registry/types/contexts.py | 24 ++++++++ clients/python/tests/types/test_context.py | 57 +++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 clients/python/tests/types/test_context.py diff --git a/clients/python/src/model_registry/types/contexts.py b/clients/python/src/model_registry/types/contexts.py index 2d50c42372..cb6b69d172 100644 --- a/clients/python/src/model_registry/types/contexts.py +++ b/clients/python/src/model_registry/types/contexts.py @@ -82,6 +82,18 @@ def from_basemodel(cls, source: ModelVersionBaseModel) -> ModelVersion: else None, ) + def __repr_str__(self, join_str: str) -> str: + """Overrides pydantic Representation.__repr_str__ to bring name to the front.""" + result = [] + for a, v in self.__repr_args__(): + if a is None: + result.append(repr(v)) + elif a == "name": + result.insert(0, f"{a}={v!r}") + else: + result.append(f"{a}={v!r}") + return join_str.join(result) + class RegisteredModel(BaseResourceModel): """Represents a registered model. @@ -131,3 +143,15 @@ def from_basemodel(cls, source: RegisteredModelBaseModel) -> RegisteredModel: if source.custom_properties else None, ) + + def __repr_str__(self, join_str: str) -> str: + """Overrides pydantic Representation.__repr_str__ to bring name to the front.""" + result = [] + for a, v in self.__repr_args__(): + if a is None: + result.append(repr(v)) + elif a == "name": + result.insert(0, f"{a}={v!r}") + else: + result.append(f"{a}={v!r}") + return join_str.join(result) diff --git a/clients/python/tests/types/test_context.py b/clients/python/tests/types/test_context.py new file mode 100644 index 0000000000..a583f1a487 --- /dev/null +++ b/clients/python/tests/types/test_context.py @@ -0,0 +1,57 @@ +from model_registry.types.contexts import ModelVersion, RegisteredModel + + +def test_model_version_repr(): + """Test the repr of a ModelVersion, with name to the front, ensuring other fields are also present""" + mv = ModelVersion(name="Version 1", id="123", author="test_author", description="test_description") + print(mv) + assert str(mv).startswith("name='Version 1'") + assert "id='123'" in str(mv) + assert "author='test_author'" in str(mv) + assert "description='test_description'" in str(mv) + print(repr(mv)) + assert repr(mv).startswith("ModelVersion(name='Version 1'") + assert "id='123'" in str(mv) + assert "author='test_author'" in str(mv) + assert "description='test_description'" in str(mv) + + # Test with empty name, not really used in practice but to increase coverage + mv = ModelVersion(name="", id="123", author="test_author", description="test_description") + print(mv) + assert str(mv).startswith("name=''") + assert "id='123'" in str(mv) + assert "author='test_author'" in str(mv) + assert "description='test_description'" in str(mv) + print(repr(mv)) + assert repr(mv).startswith("ModelVersion(name=''") + assert "id='123'" in str(mv) + assert "author='test_author'" in str(mv) + assert "description='test_description'" in str(mv) + + +def test_registered_model_repr(): + """Test the repr of a RegisteredModel, with name to the front, ensuring other fields are also present""" + rm = RegisteredModel(name="Model 1", id="123", owner="test_owner", description="test_description") + print(rm) + assert str(rm).startswith("name='Model 1'") + assert "id='123'" in str(rm) + assert "owner='test_owner'" in str(rm) + assert "description='test_description'" in str(rm) + print(repr(rm)) + assert repr(rm).startswith("RegisteredModel(name='Model 1'") + assert "id='123'" in str(rm) + assert "owner='test_owner'" in str(rm) + assert "description='test_description'" in str(rm) + + # Test with empty name, not really used in practice but to increase coverage + rm = RegisteredModel(name="", id="123", owner="test_owner", description="test_description") + print(rm) + assert str(rm).startswith("name=''") + assert "id='123'" in str(rm) + assert "owner='test_owner'" in str(rm) + assert "description='test_description'" in str(rm) + print(repr(rm)) + assert repr(rm).startswith("RegisteredModel(name=''") + assert "id='123'" in str(rm) + assert "owner='test_owner'" in str(rm) + assert "description='test_description'" in str(rm) From 8b50a86e1517a6236d2a5db2d57e461bd7ff695e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 May 2025 11:40:22 +0000 Subject: [PATCH 35/44] build(deps): bump github.com/kubeflow/model-registry from 0.2.14 to 0.2.17 in /clients/ui/bff (#1094) Bumps [github.com/kubeflow/model-registry](https://github.com/kubeflow/model-registry) from 0.2.14 to 0.2.17. - [Release notes](https://github.com/kubeflow/model-registry/releases) - [Changelog](https://github.com/kubeflow/model-registry/blob/main/RELEASE.md) - [Commits](https://github.com/kubeflow/model-registry/compare/v0.2.14...v0.2.17) --- updated-dependencies: - dependency-name: github.com/kubeflow/model-registry dependency-version: 0.2.17 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- clients/ui/bff/go.mod | 41 +++++++-------- clients/ui/bff/go.sum | 118 +++++++++++++++++++----------------------- 2 files changed, 72 insertions(+), 87 deletions(-) diff --git a/clients/ui/bff/go.mod b/clients/ui/bff/go.mod index 6637bb8a68..6f75e260f6 100644 --- a/clients/ui/bff/go.mod +++ b/clients/ui/bff/go.mod @@ -6,7 +6,7 @@ require ( github.com/brianvoe/gofakeit/v7 v7.1.2 github.com/google/uuid v1.6.0 github.com/julienschmidt/httprouter v1.3.0 - github.com/kubeflow/model-registry v0.2.14 + github.com/kubeflow/model-registry v0.2.17 github.com/onsi/ginkgo/v2 v2.23.4 github.com/onsi/gomega v1.37.0 github.com/rs/cors v1.11.1 @@ -14,19 +14,19 @@ require ( k8s.io/api v0.33.0 k8s.io/apimachinery v0.33.0 k8s.io/client-go v0.33.0 - sigs.k8s.io/controller-runtime v0.19.1 + sigs.k8s.io/controller-runtime v0.20.4 ) require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/emicklei/go-restful/v3 v3.11.0 // indirect - github.com/evanphx/json-patch/v5 v5.9.0 // indirect - github.com/fxamacker/cbor/v2 v2.7.0 // indirect + github.com/emicklei/go-restful/v3 v3.12.2 // indirect + github.com/evanphx/json-patch/v5 v5.9.11 // indirect + github.com/fxamacker/cbor/v2 v2.8.0 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/zapr v1.3.0 // indirect - github.com/go-openapi/jsonpointer v0.21.0 // indirect - github.com/go-openapi/jsonreference v0.20.2 // indirect - github.com/go-openapi/swag v0.23.0 // indirect + github.com/go-openapi/jsonpointer v0.21.1 // indirect + github.com/go-openapi/jsonreference v0.21.0 // indirect + github.com/go-openapi/swag v0.23.1 // indirect github.com/go-task/slim-sprig/v3 v3.0.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/google/gnostic-models v0.6.9 // indirect @@ -34,35 +34,34 @@ require ( github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/mailru/easyjson v0.7.7 // indirect + github.com/mailru/easyjson v0.9.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/pflag v1.0.6 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/x448/float16 v0.8.4 // indirect go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect - go.uber.org/zap v1.26.0 // indirect - golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect - golang.org/x/net v0.38.0 // indirect - golang.org/x/oauth2 v0.27.0 // indirect + go.uber.org/zap v1.27.0 // indirect + golang.org/x/net v0.39.0 // indirect + golang.org/x/oauth2 v0.29.0 // indirect golang.org/x/sys v0.32.0 // indirect - golang.org/x/term v0.30.0 // indirect - golang.org/x/text v0.23.0 // indirect - golang.org/x/time v0.9.0 // indirect + golang.org/x/term v0.31.0 // indirect + golang.org/x/text v0.24.0 // indirect + golang.org/x/time v0.11.0 // indirect golang.org/x/tools v0.31.0 // indirect - google.golang.org/protobuf v1.36.5 // indirect + google.golang.org/protobuf v1.36.6 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/apiextensions-apiserver v0.31.0 // indirect + k8s.io/apiextensions-apiserver v0.32.3 // indirect k8s.io/klog/v2 v2.130.1 // indirect k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff // indirect - k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect - sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect + k8s.io/utils v0.0.0-20250321185631-1f6e0b77f77e // indirect + sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect sigs.k8s.io/randfill v1.0.0 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.6.0 // indirect sigs.k8s.io/yaml v1.4.0 // indirect diff --git a/clients/ui/bff/go.sum b/clients/ui/bff/go.sum index 0810ae5b45..299680d487 100644 --- a/clients/ui/bff/go.sum +++ b/clients/ui/bff/go.sum @@ -4,31 +4,28 @@ github.com/brianvoe/gofakeit/v7 v7.1.2 h1:vSKaVScNhWVpf1rlyEKSvO8zKZfuDtGqoIHT// github.com/brianvoe/gofakeit/v7 v7.1.2/go.mod h1:QXuPeBw164PJCzCUZVmgpgHJ3Llj49jSLVkKPMtxtxA= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= -github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/evanphx/json-patch/v5 v5.9.0 h1:kcBlZQbplgElYIlo/n1hJbls2z/1awpXxpRi0/FOJfg= -github.com/evanphx/json-patch/v5 v5.9.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= -github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= -github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= -github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= -github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= +github.com/emicklei/go-restful/v3 v3.12.2 h1:DhwDP0vY3k8ZzE0RunuJy8GhNpPL6zqLkDf9B/a0/xU= +github.com/emicklei/go-restful/v3 v3.12.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU= +github.com/evanphx/json-patch/v5 v5.9.11/go.mod h1:3j+LviiESTElxA4p3EMKAB9HXj3/XEtnUf6OZxqIQTM= +github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= +github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/fxamacker/cbor/v2 v2.8.0 h1:fFtUGXUzXPHTIUdne5+zzMPTfffl3RD5qYnkY40vtxU= +github.com/fxamacker/cbor/v2 v2.8.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ= github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg= -github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= -github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= -github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= -github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= -github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= -github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= -github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= +github.com/go-openapi/jsonpointer v0.21.1 h1:whnzv/pNXtK2FbX/W9yJfRmE2gsmkfahjMKB0fZvcic= +github.com/go-openapi/jsonpointer v0.21.1/go.mod h1:50I1STOfbY1ycR8jGz8DaMeLCdXiI6aDteEdRNNzpdk= +github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= +github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= +github.com/go-openapi/swag v0.23.1 h1:lpsStH0n2ittzTnbaSloVZLuB5+fvSY/+hnagBjSNZU= +github.com/go-openapi/swag v0.23.1/go.mod h1:STZs8TbRvEQQKUA+JZNAm3EWlgaOBGpyFDqQnDHMef0= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= @@ -51,17 +48,14 @@ github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4d github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kubeflow/model-registry v0.2.14 h1:ZJmsWEvyecSRw91Irr2oLgyzCJKVJ0s+16ycxpZaEP0= -github.com/kubeflow/model-registry v0.2.14/go.mod h1:iUN9ariCxPzMlmR5dAzuk2N62SR0dmE534Vn3vdsmU8= -github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= -github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/kubeflow/model-registry v0.2.17 h1:5VSZ2g8Zu7nAbu6onuTlcdg3TjRadH73mkkYgkKpSEE= +github.com/kubeflow/model-registry v0.2.17/go.mod h1:cG1/kRUXo06uTJWp78qylPtB6Pd932M07vhawAqedt8= +github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4= +github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -80,29 +74,24 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= -github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= -github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= -github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= -github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= -github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= -github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= +github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= +github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= +github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= +github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= +github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= +github.com/prometheus/procfs v0.16.0 h1:xh6oHhKwnOJKMYiYBDWmkHqQPyiY40sny36Cmx2bbsM= +github.com/prometheus/procfs v0.16.0/go.mod h1:8veyXUu3nGP7oaCxhX6yeaM5u4stL2FeMXnCqhDthZg= github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= @@ -115,23 +104,21 @@ go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= -go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= -golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= -golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= -golang.org/x/oauth2 v0.27.0 h1:da9Vo7/tDv5RH/7nZDz1eMGS/q1Vv1N/7FCrBhI9I3M= -golang.org/x/oauth2 v0.27.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= +golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= +golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= +golang.org/x/oauth2 v0.29.0 h1:WdYw2tdTK1S8olAzWHdgeqfy+Mtm9XNhv/xJsY65d98= +golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -140,14 +127,14 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y= -golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g= +golang.org/x/term v0.31.0 h1:erwDkOK1Msy6offm1mOgvspSkslFnIGsFnxOKoufg3o= +golang.org/x/term v0.31.0/go.mod h1:R4BeIy7D95HzImkxGkTW1UQTtP54tio2RyHz7PwK0aw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= -golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= -golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= -golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= +golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= +golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= +golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -158,10 +145,10 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw= -gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= -google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= -google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +gomodules.xyz/jsonpatch/v2 v2.5.0 h1:JELs8RLM12qJGXU4u/TO3V25KW8GreMKl9pdkk14RM0= +gomodules.xyz/jsonpatch/v2 v2.5.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= @@ -169,13 +156,12 @@ gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSP gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= k8s.io/api v0.33.0 h1:yTgZVn1XEe6opVpP1FylmNrIFWuDqe2H0V8CT5gxfIU= k8s.io/api v0.33.0/go.mod h1:CTO61ECK/KU7haa3qq8sarQ0biLq2ju405IZAd9zsiM= -k8s.io/apiextensions-apiserver v0.31.0 h1:fZgCVhGwsclj3qCw1buVXCV6khjRzKC5eCFt24kyLSk= -k8s.io/apiextensions-apiserver v0.31.0/go.mod h1:b9aMDEYaEe5sdK+1T0KU78ApR/5ZVp4i56VacZYEHxk= +k8s.io/apiextensions-apiserver v0.32.3 h1:4D8vy+9GWerlErCwVIbcQjsWunF9SUGNu7O7hiQTyPY= +k8s.io/apiextensions-apiserver v0.32.3/go.mod h1:8YwcvVRMVzw0r1Stc7XfGAzB/SIVLunqApySV5V7Dss= k8s.io/apimachinery v0.33.0 h1:1a6kHrJxb2hs4t8EE5wuR/WxKDwGN1FKH3JvDtA0CIQ= k8s.io/apimachinery v0.33.0/go.mod h1:BHW0YOu7n22fFv/JkYOEfkUYNRN0fj0BlvMFWA7b+SM= k8s.io/client-go v0.33.0 h1:UASR0sAYVUzs2kYuKn/ZakZlcs2bEHaizrrHUZg0G98= @@ -184,12 +170,12 @@ k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff h1:/usPimJzUKKu+m+TE36gUyGcf03XZEP0ZIKgKj35LS4= k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff/go.mod h1:5jIi+8yX4RIb8wk3XwBo5Pq2ccx4FP10ohkbSKCZoK8= -k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro= -k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -sigs.k8s.io/controller-runtime v0.19.1 h1:Son+Q40+Be3QWb+niBXAg2vFiYWolDjjRfO8hn/cxOk= -sigs.k8s.io/controller-runtime v0.19.1/go.mod h1:iRmWllt8IlaLjvTTDLhRBXIEtkCK6hwVBJJsYS9Ajf4= -sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= -sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= +k8s.io/utils v0.0.0-20250321185631-1f6e0b77f77e h1:KqK5c/ghOm8xkHYhlodbp6i6+r+ChV2vuAuVRdFbLro= +k8s.io/utils v0.0.0-20250321185631-1f6e0b77f77e/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +sigs.k8s.io/controller-runtime v0.20.4 h1:X3c+Odnxz+iPTRobG4tp092+CvBU9UK0t/bRf+n0DGU= +sigs.k8s.io/controller-runtime v0.20.4/go.mod h1:xg2XB0K5ShQzAgsoujxuKN4LNXR2LfwwHsPj7Iaw+XY= +sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE= +sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg= sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= From 39d5e4f8d8d267a9b16280fd94bc4880c82a3114 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 May 2025 11:41:21 +0000 Subject: [PATCH 36/44] build(deps-dev): bump @cypress/code-coverage from 3.13.12 to 3.14.1 in /clients/ui/frontend (#1096) Bumps [@cypress/code-coverage](https://github.com/cypress-io/code-coverage) from 3.13.12 to 3.14.1. - [Release notes](https://github.com/cypress-io/code-coverage/releases) - [Changelog](https://github.com/cypress-io/code-coverage/blob/master/.releaserc) - [Commits](https://github.com/cypress-io/code-coverage/compare/v3.13.12...v3.14.1) --- updated-dependencies: - dependency-name: "@cypress/code-coverage" dependency-version: 3.14.1 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- clients/ui/frontend/package-lock.json | 8 ++++---- clients/ui/frontend/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/clients/ui/frontend/package-lock.json b/clients/ui/frontend/package-lock.json index 5762abef39..0f80d773de 100644 --- a/clients/ui/frontend/package-lock.json +++ b/clients/ui/frontend/package-lock.json @@ -32,7 +32,7 @@ "@babel/preset-env": "^7.26.9", "@babel/preset-react": "^7.18.6", "@babel/preset-typescript": "^7.21.5", - "@cypress/code-coverage": "^3.13.12", + "@cypress/code-coverage": "^3.14.1", "@module-federation/enhanced": "^0.11.1", "@mui/icons-material": "^6.4.8", "@mui/material": "^6.1.7", @@ -1998,9 +1998,9 @@ } }, "node_modules/@cypress/code-coverage": { - "version": "3.13.12", - "resolved": "https://registry.npmjs.org/@cypress/code-coverage/-/code-coverage-3.13.12.tgz", - "integrity": "sha512-JPNlzk9xgCXRIcFCGoSy0qx3FFcaJOGjGkRAPYewYWLukZbcFSjxfNuoK6IMkaJb+miWdzLV0tsAko9eQDNBiA==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/@cypress/code-coverage/-/code-coverage-3.14.1.tgz", + "integrity": "sha512-sob/cht1BxEXwr0XC5XZbHWoit0UJmk3se/otx305BmxN9Mc33lTD625O3PAfOBPxfS7LKTZLAtryG5dURL62Q==", "dev": true, "license": "MIT", "dependencies": { diff --git a/clients/ui/frontend/package.json b/clients/ui/frontend/package.json index de5c211b52..6f3d55e6f5 100644 --- a/clients/ui/frontend/package.json +++ b/clients/ui/frontend/package.json @@ -34,7 +34,7 @@ "@babel/preset-env": "^7.26.9", "@babel/preset-react": "^7.18.6", "@babel/preset-typescript": "^7.21.5", - "@cypress/code-coverage": "^3.13.12", + "@cypress/code-coverage": "^3.14.1", "@module-federation/enhanced": "^0.11.1", "@mui/icons-material": "^6.4.8", "@mui/material": "^6.1.7", From 949e24e9374fc9efe5ca2d163fb4a81f4bd6b052 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 May 2025 11:42:22 +0000 Subject: [PATCH 37/44] build(deps-dev): bump dotenv from 16.4.7 to 16.5.0 in /clients/ui/frontend (#1097) Bumps [dotenv](https://github.com/motdotla/dotenv) from 16.4.7 to 16.5.0. - [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md) - [Commits](https://github.com/motdotla/dotenv/compare/v16.4.7...v16.5.0) --- updated-dependencies: - dependency-name: dotenv dependency-version: 16.5.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- clients/ui/frontend/package-lock.json | 8 ++++---- clients/ui/frontend/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/clients/ui/frontend/package-lock.json b/clients/ui/frontend/package-lock.json index 0f80d773de..563b5fb85d 100644 --- a/clients/ui/frontend/package-lock.json +++ b/clients/ui/frontend/package-lock.json @@ -60,7 +60,7 @@ "cypress-high-resolution": "^1.0.0", "cypress-mochawesome-reporter": "^3.8.2", "cypress-multi-reporters": "^2.0.4", - "dotenv": "^16.4.7", + "dotenv": "^16.5.0", "dotenv-expand": "^5.1.0", "dotenv-webpack": "^6.0.0", "expect": "^29.7.0", @@ -9096,9 +9096,9 @@ } }, "node_modules/dotenv": { - "version": "16.4.7", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", - "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", + "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", "dev": true, "license": "BSD-2-Clause", "engines": { diff --git a/clients/ui/frontend/package.json b/clients/ui/frontend/package.json index 6f3d55e6f5..806a1484c4 100644 --- a/clients/ui/frontend/package.json +++ b/clients/ui/frontend/package.json @@ -62,7 +62,7 @@ "cypress-high-resolution": "^1.0.0", "cypress-mochawesome-reporter": "^3.8.2", "cypress-multi-reporters": "^2.0.4", - "dotenv": "^16.4.7", + "dotenv": "^16.5.0", "dotenv-expand": "^5.1.0", "dotenv-webpack": "^6.0.0", "expect": "^29.7.0", From f54ea68a6d8989f83c9e5310ad377670c1fe8c28 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 May 2025 11:43:22 +0000 Subject: [PATCH 38/44] build(deps-dev): bump junit-report-merger from 7.0.0 to 7.0.1 in /clients/ui/frontend (#1098) Bumps [junit-report-merger](https://github.com/bhovhannes/junit-report-merger) from 7.0.0 to 7.0.1. - [Release notes](https://github.com/bhovhannes/junit-report-merger/releases) - [Commits](https://github.com/bhovhannes/junit-report-merger/compare/v7.0.0...v7.0.1) --- updated-dependencies: - dependency-name: junit-report-merger dependency-version: 7.0.1 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- clients/ui/frontend/package-lock.json | 16 ++++++++-------- clients/ui/frontend/package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/clients/ui/frontend/package-lock.json b/clients/ui/frontend/package-lock.json index 563b5fb85d..5a3a19c62b 100644 --- a/clients/ui/frontend/package-lock.json +++ b/clients/ui/frontend/package-lock.json @@ -70,7 +70,7 @@ "imagemin": "^9.0.0", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", - "junit-report-merger": "^7.0.0", + "junit-report-merger": "^7.0.1", "mini-css-extract-plugin": "^2.9.0", "postcss": "^8.4.49", "prettier": "^3.3.3", @@ -14565,13 +14565,13 @@ } }, "node_modules/junit-report-merger": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/junit-report-merger/-/junit-report-merger-7.0.0.tgz", - "integrity": "sha512-i7IYPpwVFpju+UKdxYIG9UTMb6NjfRGzWzE/lRExdEf4K3agqXtVBnJWhL9aMM2lNX7uWW/rhVidiDBsG4n5cw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/junit-report-merger/-/junit-report-merger-7.0.1.tgz", + "integrity": "sha512-jNmdXAu0zkpXB9xIVMRocVoMvMm38esLZogDI42pFwEgANFzOgy7QC6DNewGek8SAqmsGWCCfq/koTZkjZHVZA==", "dev": true, "license": "MIT", "dependencies": { - "commander": "~12.0.0", + "commander": "~12.1.0", "fast-glob": "~3.3.0", "xmlbuilder2": "3.1.1" }, @@ -14584,9 +14584,9 @@ } }, "node_modules/junit-report-merger/node_modules/commander": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.0.0.tgz", - "integrity": "sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true, "license": "MIT", "engines": { diff --git a/clients/ui/frontend/package.json b/clients/ui/frontend/package.json index 806a1484c4..c13405e358 100644 --- a/clients/ui/frontend/package.json +++ b/clients/ui/frontend/package.json @@ -72,7 +72,7 @@ "imagemin": "^9.0.0", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", - "junit-report-merger": "^7.0.0", + "junit-report-merger": "^7.0.1", "mini-css-extract-plugin": "^2.9.0", "postcss": "^8.4.49", "prettier": "^3.3.3", From 1fd212e3afae4fecf9d5882ebd4951a360cc1bd1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 May 2025 16:00:22 +0000 Subject: [PATCH 39/44] build(deps): bump koa and @module-federation/enhanced in /clients/ui/frontend (#1104) Bumps [koa](https://github.com/koajs/koa) to 2.16.1 and updates ancestor dependency [@module-federation/enhanced](https://github.com/module-federation/core/tree/HEAD/packages/enhanced). These dependencies need to be updated together. Updates `koa` from 2.15.4 to 2.16.1 - [Release notes](https://github.com/koajs/koa/releases) - [Changelog](https://github.com/koajs/koa/blob/master/History.md) - [Commits](https://github.com/koajs/koa/compare/2.15.4...v2.16.1) Updates `@module-federation/enhanced` from 0.11.1 to 0.13.1 - [Release notes](https://github.com/module-federation/core/releases) - [Changelog](https://github.com/module-federation/core/blob/main/packages/enhanced/CHANGELOG.md) - [Commits](https://github.com/module-federation/core/commits/v0.13.1/packages/enhanced) --- updated-dependencies: - dependency-name: koa dependency-version: 2.16.1 dependency-type: indirect - dependency-name: "@module-federation/enhanced" dependency-version: 0.13.1 dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- clients/ui/frontend/package-lock.json | 786 ++++++++++++++++++++++---- clients/ui/frontend/package.json | 2 +- 2 files changed, 679 insertions(+), 109 deletions(-) diff --git a/clients/ui/frontend/package-lock.json b/clients/ui/frontend/package-lock.json index 5a3a19c62b..547d34076c 100644 --- a/clients/ui/frontend/package-lock.json +++ b/clients/ui/frontend/package-lock.json @@ -33,7 +33,7 @@ "@babel/preset-react": "^7.18.6", "@babel/preset-typescript": "^7.21.5", "@cypress/code-coverage": "^3.14.1", - "@module-federation/enhanced": "^0.11.1", + "@module-federation/enhanced": "^0.13.1", "@mui/icons-material": "^6.4.8", "@mui/material": "^6.1.7", "@mui/types": "^7.2.20", @@ -2247,6 +2247,380 @@ "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==", "license": "MIT" }, + "node_modules/@esbuild/android-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", @@ -3001,13 +3375,39 @@ "dev": true, "license": "MIT" }, + "node_modules/@modern-js/node-bundle-require": { + "version": "2.65.1", + "resolved": "https://registry.npmjs.org/@modern-js/node-bundle-require/-/node-bundle-require-2.65.1.tgz", + "integrity": "sha512-XpEkciVEfDbkkLUI662ZFlI9tXsUQtLXk4NRJDBGosNnk9uL2XszmC8sKsdCSLK8AYuPW2w6MTVWuJsOR0EU8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@modern-js/utils": "2.65.1", + "@swc/helpers": "0.5.13", + "esbuild": "0.17.19" + } + }, + "node_modules/@modern-js/utils": { + "version": "2.65.1", + "resolved": "https://registry.npmjs.org/@modern-js/utils/-/utils-2.65.1.tgz", + "integrity": "sha512-HrChf19F+6nALo5XPra8ycjhXGQfGi23+S7Y2FLfTKe8vaNnky8duT/XvRWpbS4pp3SQj8ryO8m/qWSsJ1Rogw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@swc/helpers": "0.5.13", + "caniuse-lite": "^1.0.30001520", + "lodash": "^4.17.21", + "rslog": "^1.1.0" + } + }, "node_modules/@module-federation/bridge-react-webpack-plugin": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-0.11.1.tgz", - "integrity": "sha512-SUoJE7dEQZVUwBGN+mcMxLyQcQT0RAOZfcjp6Jq3uS6dTtEmJiR4KKGAaNYBlaszBh/HxmiM1U+zE3G126O7tQ==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-0.13.1.tgz", + "integrity": "sha512-3RgGd8KcRw5vibnxWa1NUWwfb0tKwn8OvHeQ4GFKzMvDLm+QpCgQd9LeTEBP38wZgGXVtIJR3y5FPnufWswFKw==", "dev": true, + "license": "MIT", "dependencies": { - "@module-federation/sdk": "0.11.1", + "@module-federation/sdk": "0.13.1", "@types/semver": "7.5.8", "semver": "7.6.3" } @@ -3017,6 +3417,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -3024,14 +3425,59 @@ "node": ">=10" } }, + "node_modules/@module-federation/cli": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/@module-federation/cli/-/cli-0.13.1.tgz", + "integrity": "sha512-ej7eZTVUiRMor37pkl2y3hbXwcaNvPgbZJVO+hb2c7cKBjWto7AndgR5qcKpcXXXlhbGwtnI+VrgldruKC+AqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@modern-js/node-bundle-require": "2.65.1", + "@module-federation/dts-plugin": "0.13.1", + "@module-federation/sdk": "0.13.1", + "chalk": "3.0.0", + "commander": "11.1.0" + }, + "bin": { + "mf": "bin/mf.js" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@module-federation/cli/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@module-federation/cli/node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, "node_modules/@module-federation/data-prefetch": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/@module-federation/data-prefetch/-/data-prefetch-0.11.1.tgz", - "integrity": "sha512-94CiNMHqFdaP93RzzEkMyAQcjXMdlSrsMd9R0htzW23keSnerWnmTcRfkvuzKSAR5cqYszGlrYH9CLyMl1T56A==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/@module-federation/data-prefetch/-/data-prefetch-0.13.1.tgz", + "integrity": "sha512-hj3R72rRyune4fb4V4OFmo1Rfa9T9u0so2Q4vt69frPc2NV2FPPJkIvHGs/geGTLOgt4nn7OH1/ukmR3wWvSuA==", "dev": true, + "license": "MIT", "dependencies": { - "@module-federation/runtime": "0.11.1", - "@module-federation/sdk": "0.11.1", + "@module-federation/runtime": "0.13.1", + "@module-federation/sdk": "0.13.1", "fs-extra": "9.1.0" }, "peerDependencies": { @@ -3040,22 +3486,23 @@ } }, "node_modules/@module-federation/dts-plugin": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-0.11.1.tgz", - "integrity": "sha512-1fsnNb1dIYFoZ9Gk0gVXb/7+YDm0yWSBsVQvGLBOxMSaf1aF12mVi7MF9+l/ax4BgtgFvqVwekKssAbOXrjsig==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-0.13.1.tgz", + "integrity": "sha512-PQMs57h9s5pCkLWZ0IyDGCcac4VZ+GgJE40pAWrOQ+/AgTC+WFyAT16M7PsRENS57Qed4wWQwgfOjS9zmfxKJA==", "dev": true, + "license": "MIT", "dependencies": { - "@module-federation/error-codes": "0.11.1", - "@module-federation/managers": "0.11.1", - "@module-federation/sdk": "0.11.1", - "@module-federation/third-party-dts-extractor": "0.11.1", + "@module-federation/error-codes": "0.13.1", + "@module-federation/managers": "0.13.1", + "@module-federation/sdk": "0.13.1", + "@module-federation/third-party-dts-extractor": "0.13.1", "adm-zip": "^0.5.10", "ansi-colors": "^4.1.3", "axios": "^1.8.2", "chalk": "3.0.0", "fs-extra": "9.1.0", "isomorphic-ws": "5.0.0", - "koa": "2.15.4", + "koa": "2.16.1", "lodash.clonedeepwith": "4.5.0", "log4js": "6.9.1", "node-schedule": "2.1.1", @@ -3077,6 +3524,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3086,24 +3534,30 @@ } }, "node_modules/@module-federation/enhanced": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-0.11.1.tgz", - "integrity": "sha512-B+2kWuzkwEZvpLxwiah2gxHov9Xw2fmXZKvMqBwDSGCOobTtdipAjAeG0AXm7mdEO1Xw/SkZgEDLYQxW27exjA==", - "dev": true, - "dependencies": { - "@module-federation/bridge-react-webpack-plugin": "0.11.1", - "@module-federation/data-prefetch": "0.11.1", - "@module-federation/dts-plugin": "0.11.1", - "@module-federation/error-codes": "0.11.1", - "@module-federation/inject-external-runtime-core-plugin": "0.11.1", - "@module-federation/managers": "0.11.1", - "@module-federation/manifest": "0.11.1", - "@module-federation/rspack": "0.11.1", - "@module-federation/runtime-tools": "0.11.1", - "@module-federation/sdk": "0.11.1", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-0.13.1.tgz", + "integrity": "sha512-jbbk68RnvNmusGGcXNXVDJAzJOFB/hV+RVV2wWNWmBOVkDZPiWj7aFb0cJAwc9EYZbPel3QzRitZJ73+SaH1IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/bridge-react-webpack-plugin": "0.13.1", + "@module-federation/cli": "0.13.1", + "@module-federation/data-prefetch": "0.13.1", + "@module-federation/dts-plugin": "0.13.1", + "@module-federation/error-codes": "0.13.1", + "@module-federation/inject-external-runtime-core-plugin": "0.13.1", + "@module-federation/managers": "0.13.1", + "@module-federation/manifest": "0.13.1", + "@module-federation/rspack": "0.13.1", + "@module-federation/runtime-tools": "0.13.1", + "@module-federation/sdk": "0.13.1", "btoa": "^1.2.1", + "schema-utils": "^4.3.0", "upath": "2.0.1" }, + "bin": { + "mf": "bin/mf.js" + }, "peerDependencies": { "typescript": "^4.9.0 || ^5.0.0", "vue-tsc": ">=1.0.24", @@ -3122,40 +3576,44 @@ } }, "node_modules/@module-federation/error-codes": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.11.1.tgz", - "integrity": "sha512-N1cs1qwrO8cU/OzfnBbr+3FaVbrJk6QEAsQ8H+YxGRrh/kHsR2BKpZCX79jTG27oDbz45FLjQ98YucMMXC24EA==", - "dev": true + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.13.1.tgz", + "integrity": "sha512-azgGDBnFRfqlivHOl96ZjlFUFlukESz2Rnnz/pINiSqoBBNjUE0fcAZP4X6jgrVITuEg90YkruZa7pW9I3m7Uw==", + "dev": true, + "license": "MIT" }, "node_modules/@module-federation/inject-external-runtime-core-plugin": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/@module-federation/inject-external-runtime-core-plugin/-/inject-external-runtime-core-plugin-0.11.1.tgz", - "integrity": "sha512-giayNxsx7XK86aIzydjtnn8UD8qYyBcVwmsFEEXXA02Jod36CGRFcd0eQ6TzgVEF7kE3iZkpHEKJBGontl32Qg==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/@module-federation/inject-external-runtime-core-plugin/-/inject-external-runtime-core-plugin-0.13.1.tgz", + "integrity": "sha512-K+ltl2AqVqlsvEds1PffCMLDMlC5lvdkyMXOfcZO6u0O4dZlaTtZbT32NchY7kIEvEsj0wyYhX1i2DnsbHpUBw==", "dev": true, + "license": "MIT", "peerDependencies": { - "@module-federation/runtime-tools": "0.11.1" + "@module-federation/runtime-tools": "0.13.1" } }, "node_modules/@module-federation/managers": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-0.11.1.tgz", - "integrity": "sha512-qEgJE4qFfIaPVpGncsCvn5eqC6VJ8wT2jwPF2+27cpU5IqZwvfIBZlIjUkGEDPjUtbS10JdGKBfLFrcI+p9i5A==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-0.13.1.tgz", + "integrity": "sha512-vQMrqSFQxjSuGgByC2wcY7zUTmVfhzCyDpnCCq0PtaozK8DcgwsEMzrAT3dbg8ifGUmse/xiRIbTmS5leKK+UQ==", "dev": true, + "license": "MIT", "dependencies": { - "@module-federation/sdk": "0.11.1", + "@module-federation/sdk": "0.13.1", "find-pkg": "2.0.0", "fs-extra": "9.1.0" } }, "node_modules/@module-federation/manifest": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-0.11.1.tgz", - "integrity": "sha512-y4zoS4QJMn6OVtY3Wkq3khtjVCU3J8Pnb1CbjM5xoJ7jy/qZhTnDJd194czoQgzx4MnP+BR5jshEQha9GCFPzg==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-0.13.1.tgz", + "integrity": "sha512-XcuFtLycoR0jQj8op+w20V5n459blNBvGXe//AwkEppQERk8SM5kQgIPvOVbZ8zGx7tl/F2HGTDVZlhDiKzIew==", "dev": true, + "license": "MIT", "dependencies": { - "@module-federation/dts-plugin": "0.11.1", - "@module-federation/managers": "0.11.1", - "@module-federation/sdk": "0.11.1", + "@module-federation/dts-plugin": "0.13.1", + "@module-federation/managers": "0.13.1", + "@module-federation/sdk": "0.13.1", "chalk": "3.0.0", "find-pkg": "2.0.0" } @@ -3165,6 +3623,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3174,18 +3633,19 @@ } }, "node_modules/@module-federation/rspack": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-0.11.1.tgz", - "integrity": "sha512-hhikMBb7qSWCKtoCPO1QLoJwu4BsZPAKs9nychLXakMPQEGByrnh/upVb1C2wep2C4Ax9sjuFT7zD/3CdHOmGg==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-0.13.1.tgz", + "integrity": "sha512-+qz8sW99SYDULajjjn4rSNaI4rogEPVOZsBvT6y0PdfpMD/wZxvh5HlV0u7+5DgWEjgrdm0cJHBHChlIbV/CMQ==", "dev": true, + "license": "MIT", "dependencies": { - "@module-federation/bridge-react-webpack-plugin": "0.11.1", - "@module-federation/dts-plugin": "0.11.1", - "@module-federation/inject-external-runtime-core-plugin": "0.11.1", - "@module-federation/managers": "0.11.1", - "@module-federation/manifest": "0.11.1", - "@module-federation/runtime-tools": "0.11.1", - "@module-federation/sdk": "0.11.1", + "@module-federation/bridge-react-webpack-plugin": "0.13.1", + "@module-federation/dts-plugin": "0.13.1", + "@module-federation/inject-external-runtime-core-plugin": "0.13.1", + "@module-federation/managers": "0.13.1", + "@module-federation/manifest": "0.13.1", + "@module-federation/runtime-tools": "0.13.1", + "@module-federation/sdk": "0.13.1", "btoa": "1.2.1" }, "peerDependencies": { @@ -3203,47 +3663,52 @@ } }, "node_modules/@module-federation/runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.11.1.tgz", - "integrity": "sha512-yxxa/TRXaNggb34N+oL82J7r9+GZ3gYTCDyGibYqtsC5j7+9oB4tmc0UyhjrGMhg+fF8TAWFZjNKo7ZnyN9LcQ==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.13.1.tgz", + "integrity": "sha512-ZHnYvBquDm49LiHfv6fgagMo/cVJneijNJzfPh6S0CJrPS2Tay1bnTXzy8VA5sdIrESagYPaskKMGIj7YfnPug==", "dev": true, + "license": "MIT", "dependencies": { - "@module-federation/error-codes": "0.11.1", - "@module-federation/runtime-core": "0.11.1", - "@module-federation/sdk": "0.11.1" + "@module-federation/error-codes": "0.13.1", + "@module-federation/runtime-core": "0.13.1", + "@module-federation/sdk": "0.13.1" } }, "node_modules/@module-federation/runtime-core": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.11.1.tgz", - "integrity": "sha512-6KxLfkCl05Ey69Xg/dsjf7fPit9qGXZ0lpwaG2agiCqC3JCDxYjT7tgGvnWhTXCcztb/ThpT+bHrRD4Kw8SMhA==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.13.1.tgz", + "integrity": "sha512-TfyKfkSAentKeuvSsAItk8s5tqQSMfIRTPN2e1aoaq/kFhE+7blps719csyWSX5Lg5Es7WXKMsXHy40UgtBtuw==", "dev": true, + "license": "MIT", "dependencies": { - "@module-federation/error-codes": "0.11.1", - "@module-federation/sdk": "0.11.1" + "@module-federation/error-codes": "0.13.1", + "@module-federation/sdk": "0.13.1" } }, "node_modules/@module-federation/runtime-tools": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.11.1.tgz", - "integrity": "sha512-8UqMbHJSdkEvKlnlXpR/OjMA77bUbhtmv0I4UO+PA1zBga4y3/St6NOjD66NTINKeWEgsCt1aepXHspduXp33w==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.13.1.tgz", + "integrity": "sha512-GEF1pxqLc80osIMZmE8j9UKZSaTm2hX2lql8tgIH/O9yK4wnF06k6LL5Ah+wJt+oJv6Dj55ri/MoxMP4SXoPNA==", "dev": true, + "license": "MIT", "dependencies": { - "@module-federation/runtime": "0.11.1", - "@module-federation/webpack-bundler-runtime": "0.11.1" + "@module-federation/runtime": "0.13.1", + "@module-federation/webpack-bundler-runtime": "0.13.1" } }, "node_modules/@module-federation/sdk": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.11.1.tgz", - "integrity": "sha512-QS6zevdQYLCGF6NFf0LysMGARh+dZxMeoRKKDUW5PYi3XOk+tjJ7QsDKybfcBZBNgBJfIuwxh4Oei6WOFJEfRg==", - "dev": true + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.13.1.tgz", + "integrity": "sha512-bmf2FGQ0ymZuxYnw9bIUfhV3y6zDhaqgydEjbl4msObKMLGXZqhse2pTIIxBFpIxR1oONKX/y2FAolDCTlWKiw==", + "dev": true, + "license": "MIT" }, "node_modules/@module-federation/third-party-dts-extractor": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-0.11.1.tgz", - "integrity": "sha512-oyyelSLGFObM699p192Cuk/LxEDdzSOywDUXrzPa/qSKNFii5WartjQRc4QPMLnsQaGD7fQVTTiBkvVBcWUdyQ==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-0.13.1.tgz", + "integrity": "sha512-0kWSupoC0aTxFjJZE5TVPNsoZ9kBsZhkvRxFnUW2vDYLgtvgs2dIrDlNlIXYiS/MaQCNHGyvdNepbchKQiwFaw==", "dev": true, + "license": "MIT", "dependencies": { "find-pkg": "2.0.0", "fs-extra": "9.1.0", @@ -3251,13 +3716,14 @@ } }, "node_modules/@module-federation/webpack-bundler-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.11.1.tgz", - "integrity": "sha512-XlVegGyCBBLId8Jr6USjPOFYViQ0CCtoYjHpC8y1FOGtuXLGrvnEdFcl4XHlFlp3MY3Rxhr8QigrdZhYe5bRWg==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.13.1.tgz", + "integrity": "sha512-QSuSIGa09S8mthbB1L6xERqrz+AzPlHR6D7RwAzssAc+IHf40U6NiTLPzUqp9mmKDhC5Tm0EISU0ZHNeJpnpBQ==", "dev": true, + "license": "MIT", "dependencies": { - "@module-federation/runtime": "0.11.1", - "@module-federation/sdk": "0.11.1" + "@module-federation/runtime": "0.13.1", + "@module-federation/sdk": "0.13.1" } }, "node_modules/@mui/core-downloads-tracker": { @@ -4611,6 +5077,16 @@ "dev": true, "license": "Apache-2.0" }, + "node_modules/@swc/helpers": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.13.tgz", + "integrity": "sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@swc/types": { "version": "0.1.17", "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.17.tgz", @@ -5192,7 +5668,8 @@ "version": "7.5.8", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/send": { "version": "0.17.4", @@ -5815,6 +6292,7 @@ "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz", "integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.0" } @@ -6375,10 +6853,11 @@ } }, "node_modules/axios": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.3.tgz", - "integrity": "sha512-iP4DebzoNlP/YN2dpwCgb8zoCmhtkajzS48JvwmkSkXvPI3DHc7m+XYL5tGnSlJtR6nImXZmdCuN5aP8dh1d8A==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", + "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", "dev": true, + "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -6389,7 +6868,8 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/axobject-query": { "version": "4.1.0", @@ -6972,6 +7452,7 @@ "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", "dev": true, + "license": "(MIT OR Apache-2.0)", "bin": { "btoa": "bin/btoa.js" }, @@ -7052,6 +7533,7 @@ "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", "dev": true, + "license": "MIT", "dependencies": { "mime-types": "^2.1.18", "ylru": "^1.2.0" @@ -7814,6 +8296,7 @@ "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.9.1.tgz", "integrity": "sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==", "dev": true, + "license": "MIT", "dependencies": { "depd": "~2.0.0", "keygrip": "~1.1.0" @@ -7981,6 +8464,7 @@ "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz", "integrity": "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==", "dev": true, + "license": "MIT", "dependencies": { "luxon": "^3.2.1" }, @@ -8597,6 +9081,7 @@ "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.0" } @@ -8678,7 +9163,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/deep-extend": { "version": "0.6.0", @@ -8814,7 +9300,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/depd": { "version": "2.0.0", @@ -9531,6 +10018,44 @@ "dev": true, "license": "MIT" }, + "node_modules/esbuild": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" + } + }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -10329,6 +10854,7 @@ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", "dev": true, + "license": "MIT", "dependencies": { "homedir-polyfill": "^1.0.1" }, @@ -10839,6 +11365,7 @@ "resolved": "https://registry.npmjs.org/find-file-up/-/find-file-up-2.0.1.tgz", "integrity": "sha512-qVdaUhYO39zmh28/JLQM5CoYN9byEOKEH4qfa8K1eNV17W0UUMJ9WgbR/hHFH+t5rcl+6RTb5UC7ck/I+uRkpQ==", "dev": true, + "license": "MIT", "dependencies": { "resolve-dir": "^1.0.1" }, @@ -10851,6 +11378,7 @@ "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-2.0.0.tgz", "integrity": "sha512-WgZ+nKbELDa6N3i/9nrHeNznm+lY3z4YfhDDWgW+5P0pdmMj26bxaxU11ookgY3NyP9GC7HvZ9etp0jRFqGEeQ==", "dev": true, + "license": "MIT", "dependencies": { "find-file-up": "^2.0.1" }, @@ -11515,6 +12043,7 @@ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", "dev": true, + "license": "MIT", "dependencies": { "global-prefix": "^1.0.1", "is-windows": "^1.0.1", @@ -11529,6 +12058,7 @@ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", "dev": true, + "license": "MIT", "dependencies": { "expand-tilde": "^2.0.2", "homedir-polyfill": "^1.0.1", @@ -11544,13 +12074,15 @@ "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/global-prefix/node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -11797,6 +12329,7 @@ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", "dev": true, + "license": "MIT", "dependencies": { "parse-passwd": "^1.0.0" }, @@ -12000,6 +12533,7 @@ "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", "dev": true, + "license": "MIT", "dependencies": { "deep-equal": "~1.0.1", "http-errors": "~1.8.0" @@ -12013,6 +12547,7 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -12022,6 +12557,7 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "dev": true, + "license": "MIT", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.4", @@ -12038,6 +12574,7 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -13167,6 +13704,7 @@ "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", "dev": true, + "license": "MIT", "peerDependencies": { "ws": "*" } @@ -14611,6 +15149,7 @@ "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", "dev": true, + "license": "MIT", "dependencies": { "tsscmp": "1.0.6" }, @@ -14649,10 +15188,11 @@ } }, "node_modules/koa": { - "version": "2.15.4", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.15.4.tgz", - "integrity": "sha512-7fNBIdrU2PEgLljXoPWoyY4r1e+ToWCmzS/wwMPbUNs7X+5MMET1ObhJBlUkF5uZG9B6QhM2zS1TsH6adegkiQ==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.16.1.tgz", + "integrity": "sha512-umfX9d3iuSxTQP4pnzLOz0HKnPg0FaUUIKcye2lOiz3KPu1Y3M3xlz76dISdFPQs37P9eJz1wUpcTS6KDPn9fA==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "^1.3.5", "cache-content-type": "^1.0.0", @@ -14686,13 +15226,15 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/koa-convert": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz", "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", "dev": true, + "license": "MIT", "dependencies": { "co": "^4.6.0", "koa-compose": "^4.1.0" @@ -14706,6 +15248,7 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -14715,6 +15258,7 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "dev": true, + "license": "MIT", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.4", @@ -14731,6 +15275,7 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -14740,6 +15285,7 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -14959,7 +15505,8 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz", "integrity": "sha512-QRBRSxhbtsX1nc0baxSkkK5WlVTTm/s48DSukcGcWZwIyI8Zz+lB+kFiELJXtzfH4Aj6kMWQ1VWW4U5uUDgZMA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.debounce": { "version": "4.0.8", @@ -15105,6 +15652,7 @@ "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "date-format": "^4.0.14", "debug": "^4.3.4", @@ -15120,7 +15668,8 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz", "integrity": "sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/loose-envify": { "version": "1.4.0", @@ -15155,10 +15704,11 @@ } }, "node_modules/luxon": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.5.0.tgz", - "integrity": "sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.6.1.tgz", + "integrity": "sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" } @@ -15941,6 +16491,7 @@ "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-2.1.1.tgz", "integrity": "sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==", "dev": true, + "license": "MIT", "dependencies": { "cron-parser": "^4.2.0", "long-timeout": "0.1.1", @@ -16930,6 +17481,7 @@ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -18057,7 +18609,8 @@ "version": "9.4.2", "resolved": "https://registry.npmjs.org/rambda/-/rambda-9.4.2.tgz", "integrity": "sha512-++euMfxnl7OgaEKwXh9QqThOjMeta2HH001N1v4mYQzBjJBnmXBh2BCK6dZAbICFVXOFUVD3xFG0R3ZPU0mxXw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/randombytes": { "version": "2.1.0", @@ -18667,6 +19220,7 @@ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", "dev": true, + "license": "MIT", "dependencies": { "expand-tilde": "^2.0.0", "global-modules": "^1.0.0" @@ -18746,6 +19300,15 @@ "dev": true, "license": "MIT" }, + "node_modules/rslog": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/rslog/-/rslog-1.2.3.tgz", + "integrity": "sha512-antALPJaKBRPBU1X2q9t085K4htWDOOv/K1qhTUk7h0l1ePU/KbDqKJn19eKP0dk7PqMioeA0+fu3gyPXCsXxQ==", + "dev": true, + "engines": { + "node": ">=14.17.6" + } + }, "node_modules/run-applescript": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", @@ -19643,7 +20206,8 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz", "integrity": "sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/source-map": { "version": "0.5.7", @@ -19900,6 +20464,7 @@ "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", "dev": true, + "license": "MIT", "dependencies": { "date-format": "^4.0.14", "debug": "^4.3.4", @@ -19914,6 +20479,7 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -19928,6 +20494,7 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, + "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -19937,6 +20504,7 @@ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.0.0" } @@ -21071,6 +21639,7 @@ "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6.x" } @@ -22501,6 +23070,7 @@ "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.4.0.tgz", "integrity": "sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.0.0" } diff --git a/clients/ui/frontend/package.json b/clients/ui/frontend/package.json index c13405e358..46202e0539 100644 --- a/clients/ui/frontend/package.json +++ b/clients/ui/frontend/package.json @@ -35,7 +35,7 @@ "@babel/preset-react": "^7.18.6", "@babel/preset-typescript": "^7.21.5", "@cypress/code-coverage": "^3.14.1", - "@module-federation/enhanced": "^0.11.1", + "@module-federation/enhanced": "^0.13.1", "@mui/icons-material": "^6.4.8", "@mui/material": "^6.1.7", "@mui/types": "^7.2.20", From a098b60936237346ebfef072dcbb52aed8c038fe Mon Sep 17 00:00:00 2001 From: Matteo Mortari Date: Wed, 14 May 2025 22:08:22 +0200 Subject: [PATCH 40/44] gha: refresh AppArmor settings for mysql in gha (#1112) * gha: remove obsolete apparmor settings for mysql in gha Signed-off-by: Matteo Mortari * align manifest between #267 and #703 Signed-off-by: Matteo Mortari * Revert removal (keep AppArmor) and change script This reverts commit e00cd80246ab99bc2d53b76a25d4bebac5833df3. trying with replacing with apparmor-utils Signed-off-by: Matteo Mortari * pin ubuntu runners to fetch apparmor settings correctly Signed-off-by: Matteo Mortari * Revert "pin ubuntu runners to fetch apparmor settings correctly" This reverts commit 769d4527b7b8eb64a84e6c0b73d872af8e312106. Signed-off-by: Matteo Mortari * attempt by forcing apt mirror to lookup for AppArmor Signed-off-by: Matteo Mortari * test by removing directly the profile Signed-off-by: Matteo Mortari * Revert "test by removing directly the profile" This reverts commit 7eb045518671f33404fa2c10960aa1e7608f41a4. Signed-off-by: Matteo Mortari * simply remove with apparmor_parser -R Signed-off-by: Matteo Mortari * Revert "align manifest between #267 and #703" This reverts commit 6c1a4c8732aa0e4431989a8e60197bb23fabd9e4. This is taken care in separate PR: https://github.com/kubeflow/model-registry/pull/1113 Signed-off-by: Matteo Mortari --------- Signed-off-by: Matteo Mortari --- .github/workflows/build-image-pr.yml | 1 - .github/workflows/csi-test.yml | 1 - .github/workflows/python-tests.yml | 1 - 3 files changed, 3 deletions(-) diff --git a/.github/workflows/build-image-pr.yml b/.github/workflows/build-image-pr.yml index 47ba7fc633..2e47f22048 100644 --- a/.github/workflows/build-image-pr.yml +++ b/.github/workflows/build-image-pr.yml @@ -41,7 +41,6 @@ jobs: - name: Remove AppArmor profile for mysql in KinD on GHA # https://github.com/kubeflow/manifests/issues/2507 run: | set -x - sudo apt-get install apparmor-profiles sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld - name: Load Local Registry Test Image env: diff --git a/.github/workflows/csi-test.yml b/.github/workflows/csi-test.yml index 5f434ccd1f..6e097c0b0f 100644 --- a/.github/workflows/csi-test.yml +++ b/.github/workflows/csi-test.yml @@ -68,7 +68,6 @@ jobs: - name: Remove AppArmor profile for mysql in KinD on GHA # https://github.com/kubeflow/manifests/issues/2507 run: | set -x - sudo apt-get install apparmor-profiles sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld - name: Install kustomize diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-tests.yml index 12f4473a73..25d437dc36 100644 --- a/.github/workflows/python-tests.yml +++ b/.github/workflows/python-tests.yml @@ -197,7 +197,6 @@ jobs: - name: Remove AppArmor profile for mysql in KinD on GHA # https://github.com/kubeflow/manifests/issues/2507 run: | set -x - sudo apt-get install apparmor-profiles sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld - name: Load Local Registry Test Image env: From f644f24f33aaae855f0a4f1b33233fda453f54ba Mon Sep 17 00:00:00 2001 From: Vikas Saxena <90456542+vikas-saxena02@users.noreply.github.com> Date: Fri, 16 May 2025 16:07:23 +1000 Subject: [PATCH 41/44] sorted out kustomize warnings in overlays/db and overlays/postgres (#1109) * sorted out kustomize warnings in overlays/db Signed-off-by: Vikas Saxena removed comments in kustomization.yaml in overlays/db Signed-off-by: Vikas Saxena sorted out kustomize warnings in overlays/postgres Signed-off-by: Vikas Saxena disabled autocreation of fields in overlays/db Signed-off-by: Vikas Saxena * Update manifests/kustomize/overlays/db/kustomization.yaml Co-authored-by: Paul Boyd Signed-off-by: Vikas Saxena <90456542+vikas-saxena02@users.noreply.github.com> * Update manifests/kustomize/overlays/db/kustomization.yaml Co-authored-by: Paul Boyd Signed-off-by: Vikas Saxena <90456542+vikas-saxena02@users.noreply.github.com> * Update manifests/kustomize/overlays/db/kustomization.yaml Co-authored-by: Paul Boyd Signed-off-by: Vikas Saxena <90456542+vikas-saxena02@users.noreply.github.com> * Update manifests/kustomize/overlays/db/kustomization.yaml Co-authored-by: Paul Boyd Signed-off-by: Vikas Saxena <90456542+vikas-saxena02@users.noreply.github.com> * Update manifests/kustomize/overlays/postgres/kustomization.yaml Co-authored-by: Paul Boyd Signed-off-by: Vikas Saxena <90456542+vikas-saxena02@users.noreply.github.com> --------- Signed-off-by: Vikas Saxena Signed-off-by: Vikas Saxena <90456542+vikas-saxena02@users.noreply.github.com> Co-authored-by: Paul Boyd --- .../base/model-registry-deployment.yaml | 2 +- .../kustomize/overlays/db/kustomization.yaml | 49 +++++++++++---- .../db/patches/model-registry-deployment.yaml | 6 +- .../overlays/postgres/kustomization.yaml | 62 +++++++++++++------ .../patches/model-registry-deployment.yaml | 6 +- 5 files changed, 87 insertions(+), 38 deletions(-) diff --git a/manifests/kustomize/base/model-registry-deployment.yaml b/manifests/kustomize/base/model-registry-deployment.yaml index 81382e29e0..4adfb16ede 100644 --- a/manifests/kustomize/base/model-registry-deployment.yaml +++ b/manifests/kustomize/base/model-registry-deployment.yaml @@ -91,7 +91,7 @@ spec: args: ["--grpc_port=9090", "--mysql_config_database=$(MYSQL_DATABASE)", "--mysql_config_host=$(MYSQL_HOST)", - "--mysql_config_port=$(MYSQL_PORT)", + "--mysql_config_port=MYSQL_PORT_PLACEHOLDER", "--mysql_config_user=$(DBCONFIG_USER)", "--mysql_config_password=$(DBCONFIG_PASSWORD)", "--enable_database_upgrade=true" diff --git a/manifests/kustomize/overlays/db/kustomization.yaml b/manifests/kustomize/overlays/db/kustomization.yaml index cf53e41695..5fe3101ad3 100644 --- a/manifests/kustomize/overlays/db/kustomization.yaml +++ b/manifests/kustomize/overlays/db/kustomization.yaml @@ -8,8 +8,6 @@ resources: - model-registry-db-service.yaml - ../../base -patchesStrategicMerge: -- patches/model-registry-deployment.yaml configMapGenerator: - envs: @@ -28,18 +26,45 @@ images: newName: mysql newTag: 8.0.39 -vars: -- fieldref: +patches: +- path: patches/model-registry-deployment.yaml +replacements: +- source: fieldPath: metadata.name - name: MLMD_DB_HOST - objref: - apiVersion: v1 kind: Service name: model-registry-db -- name: MYSQL_PORT - objref: + version: v1 + targets: + - fieldPaths: + - spec.template.spec.containers.1.args.1 + options: + delimiter: = + index: 1 + select: + group: apps + kind: Deployment + name: model-registry-deployment + version: v1 +- source: + fieldPath: data.MYSQL_PORT kind: ConfigMap name: model-registry-db-parameters - apiVersion: v1 - fieldref: - fieldpath: data.MYSQL_PORT + version: v1 + targets: + - fieldPaths: + - spec.template.spec.containers.1.args.3 + options: + delimiter: = + index: 1 + select: + group: apps + kind: Deployment + name: model-registry-deployment + version: v1 + - fieldPaths: + - spec.template.metadata.annotations.[traffic.sidecar.istio.io/excludeOutboundPorts] + select: + group: apps + kind: Deployment + name: model-registry-deployment + version: v1 diff --git a/manifests/kustomize/overlays/db/patches/model-registry-deployment.yaml b/manifests/kustomize/overlays/db/patches/model-registry-deployment.yaml index b6eca64de9..0d61bf30fa 100644 --- a/manifests/kustomize/overlays/db/patches/model-registry-deployment.yaml +++ b/manifests/kustomize/overlays/db/patches/model-registry-deployment.yaml @@ -7,7 +7,7 @@ spec: metadata: annotations: # db doesn't use istio - traffic.sidecar.istio.io/excludeOutboundPorts: $(MYSQL_PORT) + traffic.sidecar.istio.io/excludeOutboundPorts: MYSQL_PORT_PLACEHOLDER spec: containers: - name: rest-container @@ -35,8 +35,8 @@ spec: - configMapRef: name: model-registry-configmap args: ["--grpc_port=$(MODEL_REGISTRY_GRPC_SERVICE_PORT)", - "--mysql_config_host=$(MLMD_DB_HOST)", + "--mysql_config_host=MLMD_DB_HOST_PLACEHOLDER", "--mysql_config_database=$(MYSQL_DATABASE)", - "--mysql_config_port=$(MYSQL_PORT)", + "--mysql_config_port=MYSQL_PORT_PLACEHOLDER", "--mysql_config_user=$(MYSQL_USER_NAME)", "--mysql_config_password=$(MYSQL_ROOT_PASSWORD)"] diff --git a/manifests/kustomize/overlays/postgres/kustomization.yaml b/manifests/kustomize/overlays/postgres/kustomization.yaml index 6a3822d8b0..56f7a20d75 100644 --- a/manifests/kustomize/overlays/postgres/kustomization.yaml +++ b/manifests/kustomize/overlays/postgres/kustomization.yaml @@ -2,24 +2,21 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namespace: kubeflow -bases: -- ../../base resources: - model-registry-db-pvc.yaml - model-registry-db-deployment.yaml - model-registry-db-service.yaml +- ../../base -patchesStrategicMerge: -- patches/model-registry-deployment.yaml configMapGenerator: -- name: metadata-registry-db-parameters - envs: +- envs: - params.env + name: metadata-registry-db-parameters secretGenerator: -- name: metadata-registry-db-secrets - envs: +- envs: - secrets.env + name: metadata-registry-db-secrets generatorOptions: disableNameSuffixHash: true @@ -28,18 +25,45 @@ images: newName: postgres newTag: 14.7-alpine3.17 -vars: -- name: MLMD_DB_HOST - objref: +patches: +- path: patches/model-registry-deployment.yaml +replacements: +- source: + fieldPath: metadata.name kind: Service name: metadata-postgres-db - apiVersion: v1 - fieldref: - fieldpath: metadata.name -- name: POSTGRES_PORT - objref: + version: v1 + targets: + - fieldPaths: + - spec.template.spec.containers.0.args.2 + options: + delimiter: = + index: 1 + select: + group: apps + kind: Deployment + name: model-registry-deployment + version: v1 +- source: + fieldPath: data.POSTGRES_PORT kind: ConfigMap name: metadata-registry-db-parameters - apiVersion: v1 - fieldref: - fieldpath: data.POSTGRES_PORT + version: v1 + targets: + - fieldPaths: + - spec.template.metadata.annotations.[traffic.sidecar.istio.io/excludeOutboundPorts] + select: + group: apps + kind: Deployment + name: model-registry-deployment + version: v1 + - fieldPaths: + - spec.template.spec.containers.0.args.3 + options: + delimiter: = + index: 1 + select: + group: apps + kind: Deployment + name: model-registry-deployment + version: v1 diff --git a/manifests/kustomize/overlays/postgres/patches/model-registry-deployment.yaml b/manifests/kustomize/overlays/postgres/patches/model-registry-deployment.yaml index 9844feaaef..1dec4cd75a 100644 --- a/manifests/kustomize/overlays/postgres/patches/model-registry-deployment.yaml +++ b/manifests/kustomize/overlays/postgres/patches/model-registry-deployment.yaml @@ -7,7 +7,7 @@ spec: metadata: annotations: # db doesn't use istio - traffic.sidecar.istio.io/excludeOutboundPorts: $(POSTGRES_PORT) + traffic.sidecar.istio.io/excludeOutboundPorts: POSTGRES_PORT_PLACEHOLDER spec: containers: - name: grpc-container @@ -23,8 +23,8 @@ spec: name: model-registry-configmap args: ["--grpc_port=$(MODEL_REGISTRY_GRPC_SERVICE_PORT)", "--metadata_source_config_type=postgresql", - "--postgres_config_host=$(MLMD_DB_HOST)", - "--postgres_config_port=$(POSTGRES_PORT)", + "--postgres_config_host=MLMD_DB_HOST_PLACEHOLDER", + "--postgres_config_port=POSTGRES_PORT_PLACEHOLDER", "--postgres_config_dbname=$(POSTGRES_DBNAME)", "--postgres_config_user=$(POSTGRES_USER)", "--postgres_config_password=$(POSTGRES_PASSWORD)", From daa14ef3d78c2111e3aea7acc010d3acfa3caa04 Mon Sep 17 00:00:00 2001 From: Paul Boyd Date: Fri, 16 May 2025 06:06:23 -0400 Subject: [PATCH 42/44] chore(manifests): remove default namespace (#1074) Remove `namespace: kubeflow` from the core model registry manifests. Fixes #1045 Signed-off-by: Paul Boyd --- manifests/kustomize/README.md | 36 +++++++++++-------- .../options/istio/kustomization.yaml | 1 - .../kustomize/overlays/db/kustomization.yaml | 1 - .../overlays/postgres/kustomization.yaml | 1 - scripts/deploy_on_kind.sh | 6 ++-- 5 files changed, 25 insertions(+), 20 deletions(-) diff --git a/manifests/kustomize/README.md b/manifests/kustomize/README.md index 6aab1c2931..65d478754a 100644 --- a/manifests/kustomize/README.md +++ b/manifests/kustomize/README.md @@ -11,26 +11,34 @@ This is the full installation guide, for a quick install in an existing Kubeflow These instructions assume that you've installed Kubeflow from the [manifests](https://github.com/kubeflow/manifests/), if you're using a distribution consult its documentation instead. -Kubeflow Central Dashboard uses [Profiles](https://www.kubeflow.org/docs/components/central-dash/profiles/) to handle user namespaces and permissions. By default, the manifests deploy the Model Registry instance in the `kubeflow` namespace, to install a compatible version of Model Registry for Kubeflow, you should deploy a separate instance of Model Registry in the profile's namespace. For that just run: +Kubeflow Central Dashboard uses [profiles](https://www.kubeflow.org/docs/components/central-dash/profiles/) to handle user namespaces and permissions. You will need to deploy Model Registry into a profile namespace. + +> **🛈 Note:** If you're not sure of the profile name, you can find it in the name space drop-down on the Kubeflow Dashboard. + +The commands in this section assume that you've defined an environment variable with the target profile namespace: ```sh PROFILE_NAME= -for DIR in options/istio overlays/db ; do (cd $DIR; kustomize edit set namespace $PROFILE_NAME; kubectl apply -k .); done ``` -> **⚠️ Warning:** If you're not sure of the profile name, you can find it in the name space drop-down on the Kubeflow Dashboard. +Deploy Model Registry: -Check everything is up and running: +```sh +kubectl apply -k overlays/db -n $PROFILE_NAME +kubectl apply -k options/istio -n $PROFILE_NAME +``` + +Check that everything is up and running: ```bash -kubectl wait --for=condition=available-n ${PROFILE_NAME} deployment/model-registry-deployment --timeout=2m -kubectl logs -n ${PROFILE_NAME} deployment/model-registry-deployment +kubectl wait --for=condition=available-n $PROFILE_NAME deployment/model-registry-deployment --timeout=2m +kubectl logs -n $PROFILE_NAME deployment/model-registry-deployment ``` Now, to install the Model Registry UI as a Kubeflow component, you need first to deploy the Model Registry UI: ```bash -kubectl apply -k options/ui/overlays/istio -n kubeflow +kubectl apply -k options/ui/overlays/istio ``` And then to make it accessible through Kubeflow Central Dashboard, you need to edit the `centraldashboard-config` ConfigMap to add the Model Registry UI link to the Central Dashboard by running the following command: @@ -69,25 +77,25 @@ To uninstall the Kubeflow Model Registry run: ```bash # Uninstall Model Registry Instance PROFILE_NAME= -for DIR in options/istio overlays/db ; do (cd $DIR; kustomize edit set namespace $PROFILE_NAME; kubectl delete -k .); done +kubectl delete -k overlays/db -n $PROFILE_NAME +kubectl delete -k options/istio -n $PROFILE_NAME # Uninstall Model Registry UI -kubectl delete -k options/ui/overlays/istio -n kubeflow +kubectl delete -k options/ui/overlays/istio ``` - ## Model Registry as a separate component Installation The following instructions will summarize how to deploy Model Registry as separate component in the context of a default Kubeflow >=1.9 installation. ```bash -kubectl apply -k overlays/db +kubectl apply -k overlays/db -n kubeflow ``` As the default Kubeflow installation provides an Istio mesh, apply the necessary manifests: ```bash -kubectl apply -k options/istio +kubectl apply -k options/istio -n kubeflow ``` Check everything is up and running: @@ -121,8 +129,8 @@ To uninstall the Kubeflow Model Registry run: ```bash # Delete istio options -kubectl delete -k options/istio +kubectl delete -k options/istio -n kubeflow # Delete model registry db and deployment -kubectl delete -k overlays/db +kubectl delete -k overlays/db -n kubeflow ``` diff --git a/manifests/kustomize/options/istio/kustomization.yaml b/manifests/kustomize/options/istio/kustomization.yaml index 91263f9b24..029a6937ca 100644 --- a/manifests/kustomize/options/istio/kustomization.yaml +++ b/manifests/kustomize/options/istio/kustomization.yaml @@ -1,6 +1,5 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization -namespace: kubeflow resources: - istio-authorization-policy.yaml diff --git a/manifests/kustomize/overlays/db/kustomization.yaml b/manifests/kustomize/overlays/db/kustomization.yaml index 5fe3101ad3..0323d5b37c 100644 --- a/manifests/kustomize/overlays/db/kustomization.yaml +++ b/manifests/kustomize/overlays/db/kustomization.yaml @@ -1,6 +1,5 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization -namespace: kubeflow resources: - model-registry-db-pvc.yaml diff --git a/manifests/kustomize/overlays/postgres/kustomization.yaml b/manifests/kustomize/overlays/postgres/kustomization.yaml index 56f7a20d75..0f81c89a43 100644 --- a/manifests/kustomize/overlays/postgres/kustomization.yaml +++ b/manifests/kustomize/overlays/postgres/kustomization.yaml @@ -1,6 +1,5 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization -namespace: kubeflow resources: - model-registry-db-pvc.yaml diff --git a/scripts/deploy_on_kind.sh b/scripts/deploy_on_kind.sh index cdb5a62c03..a8fec3c73e 100755 --- a/scripts/deploy_on_kind.sh +++ b/scripts/deploy_on_kind.sh @@ -35,14 +35,14 @@ else kubectl create namespace "$MR_NAMESPACE" fi -kubectl apply -k manifests/kustomize/overlays/db +kubectl apply -k manifests/kustomize/overlays/db -n "$MR_NAMESPACE" kubectl patch deployment -n "$MR_NAMESPACE" model-registry-deployment \ --patch '{"spec": {"template": {"spec": {"containers": [{"name": "rest-container", "image": "'$IMG'", "imagePullPolicy": "IfNotPresent"}]}}}}' if ! kubectl wait --for=condition=available -n "$MR_NAMESPACE" deployment/model-registry-db --timeout=5m ; then kubectl events -A - kubectl describe deployment/model-registry-db -n kubeflow - kubectl logs deployment/model-registry-db -n kubeflow + kubectl describe deployment/model-registry-db -n "$MR_NAMESPACE" + kubectl logs deployment/model-registry-db -n "$MR_NAMESPACE" exit 1 fi From 8a771058291deb0e96b617f7d27bd64e2dba894b Mon Sep 17 00:00:00 2001 From: Matteo Mortari Date: Fri, 16 May 2025 12:07:23 +0200 Subject: [PATCH 43/44] chore: move 1st time contrib GHA in Beta mode (#1088) Signed-off-by: Matteo Mortari --- .../workflows/first-time-contributor-pr.yml | 30 ++++++++++++++----- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/.github/workflows/first-time-contributor-pr.yml b/.github/workflows/first-time-contributor-pr.yml index 2fbfa66867..c7d2cef3b5 100644 --- a/.github/workflows/first-time-contributor-pr.yml +++ b/.github/workflows/first-time-contributor-pr.yml @@ -1,4 +1,4 @@ -name: Welcome first-time contributors +name: Welcome first-time contributors (Beta) on: pull_request_target: types: @@ -13,16 +13,32 @@ permissions: jobs: welcome: runs-on: ubuntu-latest - if: github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR' steps: - - name: Add a comment to the PR + - name: Check contributor status uses: actions/github-script@v7 with: script: | - github.rest.issues.createComment({ - issue_number: context.issue.number, + const { data: pr } = await github.rest.pulls.get({ owner: context.repo.owner, repo: context.repo.repo, - body: "Maintainers: let's ensure the label `ok-to-test` has been maintained and all the tests has been executed before merging.

Thank you for your first Pull Request!🎉🎉" - }) + pull_number: context.issue.number + }); + const isFirstTimeContributor = pr.user.contributions === 0; + console.log(`First-time contributor status: ${isFirstTimeContributor}`); + return { isFirstTimeContributor }; + + - name: Log contributor status + run: echo "First-time contributor status is ${{ steps.check_author.outputs.isFirstTimeContributor }}" + + # - name: Add a comment to the PR if first time contributor + # if: steps.check_author.outputs.isFirstTimeContributor == 'true' + # uses: actions/github-script@v7 + # with: + # script: | + # github.rest.issues.createComment({ + # issue_number: context.issue.number, + # owner: context.repo.owner, + # repo: context.repo.repo, + # body: "Maintainers: let's ensure the label `ok-to-test` has been maintained and all the tests have been executed before merging.

Thank you for your first Pull Request! 🎉🎉" + # }) # do NOT: add actions/checkout to this flow, add-third party scripts, or auto-trigger CI jobs From 62755e8bc766c2b1ec09027ea1feedb0b66f86a7 Mon Sep 17 00:00:00 2001 From: Matteo Mortari Date: Fri, 16 May 2025 12:57:23 +0200 Subject: [PATCH 44/44] docs: document ROADMAP.md per current process (#1110) Signed-off-by: Matteo Mortari --- CONTRIBUTING.md | 4 +++- ROADMAP.md | 23 +++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 ROADMAP.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 137d02e8e8..d86b995968 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -14,11 +14,13 @@ The contributor's guide: * and [describes](https://www.kubeflow.org/docs/about/contributing/#owners-files-and-pr-workflow) the pull request and review workflow in detail, including the OWNERS files and automated workflow tool +The [Kubeflow Community calendar](https://www.kubeflow.org/docs/about/community/#kubeflow-community-calendar) provides an overview of the community calls and specifically the bi-weekly Kubeflow Model Registry meeting. +
The remainder of this document focuses on technical aspects while contributing to the Model Registry project specifically. -Don't forget to reference the [Model Registry documentation](https://github.com/kubeflow/model-registry?tab=readme-ov-file#documentation-links) that details: what is a Model Registry, how to Install, logical model Concepts, how the MR python client works, Tutorials, FAQs and most importantly the [Technical References](https://github.com/kubeflow/model-registry?tab=readme-ov-file#documentation-links:~:text=FAQs-,Development,-introduction%20to%20local)! +The [Model Registry documentation](https://github.com/kubeflow/model-registry?tab=readme-ov-file#documentation-links) provides details about: what is a Model Registry, how to Install, logical model Concepts, how the MR python client works, Tutorials, FAQs and most importantly the [Technical References](https://github.com/kubeflow/model-registry?tab=readme-ov-file#documentation-links:~:text=FAQs-,Development,-introduction%20to%20local)! # Contributing to Model Registry using Apple-silicon/ARM-based computers diff --git a/ROADMAP.md b/ROADMAP.md new file mode 100644 index 0000000000..3ec3cb9025 --- /dev/null +++ b/ROADMAP.md @@ -0,0 +1,23 @@ +# Kubeflow Model Registry Roadmap + +## Overview + +The Kubeflow Model Registry project roadmap is tracked using [GitHub Milestones](https://github.com/kubeflow/model-registry/milestones), following the Kubeflow Release Team's request: this approach has been recommended in order to maintain a detailed view of all the items intended for upcoming Kubeflow releases, organized by "themes". The roadmap is continuously updated as we make progress towards a Kubeflow Release. + +## Current Roadmap + +The current roadmap and upcoming features are tracked in our [GitHub Milestones](https://github.com/kubeflow/model-registry/milestones). Each milestone tracks specific or future Kubeflow release and contains the planned features, enhancements, and bug fixes. For each milestone, a GitHub Issue is typically attached serving as a Tracker record to provide additional details. + +## Past Roadmaps + +- Model Registry in Kubeflow 1.10 + - [Milestone](https://github.com/kubeflow/model-registry/milestone/1) + - [Tracker for details](https://github.com/kubeflow/model-registry/issues/175) +- Model Registry in Kubeflow 1.9 + - [Tracker for details](https://github.com/kubeflow/model-registry/issues/3) + +## See also + +For more information about contributing to this project including the roadmap, refer to our [CONTRIBUTING.md](./CONTRIBUTING.md) file. + +For more information about the release process, refer to our [RELEASE.md](./RELEASE.md) file.