From c6cb5b0d1c9f75de449e8f2fce8f3e3d9e48d60d Mon Sep 17 00:00:00 2001 From: fedml-dimitris Date: Tue, 7 May 2024 15:39:22 -0400 Subject: [PATCH] Removing field validator for resolving spacy and pydantic conflict. --- .../model_scheduler/autoscaler/policies.py | 9 +++++---- .../autoscaler/test/autoscaler_test.py | 14 +++++++------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/python/fedml/computing/scheduler/model_scheduler/autoscaler/policies.py b/python/fedml/computing/scheduler/model_scheduler/autoscaler/policies.py index fd49549812..0ad2cc0d13 100644 --- a/python/fedml/computing/scheduler/model_scheduler/autoscaler/policies.py +++ b/python/fedml/computing/scheduler/model_scheduler/autoscaler/policies.py @@ -1,4 +1,4 @@ -from pydantic import BaseModel, field_validator, NonNegativeInt, NonNegativeFloat +from pydantic import BaseModel, NonNegativeInt, NonNegativeFloat, validator class AutoscalingPolicy(BaseModel): @@ -70,9 +70,10 @@ class EWMPolicy(AutoscalingPolicy): ub_threshold: NonNegativeFloat # recommended value: 0.5 lb_threshold: NonNegativeFloat # recommended value: 0.5 - @field_validator("metric") - def validate_option(cls, v): - assert v in ["ewm_latency", "ewm_qps"] + @validator("metric") + def metric_match(cls, v) -> str: + if v not in ["ewm_latency", "ewm_qps"]: + raise ValueError("Wrong metric name.") return v diff --git a/python/fedml/computing/scheduler/model_scheduler/autoscaler/test/autoscaler_test.py b/python/fedml/computing/scheduler/model_scheduler/autoscaler/test/autoscaler_test.py index 7af1022c7d..eadc2dc9a9 100644 --- a/python/fedml/computing/scheduler/model_scheduler/autoscaler/test/autoscaler_test.py +++ b/python/fedml/computing/scheduler/model_scheduler/autoscaler/test/autoscaler_test.py @@ -111,21 +111,21 @@ def test_validate_scaling_bounds(self): # Validate scale up. scale_up = autoscaler.validate_scaling_bounds(ScaleOp.UP_OUT_OP, autoscaling_policy) - self.assertEquals(scale_up, ScaleOp.UP_OUT_OP) + self.assertEqual(scale_up, ScaleOp.UP_OUT_OP) # Validate scale down. scale_down = autoscaler.validate_scaling_bounds(ScaleOp.DOWN_IN_OP, autoscaling_policy) - self.assertEquals(scale_down, ScaleOp.DOWN_IN_OP) + self.assertEqual(scale_down, ScaleOp.DOWN_IN_OP) # Validate max out-of-bounds. autoscaling_policy.current_replicas = 3 scale_oob_max = autoscaler.validate_scaling_bounds(ScaleOp.UP_OUT_OP, autoscaling_policy) - self.assertEquals(scale_oob_max, ScaleOp.NO_OP) + self.assertEqual(scale_oob_max, ScaleOp.NO_OP) # Validate min out-of-bounds. autoscaling_policy.current_replicas = 1 scale_oob_min = autoscaler.validate_scaling_bounds(ScaleOp.DOWN_IN_OP, autoscaling_policy) - self.assertEquals(scale_oob_min, ScaleOp.NO_OP) + self.assertEqual(scale_oob_min, ScaleOp.NO_OP) def test_enforce_scaling_down_delay_interval(self): self.populate_redis_with_dummy_metrics() @@ -140,15 +140,15 @@ def test_enforce_scaling_down_delay_interval(self): autoscaling_policy.scaledown_delay_secs = 0.0 scale_down = autoscaler.enforce_scaling_down_delay_interval(ENV_ENDPOINT_ID_1, autoscaling_policy) - self.assertEquals(scale_down, ScaleOp.DOWN_IN_OP) + self.assertEqual(scale_down, ScaleOp.DOWN_IN_OP) autoscaling_policy.scaledown_delay_secs = 1 scale_noop = autoscaler.enforce_scaling_down_delay_interval(ENV_ENDPOINT_ID_1, autoscaling_policy) - self.assertEquals(scale_noop, ScaleOp.NO_OP) + self.assertEqual(scale_noop, ScaleOp.NO_OP) time.sleep(2) scale_down = autoscaler.enforce_scaling_down_delay_interval(ENV_ENDPOINT_ID_1, autoscaling_policy) - self.assertEquals(scale_down, ScaleOp.DOWN_IN_OP) + self.assertEqual(scale_down, ScaleOp.DOWN_IN_OP) self.clear_redis()