Flagsmith / flagsmith-engine

This project powers the core Flagsmith API flag evaluations engine.
https://flagsmith.com/
BSD 3-Clause "New" or "Revised" License
10 stars 6 forks source link

error: global flags not at the start of the expression at position 1 #196

Open khvn26 opened 9 months ago

khvn26 commented 9 months ago

Sentry Issue: FLAGSMITH-API-3Z3

error: global flags not at the start of the expression at position 1
(22 additional frame(s) were not displayed)
...
  File "environments/identities/views.py", line 231, in post
    instance = serializer.save()
  File "environments/sdk/serializers.py", line 154, in save
    all_feature_states = identity.get_all_feature_states(
  File "environments/identities/models.py", line 73, in get_all_feature_states
    segments = self.get_segments(traits=traits, overrides_only=True)
  File "environments/identities/models.py", line 172, in get_segments
    if evaluate_identity_in_segment(
khvn26 commented 9 months ago

Minimal repro case:

from flag_engine.identities.models import IdentityModel, TraitModel
from flag_engine.segments.evaluator import evaluate_identity_in_segment
from flag_engine.segments.models import (
    SegmentConditionModel,
    SegmentModel,
    SegmentRuleModel,
)

identity = IdentityModel(
    identifier="foo",
    environment_api_key="foo",
    identity_traits=[TraitModel(trait_key="foo", trait_value="bar")],
)
segment = SegmentModel(
    id=1,
    name="foo_segment",
    rules=[
        SegmentRuleModel(
            type="ALL",
            conditions=[
                SegmentConditionModel(operator="REGEX", value="^(?i)$", property_="foo")
            ],
        )
    ],
)
evaluate_identity_in_segment(identity, segment)