style(): reformatted files
This commit is contained in:
@@ -201,9 +201,7 @@ def _decision_payload(result: dict, subject_id: str) -> dict:
|
|||||||
"subject_id": subject_id,
|
"subject_id": subject_id,
|
||||||
"experiment_id": result.get("experiment_id"),
|
"experiment_id": result.get("experiment_id"),
|
||||||
"variant_id": result.get("variant_id"),
|
"variant_id": result.get("variant_id"),
|
||||||
"value": str(result["value"])
|
"value": str(result["value"]) if result["value"] is not None else "",
|
||||||
if result["value"] is not None
|
|
||||||
else "",
|
|
||||||
"reason": result["reason"],
|
"reason": result["reason"],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -469,11 +469,12 @@ class DecisionPersistenceModeTest(TestCase):
|
|||||||
|
|
||||||
@override_settings(DECISION_WRITE_MODE="async")
|
@override_settings(DECISION_WRITE_MODE="async")
|
||||||
def test_async_mode_enqueues_non_assigned_result(self) -> None:
|
def test_async_mode_enqueues_non_assigned_result(self) -> None:
|
||||||
with patch(
|
with (
|
||||||
"apps.decision.services.persist_decision_task.delay"
|
patch(
|
||||||
) as delay_mock, patch(
|
"apps.decision.services.persist_decision_task.delay"
|
||||||
"apps.decision.services.decision_create"
|
) as delay_mock,
|
||||||
) as create_mock:
|
patch("apps.decision.services.decision_create") as create_mock,
|
||||||
|
):
|
||||||
result = decide_for_flag(self.flag.key, "subj_async", {})
|
result = decide_for_flag(self.flag.key, "subj_async", {})
|
||||||
self.assertEqual(result["reason"], "no_active_experiment")
|
self.assertEqual(result["reason"], "no_active_experiment")
|
||||||
delay_mock.assert_called_once()
|
delay_mock.assert_called_once()
|
||||||
@@ -482,11 +483,12 @@ class DecisionPersistenceModeTest(TestCase):
|
|||||||
@override_settings(DECISION_WRITE_MODE="async")
|
@override_settings(DECISION_WRITE_MODE="async")
|
||||||
def test_async_mode_keeps_assigned_result_sync(self) -> None:
|
def test_async_mode_keeps_assigned_result_sync(self) -> None:
|
||||||
self._make_running_experiment()
|
self._make_running_experiment()
|
||||||
with patch(
|
with (
|
||||||
"apps.decision.services.persist_decision_task.delay"
|
patch(
|
||||||
) as delay_mock, patch(
|
"apps.decision.services.persist_decision_task.delay"
|
||||||
"apps.decision.services.decision_create"
|
) as delay_mock,
|
||||||
) as create_mock:
|
patch("apps.decision.services.decision_create") as create_mock,
|
||||||
|
):
|
||||||
result = decide_for_flag(
|
result = decide_for_flag(
|
||||||
self.flag.key,
|
self.flag.key,
|
||||||
"subj_async_assigned",
|
"subj_async_assigned",
|
||||||
|
|||||||
@@ -30,8 +30,7 @@ from apps.metrics.models import (
|
|||||||
class PercentileCont(Aggregate):
|
class PercentileCont(Aggregate):
|
||||||
function = "PERCENTILE_CONT"
|
function = "PERCENTILE_CONT"
|
||||||
template = (
|
template = (
|
||||||
"%(function)s(%(percentile)s) "
|
"%(function)s(%(percentile)s) WITHIN GROUP (ORDER BY %(expressions)s)"
|
||||||
"WITHIN GROUP (ORDER BY %(expressions)s)"
|
|
||||||
)
|
)
|
||||||
allow_distinct = False
|
allow_distinct = False
|
||||||
output_field = FloatField()
|
output_field = FloatField()
|
||||||
@@ -92,9 +91,7 @@ def _numeric_property_expression(property_field: str):
|
|||||||
pattern = r"^-?(?:\d+(?:\.\d+)?|\.\d+)$"
|
pattern = r"^-?(?:\d+(?:\.\d+)?|\.\d+)$"
|
||||||
return Case(
|
return Case(
|
||||||
When(
|
When(
|
||||||
**{
|
**{f"properties__{property_field}__regex": pattern},
|
||||||
f"properties__{property_field}__regex": pattern
|
|
||||||
},
|
|
||||||
then=Cast(key_text, FloatField()),
|
then=Cast(key_text, FloatField()),
|
||||||
),
|
),
|
||||||
default=Value(None),
|
default=Value(None),
|
||||||
@@ -150,14 +147,18 @@ def _percentile_property(
|
|||||||
start_date: datetime | None = None,
|
start_date: datetime | None = None,
|
||||||
end_date: datetime | None = None,
|
end_date: datetime | None = None,
|
||||||
) -> Decimal | None:
|
) -> Decimal | None:
|
||||||
qs = _events_queryset(
|
qs = (
|
||||||
exposure_qs=exposure_qs,
|
_events_queryset(
|
||||||
event_type_name=event_type_name,
|
exposure_qs=exposure_qs,
|
||||||
start_date=start_date,
|
event_type_name=event_type_name,
|
||||||
end_date=end_date,
|
start_date=start_date,
|
||||||
).annotate(
|
end_date=end_date,
|
||||||
numeric_value=_numeric_property_expression(property_field),
|
)
|
||||||
).exclude(numeric_value__isnull=True)
|
.annotate(
|
||||||
|
numeric_value=_numeric_property_expression(property_field),
|
||||||
|
)
|
||||||
|
.exclude(numeric_value__isnull=True)
|
||||||
|
)
|
||||||
if connection.vendor == "postgresql":
|
if connection.vendor == "postgresql":
|
||||||
value = qs.aggregate(
|
value = qs.aggregate(
|
||||||
value=PercentileCont(
|
value=PercentileCont(
|
||||||
|
|||||||
Reference in New Issue
Block a user