From 8d01d5ef546b136be94e9567b06c241af8c59da9 Mon Sep 17 00:00:00 2001 From: Zach Waterfield Date: Tue, 29 Oct 2024 17:17:27 -0400 Subject: [PATCH 01/22] feat: rbac initial set up (#25745) Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- ee/api/feature_flag_role_access.py | 6 +- .../organization_resource_access.py | 4 +- ee/api/{ => rbac}/role.py | 4 +- ee/api/test/test_feature_flag.py | 4 +- ee/api/test/test_feature_flag_role_access.py | 4 +- .../test/test_organization_resource_access.py | 2 +- ee/api/test/test_role.py | 4 +- ee/api/test/test_role_membership.py | 2 +- ee/models/__init__.py | 2 +- .../organization_resource_access.py | 2 + ee/models/{ => rbac}/role.py | 2 +- ee/urls.py | 5 +- frontend/src/lib/constants.tsx | 1 + .../settings/user/personalAPIKeysLogic.tsx | 4 +- frontend/src/types.ts | 31 ++++++++++ posthog/api/personal_api_key.py | 3 +- posthog/api/project.py | 2 +- posthog/api/routing.py | 2 +- posthog/api/team.py | 2 +- .../api/test/__snapshots__/test_api_docs.ambr | 6 +- .../test/test_organization_feature_flag.py | 2 +- posthog/models/feature_flag/permissions.py | 2 +- posthog/models/personal_api_key.py | 55 +---------------- posthog/models/scopes.py | 60 +++++++++++++++++++ posthog/permissions.py | 2 +- 25 files changed, 128 insertions(+), 85 deletions(-) rename ee/api/{ => rbac}/organization_resource_access.py (92%) rename ee/api/{ => rbac}/role.py (97%) rename ee/models/{ => rbac}/organization_resource_access.py (95%) rename ee/models/{ => rbac}/role.py (95%) create mode 100644 posthog/models/scopes.py diff --git a/ee/api/feature_flag_role_access.py b/ee/api/feature_flag_role_access.py index 6d03c7a4f361c..01aa98a05b9db 100644 --- a/ee/api/feature_flag_role_access.py +++ b/ee/api/feature_flag_role_access.py @@ -1,10 +1,10 @@ from rest_framework import exceptions, mixins, serializers, viewsets from rest_framework.permissions import SAFE_METHODS, BasePermission -from ee.api.role import RoleSerializer +from ee.api.rbac.role import RoleSerializer from ee.models.feature_flag_role_access import FeatureFlagRoleAccess -from ee.models.organization_resource_access import OrganizationResourceAccess -from ee.models.role import Role +from ee.models.rbac.organization_resource_access import OrganizationResourceAccess +from ee.models.rbac.role import Role from posthog.api.feature_flag import FeatureFlagSerializer from posthog.api.routing import TeamAndOrgViewSetMixin from posthog.models import FeatureFlag diff --git a/ee/api/organization_resource_access.py b/ee/api/rbac/organization_resource_access.py similarity index 92% rename from ee/api/organization_resource_access.py rename to ee/api/rbac/organization_resource_access.py index bf886566605b5..9722fc7b02eac 100644 --- a/ee/api/organization_resource_access.py +++ b/ee/api/rbac/organization_resource_access.py @@ -1,7 +1,7 @@ from rest_framework import mixins, serializers, viewsets -from ee.api.role import RolePermissions -from ee.models.organization_resource_access import OrganizationResourceAccess +from ee.api.rbac.role import RolePermissions +from ee.models.rbac.organization_resource_access import OrganizationResourceAccess from posthog.api.routing import TeamAndOrgViewSetMixin diff --git a/ee/api/role.py b/ee/api/rbac/role.py similarity index 97% rename from ee/api/role.py rename to ee/api/rbac/role.py index 96041cd0109ef..ccf8acef1f1dc 100644 --- a/ee/api/role.py +++ b/ee/api/rbac/role.py @@ -5,8 +5,8 @@ from rest_framework.permissions import SAFE_METHODS, BasePermission from ee.models.feature_flag_role_access import FeatureFlagRoleAccess -from ee.models.organization_resource_access import OrganizationResourceAccess -from ee.models.role import Role, RoleMembership +from ee.models.rbac.organization_resource_access import OrganizationResourceAccess +from ee.models.rbac.role import Role, RoleMembership from posthog.api.organization_member import OrganizationMemberSerializer from posthog.api.routing import TeamAndOrgViewSetMixin from posthog.api.shared import UserBasicSerializer diff --git a/ee/api/test/test_feature_flag.py b/ee/api/test/test_feature_flag.py index e3dd5849d607c..0bc7292f7a875 100644 --- a/ee/api/test/test_feature_flag.py +++ b/ee/api/test/test_feature_flag.py @@ -1,6 +1,6 @@ from ee.api.test.base import APILicensedTest -from ee.models.organization_resource_access import OrganizationResourceAccess -from ee.models.role import Role, RoleMembership +from ee.models.rbac.organization_resource_access import OrganizationResourceAccess +from ee.models.rbac.role import Role, RoleMembership from posthog.models.feature_flag import FeatureFlag from posthog.models.organization import OrganizationMembership diff --git a/ee/api/test/test_feature_flag_role_access.py b/ee/api/test/test_feature_flag_role_access.py index 3cd4e947d90c9..d73c1c7384493 100644 --- a/ee/api/test/test_feature_flag_role_access.py +++ b/ee/api/test/test_feature_flag_role_access.py @@ -2,8 +2,8 @@ from ee.api.test.base import APILicensedTest from ee.models.feature_flag_role_access import FeatureFlagRoleAccess -from ee.models.organization_resource_access import OrganizationResourceAccess -from ee.models.role import Role +from ee.models.rbac.organization_resource_access import OrganizationResourceAccess +from ee.models.rbac.role import Role from posthog.models.feature_flag import FeatureFlag from posthog.models.organization import OrganizationMembership from posthog.models.user import User diff --git a/ee/api/test/test_organization_resource_access.py b/ee/api/test/test_organization_resource_access.py index 9123214a092db..98206fe519f44 100644 --- a/ee/api/test/test_organization_resource_access.py +++ b/ee/api/test/test_organization_resource_access.py @@ -2,7 +2,7 @@ from rest_framework import status from ee.api.test.base import APILicensedTest -from ee.models.organization_resource_access import OrganizationResourceAccess +from ee.models.rbac.organization_resource_access import OrganizationResourceAccess from posthog.models.organization import Organization, OrganizationMembership from posthog.test.base import QueryMatchingTest, snapshot_postgres_queries, FuzzyInt diff --git a/ee/api/test/test_role.py b/ee/api/test/test_role.py index 1a3068ff4cf4f..96503162d5fe9 100644 --- a/ee/api/test/test_role.py +++ b/ee/api/test/test_role.py @@ -2,8 +2,8 @@ from rest_framework import status from ee.api.test.base import APILicensedTest -from ee.models.organization_resource_access import OrganizationResourceAccess -from ee.models.role import Role +from ee.models.rbac.organization_resource_access import OrganizationResourceAccess +from ee.models.rbac.role import Role from posthog.models.organization import Organization, OrganizationMembership diff --git a/ee/api/test/test_role_membership.py b/ee/api/test/test_role_membership.py index f89796d9b7c4f..c3e67cf0514d2 100644 --- a/ee/api/test/test_role_membership.py +++ b/ee/api/test/test_role_membership.py @@ -1,7 +1,7 @@ from rest_framework import status from ee.api.test.base import APILicensedTest -from ee.models.role import Role, RoleMembership +from ee.models.rbac.role import Role, RoleMembership from posthog.models.organization import Organization, OrganizationMembership from posthog.models.user import User diff --git a/ee/models/__init__.py b/ee/models/__init__.py index fd87f76bd54eb..ff5a8fe2dff40 100644 --- a/ee/models/__init__.py +++ b/ee/models/__init__.py @@ -5,7 +5,7 @@ from .hook import Hook from .license import License from .property_definition import EnterprisePropertyDefinition -from .role import Role, RoleMembership +from .rbac.role import Role, RoleMembership __all__ = [ "EnterpriseEventDefinition", diff --git a/ee/models/organization_resource_access.py b/ee/models/rbac/organization_resource_access.py similarity index 95% rename from ee/models/organization_resource_access.py rename to ee/models/rbac/organization_resource_access.py index 924b3e9db2855..de4c86d95a8bc 100644 --- a/ee/models/organization_resource_access.py +++ b/ee/models/rbac/organization_resource_access.py @@ -2,6 +2,8 @@ from posthog.models.organization import Organization +# NOTE: This will be deprecated in favour of the AccessControl model + class OrganizationResourceAccess(models.Model): class AccessLevel(models.IntegerChoices): diff --git a/ee/models/role.py b/ee/models/rbac/role.py similarity index 95% rename from ee/models/role.py rename to ee/models/rbac/role.py index f37170818dbc3..97201835adb1a 100644 --- a/ee/models/role.py +++ b/ee/models/rbac/role.py @@ -1,6 +1,6 @@ from django.db import models -from ee.models.organization_resource_access import OrganizationResourceAccess +from ee.models.rbac.organization_resource_access import OrganizationResourceAccess from posthog.models.utils import UUIDModel diff --git a/ee/urls.py b/ee/urls.py index f0cf168acffb0..7c722bc31852f 100644 --- a/ee/urls.py +++ b/ee/urls.py @@ -6,6 +6,7 @@ from django.urls.conf import path from ee.api import integration +from .api.rbac import organization_resource_access, role from .api import ( authentication, @@ -15,8 +16,6 @@ feature_flag_role_access, hooks, license, - organization_resource_access, - role, sentry_stats, subscription, ) @@ -49,6 +48,7 @@ def extend_api_router() -> None: "organization_role_memberships", ["organization_id", "role_id"], ) + # Start: routes to be deprecated project_feature_flags_router.register( r"role_access", feature_flag_role_access.FeatureFlagRoleAccessViewSet, @@ -61,6 +61,7 @@ def extend_api_router() -> None: "organization_resource_access", ["organization_id"], ) + # End: routes to be deprecated register_grandfathered_environment_nested_viewset(r"hooks", hooks.HookViewSet, "environment_hooks", ["team_id"]) register_grandfathered_environment_nested_viewset( r"explicit_members", diff --git a/frontend/src/lib/constants.tsx b/frontend/src/lib/constants.tsx index 3d563ed32d7da..1ba86ab79c36b 100644 --- a/frontend/src/lib/constants.tsx +++ b/frontend/src/lib/constants.tsx @@ -220,6 +220,7 @@ export const FEATURE_FLAGS = { LEGACY_ACTION_WEBHOOKS: 'legacy-action-webhooks', // owner: @mariusandra #team-cdp SESSION_REPLAY_URL_TRIGGER: 'session-replay-url-trigger', // owner: @richard-better #team-replay REPLAY_TEMPLATES: 'replay-templates', // owner: @raquelmsmith #team-replay + ROLE_BASED_ACCESS_CONTROL: 'role-based-access-control', // owner: @zach EXPERIMENTS_HOLDOUTS: 'experiments-holdouts', // owner: @jurajmajerik #team-experiments MESSAGING: 'messaging', // owner @mariusandra #team-cdp SESSION_REPLAY_URL_BLOCKLIST: 'session-replay-url-blocklist', // owner: @richard-better #team-replay diff --git a/frontend/src/scenes/settings/user/personalAPIKeysLogic.tsx b/frontend/src/scenes/settings/user/personalAPIKeysLogic.tsx index e4f78f929def5..be47278635896 100644 --- a/frontend/src/scenes/settings/user/personalAPIKeysLogic.tsx +++ b/frontend/src/scenes/settings/user/personalAPIKeysLogic.tsx @@ -9,7 +9,7 @@ import { lemonToast } from 'lib/lemon-ui/LemonToast/LemonToast' import { urls } from 'scenes/urls' import { userLogic } from 'scenes/userLogic' -import { OrganizationBasicType, PersonalAPIKeyType, TeamBasicType } from '~/types' +import { APIScopeObject, OrganizationBasicType, PersonalAPIKeyType, TeamBasicType } from '~/types' import type { personalAPIKeysLogicType } from './personalAPIKeysLogicType' @@ -32,7 +32,7 @@ export const API_KEY_SCOPE_PRESETS = [ ] export type APIScope = { - key: string + key: APIScopeObject info?: string | JSX.Element disabledActions?: ('read' | 'write')[] disabledWhenProjectScoped?: boolean diff --git a/frontend/src/types.ts b/frontend/src/types.ts index 6b78307b81774..eb839f5252bcd 100644 --- a/frontend/src/types.ts +++ b/frontend/src/types.ts @@ -3821,6 +3821,37 @@ export interface RoleMemberType { user_uuid: string } +export type APIScopeObject = + | 'action' + | 'activity_log' + | 'annotation' + | 'batch_export' + | 'cohort' + | 'dashboard' + | 'dashboard_template' + | 'early_access_feature' + | 'event_definition' + | 'experiment' + | 'export' + | 'feature_flag' + | 'group' + | 'insight' + | 'query' + | 'notebook' + | 'organization' + | 'organization_member' + | 'person' + | 'plugin' + | 'project' + | 'property_definition' + | 'session_recording' + | 'session_recording_playlist' + | 'sharing_configuration' + | 'subscription' + | 'survey' + | 'user' + | 'webhook' + export interface OrganizationResourcePermissionType { id: string resource: Resource diff --git a/posthog/api/personal_api_key.py b/posthog/api/personal_api_key.py index 23f6d531693a0..355d6cc1c189a 100644 --- a/posthog/api/personal_api_key.py +++ b/posthog/api/personal_api_key.py @@ -5,7 +5,8 @@ from rest_framework.permissions import IsAuthenticated from posthog.models import PersonalAPIKey, User -from posthog.models.personal_api_key import API_SCOPE_ACTIONS, API_SCOPE_OBJECTS, hash_key_value, mask_key_value +from posthog.models.personal_api_key import hash_key_value, mask_key_value +from posthog.models.scopes import API_SCOPE_ACTIONS, API_SCOPE_OBJECTS from posthog.models.team.team import Team from posthog.models.utils import generate_random_token_personal from posthog.permissions import TimeSensitiveActionPermission diff --git a/posthog/api/project.py b/posthog/api/project.py index 8efca11b21968..c740dc330801a 100644 --- a/posthog/api/project.py +++ b/posthog/api/project.py @@ -30,7 +30,7 @@ from posthog.models.async_deletion import AsyncDeletion, DeletionType from posthog.models.group_type_mapping import GroupTypeMapping from posthog.models.organization import OrganizationMembership -from posthog.models.personal_api_key import APIScopeObjectOrNotSupported +from posthog.models.scopes import APIScopeObjectOrNotSupported from posthog.models.product_intent.product_intent import ProductIntent from posthog.models.project import Project from posthog.models.signals import mute_selected_signals diff --git a/posthog/api/routing.py b/posthog/api/routing.py index 9ff2fede76449..084ddcc94c3ae 100644 --- a/posthog/api/routing.py +++ b/posthog/api/routing.py @@ -18,7 +18,7 @@ SharingAccessTokenAuthentication, ) from posthog.models.organization import Organization -from posthog.models.personal_api_key import APIScopeObjectOrNotSupported +from posthog.models.scopes import APIScopeObjectOrNotSupported from posthog.models.project import Project from posthog.models.team import Team from posthog.models.user import User diff --git a/posthog/api/team.py b/posthog/api/team.py index 148471919cbc0..88b7f5e28b5ec 100644 --- a/posthog/api/team.py +++ b/posthog/api/team.py @@ -28,7 +28,7 @@ from posthog.models.async_deletion import AsyncDeletion, DeletionType from posthog.models.group_type_mapping import GroupTypeMapping from posthog.models.organization import OrganizationMembership -from posthog.models.personal_api_key import APIScopeObjectOrNotSupported +from posthog.models.scopes import APIScopeObjectOrNotSupported from posthog.models.project import Project from posthog.models.signals import mute_selected_signals from posthog.models.team.util import delete_batch_exports, delete_bulky_postgres_data diff --git a/posthog/api/test/__snapshots__/test_api_docs.ambr b/posthog/api/test/__snapshots__/test_api_docs.ambr index 6ef31c6530176..2abd070a74e07 100644 --- a/posthog/api/test/__snapshots__/test_api_docs.ambr +++ b/posthog/api/test/__snapshots__/test_api_docs.ambr @@ -70,9 +70,9 @@ '/home/runner/work/posthog/posthog/posthog/api/project.py: Warning [ProjectViewSet > ProjectBackwardCompatSerializer]: unable to resolve type hint for function "get_product_intents". Consider using a type hint or @extend_schema_field. Defaulting to string.', '/home/runner/work/posthog/posthog/posthog/api/proxy_record.py: Warning [ProxyRecordViewset]: could not derive type of path parameter "organization_id" because it is untyped and obtaining queryset from the viewset failed. Consider adding a type to the path (e.g. ) or annotating the parameter type with @extend_schema. Defaulting to "string".', '/home/runner/work/posthog/posthog/posthog/api/proxy_record.py: Warning [ProxyRecordViewset]: could not derive type of path parameter "id" because it is untyped and obtaining queryset from the viewset failed. Consider adding a type to the path (e.g. ) or annotating the parameter type with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/ee/api/role.py: Warning [RoleViewSet > RoleSerializer]: unable to resolve type hint for function "get_members". Consider using a type hint or @extend_schema_field. Defaulting to string.', - '/home/runner/work/posthog/posthog/ee/api/role.py: Warning [RoleViewSet > RoleSerializer]: unable to resolve type hint for function "get_associated_flags". Consider using a type hint or @extend_schema_field. Defaulting to string.', - '/home/runner/work/posthog/posthog/ee/api/role.py: Warning [RoleMembershipViewSet]: could not derive type of path parameter "organization_id" because model "ee.models.role.RoleMembership" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/ee/api/rbac/role.py: Warning [RoleViewSet > RoleSerializer]: unable to resolve type hint for function "get_members". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/ee/api/rbac/role.py: Warning [RoleViewSet > RoleSerializer]: unable to resolve type hint for function "get_associated_flags". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/ee/api/rbac/role.py: Warning [RoleMembershipViewSet]: could not derive type of path parameter "organization_id" because model "ee.models.rbac.role.RoleMembership" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', '/home/runner/work/posthog/posthog/posthog/api/action.py: Warning [ActionViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.action.action.Action" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', '/home/runner/work/posthog/posthog/posthog/api/action.py: Warning [ActionViewSet > ActionSerializer]: unable to resolve type hint for function "get_creation_context". Consider using a type hint or @extend_schema_field. Defaulting to string.', '/home/runner/work/posthog/posthog/posthog/api/activity_log.py: Warning [ActivityLogViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.activity_logging.activity_log.ActivityLog" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', diff --git a/posthog/api/test/test_organization_feature_flag.py b/posthog/api/test/test_organization_feature_flag.py index 83550c689d5ae..65c43575f9b7e 100644 --- a/posthog/api/test/test_organization_feature_flag.py +++ b/posthog/api/test/test_organization_feature_flag.py @@ -3,7 +3,7 @@ from rest_framework import status -from ee.models.organization_resource_access import OrganizationResourceAccess +from ee.models.rbac.organization_resource_access import OrganizationResourceAccess from posthog.api.dashboards.dashboard import Dashboard from posthog.constants import AvailableFeature from posthog.models import FeatureFlag diff --git a/posthog/models/feature_flag/permissions.py b/posthog/models/feature_flag/permissions.py index 8f766b4fccc60..d2b0bb858a403 100644 --- a/posthog/models/feature_flag/permissions.py +++ b/posthog/models/feature_flag/permissions.py @@ -6,7 +6,7 @@ def can_user_edit_feature_flag(request, feature_flag): # self hosted check for enterprise models that may not exist try: from ee.models.feature_flag_role_access import FeatureFlagRoleAccess - from ee.models.organization_resource_access import OrganizationResourceAccess + from ee.models.rbac.organization_resource_access import OrganizationResourceAccess except: return True else: diff --git a/posthog/models/personal_api_key.py b/posthog/models/personal_api_key.py index ea886b55757c6..cac5adefbc65d 100644 --- a/posthog/models/personal_api_key.py +++ b/posthog/models/personal_api_key.py @@ -1,4 +1,4 @@ -from typing import Optional, Literal, get_args +from typing import Optional, Literal import hashlib from django.contrib.auth.hashers import PBKDF2PasswordHasher @@ -66,56 +66,3 @@ class PersonalAPIKey(models.Model): null=True, blank=True, ) - - -## API Scopes -# These are the scopes that are used to define the permissions of the API tokens. -# Not every model needs a scope - it should more be for top-level things -# Typically each object should have `read` and `write` scopes, but some objects may have more specific scopes - -# WARNING: Make sure to keep in sync with the frontend! -APIScopeObject = Literal[ - "action", - "activity_log", - "annotation", - "batch_export", - "cohort", - "dashboard", - "dashboard_template", - "early_access_feature", - "event_definition", - "experiment", - "export", - "feature_flag", - "group", - "insight", - "query", # Covers query and events endpoints - "notebook", - "organization", - "organization_member", - "person", - "plugin", - "project", - "property_definition", - "session_recording", - "session_recording_playlist", - "sharing_configuration", - "subscription", - "survey", - "user", - "webhook", -] - -APIScopeActions = Literal[ - "read", - "write", -] - -APIScopeObjectOrNotSupported = Literal[ - APIScopeObject, - "INTERNAL", -] - - -API_SCOPE_OBJECTS: tuple[APIScopeObject, ...] = get_args(APIScopeObject) -API_SCOPE_ACTIONS: tuple[APIScopeActions, ...] = get_args(APIScopeActions) diff --git a/posthog/models/scopes.py b/posthog/models/scopes.py new file mode 100644 index 0000000000000..2bd0d48b405e5 --- /dev/null +++ b/posthog/models/scopes.py @@ -0,0 +1,60 @@ +## API Scopes +# These are the scopes that are used to define the permissions of the API tokens. +# Not every model needs a scope - it should more be for top-level things +# Typically each object should have `read` and `write` scopes, but some objects may have more specific scopes + +# WARNING: Make sure to keep in sync with the frontend! +from typing import Literal, get_args + + +## API Scopes +# These are the scopes that are used to define the permissions of the API tokens. +# Not every model needs a scope - it should more be for top-level things +# Typically each object should have `read` and `write` scopes, but some objects may have more specific scopes + +# WARNING: Make sure to keep in sync with the frontend! +APIScopeObject = Literal[ + "action", + "activity_log", + "annotation", + "batch_export", + "cohort", + "dashboard", + "dashboard_template", + "early_access_feature", + "event_definition", + "experiment", + "export", + "feature_flag", + "group", + "insight", + "query", # Covers query and events endpoints + "notebook", + "organization", + "organization_member", + "person", + "plugin", + "project", + "property_definition", + "session_recording", + "session_recording_playlist", + "sharing_configuration", + "subscription", + "survey", + "user", + "webhook", +] + +APIScopeActions = Literal[ + "read", + "write", +] + +APIScopeObjectOrNotSupported = Literal[ + APIScopeObject, + "INTERNAL", +] + + +API_SCOPE_OBJECTS: tuple[APIScopeObject, ...] = get_args(APIScopeObject) +API_SCOPE_ACTIONS: tuple[APIScopeActions, ...] = get_args(APIScopeActions) diff --git a/posthog/permissions.py b/posthog/permissions.py index 889832c13baa7..6de160e099567 100644 --- a/posthog/permissions.py +++ b/posthog/permissions.py @@ -19,7 +19,7 @@ from posthog.cloud_utils import is_cloud from posthog.exceptions import EnterpriseFeatureException from posthog.models import Organization, OrganizationMembership, Team, User -from posthog.models.personal_api_key import APIScopeObjectOrNotSupported +from posthog.models.scopes import APIScopeObjectOrNotSupported from posthog.utils import get_can_create_org CREATE_METHODS = ["POST", "PUT"] From 13f48d74d07e8e925f73f7e0c5ae59091372e64f Mon Sep 17 00:00:00 2001 From: Phani Raj Date: Tue, 29 Oct 2024 17:05:25 -0500 Subject: [PATCH 02/22] fix(Surveys): Allow Personal API Keys to read responses_count for surveys (#25879) This PR fixes the api endpoint for responses_count to accept a person API token with the survey:read scope. Reported by a user on zendesk --- posthog/api/survey.py | 2 +- .../api/test/__snapshots__/test_api_docs.ambr | 2 +- posthog/api/test/test_survey.py | 36 ++++ .../test/__snapshots__/test_trends.ambr | 204 +++--------------- 4 files changed, 70 insertions(+), 174 deletions(-) diff --git a/posthog/api/survey.py b/posthog/api/survey.py index ea894a7dd30c0..4864612c2b438 100644 --- a/posthog/api/survey.py +++ b/posthog/api/survey.py @@ -597,7 +597,7 @@ def destroy(self, request: Request, *args: Any, **kwargs: Any) -> Response: return super().destroy(request, *args, **kwargs) - @action(methods=["GET"], detail=False) + @action(methods=["GET"], detail=False, required_scopes=["survey:read"]) def responses_count(self, request: request.Request, **kwargs): earliest_survey_start_date = Survey.objects.filter(team_id=self.team_id).aggregate(Min("start_date"))[ "start_date__min" diff --git a/posthog/api/test/__snapshots__/test_api_docs.ambr b/posthog/api/test/__snapshots__/test_api_docs.ambr index 2abd070a74e07..9221776ff38d1 100644 --- a/posthog/api/test/__snapshots__/test_api_docs.ambr +++ b/posthog/api/test/__snapshots__/test_api_docs.ambr @@ -97,8 +97,8 @@ '/home/runner/work/posthog/posthog/posthog/api/survey.py: Warning [SurveyViewSet > SurveySerializer]: unable to resolve type hint for function "get_conditions". Consider using a type hint or @extend_schema_field. Defaulting to string.', '/home/runner/work/posthog/posthog/posthog/api/web_experiment.py: Warning [WebExperimentViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.web_experiment.WebExperiment" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', 'Warning: encountered multiple names for the same choice set (HrefMatchingEnum). This may be unwanted even though the generated schema is technically correct. Add an entry to ENUM_NAME_OVERRIDES to fix the naming.', - 'Warning: enum naming encountered a non-optimally resolvable collision for fields named "kind". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Kind069Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.', 'Warning: enum naming encountered a non-optimally resolvable collision for fields named "kind". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "KindCfaEnum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.', + 'Warning: enum naming encountered a non-optimally resolvable collision for fields named "kind". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Kind069Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.', 'Warning: enum naming encountered a non-optimally resolvable collision for fields named "type". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "TypeF73Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.', 'Warning: encountered multiple names for the same choice set (EffectivePrivilegeLevelEnum). This may be unwanted even though the generated schema is technically correct. Add an entry to ENUM_NAME_OVERRIDES to fix the naming.', 'Warning: encountered multiple names for the same choice set (MembershipLevelEnum). This may be unwanted even though the generated schema is technically correct. Add an entry to ENUM_NAME_OVERRIDES to fix the naming.', diff --git a/posthog/api/test/test_survey.py b/posthog/api/test/test_survey.py index c6de95a44702e..c79ab601b3369 100644 --- a/posthog/api/test/test_survey.py +++ b/posthog/api/test/test_survey.py @@ -11,6 +11,7 @@ from rest_framework import status from posthog.api.survey import nh3_clean_with_allow_list +from posthog.api.test.test_personal_api_keys import PersonalAPIKeysBaseTest from posthog.constants import AvailableFeature from posthog.models import Action, FeatureFlag, Team from posthog.models.cohort.cohort import Cohort @@ -2783,6 +2784,41 @@ def test_list_surveys_excludes_description(self): assert surveys[1]["name"] == "Survey 2" +class TestSurveyAPITokens(PersonalAPIKeysBaseTest, APIBaseTest): + def setUp(self): + super().setUp() + self.key.scopes = ["survey:read"] + self.key.save() + + @freeze_time("2024-05-01 14:40:09") + def test_responses_count_works_with_survey_read(self): + survey_counts = { + "d63bb580-01af-4819-aae5-edcf7ef2044f": 3, + "fe7c4b62-8fc9-401e-b483-e4ff98fd13d5": 6, + "daed7689-d498-49fe-936f-e85554351b6c": 100, + } + + earliest_survey = Survey.objects.create(team_id=self.team.id) + earliest_survey.start_date = datetime.now() - timedelta(days=101) + earliest_survey.save() + + for survey_id, count in survey_counts.items(): + for _ in range(count): + _create_event( + event="survey sent", + team=self.team, + distinct_id=self.user.id, + properties={"$survey_id": survey_id}, + timestamp=datetime.now() - timedelta(days=count), + ) + + response = self._do_request(f"/api/projects/{self.team.id}/surveys/responses_count") + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json() + self.assertEqual(data, survey_counts) + + class TestResponsesCount(ClickhouseTestMixin, APIBaseTest): @snapshot_clickhouse_queries @freeze_time("2024-05-01 14:40:09") diff --git a/posthog/hogql_queries/insights/trends/test/__snapshots__/test_trends.ambr b/posthog/hogql_queries/insights/trends/test/__snapshots__/test_trends.ambr index 4ae57feb8cb96..6027f7ca7bb42 100644 --- a/posthog/hogql_queries/insights/trends/test/__snapshots__/test_trends.ambr +++ b/posthog/hogql_queries/insights/trends/test/__snapshots__/test_trends.ambr @@ -851,49 +851,14 @@ # --- # name: TestTrends.test_dau_with_breakdown_filtering_with_sampling.1 ''' - SELECT groupArray(1)(date)[1] AS date, - arrayFold((acc, x) -> arrayMap(i -> plus(acc[i], x[i]), range(1, plus(length(date), 1))), groupArray(ifNull(total, 0)), arrayWithConstant(length(date), reinterpretAsFloat64(0))) AS total, - if(ifNull(ifNull(greaterOrEquals(row_number, 25), 0), 0), '$$_posthog_breakdown_other_$$', breakdown_value) AS breakdown_value - FROM - (SELECT arrayMap(number -> plus(toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2019-12-28 00:00:00', 6, 'UTC'))), toIntervalDay(number)), range(0, plus(coalesce(dateDiff('day', toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2019-12-28 00:00:00', 6, 'UTC'))), toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-04 23:59:59', 6, 'UTC'))))), 1))) AS date, - arrayMap(_match_date -> arraySum(arraySlice(groupArray(ifNull(count, 0)), indexOf(groupArray(day_start) AS _days_for_count, _match_date) AS _index, plus(minus(arrayLastIndex(x -> ifNull(equals(x, _match_date), isNull(x) - and isNull(_match_date)), _days_for_count), _index), 1))), date) AS total, - breakdown_value AS breakdown_value, - rowNumberInAllBlocks() AS row_number - FROM - (SELECT sum(total) AS count, - day_start AS day_start, - breakdown_value AS breakdown_value - FROM - (SELECT count(DISTINCT if(not(empty(e__override.distinct_id)), e__override.person_id, e.person_id)) AS total, - toStartOfDay(toTimeZone(e.timestamp, 'UTC')) AS day_start, - ifNull(nullIf(toString(replaceRegexpAll(nullIf(nullIf(JSONExtractRaw(e.properties, '$some_property'), ''), 'null'), '^"|"$', '')), ''), '$$_posthog_breakdown_null_$$') AS breakdown_value - FROM events AS e SAMPLE 1.0 - LEFT OUTER JOIN - (SELECT argMax(person_distinct_id_overrides.person_id, person_distinct_id_overrides.version) AS person_id, - person_distinct_id_overrides.distinct_id AS distinct_id - FROM person_distinct_id_overrides - WHERE equals(person_distinct_id_overrides.team_id, 2) - GROUP BY person_distinct_id_overrides.distinct_id - HAVING ifNull(equals(argMax(person_distinct_id_overrides.is_deleted, person_distinct_id_overrides.version), 0), 0) SETTINGS optimize_aggregation_in_order=1) AS e__override ON equals(e.distinct_id, e__override.distinct_id) - WHERE and(equals(e.team_id, 2), greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2019-12-28 00:00:00', 6, 'UTC')))), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-04 23:59:59', 6, 'UTC'))), equals(e.event, 'sign up')) - GROUP BY day_start, - breakdown_value) - GROUP BY day_start, - breakdown_value - ORDER BY day_start ASC, breakdown_value ASC) - GROUP BY breakdown_value - ORDER BY if(ifNull(equals(breakdown_value, '$$_posthog_breakdown_other_$$'), 0), 2, if(ifNull(equals(breakdown_value, '$$_posthog_breakdown_null_$$'), 0), 1, 0)) ASC, arraySum(total) DESC, breakdown_value ASC) - WHERE isNotNull(breakdown_value) - GROUP BY breakdown_value - ORDER BY if(ifNull(equals(breakdown_value, '$$_posthog_breakdown_other_$$'), 0), 2, if(ifNull(equals(breakdown_value, '$$_posthog_breakdown_null_$$'), 0), 1, 0)) ASC, arraySum(total) DESC, breakdown_value ASC - LIMIT 50000 SETTINGS readonly=2, - max_execution_time=60, - allow_experimental_object_type=1, - format_csv_allow_double_quotes=0, - max_ast_elements=4000000, - max_expanded_ast_elements=4000000, - max_bytes_before_external_group_by=0 + /* celery:posthog.tasks.tasks.sync_insight_caching_state */ + SELECT team_id, + date_diff('second', max(timestamp), now()) AS age + FROM events + WHERE timestamp > date_sub(DAY, 3, now()) + AND timestamp < now() + GROUP BY team_id + ORDER BY age; ''' # --- # name: TestTrends.test_dau_with_breakdown_filtering_with_sampling.10 @@ -1110,143 +1075,38 @@ # --- # name: TestTrends.test_dau_with_breakdown_filtering_with_sampling.2 ''' - SELECT groupArray(1)(date)[1] AS date, - arrayFold((acc, x) -> arrayMap(i -> plus(acc[i], x[i]), range(1, plus(length(date), 1))), groupArray(ifNull(total, 0)), arrayWithConstant(length(date), reinterpretAsFloat64(0))) AS total, - if(ifNull(ifNull(greaterOrEquals(row_number, 25), 0), 0), '$$_posthog_breakdown_other_$$', breakdown_value) AS breakdown_value - FROM - (SELECT arrayMap(number -> plus(toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2019-12-28 00:00:00', 6, 'UTC'))), toIntervalDay(number)), range(0, plus(coalesce(dateDiff('day', toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2019-12-28 00:00:00', 6, 'UTC'))), toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-04 23:59:59', 6, 'UTC'))))), 1))) AS date, - arrayMap(_match_date -> arraySum(arraySlice(groupArray(ifNull(count, 0)), indexOf(groupArray(day_start) AS _days_for_count, _match_date) AS _index, plus(minus(arrayLastIndex(x -> ifNull(equals(x, _match_date), isNull(x) - and isNull(_match_date)), _days_for_count), _index), 1))), date) AS total, - breakdown_value AS breakdown_value, - rowNumberInAllBlocks() AS row_number - FROM - (SELECT sum(total) AS count, - day_start AS day_start, - breakdown_value AS breakdown_value - FROM - (SELECT count(DISTINCT if(not(empty(e__override.distinct_id)), e__override.person_id, e.person_id)) AS total, - toStartOfDay(toTimeZone(e.timestamp, 'UTC')) AS day_start, - ifNull(nullIf(toString(replaceRegexpAll(nullIf(nullIf(JSONExtractRaw(e.properties, '$some_property'), ''), 'null'), '^"|"$', '')), ''), '$$_posthog_breakdown_null_$$') AS breakdown_value - FROM events AS e SAMPLE 1.0 - LEFT OUTER JOIN - (SELECT argMax(person_distinct_id_overrides.person_id, person_distinct_id_overrides.version) AS person_id, - person_distinct_id_overrides.distinct_id AS distinct_id - FROM person_distinct_id_overrides - WHERE equals(person_distinct_id_overrides.team_id, 2) - GROUP BY person_distinct_id_overrides.distinct_id - HAVING ifNull(equals(argMax(person_distinct_id_overrides.is_deleted, person_distinct_id_overrides.version), 0), 0) SETTINGS optimize_aggregation_in_order=1) AS e__override ON equals(e.distinct_id, e__override.distinct_id) - WHERE and(equals(e.team_id, 2), greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2019-12-28 00:00:00', 6, 'UTC')))), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-04 23:59:59', 6, 'UTC'))), equals(e.event, 'sign up')) - GROUP BY day_start, - breakdown_value) - GROUP BY day_start, - breakdown_value - ORDER BY day_start ASC, breakdown_value ASC) - GROUP BY breakdown_value - ORDER BY if(ifNull(equals(breakdown_value, '$$_posthog_breakdown_other_$$'), 0), 2, if(ifNull(equals(breakdown_value, '$$_posthog_breakdown_null_$$'), 0), 1, 0)) ASC, arraySum(total) DESC, breakdown_value ASC) - WHERE isNotNull(breakdown_value) - GROUP BY breakdown_value - ORDER BY if(ifNull(equals(breakdown_value, '$$_posthog_breakdown_other_$$'), 0), 2, if(ifNull(equals(breakdown_value, '$$_posthog_breakdown_null_$$'), 0), 1, 0)) ASC, arraySum(total) DESC, breakdown_value ASC - LIMIT 50000 SETTINGS readonly=2, - max_execution_time=60, - allow_experimental_object_type=1, - format_csv_allow_double_quotes=0, - max_ast_elements=4000000, - max_expanded_ast_elements=4000000, - max_bytes_before_external_group_by=0 + /* celery:posthog.tasks.tasks.sync_insight_caching_state */ + SELECT team_id, + date_diff('second', max(timestamp), now()) AS age + FROM events + WHERE timestamp > date_sub(DAY, 3, now()) + AND timestamp < now() + GROUP BY team_id + ORDER BY age; ''' # --- # name: TestTrends.test_dau_with_breakdown_filtering_with_sampling.3 ''' - SELECT groupArray(1)(date)[1] AS date, - arrayFold((acc, x) -> arrayMap(i -> plus(acc[i], x[i]), range(1, plus(length(date), 1))), groupArray(ifNull(total, 0)), arrayWithConstant(length(date), reinterpretAsFloat64(0))) AS total, - arrayMap(i -> if(ifNull(ifNull(greaterOrEquals(row_number, 25), 0), 0), '$$_posthog_breakdown_other_$$', i), breakdown_value) AS breakdown_value - FROM - (SELECT arrayMap(number -> plus(toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2019-12-28 00:00:00', 6, 'UTC'))), toIntervalDay(number)), range(0, plus(coalesce(dateDiff('day', toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2019-12-28 00:00:00', 6, 'UTC'))), toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-04 23:59:59', 6, 'UTC'))))), 1))) AS date, - arrayMap(_match_date -> arraySum(arraySlice(groupArray(ifNull(count, 0)), indexOf(groupArray(day_start) AS _days_for_count, _match_date) AS _index, plus(minus(arrayLastIndex(x -> ifNull(equals(x, _match_date), isNull(x) - and isNull(_match_date)), _days_for_count), _index), 1))), date) AS total, - breakdown_value AS breakdown_value, - rowNumberInAllBlocks() AS row_number - FROM - (SELECT sum(total) AS count, - day_start AS day_start, - [ifNull(toString(breakdown_value_1), '$$_posthog_breakdown_null_$$')] AS breakdown_value - FROM - (SELECT count(DISTINCT if(not(empty(e__override.distinct_id)), e__override.person_id, e.person_id)) AS total, - toStartOfDay(toTimeZone(e.timestamp, 'UTC')) AS day_start, - ifNull(nullIf(toString(replaceRegexpAll(nullIf(nullIf(JSONExtractRaw(e.properties, '$some_property'), ''), 'null'), '^"|"$', '')), ''), '$$_posthog_breakdown_null_$$') AS breakdown_value_1 - FROM events AS e SAMPLE 1.0 - LEFT OUTER JOIN - (SELECT argMax(person_distinct_id_overrides.person_id, person_distinct_id_overrides.version) AS person_id, - person_distinct_id_overrides.distinct_id AS distinct_id - FROM person_distinct_id_overrides - WHERE equals(person_distinct_id_overrides.team_id, 2) - GROUP BY person_distinct_id_overrides.distinct_id - HAVING ifNull(equals(argMax(person_distinct_id_overrides.is_deleted, person_distinct_id_overrides.version), 0), 0) SETTINGS optimize_aggregation_in_order=1) AS e__override ON equals(e.distinct_id, e__override.distinct_id) - WHERE and(equals(e.team_id, 2), greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2019-12-28 00:00:00', 6, 'UTC')))), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-04 23:59:59', 6, 'UTC'))), equals(e.event, 'sign up')) - GROUP BY day_start, - breakdown_value_1) - GROUP BY day_start, - breakdown_value_1 - ORDER BY day_start ASC, breakdown_value ASC) - GROUP BY breakdown_value - ORDER BY if(has(breakdown_value, '$$_posthog_breakdown_other_$$'), 2, if(has(breakdown_value, '$$_posthog_breakdown_null_$$'), 1, 0)) ASC, arraySum(total) DESC, breakdown_value ASC) - WHERE arrayExists(x -> isNotNull(x), breakdown_value) - GROUP BY breakdown_value - ORDER BY if(has(breakdown_value, '$$_posthog_breakdown_other_$$'), 2, if(has(breakdown_value, '$$_posthog_breakdown_null_$$'), 1, 0)) ASC, arraySum(total) DESC, breakdown_value ASC - LIMIT 50000 SETTINGS readonly=2, - max_execution_time=60, - allow_experimental_object_type=1, - format_csv_allow_double_quotes=0, - max_ast_elements=4000000, - max_expanded_ast_elements=4000000, - max_bytes_before_external_group_by=0 + /* celery:posthog.tasks.tasks.sync_insight_caching_state */ + SELECT team_id, + date_diff('second', max(timestamp), now()) AS age + FROM events + WHERE timestamp > date_sub(DAY, 3, now()) + AND timestamp < now() + GROUP BY team_id + ORDER BY age; ''' # --- # name: TestTrends.test_dau_with_breakdown_filtering_with_sampling.4 ''' - SELECT groupArray(1)(date)[1] AS date, - arrayFold((acc, x) -> arrayMap(i -> plus(acc[i], x[i]), range(1, plus(length(date), 1))), groupArray(ifNull(total, 0)), arrayWithConstant(length(date), reinterpretAsFloat64(0))) AS total, - arrayMap(i -> if(ifNull(ifNull(greaterOrEquals(row_number, 25), 0), 0), '$$_posthog_breakdown_other_$$', i), breakdown_value) AS breakdown_value - FROM - (SELECT arrayMap(number -> plus(toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2019-12-28 00:00:00', 6, 'UTC'))), toIntervalDay(number)), range(0, plus(coalesce(dateDiff('day', toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2019-12-28 00:00:00', 6, 'UTC'))), toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-04 23:59:59', 6, 'UTC'))))), 1))) AS date, - arrayMap(_match_date -> arraySum(arraySlice(groupArray(ifNull(count, 0)), indexOf(groupArray(day_start) AS _days_for_count, _match_date) AS _index, plus(minus(arrayLastIndex(x -> ifNull(equals(x, _match_date), isNull(x) - and isNull(_match_date)), _days_for_count), _index), 1))), date) AS total, - breakdown_value AS breakdown_value, - rowNumberInAllBlocks() AS row_number - FROM - (SELECT sum(total) AS count, - day_start AS day_start, - [ifNull(toString(breakdown_value_1), '$$_posthog_breakdown_null_$$')] AS breakdown_value - FROM - (SELECT count(DISTINCT if(not(empty(e__override.distinct_id)), e__override.person_id, e.person_id)) AS total, - toStartOfDay(toTimeZone(e.timestamp, 'UTC')) AS day_start, - ifNull(nullIf(toString(replaceRegexpAll(nullIf(nullIf(JSONExtractRaw(e.properties, '$some_property'), ''), 'null'), '^"|"$', '')), ''), '$$_posthog_breakdown_null_$$') AS breakdown_value_1 - FROM events AS e SAMPLE 1.0 - LEFT OUTER JOIN - (SELECT argMax(person_distinct_id_overrides.person_id, person_distinct_id_overrides.version) AS person_id, - person_distinct_id_overrides.distinct_id AS distinct_id - FROM person_distinct_id_overrides - WHERE equals(person_distinct_id_overrides.team_id, 2) - GROUP BY person_distinct_id_overrides.distinct_id - HAVING ifNull(equals(argMax(person_distinct_id_overrides.is_deleted, person_distinct_id_overrides.version), 0), 0) SETTINGS optimize_aggregation_in_order=1) AS e__override ON equals(e.distinct_id, e__override.distinct_id) - WHERE and(equals(e.team_id, 2), greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2019-12-28 00:00:00', 6, 'UTC')))), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-04 23:59:59', 6, 'UTC'))), equals(e.event, 'sign up')) - GROUP BY day_start, - breakdown_value_1) - GROUP BY day_start, - breakdown_value_1 - ORDER BY day_start ASC, breakdown_value ASC) - GROUP BY breakdown_value - ORDER BY if(has(breakdown_value, '$$_posthog_breakdown_other_$$'), 2, if(has(breakdown_value, '$$_posthog_breakdown_null_$$'), 1, 0)) ASC, arraySum(total) DESC, breakdown_value ASC) - WHERE arrayExists(x -> isNotNull(x), breakdown_value) - GROUP BY breakdown_value - ORDER BY if(has(breakdown_value, '$$_posthog_breakdown_other_$$'), 2, if(has(breakdown_value, '$$_posthog_breakdown_null_$$'), 1, 0)) ASC, arraySum(total) DESC, breakdown_value ASC - LIMIT 50000 SETTINGS readonly=2, - max_execution_time=60, - allow_experimental_object_type=1, - format_csv_allow_double_quotes=0, - max_ast_elements=4000000, - max_expanded_ast_elements=4000000, - max_bytes_before_external_group_by=0 + /* celery:posthog.tasks.tasks.sync_insight_caching_state */ + SELECT team_id, + date_diff('second', max(timestamp), now()) AS age + FROM events + WHERE timestamp > date_sub(DAY, 3, now()) + AND timestamp < now() + GROUP BY team_id + ORDER BY age; ''' # --- # name: TestTrends.test_dau_with_breakdown_filtering_with_sampling.5 From bfa9c7bc7142f9ee5afb20ef97c97e683dd69f11 Mon Sep 17 00:00:00 2001 From: Robbie Date: Wed, 30 Oct 2024 10:14:30 +0000 Subject: [PATCH 03/22] fix(sessions): Limit the teams for which we ingest sessions v1 events (#25766) Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- ...create_sessions_v1_after_limiting_teams.py | 8 ++ .../test/__snapshots__/test_schema.ambr | 2 +- .../clickhouse/test/test_sessions_model.py | 53 +++++---- .../database/schema/test/test_sessions_v1.py | 78 ++++-------- ...ssion_attribution_explorer_query_runner.py | 29 ++--- .../web_analytics/test/test_web_overview.py | 38 ++---- .../test/test_web_stats_table.py | 112 +++++------------- posthog/models/sessions/sql.py | 30 ++++- 8 files changed, 143 insertions(+), 207 deletions(-) create mode 100644 posthog/clickhouse/migrations/0083_recreate_sessions_v1_after_limiting_teams.py diff --git a/posthog/clickhouse/migrations/0083_recreate_sessions_v1_after_limiting_teams.py b/posthog/clickhouse/migrations/0083_recreate_sessions_v1_after_limiting_teams.py new file mode 100644 index 0000000000000..d0da2eb158b6d --- /dev/null +++ b/posthog/clickhouse/migrations/0083_recreate_sessions_v1_after_limiting_teams.py @@ -0,0 +1,8 @@ +from posthog.clickhouse.client.migration_tools import run_sql_with_exceptions +from posthog.models.sessions.sql import DROP_SESSION_MATERIALIZED_VIEW_SQL, SESSIONS_TABLE_MV_SQL + +operations = [ + # drop the mv, and recreate it with the new part of the WHERE clause + run_sql_with_exceptions(DROP_SESSION_MATERIALIZED_VIEW_SQL()), + run_sql_with_exceptions(SESSIONS_TABLE_MV_SQL()), +] diff --git a/posthog/clickhouse/test/__snapshots__/test_schema.ambr b/posthog/clickhouse/test/__snapshots__/test_schema.ambr index bc5a623ed0cdc..1fc54f30fdc78 100644 --- a/posthog/clickhouse/test/__snapshots__/test_schema.ambr +++ b/posthog/clickhouse/test/__snapshots__/test_schema.ambr @@ -2160,7 +2160,7 @@ sumIf(1, event='$autocapture') as autocapture_count FROM posthog_test.sharded_events - WHERE `$session_id` IS NOT NULL AND `$session_id` != '' + WHERE `$session_id` IS NOT NULL AND `$session_id` != '' AND team_id IN (1, 2, 13610, 19279, 21173, 29929, 32050, 9910, 11775, 21129, 31490) GROUP BY `$session_id`, team_id diff --git a/posthog/clickhouse/test/test_sessions_model.py b/posthog/clickhouse/test/test_sessions_model.py index 0e3631e0ab3cd..0042456a03d95 100644 --- a/posthog/clickhouse/test/test_sessions_model.py +++ b/posthog/clickhouse/test/test_sessions_model.py @@ -1,8 +1,10 @@ from posthog.clickhouse.client import sync_execute, query_with_columns +from posthog.models import Team from posthog.test.base import ( _create_event, ClickhouseTestMixin, BaseTest, + ClickhouseDestroyTablesMixin, ) distinct_id_counter = 0 @@ -21,7 +23,12 @@ def create_session_id(): return f"s{session_id_counter}" -class TestSessionsModel(ClickhouseTestMixin, BaseTest): +# only certain team ids can insert events into this legacy sessions table, see sessions/sql.py for more info +TEAM_ID = 2 +TEAM = Team(id=TEAM_ID) + + +class TestSessionsModel(ClickhouseDestroyTablesMixin, ClickhouseTestMixin, BaseTest): def select_by_session_id(self, session_id): return query_with_columns( """ @@ -34,7 +41,7 @@ def select_by_session_id(self, session_id): """, { "session_id": session_id, - "team_id": self.team.id, + "team_id": TEAM_ID, }, ) @@ -42,7 +49,7 @@ def test_it_creates_session_when_creating_event(self): distinct_id = create_distinct_id() session_id = create_session_id() _create_event( - team=self.team, + team=TEAM, event="$pageview", distinct_id=distinct_id, properties={"$current_url": "/", "$session_id": session_id}, @@ -60,7 +67,7 @@ def test_it_creates_session_when_creating_event(self): """, { "distinct_id": distinct_id, - "team_id": self.team.id, + "team_id": TEAM_ID, }, ) @@ -72,14 +79,14 @@ def test_handles_different_distinct_id_across_same_session(self): session_id = create_session_id() _create_event( - team=self.team, + team=TEAM, event="$pageview", distinct_id=distinct_id1, properties={"$session_id": session_id}, timestamp="2024-03-08", ) _create_event( - team=self.team, + team=TEAM, event="$pageview", distinct_id=distinct_id2, properties={"$session_id": session_id}, @@ -96,28 +103,28 @@ def test_handles_entry_and_exit_urls(self): session_id = create_session_id() _create_event( - team=self.team, + team=TEAM, event="$pageview", distinct_id=distinct_id, properties={"$current_url": "/entry", "$session_id": session_id}, timestamp="2024-03-08:01", ) _create_event( - team=self.team, + team=TEAM, event="$pageview", distinct_id=distinct_id, properties={"$current_url": "/middle", "$session_id": session_id}, timestamp="2024-03-08:02", ) _create_event( - team=self.team, + team=TEAM, event="$pageview", distinct_id=distinct_id, properties={"$current_url": "/middle", "$session_id": session_id}, timestamp="2024-03-08:03", ) _create_event( - team=self.team, + team=TEAM, event="$pageview", distinct_id=distinct_id, properties={"$current_url": "/exit", "$session_id": session_id}, @@ -136,14 +143,14 @@ def test_handles_initial_utm_properties(self): session_id = create_session_id() _create_event( - team=self.team, + team=TEAM, event="$pageview", distinct_id=distinct_id, properties={"$session_id": session_id, "utm_source": "source"}, timestamp="2024-03-08", ) _create_event( - team=self.team, + team=TEAM, event="$pageview", distinct_id=distinct_id, properties={"$session_id": session_id, "utm_source": "other_source"}, @@ -159,35 +166,35 @@ def test_counts_pageviews_autocaptures_and_events(self): session_id = create_session_id() _create_event( - team=self.team, + team=TEAM, event="$pageview", distinct_id=distinct_id, properties={"$session_id": session_id}, timestamp="2024-03-08", ) _create_event( - team=self.team, + team=TEAM, event="$autocapture", distinct_id=distinct_id, properties={"$session_id": session_id}, timestamp="2024-03-08", ) _create_event( - team=self.team, + team=TEAM, event="$autocapture", distinct_id=distinct_id, properties={"$session_id": session_id}, timestamp="2024-03-08", ) _create_event( - team=self.team, + team=TEAM, event="other event", distinct_id=distinct_id, properties={"$session_id": session_id}, timestamp="2024-03-08", ) _create_event( - team=self.team, + team=TEAM, event="$pageleave", distinct_id=distinct_id, properties={"$session_id": session_id}, @@ -209,14 +216,14 @@ def test_separates_sessions_across_same_user(self): session_id3 = create_session_id() _create_event( - team=self.team, + team=TEAM, event="$pageview", distinct_id=distinct_id, properties={"$session_id": session_id1}, timestamp="2024-03-08", ) _create_event( - team=self.team, + team=TEAM, event="$pageview", distinct_id=distinct_id, properties={"$session_id": session_id2}, @@ -235,7 +242,7 @@ def test_select_from_sessions(self): distinct_id = create_distinct_id() session_id = create_session_id() _create_event( - team=self.team, + team=TEAM, event="$pageview", distinct_id=distinct_id, properties={"$session_id": session_id}, @@ -260,7 +267,7 @@ def test_select_from_sessions(self): """, { "session_id": session_id, - "team_id": self.team.id, + "team_id": TEAM_ID, }, ) self.assertEqual(len(responses), 1) @@ -270,7 +277,7 @@ def test_select_from_sessions_mv(self): distinct_id = create_distinct_id() session_id = create_session_id() _create_event( - team=self.team, + team=TEAM, event="$pageview", distinct_id=distinct_id, properties={"$session_id": session_id}, @@ -295,7 +302,7 @@ def test_select_from_sessions_mv(self): """, { "session_id": session_id, - "team_id": self.team.id, + "team_id": TEAM_ID, }, ) self.assertEqual(len(responses), 1) diff --git a/posthog/hogql/database/schema/test/test_sessions_v1.py b/posthog/hogql/database/schema/test/test_sessions_v1.py index eefd04197deab..77f41fd2f6bbc 100644 --- a/posthog/hogql/database/schema/test/test_sessions_v1.py +++ b/posthog/hogql/database/schema/test/test_sessions_v1.py @@ -8,6 +8,7 @@ ) from posthog.hogql.parser import parse_select from posthog.hogql.query import execute_hogql_query +from posthog.models import Team from posthog.models.property_definition import PropertyType from posthog.models.utils import uuid7 from posthog.schema import HogQLQueryModifiers, BounceRatePageViewMode, SessionTableVersion @@ -15,16 +16,20 @@ APIBaseTest, ClickhouseTestMixin, _create_event, - _create_person, + ClickhouseDestroyTablesMixin, ) +# only certain team ids can insert events into this legacy sessions table, see sessions/sql.py for more info +TEAM_ID = 2 +TEAM = Team(id=TEAM_ID, pk=TEAM_ID) -class TestSessionsV1(ClickhouseTestMixin, APIBaseTest): + +class TestSessionsV1(ClickhouseDestroyTablesMixin, ClickhouseTestMixin, APIBaseTest): def __execute(self, query): modifiers = HogQLQueryModifiers(sessionTableVersion=SessionTableVersion.V1) return execute_hogql_query( query=query, - team=self.team, + team=TEAM, modifiers=modifiers, ) @@ -33,7 +38,7 @@ def test_select_star(self): _create_event( event="$pageview", - team=self.team, + team=TEAM, distinct_id="d1", properties={"$current_url": "https://example.com", "$session_id": session_id}, ) @@ -56,7 +61,7 @@ def test_select_event_sessions_star(self): _create_event( event="$pageview", - team=self.team, + team=TEAM, distinct_id="d1", properties={"$current_url": "https://example.com", "$session_id": session_id}, ) @@ -93,7 +98,7 @@ def test_channel_type(self): _create_event( event="$pageview", - team=self.team, + team=TEAM, distinct_id="d1", properties={"gad_source": "1", "$session_id": session_id}, ) @@ -116,7 +121,7 @@ def test_event_dot_session_dot_channel_type(self): _create_event( event="$pageview", - team=self.team, + team=TEAM, distinct_id="d1", properties={"gad_source": "1", "$session_id": session_id}, ) @@ -139,7 +144,7 @@ def test_events_session_dot_channel_type(self): _create_event( event="$pageview", - team=self.team, + team=TEAM, distinct_id="d1", properties={"gad_source": "1", "$session_id": session_id}, ) @@ -157,57 +162,26 @@ def test_events_session_dot_channel_type(self): "Paid Search", ) - def test_persons_and_sessions_on_events(self): - p1 = _create_person(distinct_ids=["d1"], team=self.team) - p2 = _create_person(distinct_ids=["d2"], team=self.team) - - s1 = "session_test_persons_and_sessions_on_events_1" - s2 = "session_test_persons_and_sessions_on_events_2" - - _create_event( - event="$pageview", - team=self.team, - distinct_id="d1", - properties={"$session_id": s1, "utm_source": "source1"}, - ) - _create_event( - event="$pageview", - team=self.team, - distinct_id="d2", - properties={"$session_id": s2, "utm_source": "source2"}, - ) - - response = self.__execute( - parse_select( - "select events.person_id, session.$entry_utm_source from events where $session_id = {session_id} or $session_id = {session_id2} order by 2 asc", - placeholders={"session_id": ast.Constant(value=s1), "session_id2": ast.Constant(value=s2)}, - ), - ) - - [row1, row2] = response.results or [] - self.assertEqual(row1, (p1.uuid, "source1")) - self.assertEqual(row2, (p2.uuid, "source2")) - @parameterized.expand([(BounceRatePageViewMode.UNIQ_URLS,), (BounceRatePageViewMode.COUNT_PAGEVIEWS,)]) def test_bounce_rate(self, bounceRatePageViewMode): # person with 2 different sessions _create_event( event="$pageview", - team=self.team, + team=TEAM, distinct_id="d1", properties={"$session_id": "s1a", "$current_url": "https://example.com/1"}, timestamp="2023-12-02", ) _create_event( event="$pageview", - team=self.team, + team=TEAM, distinct_id="d1", properties={"$session_id": "s1a", "$current_url": "https://example.com/2"}, timestamp="2023-12-03", ) _create_event( event="$pageview", - team=self.team, + team=TEAM, distinct_id="d1", properties={"$session_id": "s1b", "$current_url": "https://example.com/3"}, timestamp="2023-12-12", @@ -215,7 +189,7 @@ def test_bounce_rate(self, bounceRatePageViewMode): # session with 1 pageview _create_event( event="$pageview", - team=self.team, + team=TEAM, distinct_id="d2", properties={"$session_id": "s2", "$current_url": "https://example.com/4"}, timestamp="2023-12-11", @@ -223,14 +197,14 @@ def test_bounce_rate(self, bounceRatePageViewMode): # session with 1 pageview and 1 autocapture _create_event( event="$pageview", - team=self.team, + team=TEAM, distinct_id="d3", properties={"$session_id": "s3", "$current_url": "https://example.com/5"}, timestamp="2023-12-11", ) _create_event( event="$autocapture", - team=self.team, + team=TEAM, distinct_id="d3", properties={"$session_id": "s3", "$current_url": "https://example.com/5"}, timestamp="2023-12-11", @@ -238,14 +212,14 @@ def test_bounce_rate(self, bounceRatePageViewMode): # short session with a pageleave _create_event( event="$pageview", - team=self.team, + team=TEAM, distinct_id="d4", properties={"$session_id": "s4", "$current_url": "https://example.com/6"}, timestamp="2023-12-11T12:00:00", ) _create_event( event="$pageleave", - team=self.team, + team=TEAM, distinct_id="d4", properties={"$session_id": "s4", "$current_url": "https://example.com/6"}, timestamp="2023-12-11T12:00:01", @@ -253,14 +227,14 @@ def test_bounce_rate(self, bounceRatePageViewMode): # long session with a pageleave _create_event( event="$pageview", - team=self.team, + team=TEAM, distinct_id="d5", properties={"$session_id": "s5", "$current_url": "https://example.com/7"}, timestamp="2023-12-11T12:00:00", ) _create_event( event="$pageleave", - team=self.team, + team=TEAM, distinct_id="d5", properties={"$session_id": "s5", "$current_url": "https://example.com/7"}, timestamp="2023-12-11T12:00:11", @@ -269,7 +243,7 @@ def test_bounce_rate(self, bounceRatePageViewMode): parse_select( "select $is_bounce, session_id from sessions ORDER BY session_id", ), - self.team, + TEAM, modifiers=HogQLQueryModifiers( bounceRatePageViewMode=bounceRatePageViewMode, sessionTableVersion=SessionTableVersion.V1 ), @@ -291,7 +265,7 @@ def test_can_use_v1_and_v2_fields(self): _create_event( event="$pageview", - team=self.team, + team=TEAM, distinct_id="d1", properties={ "$current_url": "https://example.com/pathname", @@ -372,4 +346,4 @@ def test_entry_utm(self): def test_can_get_values_for_all(self): results = get_lazy_session_table_properties_v1(None) for prop in results: - get_lazy_session_table_values_v1(key=prop["id"], team=self.team, search_term=None) + get_lazy_session_table_values_v1(key=prop["id"], team=TEAM, search_term=None) diff --git a/posthog/hogql_queries/web_analytics/test/test_session_attribution_explorer_query_runner.py b/posthog/hogql_queries/web_analytics/test/test_session_attribution_explorer_query_runner.py index d285ff2aa25f3..06ba1ddfeabbe 100644 --- a/posthog/hogql_queries/web_analytics/test/test_session_attribution_explorer_query_runner.py +++ b/posthog/hogql_queries/web_analytics/test/test_session_attribution_explorer_query_runner.py @@ -1,6 +1,5 @@ from typing import Optional -from parameterized import parameterized from posthog.hogql.constants import LimitContext from posthog.hogql_queries.web_analytics.session_attribution_explorer_query_runner import ( @@ -80,7 +79,7 @@ def _run_session_attribution_query( self, date_from: Optional[str] = None, date_to: Optional[str] = None, - session_table_version: SessionTableVersion = SessionTableVersion.V1, + session_table_version: SessionTableVersion = SessionTableVersion.V2, group_by: Optional[list[SessionAttributionGroupBy]] = None, limit_context: Optional[LimitContext] = None, properties: Optional[list[SessionPropertyFilter]] = None, @@ -94,20 +93,14 @@ def _run_session_attribution_query( runner = SessionAttributionExplorerQueryRunner(team=self.team, query=query, limit_context=limit_context) return runner.calculate() - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_no_crash_when_no_data(self, session_table_version: SessionTableVersion): - results = self._run_session_attribution_query( - session_table_version=session_table_version, - ).results + def test_no_crash_when_no_data(self): + results = self._run_session_attribution_query().results assert results == [(0, [], [], [], [], [], [], [])] - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_group_by_nothing(self, session_table_version: SessionTableVersion): + def test_group_by_nothing(self): self._create_data() - results = self._run_session_attribution_query( - session_table_version=session_table_version, - ).results + results = self._run_session_attribution_query().results assert results == [ ( @@ -122,12 +115,10 @@ def test_group_by_nothing(self, session_table_version: SessionTableVersion): ) ] - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_group_by_initial_url(self, session_table_version: SessionTableVersion): + def test_group_by_initial_url(self): self._create_data() results = self._run_session_attribution_query( - session_table_version=session_table_version, group_by=[SessionAttributionGroupBy.INITIAL_URL], ).results @@ -164,12 +155,10 @@ def test_group_by_initial_url(self, session_table_version: SessionTableVersion): ), ] - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_group_channel_medium_source(self, session_table_version: SessionTableVersion): + def test_group_channel_medium_source(self): self._create_data() results = self._run_session_attribution_query( - session_table_version=session_table_version, group_by=[ SessionAttributionGroupBy.CHANNEL_TYPE, SessionAttributionGroupBy.MEDIUM, @@ -191,12 +180,10 @@ def test_group_channel_medium_source(self, session_table_version: SessionTableVe (1, "Referral", ["referring_domain2"], "source2", "medium2", ["campaign2"], [], ["http://example.com/2"]), ] - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_filters(self, session_table_version: SessionTableVersion): + def test_filters(self): self._create_data() results = self._run_session_attribution_query( - session_table_version=session_table_version, group_by=[ SessionAttributionGroupBy.CHANNEL_TYPE, SessionAttributionGroupBy.MEDIUM, diff --git a/posthog/hogql_queries/web_analytics/test/test_web_overview.py b/posthog/hogql_queries/web_analytics/test/test_web_overview.py index bc41d4d0a6785..3e9b570f57b9e 100644 --- a/posthog/hogql_queries/web_analytics/test/test_web_overview.py +++ b/posthog/hogql_queries/web_analytics/test/test_web_overview.py @@ -2,7 +2,6 @@ from unittest.mock import MagicMock, patch from freezegun import freeze_time -from parameterized import parameterized from posthog.clickhouse.client.execute import sync_execute from posthog.hogql.constants import LimitContext @@ -72,7 +71,7 @@ def _run_web_overview_query( self, date_from: str, date_to: str, - session_table_version: SessionTableVersion = SessionTableVersion.V1, + session_table_version: SessionTableVersion = SessionTableVersion.V2, compare: bool = True, limit_context: Optional[LimitContext] = None, filter_test_accounts: Optional[bool] = False, @@ -97,19 +96,16 @@ def _run_web_overview_query( runner = WebOverviewQueryRunner(team=self.team, query=query, limit_context=limit_context) return runner.calculate() - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_no_crash_when_no_data(self, session_table_version: SessionTableVersion): + def test_no_crash_when_no_data(self): results = self._run_web_overview_query( "2023-12-08", "2023-12-15", - session_table_version=session_table_version, ).results assert [item.key for item in results] == ["visitors", "views", "sessions", "session duration", "bounce rate"] results = self._run_web_overview_query( "2023-12-08", "2023-12-15", - session_table_version=session_table_version, includeLCPScore=True, ).results assert [item.key for item in results] == [ @@ -132,9 +128,7 @@ def test_no_crash_when_no_data(self, session_table_version: SessionTableVersion) } ], ) - results = self._run_web_overview_query( - "2023-12-08", "2023-12-15", session_table_version=session_table_version, action=action - ).results + results = self._run_web_overview_query("2023-12-08", "2023-12-15", action=action).results assert [item.key for item in results] == [ "visitors", @@ -143,8 +137,7 @@ def test_no_crash_when_no_data(self, session_table_version: SessionTableVersion) "conversion rate", ] - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_increase_in_users(self, session_table_version: SessionTableVersion): + def test_increase_in_users(self): s1a = str(uuid7("2023-12-02")) s1b = str(uuid7("2023-12-12")) s2 = str(uuid7("2023-12-11")) @@ -159,7 +152,6 @@ def test_increase_in_users(self, session_table_version: SessionTableVersion): results = self._run_web_overview_query( "2023-12-08", "2023-12-15", - session_table_version=session_table_version, ).results visitors = results[0] @@ -192,8 +184,7 @@ def test_increase_in_users(self, session_table_version: SessionTableVersion): self.assertEqual(0, bounce.previous) self.assertEqual(None, bounce.changeFromPreviousPct) - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_all_time(self, session_table_version: SessionTableVersion): + def test_all_time(self): s1a = str(uuid7("2023-12-02")) s1b = str(uuid7("2023-12-12")) s2 = str(uuid7("2023-12-11")) @@ -208,7 +199,6 @@ def test_all_time(self, session_table_version: SessionTableVersion): "all", "2023-12-15", compare=False, - session_table_version=session_table_version, ).results visitors = results[0] @@ -241,15 +231,12 @@ def test_all_time(self, session_table_version: SessionTableVersion): self.assertEqual(None, bounce.previous) self.assertEqual(None, bounce.changeFromPreviousPct) - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_filter_test_accounts(self, session_table_version: SessionTableVersion): + def test_filter_test_accounts(self): s1 = str(uuid7("2023-12-02")) # Create 1 test account self._create_events([("test", [("2023-12-02", s1), ("2023-12-03", s1)])]) - results = self._run_web_overview_query( - "2023-12-01", "2023-12-03", session_table_version=session_table_version, filter_test_accounts=True - ).results + results = self._run_web_overview_query("2023-12-01", "2023-12-03", filter_test_accounts=True).results visitors = results[0] self.assertEqual(0, visitors.value) @@ -267,21 +254,17 @@ def test_filter_test_accounts(self, session_table_version: SessionTableVersion): self.assertEqual("bounce rate", bounce.key) self.assertEqual(None, bounce.value) - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_dont_filter_test_accounts(self, session_table_version: SessionTableVersion): + def test_dont_filter_test_accounts(self): s1 = str(uuid7("2023-12-02")) # Create 1 test account self._create_events([("test", [("2023-12-02", s1), ("2023-12-03", s1)])]) - results = self._run_web_overview_query( - "2023-12-01", "2023-12-03", session_table_version=session_table_version, filter_test_accounts=False - ).results + results = self._run_web_overview_query("2023-12-01", "2023-12-03", filter_test_accounts=False).results visitors = results[0] self.assertEqual(1, visitors.value) - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_correctly_counts_pageviews_in_long_running_session(self, session_table_version: SessionTableVersion): + def test_correctly_counts_pageviews_in_long_running_session(self): # this test is important when using the v1 sessions table as the raw sessions table will have 3 entries, one per day s1 = str(uuid7("2023-12-01")) self._create_events( @@ -293,7 +276,6 @@ def test_correctly_counts_pageviews_in_long_running_session(self, session_table_ results = self._run_web_overview_query( "2023-12-01", "2023-12-03", - session_table_version=session_table_version, ).results visitors = results[0] diff --git a/posthog/hogql_queries/web_analytics/test/test_web_stats_table.py b/posthog/hogql_queries/web_analytics/test/test_web_stats_table.py index 10ce9ab1ebcb4..865424f5bc862 100644 --- a/posthog/hogql_queries/web_analytics/test/test_web_stats_table.py +++ b/posthog/hogql_queries/web_analytics/test/test_web_stats_table.py @@ -1,7 +1,6 @@ from typing import Optional from freezegun import freeze_time -from parameterized import parameterized from posthog.hogql_queries.web_analytics.stats_table import WebStatsTableQueryRunner from posthog.models import Cohort @@ -108,7 +107,7 @@ def _run_web_stats_table_query( include_bounce_rate=False, include_scroll_depth=False, properties=None, - session_table_version: SessionTableVersion = SessionTableVersion.V1, + session_table_version: SessionTableVersion = SessionTableVersion.V2, filter_test_accounts: Optional[bool] = False, ): modifiers = HogQLQueryModifiers(sessionTableVersion=session_table_version) @@ -126,15 +125,14 @@ def _run_web_stats_table_query( runner = WebStatsTableQueryRunner(team=self.team, query=query, modifiers=modifiers) return runner.calculate() - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_no_crash_when_no_data(self, session_table_version: SessionTableVersion): + def test_no_crash_when_no_data(self): results = self._run_web_stats_table_query( - "2023-12-08", "2023-12-15", session_table_version=session_table_version + "2023-12-08", + "2023-12-15", ).results self.assertEqual([], results) - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_increase_in_users(self, session_table_version: SessionTableVersion): + def test_increase_in_users(self): s1a = str(uuid7("2023-12-02")) s1b = str(uuid7("2023-12-13")) s2 = str(uuid7("2023-12-10")) @@ -145,9 +143,7 @@ def test_increase_in_users(self, session_table_version: SessionTableVersion): ] ) - results = self._run_web_stats_table_query( - "2023-12-01", "2023-12-11", session_table_version=session_table_version - ).results + results = self._run_web_stats_table_query("2023-12-01", "2023-12-11").results self.assertEqual( [ @@ -157,8 +153,7 @@ def test_increase_in_users(self, session_table_version: SessionTableVersion): results, ) - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_all_time(self, session_table_version: SessionTableVersion): + def test_all_time(self): s1a = str(uuid7("2023-12-02")) s1b = str(uuid7("2023-12-13")) s2 = str(uuid7("2023-12-10")) @@ -169,9 +164,7 @@ def test_all_time(self, session_table_version: SessionTableVersion): ] ) - results = self._run_web_stats_table_query( - "all", "2023-12-15", session_table_version=session_table_version - ).results + results = self._run_web_stats_table_query("all", "2023-12-15").results self.assertEqual( [ @@ -182,38 +175,31 @@ def test_all_time(self, session_table_version: SessionTableVersion): results, ) - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_filter_test_accounts(self, session_table_version: SessionTableVersion): + def test_filter_test_accounts(self): s1 = str(uuid7("2023-12-02")) # Create 1 test account self._create_events([("test", [("2023-12-02", s1, "/"), ("2023-12-03", s1, "/login")])]) - results = self._run_web_stats_table_query( - "2023-12-01", "2023-12-03", session_table_version=session_table_version, filter_test_accounts=True - ).results + results = self._run_web_stats_table_query("2023-12-01", "2023-12-03", filter_test_accounts=True).results self.assertEqual( [], results, ) - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_dont_filter_test_accounts(self, session_table_version: SessionTableVersion): + def test_dont_filter_test_accounts(self): s1 = str(uuid7("2023-12-02")) # Create 1 test account self._create_events([("test", [("2023-12-02", s1, "/"), ("2023-12-03", s1, "/login")])]) - results = self._run_web_stats_table_query( - "2023-12-01", "2023-12-03", session_table_version=session_table_version, filter_test_accounts=False - ).results + results = self._run_web_stats_table_query("2023-12-01", "2023-12-03", filter_test_accounts=False).results self.assertEqual( [["/", 1, 1], ["/login", 1, 1]], results, ) - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_breakdown_channel_type_doesnt_throw(self, session_table_version: SessionTableVersion): + def test_breakdown_channel_type_doesnt_throw(self): s1a = str(uuid7("2023-12-02")) s1b = str(uuid7("2023-12-13")) s2 = str(uuid7("2023-12-10")) @@ -229,7 +215,6 @@ def test_breakdown_channel_type_doesnt_throw(self, session_table_version: Sessio "2023-12-01", "2023-12-03", breakdown_by=WebStatsBreakdown.INITIAL_CHANNEL_TYPE, - session_table_version=session_table_version, ).results self.assertEqual( @@ -237,8 +222,7 @@ def test_breakdown_channel_type_doesnt_throw(self, session_table_version: Sessio len(results), ) - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_limit(self, session_table_version: SessionTableVersion): + def test_limit(self): s1 = str(uuid7("2023-12-02")) s2 = str(uuid7("2023-12-10")) self._create_events( @@ -248,9 +232,7 @@ def test_limit(self, session_table_version: SessionTableVersion): ] ) - response_1 = self._run_web_stats_table_query( - "all", "2023-12-15", limit=1, session_table_version=session_table_version - ) + response_1 = self._run_web_stats_table_query("all", "2023-12-15", limit=1) self.assertEqual( [ ["/", 2, 2], @@ -269,8 +251,7 @@ def test_limit(self, session_table_version: SessionTableVersion): ) self.assertEqual(False, response_2.hasMore) - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_path_filters(self, session_table_version: SessionTableVersion): + def test_path_filters(self): s1 = str(uuid7("2023-12-02")) s2 = str(uuid7("2023-12-10")) s3 = str(uuid7("2023-12-10")) @@ -295,7 +276,6 @@ def test_path_filters(self, session_table_version: SessionTableVersion): {"regex": "thing_a", "alias": "thing_b"}, {"regex": "thing_b", "alias": "thing_c"}, ], - session_table_version=session_table_version, ).results self.assertEqual( @@ -308,8 +288,7 @@ def test_path_filters(self, session_table_version: SessionTableVersion): results, ) - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_scroll_depth_bounce_rate_one_user(self, session_table_version: SessionTableVersion): + def test_scroll_depth_bounce_rate_one_user(self): self._create_pageviews( "p1", [ @@ -325,7 +304,6 @@ def test_scroll_depth_bounce_rate_one_user(self, session_table_version: SessionT breakdown_by=WebStatsBreakdown.PAGE, include_scroll_depth=True, include_bounce_rate=True, - session_table_version=session_table_version, ).results self.assertEqual( @@ -337,8 +315,7 @@ def test_scroll_depth_bounce_rate_one_user(self, session_table_version: SessionT results, ) - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_scroll_depth_bounce_rate(self, session_table_version: SessionTableVersion): + def test_scroll_depth_bounce_rate(self): self._create_pageviews( "p1", [ @@ -369,7 +346,6 @@ def test_scroll_depth_bounce_rate(self, session_table_version: SessionTableVersi breakdown_by=WebStatsBreakdown.PAGE, include_scroll_depth=True, include_bounce_rate=True, - session_table_version=session_table_version, ).results self.assertEqual( @@ -381,8 +357,7 @@ def test_scroll_depth_bounce_rate(self, session_table_version: SessionTableVersi results, ) - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_scroll_depth_bounce_rate_with_filter(self, session_table_version: SessionTableVersion): + def test_scroll_depth_bounce_rate_with_filter(self): self._create_pageviews( "p1", [ @@ -414,7 +389,6 @@ def test_scroll_depth_bounce_rate_with_filter(self, session_table_version: Sessi include_scroll_depth=True, include_bounce_rate=True, properties=[EventPropertyFilter(key="$pathname", operator=PropertyOperator.EXACT, value="/a")], - session_table_version=session_table_version, ).results self.assertEqual( @@ -424,8 +398,7 @@ def test_scroll_depth_bounce_rate_with_filter(self, session_table_version: Sessi results, ) - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_scroll_depth_bounce_rate_path_cleaning(self, session_table_version: SessionTableVersion): + def test_scroll_depth_bounce_rate_path_cleaning(self): self._create_pageviews( "p1", [ @@ -446,7 +419,6 @@ def test_scroll_depth_bounce_rate_path_cleaning(self, session_table_version: Ses {"regex": "\\/b\\/\\d+", "alias": "/b/:id"}, {"regex": "\\/c\\/\\d+", "alias": "/c/:id"}, ], - session_table_version=session_table_version, ).results self.assertEqual( @@ -458,8 +430,7 @@ def test_scroll_depth_bounce_rate_path_cleaning(self, session_table_version: Ses results, ) - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_bounce_rate_one_user(self, session_table_version: SessionTableVersion): + def test_bounce_rate_one_user(self): self._create_pageviews( "p1", [ @@ -474,7 +445,6 @@ def test_bounce_rate_one_user(self, session_table_version: SessionTableVersion): "2023-12-15", breakdown_by=WebStatsBreakdown.PAGE, include_bounce_rate=True, - session_table_version=session_table_version, ).results self.assertEqual( @@ -486,8 +456,7 @@ def test_bounce_rate_one_user(self, session_table_version: SessionTableVersion): results, ) - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_bounce_rate(self, session_table_version: SessionTableVersion): + def test_bounce_rate(self): self._create_pageviews( "p1", [ @@ -517,7 +486,6 @@ def test_bounce_rate(self, session_table_version: SessionTableVersion): "2023-12-15", breakdown_by=WebStatsBreakdown.PAGE, include_bounce_rate=True, - session_table_version=session_table_version, ).results self.assertEqual( @@ -529,8 +497,7 @@ def test_bounce_rate(self, session_table_version: SessionTableVersion): results, ) - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_bounce_rate_with_property(self, session_table_version: SessionTableVersion): + def test_bounce_rate_with_property(self): self._create_pageviews( "p1", [ @@ -561,7 +528,6 @@ def test_bounce_rate_with_property(self, session_table_version: SessionTableVers breakdown_by=WebStatsBreakdown.PAGE, include_bounce_rate=True, properties=[EventPropertyFilter(key="$pathname", operator=PropertyOperator.EXACT, value="/a")], - session_table_version=session_table_version, ).results self.assertEqual( @@ -571,8 +537,7 @@ def test_bounce_rate_with_property(self, session_table_version: SessionTableVers results, ) - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_bounce_rate_path_cleaning(self, session_table_version: SessionTableVersion): + def test_bounce_rate_path_cleaning(self): self._create_pageviews( "p1", [ @@ -592,7 +557,6 @@ def test_bounce_rate_path_cleaning(self, session_table_version: SessionTableVers {"regex": "\\/b\\/\\d+", "alias": "/b/:id"}, {"regex": "\\/c\\/\\d+", "alias": "/c/:id"}, ], - session_table_version=session_table_version, ).results self.assertEqual( @@ -604,8 +568,7 @@ def test_bounce_rate_path_cleaning(self, session_table_version: SessionTableVers results, ) - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_entry_bounce_rate_one_user(self, session_table_version: SessionTableVersion): + def test_entry_bounce_rate_one_user(self): self._create_pageviews( "p1", [ @@ -620,7 +583,6 @@ def test_entry_bounce_rate_one_user(self, session_table_version: SessionTableVer "2023-12-15", breakdown_by=WebStatsBreakdown.INITIAL_PAGE, include_bounce_rate=True, - session_table_version=session_table_version, ).results self.assertEqual( @@ -630,8 +592,7 @@ def test_entry_bounce_rate_one_user(self, session_table_version: SessionTableVer results, ) - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_entry_bounce_rate(self, session_table_version: SessionTableVersion): + def test_entry_bounce_rate(self): self._create_pageviews( "p1", [ @@ -661,7 +622,6 @@ def test_entry_bounce_rate(self, session_table_version: SessionTableVersion): "2023-12-15", breakdown_by=WebStatsBreakdown.INITIAL_PAGE, include_bounce_rate=True, - session_table_version=session_table_version, ).results self.assertEqual( @@ -671,8 +631,7 @@ def test_entry_bounce_rate(self, session_table_version: SessionTableVersion): results, ) - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_entry_bounce_rate_with_property(self, session_table_version: SessionTableVersion): + def test_entry_bounce_rate_with_property(self): self._create_pageviews( "p1", [ @@ -703,7 +662,6 @@ def test_entry_bounce_rate_with_property(self, session_table_version: SessionTab breakdown_by=WebStatsBreakdown.INITIAL_PAGE, include_bounce_rate=True, properties=[EventPropertyFilter(key="$pathname", operator=PropertyOperator.EXACT, value="/a")], - session_table_version=session_table_version, ).results self.assertEqual( @@ -713,8 +671,7 @@ def test_entry_bounce_rate_with_property(self, session_table_version: SessionTab results, ) - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_entry_bounce_rate_path_cleaning(self, session_table_version: SessionTableVersion): + def test_entry_bounce_rate_path_cleaning(self): self._create_pageviews( "p1", [ @@ -734,7 +691,6 @@ def test_entry_bounce_rate_path_cleaning(self, session_table_version: SessionTab {"regex": "\\/b\\/\\d+", "alias": "/b/:id"}, {"regex": "\\/c\\/\\d+", "alias": "/c/:id"}, ], - session_table_version=session_table_version, ).results self.assertEqual( @@ -744,8 +700,7 @@ def test_entry_bounce_rate_path_cleaning(self, session_table_version: SessionTab results, ) - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_source_medium_campaign(self, session_table_version: SessionTableVersion): + def test_source_medium_campaign(self): d1 = "d1" s1 = str(uuid7("2024-06-26")) @@ -785,7 +740,6 @@ def test_source_medium_campaign(self, session_table_version: SessionTableVersion "all", "2024-06-27", breakdown_by=WebStatsBreakdown.INITIAL_UTM_SOURCE_MEDIUM_CAMPAIGN, - session_table_version=session_table_version, ).results self.assertEqual( @@ -793,8 +747,7 @@ def test_source_medium_campaign(self, session_table_version: SessionTableVersion results, ) - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_null_in_utm_tags(self, session_table_version: SessionTableVersion): + def test_null_in_utm_tags(self): d1 = "d1" s1 = str(uuid7("2024-06-26")) @@ -836,7 +789,6 @@ def test_null_in_utm_tags(self, session_table_version: SessionTableVersion): "all", "2024-06-27", breakdown_by=WebStatsBreakdown.INITIAL_UTM_SOURCE, - session_table_version=session_table_version, ).results self.assertEqual( @@ -844,8 +796,7 @@ def test_null_in_utm_tags(self, session_table_version: SessionTableVersion): results, ) - @parameterized.expand([[SessionTableVersion.V1], [SessionTableVersion.V2]]) - def test_is_not_set_filter(self, session_table_version: SessionTableVersion): + def test_is_not_set_filter(self): d1 = "d1" s1 = str(uuid7("2024-06-26")) @@ -888,7 +839,6 @@ def test_is_not_set_filter(self, session_table_version: SessionTableVersion): "2024-06-27", breakdown_by=WebStatsBreakdown.INITIAL_UTM_SOURCE, properties=[EventPropertyFilter(key="utm_source", operator=PropertyOperator.IS_NOT_SET)], - session_table_version=session_table_version, ).results self.assertEqual( diff --git a/posthog/models/sessions/sql.py b/posthog/models/sessions/sql.py index 680e1f7ff6f7b..93d3083a37763 100644 --- a/posthog/models/sessions/sql.py +++ b/posthog/models/sessions/sql.py @@ -7,6 +7,7 @@ AggregatingMergeTree, ) +# V1 Sessions table TABLE_BASE_NAME = "sessions" SESSIONS_DATA_TABLE = lambda: f"sharded_{TABLE_BASE_NAME}" @@ -21,6 +22,32 @@ ) DROP_SESSION_VIEW_SQL = lambda: f"DROP VIEW IF EXISTS {TABLE_BASE_NAME}_v ON CLUSTER '{settings.CLICKHOUSE_CLUSTER}'" +# Only teams that were grandfathered into the V1 sessions table are allowed to use it. Everyone else should use V2, +# i.e. raw_sessions. These teams were those who were seen to have changed their session table version in these metabase +# queries: +# US: https://metabase.prod-us.posthog.dev/question#eyJkYXRhc2V0X3F1ZXJ5Ijp7InR5cGUiOiJuYXRpdmUiLCJuYXRpdmUiOnsicXVlcnkiOiJTRUxFQ1QgdGVhbV9pZCwgc1xuRlJPTSAoXG4gICAgU0VMRUNUIG1vZGlmaWVycy0-PidzZXNzaW9uVGFibGVWZXJzaW9uJyBBUyBzLCBpZCBhcyB0ZWFtX2lkXG4gICAgRlJPTSBwb3N0aG9nX3RlYW1cbikgc3ViXG5XSEVSRSBzICE9ICcnIiwidGVtcGxhdGUtdGFncyI6e319LCJkYXRhYmFzZSI6MzR9LCJkaXNwbGF5IjoidGFibGUiLCJwYXJhbWV0ZXJzIjpbXSwidmlzdWFsaXphdGlvbl9zZXR0aW5ncyI6e319 +# EU: https://metabase.prod-eu.posthog.dev/question#eyJkYXRhc2V0X3F1ZXJ5Ijp7InR5cGUiOiJuYXRpdmUiLCJuYXRpdmUiOnsicXVlcnkiOiJTRUxFQ1QgdGVhbV9pZCwgc1xuRlJPTSAoXG4gICAgU0VMRUNUIG1vZGlmaWVycy0-PidzZXNzaW9uVGFibGVWZXJzaW9uJyBBUyBzLCBpZCBhcyB0ZWFtX2lkXG4gICAgRlJPTSBwb3N0aG9nX3RlYW1cbikgc3ViXG5XSEVSRSBzICE9ICcnIiwidGVtcGxhdGUtdGFncyI6e319LCJkYXRhYmFzZSI6MzR9LCJkaXNwbGF5IjoidGFibGUiLCJwYXJhbWV0ZXJzIjpbXSwidmlzdWFsaXphdGlvbl9zZXR0aW5ncyI6e319 +# or had contacted support about an issue. +# This list exists because we want to reduce the number of writes happening to this table, and so we don't write to it +# for any team not in this list. Adding a team to this is possible if needed, but would require changing this MV in +# production and backfilling this table with the management command backfill_sessions_table. +ALLOWED_TEAM_IDS = [ + # posthog + 1, + 2, + # US query + 13610, # zendesk: https://posthoghelp.zendesk.com/agent/tickets/18001 + 19279, + 21173, + 29929, + 32050, + # EU query + 9910, + 11775, + 21129, + 31490, +] +ALLOWED_TEAM_IDS_SQL = ", ".join(str(team_id) for team_id in ALLOWED_TEAM_IDS) # if updating these column definitions # you'll need to update the explicit column definitions in the materialized view creation statement below @@ -144,7 +171,7 @@ def source_column(column_name: str) -> str: sumIf(1, event='$autocapture') as autocapture_count FROM {database}.sharded_events -WHERE `$session_id` IS NOT NULL AND `$session_id` != '' +WHERE `$session_id` IS NOT NULL AND `$session_id` != '' AND team_id IN ({allowed_team_ids}) GROUP BY `$session_id`, team_id """.format( database=settings.CLICKHOUSE_DATABASE, @@ -168,6 +195,7 @@ def source_column(column_name: str) -> str: mc_cid_property=source_column("mc_cid"), igshid_property=source_column("igshid"), ttclid_property=source_column("ttclid"), + allowed_team_ids=ALLOWED_TEAM_IDS_SQL, ) ) From a0843f475b20166ea1ccb0ec626683178962496c Mon Sep 17 00:00:00 2001 From: Paul D'Ambra Date: Wed, 30 Oct 2024 11:30:50 +0100 Subject: [PATCH 04/22] fix: flappity snapshots begone (#25893) Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- .../api/test/__snapshots__/test_api_docs.ambr | 180 +++++++++--------- posthog/api/test/test_api_docs.py | 2 +- 2 files changed, 91 insertions(+), 91 deletions(-) diff --git a/posthog/api/test/__snapshots__/test_api_docs.ambr b/posthog/api/test/__snapshots__/test_api_docs.ambr index 9221776ff38d1..9b7667ec6484b 100644 --- a/posthog/api/test/__snapshots__/test_api_docs.ambr +++ b/posthog/api/test/__snapshots__/test_api_docs.ambr @@ -1,137 +1,137 @@ # serializer version: 1 # name: TestAPIDocsSchema.test_api_docs_generation_warnings_snapshot list([ - '/home/runner/work/posthog/posthog/posthog/api/plugin_log_entry.py: Warning [PluginLogEntryViewSet]: could not derive type of path parameter "plugin_config_id" because it is untyped and obtaining queryset from the viewset failed. Consider adding a type to the path (e.g. ) or annotating the parameter type with @extend_schema. Defaulting to "string".', + '', + '/home/runner/work/posthog/posthog/ee/api/dashboard_collaborator.py: Warning [DashboardCollaboratorViewSet]: could not derive type of path parameter "project_id" because model "ee.models.dashboard_privilege.DashboardPrivilege" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/ee/api/explicit_team_member.py: Warning [ExplicitTeamMemberViewSet]: could not derive type of path parameter "project_id" because model "ee.models.explicit_team_membership.ExplicitTeamMembership" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/ee/api/feature_flag_role_access.py: Warning [FeatureFlagRoleAccessViewSet]: could not derive type of path parameter "project_id" because model "ee.models.feature_flag_role_access.FeatureFlagRoleAccess" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/ee/api/rbac/role.py: Warning [RoleMembershipViewSet]: could not derive type of path parameter "organization_id" because model "ee.models.rbac.role.RoleMembership" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/ee/api/rbac/role.py: Warning [RoleViewSet > RoleSerializer]: unable to resolve type hint for function "get_associated_flags". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/ee/api/rbac/role.py: Warning [RoleViewSet > RoleSerializer]: unable to resolve type hint for function "get_members". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/ee/api/subscription.py: Warning [SubscriptionViewSet > SubscriptionSerializer]: unable to resolve type hint for function "summary". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/ee/api/subscription.py: Warning [SubscriptionViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.subscription.Subscription" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/ee/clickhouse/views/experiment_holdouts.py: Warning [ExperimentHoldoutViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.experiment.ExperimentHoldout" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/ee/clickhouse/views/experiments.py: Warning [EnterpriseExperimentsViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.experiment.Experiment" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/ee/clickhouse/views/groups.py: Warning [GroupsTypesViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.group_type_mapping.GroupTypeMapping" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/ee/clickhouse/views/groups.py: Warning [GroupsViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.group.group.Group" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/ee/clickhouse/views/insights.py: Warning [EnterpriseInsightsViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.insight.Insight" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/ee/clickhouse/views/person.py: Warning [EnterprisePersonViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.person.person.Person" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/ee/session_recordings/session_recording_playlist.py: Warning [SessionRecordingPlaylistViewSet]: could not derive type of path parameter "project_id" because model "posthog.session_recordings.models.session_recording_playlist.SessionRecordingPlaylist" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/ee/session_recordings/session_recording_playlist.py: Warning [SessionRecordingPlaylistViewSet]: could not derive type of path parameter "session_recording_id" because model "posthog.session_recordings.models.session_recording_playlist.SessionRecordingPlaylist" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/posthog/api/action.py: Warning [ActionViewSet > ActionSerializer]: unable to resolve type hint for function "get_creation_context". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/posthog/api/action.py: Warning [ActionViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.action.action.Action" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/posthog/api/activity_log.py: Warning [ActivityLogViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.activity_logging.activity_log.ActivityLog" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/posthog/api/annotation.py: Warning [AnnotationsViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.annotation.Annotation" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', "/home/runner/work/posthog/posthog/posthog/api/app_metrics.py: Error [AppMetricsViewSet]: exception raised while getting serializer. Hint: Is get_serializer_class() returning None or is get_queryset() not working without a request? Ignoring the view for now. (Exception: 'AppMetricsViewSet' should either include a `serializer_class` attribute, or override the `get_serializer_class()` method.)", - '/home/runner/work/posthog/posthog/posthog/api/app_metrics.py: Warning [AppMetricsViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.plugin.PluginConfig" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', '/home/runner/work/posthog/posthog/posthog/api/app_metrics.py: Error [HistoricalExportsAppMetricsViewSet]: unable to guess serializer. This is graceful fallback handling for APIViews. Consider using GenericAPIView as view base class, if view is under your control. Either way you may want to add a serializer_class (or method). Ignoring view for now.', - '/home/runner/work/posthog/posthog/posthog/api/app_metrics.py: Warning [HistoricalExportsAppMetricsViewSet]: could not derive type of path parameter "project_id" because it is untyped and obtaining queryset from the viewset failed. Consider adding a type to the path (e.g. ) or annotating the parameter type with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/posthog/api/app_metrics.py: Warning [HistoricalExportsAppMetricsViewSet]: could not derive type of path parameter "plugin_config_id" because it is untyped and obtaining queryset from the viewset failed. Consider adding a type to the path (e.g. ) or annotating the parameter type with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/posthog/api/app_metrics.py: Warning [AppMetricsViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.plugin.PluginConfig" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', '/home/runner/work/posthog/posthog/posthog/api/app_metrics.py: Warning [HistoricalExportsAppMetricsViewSet]: could not derive type of path parameter "id" because it is untyped and obtaining queryset from the viewset failed. Consider adding a type to the path (e.g. ) or annotating the parameter type with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/posthog/batch_exports/http.py: Warning [BatchExportViewSet]: could not derive type of path parameter "project_id" because model "posthog.batch_exports.models.BatchExport" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/posthog/batch_exports/http.py: Warning [BatchExportViewSet > BatchExportSerializer]: could not resolve serializer field "HogQLSelectQueryField(required=False)". Defaulting to "string"', - '/home/runner/work/posthog/posthog/posthog/batch_exports/http.py: Warning [BatchExportRunViewSet]: could not derive type of path parameter "project_id" because model "posthog.batch_exports.models.BatchExportRun" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/posthog/api/app_metrics.py: Warning [HistoricalExportsAppMetricsViewSet]: could not derive type of path parameter "plugin_config_id" because it is untyped and obtaining queryset from the viewset failed. Consider adding a type to the path (e.g. ) or annotating the parameter type with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/posthog/api/app_metrics.py: Warning [HistoricalExportsAppMetricsViewSet]: could not derive type of path parameter "project_id" because it is untyped and obtaining queryset from the viewset failed. Consider adding a type to the path (e.g. ) or annotating the parameter type with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/posthog/api/cohort.py: Warning [CohortViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.cohort.cohort.Cohort" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', '/home/runner/work/posthog/posthog/posthog/api/dashboards/dashboard.py: Warning [DashboardsViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.dashboard.Dashboard" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/ee/api/dashboard_collaborator.py: Warning [DashboardCollaboratorViewSet]: could not derive type of path parameter "project_id" because model "ee.models.dashboard_privilege.DashboardPrivilege" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/posthog/api/sharing.py: Warning [SharingConfigurationViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.sharing_configuration.SharingConfiguration" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/posthog/api/event.py: Warning [EventViewSet]: could not derive type of path parameter "project_id" because it is untyped and obtaining queryset from the viewset failed. Consider adding a type to the path (e.g. ) or annotating the parameter type with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/posthog/models/event/util.py: Warning [EventViewSet > ClickhouseEventSerializer]: unable to resolve type hint for function "get_id". Consider using a type hint or @extend_schema_field. Defaulting to string.', - '/home/runner/work/posthog/posthog/posthog/models/event/util.py: Warning [EventViewSet > ClickhouseEventSerializer]: unable to resolve type hint for function "get_distinct_id". Consider using a type hint or @extend_schema_field. Defaulting to string.', - '/home/runner/work/posthog/posthog/posthog/models/event/util.py: Warning [EventViewSet > ClickhouseEventSerializer]: unable to resolve type hint for function "get_properties". Consider using a type hint or @extend_schema_field. Defaulting to string.', - '/home/runner/work/posthog/posthog/posthog/models/event/util.py: Warning [EventViewSet > ClickhouseEventSerializer]: unable to resolve type hint for function "get_event". Consider using a type hint or @extend_schema_field. Defaulting to string.', - '/home/runner/work/posthog/posthog/posthog/models/event/util.py: Warning [EventViewSet > ClickhouseEventSerializer]: unable to resolve type hint for function "get_timestamp". Consider using a type hint or @extend_schema_field. Defaulting to string.', - '/home/runner/work/posthog/posthog/posthog/models/event/util.py: Warning [EventViewSet > ClickhouseEventSerializer]: unable to resolve type hint for function "get_person". Consider using a type hint or @extend_schema_field. Defaulting to string.', - '/home/runner/work/posthog/posthog/posthog/models/event/util.py: Warning [EventViewSet > ClickhouseEventSerializer]: unable to resolve type hint for function "get_elements". Consider using a type hint or @extend_schema_field. Defaulting to string.', - '/home/runner/work/posthog/posthog/posthog/models/event/util.py: Warning [EventViewSet > ClickhouseEventSerializer]: unable to resolve type hint for function "get_elements_chain". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/posthog/api/dashboards/dashboard_templates.py: Warning [DashboardTemplateViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.dashboard_templates.DashboardTemplate" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/posthog/api/early_access_feature.py: Warning [EarlyAccessFeatureViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.early_access_feature.EarlyAccessFeature" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', '/home/runner/work/posthog/posthog/posthog/api/event.py: Warning [EventViewSet]: could not derive type of path parameter "id" because it is untyped and obtaining queryset from the viewset failed. Consider adding a type to the path (e.g. ) or annotating the parameter type with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/ee/api/explicit_team_member.py: Warning [ExplicitTeamMemberViewSet]: could not derive type of path parameter "project_id" because model "ee.models.explicit_team_membership.ExplicitTeamMembership" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/posthog/api/exports.py: Warning [ExportedAssetViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.exported_asset.ExportedAsset" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/posthog/api/exports.py: Warning [ExportedAssetViewSet > ExportedAssetSerializer]: unable to resolve type hint for function "has_content". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/posthog/api/event.py: Warning [EventViewSet]: could not derive type of path parameter "project_id" because it is untyped and obtaining queryset from the viewset failed. Consider adding a type to the path (e.g. ) or annotating the parameter type with @extend_schema. Defaulting to "string".', + "/home/runner/work/posthog/posthog/posthog/api/event_definition.py: Error [EventDefinitionViewSet]: exception raised while getting serializer. Hint: Is get_serializer_class() returning None or is get_queryset() not working without a request? Ignoring the view for now. (Exception: 'AnonymousUser' object has no attribute 'organization')", + '/home/runner/work/posthog/posthog/posthog/api/event_definition.py: Warning [EventDefinitionViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.event_definition.EventDefinition" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', '/home/runner/work/posthog/posthog/posthog/api/exports.py: Warning [ExportedAssetViewSet > ExportedAssetSerializer]: unable to resolve type hint for function "filename". Consider using a type hint or @extend_schema_field. Defaulting to string.', - '/home/runner/work/posthog/posthog/ee/clickhouse/views/groups.py: Warning [GroupsViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.group.group.Group" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/ee/clickhouse/views/insights.py: Warning [EnterpriseInsightsViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.insight.Insight" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/posthog/api/insight.py: Warning [EnterpriseInsightsViewSet > InsightSerializer]: unable to resolve type hint for function "get_last_refresh". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/posthog/api/exports.py: Warning [ExportedAssetViewSet > ExportedAssetSerializer]: unable to resolve type hint for function "has_content". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/posthog/api/exports.py: Warning [ExportedAssetViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.exported_asset.ExportedAsset" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/posthog/api/feature_flag.py: Warning [FeatureFlagViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.feature_flag.feature_flag.FeatureFlag" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', '/home/runner/work/posthog/posthog/posthog/api/insight.py: Warning [EnterpriseInsightsViewSet > InsightSerializer]: unable to resolve type hint for function "get_cache_target_age". Consider using a type hint or @extend_schema_field. Defaulting to string.', - '/home/runner/work/posthog/posthog/posthog/api/insight.py: Warning [EnterpriseInsightsViewSet > InsightSerializer]: unable to resolve type hint for function "get_next_allowed_client_refresh". Consider using a type hint or @extend_schema_field. Defaulting to string.', - '/home/runner/work/posthog/posthog/posthog/api/insight.py: Warning [EnterpriseInsightsViewSet > InsightSerializer]: unable to resolve type hint for function "get_result". Consider using a type hint or @extend_schema_field. Defaulting to string.', - '/home/runner/work/posthog/posthog/posthog/api/insight.py: Warning [EnterpriseInsightsViewSet > InsightSerializer]: unable to resolve type hint for function "get_hasMore". Consider using a type hint or @extend_schema_field. Defaulting to string.', '/home/runner/work/posthog/posthog/posthog/api/insight.py: Warning [EnterpriseInsightsViewSet > InsightSerializer]: unable to resolve type hint for function "get_columns". Consider using a type hint or @extend_schema_field. Defaulting to string.', - '/home/runner/work/posthog/posthog/posthog/api/insight.py: Warning [EnterpriseInsightsViewSet > InsightSerializer]: unable to resolve type hint for function "get_timezone". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/posthog/api/insight.py: Warning [EnterpriseInsightsViewSet > InsightSerializer]: unable to resolve type hint for function "get_hasMore". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/posthog/api/insight.py: Warning [EnterpriseInsightsViewSet > InsightSerializer]: unable to resolve type hint for function "get_hogql". Consider using a type hint or @extend_schema_field. Defaulting to string.', '/home/runner/work/posthog/posthog/posthog/api/insight.py: Warning [EnterpriseInsightsViewSet > InsightSerializer]: unable to resolve type hint for function "get_is_cached". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/posthog/api/insight.py: Warning [EnterpriseInsightsViewSet > InsightSerializer]: unable to resolve type hint for function "get_last_refresh". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/posthog/api/insight.py: Warning [EnterpriseInsightsViewSet > InsightSerializer]: unable to resolve type hint for function "get_next_allowed_client_refresh". Consider using a type hint or @extend_schema_field. Defaulting to string.', '/home/runner/work/posthog/posthog/posthog/api/insight.py: Warning [EnterpriseInsightsViewSet > InsightSerializer]: unable to resolve type hint for function "get_query_status". Consider using a type hint or @extend_schema_field. Defaulting to string.', - '/home/runner/work/posthog/posthog/posthog/api/insight.py: Warning [EnterpriseInsightsViewSet > InsightSerializer]: unable to resolve type hint for function "get_hogql". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/posthog/api/insight.py: Warning [EnterpriseInsightsViewSet > InsightSerializer]: unable to resolve type hint for function "get_result". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/posthog/api/insight.py: Warning [EnterpriseInsightsViewSet > InsightSerializer]: unable to resolve type hint for function "get_timezone". Consider using a type hint or @extend_schema_field. Defaulting to string.', '/home/runner/work/posthog/posthog/posthog/api/insight.py: Warning [EnterpriseInsightsViewSet > InsightSerializer]: unable to resolve type hint for function "get_types". Consider using a type hint or @extend_schema_field. Defaulting to string.', - '/home/runner/work/posthog/posthog/ee/clickhouse/views/person.py: Warning [EnterprisePersonViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.person.person.Person" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/posthog/api/plugin.py: Warning [PipelineDestinationsConfigsViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.plugin.PluginConfig" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/posthog/api/notebook.py: Warning [NotebookViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.notebook.notebook.Notebook" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/posthog/api/organization.py: Warning [OrganizationViewSet > OrganizationSerializer]: unable to resolve type hint for function "get_member_count". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/posthog/api/organization.py: Warning [OrganizationViewSet > OrganizationSerializer]: unable to resolve type hint for function "get_metadata". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/posthog/api/person.py: Warning [SessionRecordingViewSet > SessionRecordingSerializer > MinimalPersonSerializer]: unable to resolve type hint for function "get_distinct_ids". Consider using a type hint or @extend_schema_field. Defaulting to string.', '/home/runner/work/posthog/posthog/posthog/api/plugin.py: Warning [PipelineDestinationsConfigsViewSet > PluginConfigSerializer]: unable to resolve type hint for function "get_config". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/posthog/api/plugin.py: Warning [PipelineDestinationsConfigsViewSet > PluginConfigSerializer]: unable to resolve type hint for function "get_delivery_rate_24h". Consider using a type hint or @extend_schema_field. Defaulting to string.', '/home/runner/work/posthog/posthog/posthog/api/plugin.py: Warning [PipelineDestinationsConfigsViewSet > PluginConfigSerializer]: unable to resolve type hint for function "get_error". Consider using a type hint or @extend_schema_field. Defaulting to string.', '/home/runner/work/posthog/posthog/posthog/api/plugin.py: Warning [PipelineDestinationsConfigsViewSet > PluginConfigSerializer]: unable to resolve type hint for function "get_plugin_info". Consider using a type hint or @extend_schema_field. Defaulting to string.', - '/home/runner/work/posthog/posthog/posthog/api/plugin.py: Warning [PipelineDestinationsConfigsViewSet > PluginConfigSerializer]: unable to resolve type hint for function "get_delivery_rate_24h". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/posthog/api/plugin.py: Warning [PipelineDestinationsConfigsViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.plugin.PluginConfig" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/posthog/api/plugin.py: Warning [PipelineDestinationsViewSet > PluginSerializer]: unable to resolve type hint for function "get_hog_function_migration_available". Consider using a type hint or @extend_schema_field. Defaulting to string.', '/home/runner/work/posthog/posthog/posthog/api/plugin.py: Warning [PipelineFrontendAppsConfigsViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.plugin.PluginConfig" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', '/home/runner/work/posthog/posthog/posthog/api/plugin.py: Warning [PipelineImportAppsConfigsViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.plugin.PluginConfig" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', '/home/runner/work/posthog/posthog/posthog/api/plugin.py: Warning [PipelineTransformationsConfigsViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.plugin.PluginConfig" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', '/home/runner/work/posthog/posthog/posthog/api/plugin.py: Warning [PluginConfigViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.plugin.PluginConfig" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/posthog/api/query.py: Warning [QueryViewSet]: could not derive type of path parameter "project_id" because it is untyped and obtaining queryset from the viewset failed. Consider adding a type to the path (e.g. ) or annotating the parameter type with @extend_schema. Defaulting to "string".', - '/opt/hostedtoolcache/Python/3.11.9/x64/lib/python3.11/site-packages/pydantic/_internal/_model_construction.py: Warning [QueryViewSet > ModelMetaclass]: Encountered 2 components with identical names "Person" and different classes and . This will very likely result in an incorrect schema. Try renaming one.', - '/home/runner/work/posthog/posthog/posthog/api/query.py: Warning [QueryViewSet]: could not derive type of path parameter "id" because it is untyped and obtaining queryset from the viewset failed. Consider adding a type to the path (e.g. ) or annotating the parameter type with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/posthog/api/query.py: Error [QueryViewSet]: unable to guess serializer. This is graceful fallback handling for APIViews. Consider using GenericAPIView as view base class, if view is under your control. Either way you may want to add a serializer_class (or method). Ignoring view for now.', - '/home/runner/work/posthog/posthog/posthog/session_recordings/session_recording_api.py: Warning [SessionRecordingViewSet]: could not derive type of path parameter "project_id" because model "posthog.session_recordings.models.session_recording.SessionRecording" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/posthog/api/person.py: Warning [SessionRecordingViewSet > SessionRecordingSerializer > MinimalPersonSerializer]: unable to resolve type hint for function "get_distinct_ids". Consider using a type hint or @extend_schema_field. Defaulting to string.', - '/home/runner/work/posthog/posthog/posthog/session_recordings/session_recording_api.py: Warning [SessionRecordingViewSet > SessionRecordingSerializer]: unable to resolve type hint for function "storage". Consider using a type hint or @extend_schema_field. Defaulting to string.', - '/home/runner/work/posthog/posthog/posthog/api/session.py: Warning [SessionViewSet]: could not derive type of path parameter "project_id" because it is untyped and obtaining queryset from the viewset failed. Consider adding a type to the path (e.g. ) or annotating the parameter type with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/ee/api/subscription.py: Warning [SubscriptionViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.subscription.Subscription" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/ee/api/subscription.py: Warning [SubscriptionViewSet > SubscriptionSerializer]: unable to resolve type hint for function "summary". Consider using a type hint or @extend_schema_field. Defaulting to string.', - '/home/runner/work/posthog/posthog/posthog/api/organization.py: Warning [OrganizationViewSet > OrganizationSerializer]: unable to resolve type hint for function "get_metadata". Consider using a type hint or @extend_schema_field. Defaulting to string.', - '/home/runner/work/posthog/posthog/posthog/api/organization.py: Warning [OrganizationViewSet > OrganizationSerializer]: unable to resolve type hint for function "get_member_count". Consider using a type hint or @extend_schema_field. Defaulting to string.', - '/home/runner/work/posthog/posthog/posthog/batch_exports/http.py: Warning [BatchExportOrganizationViewSet]: could not derive type of path parameter "organization_id" because model "posthog.batch_exports.models.BatchExport" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/posthog/api/plugin.py: Warning [PipelineDestinationsViewSet > PluginSerializer]: unable to resolve type hint for function "get_hog_function_migration_available". Consider using a type hint or @extend_schema_field. Defaulting to string.', - '/home/runner/work/posthog/posthog/posthog/api/project.py: Warning [ProjectViewSet > ProjectBackwardCompatSerializer]: could not resolve field on model with path "person_on_events_querying_enabled". This is likely a custom field that does some unknown magic. Maybe consider annotating the field/property? Defaulting to "string". (Exception: Project has no field named \'person_on_events_querying_enabled\')', + '/home/runner/work/posthog/posthog/posthog/api/plugin_log_entry.py: Warning [PluginLogEntryViewSet]: could not derive type of path parameter "plugin_config_id" because it is untyped and obtaining queryset from the viewset failed. Consider adding a type to the path (e.g. ) or annotating the parameter type with @extend_schema. Defaulting to "string".', '/home/runner/work/posthog/posthog/posthog/api/project.py: Warning [ProjectViewSet > ProjectBackwardCompatSerializer]: could not resolve field on model with path "default_modifiers". This is likely a custom field that does some unknown magic. Maybe consider annotating the field/property? Defaulting to "string". (Exception: Project has no field named \'default_modifiers\')', + '/home/runner/work/posthog/posthog/posthog/api/project.py: Warning [ProjectViewSet > ProjectBackwardCompatSerializer]: could not resolve field on model with path "person_on_events_querying_enabled". This is likely a custom field that does some unknown magic. Maybe consider annotating the field/property? Defaulting to "string". (Exception: Project has no field named \'person_on_events_querying_enabled\')', '/home/runner/work/posthog/posthog/posthog/api/project.py: Warning [ProjectViewSet > ProjectBackwardCompatSerializer]: unable to resolve type hint for function "get_product_intents". Consider using a type hint or @extend_schema_field. Defaulting to string.', - '/home/runner/work/posthog/posthog/posthog/api/proxy_record.py: Warning [ProxyRecordViewset]: could not derive type of path parameter "organization_id" because it is untyped and obtaining queryset from the viewset failed. Consider adding a type to the path (e.g. ) or annotating the parameter type with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/posthog/api/proxy_record.py: Warning [ProxyRecordViewset]: could not derive type of path parameter "id" because it is untyped and obtaining queryset from the viewset failed. Consider adding a type to the path (e.g. ) or annotating the parameter type with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/ee/api/rbac/role.py: Warning [RoleViewSet > RoleSerializer]: unable to resolve type hint for function "get_members". Consider using a type hint or @extend_schema_field. Defaulting to string.', - '/home/runner/work/posthog/posthog/ee/api/rbac/role.py: Warning [RoleViewSet > RoleSerializer]: unable to resolve type hint for function "get_associated_flags". Consider using a type hint or @extend_schema_field. Defaulting to string.', - '/home/runner/work/posthog/posthog/ee/api/rbac/role.py: Warning [RoleMembershipViewSet]: could not derive type of path parameter "organization_id" because model "ee.models.rbac.role.RoleMembership" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/posthog/api/action.py: Warning [ActionViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.action.action.Action" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/posthog/api/action.py: Warning [ActionViewSet > ActionSerializer]: unable to resolve type hint for function "get_creation_context". Consider using a type hint or @extend_schema_field. Defaulting to string.', - '/home/runner/work/posthog/posthog/posthog/api/activity_log.py: Warning [ActivityLogViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.activity_logging.activity_log.ActivityLog" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/posthog/api/annotation.py: Warning [AnnotationsViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.annotation.Annotation" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/posthog/api/cohort.py: Warning [CohortViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.cohort.cohort.Cohort" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/posthog/api/dashboards/dashboard_templates.py: Warning [DashboardTemplateViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.dashboard_templates.DashboardTemplate" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/posthog/api/early_access_feature.py: Warning [EarlyAccessFeatureViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.early_access_feature.EarlyAccessFeature" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/posthog/api/team.py: Warning [TeamViewSet > TeamSerializer]: unable to resolve type hint for function "get_product_intents". Consider using a type hint or @extend_schema_field. Defaulting to string.', - "/home/runner/work/posthog/posthog/posthog/api/event_definition.py: Error [EventDefinitionViewSet]: exception raised while getting serializer. Hint: Is get_serializer_class() returning None or is get_queryset() not working without a request? Ignoring the view for now. (Exception: 'AnonymousUser' object has no attribute 'organization')", - '/home/runner/work/posthog/posthog/posthog/api/event_definition.py: Warning [EventDefinitionViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.event_definition.EventDefinition" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/ee/clickhouse/views/experiment_holdouts.py: Warning [ExperimentHoldoutViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.experiment.ExperimentHoldout" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/ee/clickhouse/views/experiments.py: Warning [EnterpriseExperimentsViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.experiment.Experiment" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/posthog/api/feature_flag.py: Warning [FeatureFlagViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.feature_flag.feature_flag.FeatureFlag" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/ee/api/feature_flag_role_access.py: Warning [FeatureFlagRoleAccessViewSet]: could not derive type of path parameter "project_id" because model "ee.models.feature_flag_role_access.FeatureFlagRoleAccess" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/ee/clickhouse/views/groups.py: Warning [GroupsTypesViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.group_type_mapping.GroupTypeMapping" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/posthog/api/notebook.py: Warning [NotebookViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.notebook.notebook.Notebook" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', "/home/runner/work/posthog/posthog/posthog/api/property_definition.py: Error [PropertyDefinitionViewSet]: exception raised while getting serializer. Hint: Is get_serializer_class() returning None or is get_queryset() not working without a request? Ignoring the view for now. (Exception: 'AnonymousUser' object has no attribute 'organization')", '/home/runner/work/posthog/posthog/posthog/api/property_definition.py: Warning [PropertyDefinitionViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.property_definition.PropertyDefinition" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/ee/session_recordings/session_recording_playlist.py: Warning [SessionRecordingPlaylistViewSet]: could not derive type of path parameter "project_id" because model "posthog.session_recordings.models.session_recording_playlist.SessionRecordingPlaylist" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/ee/session_recordings/session_recording_playlist.py: Warning [SessionRecordingPlaylistViewSet]: could not derive type of path parameter "session_recording_id" because model "posthog.session_recordings.models.session_recording_playlist.SessionRecordingPlaylist" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', - '/home/runner/work/posthog/posthog/posthog/api/survey.py: Warning [SurveyViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.feedback.survey.Survey" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/posthog/api/proxy_record.py: Warning [ProxyRecordViewset]: could not derive type of path parameter "id" because it is untyped and obtaining queryset from the viewset failed. Consider adding a type to the path (e.g. ) or annotating the parameter type with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/posthog/api/proxy_record.py: Warning [ProxyRecordViewset]: could not derive type of path parameter "organization_id" because it is untyped and obtaining queryset from the viewset failed. Consider adding a type to the path (e.g. ) or annotating the parameter type with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/posthog/api/query.py: Error [QueryViewSet]: unable to guess serializer. This is graceful fallback handling for APIViews. Consider using GenericAPIView as view base class, if view is under your control. Either way you may want to add a serializer_class (or method). Ignoring view for now.', + '/home/runner/work/posthog/posthog/posthog/api/query.py: Warning [QueryViewSet]: could not derive type of path parameter "id" because it is untyped and obtaining queryset from the viewset failed. Consider adding a type to the path (e.g. ) or annotating the parameter type with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/posthog/api/query.py: Warning [QueryViewSet]: could not derive type of path parameter "project_id" because it is untyped and obtaining queryset from the viewset failed. Consider adding a type to the path (e.g. ) or annotating the parameter type with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/posthog/api/session.py: Warning [SessionViewSet]: could not derive type of path parameter "project_id" because it is untyped and obtaining queryset from the viewset failed. Consider adding a type to the path (e.g. ) or annotating the parameter type with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/posthog/api/sharing.py: Warning [SharingConfigurationViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.sharing_configuration.SharingConfiguration" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', '/home/runner/work/posthog/posthog/posthog/api/survey.py: Warning [SurveyViewSet > SurveySerializer]: unable to resolve type hint for function "get_conditions". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/posthog/api/survey.py: Warning [SurveyViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.feedback.survey.Survey" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/posthog/api/team.py: Warning [TeamViewSet > TeamSerializer]: unable to resolve type hint for function "get_product_intents". Consider using a type hint or @extend_schema_field. Defaulting to string.', '/home/runner/work/posthog/posthog/posthog/api/web_experiment.py: Warning [WebExperimentViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.web_experiment.WebExperiment" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/posthog/batch_exports/http.py: Warning [BatchExportOrganizationViewSet]: could not derive type of path parameter "organization_id" because model "posthog.batch_exports.models.BatchExport" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/posthog/batch_exports/http.py: Warning [BatchExportRunViewSet]: could not derive type of path parameter "project_id" because model "posthog.batch_exports.models.BatchExportRun" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/posthog/batch_exports/http.py: Warning [BatchExportViewSet > BatchExportSerializer]: could not resolve serializer field "HogQLSelectQueryField(required=False)". Defaulting to "string"', + '/home/runner/work/posthog/posthog/posthog/batch_exports/http.py: Warning [BatchExportViewSet]: could not derive type of path parameter "project_id" because model "posthog.batch_exports.models.BatchExport" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/home/runner/work/posthog/posthog/posthog/models/event/util.py: Warning [EventViewSet > ClickhouseEventSerializer]: unable to resolve type hint for function "get_distinct_id". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/posthog/models/event/util.py: Warning [EventViewSet > ClickhouseEventSerializer]: unable to resolve type hint for function "get_elements". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/posthog/models/event/util.py: Warning [EventViewSet > ClickhouseEventSerializer]: unable to resolve type hint for function "get_elements_chain". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/posthog/models/event/util.py: Warning [EventViewSet > ClickhouseEventSerializer]: unable to resolve type hint for function "get_event". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/posthog/models/event/util.py: Warning [EventViewSet > ClickhouseEventSerializer]: unable to resolve type hint for function "get_id". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/posthog/models/event/util.py: Warning [EventViewSet > ClickhouseEventSerializer]: unable to resolve type hint for function "get_person". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/posthog/models/event/util.py: Warning [EventViewSet > ClickhouseEventSerializer]: unable to resolve type hint for function "get_properties". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/posthog/models/event/util.py: Warning [EventViewSet > ClickhouseEventSerializer]: unable to resolve type hint for function "get_timestamp". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/posthog/session_recordings/session_recording_api.py: Warning [SessionRecordingViewSet > SessionRecordingSerializer]: unable to resolve type hint for function "storage". Consider using a type hint or @extend_schema_field. Defaulting to string.', + '/home/runner/work/posthog/posthog/posthog/session_recordings/session_recording_api.py: Warning [SessionRecordingViewSet]: could not derive type of path parameter "project_id" because model "posthog.session_recordings.models.session_recording.SessionRecording" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', + '/opt/hostedtoolcache/Python/3.11.9/x64/lib/python3.11/site-packages/pydantic/_internal/_model_construction.py: Warning [QueryViewSet > ModelMetaclass]: Encountered 2 components with identical names "Person" and different classes and . This will very likely result in an incorrect schema. Try renaming one.', + 'Warning: encountered multiple names for the same choice set (EffectivePrivilegeLevelEnum). This may be unwanted even though the generated schema is technically correct. Add an entry to ENUM_NAME_OVERRIDES to fix the naming.', 'Warning: encountered multiple names for the same choice set (HrefMatchingEnum). This may be unwanted even though the generated schema is technically correct. Add an entry to ENUM_NAME_OVERRIDES to fix the naming.', - 'Warning: enum naming encountered a non-optimally resolvable collision for fields named "kind". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "KindCfaEnum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.', + 'Warning: encountered multiple names for the same choice set (MembershipLevelEnum). This may be unwanted even though the generated schema is technically correct. Add an entry to ENUM_NAME_OVERRIDES to fix the naming.', 'Warning: enum naming encountered a non-optimally resolvable collision for fields named "kind". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Kind069Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.', + 'Warning: enum naming encountered a non-optimally resolvable collision for fields named "kind". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "KindCfaEnum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.', 'Warning: enum naming encountered a non-optimally resolvable collision for fields named "type". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "TypeF73Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.', - 'Warning: encountered multiple names for the same choice set (EffectivePrivilegeLevelEnum). This may be unwanted even though the generated schema is technically correct. Add an entry to ENUM_NAME_OVERRIDES to fix the naming.', - 'Warning: encountered multiple names for the same choice set (MembershipLevelEnum). This may be unwanted even though the generated schema is technically correct. Add an entry to ENUM_NAME_OVERRIDES to fix the naming.', - 'Warning: operationId "environments_app_metrics_historical_exports_retrieve" has collisions [(\'/api/environments/{project_id}/app_metrics/{plugin_config_id}/historical_exports/\', \'get\'), (\'/api/environments/{project_id}/app_metrics/{plugin_config_id}/historical_exports/{id}/\', \'get\')]. resolving with numeral suffixes.', - 'Warning: operationId "environments_insights_activity_retrieve" has collisions [(\'/api/environments/{project_id}/insights/{id}/activity/\', \'get\'), (\'/api/environments/{project_id}/insights/activity/\', \'get\')]. resolving with numeral suffixes.', 'Warning: operationId "Funnels" has collisions [(\'/api/environments/{project_id}/insights/funnel/\', \'post\'), (\'/api/projects/{project_id}/insights/funnel/\', \'post\')]. resolving with numeral suffixes.', 'Warning: operationId "Trends" has collisions [(\'/api/environments/{project_id}/insights/trend/\', \'post\'), (\'/api/projects/{project_id}/insights/trend/\', \'post\')]. resolving with numeral suffixes.', - 'Warning: operationId "environments_persons_activity_retrieve" has collisions [(\'/api/environments/{project_id}/persons/{id}/activity/\', \'get\'), (\'/api/environments/{project_id}/persons/activity/\', \'get\')]. resolving with numeral suffixes.', - 'Warning: operationId "list" has collisions [(\'/api/organizations/\', \'get\'), (\'/api/organizations/{organization_id}/projects/\', \'get\')]. resolving with numeral suffixes.', - 'Warning: operationId "create" has collisions [(\'/api/organizations/\', \'post\'), (\'/api/organizations/{organization_id}/projects/\', \'post\')]. resolving with numeral suffixes.', - 'Warning: operationId "retrieve" has collisions [(\'/api/organizations/{id}/\', \'get\'), (\'/api/organizations/{organization_id}/projects/{id}/\', \'get\')]. resolving with numeral suffixes.', - 'Warning: operationId "update" has collisions [(\'/api/organizations/{id}/\', \'put\'), (\'/api/organizations/{organization_id}/projects/{id}/\', \'put\')]. resolving with numeral suffixes.', - 'Warning: operationId "partial_update" has collisions [(\'/api/organizations/{id}/\', \'patch\'), (\'/api/organizations/{organization_id}/projects/{id}/\', \'patch\')]. resolving with numeral suffixes.', - 'Warning: operationId "destroy" has collisions [(\'/api/organizations/{id}/\', \'delete\'), (\'/api/organizations/{organization_id}/projects/{id}/\', \'delete\')]. resolving with numeral suffixes.', - 'Warning: operationId "batch_exports_list" has collisions [(\'/api/organizations/{organization_id}/batch_exports/\', \'get\'), (\'/api/projects/{project_id}/batch_exports/\', \'get\')]. resolving with numeral suffixes.', + 'Warning: operationId "app_metrics_historical_exports_retrieve" has collisions [(\'/api/projects/{project_id}/app_metrics/{plugin_config_id}/historical_exports/\', \'get\'), (\'/api/projects/{project_id}/app_metrics/{plugin_config_id}/historical_exports/{id}/\', \'get\')]. resolving with numeral suffixes.', + 'Warning: operationId "batch_exports_backfill_create" has collisions [(\'/api/organizations/{organization_id}/batch_exports/{id}/backfill/\', \'post\'), (\'/api/projects/{project_id}/batch_exports/{id}/backfill/\', \'post\')]. resolving with numeral suffixes.', 'Warning: operationId "batch_exports_create" has collisions [(\'/api/organizations/{organization_id}/batch_exports/\', \'post\'), (\'/api/projects/{project_id}/batch_exports/\', \'post\')]. resolving with numeral suffixes.', - 'Warning: operationId "batch_exports_retrieve" has collisions [(\'/api/organizations/{organization_id}/batch_exports/{id}/\', \'get\'), (\'/api/projects/{project_id}/batch_exports/{id}/\', \'get\')]. resolving with numeral suffixes.', - 'Warning: operationId "batch_exports_update" has collisions [(\'/api/organizations/{organization_id}/batch_exports/{id}/\', \'put\'), (\'/api/projects/{project_id}/batch_exports/{id}/\', \'put\')]. resolving with numeral suffixes.', - 'Warning: operationId "batch_exports_partial_update" has collisions [(\'/api/organizations/{organization_id}/batch_exports/{id}/\', \'patch\'), (\'/api/projects/{project_id}/batch_exports/{id}/\', \'patch\')]. resolving with numeral suffixes.', 'Warning: operationId "batch_exports_destroy" has collisions [(\'/api/organizations/{organization_id}/batch_exports/{id}/\', \'delete\'), (\'/api/projects/{project_id}/batch_exports/{id}/\', \'delete\')]. resolving with numeral suffixes.', - 'Warning: operationId "batch_exports_backfill_create" has collisions [(\'/api/organizations/{organization_id}/batch_exports/{id}/backfill/\', \'post\'), (\'/api/projects/{project_id}/batch_exports/{id}/backfill/\', \'post\')]. resolving with numeral suffixes.', + 'Warning: operationId "batch_exports_list" has collisions [(\'/api/organizations/{organization_id}/batch_exports/\', \'get\'), (\'/api/projects/{project_id}/batch_exports/\', \'get\')]. resolving with numeral suffixes.', 'Warning: operationId "batch_exports_logs_retrieve" has collisions [(\'/api/organizations/{organization_id}/batch_exports/{id}/logs/\', \'get\'), (\'/api/projects/{project_id}/batch_exports/{id}/logs/\', \'get\')]. resolving with numeral suffixes.', + 'Warning: operationId "batch_exports_partial_update" has collisions [(\'/api/organizations/{organization_id}/batch_exports/{id}/\', \'patch\'), (\'/api/projects/{project_id}/batch_exports/{id}/\', \'patch\')]. resolving with numeral suffixes.', 'Warning: operationId "batch_exports_pause_create" has collisions [(\'/api/organizations/{organization_id}/batch_exports/{id}/pause/\', \'post\'), (\'/api/projects/{project_id}/batch_exports/{id}/pause/\', \'post\')]. resolving with numeral suffixes.', + 'Warning: operationId "batch_exports_retrieve" has collisions [(\'/api/organizations/{organization_id}/batch_exports/{id}/\', \'get\'), (\'/api/projects/{project_id}/batch_exports/{id}/\', \'get\')]. resolving with numeral suffixes.', 'Warning: operationId "batch_exports_unpause_create" has collisions [(\'/api/organizations/{organization_id}/batch_exports/{id}/unpause/\', \'post\'), (\'/api/projects/{project_id}/batch_exports/{id}/unpause/\', \'post\')]. resolving with numeral suffixes.', - 'Warning: operationId "app_metrics_historical_exports_retrieve" has collisions [(\'/api/projects/{project_id}/app_metrics/{plugin_config_id}/historical_exports/\', \'get\'), (\'/api/projects/{project_id}/app_metrics/{plugin_config_id}/historical_exports/{id}/\', \'get\')]. resolving with numeral suffixes.', + 'Warning: operationId "batch_exports_update" has collisions [(\'/api/organizations/{organization_id}/batch_exports/{id}/\', \'put\'), (\'/api/projects/{project_id}/batch_exports/{id}/\', \'put\')]. resolving with numeral suffixes.', 'Warning: operationId "cohorts_activity_retrieve" has collisions [(\'/api/projects/{project_id}/cohorts/{id}/activity/\', \'get\'), (\'/api/projects/{project_id}/cohorts/activity/\', \'get\')]. resolving with numeral suffixes.', + 'Warning: operationId "create" has collisions [(\'/api/organizations/\', \'post\'), (\'/api/organizations/{organization_id}/projects/\', \'post\')]. resolving with numeral suffixes.', + 'Warning: operationId "destroy" has collisions [(\'/api/organizations/{id}/\', \'delete\'), (\'/api/organizations/{organization_id}/projects/{id}/\', \'delete\')]. resolving with numeral suffixes.', + 'Warning: operationId "environments_app_metrics_historical_exports_retrieve" has collisions [(\'/api/environments/{project_id}/app_metrics/{plugin_config_id}/historical_exports/\', \'get\'), (\'/api/environments/{project_id}/app_metrics/{plugin_config_id}/historical_exports/{id}/\', \'get\')]. resolving with numeral suffixes.', + 'Warning: operationId "environments_insights_activity_retrieve" has collisions [(\'/api/environments/{project_id}/insights/{id}/activity/\', \'get\'), (\'/api/environments/{project_id}/insights/activity/\', \'get\')]. resolving with numeral suffixes.', + 'Warning: operationId "environments_persons_activity_retrieve" has collisions [(\'/api/environments/{project_id}/persons/{id}/activity/\', \'get\'), (\'/api/environments/{project_id}/persons/activity/\', \'get\')]. resolving with numeral suffixes.', 'Warning: operationId "event_definitions_retrieve" has collisions [(\'/api/projects/{project_id}/event_definitions/\', \'get\'), (\'/api/projects/{project_id}/event_definitions/{id}/\', \'get\')]. resolving with numeral suffixes.', 'Warning: operationId "feature_flags_activity_retrieve" has collisions [(\'/api/projects/{project_id}/feature_flags/{id}/activity/\', \'get\'), (\'/api/projects/{project_id}/feature_flags/activity/\', \'get\')]. resolving with numeral suffixes.', 'Warning: operationId "insights_activity_retrieve" has collisions [(\'/api/projects/{project_id}/insights/{id}/activity/\', \'get\'), (\'/api/projects/{project_id}/insights/activity/\', \'get\')]. resolving with numeral suffixes.', + 'Warning: operationId "list" has collisions [(\'/api/organizations/\', \'get\'), (\'/api/organizations/{organization_id}/projects/\', \'get\')]. resolving with numeral suffixes.', 'Warning: operationId "notebooks_activity_retrieve" has collisions [(\'/api/projects/{project_id}/notebooks/{short_id}/activity/\', \'get\'), (\'/api/projects/{project_id}/notebooks/activity/\', \'get\')]. resolving with numeral suffixes.', + 'Warning: operationId "partial_update" has collisions [(\'/api/organizations/{id}/\', \'patch\'), (\'/api/organizations/{organization_id}/projects/{id}/\', \'patch\')]. resolving with numeral suffixes.', 'Warning: operationId "persons_activity_retrieve" has collisions [(\'/api/projects/{project_id}/persons/{id}/activity/\', \'get\'), (\'/api/projects/{project_id}/persons/activity/\', \'get\')]. resolving with numeral suffixes.', 'Warning: operationId "property_definitions_retrieve" has collisions [(\'/api/projects/{project_id}/property_definitions/\', \'get\'), (\'/api/projects/{project_id}/property_definitions/{id}/\', \'get\')]. resolving with numeral suffixes.', + 'Warning: operationId "retrieve" has collisions [(\'/api/organizations/{id}/\', \'get\'), (\'/api/organizations/{organization_id}/projects/{id}/\', \'get\')]. resolving with numeral suffixes.', 'Warning: operationId "surveys_activity_retrieve" has collisions [(\'/api/projects/{project_id}/surveys/{id}/activity/\', \'get\'), (\'/api/projects/{project_id}/surveys/activity/\', \'get\')]. resolving with numeral suffixes.', - '', + 'Warning: operationId "update" has collisions [(\'/api/organizations/{id}/\', \'put\'), (\'/api/organizations/{organization_id}/projects/{id}/\', \'put\')]. resolving with numeral suffixes.', ]) # --- diff --git a/posthog/api/test/test_api_docs.py b/posthog/api/test/test_api_docs.py index f7f7ab1d418b0..d5e1fc9b3bbf6 100644 --- a/posthog/api/test/test_api_docs.py +++ b/posthog/api/test/test_api_docs.py @@ -30,4 +30,4 @@ def test_api_docs_generation_warnings_snapshot(self) -> None: # we log lots of warnings when generating the schema warnings = self._capsys.readouterr().err.split("\n") - assert warnings == self._snapshot + assert sorted(warnings) == self._snapshot From 78ea7fb6274cb150241e5f3dd6ab6d90b07b1985 Mon Sep 17 00:00:00 2001 From: Marcus Hof <13001502+MarconLP@users.noreply.github.com> Date: Wed, 30 Oct 2024 11:37:04 +0100 Subject: [PATCH 05/22] feat(cdp): add option to run a hog function per person per event (#25874) --- .../filters/HogFunctionFilters.tsx | 4 ++ plugin-server/tests/cdp/examples.ts | 12 +++++- plugin-server/tests/cdp/hog-masker.test.ts | 37 +++++++++++++++---- 3 files changed, 43 insertions(+), 10 deletions(-) diff --git a/frontend/src/scenes/pipeline/hogfunctions/filters/HogFunctionFilters.tsx b/frontend/src/scenes/pipeline/hogfunctions/filters/HogFunctionFilters.tsx index 9dee4c767cc5e..ed98f0f3de14b 100644 --- a/frontend/src/scenes/pipeline/hogfunctions/filters/HogFunctionFilters.tsx +++ b/frontend/src/scenes/pipeline/hogfunctions/filters/HogFunctionFilters.tsx @@ -161,6 +161,10 @@ export function HogFunctionFilters(): JSX.Element { value: '{person.id}', label: 'Run once per person per interval', }, + { + value: '{concat(person.id, event.event)}', + label: 'Run once per person per event per interval', + }, ]} value={value?.hash ?? null} onChange={(val) => diff --git a/plugin-server/tests/cdp/examples.ts b/plugin-server/tests/cdp/examples.ts index fafafce472e3d..f92dd9ed4f97a 100644 --- a/plugin-server/tests/cdp/examples.ts +++ b/plugin-server/tests/cdp/examples.ts @@ -708,8 +708,16 @@ export const HOG_MASK_EXAMPLES: Record> person: { masking: { ttl: 30, - hash: '{person.uuid}', - bytecode: ['_h', 32, 'uuid', 32, 'person', 1, 2], + hash: '{person.id}', + bytecode: ['_h', 32, 'id', 32, 'person', 1, 2], + threshold: null, + }, + }, + personAndEvent: { + masking: { + ttl: 30, + hash: '{concat(person.id, event.event)}', + bytecode: ['_H', 1, 32, 'id', 32, 'person', 1, 2, 32, 'event', 32, 'event', 1, 2, 2, 'concat', 2], threshold: null, }, }, diff --git a/plugin-server/tests/cdp/hog-masker.test.ts b/plugin-server/tests/cdp/hog-masker.test.ts index df05043290e63..a3c7a955574db 100644 --- a/plugin-server/tests/cdp/hog-masker.test.ts +++ b/plugin-server/tests/cdp/hog-masker.test.ts @@ -118,6 +118,7 @@ describe('HogMasker', () => { describe('ttl', () => { let hogFunctionPerson: HogFunctionType let hogFunctionAll: HogFunctionType + let hogFunctionPersonAndEvent: HogFunctionType beforeEach(() => { hogFunctionPerson = createHogFunction({ @@ -127,6 +128,13 @@ describe('HogMasker', () => { }, }) + hogFunctionPersonAndEvent = createHogFunction({ + masking: { + ...HOG_MASK_EXAMPLES.personAndEvent.masking!, + ttl: 1, + }, + }) + hogFunctionAll = createHogFunction({ masking: { ...HOG_MASK_EXAMPLES.all.masking!, @@ -145,20 +153,33 @@ describe('HogMasker', () => { }) it('should mask with custom hog hash', async () => { - const globalsPerson1 = createHogExecutionGlobals({ person: { uuid: '1' } as any }) - const globalsPerson2 = createHogExecutionGlobals({ person: { uuid: '2' } as any }) + const globals1 = createHogExecutionGlobals({ + person: { id: '1' } as any, + event: { event: '$pageview' } as any, + }) + const globals2 = createHogExecutionGlobals({ + person: { id: '2' } as any, + event: { event: '$autocapture' } as any, + }) + const globals3 = createHogExecutionGlobals({ + person: { id: '2' } as any, + event: { event: '$pageview' } as any, + }) const invocations = [ - createInvocation(hogFunctionPerson, globalsPerson1), - createInvocation(hogFunctionAll, globalsPerson1), - createInvocation(hogFunctionPerson, globalsPerson2), - createInvocation(hogFunctionAll, globalsPerson2), + createInvocation(hogFunctionPerson, globals1), + createInvocation(hogFunctionAll, globals1), + createInvocation(hogFunctionPersonAndEvent, globals1), + createInvocation(hogFunctionPerson, globals2), + createInvocation(hogFunctionAll, globals2), + createInvocation(hogFunctionPersonAndEvent, globals2), + createInvocation(hogFunctionPersonAndEvent, globals3), ] const res = await masker.filterByMasking(invocations) expect(res.masked.length).toEqual(1) - expect(res.notMasked.length).toEqual(3) + expect(res.notMasked.length).toEqual(6) const res2 = await masker.filterByMasking(invocations) - expect(res2.masked.length).toEqual(4) + expect(res2.masked.length).toEqual(7) expect(res2.notMasked.length).toEqual(0) }) From 3946758c98b82f01435186a523bcd593771f636b Mon Sep 17 00:00:00 2001 From: Marcus Hof <13001502+MarconLP@users.noreply.github.com> Date: Wed, 30 Oct 2024 12:14:32 +0100 Subject: [PATCH 06/22] rename per event trigger option label (#25896) --- .../scenes/pipeline/hogfunctions/filters/HogFunctionFilters.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/scenes/pipeline/hogfunctions/filters/HogFunctionFilters.tsx b/frontend/src/scenes/pipeline/hogfunctions/filters/HogFunctionFilters.tsx index ed98f0f3de14b..681e63a6239b2 100644 --- a/frontend/src/scenes/pipeline/hogfunctions/filters/HogFunctionFilters.tsx +++ b/frontend/src/scenes/pipeline/hogfunctions/filters/HogFunctionFilters.tsx @@ -163,7 +163,7 @@ export function HogFunctionFilters(): JSX.Element { }, { value: '{concat(person.id, event.event)}', - label: 'Run once per person per event per interval', + label: 'Run once per person per event name per interval', }, ]} value={value?.hash ?? null} From a9a77ace552df5492c1adc7b0f00728325d8d097 Mon Sep 17 00:00:00 2001 From: Paul D'Ambra Date: Wed, 30 Oct 2024 12:39:10 +0100 Subject: [PATCH 07/22] fix: session when impersonated (#25897) --- frontend/src/loadPostHogJS.tsx | 52 ++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/frontend/src/loadPostHogJS.tsx b/frontend/src/loadPostHogJS.tsx index 2c5a3285ef509..badabf1105246 100644 --- a/frontend/src/loadPostHogJS.tsx +++ b/frontend/src/loadPostHogJS.tsx @@ -29,16 +29,38 @@ export function loadPostHogJS(): void { bootstrap: window.POSTHOG_USER_IDENTITY_WITH_FLAGS ? window.POSTHOG_USER_IDENTITY_WITH_FLAGS : {}, opt_in_site_apps: true, api_transport: 'fetch', - loaded: (posthog) => { - if (posthog.sessionRecording) { - posthog.sessionRecording._forceAllowLocalhostNetworkCapture = true + loaded: (loadedInstance) => { + if (loadedInstance.sessionRecording) { + loadedInstance.sessionRecording._forceAllowLocalhostNetworkCapture = true } if (window.IMPERSONATED_SESSION) { - posthog.opt_out_capturing() + loadedInstance.sessionManager?.resetSessionId() + loadedInstance.opt_out_capturing() } else { - posthog.opt_in_capturing() + loadedInstance.opt_in_capturing() } + + const Cypress = (window as any).Cypress + + if (Cypress) { + Object.entries(Cypress.env()).forEach(([key, value]) => { + if (key.startsWith('POSTHOG_PROPERTY_')) { + loadedInstance.register_for_session({ + [key.replace('POSTHOG_PROPERTY_', 'E2E_TESTING_').toLowerCase()]: value, + }) + } + }) + } + + // This is a helpful flag to set to automatically reset the recording session on load for testing multiple recordings + const shouldResetSessionOnLoad = loadedInstance.getFeatureFlag(FEATURE_FLAGS.SESSION_RESET_ON_LOAD) + if (shouldResetSessionOnLoad) { + loadedInstance.sessionManager?.resetSessionId() + } + + // Make sure we have access to the object in window for debugging + window.posthog = loadedInstance }, scroll_root_selector: ['main', 'html'], autocapture: { @@ -52,26 +74,6 @@ export function loadPostHogJS(): void { : undefined, }) ) - - const Cypress = (window as any).Cypress - - if (Cypress) { - Object.entries(Cypress.env()).forEach(([key, value]) => { - if (key.startsWith('POSTHOG_PROPERTY_')) { - posthog.register_for_session({ - [key.replace('POSTHOG_PROPERTY_', 'E2E_TESTING_').toLowerCase()]: value, - }) - } - }) - } - - // This is a helpful flag to set to automatically reset the recording session on load for testing multiple recordings - const shouldResetSessionOnLoad = posthog.getFeatureFlag(FEATURE_FLAGS.SESSION_RESET_ON_LOAD) - if (shouldResetSessionOnLoad) { - posthog.sessionManager?.resetSessionId() - } - // Make sure we have access to the object in window for debugging - window.posthog = posthog } else { posthog.init('fake token', { autocapture: false, From 019d4dc71a29b8151e2c35e23c17ab8491cda5a1 Mon Sep 17 00:00:00 2001 From: Juraj Majerik Date: Wed, 30 Oct 2024 12:55:15 +0100 Subject: [PATCH 08/22] chore(experiments HogQL): render main goal from HogQL (#25852) --- ee/clickhouse/views/experiments.py | 1 + ...r-onboarding--onboarding-billing--dark.png | Bin 173264 -> 173185 bytes frontend/src/lib/constants.tsx | 1 + frontend/src/queries/schema.json | 160 +++++++- frontend/src/queries/schema.ts | 9 +- .../scenes/experiments/Experiment.stories.tsx | 3 + .../experiments/ExperimentView/Goal.tsx | 19 +- .../ExperimentView/SecondaryMetricsTable.tsx | 3 +- .../ExperimentView/SummaryTable.tsx | 4 +- .../experiments/ExperimentView/components.tsx | 122 ++++-- .../scenes/experiments/experimentLogic.tsx | 203 +++++++--- frontend/src/types.ts | 12 +- .../api/test/__snapshots__/test_api_docs.ambr | 2 + .../test/__snapshots__/test_in_cohort.ambr | 8 +- .../experiment_funnels_query_runner.py | 16 +- .../experiment_trends_query_runner.py | 9 +- .../test/__snapshots__/test_trends.ambr | 204 ++++++++-- posthog/schema.py | 355 ++++++++++-------- 18 files changed, 810 insertions(+), 321 deletions(-) diff --git a/ee/clickhouse/views/experiments.py b/ee/clickhouse/views/experiments.py index 6df24dc012cea..44fe8b72b5045 100644 --- a/ee/clickhouse/views/experiments.py +++ b/ee/clickhouse/views/experiments.py @@ -184,6 +184,7 @@ class Meta: "created_by", "created_at", "updated_at", + "metrics", ] read_only_fields = [ "id", diff --git a/frontend/__snapshots__/scenes-other-onboarding--onboarding-billing--dark.png b/frontend/__snapshots__/scenes-other-onboarding--onboarding-billing--dark.png index a11674466fae07c459640c0e6051b397481dd887..032e85e82d703a6f323726b67351abba84d04bcc 100644 GIT binary patch delta 155395 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 *BkX(X&bWuoD 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 z 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

$JPP;p#>RSlD5C} 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 X+VY%6h5iz}Nq1LS^LDY)Ur+xJexC+l diff --git a/frontend/src/lib/constants.tsx b/frontend/src/lib/constants.tsx index 1ba86ab79c36b..a13f3277ec41f 100644 --- a/frontend/src/lib/constants.tsx +++ b/frontend/src/lib/constants.tsx @@ -220,6 +220,7 @@ export const FEATURE_FLAGS = { LEGACY_ACTION_WEBHOOKS: 'legacy-action-webhooks', // owner: @mariusandra #team-cdp SESSION_REPLAY_URL_TRIGGER: 'session-replay-url-trigger', // owner: @richard-better #team-replay REPLAY_TEMPLATES: 'replay-templates', // owner: @raquelmsmith #team-replay + EXPERIMENTS_HOGQL: 'experiments-hogql', // owner: @jurajmajerik #team-experiments ROLE_BASED_ACCESS_CONTROL: 'role-based-access-control', // owner: @zach EXPERIMENTS_HOLDOUTS: 'experiments-holdouts', // owner: @jurajmajerik #team-experiments MESSAGING: 'messaging', // owner @mariusandra #team-cdp diff --git a/frontend/src/queries/schema.json b/frontend/src/queries/schema.json index 75b26c88bc4de..757097fa12025 100644 --- a/frontend/src/queries/schema.json +++ b/frontend/src/queries/schema.json @@ -1315,12 +1315,25 @@ "expected_loss": { "type": "number" }, + "funnels_query": { + "$ref": "#/definitions/FunnelsQuery" + }, "insight": { - "$ref": "#/definitions/FunnelsQueryResponse" + "items": { + "items": { + "type": "object" + }, + "type": "array" + }, + "type": "array" }, "is_cached": { "type": "boolean" }, + "kind": { + "const": "ExperimentFunnelsQuery", + "type": "string" + }, "last_refresh": { "format": "date-time", "type": "string" @@ -1361,6 +1374,7 @@ "expected_loss", "insight", "is_cached", + "kind", "last_refresh", "next_allowed_client_refresh", "probability", @@ -1385,6 +1399,9 @@ "description": "What triggered the calculation of the query, leave empty if user/immediate", "type": "string" }, + "count_query": { + "$ref": "#/definitions/TrendsQuery" + }, "credible_intervals": { "additionalProperties": { "items": { @@ -1396,12 +1413,22 @@ }, "type": "object" }, + "exposure_query": { + "$ref": "#/definitions/TrendsQuery" + }, "insight": { - "$ref": "#/definitions/TrendsQueryResponse" + "items": { + "type": "object" + }, + "type": "array" }, "is_cached": { "type": "boolean" }, + "kind": { + "const": "ExperimentTrendsQuery", + "type": "string" + }, "last_refresh": { "format": "date-time", "type": "string" @@ -1444,6 +1471,7 @@ "credible_intervals", "insight", "is_cached", + "kind", "last_refresh", "next_allowed_client_refresh", "p_value", @@ -3732,8 +3760,21 @@ "expected_loss": { "type": "number" }, + "funnels_query": { + "$ref": "#/definitions/FunnelsQuery" + }, "insight": { - "$ref": "#/definitions/FunnelsQueryResponse" + "items": { + "items": { + "type": "object" + }, + "type": "array" + }, + "type": "array" + }, + "kind": { + "const": "ExperimentFunnelsQuery", + "type": "string" }, "probability": { "additionalProperties": { @@ -3758,6 +3799,7 @@ "credible_intervals", "expected_loss", "insight", + "kind", "probability", "significance_code", "significant", @@ -3768,6 +3810,9 @@ { "additionalProperties": false, "properties": { + "count_query": { + "$ref": "#/definitions/TrendsQuery" + }, "credible_intervals": { "additionalProperties": { "items": { @@ -3779,8 +3824,18 @@ }, "type": "object" }, + "exposure_query": { + "$ref": "#/definitions/TrendsQuery" + }, "insight": { - "$ref": "#/definitions/TrendsQueryResponse" + "items": { + "type": "object" + }, + "type": "array" + }, + "kind": { + "const": "ExperimentTrendsQuery", + "type": "string" }, "p_value": { "type": "number" @@ -3807,6 +3862,7 @@ "required": [ "credible_intervals", "insight", + "kind", "p_value", "probability", "significance_code", @@ -5215,8 +5271,21 @@ "expected_loss": { "type": "number" }, + "funnels_query": { + "$ref": "#/definitions/FunnelsQuery" + }, "insight": { - "$ref": "#/definitions/FunnelsQueryResponse" + "items": { + "items": { + "type": "object" + }, + "type": "array" + }, + "type": "array" + }, + "kind": { + "const": "ExperimentFunnelsQuery", + "type": "string" }, "probability": { "additionalProperties": { @@ -5238,6 +5307,7 @@ } }, "required": [ + "kind", "insight", "variants", "probability", @@ -5282,6 +5352,9 @@ "ExperimentTrendsQueryResponse": { "additionalProperties": false, "properties": { + "count_query": { + "$ref": "#/definitions/TrendsQuery" + }, "credible_intervals": { "additionalProperties": { "items": { @@ -5293,8 +5366,18 @@ }, "type": "object" }, + "exposure_query": { + "$ref": "#/definitions/TrendsQuery" + }, "insight": { - "$ref": "#/definitions/TrendsQueryResponse" + "items": { + "type": "object" + }, + "type": "array" + }, + "kind": { + "const": "ExperimentTrendsQuery", + "type": "string" }, "p_value": { "type": "number" @@ -5319,6 +5402,7 @@ } }, "required": [ + "kind", "insight", "variants", "probability", @@ -8962,8 +9046,21 @@ "expected_loss": { "type": "number" }, + "funnels_query": { + "$ref": "#/definitions/FunnelsQuery" + }, "insight": { - "$ref": "#/definitions/FunnelsQueryResponse" + "items": { + "items": { + "type": "object" + }, + "type": "array" + }, + "type": "array" + }, + "kind": { + "const": "ExperimentFunnelsQuery", + "type": "string" }, "probability": { "additionalProperties": { @@ -8985,6 +9082,7 @@ } }, "required": [ + "kind", "insight", "variants", "probability", @@ -8998,6 +9096,9 @@ { "additionalProperties": false, "properties": { + "count_query": { + "$ref": "#/definitions/TrendsQuery" + }, "credible_intervals": { "additionalProperties": { "items": { @@ -9009,8 +9110,18 @@ }, "type": "object" }, + "exposure_query": { + "$ref": "#/definitions/TrendsQuery" + }, "insight": { - "$ref": "#/definitions/TrendsQueryResponse" + "items": { + "type": "object" + }, + "type": "array" + }, + "kind": { + "const": "ExperimentTrendsQuery", + "type": "string" }, "p_value": { "type": "number" @@ -9035,6 +9146,7 @@ } }, "required": [ + "kind", "insight", "variants", "probability", @@ -9607,8 +9719,21 @@ "expected_loss": { "type": "number" }, + "funnels_query": { + "$ref": "#/definitions/FunnelsQuery" + }, "insight": { - "$ref": "#/definitions/FunnelsQueryResponse" + "items": { + "items": { + "type": "object" + }, + "type": "array" + }, + "type": "array" + }, + "kind": { + "const": "ExperimentFunnelsQuery", + "type": "string" }, "probability": { "additionalProperties": { @@ -9633,6 +9758,7 @@ "credible_intervals", "expected_loss", "insight", + "kind", "probability", "significance_code", "significant", @@ -9643,6 +9769,9 @@ { "additionalProperties": false, "properties": { + "count_query": { + "$ref": "#/definitions/TrendsQuery" + }, "credible_intervals": { "additionalProperties": { "items": { @@ -9654,8 +9783,18 @@ }, "type": "object" }, + "exposure_query": { + "$ref": "#/definitions/TrendsQuery" + }, "insight": { - "$ref": "#/definitions/TrendsQueryResponse" + "items": { + "type": "object" + }, + "type": "array" + }, + "kind": { + "const": "ExperimentTrendsQuery", + "type": "string" }, "p_value": { "type": "number" @@ -9682,6 +9821,7 @@ "required": [ "credible_intervals", "insight", + "kind", "p_value", "probability", "significance_code", diff --git a/frontend/src/queries/schema.ts b/frontend/src/queries/schema.ts index 273605a42f6d7..8fb58464d3ce4 100644 --- a/frontend/src/queries/schema.ts +++ b/frontend/src/queries/schema.ts @@ -1621,7 +1621,10 @@ export enum ExperimentSignificanceCode { } export interface ExperimentTrendsQueryResponse { - insight: TrendsQueryResponse + kind: NodeKind.ExperimentTrendsQuery + insight: Record[] + count_query?: TrendsQuery + exposure_query?: TrendsQuery variants: ExperimentVariantTrendsBaseStats[] probability: Record significant: boolean @@ -1633,7 +1636,9 @@ export interface ExperimentTrendsQueryResponse { export type CachedExperimentTrendsQueryResponse = CachedQueryResponse export interface ExperimentFunnelsQueryResponse { - insight: FunnelsQueryResponse + kind: NodeKind.ExperimentFunnelsQuery + insight: Record[][] + funnels_query?: FunnelsQuery variants: ExperimentVariantFunnelsBaseStats[] probability: Record significant: boolean diff --git a/frontend/src/scenes/experiments/Experiment.stories.tsx b/frontend/src/scenes/experiments/Experiment.stories.tsx index daab995ff3aa1..8d2aecd75ab1e 100644 --- a/frontend/src/scenes/experiments/Experiment.stories.tsx +++ b/frontend/src/scenes/experiments/Experiment.stories.tsx @@ -116,6 +116,7 @@ const MOCK_FUNNEL_EXPERIMENT: Experiment = { interval: 'day', filter_test_accounts: true, }, + metrics: [], archived: false, created_by: { id: 1, @@ -172,6 +173,7 @@ const MOCK_TREND_EXPERIMENT: Experiment = { }, }, }, + metrics: [], parameters: { feature_flag_variants: [ { @@ -277,6 +279,7 @@ const MOCK_TREND_EXPERIMENT_MANY_VARIANTS: Experiment = { }, }, }, + metrics: [], parameters: { feature_flag_variants: [ { diff --git a/frontend/src/scenes/experiments/ExperimentView/Goal.tsx b/frontend/src/scenes/experiments/ExperimentView/Goal.tsx index b0ef5701ec5c7..c68acb47f9df4 100644 --- a/frontend/src/scenes/experiments/ExperimentView/Goal.tsx +++ b/frontend/src/scenes/experiments/ExperimentView/Goal.tsx @@ -238,17 +238,16 @@ export function Goal(): JSX.Element { Change goal - {experimentInsightType === InsightType.TRENDS && - !experimentMathAggregationForTrends(experiment.filters) && ( - <> - -

-
- -
+ {experimentInsightType === InsightType.TRENDS && !experimentMathAggregationForTrends() && ( + <> + +
+
+
- - )} +
+ + )}
) diff --git a/frontend/src/scenes/experiments/ExperimentView/SecondaryMetricsTable.tsx b/frontend/src/scenes/experiments/ExperimentView/SecondaryMetricsTable.tsx index aadaebee40729..e9c19a72eb589 100644 --- a/frontend/src/scenes/experiments/ExperimentView/SecondaryMetricsTable.tsx +++ b/frontend/src/scenes/experiments/ExperimentView/SecondaryMetricsTable.tsx @@ -157,7 +157,6 @@ export function SecondaryMetricsTable({ experiment.secondary_metrics?.forEach((metric, idx) => { const targetResults = secondaryMetricResults?.[idx] - const targetResultFilters = targetResults?.filters const winningVariant = getHighestProbabilityVariant(targetResults || null) const Header = (): JSX.Element => ( @@ -206,7 +205,7 @@ export function SecondaryMetricsTable({ )} ] - {experimentMathAggregationForTrends(targetResultFilters) ? 'metric' : 'count'} + {experimentMathAggregationForTrends() ? 'metric' : 'count'} ), diff --git a/frontend/src/scenes/experiments/ExperimentView/SummaryTable.tsx b/frontend/src/scenes/experiments/ExperimentView/SummaryTable.tsx index e046d0f3a52fe..1814cb8717795 100644 --- a/frontend/src/scenes/experiments/ExperimentView/SummaryTable.tsx +++ b/frontend/src/scenes/experiments/ExperimentView/SummaryTable.tsx @@ -59,9 +59,7 @@ export function SummaryTable(): JSX.Element { {experimentResults.insight?.[0] && 'action' in experimentResults.insight[0] && ( )} - - {experimentMathAggregationForTrends(experimentResults?.filters) ? 'metric' : 'count'} - + {experimentMathAggregationForTrends() ? 'metric' : 'count'} ), render: function Key(_, variant): JSX.Element { diff --git a/frontend/src/scenes/experiments/ExperimentView/components.tsx b/frontend/src/scenes/experiments/ExperimentView/components.tsx index e61c32505c857..43a7b46e58f74 100644 --- a/frontend/src/scenes/experiments/ExperimentView/components.tsx +++ b/frontend/src/scenes/experiments/ExperimentView/components.tsx @@ -22,6 +22,7 @@ import { FEATURE_FLAGS } from 'lib/constants' import { dayjs } from 'lib/dayjs' import { IconAreaChart } from 'lib/lemon-ui/icons' import { More } from 'lib/lemon-ui/LemonButton/More' +import { featureFlagLogic } from 'lib/logic/featureFlagLogic' import { useEffect, useState } from 'react' import { urls } from 'scenes/urls' @@ -29,7 +30,15 @@ import { groupsModel } from '~/models/groupsModel' import { filtersToQueryNode } from '~/queries/nodes/InsightQuery/utils/filtersToQueryNode' import { queryFromFilters } from '~/queries/nodes/InsightViz/utils' import { Query } from '~/queries/Query/Query' -import { InsightVizNode, NodeKind } from '~/queries/schema' +import { + CachedExperimentFunnelsQueryResponse, + CachedExperimentTrendsQueryResponse, + ExperimentFunnelsQueryResponse, + ExperimentTrendsQueryResponse, + InsightQueryNode, + InsightVizNode, + NodeKind, +} from '~/queries/schema' import { Experiment, Experiment as ExperimentType, @@ -108,10 +117,54 @@ export function ResultsQuery({ targetResults, showTable, }: { - targetResults: ExperimentResults['result'] | null + targetResults: ExperimentResults['result'] | ExperimentTrendsQueryResponse | ExperimentFunnelsQueryResponse | null showTable: boolean }): JSX.Element { - if (!targetResults?.filters) { + const { featureFlags } = useValues(featureFlagLogic) + if (featureFlags[FEATURE_FLAGS.EXPERIMENTS_HOGQL]) { + const newQueryResults = targetResults as unknown as + | CachedExperimentTrendsQueryResponse + | CachedExperimentFunnelsQueryResponse + + const query = + newQueryResults.kind === NodeKind.ExperimentTrendsQuery + ? newQueryResults.count_query + : newQueryResults.funnels_query + const fakeInsightId = Math.random().toString(36).substring(2, 15) + + return ( + + ) + } + + const oldQueryResults = targetResults as ExperimentResults['result'] + + if (!oldQueryResults?.filters) { return <> } @@ -119,22 +172,22 @@ export function ResultsQuery({ }: { icon?: JSX.Element }): JSX.Element { - const { experimentResults, experiment } = useValues(experimentLogic) + const { experimentResults, experiment, featureFlags } = useValues(experimentLogic) // keep in sync with https://github.com/PostHog/posthog/blob/master/ee/clickhouse/queries/experiments/funnel_experiment_result.py#L71 // :TRICKY: In the case of no results, we still want users to explore the query, so they can debug further. @@ -160,18 +213,41 @@ export function ExploreButton({ icon = }: { icon?: JSX.Element properties: [], } - const query: InsightVizNode = { - kind: NodeKind.InsightVizNode, - source: filtersToQueryNode( - transformResultFilters( - experimentResults?.filters - ? { ...experimentResults.filters, explicit_date: true } - : filtersFromExperiment - ) - ), - showTable: true, - showLastComputation: true, - showLastComputationRefresh: false, + let query: InsightVizNode + if (featureFlags[FEATURE_FLAGS.EXPERIMENTS_HOGQL]) { + const newQueryResults = experimentResults as unknown as + | CachedExperimentTrendsQueryResponse + | CachedExperimentFunnelsQueryResponse + + const source = + newQueryResults.kind === NodeKind.ExperimentTrendsQuery + ? newQueryResults.count_query + : newQueryResults.funnels_query + + query = { + kind: NodeKind.InsightVizNode, + source: source as InsightQueryNode, + } + } else { + const oldQueryResults = experimentResults as ExperimentResults['result'] + + if (!oldQueryResults?.filters) { + return <> + } + + query = { + kind: NodeKind.InsightVizNode, + source: filtersToQueryNode( + transformResultFilters( + oldQueryResults?.filters + ? { ...oldQueryResults.filters, explicit_date: true } + : filtersFromExperiment + ) + ), + showTable: true, + showLastComputation: true, + showLastComputationRefresh: false, + } } return ( diff --git a/frontend/src/scenes/experiments/experimentLogic.tsx b/frontend/src/scenes/experiments/experimentLogic.tsx index 19e33aca83831..4db270269a634 100644 --- a/frontend/src/scenes/experiments/experimentLogic.tsx +++ b/frontend/src/scenes/experiments/experimentLogic.tsx @@ -5,6 +5,7 @@ import { loaders } from 'kea-loaders' import { router, urlToAction } from 'kea-router' import api from 'lib/api' import { EXPERIMENT_DEFAULT_DURATION, FunnelLayout } from 'lib/constants' +import { FEATURE_FLAGS } from 'lib/constants' import { dayjs } from 'lib/dayjs' import { lemonToast } from 'lib/lemon-ui/LemonToast/LemonToast' import { Tooltip } from 'lib/lemon-ui/Tooltip' @@ -27,7 +28,15 @@ import { cohortsModel } from '~/models/cohortsModel' import { groupsModel } from '~/models/groupsModel' import { filtersToQueryNode } from '~/queries/nodes/InsightQuery/utils/filtersToQueryNode' import { queryNodeToFilter } from '~/queries/nodes/InsightQuery/utils/queryNodeToFilter' -import { FunnelsQuery, InsightVizNode, TrendsQuery } from '~/queries/schema' +import { + CachedExperimentFunnelsQueryResponse, + CachedExperimentTrendsQueryResponse, + ExperimentTrendsQuery, + FunnelsQuery, + InsightVizNode, + NodeKind, + TrendsQuery, +} from '~/queries/schema' import { isFunnelsQuery } from '~/queries/utils' import { ActionFilter as ActionFilterType, @@ -62,6 +71,7 @@ const NEW_EXPERIMENT: Experiment = { name: '', feature_flag_key: '', filters: {}, + metrics: [], parameters: { feature_flag_variants: [ { key: 'control', rollout_percentage: 50 }, @@ -767,10 +777,36 @@ export const experimentLogic = kea([ }, }, experimentResults: [ - null as ExperimentResults['result'] | null, + null as + | ExperimentResults['result'] + | CachedExperimentTrendsQueryResponse + | CachedExperimentFunnelsQueryResponse + | null, { - loadExperimentResults: async (refresh?: boolean) => { + loadExperimentResults: async ( + refresh?: boolean + ): Promise< + | ExperimentResults['result'] + | CachedExperimentTrendsQueryResponse + | CachedExperimentFunnelsQueryResponse + | null + > => { try { + if (values.featureFlags[FEATURE_FLAGS.EXPERIMENTS_HOGQL]) { + const query = values.experiment.metrics[0].query + + const response: ExperimentResults = await api.create( + `api/projects/${values.currentTeamId}/query`, + { query } + ) + + return { + ...response, + fakeInsightId: Math.random().toString(36).substring(2, 15), + last_refresh: response.last_refresh || '', + } as unknown as CachedExperimentTrendsQueryResponse | CachedExperimentFunnelsQueryResponse + } + const refreshParam = refresh ? '?refresh=true' : '' const response: ExperimentResults = await api.get( `api/projects/${values.currentTeamId}/experiments/${values.experimentId}/results${refreshParam}` @@ -862,8 +898,13 @@ export const experimentLogic = kea([ (experimentId): Experiment['id'] => experimentId, ], experimentInsightType: [ - (s) => [s.experiment], - (experiment): InsightType => { + (s) => [s.experiment, s.featureFlags], + (experiment, featureFlags): InsightType => { + if (featureFlags[FEATURE_FLAGS.EXPERIMENTS_HOGQL]) { + const query = experiment?.metrics?.[0]?.query + return query?.kind === NodeKind.ExperimentTrendsQuery ? InsightType.TRENDS : InsightType.FUNNELS + } + return experiment?.filters?.insight || InsightType.FUNNELS }, ], @@ -909,31 +950,40 @@ export const experimentLogic = kea([ }, ], experimentMathAggregationForTrends: [ - () => [], - () => - (filters?: FilterType): PropertyMathType | CountPerActorMathType | undefined => { - // Find out if we're using count per actor math aggregates averages per user - const userMathValue = ( - [...(filters?.events || []), ...(filters?.actions || [])] as ActionFilterType[] - ).filter((entity) => - Object.values(CountPerActorMathType).includes(entity?.math as CountPerActorMathType) - )[0]?.math - - // alternatively, if we're using property math - // remove 'sum' property math from the list of math types - // since we can handle that as a regular case - const targetValues = Object.values(PropertyMathType).filter( - (value) => value !== PropertyMathType.Sum - ) - // sync with the backend at https://github.com/PostHog/posthog/blob/master/ee/clickhouse/queries/experiments/trend_experiment_result.py#L44 - // the function uses_math_aggregation_by_user_or_property_value + (s) => [s.experiment, s.featureFlags], + (experiment, featureFlags) => (): PropertyMathType | CountPerActorMathType | undefined => { + let entities: { math?: string }[] = [] + + if (featureFlags[FEATURE_FLAGS.EXPERIMENTS_HOGQL]) { + const query = experiment?.metrics?.[0]?.query as ExperimentTrendsQuery + if (!query) { + return undefined + } + entities = query.count_query?.series || [] + } else { + const filters = experiment?.filters + if (!filters) { + return undefined + } + entities = [...(filters?.events || []), ...(filters?.actions || [])] as ActionFilterType[] + } - const propertyMathValue = ( - [...(filters?.events || []), ...(filters?.actions || [])] as ActionFilterType[] - ).filter((entity) => targetValues.includes(entity?.math as PropertyMathType))[0]?.math + // Find out if we're using count per actor math aggregates averages per user + const userMathValue = entities.filter((entity) => + Object.values(CountPerActorMathType).includes(entity?.math as CountPerActorMathType) + )[0]?.math - return (userMathValue ?? propertyMathValue) as PropertyMathType | CountPerActorMathType | undefined - }, + // alternatively, if we're using property math + // remove 'sum' property math from the list of math types + // since we can handle that as a regular case + const targetValues = Object.values(PropertyMathType).filter((value) => value !== PropertyMathType.Sum) + + const propertyMathValue = entities.filter((entity) => + targetValues.includes(entity?.math as PropertyMathType) + )[0]?.math + + return (userMathValue ?? propertyMathValue) as PropertyMathType | CountPerActorMathType | undefined + }, ], minimumDetectableEffect: [ (s) => [s.experiment, s.experimentInsightType, s.conversionMetrics, s.trendResults], @@ -1126,7 +1176,14 @@ export const experimentLogic = kea([ conversionRateForVariant: [ () => [], () => - (experimentResults: Partial | null, variantKey: string): number | null => { + ( + experimentResults: + | Partial + | CachedExperimentFunnelsQueryResponse + | CachedExperimentTrendsQueryResponse + | null, + variantKey: string + ): number | null => { if (!experimentResults || !experimentResults.insight) { return null } @@ -1144,34 +1201,47 @@ export const experimentLogic = kea([ }, ], getIndexForVariant: [ - () => [], - () => - (experimentResults: Partial | null, variant: string): number | null => { - // TODO: Would be nice for every secondary metric to have the same colour for variants - const insightType = experimentResults?.filters?.insight - let result: number | null = null + (s) => [s.experimentInsightType], + (experimentInsightType) => + ( + experimentResults: + | Partial + | CachedExperimentTrendsQueryResponse + | CachedExperimentFunnelsQueryResponse + | null, + variant: string + ): number | null => { // Ensures we get the right index from results, so the UI can // display the right colour for the variant if (!experimentResults || !experimentResults.insight) { return null } + let index = -1 - if (insightType === InsightType.FUNNELS) { + if (experimentInsightType === InsightType.FUNNELS) { // Funnel Insight is displayed in order of decreasing count - index = ([...experimentResults.insight] as FunnelStep[][]) - .sort((a, b) => b[0]?.count - a[0]?.count) - .findIndex( - (variantFunnel: FunnelStep[]) => variantFunnel[0]?.breakdown_value?.[0] === variant - ) + index = (Array.isArray(experimentResults.insight) ? [...experimentResults.insight] : []) + .sort((a, b) => { + const aCount = (a && Array.isArray(a) && a[0]?.count) || 0 + const bCount = (b && Array.isArray(b) && b[0]?.count) || 0 + return bCount - aCount + }) + .findIndex((variantFunnel) => { + if (!Array.isArray(variantFunnel) || !variantFunnel[0]?.breakdown_value) { + return false + } + const breakdownValue = variantFunnel[0].breakdown_value + return Array.isArray(breakdownValue) && breakdownValue[0] === variant + }) } else { index = (experimentResults.insight as TrendResult[]).findIndex( (variantTrend: TrendResult) => variantTrend.breakdown_value === variant ) } - result = index === -1 ? null : index + const result = index === -1 ? null : index - if (result !== null && insightType === InsightType.FUNNELS) { - result++ + if (result !== null && experimentInsightType === InsightType.FUNNELS) { + return result + 1 } return result }, @@ -1179,10 +1249,15 @@ export const experimentLogic = kea([ countDataForVariant: [ (s) => [s.experimentMathAggregationForTrends], (experimentMathAggregationForTrends) => - (experimentResults: Partial | null, variant: string): number | null => { - const usingMathAggregationType = experimentMathAggregationForTrends( - experimentResults?.filters || {} - ) + ( + experimentResults: + | Partial + | CachedExperimentTrendsQueryResponse + | CachedExperimentFunnelsQueryResponse + | null, + variant: string + ): number | null => { + const usingMathAggregationType = experimentMathAggregationForTrends() if (!experimentResults || !experimentResults.insight) { return null } @@ -1223,7 +1298,14 @@ export const experimentLogic = kea([ exposureCountDataForVariant: [ () => [], () => - (experimentResults: Partial | null, variant: string): number | null => { + ( + experimentResults: + | Partial + | CachedExperimentTrendsQueryResponse + | CachedExperimentFunnelsQueryResponse + | null, + variant: string + ): number | null => { if (!experimentResults || !experimentResults.variants) { return null } @@ -1241,14 +1323,21 @@ export const experimentLogic = kea([ ], getHighestProbabilityVariant: [ () => [], - () => (results: ExperimentResults['result'] | null) => { - if (results && results.probability) { - const maxValue = Math.max(...Object.values(results.probability)) - return Object.keys(results.probability).find( - (key) => Math.abs(results.probability[key] - maxValue) < Number.EPSILON - ) - } - }, + () => + ( + results: + | ExperimentResults['result'] + | CachedExperimentTrendsQueryResponse + | CachedExperimentFunnelsQueryResponse + | null + ) => { + if (results && results.probability) { + const maxValue = Math.max(...Object.values(results.probability)) + return Object.keys(results.probability).find( + (key) => Math.abs(results.probability[key] - maxValue) < Number.EPSILON + ) + } + }, ], sortedExperimentResultVariants: [ (s) => [s.experimentResults, s.experiment], diff --git a/frontend/src/types.ts b/frontend/src/types.ts index eb839f5252bcd..4a17a89a811cd 100644 --- a/frontend/src/types.ts +++ b/frontend/src/types.ts @@ -35,6 +35,8 @@ import { QueryContext } from '~/queries/types' import type { DashboardFilter, DatabaseSchemaField, + ExperimentFunnelsQuery, + ExperimentTrendsQuery, HogQLQuery, HogQLQueryModifiers, HogQLVariable, @@ -3242,6 +3244,11 @@ export interface Group { group_properties: Record } +export interface ExperimentMetric { + type: string + query: ExperimentTrendsQuery | ExperimentFunnelsQuery +} + export interface Experiment { id: number | 'new' name: string @@ -3250,6 +3257,7 @@ export interface Experiment { feature_flag?: FeatureFlagBasicType exposure_cohort?: number filters: FilterType + metrics: ExperimentMetric[] parameters: { minimum_detectable_effect?: number recommended_running_time?: number @@ -3294,7 +3302,7 @@ interface BaseExperimentResults { } export interface _TrendsExperimentResults extends BaseExperimentResults { - insight: TrendResult[] + insight: Record[] filters: TrendsFilterType variants: TrendExperimentVariant[] last_refresh?: string | null @@ -3302,7 +3310,7 @@ export interface _TrendsExperimentResults extends BaseExperimentResults { } export interface _FunnelExperimentResults extends BaseExperimentResults { - insight: FunnelStep[][] + insight: Record[] filters: FunnelsFilterType variants: FunnelExperimentVariant[] last_refresh?: string | null diff --git a/posthog/api/test/__snapshots__/test_api_docs.ambr b/posthog/api/test/__snapshots__/test_api_docs.ambr index 9b7667ec6484b..044ee43f1983e 100644 --- a/posthog/api/test/__snapshots__/test_api_docs.ambr +++ b/posthog/api/test/__snapshots__/test_api_docs.ambr @@ -101,6 +101,8 @@ 'Warning: encountered multiple names for the same choice set (HrefMatchingEnum). This may be unwanted even though the generated schema is technically correct. Add an entry to ENUM_NAME_OVERRIDES to fix the naming.', 'Warning: encountered multiple names for the same choice set (MembershipLevelEnum). This may be unwanted even though the generated schema is technically correct. Add an entry to ENUM_NAME_OVERRIDES to fix the naming.', 'Warning: enum naming encountered a non-optimally resolvable collision for fields named "kind". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Kind069Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.', + 'Warning: enum naming encountered a non-optimally resolvable collision for fields named "kind". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Kind0ddEnum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.', + 'Warning: enum naming encountered a non-optimally resolvable collision for fields named "kind". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Kind496Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.', 'Warning: enum naming encountered a non-optimally resolvable collision for fields named "kind". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "KindCfaEnum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.', 'Warning: enum naming encountered a non-optimally resolvable collision for fields named "type". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "TypeF73Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.', 'Warning: operationId "Funnels" has collisions [(\'/api/environments/{project_id}/insights/funnel/\', \'post\'), (\'/api/projects/{project_id}/insights/funnel/\', \'post\')]. resolving with numeral suffixes.', diff --git a/posthog/hogql/transforms/test/__snapshots__/test_in_cohort.ambr b/posthog/hogql/transforms/test/__snapshots__/test_in_cohort.ambr index f018e96ef067a..06e46e0ca30b0 100644 --- a/posthog/hogql/transforms/test/__snapshots__/test_in_cohort.ambr +++ b/posthog/hogql/transforms/test/__snapshots__/test_in_cohort.ambr @@ -31,7 +31,7 @@ FROM events LEFT JOIN ( SELECT person_static_cohort.person_id AS cohort_person_id, 1 AS matched, person_static_cohort.cohort_id AS cohort_id FROM person_static_cohort - WHERE and(equals(person_static_cohort.team_id, 420), in(person_static_cohort.cohort_id, [4]))) AS __in_cohort ON equals(__in_cohort.cohort_person_id, events.person_id) + WHERE and(equals(person_static_cohort.team_id, 420), in(person_static_cohort.cohort_id, [6]))) AS __in_cohort ON equals(__in_cohort.cohort_person_id, events.person_id) WHERE and(equals(events.team_id, 420), 1, ifNull(equals(__in_cohort.matched, 1), 0)) LIMIT 100 SETTINGS readonly=2, max_execution_time=60, allow_experimental_object_type=1, format_csv_allow_double_quotes=0, max_ast_elements=4000000, max_expanded_ast_elements=4000000, max_bytes_before_external_group_by=0 @@ -42,7 +42,7 @@ FROM events LEFT JOIN ( SELECT person_id AS cohort_person_id, 1 AS matched, cohort_id FROM static_cohort_people - WHERE in(cohort_id, [4])) AS __in_cohort ON equals(__in_cohort.cohort_person_id, person_id) + WHERE in(cohort_id, [6])) AS __in_cohort ON equals(__in_cohort.cohort_person_id, person_id) WHERE and(1, equals(__in_cohort.matched, 1)) LIMIT 100 ''' @@ -55,7 +55,7 @@ FROM events LEFT JOIN ( SELECT person_static_cohort.person_id AS cohort_person_id, 1 AS matched, person_static_cohort.cohort_id AS cohort_id FROM person_static_cohort - WHERE and(equals(person_static_cohort.team_id, 420), in(person_static_cohort.cohort_id, [5]))) AS __in_cohort ON equals(__in_cohort.cohort_person_id, events.person_id) + WHERE and(equals(person_static_cohort.team_id, 420), in(person_static_cohort.cohort_id, [7]))) AS __in_cohort ON equals(__in_cohort.cohort_person_id, events.person_id) WHERE and(equals(events.team_id, 420), 1, ifNull(equals(__in_cohort.matched, 1), 0)) LIMIT 100 SETTINGS readonly=2, max_execution_time=60, allow_experimental_object_type=1, format_csv_allow_double_quotes=0, max_ast_elements=4000000, max_expanded_ast_elements=4000000, max_bytes_before_external_group_by=0 @@ -66,7 +66,7 @@ FROM events LEFT JOIN ( SELECT person_id AS cohort_person_id, 1 AS matched, cohort_id FROM static_cohort_people - WHERE in(cohort_id, [5])) AS __in_cohort ON equals(__in_cohort.cohort_person_id, person_id) + WHERE in(cohort_id, [7])) AS __in_cohort ON equals(__in_cohort.cohort_person_id, person_id) WHERE and(1, equals(__in_cohort.matched, 1)) LIMIT 100 ''' diff --git a/posthog/hogql_queries/experiments/experiment_funnels_query_runner.py b/posthog/hogql_queries/experiments/experiment_funnels_query_runner.py index c6783daa489e0..23ba38cd742a3 100644 --- a/posthog/hogql_queries/experiments/experiment_funnels_query_runner.py +++ b/posthog/hogql_queries/experiments/experiment_funnels_query_runner.py @@ -36,9 +36,9 @@ def __init__(self, *args, **kwargs): self.experiment = Experiment.objects.get(id=self.query.experiment_id) self.feature_flag = self.experiment.feature_flag self.variants = [variant["key"] for variant in self.feature_flag.variants] - self.prepared_funnel_query = self._prepare_funnel_query() + self.prepared_funnels_query = self._prepare_funnel_query() self.funnels_query_runner = FunnelsQueryRunner( - query=self.prepared_funnel_query, team=self.team, timings=self.timings, limit_context=self.limit_context + query=self.prepared_funnels_query, team=self.team, timings=self.timings, limit_context=self.limit_context ) def calculate(self) -> ExperimentFunnelsQueryResponse: @@ -53,7 +53,9 @@ def calculate(self) -> ExperimentFunnelsQueryResponse: credible_intervals = calculate_credible_intervals([control_variant, *test_variants]) return ExperimentFunnelsQueryResponse( - insight=funnels_result, + kind="ExperimentFunnelsQuery", + funnels_query=self.prepared_funnels_query, + insight=funnels_result.results, variants=[variant.model_dump() for variant in [control_variant, *test_variants]], probability={ variant.key: probability @@ -75,7 +77,7 @@ def _prepare_funnel_query(self) -> FunnelsQuery: to separate results for different experiment variants. """ # Clone the source query - prepared_funnel_query = FunnelsQuery(**self.query.source.model_dump()) + prepared_funnels_query = FunnelsQuery(**self.query.source.model_dump()) # Set the date range to match the experiment's duration, using the project's timezone if self.team.timezone: @@ -86,19 +88,19 @@ def _prepare_funnel_query(self) -> FunnelsQuery: start_date = self.experiment.start_date end_date = self.experiment.end_date - prepared_funnel_query.dateRange = InsightDateRange( + prepared_funnels_query.dateRange = InsightDateRange( date_from=start_date.isoformat() if start_date else None, date_to=end_date.isoformat() if end_date else None, explicitDate=True, ) # Configure the breakdown to use the feature flag key - prepared_funnel_query.breakdownFilter = BreakdownFilter( + prepared_funnels_query.breakdownFilter = BreakdownFilter( breakdown=f"$feature/{self.feature_flag.key}", breakdown_type="event", ) - return prepared_funnel_query + return prepared_funnels_query def _get_variants_with_base_stats( self, funnels_result: FunnelsQueryResponse diff --git a/posthog/hogql_queries/experiments/experiment_trends_query_runner.py b/posthog/hogql_queries/experiments/experiment_trends_query_runner.py index 7389b65a29bf6..2a74202b45f11 100644 --- a/posthog/hogql_queries/experiments/experiment_trends_query_runner.py +++ b/posthog/hogql_queries/experiments/experiment_trends_query_runner.py @@ -106,12 +106,11 @@ def _prepare_count_query(self) -> TrendsQuery: # :TRICKY: for `avg` aggregation, use `sum` data as an approximation if prepared_count_query.series[0].math == PropertyMathType.AVG: prepared_count_query.series[0].math = PropertyMathType.SUM - prepared_count_query.trendsFilter = TrendsFilter(display=ChartDisplayType.ACTIONS_LINE_GRAPH_CUMULATIVE) # TODO: revisit this; using the count data for the remaining aggregation types is likely wrong elif uses_math_aggregation: prepared_count_query.series[0].math = None - prepared_count_query.trendsFilter = TrendsFilter(display=ChartDisplayType.ACTIONS_LINE_GRAPH_CUMULATIVE) + prepared_count_query.trendsFilter = TrendsFilter(display=ChartDisplayType.ACTIONS_LINE_GRAPH_CUMULATIVE) prepared_count_query.dateRange = self._get_insight_date_range() prepared_count_query.breakdownFilter = self._get_breakdown_filter() prepared_count_query.properties = [ @@ -242,7 +241,6 @@ def run(query_runner: TrendsQueryRunner, result_key: str, is_parallel: bool): count_result = shared_results["count_result"] exposure_result = shared_results["exposure_result"] - if count_result is None or exposure_result is None: raise ValueError("One or both query runners failed to produce a response") @@ -255,7 +253,10 @@ def run(query_runner: TrendsQueryRunner, result_key: str, is_parallel: bool): credible_intervals = calculate_credible_intervals([control_variant, *test_variants]) return ExperimentTrendsQueryResponse( - insight=count_result, + kind="ExperimentTrendsQuery", + insight=count_result.results, + count_query=self.prepared_count_query, + exposure_query=self.prepared_exposure_query, variants=[variant.model_dump() for variant in [control_variant, *test_variants]], probability={ variant.key: probability diff --git a/posthog/hogql_queries/insights/trends/test/__snapshots__/test_trends.ambr b/posthog/hogql_queries/insights/trends/test/__snapshots__/test_trends.ambr index 6027f7ca7bb42..4ae57feb8cb96 100644 --- a/posthog/hogql_queries/insights/trends/test/__snapshots__/test_trends.ambr +++ b/posthog/hogql_queries/insights/trends/test/__snapshots__/test_trends.ambr @@ -851,14 +851,49 @@ # --- # name: TestTrends.test_dau_with_breakdown_filtering_with_sampling.1 ''' - /* celery:posthog.tasks.tasks.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + SELECT groupArray(1)(date)[1] AS date, + arrayFold((acc, x) -> arrayMap(i -> plus(acc[i], x[i]), range(1, plus(length(date), 1))), groupArray(ifNull(total, 0)), arrayWithConstant(length(date), reinterpretAsFloat64(0))) AS total, + if(ifNull(ifNull(greaterOrEquals(row_number, 25), 0), 0), '$$_posthog_breakdown_other_$$', breakdown_value) AS breakdown_value + FROM + (SELECT arrayMap(number -> plus(toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2019-12-28 00:00:00', 6, 'UTC'))), toIntervalDay(number)), range(0, plus(coalesce(dateDiff('day', toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2019-12-28 00:00:00', 6, 'UTC'))), toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-04 23:59:59', 6, 'UTC'))))), 1))) AS date, + arrayMap(_match_date -> arraySum(arraySlice(groupArray(ifNull(count, 0)), indexOf(groupArray(day_start) AS _days_for_count, _match_date) AS _index, plus(minus(arrayLastIndex(x -> ifNull(equals(x, _match_date), isNull(x) + and isNull(_match_date)), _days_for_count), _index), 1))), date) AS total, + breakdown_value AS breakdown_value, + rowNumberInAllBlocks() AS row_number + FROM + (SELECT sum(total) AS count, + day_start AS day_start, + breakdown_value AS breakdown_value + FROM + (SELECT count(DISTINCT if(not(empty(e__override.distinct_id)), e__override.person_id, e.person_id)) AS total, + toStartOfDay(toTimeZone(e.timestamp, 'UTC')) AS day_start, + ifNull(nullIf(toString(replaceRegexpAll(nullIf(nullIf(JSONExtractRaw(e.properties, '$some_property'), ''), 'null'), '^"|"$', '')), ''), '$$_posthog_breakdown_null_$$') AS breakdown_value + FROM events AS e SAMPLE 1.0 + LEFT OUTER JOIN + (SELECT argMax(person_distinct_id_overrides.person_id, person_distinct_id_overrides.version) AS person_id, + person_distinct_id_overrides.distinct_id AS distinct_id + FROM person_distinct_id_overrides + WHERE equals(person_distinct_id_overrides.team_id, 2) + GROUP BY person_distinct_id_overrides.distinct_id + HAVING ifNull(equals(argMax(person_distinct_id_overrides.is_deleted, person_distinct_id_overrides.version), 0), 0) SETTINGS optimize_aggregation_in_order=1) AS e__override ON equals(e.distinct_id, e__override.distinct_id) + WHERE and(equals(e.team_id, 2), greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2019-12-28 00:00:00', 6, 'UTC')))), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-04 23:59:59', 6, 'UTC'))), equals(e.event, 'sign up')) + GROUP BY day_start, + breakdown_value) + GROUP BY day_start, + breakdown_value + ORDER BY day_start ASC, breakdown_value ASC) + GROUP BY breakdown_value + ORDER BY if(ifNull(equals(breakdown_value, '$$_posthog_breakdown_other_$$'), 0), 2, if(ifNull(equals(breakdown_value, '$$_posthog_breakdown_null_$$'), 0), 1, 0)) ASC, arraySum(total) DESC, breakdown_value ASC) + WHERE isNotNull(breakdown_value) + GROUP BY breakdown_value + ORDER BY if(ifNull(equals(breakdown_value, '$$_posthog_breakdown_other_$$'), 0), 2, if(ifNull(equals(breakdown_value, '$$_posthog_breakdown_null_$$'), 0), 1, 0)) ASC, arraySum(total) DESC, breakdown_value ASC + LIMIT 50000 SETTINGS readonly=2, + max_execution_time=60, + allow_experimental_object_type=1, + format_csv_allow_double_quotes=0, + max_ast_elements=4000000, + max_expanded_ast_elements=4000000, + max_bytes_before_external_group_by=0 ''' # --- # name: TestTrends.test_dau_with_breakdown_filtering_with_sampling.10 @@ -1075,38 +1110,143 @@ # --- # name: TestTrends.test_dau_with_breakdown_filtering_with_sampling.2 ''' - /* celery:posthog.tasks.tasks.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + SELECT groupArray(1)(date)[1] AS date, + arrayFold((acc, x) -> arrayMap(i -> plus(acc[i], x[i]), range(1, plus(length(date), 1))), groupArray(ifNull(total, 0)), arrayWithConstant(length(date), reinterpretAsFloat64(0))) AS total, + if(ifNull(ifNull(greaterOrEquals(row_number, 25), 0), 0), '$$_posthog_breakdown_other_$$', breakdown_value) AS breakdown_value + FROM + (SELECT arrayMap(number -> plus(toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2019-12-28 00:00:00', 6, 'UTC'))), toIntervalDay(number)), range(0, plus(coalesce(dateDiff('day', toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2019-12-28 00:00:00', 6, 'UTC'))), toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-04 23:59:59', 6, 'UTC'))))), 1))) AS date, + arrayMap(_match_date -> arraySum(arraySlice(groupArray(ifNull(count, 0)), indexOf(groupArray(day_start) AS _days_for_count, _match_date) AS _index, plus(minus(arrayLastIndex(x -> ifNull(equals(x, _match_date), isNull(x) + and isNull(_match_date)), _days_for_count), _index), 1))), date) AS total, + breakdown_value AS breakdown_value, + rowNumberInAllBlocks() AS row_number + FROM + (SELECT sum(total) AS count, + day_start AS day_start, + breakdown_value AS breakdown_value + FROM + (SELECT count(DISTINCT if(not(empty(e__override.distinct_id)), e__override.person_id, e.person_id)) AS total, + toStartOfDay(toTimeZone(e.timestamp, 'UTC')) AS day_start, + ifNull(nullIf(toString(replaceRegexpAll(nullIf(nullIf(JSONExtractRaw(e.properties, '$some_property'), ''), 'null'), '^"|"$', '')), ''), '$$_posthog_breakdown_null_$$') AS breakdown_value + FROM events AS e SAMPLE 1.0 + LEFT OUTER JOIN + (SELECT argMax(person_distinct_id_overrides.person_id, person_distinct_id_overrides.version) AS person_id, + person_distinct_id_overrides.distinct_id AS distinct_id + FROM person_distinct_id_overrides + WHERE equals(person_distinct_id_overrides.team_id, 2) + GROUP BY person_distinct_id_overrides.distinct_id + HAVING ifNull(equals(argMax(person_distinct_id_overrides.is_deleted, person_distinct_id_overrides.version), 0), 0) SETTINGS optimize_aggregation_in_order=1) AS e__override ON equals(e.distinct_id, e__override.distinct_id) + WHERE and(equals(e.team_id, 2), greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2019-12-28 00:00:00', 6, 'UTC')))), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-04 23:59:59', 6, 'UTC'))), equals(e.event, 'sign up')) + GROUP BY day_start, + breakdown_value) + GROUP BY day_start, + breakdown_value + ORDER BY day_start ASC, breakdown_value ASC) + GROUP BY breakdown_value + ORDER BY if(ifNull(equals(breakdown_value, '$$_posthog_breakdown_other_$$'), 0), 2, if(ifNull(equals(breakdown_value, '$$_posthog_breakdown_null_$$'), 0), 1, 0)) ASC, arraySum(total) DESC, breakdown_value ASC) + WHERE isNotNull(breakdown_value) + GROUP BY breakdown_value + ORDER BY if(ifNull(equals(breakdown_value, '$$_posthog_breakdown_other_$$'), 0), 2, if(ifNull(equals(breakdown_value, '$$_posthog_breakdown_null_$$'), 0), 1, 0)) ASC, arraySum(total) DESC, breakdown_value ASC + LIMIT 50000 SETTINGS readonly=2, + max_execution_time=60, + allow_experimental_object_type=1, + format_csv_allow_double_quotes=0, + max_ast_elements=4000000, + max_expanded_ast_elements=4000000, + max_bytes_before_external_group_by=0 ''' # --- # name: TestTrends.test_dau_with_breakdown_filtering_with_sampling.3 ''' - /* celery:posthog.tasks.tasks.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + SELECT groupArray(1)(date)[1] AS date, + arrayFold((acc, x) -> arrayMap(i -> plus(acc[i], x[i]), range(1, plus(length(date), 1))), groupArray(ifNull(total, 0)), arrayWithConstant(length(date), reinterpretAsFloat64(0))) AS total, + arrayMap(i -> if(ifNull(ifNull(greaterOrEquals(row_number, 25), 0), 0), '$$_posthog_breakdown_other_$$', i), breakdown_value) AS breakdown_value + FROM + (SELECT arrayMap(number -> plus(toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2019-12-28 00:00:00', 6, 'UTC'))), toIntervalDay(number)), range(0, plus(coalesce(dateDiff('day', toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2019-12-28 00:00:00', 6, 'UTC'))), toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-04 23:59:59', 6, 'UTC'))))), 1))) AS date, + arrayMap(_match_date -> arraySum(arraySlice(groupArray(ifNull(count, 0)), indexOf(groupArray(day_start) AS _days_for_count, _match_date) AS _index, plus(minus(arrayLastIndex(x -> ifNull(equals(x, _match_date), isNull(x) + and isNull(_match_date)), _days_for_count), _index), 1))), date) AS total, + breakdown_value AS breakdown_value, + rowNumberInAllBlocks() AS row_number + FROM + (SELECT sum(total) AS count, + day_start AS day_start, + [ifNull(toString(breakdown_value_1), '$$_posthog_breakdown_null_$$')] AS breakdown_value + FROM + (SELECT count(DISTINCT if(not(empty(e__override.distinct_id)), e__override.person_id, e.person_id)) AS total, + toStartOfDay(toTimeZone(e.timestamp, 'UTC')) AS day_start, + ifNull(nullIf(toString(replaceRegexpAll(nullIf(nullIf(JSONExtractRaw(e.properties, '$some_property'), ''), 'null'), '^"|"$', '')), ''), '$$_posthog_breakdown_null_$$') AS breakdown_value_1 + FROM events AS e SAMPLE 1.0 + LEFT OUTER JOIN + (SELECT argMax(person_distinct_id_overrides.person_id, person_distinct_id_overrides.version) AS person_id, + person_distinct_id_overrides.distinct_id AS distinct_id + FROM person_distinct_id_overrides + WHERE equals(person_distinct_id_overrides.team_id, 2) + GROUP BY person_distinct_id_overrides.distinct_id + HAVING ifNull(equals(argMax(person_distinct_id_overrides.is_deleted, person_distinct_id_overrides.version), 0), 0) SETTINGS optimize_aggregation_in_order=1) AS e__override ON equals(e.distinct_id, e__override.distinct_id) + WHERE and(equals(e.team_id, 2), greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2019-12-28 00:00:00', 6, 'UTC')))), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-04 23:59:59', 6, 'UTC'))), equals(e.event, 'sign up')) + GROUP BY day_start, + breakdown_value_1) + GROUP BY day_start, + breakdown_value_1 + ORDER BY day_start ASC, breakdown_value ASC) + GROUP BY breakdown_value + ORDER BY if(has(breakdown_value, '$$_posthog_breakdown_other_$$'), 2, if(has(breakdown_value, '$$_posthog_breakdown_null_$$'), 1, 0)) ASC, arraySum(total) DESC, breakdown_value ASC) + WHERE arrayExists(x -> isNotNull(x), breakdown_value) + GROUP BY breakdown_value + ORDER BY if(has(breakdown_value, '$$_posthog_breakdown_other_$$'), 2, if(has(breakdown_value, '$$_posthog_breakdown_null_$$'), 1, 0)) ASC, arraySum(total) DESC, breakdown_value ASC + LIMIT 50000 SETTINGS readonly=2, + max_execution_time=60, + allow_experimental_object_type=1, + format_csv_allow_double_quotes=0, + max_ast_elements=4000000, + max_expanded_ast_elements=4000000, + max_bytes_before_external_group_by=0 ''' # --- # name: TestTrends.test_dau_with_breakdown_filtering_with_sampling.4 ''' - /* celery:posthog.tasks.tasks.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + SELECT groupArray(1)(date)[1] AS date, + arrayFold((acc, x) -> arrayMap(i -> plus(acc[i], x[i]), range(1, plus(length(date), 1))), groupArray(ifNull(total, 0)), arrayWithConstant(length(date), reinterpretAsFloat64(0))) AS total, + arrayMap(i -> if(ifNull(ifNull(greaterOrEquals(row_number, 25), 0), 0), '$$_posthog_breakdown_other_$$', i), breakdown_value) AS breakdown_value + FROM + (SELECT arrayMap(number -> plus(toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2019-12-28 00:00:00', 6, 'UTC'))), toIntervalDay(number)), range(0, plus(coalesce(dateDiff('day', toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2019-12-28 00:00:00', 6, 'UTC'))), toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-04 23:59:59', 6, 'UTC'))))), 1))) AS date, + arrayMap(_match_date -> arraySum(arraySlice(groupArray(ifNull(count, 0)), indexOf(groupArray(day_start) AS _days_for_count, _match_date) AS _index, plus(minus(arrayLastIndex(x -> ifNull(equals(x, _match_date), isNull(x) + and isNull(_match_date)), _days_for_count), _index), 1))), date) AS total, + breakdown_value AS breakdown_value, + rowNumberInAllBlocks() AS row_number + FROM + (SELECT sum(total) AS count, + day_start AS day_start, + [ifNull(toString(breakdown_value_1), '$$_posthog_breakdown_null_$$')] AS breakdown_value + FROM + (SELECT count(DISTINCT if(not(empty(e__override.distinct_id)), e__override.person_id, e.person_id)) AS total, + toStartOfDay(toTimeZone(e.timestamp, 'UTC')) AS day_start, + ifNull(nullIf(toString(replaceRegexpAll(nullIf(nullIf(JSONExtractRaw(e.properties, '$some_property'), ''), 'null'), '^"|"$', '')), ''), '$$_posthog_breakdown_null_$$') AS breakdown_value_1 + FROM events AS e SAMPLE 1.0 + LEFT OUTER JOIN + (SELECT argMax(person_distinct_id_overrides.person_id, person_distinct_id_overrides.version) AS person_id, + person_distinct_id_overrides.distinct_id AS distinct_id + FROM person_distinct_id_overrides + WHERE equals(person_distinct_id_overrides.team_id, 2) + GROUP BY person_distinct_id_overrides.distinct_id + HAVING ifNull(equals(argMax(person_distinct_id_overrides.is_deleted, person_distinct_id_overrides.version), 0), 0) SETTINGS optimize_aggregation_in_order=1) AS e__override ON equals(e.distinct_id, e__override.distinct_id) + WHERE and(equals(e.team_id, 2), greaterOrEquals(toTimeZone(e.timestamp, 'UTC'), toStartOfDay(assumeNotNull(parseDateTime64BestEffortOrNull('2019-12-28 00:00:00', 6, 'UTC')))), lessOrEquals(toTimeZone(e.timestamp, 'UTC'), assumeNotNull(parseDateTime64BestEffortOrNull('2020-01-04 23:59:59', 6, 'UTC'))), equals(e.event, 'sign up')) + GROUP BY day_start, + breakdown_value_1) + GROUP BY day_start, + breakdown_value_1 + ORDER BY day_start ASC, breakdown_value ASC) + GROUP BY breakdown_value + ORDER BY if(has(breakdown_value, '$$_posthog_breakdown_other_$$'), 2, if(has(breakdown_value, '$$_posthog_breakdown_null_$$'), 1, 0)) ASC, arraySum(total) DESC, breakdown_value ASC) + WHERE arrayExists(x -> isNotNull(x), breakdown_value) + GROUP BY breakdown_value + ORDER BY if(has(breakdown_value, '$$_posthog_breakdown_other_$$'), 2, if(has(breakdown_value, '$$_posthog_breakdown_null_$$'), 1, 0)) ASC, arraySum(total) DESC, breakdown_value ASC + LIMIT 50000 SETTINGS readonly=2, + max_execution_time=60, + allow_experimental_object_type=1, + format_csv_allow_double_quotes=0, + max_ast_elements=4000000, + max_expanded_ast_elements=4000000, + max_bytes_before_external_group_by=0 ''' # --- # name: TestTrends.test_dau_with_breakdown_filtering_with_sampling.5 diff --git a/posthog/schema.py b/posthog/schema.py index b386d5d6c8e97..199a19f1fdfe3 100644 --- a/posthog/schema.py +++ b/posthog/schema.py @@ -1951,31 +1951,6 @@ class CachedEventsQueryResponse(BaseModel): types: list[str] -class CachedExperimentTrendsQueryResponse(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - cache_key: str - cache_target_age: Optional[AwareDatetime] = None - calculation_trigger: Optional[str] = Field( - default=None, description="What triggered the calculation of the query, leave empty if user/immediate" - ) - credible_intervals: dict[str, list[float]] - insight: TrendsQueryResponse - is_cached: bool - last_refresh: AwareDatetime - next_allowed_client_refresh: AwareDatetime - p_value: float - probability: dict[str, float] - query_status: Optional[QueryStatus] = Field( - default=None, description="Query status indicates whether next to the provided data, a query is still running." - ) - significance_code: ExperimentSignificanceCode - significant: bool - timezone: str - variants: list[ExperimentVariantTrendsBaseStats] - - class CachedFunnelCorrelationResponse(BaseModel): model_config = ConfigDict( extra="forbid", @@ -2700,19 +2675,6 @@ class Response9(BaseModel): ) -class Response11(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - credible_intervals: dict[str, list[float]] - insight: TrendsQueryResponse - p_value: float - probability: dict[str, float] - significance_code: ExperimentSignificanceCode - significant: bool - variants: list[ExperimentVariantTrendsBaseStats] - - class DataWarehousePersonPropertyFilter(BaseModel): model_config = ConfigDict( extra="forbid", @@ -2863,19 +2825,6 @@ class EventsQueryResponse(BaseModel): types: list[str] -class ExperimentTrendsQueryResponse(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - credible_intervals: dict[str, list[float]] - insight: TrendsQueryResponse - p_value: float - probability: dict[str, float] - significance_code: ExperimentSignificanceCode - significant: bool - variants: list[ExperimentVariantTrendsBaseStats] - - class BreakdownFilter1(BaseModel): model_config = ConfigDict( extra="forbid", @@ -3466,32 +3415,6 @@ class QueryResponseAlternative15(BaseModel): ) -class QueryResponseAlternative16(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - credible_intervals: dict[str, list[float]] - expected_loss: float - insight: FunnelsQueryResponse - probability: dict[str, float] - significance_code: ExperimentSignificanceCode - significant: bool - variants: list[ExperimentVariantFunnelsBaseStats] - - -class QueryResponseAlternative17(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - credible_intervals: dict[str, list[float]] - insight: TrendsQueryResponse - p_value: float - probability: dict[str, float] - significance_code: ExperimentSignificanceCode - significant: bool - variants: list[ExperimentVariantTrendsBaseStats] - - class QueryResponseAlternative18(BaseModel): model_config = ConfigDict( extra="forbid", @@ -3728,32 +3651,6 @@ class QueryResponseAlternative27(BaseModel): ) -class QueryResponseAlternative28(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - credible_intervals: dict[str, list[float]] - expected_loss: float - insight: FunnelsQueryResponse - probability: dict[str, float] - significance_code: ExperimentSignificanceCode - significant: bool - variants: list[ExperimentVariantFunnelsBaseStats] - - -class QueryResponseAlternative29(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - credible_intervals: dict[str, list[float]] - insight: TrendsQueryResponse - p_value: float - probability: dict[str, float] - significance_code: ExperimentSignificanceCode - significant: bool - variants: list[ExperimentVariantTrendsBaseStats] - - class QueryResponseAlternative30(BaseModel): model_config = ConfigDict( extra="forbid", @@ -4256,31 +4153,6 @@ class AnyResponseType( ] -class CachedExperimentFunnelsQueryResponse(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - cache_key: str - cache_target_age: Optional[AwareDatetime] = None - calculation_trigger: Optional[str] = Field( - default=None, description="What triggered the calculation of the query, leave empty if user/immediate" - ) - credible_intervals: dict[str, list[float]] - expected_loss: float - insight: FunnelsQueryResponse - is_cached: bool - last_refresh: AwareDatetime - next_allowed_client_refresh: AwareDatetime - probability: dict[str, float] - query_status: Optional[QueryStatus] = Field( - default=None, description="Query status indicates whether next to the provided data, a query is still running." - ) - significance_code: ExperimentSignificanceCode - significant: bool - timezone: str - variants: list[ExperimentVariantFunnelsBaseStats] - - class CachedHogQLQueryResponse(BaseModel): model_config = ConfigDict( extra="forbid", @@ -4432,19 +4304,6 @@ class Response2(BaseModel): types: Optional[list] = Field(default=None, description="Types of returned columns") -class Response10(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - credible_intervals: dict[str, list[float]] - expected_loss: float - insight: FunnelsQueryResponse - probability: dict[str, float] - significance_code: ExperimentSignificanceCode - significant: bool - variants: list[ExperimentVariantFunnelsBaseStats] - - class DataWarehouseNode(BaseModel): model_config = ConfigDict( extra="forbid", @@ -4684,19 +4543,6 @@ class EventsNode(BaseModel): response: Optional[dict[str, Any]] = None -class ExperimentFunnelsQueryResponse(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - credible_intervals: dict[str, list[float]] - expected_loss: float - insight: FunnelsQueryResponse - probability: dict[str, float] - significance_code: ExperimentSignificanceCode - significant: bool - variants: list[ExperimentVariantFunnelsBaseStats] - - class FunnelExclusionActionsNode(BaseModel): model_config = ConfigDict( extra="forbid", @@ -5530,6 +5376,50 @@ class VisualizationMessage(BaseModel): type: Literal["ai/viz"] = "ai/viz" +class CachedExperimentTrendsQueryResponse(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + cache_key: str + cache_target_age: Optional[AwareDatetime] = None + calculation_trigger: Optional[str] = Field( + default=None, description="What triggered the calculation of the query, leave empty if user/immediate" + ) + count_query: Optional[TrendsQuery] = None + credible_intervals: dict[str, list[float]] + exposure_query: Optional[TrendsQuery] = None + insight: list[dict[str, Any]] + is_cached: bool + kind: Literal["ExperimentTrendsQuery"] = "ExperimentTrendsQuery" + last_refresh: AwareDatetime + next_allowed_client_refresh: AwareDatetime + p_value: float + probability: dict[str, float] + query_status: Optional[QueryStatus] = Field( + default=None, description="Query status indicates whether next to the provided data, a query is still running." + ) + significance_code: ExperimentSignificanceCode + significant: bool + timezone: str + variants: list[ExperimentVariantTrendsBaseStats] + + +class Response11(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + count_query: Optional[TrendsQuery] = None + credible_intervals: dict[str, list[float]] + exposure_query: Optional[TrendsQuery] = None + insight: list[dict[str, Any]] + kind: Literal["ExperimentTrendsQuery"] = "ExperimentTrendsQuery" + p_value: float + probability: dict[str, float] + significance_code: ExperimentSignificanceCode + significant: bool + variants: list[ExperimentVariantTrendsBaseStats] + + class ErrorTrackingQuery(BaseModel): model_config = ConfigDict( extra="forbid", @@ -5617,18 +5507,20 @@ class EventsQuery(BaseModel): where: Optional[list[str]] = Field(default=None, description="HogQL filters to apply on returned data") -class ExperimentTrendsQuery(BaseModel): +class ExperimentTrendsQueryResponse(BaseModel): model_config = ConfigDict( extra="forbid", ) - count_query: TrendsQuery - experiment_id: int + count_query: Optional[TrendsQuery] = None + credible_intervals: dict[str, list[float]] exposure_query: Optional[TrendsQuery] = None + insight: list[dict[str, Any]] kind: Literal["ExperimentTrendsQuery"] = "ExperimentTrendsQuery" - modifiers: Optional[HogQLQueryModifiers] = Field( - default=None, description="Modifiers used when performing the query" - ) - response: Optional[ExperimentTrendsQueryResponse] = None + p_value: float + probability: dict[str, float] + significance_code: ExperimentSignificanceCode + significant: bool + variants: list[ExperimentVariantTrendsBaseStats] class FunnelsQuery(BaseModel): @@ -5928,6 +5820,68 @@ class LifecycleQuery(BaseModel): ) +class QueryResponseAlternative16(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + credible_intervals: dict[str, list[float]] + expected_loss: float + funnels_query: Optional[FunnelsQuery] = None + insight: list[list[dict[str, Any]]] + kind: Literal["ExperimentFunnelsQuery"] = "ExperimentFunnelsQuery" + probability: dict[str, float] + significance_code: ExperimentSignificanceCode + significant: bool + variants: list[ExperimentVariantFunnelsBaseStats] + + +class QueryResponseAlternative17(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + count_query: Optional[TrendsQuery] = None + credible_intervals: dict[str, list[float]] + exposure_query: Optional[TrendsQuery] = None + insight: list[dict[str, Any]] + kind: Literal["ExperimentTrendsQuery"] = "ExperimentTrendsQuery" + p_value: float + probability: dict[str, float] + significance_code: ExperimentSignificanceCode + significant: bool + variants: list[ExperimentVariantTrendsBaseStats] + + +class QueryResponseAlternative28(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + credible_intervals: dict[str, list[float]] + expected_loss: float + funnels_query: Optional[FunnelsQuery] = None + insight: list[list[dict[str, Any]]] + kind: Literal["ExperimentFunnelsQuery"] = "ExperimentFunnelsQuery" + probability: dict[str, float] + significance_code: ExperimentSignificanceCode + significant: bool + variants: list[ExperimentVariantFunnelsBaseStats] + + +class QueryResponseAlternative29(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + count_query: Optional[TrendsQuery] = None + credible_intervals: dict[str, list[float]] + exposure_query: Optional[TrendsQuery] = None + insight: list[dict[str, Any]] + kind: Literal["ExperimentTrendsQuery"] = "ExperimentTrendsQuery" + p_value: float + probability: dict[str, float] + significance_code: ExperimentSignificanceCode + significant: bool + variants: list[ExperimentVariantTrendsBaseStats] + + class QueryResponseAlternative37(BaseModel): model_config = ConfigDict( extra="forbid", @@ -6036,6 +5990,48 @@ class RootAssistantMessage(RootModel[Union[VisualizationMessage, AssistantMessag root: Union[VisualizationMessage, AssistantMessage, HumanMessage] +class CachedExperimentFunnelsQueryResponse(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + cache_key: str + cache_target_age: Optional[AwareDatetime] = None + calculation_trigger: Optional[str] = Field( + default=None, description="What triggered the calculation of the query, leave empty if user/immediate" + ) + credible_intervals: dict[str, list[float]] + expected_loss: float + funnels_query: Optional[FunnelsQuery] = None + insight: list[list[dict[str, Any]]] + is_cached: bool + kind: Literal["ExperimentFunnelsQuery"] = "ExperimentFunnelsQuery" + last_refresh: AwareDatetime + next_allowed_client_refresh: AwareDatetime + probability: dict[str, float] + query_status: Optional[QueryStatus] = Field( + default=None, description="Query status indicates whether next to the provided data, a query is still running." + ) + significance_code: ExperimentSignificanceCode + significant: bool + timezone: str + variants: list[ExperimentVariantFunnelsBaseStats] + + +class Response10(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + credible_intervals: dict[str, list[float]] + expected_loss: float + funnels_query: Optional[FunnelsQuery] = None + insight: list[list[dict[str, Any]]] + kind: Literal["ExperimentFunnelsQuery"] = "ExperimentFunnelsQuery" + probability: dict[str, float] + significance_code: ExperimentSignificanceCode + significant: bool + variants: list[ExperimentVariantFunnelsBaseStats] + + class DatabaseSchemaQueryResponse(BaseModel): model_config = ConfigDict( extra="forbid", @@ -6052,17 +6048,33 @@ class DatabaseSchemaQueryResponse(BaseModel): ] -class ExperimentFunnelsQuery(BaseModel): +class ExperimentFunnelsQueryResponse(BaseModel): model_config = ConfigDict( extra="forbid", ) - experiment_id: int + credible_intervals: dict[str, list[float]] + expected_loss: float + funnels_query: Optional[FunnelsQuery] = None + insight: list[list[dict[str, Any]]] kind: Literal["ExperimentFunnelsQuery"] = "ExperimentFunnelsQuery" + probability: dict[str, float] + significance_code: ExperimentSignificanceCode + significant: bool + variants: list[ExperimentVariantFunnelsBaseStats] + + +class ExperimentTrendsQuery(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + count_query: TrendsQuery + experiment_id: int + exposure_query: Optional[TrendsQuery] = None + kind: Literal["ExperimentTrendsQuery"] = "ExperimentTrendsQuery" modifiers: Optional[HogQLQueryModifiers] = Field( default=None, description="Modifiers used when performing the query" ) - response: Optional[ExperimentFunnelsQueryResponse] = None - source: FunnelsQuery + response: Optional[ExperimentTrendsQueryResponse] = None class FunnelPathsFilter(BaseModel): @@ -6166,6 +6178,19 @@ class DatabaseSchemaQuery(BaseModel): response: Optional[DatabaseSchemaQueryResponse] = None +class ExperimentFunnelsQuery(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + experiment_id: int + kind: Literal["ExperimentFunnelsQuery"] = "ExperimentFunnelsQuery" + modifiers: Optional[HogQLQueryModifiers] = Field( + default=None, description="Modifiers used when performing the query" + ) + response: Optional[ExperimentFunnelsQueryResponse] = None + source: FunnelsQuery + + class FunnelCorrelationQuery(BaseModel): model_config = ConfigDict( extra="forbid", From 3ed93f7201ae93e748d156b6f0c65dcb9261bcc6 Mon Sep 17 00:00:00 2001 From: David Newell Date: Wed, 30 Oct 2024 12:13:10 +0000 Subject: [PATCH 09/22] chore: add kafka producer to context (#25899) --- rust/cymbal/src/app_context.rs | 24 ++++++++++++++++++------ rust/cymbal/src/main.rs | 2 +- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/rust/cymbal/src/app_context.rs b/rust/cymbal/src/app_context.rs index 5d7d130b89c9a..381c4de941f6b 100644 --- a/rust/cymbal/src/app_context.rs +++ b/rust/cymbal/src/app_context.rs @@ -1,8 +1,11 @@ -use std::time::Duration; - -use common_kafka::kafka_consumer::SingleTopicConsumer; +use common_kafka::{ + kafka_consumer::SingleTopicConsumer, kafka_producer::create_kafka_producer, + kafka_producer::KafkaContext, +}; use health::{HealthHandle, HealthRegistry}; +use rdkafka::producer::FutureProducer; use sqlx::{postgres::PgPoolOptions, PgPool}; +use std::time::Duration; use tracing::info; use crate::{ @@ -14,7 +17,8 @@ use crate::{ pub struct AppContext { pub health_registry: HealthRegistry, pub worker_liveness: HealthHandle, - pub consumer: SingleTopicConsumer, + pub kafka_consumer: SingleTopicConsumer, + pub kafka_producer: FutureProducer, pub pool: PgPool, pub catalog: Catalog, } @@ -25,8 +29,15 @@ impl AppContext { let worker_liveness = health_registry .register("worker".to_string(), Duration::from_secs(60)) .await; + let kafka_liveness = health_registry + .register("rdkafka".to_string(), Duration::from_secs(30)) + .await; - let consumer = SingleTopicConsumer::new(config.kafka.clone(), config.consumer.clone())?; + let kafka_consumer = + SingleTopicConsumer::new(config.kafka.clone(), config.consumer.clone())?; + let kafka_producer = create_kafka_producer(&config.kafka, kafka_liveness) + .await + .expect("failed to create kafka producer"); let options = PgPoolOptions::new().max_connections(config.max_pg_connections); let pool = options.connect(&config.database_url).await?; @@ -44,7 +55,8 @@ impl AppContext { Ok(Self { health_registry, worker_liveness, - consumer, + kafka_consumer, + kafka_producer, pool, catalog, }) diff --git a/rust/cymbal/src/main.rs b/rust/cymbal/src/main.rs index 29086defed700..9ea6c02b4a065 100644 --- a/rust/cymbal/src/main.rs +++ b/rust/cymbal/src/main.rs @@ -64,7 +64,7 @@ async fn main() -> Result<(), Error> { context.worker_liveness.report_healthy().await; // Just grab the event as a serde_json::Value and immediately drop it, // we can work out a real type for it later (once we're deployed etc) - let (event, offset): (ClickHouseEvent, _) = match context.consumer.json_recv().await { + let (event, offset): (ClickHouseEvent, _) = match context.kafka_consumer.json_recv().await { Ok(r) => r, Err(RecvErr::Kafka(e)) => { return Err(e.into()); // Just die if we recieve a Kafka error From e7be5dc349186395e2fc0546cef8b490c34c0ba4 Mon Sep 17 00:00:00 2001 From: Oliver Browne Date: Wed, 30 Oct 2024 14:27:24 +0200 Subject: [PATCH 10/22] feat(cdp): better logging of fetch failures (#25665) Co-authored-by: Ben White --- plugin-server/src/cdp/cdp-api.ts | 4 +- plugin-server/src/cdp/fetch-executor.ts | 4 +- plugin-server/src/cdp/hog-executor.ts | 41 +++++++++++++++----- plugin-server/src/cdp/types.ts | 25 +++++++++++- plugin-server/src/cdp/utils.ts | 28 ++++--------- plugin-server/tests/cdp/cdp-api.test.ts | 7 ++-- plugin-server/tests/cdp/cdp-e2e.test.ts | 1 + plugin-server/tests/cdp/hog-executor.test.ts | 3 +- 8 files changed, 73 insertions(+), 40 deletions(-) diff --git a/plugin-server/src/cdp/cdp-api.ts b/plugin-server/src/cdp/cdp-api.ts index 0f4ea02b96814..ed4e60976b1e9 100644 --- a/plugin-server/src/cdp/cdp-api.ts +++ b/plugin-server/src/cdp/cdp-api.ts @@ -156,7 +156,7 @@ export class CdpApi { invocation: { ...invocation, queue: 'hog', - queueParameters: { response: { status: 200, body: '{}' } }, + queueParameters: { response: { status: 200, headers: {} }, body: '{}' }, }, finished: false, logs: [ @@ -185,7 +185,7 @@ export class CdpApi { res.json({ status: lastResponse.finished ? 'success' : 'error', - error: String(lastResponse.error), + error: lastResponse.error ? String(lastResponse.error) : null, logs: logs, }) } catch (e) { diff --git a/plugin-server/src/cdp/fetch-executor.ts b/plugin-server/src/cdp/fetch-executor.ts index 62f061e70c037..e4ad6a53a3613 100644 --- a/plugin-server/src/cdp/fetch-executor.ts +++ b/plugin-server/src/cdp/fetch-executor.ts @@ -95,6 +95,7 @@ export class FetchExecutor { const resParams: HogFunctionQueueParametersFetchResponse = { response: { status: 0, + headers: {}, }, error: null, timings: [], @@ -120,8 +121,9 @@ export class FetchExecutor { resParams.response = { status: fetchResponse.status, - body: responseBody, + headers: Object.fromEntries(fetchResponse.headers.entries()), } + resParams.body = responseBody } catch (err) { status.error('🦔', `[HogExecutor] Error during fetch`, { error: String(err) }) resParams.error = 'Something went wrong with the fetch request.' diff --git a/plugin-server/src/cdp/hog-executor.ts b/plugin-server/src/cdp/hog-executor.ts index c57d954460f66..92b38fb71c4a8 100644 --- a/plugin-server/src/cdp/hog-executor.ts +++ b/plugin-server/src/cdp/hog-executor.ts @@ -9,6 +9,7 @@ import { Hub, ValueMatcher } from '../types' import { status } from '../utils/status' import { HogFunctionManager } from './hog-function-manager' import { + CyclotronFetchFailureInfo, HogFunctionInvocation, HogFunctionInvocationGlobals, HogFunctionInvocationGlobalsWithInputs, @@ -217,25 +218,41 @@ export class HogExecutor { const { logs = [], response = null, + trace = [], error, timings = [], } = invocation.queueParameters as HogFunctionQueueParametersFetchResponse + + let body = invocation.queueParameters.body // Reset the queue parameters to be sure invocation.queue = 'hog' invocation.queueParameters = undefined - const status = typeof response?.status === 'number' ? response.status : 503 - - // Special handling for fetch - if (status >= 400) { - // Generic warn log for bad status codes + // If we got a trace, then the last "result" is the final attempt, and we should try to grab a status from it + // or any preceding attempts, and produce a log message for each of them + let status = null + if (trace.length > 0) { logs.push({ - level: 'warn', + level: 'error', timestamp: DateTime.now(), - message: `Fetch returned bad status: ${status}`, + message: `Fetch failed after ${trace.length} attempts`, }) + for (const attempt of trace) { + logs.push({ + level: 'warn', + timestamp: DateTime.now(), + message: fetchFailureToLogMessage(attempt), + }) + if (attempt.status) { + status = attempt.status + } + } } + // If we got a response from fetch, we know the response code was in the <300 range, + // but if we didn't (indicating a bug in the fetch worker), we use a default of 503 + status = response?.status ?? 503 + if (!invocation.vmState) { throw new Error("VM state wasn't provided for queue parameters") } @@ -244,9 +261,9 @@ export class HogExecutor { throw new Error(error) } - if (typeof response?.body === 'string') { + if (typeof body === 'string') { try { - response.body = JSON.parse(response.body) + body = JSON.parse(body) } catch (e) { // pass - if it isn't json we just pass it on } @@ -255,7 +272,7 @@ export class HogExecutor { // Finally we create the response object as the VM expects invocation.vmState!.stack.push({ status, - body: response?.body, + body: body, }) invocation.timings = invocation.timings.concat(timings) result.logs = [...logs, ...result.logs] @@ -556,3 +573,7 @@ export class HogExecutor { return values } } + +function fetchFailureToLogMessage(failure: CyclotronFetchFailureInfo): string { + return `Fetch failure of kind ${failure.kind} with status ${failure.status} and message ${failure.message}` +} diff --git a/plugin-server/src/cdp/types.ts b/plugin-server/src/cdp/types.ts index 037e08e7a9a54..8a675e605e017 100644 --- a/plugin-server/src/cdp/types.ts +++ b/plugin-server/src/cdp/types.ts @@ -169,14 +169,35 @@ export type HogFunctionQueueParametersFetchRequest = { headers?: Record } +export type CyclotronFetchFailureKind = + | 'timeout' + | 'timeoutgettingbody' + | 'missingparameters' + | 'invalidparameters' + | 'requesterror' + | 'failurestatus' + | 'invalidbody' + | 'responsetoolarge' + +export type CyclotronFetchFailureInfo = { + kind: CyclotronFetchFailureKind + message: string + headers?: Record + status?: number + timestamp: DateTime +} + export type HogFunctionQueueParametersFetchResponse = { /** An error message to indicate something went wrong and the invocation should be stopped */ error?: any - /** The data to be passed to the Hog function from the response */ + /** On success, the fetch worker returns only the successful response */ response?: { status: number - body?: string + headers: Record } | null + /** On failure, the fetch worker returns a list of info about the attempts made*/ + trace?: CyclotronFetchFailureInfo[] + body?: string // Both results AND failures can have a body timings?: HogFunctionTiming[] logs?: LogEntry[] } diff --git a/plugin-server/src/cdp/utils.ts b/plugin-server/src/cdp/utils.ts index f8031a043a1bc..6546db471d88f 100644 --- a/plugin-server/src/cdp/utils.ts +++ b/plugin-server/src/cdp/utils.ts @@ -317,21 +317,14 @@ function prepareQueueParams( let parameters: HogFunctionInvocation['queueParameters'] = _params let blob: CyclotronJobUpdate['blob'] = undefined - if (parameters && 'body' in parameters) { - // Fetch request - const { body, ...rest } = parameters - parameters = rest - blob = body ? Buffer.from(body) : undefined - } else if (parameters && 'response' in parameters && parameters.response) { - // Fetch response - const { body, ...rest } = parameters.response - parameters = { - ...parameters, - response: rest, - } - blob = body ? Buffer.from(body) : undefined + if (!parameters) { + return { parameters, blob } } + const { body, ...rest } = parameters + parameters = rest + blob = body ? Buffer.from(body) : undefined + return { parameters, blob, @@ -355,14 +348,7 @@ export function cyclotronJobToInvocation(job: CyclotronJob, hogFunction: HogFunc if (job.blob && params) { // Deserialize the blob into the params try { - const body = job.blob ? Buffer.from(job.blob).toString('utf-8') : undefined - if ('response' in params && params.response) { - // Fetch response - params.response.body = body - } else if ('method' in params) { - // Fetch request - params.body = body - } + params.body = job.blob ? Buffer.from(job.blob).toString('utf-8') : undefined } catch (e) { status.error('Error parsing blob', e, job.blob) captureException(e) diff --git a/plugin-server/tests/cdp/cdp-api.test.ts b/plugin-server/tests/cdp/cdp-api.test.ts index 94ccf642230a9..25599334cbc0f 100644 --- a/plugin-server/tests/cdp/cdp-api.test.ts +++ b/plugin-server/tests/cdp/cdp-api.test.ts @@ -166,7 +166,7 @@ describe('CDP API', () => { console.log(res.body.logs[3].message) expect(res.body).toMatchObject({ status: 'success', - error: 'undefined', + error: null, logs: [ { level: 'debug', @@ -205,6 +205,7 @@ describe('CDP API', () => { Promise.resolve({ status: 201, text: () => Promise.resolve(JSON.stringify({ real: true })), + headers: new Headers({ 'Content-Type': 'application/json' }), }) ) const res = await supertest(app) @@ -214,7 +215,7 @@ describe('CDP API', () => { expect(res.status).toEqual(200) expect(res.body).toMatchObject({ status: 'success', - error: 'undefined', + error: null, logs: [ { level: 'debug', @@ -260,7 +261,7 @@ describe('CDP API', () => { expect(res.status).toEqual(200) expect(res.body).toMatchObject({ status: 'success', - error: 'undefined', + error: null, logs: [ { level: 'debug', diff --git a/plugin-server/tests/cdp/cdp-e2e.test.ts b/plugin-server/tests/cdp/cdp-e2e.test.ts index db170f7ea8e1f..2dc228da8705d 100644 --- a/plugin-server/tests/cdp/cdp-e2e.test.ts +++ b/plugin-server/tests/cdp/cdp-e2e.test.ts @@ -20,6 +20,7 @@ jest.mock('../../src/utils/fetch', () => { Promise.resolve({ status: 200, text: () => Promise.resolve(JSON.stringify({ success: true })), + headers: new Headers({ 'Content-Type': 'application/json' }), json: () => Promise.resolve({ success: true }), }) ), diff --git a/plugin-server/tests/cdp/hog-executor.test.ts b/plugin-server/tests/cdp/hog-executor.test.ts index 94608b2f5bea1..9d1f5dea2bebf 100644 --- a/plugin-server/tests/cdp/hog-executor.test.ts +++ b/plugin-server/tests/cdp/hog-executor.test.ts @@ -31,8 +31,9 @@ const setupFetchResponse = (invocation: HogFunctionInvocation, options?: { statu ], response: { status: options?.status ?? 200, - body: options?.body ?? 'success', + headers: { 'Content-Type': 'application/json' }, }, + body: options?.body ?? 'success', } } From 0fef0fa080c25d6b9110b7a4ae5ade857b0b0aaf Mon Sep 17 00:00:00 2001 From: Paul D'Ambra Date: Wed, 30 Oct 2024 13:33:27 +0100 Subject: [PATCH 11/22] fix: yet another flappity should die (#25898) --- posthog/test/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posthog/test/base.py b/posthog/test/base.py index 1958c630aa33d..0c40adacae97b 100644 --- a/posthog/test/base.py +++ b/posthog/test/base.py @@ -563,7 +563,7 @@ def assertQueryMatchesSnapshot(self, query, params=None, replace_all_numbers=Fal #### Cohort replacements # replace cohort id lists in queries too query = re.sub( - r"in((.*)?cohort_id, \[\d+(, ?\d+)*\])", + r"in((.*?)cohort_id, \[\d+(, ?\d+)*\])", r"in(\1cohort_id, [1, 2, 3, 4, 5 /* ... */])", query, ) From 8de5762cd14b8ae738d5b6c7d95a5f66b8546757 Mon Sep 17 00:00:00 2001 From: Georgiy Tarasov Date: Wed, 30 Oct 2024 14:40:56 +0100 Subject: [PATCH 12/22] feat(product-assistant): trends generation failover (#25769) Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- ee/hogai/assistant.py | 59 ++++-- ee/hogai/trends/nodes.py | 143 ++++++++----- ee/hogai/trends/parsers.py | 24 +++ ee/hogai/trends/prompts.py | 20 ++ ee/hogai/trends/test/test_nodes.py | 196 +++++++++++++++++- ee/hogai/trends/test/test_utils.py | 39 ++++ ee/hogai/trends/utils.py | 45 +++- ee/hogai/utils.py | 5 +- ...app-max-ai--empty-thread-loading--dark.png | Bin 11026 -> 11029 bytes ...pp-max-ai--empty-thread-loading--light.png | Bin 11162 -> 11160 bytes ...ax-ai--generation-failure-thread--dark.png | Bin 0 -> 44264 bytes ...x-ai--generation-failure-thread--light.png | Bin 0 -> 43409 bytes .../scenes-app-max-ai--thread--dark.png | Bin 65533 -> 68501 bytes .../scenes-app-max-ai--thread--light.png | Bin 63577 -> 65884 bytes ...i--thread-with-failed-generation--dark.png | Bin 0 -> 16149 bytes ...--thread-with-failed-generation--light.png | Bin 0 -> 16249 bytes frontend/src/queries/schema.json | 37 +++- frontend/src/queries/schema.ts | 22 +- frontend/src/scenes/max/Max.stories.tsx | 44 +++- frontend/src/scenes/max/Thread.tsx | 84 ++++++-- .../max/__mocks__/chatResponse.mocks.ts | 24 ++- .../scenes/max/__mocks__/failureResponse.json | 4 + frontend/src/scenes/max/maxLogic.ts | 96 +++++++-- frontend/src/scenes/max/utils.ts | 12 +- posthog/api/query.py | 15 +- posthog/schema.py | 30 ++- 26 files changed, 773 insertions(+), 126 deletions(-) create mode 100644 ee/hogai/trends/parsers.py create mode 100644 ee/hogai/trends/test/test_utils.py create mode 100644 frontend/__snapshots__/scenes-app-max-ai--generation-failure-thread--dark.png create mode 100644 frontend/__snapshots__/scenes-app-max-ai--generation-failure-thread--light.png create mode 100644 frontend/__snapshots__/scenes-app-max-ai--thread-with-failed-generation--dark.png create mode 100644 frontend/__snapshots__/scenes-app-max-ai--thread-with-failed-generation--light.png create mode 100644 frontend/src/scenes/max/__mocks__/failureResponse.json diff --git a/ee/hogai/assistant.py b/ee/hogai/assistant.py index e47020fdcdf04..d01181b937c4e 100644 --- a/ee/hogai/assistant.py +++ b/ee/hogai/assistant.py @@ -4,12 +4,18 @@ from langchain_core.messages import AIMessageChunk from langfuse.callback import CallbackHandler from langgraph.graph.state import StateGraph +from pydantic import BaseModel from ee import settings -from ee.hogai.trends.nodes import CreateTrendsPlanNode, CreateTrendsPlanToolsNode, GenerateTrendsNode +from ee.hogai.trends.nodes import ( + CreateTrendsPlanNode, + CreateTrendsPlanToolsNode, + GenerateTrendsNode, + GenerateTrendsToolsNode, +) from ee.hogai.utils import AssistantNodeName, AssistantState, Conversation from posthog.models.team.team import Team -from posthog.schema import VisualizationMessage +from posthog.schema import AssistantGenerationStatusEvent, AssistantGenerationStatusType, VisualizationMessage if settings.LANGFUSE_PUBLIC_KEY: langfuse_handler = CallbackHandler( @@ -39,6 +45,13 @@ def is_message_update( return len(update) == 2 and update[0] == "messages" +def is_state_update(update: list[Any]) -> TypeGuard[tuple[Literal["updates"], AssistantState]]: + """ + Update of the state. + """ + return len(update) == 2 and update[0] == "values" + + class Assistant: _team: Team _graph: StateGraph @@ -59,6 +72,10 @@ def _compile_graph(self): generate_trends_node = GenerateTrendsNode(self._team) builder.add_node(GenerateTrendsNode.name, generate_trends_node.run) + generate_trends_tools_node = GenerateTrendsToolsNode(self._team) + builder.add_node(GenerateTrendsToolsNode.name, generate_trends_tools_node.run) + builder.add_edge(GenerateTrendsToolsNode.name, GenerateTrendsNode.name) + builder.add_edge(AssistantNodeName.START, create_trends_plan_node.name) builder.add_conditional_edges(create_trends_plan_node.name, create_trends_plan_node.router) builder.add_conditional_edges(create_trends_plan_tools_node.name, create_trends_plan_tools_node.router) @@ -66,31 +83,45 @@ def _compile_graph(self): return builder.compile() - def stream(self, conversation: Conversation) -> Generator[str, None, None]: + def stream(self, conversation: Conversation) -> Generator[BaseModel, None, None]: assistant_graph = self._compile_graph() callbacks = [langfuse_handler] if langfuse_handler else [] messages = [message.root for message in conversation.messages] + chunks = AIMessageChunk(content="") + state: AssistantState = {"messages": messages, "intermediate_steps": None, "plan": None} + generator = assistant_graph.stream( - {"messages": messages}, + state, config={"recursion_limit": 24, "callbacks": callbacks}, - stream_mode=["messages", "updates"], + stream_mode=["messages", "values", "updates"], ) chunks = AIMessageChunk(content="") # Send a chunk to establish the connection avoiding the worker's timeout. - yield "" + yield AssistantGenerationStatusEvent(type=AssistantGenerationStatusType.ACK) for update in generator: - if is_value_update(update): + if is_state_update(update): + _, new_state = update + state = new_state + + elif is_value_update(update): _, state_update = update - if ( - AssistantNodeName.GENERATE_TRENDS in state_update - and "messages" in state_update[AssistantNodeName.GENERATE_TRENDS] - ): - message = cast(VisualizationMessage, state_update[AssistantNodeName.GENERATE_TRENDS]["messages"][0]) - yield message.model_dump_json() + + if AssistantNodeName.GENERATE_TRENDS in state_update: + # Reset chunks when schema validation fails. + chunks = AIMessageChunk(content="") + + if "messages" in state_update[AssistantNodeName.GENERATE_TRENDS]: + message = cast( + VisualizationMessage, state_update[AssistantNodeName.GENERATE_TRENDS]["messages"][0] + ) + yield message + elif state_update[AssistantNodeName.GENERATE_TRENDS].get("intermediate_steps", []): + yield AssistantGenerationStatusEvent(type=AssistantGenerationStatusType.GENERATION_ERROR) + elif is_message_update(update): langchain_message, langgraph_state = update[1] if langgraph_state["langgraph_node"] == AssistantNodeName.GENERATE_TRENDS and isinstance( @@ -101,4 +132,4 @@ def stream(self, conversation: Conversation) -> Generator[str, None, None]: if parsed_message: yield VisualizationMessage( reasoning_steps=parsed_message.reasoning_steps, answer=parsed_message.answer - ).model_dump_json() + ) diff --git a/ee/hogai/trends/nodes.py b/ee/hogai/trends/nodes.py index 845c71fe4ee5e..206b74173a192 100644 --- a/ee/hogai/trends/nodes.py +++ b/ee/hogai/trends/nodes.py @@ -1,8 +1,7 @@ import itertools -import json import xml.etree.ElementTree as ET from functools import cached_property -from typing import Union, cast +from typing import Optional, Union, cast from langchain.agents.format_scratchpad import format_log_to_str from langchain.agents.output_parsers import ReActJsonSingleInputOutputParser @@ -10,20 +9,21 @@ from langchain_core.exceptions import OutputParserException from langchain_core.messages import AIMessage as LangchainAssistantMessage from langchain_core.messages import BaseMessage, merge_message_runs -from langchain_core.messages import HumanMessage as LangchainHumanMessage -from langchain_core.output_parsers import PydanticOutputParser from langchain_core.prompts import ChatPromptTemplate, HumanMessagePromptTemplate -from langchain_core.runnables import RunnableConfig, RunnableLambda +from langchain_core.runnables import RunnableConfig from langchain_openai import ChatOpenAI from pydantic import ValidationError from ee.hogai.hardcoded_definitions import hardcoded_prop_defs +from ee.hogai.trends.parsers import PydanticOutputParserException, parse_generated_trends_output from ee.hogai.trends.prompts import ( react_definitions_prompt, react_follow_up_prompt, react_scratchpad_prompt, react_system_prompt, react_user_prompt, + trends_failover_output_prompt, + trends_failover_prompt, trends_group_mapping_prompt, trends_new_plan_prompt, trends_plan_prompt, @@ -35,7 +35,7 @@ TrendsAgentToolkit, TrendsAgentToolModel, ) -from ee.hogai.trends.utils import GenerateTrendOutputModel +from ee.hogai.trends.utils import GenerateTrendOutputModel, filter_trends_conversation from ee.hogai.utils import ( AssistantNode, AssistantNodeName, @@ -45,7 +45,12 @@ from posthog.hogql_queries.ai.team_taxonomy_query_runner import TeamTaxonomyQueryRunner from posthog.hogql_queries.query_runner import ExecutionMode from posthog.models.group_type_mapping import GroupTypeMapping -from posthog.schema import CachedTeamTaxonomyQueryResponse, HumanMessage, TeamTaxonomyQuery, VisualizationMessage +from posthog.schema import ( + CachedTeamTaxonomyQueryResponse, + FailureMessage, + TeamTaxonomyQuery, + VisualizationMessage, +) class CreateTrendsPlanNode(AssistantNode): @@ -170,26 +175,33 @@ def _reconstruct_conversation(self, state: AssistantState) -> list[BaseMessage]: """ Reconstruct the conversation for the agent. On this step we only care about previously asked questions and generated plans. All other messages are filtered out. """ - messages = state.get("messages", []) - if len(messages) == 0: + human_messages, visualization_messages = filter_trends_conversation(state.get("messages", [])) + + if not human_messages: return [] - conversation = [ - HumanMessagePromptTemplate.from_template(react_user_prompt, template_format="mustache").format( - question=messages[0].content if isinstance(messages[0], HumanMessage) else "" - ) - ] + conversation = [] - for message in messages[1:]: - if isinstance(message, HumanMessage): - conversation.append( - HumanMessagePromptTemplate.from_template( - react_follow_up_prompt, - template_format="mustache", - ).format(feedback=message.content) - ) - elif isinstance(message, VisualizationMessage): - conversation.append(LangchainAssistantMessage(content=message.plan or "")) + for idx, messages in enumerate(itertools.zip_longest(human_messages, visualization_messages)): + human_message, viz_message = messages + + if human_message: + if idx == 0: + conversation.append( + HumanMessagePromptTemplate.from_template(react_user_prompt, template_format="mustache").format( + question=human_message.content + ) + ) + else: + conversation.append( + HumanMessagePromptTemplate.from_template( + react_follow_up_prompt, + template_format="mustache", + ).format(feedback=human_message.content) + ) + + if viz_message: + conversation.append(LangchainAssistantMessage(content=viz_message.plan or "")) return conversation @@ -240,30 +252,38 @@ class GenerateTrendsNode(AssistantNode): def run(self, state: AssistantState, config: RunnableConfig): generated_plan = state.get("plan", "") + intermediate_steps = state.get("intermediate_steps") or [] + validation_error_message = intermediate_steps[-1][1] if intermediate_steps else None trends_generation_prompt = ChatPromptTemplate.from_messages( [ ("system", trends_system_prompt), ], template_format="mustache", - ) + self._reconstruct_conversation(state) + ) + self._reconstruct_conversation(state, validation_error_message=validation_error_message) merger = merge_message_runs() - chain = ( - trends_generation_prompt - | merger - | self._model - # Result from structured output is a parsed dict. Convert to a string since the output parser expects it. - | RunnableLambda(lambda x: json.dumps(x)) - # Validate a string input. - | PydanticOutputParser[GenerateTrendOutputModel](pydantic_object=GenerateTrendOutputModel) - ) + chain = trends_generation_prompt | merger | self._model | parse_generated_trends_output try: message: GenerateTrendOutputModel = chain.invoke({}, config) - except OutputParserException: + except PydanticOutputParserException as e: + # Generation step is expensive. After a second unsuccessful attempt, it's better to send a failure message. + if len(intermediate_steps) >= 2: + return { + "messages": [ + FailureMessage( + content="Oops! It looks like I’m having trouble generating this trends insight. Could you please try again?" + ) + ], + "intermediate_steps": None, + } + return { - "messages": [VisualizationMessage(plan=generated_plan, reasoning_steps=["Schema validation failed"])] + "intermediate_steps": [ + *intermediate_steps, + (AgentAction("handle_incorrect_response", e.llm_output, e.validation_message), None), + ], } return { @@ -273,11 +293,12 @@ def run(self, state: AssistantState, config: RunnableConfig): reasoning_steps=message.reasoning_steps, answer=message.answer, ) - ] + ], + "intermediate_steps": None, } def router(self, state: AssistantState): - if state.get("tool_argument") is not None: + if state.get("intermediate_steps") is not None: return AssistantNodeName.GENERATE_TRENDS_TOOLS return AssistantNodeName.END @@ -301,7 +322,9 @@ def _group_mapping_prompt(self) -> str: ) return ET.tostring(root, encoding="unicode") - def _reconstruct_conversation(self, state: AssistantState) -> list[BaseMessage]: + def _reconstruct_conversation( + self, state: AssistantState, validation_error_message: Optional[str] = None + ) -> list[BaseMessage]: """ Reconstruct the conversation for the generation. Take all previously generated questions, plans, and schemas, and return the history. """ @@ -317,22 +340,7 @@ def _reconstruct_conversation(self, state: AssistantState) -> list[BaseMessage]: ) ] - stack: list[LangchainHumanMessage] = [] - human_messages: list[LangchainHumanMessage] = [] - visualization_messages: list[VisualizationMessage] = [] - - for message in messages: - if isinstance(message, HumanMessage): - stack.append(LangchainHumanMessage(content=message.content)) - elif isinstance(message, VisualizationMessage) and message.answer: - if stack: - human_messages += merge_message_runs(stack) - stack = [] - visualization_messages.append(message) - - if stack: - human_messages += merge_message_runs(stack) - + human_messages, visualization_messages = filter_trends_conversation(messages) first_ai_message = True for human_message, ai_message in itertools.zip_longest(human_messages, visualization_messages): @@ -364,6 +372,13 @@ def _reconstruct_conversation(self, state: AssistantState) -> list[BaseMessage]: LangchainAssistantMessage(content=ai_message.answer.model_dump_json() if ai_message.answer else "") ) + if validation_error_message: + conversation.append( + HumanMessagePromptTemplate.from_template(trends_failover_prompt, template_format="mustache").format( + validation_error_message=validation_error_message + ) + ) + return conversation @classmethod @@ -382,4 +397,20 @@ class GenerateTrendsToolsNode(AssistantNode): name = AssistantNodeName.GENERATE_TRENDS_TOOLS def run(self, state: AssistantState, config: RunnableConfig): - return state + intermediate_steps = state.get("intermediate_steps", []) + if not intermediate_steps: + return state + + action, _ = intermediate_steps[-1] + prompt = ( + ChatPromptTemplate.from_template(trends_failover_output_prompt, template_format="mustache") + .format_messages(output=action.tool_input, exception_message=action.log)[0] + .content + ) + + return { + "intermediate_steps": [ + *intermediate_steps[:-1], + (action, prompt), + ] + } diff --git a/ee/hogai/trends/parsers.py b/ee/hogai/trends/parsers.py new file mode 100644 index 0000000000000..a461c692d8825 --- /dev/null +++ b/ee/hogai/trends/parsers.py @@ -0,0 +1,24 @@ +import json + +from pydantic import ValidationError + +from ee.hogai.trends.utils import GenerateTrendOutputModel + + +class PydanticOutputParserException(ValueError): + llm_output: str + """Serialized LLM output.""" + validation_message: str + """Pydantic validation error message.""" + + def __init__(self, llm_output: str, validation_message: str): + super().__init__(llm_output) + self.llm_output = llm_output + self.validation_message = validation_message + + +def parse_generated_trends_output(output: dict) -> GenerateTrendOutputModel: + try: + return GenerateTrendOutputModel.model_validate(output) + except ValidationError as e: + raise PydanticOutputParserException(llm_output=json.dumps(output), validation_message=e.json(include_url=False)) diff --git a/ee/hogai/trends/prompts.py b/ee/hogai/trends/prompts.py index c53ae5d3453a5..84c2bcedb544a 100644 --- a/ee/hogai/trends/prompts.py +++ b/ee/hogai/trends/prompts.py @@ -269,3 +269,23 @@ trends_question_prompt = """ Answer to this question: {{question}} """ + +trends_failover_output_prompt = """ +Generation output: +``` +{{output}} +``` + +Exception message: +``` +{{exception_message}} +``` +""" + +trends_failover_prompt = """ +The result of the previous generation raised the Pydantic validation exception. + +{{validation_error_message}} + +Fix the error and return the correct response. +""" diff --git a/ee/hogai/trends/test/test_nodes.py b/ee/hogai/trends/test/test_nodes.py index dc297570c1fd1..990f83ddca754 100644 --- a/ee/hogai/trends/test/test_nodes.py +++ b/ee/hogai/trends/test/test_nodes.py @@ -1,7 +1,20 @@ +import json +from unittest.mock import patch + from django.test import override_settings +from langchain_core.agents import AgentAction +from langchain_core.runnables import RunnableLambda -from ee.hogai.trends.nodes import CreateTrendsPlanNode, GenerateTrendsNode -from posthog.schema import AssistantMessage, ExperimentalAITrendsQuery, HumanMessage, VisualizationMessage +from ee.hogai.trends.nodes import CreateTrendsPlanNode, GenerateTrendsNode, GenerateTrendsToolsNode +from ee.hogai.trends.utils import GenerateTrendOutputModel +from ee.hogai.utils import AssistantNodeName +from posthog.schema import ( + AssistantMessage, + ExperimentalAITrendsQuery, + FailureMessage, + HumanMessage, + VisualizationMessage, +) from posthog.test.base import APIBaseTest, ClickhouseTestMixin, _create_event, _create_person @@ -68,6 +81,22 @@ def test_agent_reconstructs_conversation_and_omits_unknown_messages(self): self.assertIn("Text", history[0].content) self.assertNotIn("{{question}}", history[0].content) + def test_agent_reconstructs_conversation_with_failures(self): + node = CreateTrendsPlanNode(self.team) + history = node._reconstruct_conversation( + { + "messages": [ + HumanMessage(content="Text"), + FailureMessage(content="Error"), + HumanMessage(content="Text"), + ] + } + ) + self.assertEqual(len(history), 1) + self.assertEqual(history[0].type, "human") + self.assertIn("Text", history[0].content) + self.assertNotIn("{{question}}", history[0].content) + def test_agent_filters_out_low_count_events(self): _create_person(distinct_ids=["test"], team=self.team) for i in range(26): @@ -92,6 +121,27 @@ class TestGenerateTrendsNode(ClickhouseTestMixin, APIBaseTest): def setUp(self): self.schema = ExperimentalAITrendsQuery(series=[]) + def test_node_runs(self): + node = GenerateTrendsNode(self.team) + with patch("ee.hogai.trends.nodes.GenerateTrendsNode._model") as generator_model_mock: + generator_model_mock.return_value = RunnableLambda( + lambda _: GenerateTrendOutputModel(reasoning_steps=["step"], answer=self.schema).model_dump() + ) + new_state = node.run( + { + "messages": [HumanMessage(content="Text")], + "plan": "Plan", + }, + {}, + ) + self.assertEqual( + new_state, + { + "messages": [VisualizationMessage(answer=self.schema, plan="Plan", reasoning_steps=["step"])], + "intermediate_steps": None, + }, + ) + def test_agent_reconstructs_conversation(self): node = GenerateTrendsNode(self.team) history = node._reconstruct_conversation({"messages": [HumanMessage(content="Text")]}) @@ -203,3 +253,145 @@ def test_agent_reconstructs_conversation_and_merges_messages(self): self.assertIn("Answer to this question:", history[5].content) self.assertNotIn("{{question}}", history[5].content) self.assertIn("Follow\nUp", history[5].content) + + def test_failover_with_incorrect_schema(self): + node = GenerateTrendsNode(self.team) + with patch("ee.hogai.trends.nodes.GenerateTrendsNode._model") as generator_model_mock: + schema = GenerateTrendOutputModel(reasoning_steps=[], answer=None).model_dump() + # Emulate an incorrect JSON. It should be an object. + schema["answer"] = [] + generator_model_mock.return_value = RunnableLambda(lambda _: json.dumps(schema)) + + new_state = node.run({"messages": [HumanMessage(content="Text")]}, {}) + self.assertIn("intermediate_steps", new_state) + self.assertEqual(len(new_state["intermediate_steps"]), 1) + + new_state = node.run( + { + "messages": [HumanMessage(content="Text")], + "intermediate_steps": [(AgentAction(tool="", tool_input="", log="exception"), "exception")], + }, + {}, + ) + self.assertIn("intermediate_steps", new_state) + self.assertEqual(len(new_state["intermediate_steps"]), 2) + + def test_node_leaves_failover(self): + node = GenerateTrendsNode(self.team) + with patch( + "ee.hogai.trends.nodes.GenerateTrendsNode._model", + return_value=RunnableLambda( + lambda _: GenerateTrendOutputModel(reasoning_steps=[], answer=self.schema).model_dump() + ), + ): + new_state = node.run( + { + "messages": [HumanMessage(content="Text")], + "intermediate_steps": [(AgentAction(tool="", tool_input="", log="exception"), "exception")], + }, + {}, + ) + self.assertIsNone(new_state["intermediate_steps"]) + + new_state = node.run( + { + "messages": [HumanMessage(content="Text")], + "intermediate_steps": [ + (AgentAction(tool="", tool_input="", log="exception"), "exception"), + (AgentAction(tool="", tool_input="", log="exception"), "exception"), + ], + }, + {}, + ) + self.assertIsNone(new_state["intermediate_steps"]) + + def test_node_leaves_failover_after_second_unsuccessful_attempt(self): + node = GenerateTrendsNode(self.team) + with patch("ee.hogai.trends.nodes.GenerateTrendsNode._model") as generator_model_mock: + schema = GenerateTrendOutputModel(reasoning_steps=[], answer=None).model_dump() + # Emulate an incorrect JSON. It should be an object. + schema["answer"] = [] + generator_model_mock.return_value = RunnableLambda(lambda _: json.dumps(schema)) + + new_state = node.run( + { + "messages": [HumanMessage(content="Text")], + "intermediate_steps": [ + (AgentAction(tool="", tool_input="", log="exception"), "exception"), + (AgentAction(tool="", tool_input="", log="exception"), "exception"), + ], + }, + {}, + ) + self.assertIsNone(new_state["intermediate_steps"]) + self.assertEqual(len(new_state["messages"]), 1) + self.assertIsInstance(new_state["messages"][0], FailureMessage) + + def test_agent_reconstructs_conversation_with_failover(self): + action = AgentAction(tool="fix", tool_input="validation error", log="exception") + node = GenerateTrendsNode(self.team) + history = node._reconstruct_conversation( + { + "messages": [HumanMessage(content="Text")], + "plan": "randomplan", + "intermediate_steps": [(action, "uniqexception")], + }, + "uniqexception", + ) + self.assertEqual(len(history), 4) + self.assertEqual(history[0].type, "human") + self.assertIn("mapping", history[0].content) + self.assertEqual(history[1].type, "human") + self.assertIn("the plan", history[1].content) + self.assertNotIn("{{plan}}", history[1].content) + self.assertIn("randomplan", history[1].content) + self.assertEqual(history[2].type, "human") + self.assertIn("Answer to this question:", history[2].content) + self.assertNotIn("{{question}}", history[2].content) + self.assertIn("Text", history[2].content) + self.assertEqual(history[3].type, "human") + self.assertIn("Pydantic", history[3].content) + self.assertIn("uniqexception", history[3].content) + + def test_agent_reconstructs_conversation_with_failed_messages(self): + node = GenerateTrendsNode(self.team) + history = node._reconstruct_conversation( + { + "messages": [ + HumanMessage(content="Text"), + FailureMessage(content="Error"), + HumanMessage(content="Text"), + ], + "plan": "randomplan", + }, + ) + self.assertEqual(len(history), 3) + self.assertEqual(history[0].type, "human") + self.assertIn("mapping", history[0].content) + self.assertEqual(history[1].type, "human") + self.assertIn("the plan", history[1].content) + self.assertNotIn("{{plan}}", history[1].content) + self.assertIn("randomplan", history[1].content) + self.assertEqual(history[2].type, "human") + self.assertIn("Answer to this question:", history[2].content) + self.assertNotIn("{{question}}", history[2].content) + self.assertIn("Text", history[2].content) + + def test_router(self): + node = GenerateTrendsNode(self.team) + state = node.router({"messages": [], "intermediate_steps": None}) + self.assertEqual(state, AssistantNodeName.END) + state = node.router( + {"messages": [], "intermediate_steps": [(AgentAction(tool="", tool_input="", log=""), None)]} + ) + self.assertEqual(state, AssistantNodeName.GENERATE_TRENDS_TOOLS) + + +class TestGenerateTrendsToolsNode(ClickhouseTestMixin, APIBaseTest): + def test_tools_node(self): + node = GenerateTrendsToolsNode(self.team) + action = AgentAction(tool="fix", tool_input="validationerror", log="pydanticexception") + state = node.run({"messages": [], "intermediate_steps": [(action, None)]}, {}) + self.assertIsNotNone("validationerror", state["intermediate_steps"][0][1]) + self.assertIn("validationerror", state["intermediate_steps"][0][1]) + self.assertIn("pydanticexception", state["intermediate_steps"][0][1]) diff --git a/ee/hogai/trends/test/test_utils.py b/ee/hogai/trends/test/test_utils.py new file mode 100644 index 0000000000000..de9b8733129ec --- /dev/null +++ b/ee/hogai/trends/test/test_utils.py @@ -0,0 +1,39 @@ +from langchain_core.messages import HumanMessage as LangchainHumanMessage + +from ee.hogai.trends import utils +from posthog.schema import ExperimentalAITrendsQuery, FailureMessage, HumanMessage, VisualizationMessage +from posthog.test.base import BaseTest + + +class TestTrendsUtils(BaseTest): + def test_merge_human_messages(self): + res = utils.merge_human_messages( + [ + LangchainHumanMessage(content="Text"), + LangchainHumanMessage(content="Text"), + LangchainHumanMessage(content="Te"), + LangchainHumanMessage(content="xt"), + ] + ) + self.assertEqual(len(res), 1) + self.assertEqual(res, [LangchainHumanMessage(content="Text\nTe\nxt")]) + + def test_filter_trends_conversation(self): + human_messages, visualization_messages = utils.filter_trends_conversation( + [ + HumanMessage(content="Text"), + FailureMessage(content="Error"), + HumanMessage(content="Text"), + VisualizationMessage(answer=ExperimentalAITrendsQuery(series=[]), plan="plan"), + HumanMessage(content="Text2"), + VisualizationMessage(answer=None, plan="plan"), + ] + ) + self.assertEqual(len(human_messages), 2) + self.assertEqual(len(visualization_messages), 1) + self.assertEqual( + human_messages, [LangchainHumanMessage(content="Text"), LangchainHumanMessage(content="Text2")] + ) + self.assertEqual( + visualization_messages, [VisualizationMessage(answer=ExperimentalAITrendsQuery(series=[]), plan="plan")] + ) diff --git a/ee/hogai/trends/utils.py b/ee/hogai/trends/utils.py index 080f85f0256d0..5e1a8052707c8 100644 --- a/ee/hogai/trends/utils.py +++ b/ee/hogai/trends/utils.py @@ -1,10 +1,53 @@ +from collections.abc import Sequence from typing import Optional +from langchain_core.messages import HumanMessage as LangchainHumanMessage +from langchain_core.messages import merge_message_runs from pydantic import BaseModel -from posthog.schema import ExperimentalAITrendsQuery +from ee.hogai.utils import AssistantMessageUnion +from posthog.schema import ExperimentalAITrendsQuery, HumanMessage, VisualizationMessage class GenerateTrendOutputModel(BaseModel): reasoning_steps: Optional[list[str]] = None answer: Optional[ExperimentalAITrendsQuery] = None + + +def merge_human_messages(messages: list[LangchainHumanMessage]) -> list[LangchainHumanMessage]: + """ + Filters out duplicated human messages and merges them into one message. + """ + contents = set() + filtered_messages = [] + for message in messages: + if message.content in contents: + continue + contents.add(message.content) + filtered_messages.append(message) + return merge_message_runs(filtered_messages) + + +def filter_trends_conversation( + messages: Sequence[AssistantMessageUnion], +) -> tuple[list[LangchainHumanMessage], list[VisualizationMessage]]: + """ + Splits, filters and merges the message history to be consumable by agents. + """ + stack: list[LangchainHumanMessage] = [] + human_messages: list[LangchainHumanMessage] = [] + visualization_messages: list[VisualizationMessage] = [] + + for message in messages: + if isinstance(message, HumanMessage): + stack.append(LangchainHumanMessage(content=message.content)) + elif isinstance(message, VisualizationMessage) and message.answer: + if stack: + human_messages += merge_human_messages(stack) + stack = [] + visualization_messages.append(message) + + if stack: + human_messages += merge_human_messages(stack) + + return human_messages, visualization_messages diff --git a/ee/hogai/utils.py b/ee/hogai/utils.py index 65de9303b3ffc..70d1ea969621a 100644 --- a/ee/hogai/utils.py +++ b/ee/hogai/utils.py @@ -10,9 +10,9 @@ from pydantic import BaseModel, Field from posthog.models.team.team import Team -from posthog.schema import AssistantMessage, HumanMessage, RootAssistantMessage, VisualizationMessage +from posthog.schema import AssistantMessage, FailureMessage, HumanMessage, RootAssistantMessage, VisualizationMessage -AssistantMessageUnion = Union[AssistantMessage, HumanMessage, VisualizationMessage] +AssistantMessageUnion = Union[AssistantMessage, HumanMessage, VisualizationMessage, FailureMessage] class Conversation(BaseModel): @@ -24,7 +24,6 @@ class AssistantState(TypedDict): messages: Annotated[Sequence[AssistantMessageUnion], operator.add] intermediate_steps: Optional[list[tuple[AgentAction, Optional[str]]]] plan: Optional[str] - tool_argument: Optional[str] class AssistantNodeName(StrEnum): diff --git a/frontend/__snapshots__/scenes-app-max-ai--empty-thread-loading--dark.png b/frontend/__snapshots__/scenes-app-max-ai--empty-thread-loading--dark.png index d6fe88cab16e5ab72ee2c6a6eb8fe2c4e74e056c..eedf3e01916a0813e55301444130f3eacaceb829 100644 GIT binary patch literal 11029 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 diff --git a/frontend/__snapshots__/scenes-app-max-ai--empty-thread-loading--light.png b/frontend/__snapshots__/scenes-app-max-ai--empty-thread-loading--light.png index 50e2dea81e948c0c709a1fb9cf8349af1b4f87bf..c19e174167b7c6e20dc5afe6a585ff4eaa678cce 100644 GIT binary patch literal 11160 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 literal 11162 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 diff --git a/frontend/__snapshots__/scenes-app-max-ai--generation-failure-thread--dark.png b/frontend/__snapshots__/scenes-app-max-ai--generation-failure-thread--dark.png new file mode 100644 index 0000000000000000000000000000000000000000..84a2a7828cdd505539313bc2566214e0560aed93 GIT binary patch literal 44264 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 literal 0 HcmV?d00001 diff --git a/frontend/__snapshots__/scenes-app-max-ai--thread--dark.png b/frontend/__snapshots__/scenes-app-max-ai--thread--dark.png index d0f525ffb382c499ca75b8f079466ff7525d1639..80aded4c7943361827c7931249acb992b26048cb 100644 GIT binary patch literal 68501 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¨2%m2rlbmp62fGa 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 literal 65533 zcmdqJWmr{P`#y@I0+NE#AreYUHz-I+cY}0yE>dLyN_Tg6cT0D7s&scQ;tckF-(T## z-*a8(`kyc7tPe8Ra<0i_jAuOKe(w8z=64w>5!9#nPvPL;P{l+)$icxq28ZzFh!4RJ zV?>_!;Ku_yIS~Q4qCvtB3`fg`u>-L*YI%ZHrInck3T0r!20y(VaU@MIQTyfKP$96!u|8Z zjE9she;&Pj@%F)!KM!+1Bfb6eNc6G9=RdFXj{4I>ls`X|`~To21-+OocXFnRiJLu6 zoy%_8^NO|V4iHZBzL)AuDDN+bdE9K-*pIVrQB`JTcV*2E;iv5Bv`o!k*rZD*qV&|o zADs-r#E?eRuN&#J~x9*>cmTrlozwU~1`)*v~W^h&$Vw@NzM?wCp@L zjiyhGh>S!eEoHQ+Oe8nNZ>B#XLL{f5apf@H5874lzdDzfGo@l+n92&A)Q5e4Hbt+h zu0HADczx)VOoeyYWb=e`8FHfaWDx#sjqGez>hXoZdJjIF~QSr$&!q(skIdS_|4;L{iY&fu8D8&;n2GM?kwjgen%j3 z8cuh5ye?|GGsUsXW|o4fcV|uI=PVuPT5#mGv~CaExQn%U`5?bVEuIfd6sV4QBd>XD z*N3?C^TIq_E-I0a6W7=*W;0Ax!FaM+Xb@l#9j+WU!p`N2H2ApPXIF#+@ee5kc@0OM z=2uo%S0{^9Lld00H=PN2J^NNPvPMCVXaQsn~-9<^MC;hdp*e9^4LStgCyEg4$=LoXeKT`A!cvFZg zOvoyzz?A%a9bUNo2#$PbZ=pasnXl4(#`bfpiRgxnX{wKpi!T}%G$iHc@MNJPxBW04 zN6XIIfbrHu5^udcNtT}8@?~02clWgoQ-#sc-nhJjL#2uQt}hC)F|+P`S8#Go{y+?0 zhx@Ux>dZcOL_>o{Ulg6|*#@7-{6^{WYaDEk=f(6BsB;CX<;d$&xw(~DNo6XuTVLYT zwtu$4TkML2QZHh^7ZmJ}WDC^3o{*G;fmz~myk604MzF=H zGRtptnJBB8wNNTv5JkM)K8^3^c0z^WPOGR}IG+CsWOFX5O-p-4y3*?1S1HSq=?-&D z6+zqBs92}pTr4y@x72(+C!N4+bgS*zxJExUHO6aqg?mb2y%nK(f8VEDjP@HZvoFOt z34^-HO?DQ_z3MokFwzPOS@o_WM$*mK`!!>dY(xSS@?TW>kh5MJzs-Go%;Ivshv%}A z5+*0UmFweE7rvaZw@|m>d5~f{((m+?vaPLSBHi>^=iQ?Dew**ZP|5o=%8xJzCnzYd zs)~n``~h)uZYT!!ETL{&(ZobmK;Wn_hC`tH^8^09FrnkeKarNZSS)7slg57E!qe{T z7-eJ{$QZ>&(W`cAW`jvdB97NLFu1#g?Ut?PBcKsmny{KK-M%!{EjK*1nrB4~M8L&I zPa*adng8jo_TsoiW4SZv>TGu|t)p+CpUwxZ{ANAbGv{~?cD}na(x@&bX7cW*lz6@@ ze7`RzgZjd5H(BrLgAv50 zSF_|BwjKGsdU^R68X^|nX(#<#vj$gqKoAAR5PsF`NIN$7lev(*U?_XAi>DzXAij2$B?$X|k zsLl9nXvZvZEGA`ELueG4QG{r(Us|uf?F$w3ow>4_F*KhynjPT1l7oMC4~mBUjEEh$bz9yb!SK4@#gumjTMbH@F#ycpkA zYU(SV5z8ysofJ=J0I|+=*JlhS&mW`ejMcf`#Y@+T2?_W_4uz0o!{fEVvt#rOtI=X@ zf1{z;yUSx7fo?;mWWFbjuIGC*8Dim?gZXJ`dO639PoF-Wdw8Ql8};S=KD*T-ra+O# z_vxLwRM~XlDmEpjeM8w)d{$F^MtelkmCk`22JNQdXd1^6N31TVtqf^Io0%1xt>AKn zob38!u>Ma@ZT3eq$DoILw;b+4YKvVdIHcq}*H2i>UqN}g2f-HO|FxlY>8{GH@+v4_ z=yE4fTUot4=BQ$(7bBnKkk?Eks*>Mn+V57) zz@`u7$6Jkt(6GU8J3n5bsZ-;A9RBNv(PX~~J;4;%5$re;Pzl)OyYRsL<)B+X!NpIR zo;!?;jBL<`XJcljfXXD>%gc@BLZWLSo~C?;`o=GJ5JG|~zSnZ2u$Th(mSC!mr z6$!pYL7d-wYxHC8&IA8;JsBN}LAkE{7?aFgqJKAUEZ9a*1WSNve}2_tIJ@C)Jvk<3 z4jMx0h2SSaNzWG=_f@XUj#v&IGh8l@-h3pD^YrIfw)8k}kGZ*zoia1Ya57i3)2%>E zw`~V~T-~mW)}m`u?s6{w;O+4*cvAh7jc5FEzi;@VAs{wv8SE&a=BU$~o4X`9(Jka+ zIv|+noW6>1x}FJuFA99Ctc=9XWkOdM48!+ei5dS2!EY<{c_wgsdGM>fXRN{O*5*nB z)yZ!Q4PBeWNjg~a=;#Q9s#Frw_U}xZ{<%l@u}*Lw>k-M?A&JK&BIlNdH?Tc^jPXh{ zqpd2%agn*Qva}&kPnQ|Ya2R}4(FkUh>Lo!&&o#*_+_l~!H+6GMyB|3< zUzT=|3834Q8XsKRHid&nSTaM zB}*QJ@qS~AP@|S@ex$`}I8jwNdH=`0CsITt)mprbxd8>nxFA5iZ6Fg?+xL9!3?w*b z+%Vv4iEzD&7SKG;NlTjtabo(A_5dLSSFN@cvKa<;gp&Ynqam%DyO*%y=0&&5qmD5> zdC9D&VNYR)V>n`Gcs6S{myEq7m0$h3)!!C`7q#?8fMx^pfQiny21ho$7&C}CCx%F0hko$Eu%ATPwRn<=pxmS>3T!Mc`yn8 z=Dg}s?`WFSz7{kD_q{fpp>f&G2LVxA+q|0y)rP)!rORo}*E-4kuDO$Sm3ev8Z7?>m zd2ex@vokC%$MMaKViC=|>-A)5TU+7@)6}7)CgZ|9)9GyXC0lHN1N~{=x>dP}LaipZ z)1%e=@^yL_mrL!s1CgnsL?el0xp1VCP+1ae{|;9R=J)|NHYRdtgUe;~bS@K;I3g7l zRcLf{_Tby&(c$Meu%Z8&>st?)lB#M?%jaf1B+|w^S1jAod+b7X(Op_nV!f4yxfTj= z%g^i|k|ilRc{w?vqN1;$9E0(NDJe2?a;>gISMX)e2Qcdk0Jz5xczWj= zS5%p|RiYyZT@^+Q4G#}DSJ7!L(nxQLGd3{zQLiB@dkDa~KoDUJU*MgHE;$V+XJj4n zUUw+lc%mQf;%y#fk+*iXM~UfZ22w-c?rX^ukDRmK$o*!CvE1<6A2;=uTId8E2VFz> z?qH>yZnKYD%^g_|mh9Jzt5qj)8DQ>*#WH8fRa-s{u2Ee8z%2?REIwWYanlG~Q4DLZ z6^+RL2`URtY;A@Q3F>_e2x5CWK2Va8!8n5#?dR?G5JfC4tx_v<_UH=YvZ$O3 zz+*nTz6|#ZBtX`<8(6YJA{F#S*_z1r1?WDb^{L(7b%!rH36{Xw-eRe(w;h^ebh>+`xo=fED9MQ#6JD`u3LN@YrrmKO}TJ%VC^-R63bc`_Ey-d_g2Gi6a}U;ka&{$++RV>7k)Q>y5-SaKqKPX=uc#} zQ%@mTYSJ!DOjB#~!YBhkHQ1JEsz{YISLvR*=+QN)-d336gd2YflETiQ#PnHOrO_ctu?itHFHE5E5OF|3{=|bOsLrsnS!hLVD?VFf97|IrDALf?fPmOo$ zBwOU@=WYzeV56_8**CI!bPI=RhZpN498`r|k9qq`&;x*GOUuR35WVp1eoRNhQ_=2H zfSdRsR|ORn1slgkO_$%Nbxax{$Brk{Vqhegnf9MQe;ySX39g>}ZJRw?GFgxx78${x z%(Hsd;f-AB3Zp5CX3!2K&*ns?p>&F>AQ9 zIkv9d;C#6|R}IckRYiBZd01f4btq|tdqy+`EZ+wJqW!uth0M3o5y!<7a${Dfz-Im?Kl*}8r*YJO~G*u)sgcz&3r~cz;Aof z&TKT;>>91ErWO@_&Uev0qKbC>cryC(KGn-CJ)oz)B6M5H$xuTA14xc+^!dS0qv=xj zKEMI_`}@OiQ7?{G#Wl0#xAR=(DlFS>_4#YD=S!z@{eMWmK?7geVorGQd+?^n7Ey;*{9?wurE>wbe$0wkt)=ddJ0jBZQ@Vqd_eW z#~lTt%zL`;6!DMm*4b~KTpq7?2ENd4_OLq|-)#F)!;CSW=H>e}JWS4TC~mU4xHL}9 z4BI~v07J<7Vr)4MfXZ83+~68HIM!IS;3s&6Jgq^({`2tvH{9XhNz+NlFyHV?TH4w+1zikgkjsj>m8Ne&4&?+5PTR9{mf-_r+3u|g(26TJ+`lcLS!G%Eq z<@W|`7nueI4vF_P^*ccsHKnYa>6)T)xDax1fA2#hE!uxsZ*d{t-b+kI*%Za zIB$LPe)hh-uPVZV%V|D3Mn)v<{rGXd>*aewwDstqA!R>6M#K*^d5|5wetysT!~On& z_X+M0^(}K?P{Y|9?&FoiPm-t(d$z9iNTE}0#C+W~c+U*2*i*NB+}0vn8lM^)82p&bp<}LgwA%uwz4!{+@r!jz$55j`u#3}4I*~(H-}v3? zyKsUw7U7^0F-bpzQkC(1wK)8tWS(J@rJ&-+ACzKs^(-K~*O(4MS4y5%roVPn$Mn+4 zhz*RiYTX<+FdnS0T#hDj>X}N|w=XBu;|wKk4Zrtwl8nQTjgMdOd+HgH2)W+S0sLNG zkF|I#m%(V@x4!YC6ff79iq9=B6Z#(vj532s*w>_7bj|HQ0Bn*NP2XP^k4Xe61UP$s z0$Qm)L5~qbTwTy#@yKhj@l~-e?_e#K$7(}l=HvaR55-ew{5-m4BO=sXAT?Q(9c%N_ z=v*}-;^N^R*JH1#-r{>ZWxr+HBC|bUo}U84nvw+IRfczv6m0k>{P})X5)W}f`k2-$ zMx%j*D%;bmLr3`+D=+5R>t&F$B`dY-4Lc@V5~JEgE-jEWK)JDYLWKek_}G<$)W)u$ z~Nf6=8&TkRfNVp78_@}1b(Z<`I)_>CTt}#z*P(m zbqVUbpp1R<3o;qa_+BbYvPD5)mX9#Q$)J6sSV(OrwB(n_Xh!THROg$`K-zAT)b=pD z7JNNwGCi1>yVlI;vk5;|Tm{iOCv5`%P~Y5AtLcaCk!8#HN#@+p1da3==Ilb1O3Q`? zg^td^g$1^!5NrP0ARHadf7+ zSBF}(Jz2oxa{WB~GhH0JvW!fPEh`Uyb4$mB7nipvN%(+aeI2B!ZvYF=H##7ozoE8# zs=(=c(+hD#2<$8|E^c-!vd`EyUkN`{w%WX)aCDRziIj~^Nk_RgU(rA-Gt+>CZ^f=y zz^HuYm}tGG#-+Wz^O?Y4QhiQlZmn^uyzR%hmW%N#Gj{VlHTf(2p5ET8i^m724BAZi zcTsYnV5v_KLq*>q$V|@P;OFK&}zp>ydUIHl18_ z_w+n|v=(7FIk~uM>L5ZwT^IuNO{inzGTKe%jP4BI2wOm)%M^p;I+|t_Y&qWrcIGHi z3DY70#LELxun&Y{q~)d-<;_xW{3J%pPH_1?V90nUaeby~sXtyw6Ful7GGAlE>=(!P zJwWwztht4wVSHi&EHO%oOxx&;tfxuuY!zt&X_VUzoys2uvv}1NsqDMLv`@Z??Ig(dvN~E1@g|vX4ZXnVAXF=~9z> zy5ZW>r$;BdN(=NU8CeF_B(Ev6IXJoAZW4V_XOvY_-&mLs_EgFimd2M_+aTAz)BFL}c}KEz(%HtXJKFVD@l>VSYb_jr}$+WVp@M+SI?6K&zR$d)-pOIhw%%3YkQOtk*Aup4>c9&8Z=Ku`_uL?yH z=b))wKR<8G72Dr|mOMvnj1r(tNhv8hDk>yiTN!<<94wSS>1MGWI=@0+K}Z@=3)vweTqy&O$~<3a(v^B62u{%aMv*yL2+{C?7|19?AFzh+5h)O-u_QR`_ z$s#RAR6*r$3FRZ2}EG8!Q z(bQ#ReTY?}vgBZyl3iMxdU!q6U>AL_^%eCZhZFjs44 zWnz*WT?nsY&}u? zsa#<<)wDY3?`VFkEHB^3@CGrs=2^||d7acfcqB)PekbVlRXpV$bdn>2H}GEd@BUt9 zJfv&^CxF-goi`&RE%EqU63ubBoyknfMtJF?hCjhwZMCa6+_x|m zjZp@aFxGsJ^6L1PhjQ&Ne=I9%hB`+dRw3Oixmd$Jf=eM)pF)Bg*S?nMY9A|6Q-i%rxmYM7+O8iVCXvszsYsrTLkkJY_5d!26BO$h zV}F6msoCB}gE9C(!{=Dv>#)ndpeF}6fdS#&0k}Q>na+GUJ=^3xO(To*$?EhxOI2Q5 znw^`*{WrAKq^BAl-YqwKxht?XJPDV82uK7*>zT;qds!buw6+)OU+)_zjK{658CIvY zk{B2f^Sh{MY6kMrXgy>m{A7qv1lg5!T5r@CkpZ;AUzNu0Y7CR3h`o+s-6=Rw0 z$-LIl<*3Nms87T7$}6WOphRdbPN*)cz?jKqQ9n#HdFGrN2h?Z=^r`WT=>*v3dxUdi z6BDIf?lrNe0m8A{Z<*=WIzbVTEk(%4w$&E@y+kW#)}>Vfmw(Oh1MX=J6T;N=V5I7(gHb&#jp8>trR;q{*;P3UG$U)7CK!LJ~IzR;Uzx52TW)MIx3&_ zo#hr7U9bU};ST&WYX6cCs)7Fn+3mFB*d{yxd7}>Rq=rVaT1{cS`gA>ZEE_{0&8lM% zuuOGub8TbMhLQr`zJ6^0sl&Gxxxu|krrLJ*KLU8S?*QM&@!HM$DQwOB+*D_U3V_10G_wAJ8t07@XqX- z$oQV-Tkr2%-RwQl{WC;w?%{R+z`%zyssW`}7RU!<6T2G~pT6&Q9|BV6^mLZCWFMFE zAMrm9dt8YY#kZAUi`)9(ttDSK3%Oqgz zrx!-|IiiJP_$A%7J8vKgDkAC4Roo-XLp&>X#T^-QHrJ+QLLBAbm}%hBn6bkFH~@#v z{-cywe%}K+Xo+tA#hz~j>Uigt3N_!1?Rc`IuFQUF1M|#4-B(> zy##?EHJTGj8&9WaKHjx3=Bwj0_FT;Yk#T6SAp>Y15F zm;yl6Y%PL%TD5s1WWd$}JG7gxt`Nq5Np)3PdYK8Y5lNp*LPIhxHUxbIzXlU#YF%+I zhnO+~olwDlW)`K{Z57|jhh@%>FzR7GtuWIGDvfo{Fv+(^Y%h;B!zi66Qd>c+sIbHj zIL57)xa@X9q2vPJs)wT3iIe6GhqM~7vUm6Se853SJG z5=Fmton*P47@q((z_2j6T5&n~W>4#>aT#Srix>9R=)Uq&bUNj#5Bc}LX@u_&&@$}v zl4ev?R5UbP&sAGNL&Cx^A3wg#3(XzEfQF!x90B@2KQgjCeI!G2Y}RUNRah8!0yfQ^ z+kqJ;ebjj}H8d{jhkHUy!ta%hmJI2~mK`5VOg4u}y--n6E9Q(Hwr7R3w1Qxm0|?J_ zI*=O@McK6#@x`b?o(}>yv29u~+Wv|nRJy5+nebYE%>Pd(x07Sy$UNX6_W)E*ozQ_Hfsx%iv#N%@QIZA;n ziGY&&gsx3tvtC$RTDgIdwk%g@FSQl1K*3?@>*X*>J9Jm1HAwSSyyglcR=GCZ)BAb6 zbvvpMIp4SYsqEPp<$T@SOYPrucXQG8kWJm^{B%U`b!0@u^|zNi9LKC?Qe_4ca%=OG zN&ir#u2eN7YwAxkJ>)9-NQF|J$2In;RHaMcYaEM(?d8$L%E~xU^oGe0gbd#laOjLo zGciF!j*k3DVwDvRgs~=(Crle-=4=qo_eUo!)2C|=L7Cjy^%`|!NjlYLImWZtP=9(s z*B+0-hmOH^f7w!{5KXttL&Ghtp`k&C#0!}CvNN*evzOn1a^$utX|YNDa?S8mC!2%!QPg1l1nG7eD-1wmknLQ~c0$9#qO@QBjL0pqh(!_q(k?12xA1}4&$Pzr zn>|lyzk%?U8B~p4cKTUMz^hIqhZd&Ee|-+Nflf6<;mbf>lmQ zDU4=^{phi8XL~2BlDS08vwtpmK^+oPP=H{LJ!iAG18pZ45Eams147J`nApz6Afv^F z3F?TfdvG+c*p**L)UNN2=8I)>lT{cPSr|C6T9QA%3QVxvPUe!5;{1@U{$QSM`|NUJ zOFWO$uL1qR!BggJ^?2r{(c6W~u4-9sJ)yJco zpOeF3eNa+A*9lBarY0t{l7#ClR)dS~*Pez&_y6~^6`$h3slct<4_3>VjQYuU0tFl!SfN>^vU;1qOYNC>G8!A*6Xu*q;B`ck-&CEn$u%hD#RWKvFzaYi7CgwWbQ%soh>M24(3F+6;oul|Kkj@0e^qTY z1qx35bqeHWx66->YS+8!V4)X#wiFSm=Wf3G=Q%dM5|}O(*Dq(jwtfg#1E>Z>oLzT}8qhpmjCuWrqoN_Lb;97DdTlI#(I^#iJ6&;{%870q{x0t5OTei% z%TJ6yzqOrK+^bj6`PC(9nFRdWhe%>H%7xjg^1pGTI^utQf%i4Tl_b|Gym`spHN`O8 zH>N10%6UB4xY}Hp8@Jf2czu5BU~_zMI$MyLd3k*)zP_aNnlf`ZTA(@dxJ(gT@R>5h ze4ootk`jx%q{Ie;7dSXWw$?|7iw*OTkv5Uw^Br!C5}|`YNDR3cmc@EeBj6?Z7WY8$ zzPHeKba29J|B2ll%xmLP6dfbm9<#$$LY`_zduJdX?<-Q$*t#hxfFH2^h1`web)1lC z6ma9DQmr6YjnX@4x-}mElO~z>Mow4*X5~GrHVlCrg6C7eqyQXXF*ypTG*gmkwkZGf zqhZNucePP(QX1DcBA~w>6tiMI=(z+B74zl5oCYXi#suJkIYoH&=Zal>Bf_j;d}TS* z2XD)%ZT;aY4*i zKwavF615x4y>Q&o9sOg?igHFd)=N1g!hdeh$7!d(zxHa(_~{P7 zd)smlZrL<9QNqr4-oD*p5Pk@fAdt1lZ&w9Pu&{`JZR1!oGu0Jg=>W~`d^YmfCDHYe zK6lOr5$;rk=EaLGtw=aj_(8yRULXAf|DjfztwqG`SVP!($1CwkD%+hKNGqU7V=S%S z=EBL+YH(w9&T$x67PTh4w~S%lH<5TixSe*@_Zp15*gOHVbp7?~!8d|0a~?QkX#O3e zqoWdHlEvPHnH{C+zTzK0M%`6q6$Hpn)xPccWxd$cR|p{#3ls$U#H^QiO6vO`6vOwt z2qqM~`SL?E<(^0Zr1JlHkIFkqKr1x?Ir4|GG>MTIHU1wLwg$GoKMvsj())s#Rh%84 z7|CbTI$g0c_vJy;xWHco!1q6W%8ew01B0A_)V6vwlPdVcCYpw-^5n=`QqpgrHksJo zIyfqd@;nn5mO4L(@C??v9?s_ie^O1~UkL!kzO?T>g+hjEU*GR*-K&i2^GMCMi@l>? zd)DlT3_CmKofGWN$G?+x3cEWO_Zp7g%fUe6$DjmU4Aq-%b@XccnEIAEBVwSf)L8%-{}9ok>wbIfjWODlat>6R1y?-z_=1HJDlV?5+4dfrK_Ek&aGj5i zj(=+=GSTIF!{7W)N-C&B7vR4G3aYn;6KWj&n%3O(U)0KszoY}iQh{d&wHVYbl?&I? zTxh7NRB0GCxh(4d%W8z>>xWrFFb!MrfRO^M`Zkc+zlYxUW^A#Vo{1xl{IwjQ#rAhH zKt*)`rmB+@iM_Bn8zc}y>BP}dQD{U=;BRF28w=;55TyGNj`=8C1M5? zsZuXVkdaJBD|%M@l*7a2!Lk$xCd|;fIB(vcHpkmrzC=!xln9{pL7BaQRryD^y4}D- z$dCh7AMX*(<0XPqr7 zbW9fxye*gdL)jop=VP}NmKE6X4GoDXb2WlndZeP#pLZ317T9!pgSq{u^6{Y@qO}ME?IKuu zf|injfhe);_uezOca7fhpB}uGla(zs+JEnx{EMZm@drAH@Z3 z(2?>F5QLwN(|USrp+k4$6VMZYLp+#(+s{SpFPaCa1+?9$ko;9A{sHuSDChKTA1SUV*;JKwL&b}i8r(A{my*pd=_ z|HSo7L9x?&3$G)x}0ybm=8Q1V?}KN5BjC;>9Yah3);A!-=(Of@B{0Q!|C& z$sSQ&etl{|0j+OaD)ITY*?qSLeEMx=$V+hIxLFM{3(MPklK%Q1_M_SO&=H5k=l7R< zCwZT%uO0Vhs{wWhvbZ%h1%kojU(eVdR^Mn%iTyERiWwZdNCbCc`eL`KHa*m=yqY$H&OTYChf)ZG+a|k#VN_k%6ekv+ckd}Y!Ji#!)v2j#)ucDFmlp!5cTSZjX2iX z`VLWqwr;}%IMI+lOjFXC8Ckh`Ri<-FuzTC?IQzCoRcPu1|Bk$Z0&*xW0fFUQQ-0A{ zgcj(h1G*mDmKg}4OhAZiRen3N4Z4IYA2S-7axiWA_HRc{SrOI)q@UItsP)E{RAEHb zt*yHIAfNGqV0k&6Eq!;s9-a+0#2oOCkLww6NO<`6xL9(WdnJIjVR6EUrT>%Re>n7R zYkSksC^P$}?8d&T)$743W0q&h4iF*R59uoo<1$4!}+OMDu&T)+sOYv$P zu9GLz8{b4`VwLHWiMaGbS`;ACj}Np2jc12eKwn}T0$!JZms+)wK^VCtCGh>FlNIy! z4)Q>FROAH{AuRVMT!C*@js$yQ-?l>uG}!Etxd!dPK6D9OM(w3P*(@rIO+_4r+mZCf z!mJRUTpaOcib<#pJuP4gcf?kycnhSjSQ8}B;UlDl?wVlt`nnea{D_O~7rzmA+~Z!p zq8SVvQeFxrGnWh3Ri(wQEQ`wOJbsOCKU=+w%I(mbLGUa(SMn>`UanH>jOylp)-$xR zCOW6FYT{a`t1a^B%24xJowqE4k2TF{3n;va1dX};dr1AOjpN|;BwfC!KV7OZU>Y~U z#KMl+r#kkyG+7SBNXr->?Q3IYrD9w6a2fu=3)J5E=rykX0RP&10VWqq1W?N3Zsu@s zqS%8#bOv=_Gi1yK@KH0IoCNHU22c^LP>w4OuQO;^PARFYs&Xdo- zF}VRpt}puKSk`Ru^#Eky$y7puFYrCXE}cPx5D~A3A49}{d2)&}GTP_b1{N%que}GM z7;yt8TDA%6Z;j4S0PEZ3$;ZgVVm(*UWO_7Gt!vaD=S0iW-EJ?_Q;lhwUyH^(Wo7Sr zwNq=tAFjy_zs5-?W$5_A=}*?ap4Hk2bP5R}Cj!_^d=V8bh#oyGG~*-h3P=H7?u#a6Arr79dIJY zoiWc~|E#v|Il8#`(8O`lD2)Zp`rUBI?|Iv=zQlyqHPqEMog=O0LP^@*IlJ}Vaj;L> z^U%-(aJ$XG)8G!=pr{V4Ye;?n_9%6>UfKme+HJPK?A>5=92Cc?v(#W;v^3of3dqCA^a)g>%5Mhjrwd2IRkveN=I<8-GE zu6!H7sj8@mIKPjR*kud#&)R^^2LpF`vU#UeWPNrz%QN=lJH~Ggrz(I}QR(AJcyGtr zr@NPi^4Ij>;og-2C}Z+#f7=B3=MXoirpT@R(U%YmzJ$q-P8O=ZcYknk>xBS>X(}oc z%1$4V;6xU-t?-1f&i~+ND!8guRZ^PlV)*&L>`wyaoCD&2$N~wK1Z=<;MgeVbhe=6F zTAcP8xKTt!MY&&uNF(+PF}#GzsMr3*tYi|13VgBoNeyE zwS}kq@>lJT&SJ{gAHv0@qk3? zb{ZH^XP{?s>aO%j?}elHoudtqx$p2^Y?=0B0sHqtlbsWQQa~#JIbx>CZV1r%0s_(r zJRZ>E=RHAS_V2X|JcqtXLk>j)fL)@CHSz<0$n(2uc)iC$;_(@_S8_mCWkKkSJAYXH z)onSdN5;suy$C<*-xL4+_$jvkDHwDCQPGX>>7>3nj|ho~G!_~_SRs<)Ecuw2f=0xu z8lV4~^pSEA_PymIO>X8Ha#p%@&H5?;btM7W37WE$=@U_dYiyPc zpP!l(t4$P(nGJJ*9{C&C4A{FLlW^9VZ?;C!#aYdj#^=%QBN%KQC(HFkv82`{?_4JN zNfelBnto%zaslmz^IhM2z%oZuT>iG>{^k7#r3A{Mzqz=c-H{kS(oM3yZ}$^5F)@Ka zF2TU(P(iFq$JLf#eZ`NX-S@FDsEiHFR2LxQj;1U#R?tetAy?dz+kTmEX1lcw- zD@&fF1}rlLxufOY(vPz-iX-Oq7n%D;+MWfShJ6a<{hsiCy^-hPV<7VaY8G4Y$?mQD zT!*+$)9sg6$2eZjBfWin=tO7`z+6?qHCu2y%A1tWyrLYM;2L^4V>(HW6=z{E&GZTu z;Sap6FMliY{M8mFFTvX0VES7}MP4Vr<25;8NbvFSPj+U=C@AQfQ{Jsm{?1M29TZo2 zq|=45wn0s^)uJL^U$T)(pGwAdeC^rltoM%uJ`$-p9-e?Geq8JQ5r2KtAAl<%~+n7%g+IuDIT1iEk-v|l{OUR!Hq zctfk8tPI;eCDbRZC|+acQs;7(TJLpIJBCT;ISdW69xfkyyk=u(FD^MqA89^6 zc?FG$KOY)|bXWI87i;H|tfVAuZB%3vgAMMl%=n4esQxQqGemvfd8X^F$9S;c^U}$;z$3=LcLX{c)hp$mDRK8uc4qYcHh3iiq~Q53uP12Tkc*rxu2-(w zpF&I(6N;NaFZJ&$Np%7mb%Ojp9p!v=DxbDUB%~nTs|he;ZDf{!bgix|O)K&&%KT&H z>$^WD7BtpXazYs<#5GIDsri8BuqI-z6SICd))@~_4;B`gFDLTXuY!8I%lI^GSxVh~ zuG$I;?J(Cb^V(PizovoV`{li?PfkuLoy1n3{a%|JhBxjM5+f=m2AFlox}}nd2~{OI zCxu1L#M`Z-+5c!v^Z8-ImhHI-d|^p@^w@$3W+o;<1l%t3)3Ohjf%>4NprC?6G!GtP z0ImR!fL>p3LCEBs5*3xT&~77jytcF86k-())?TA~bp4El7w|0WU<)eI-g&&n1Rfjz zb!k-KLsPF0EUct(h{jo)SReQhFp2SokqTJQA^Ur~U};8#hT^dsMl=_%k1W5=l>yS} z0=pIA+Z0cjqlG40fsIz#0U)k949b0~5QBp5DJ4Z>BUrTd+oAflI8Y2)OtDAh&>2%Cg8{;|(QdxK(TD zhuG9t%>uV118_A?cG=&ft*1}X=!$c!9aMpa?#Qrx3;Yp-iF{hD&VS*Zfrgb4&}K7N zp(R;(TE5N@MXyeE;K(%Cr*wH$Bcjo0&9ME&v!&|B)e%zwco8nH9=ky5^4`!GE!I|F zSF=v!@mWzKpb=uHv*rQ+e;f;>bC#9n+KmU16dAi8=02shr|EyT!>ytvySKhP@==I$ z+v6;whdC#_?V;K0FxooMm7*OK-?O=te*HTM)goRecxT@eT;I0 zsr%R{6L7Q2$&LB*d19w)q4?&Dh7p1EY@okLM@{|lqlf4MUXEI*_o{}&!8joEEL3!! zK>={4)>>eEXZNWaR`LjTXzRd1xT&p9S}X=^HR1Dzm#>6Aox_nCV4Dov;b+ zkSF&xxuS%r?fLv7tY_5RG>KMX=USbt_l7W6-s`ZIWRa_$_t5YEcGqbV{K%BK*|*7^ zcCLWBqSPwxAnwCDVzi=UuZ7H!jR z1mLm)3)aO9C^f)JrJ|uBz;dkzO)@z`xLa=jRMtN^b9w-03F>VYzj+Hdh5M2n zlo$W!k2%8lC|i2iiE0*xWeFM}{$-RKKLQT~(rk3w%g#(K&W8OqIg_T5dIcW4lgu}m zW<|5d#qxeju;ViCtwEWloSVIX#`Abh^)Bg9I{4E^0~m#uptTyMojBZ~(to5{eL_u~ zX9)jEL7=1AVnZ!R8IAoJ1>8Ma#6{rQ4fE09`9F=s9#rcdSF!v-VEKFN_;C1KOZ;}H z{#2&O3n6)A{0WRBhUxlQA*c=MwQDCwT}~F=5vGc?bgbCFV8{WP!?ATmjjrxT!@5{r z;a16e=lqnkf}PE#p0+-#-x(&rec%v=p7|pHBZpKhu;&SX+LqvB6Wi%(BawJEHD)93 zfjH)7>EuO%sp70Cf-}Zx;tkKApGpS04|{rY?`z&lxyxGBV^}PmDv3*AbctKLYj*xG zn4Y^C;b-k{f3gFB8Ysi%n$9VP0DrSUcRaf%kYCQ&cR_6h5kR~*`91Q)Lrp2HQIt_q z(k-8vvidOTAPl#pBf$m-7z3`&ZB@14tBXS{Qhl?QpxrMX@$)=Lr2g1kN!QE$08l_f zcDbF-_a^k#0&?f7_VczQz9c*E+oS%xdG=Eo%G?6?H8MIHOQ521&N^D75xew<0rUQZ z0azxW6#lDsuf7RX9~X0>!DYK?X$1x82I=mSZU&{Lq&uV=Vdw!yLFo{N9$;t~YRI9P@8rH$JZpXT zdcNn~w)fxn@Izr3uIrjJj@Xa=*iSZYmP2PfAKRf%AocqvFOkpjcY(&k9zM>VXT`5; z3x`Dj4UvQ8M}|vT`>K9~!-k(OudT8957>2?ER}UGo4dKPiH@|h?6G1X$)*(_&8Gha zN?aDA|Df)*#i#uRbI_VkpM}=S;UiJA(UZ-+jPKLClP~_IJ;`b?u*Tsnz5Ha{t(WtD zv5%RPzP%RuH~53ZHu&PIY_v5HM6h|I<$aDvtXu}wqKiyj-|YN|@bzyUv_6qZC*Z#( zZ{}PML~kZSuVqmI1(K7o^nK7pBQLka-y>+poX{kQ?z*dPsl&N`5=~r)>zhh#Q&B02 zpw?aTd7LqIDON&JdR=v~M>&Rp%fX7hho;Fwa#*&OM^HD`7#$Vakv%rX zqcSxqN^iI@{;>0SZgfEC5p~3n_+=A_G8z4Adf{BlAWg_oC4%&#wI zgP6$8boBQRglT{aX6SgWZYTMyvA@4x;o1w=-#!IO^v~bDAFMhqvfCl0m$^Z4gw+(Y z-VpvGU^M!U#;;7btv%mEcs!7ZQUL9X_BtXeT##on=w(LB(v_$y!m4+YRJypWPAW#2 zyzCuzGHFdUt)Z$cfmD;QD-jO_c}$uVENN(c+d|371YLCEZCJ~+;V({F(7A%04-L7) zgtZRJ&3EGBZa)?#Fg49<4^oeGSaL#RC1=Np2>0@!jt&lAr1CfFaT54CqdI~2iVjPeTtRcU7 zw3|vFF6y;J7($PIn#njlN{4=S&bO^;a1pdx9OK>Cx^0&Kt6?<1+FFBLH&nc)IBQHK2ymXPQISST zOXd2cT;x3^nl=6;mLpzG-s^?-#(isOvFi#=w?j>SD_WW4iDvct`CaO}88KCZ%OIIu zWkL!HPCN~T^eyI?adC)U=-M}^=7M&KN*)xCMP7|2CZuT^->r(zTY?#iL>L)$FuzSS zyYF2&`XR?Z;F1)J)E#r-I@LCrQZ4T&c5ZY{D8uLqODa?P z`^1xX(j$cmY&vOF+oV^&lU!yS%p8LDE!zs8?h4;ct1{mimPxMRwi=z@Q`4maL{mdt zK5TQ2POR;na9nnLIWI5obs7PI32m(vGNFrKymQ^%+&RtUA$y%UbaXibry3<a=gm4ujV*A@U<$Ev&7qY8dB^D(5h_QFeW!TnvM07MW^>dyjPE@6XQ8 z-sg9*K;%}r(3Y8|d3XN!YEs8;xVO7qdZ~ph#(bi?(AlL3vyv2*WRjqQrb)7vQt0@7 z13wP)%gWLuK9I9toG7mIYfC{(AW<9{%(Id#QJl!(aS5m3ANzVivaGo{PRib1QqKps z$b!6h@kA`*Iw8Tf?c@>f)vJM)Bc-^5IXYHWIWTAP6;8{EJq~ZHe@Kog$Fd60>0l<| zKxhlpXDO($I$+5HlZGznMb;2z<5L~C3GdeISs_Kige`qNpl zS=md}HK@cojap(OhRt#qh>`ikhlFn=-0zxHHT2!26mWE1$O~y~qyWCl8`t6=6SMmY zceCmtB~kh^w*hy$$q`Fm^`q#e!f|D$rp?fklP+U)8)71V^T6*dFgdKu%vLLN4tz_Y zj^F2|rr>8sIO(}>`o!gxUSs#_Xb@v%6O%2sDY&tn+PvFFw=KDZ?^;p&+?v9_QT3h# zXQw(`u32MaN{xH&z9CT5w!b{ZWxjNe9|os3F|QhLZWf{Q(r!#TZli`A9XtI_e+k^@ z(Vn)$jyEha9ka24?OM>yfrtbF9khgMd3v0y)-@Wx=3$%rciusm-W~y7pea}{Pc=FF zI{EJLv+57Tkl|l#C}@zGduP96Gr#2GRt`N&^T89Q2#?ffpfM4r+1j@(gHLYxf9Ejm z>mUY>u;Y!2qGE;Reodph^Xd>3S-s9LL%fN#nO{Y6AEfpdk&aMG3#~2Bo4JQdn;6OR zNC#O%bDwaFy1Bt88{7~z+7zdP>*Lksygu95=ctgJ;cnLLiH4IC6!L6;GD0LM;}H&6 zChKr8H>tp1>yP4q5MI|SH+Pm_=H{eqPoPUF0&W^b{Q;p5(vsqy`@NHq+TX{JJeZF6 zeD+o-UGz9GdcQw|7 z4bFBGnJf5n4NC{jS~*Sc5g!{e+S&MOG;D<&wMKH^Z8ek>DrY}bcn}&DjGrNX;YQUv z8GiN;o13a7$bAa7H|~8A4VAk$)b7U{O9>r~z|*V;4z_r7AWk|~gGXVy&(KnNh!P2{ z`!7sQ^fDmPtr2}mFX({h0{hRAZxWE)mVSxtt@RIeA!xtDMQ2wQezZ(+ThEAjH_7I$ zZX4wBIjywsW@cA0sg>%~CGkJ?42Y16j<0u2d#Rt|2mz3M)6|Lak}RvM2hYk-R?#k6 zrjwTQv(c~5Tne|K^$nvyV__$3s;sg9Smhs+nt1f%XE^I6cQ-dIX2f(pNWV*1n@;$Z z6qKHN6q_p1s0-Ok%u64Knx>;&%CuqL$Ih=&O^uBLg5x!|JWks`?TzIY9b5cHxh*9P zIFuC?x5viA9I}=gNbXE8p!Rh#IeMCoT<}~1E%peJ3~IF8&Rqn?d>y6s`QLEkjrdR|1#@VpLPwI+8nPA#T)lo&+d>+-v>8UhvqglSugqZ zeL35RBr!P5D+(Z{I59y@g^|03dATS9!!lyacJ{&uNoC-C95trUW1=|opH@K*_I_)d z%r%cb4Jn_M&D&<*8^F54Qol4>i3zqGDgNN-c(Sm)Aa{>d>EKXNBq*m#EpA0}&fxJX ztUg5`76F+iL66N9?O3QzSzRc3U3rK>|>{#GUylNoA3UbQ45`hNaCdEVymW%IRYuU*gjA zoqXaH-QJ)E~G zuq04qe0R77cXTwpoSG}wShYtxtCT;f+7IeBcEfn#(J$wbuDCv%3DS1BxIk8|P(bz- z9p_Y7dhyBwAIZ6m4d>H=SM{W*U_0^Vqpcfkg?G~~wEB8pdAYaQ1ZJE;$<&w{x8c3N$Cj^@*X#Gq zMR#Rjtfy!FD2ze^hJC_(@^h0zS;m|*sW?>h!fRGQe--}z?!x;mpBh#QXJQq%_MH}v z@A)Rrd=yIL&->4n9~0;)b9fT`0bjkk`wY-4!B^p{3xBW_U+dp1> zfH#pET}M~0DdPRf9E@1hL{XFkL-9|PGJ^!$u$F9XJ^r`PpjdX4$c@DzvtTR z*NNQ3A#ylxubXR96?I+(KR%0@mlOc;JMEW{3PtyVTFHkMIjzaudkXgREzzV4j6h=x zk(%-lv{6=o*-1^E+{i9DJ>Dy5V525D`Y|;^=OQe?cp;vr7nt6)iE6aa<(=X0-e`tn zC1MQ10@Ed$6zHtjeI*x#%En0InuI+Ja5emaH@u}5-{8p;6X<NP@>dsp2#zx#j zU3hW&E5V{r9SGYnP53#;SbiPgU-E;9X|v|0)`Z{ZAyibMLjh&F;=1tgRGqc*NBaG> zoP`U3fJFEnC6!2~-v{QT4sDM-7=c-Uea8!2Wze3P{H+Ig=_X*lFItoUQM9 zSJoD`T7vZL>qUp=Hxeh z{L|Bq7rc-6y&axEJq`&APNUj5Iu0cE;CI87I`EG1S9|RlEQJrGiuI+ucW1zWKBAi& zD5tY-7hT($i~J~oM#jFb9zMy+3wtW+w>9mWR-Tkc8$#> zHC*^EJNx@1d*$VzKAtC%7p`8u{BShh@%dAaxg)NP4I7g-OLNAOv?-|g$fSg(KS})a zdFBKjwR*(BCk6J`Q3C^tG=4QMw5NhFXAF>R2|w%l68VE65S!N3apoy%kR_(WPS|QT z93z*RGm}hNLE|6Uegmb*YLeFxM5GotCna0ser^}myGb92`^nW>bEZp{_tpg7E^Il_!p z$yfkhKu)gd*tfuhQpll%LX=zLhS()yLC+6bC(lBlm+uea6Q^J%S+DrRU#)Mb)9EE;`{4xjz|lQ_{@ff*Hr6KhuI!V| zNOez+l(06;*=sZ7f>NHe)|YSjmiubJXh|nM;ND%Y2^}xcM!NMB8dGq4kFCZE)z!K6 zM?&{d}EuG zA}R;T6r5fXkxq@MLl6#}R$1`wf@s|J=W^YPo%5BU02UMqcOa@e*fIZ8v5=Tj(rflQ zHBU`|$TbKY^pe%%;cgBvfYsa45tt*VKqch33Ec6~F2(%(@`GDKh&9LeNs>i*m_KnY z^xM!#h5gTbP(rbeOQ#=Z+5o0NK(qZ%h|Sy}AvHC%3H!w_pn=0`c^b{p0^48l0!~>5 zH?_RHZ01bW)0?y{!O8Cl6;*A|x6D%LdaBxS*R*BmtC0?)OPoJRZ?A0RE$HK=-qnHi z*q>Dt_gdS)r+$ZuBFpVoS5>bE7YOQi-TwpMD#i&K_EAlOIO7n#q#IiQ?am>{JaSP#MvuyWfGq?UN{&;BmDjS$;i~3*2jxcn{Q#& zebgQ817@81hHZW_2`Nd=Z?4%bSZq|1fli{tO7FS&fc29sn@No-i}le&$J3)Qbto;7 zRCw(nA*)Wq6Tf!{%h4bnzb#@0CW;2rokZ!zcKD5Cwn#?T!_B>kpME#!(>{gNl5FbM z%o%=%NDv6G>+9;g*vuQ6?<9sP%{=fYF>Il?;7kJP7$MDY>9ObOxQdB~`a%Efe}Q~R z$Zs=;DHjd(-i)YEN;a)hIt&M+v5&R6BVZ7-8}KSIr9JxyxKLix-YZuQtfwki*uLA! z%+}M`!d0>Y8dX8&zP@uy;e|%n@YIwL{qrfaBk8=B0c8!r#@d4ofW+*v8tjrZuYFPw zdhHIvBcV7i0mfNTnm6v9XMe(GIs`BO5+Ca-CTmd#kVB#8?Vg(`v-SmpJHg$NVvWxl zW;;Eco~6V~rY|IMS++i9W^ec@78njn)6vwqInWrRsewH+XEEtKSKxXCJsi9El34tf z$Dl|oWotU~Gg3Do{*!aru!ZU|{7mNQTm3~Ar@VeM5s^=(f#Mh>ME=^=UhFzB)1<9% zQ{-FgSYTo>;Z$`_NZDjfJRb{RfF<{@jG6A%qf}dZBGHr~Fck=8c`*R!Ay;l{sP@ z7CFKpC%iB%kFa6|;LBbOBHYL?;L<8QhKfmZT{$=FK7S*d&DsO__ugN>TuK(-2n}^~ zfX#iDTw_IeZIeQfp7~ij+-Y^`;lqce+OV^^h?NMr}s(ii-^;#jpm5>cNZw`c@N-kxJL-mBVxRVLz^ne6Np;kP45JY5R}z! z>rhtrgk*n$rX)H^Lo^}5>Xf--(3mfERI%Od;i(c1SqxLqDV=Lq!|Xq3tExC44*8`E1-Q*{v;H_xOBQMp{lR9@Xn*R zulG>64>MzN`xevbkhXeSpSKx2k%YOkHWy?gZn2XN*B96M$u z8aG9P{)YCXtC*A)`~}V{pk_UQO#$#Ad5T)_JK&xn-=Ac7C5DoVBF zw?$U(v`2P>c+@Gqq;fnp)yma`KNe%wz5In;fja}2JfM`6dBWSDcQpOAg-KX@ZGE!6 zqkrp|`Z!nBBg zS`$jsASEx-b<0K*sfjP#)YZ2Xi%;l|;y8(mf=ZK?o;26Ye~?V_^%YHC(yXxY1tUOGr=mKIN)X@yaflk4$aa7mmW375qno5jx` zKV~}a^*}4afAvZwa2mIMzhK+Bn~H*B9A5&2oF0HwWFlsXCk6 z+iUxa6klmk>eZe(yJtg8Y7PLy*xWMT2G2?QG?c?(<1auS#B=54}AOAF&)7x`6lmYnoi6(8m|1ie_ zd%nSxy4PZ!mq*eDu;3hHqlV0|%thDLTxYr>T#kFQr^?_*-3Yn$F=*e~sC8|))uth(GS@8riU9WRK zddjr=9w->x@=bb5OWU>Sm2Ej<&CLAlA;8+_+8O~ei>&s_L(@VLyru?ow==VVykM;n zweX9XQ-AwENI7d84n%1PH2#P zba1k}(+8jrz)%{py3OoVn4RUcDr}2=gBW6p+ub-G2K&O;{&BPg&Ceh6EoE@5y~WBc zhV4Iamav&3qLL_ERN?;%r)r6j{xSvr@|gG`yHn>Ibl;mWD#7jOUtPP@rBFb-R@64v zk~Z>Ei;vE;KO%nkSdiBW%(eg&N^(2}tc_wlF{$T6*Qs!lgv<=DBnz`T8hckteiWV%6Zovm!n`XDM! zkM2pNqYU#G;NvO^%n<XMV-)K{hU7bGDF1Oo4ZA|L=zfkt;;jOHxVP&Y> zZ<+vsaXjm3trIvxf#i`q4Ty+#w!Mp1p7}@uWCZ{r@!m&uh!DX-J_6o>rTq-|9rJ-& zkh5a3SWo~|abhMOFD6q;b6YGpBoylHIxdljZZqvkI9fgfdR|mCe_$yfiB~IKRCT&z zpWS!%daqjlGzs|H>litOnX7kLH5xocMq$*fDNBos=LN!SZI9dck^rL#FT);`bCsDu z91rAAZ=Zkve~9b=>?VT%Ji_^xN(SDQ;%fv1wT?7T*?yzeTr@dtozWt_r{Oa{b`{l) zGOha?#{74l#!^Fs2Md%;m#SqtBjTyUi6Y@#-*iFXJJ@nuIo>((v5WsXfC$yCtL=}u zi16GQ`+{>~RjmgMc5<@W@J(uT@#JX$81or;g2_hBZTmhO70P%1%E@g(cU^#ZG2j(R z)=+zD05g^OSSU0!+yjc!OO;g%W}ygQea)>Id@3|wv`a%=HeM9PwEtT6$gAG3%m3}o zS404V;&pa*p43^Xa7E`$);AfMnyL-WWY`1#pt8ycC?|sY@rIzs`Sk6!Vi2{(+?xJ} zeuc`%v8wA=ui+8n6X?APPuD#L;mKVlwfNZBL#NFu$5ALt`WVy_dC1Wg?QDbYZ!9`H z1IS89cuHzwn&;wR{}59=Kf(C~+nK@nWmEJj8jI=?n9*;fdozKrHa z#-E*i$Ah1Gzm3{F{W!uh0Mpsdzj=twd5p6OR>sDgb1g2pV-;9oG|qT zoa6%qV@H~{<#YuD2U#j20)m&{SkYRt*w#JEiOI>`_0Vfn?g!IpKnVVLd#7)_%4^E8 zAVE9FWTYWVS?b5G+uYuqI3j8v<9>vO1cXsIY{Npq@VIT%sUEd-)1#~|8b8kj+Y|^1 zS9@>h0?{I2$fD~&cn^?qd?E0C;EpDrR7b4JRO4HrcZpn&IPBs~esFq7eyVZL?2avJ zu#}=G9{bYm`~-?Mvd@`k=SebKup9F)+-G zkR$asZJdB2!7ALCVi~K!>6N8TvQTpK@Coplc*on6J@Kv<^7fVng`Ic%tf3J=1~2$` zzoAFtKwd`1BX0L_M+k_zLDWG+^}^kz+cPUyM0AP_AS1hpGm{>BLcsdxLTnu!9b=lf z09YVFEsa6g%CiJ&+;T8sz!=~@&eODr5zu&^@`;I^rU(8CyqP1kp9V8dmh~t52@m%V9(;7T^&(4x<6RH${G*Rt~qna!UuBPFFcp0fnVGM*g{ADi^rb1 zj*#}CnJf|UH)3so(X$O{I&#<1sx+T7Q7ahZDtj`d$hPi<#8SMR2ZWS9RmjTP{O6nYKWi(PTr+_=rUnv?Z%_agnSlYsf-W{0fB4$;85^Ggr}-0+C$E6I6l zzto%BczhFtcY>>C)g+l}eH%z;Po+q!_R#SlAqBARLB;K7ZwL?H_rF0cu>jrq@@0B# zrvDgAeMiL8%NUjyc5vNyBmu^w85j@GN;3&ieE~$Bsim+HVU5b&-c)|@)7h`q zzWHcd?vJ@ezvMx5Fh_citn^F&S6Xo3%6#4^2vm0Hge~LZ!aQ9}G@}z=CaTLn0F5;hn zEqIS)n#W!Gz5Ex*>Tn<6UTDFbPur+j-Q3*jYX|w=IW-|Ce^OOc2Py(#$stmWKm*`Z zFfs8S(D~ur-Th$uJL7C6R!T~8<8uwVk>uYOkEB~0O0n8(dA^R_KP1aou z9IFX4csX|soIdxY<@j0OZ_3%|t_Itd9h&jP!vt1zpkh^Z8QAjXqE{w^>~$40>}7f> z`{a?6-gm2&rp{;N`oGg(RP7~!-Ci9ma5(zec$J6?nCT%XZ0zFb=2lJWuqL(`Lfl+_rEJrXGhr9@K(#2I|wbW9$l#u$t-tc<)&h6qrQ+pq2cH?FywG`FF zo{~sVEeE_hQ1_{^*s~H78{VU6?UP{a6LX9I5}(%w7$I!*_g5OVPg>1#ha%2=>dQx!dc>P` zRb+`}yq|yiu6tG4uI)^lRK1Hw#~RA!zv2vpG$1uQJgO%0Hr-wM=>&pZem-7}_1%A> z1VRCSLkZBX3)(U2-rt?J=gmvRDA)~LEi~#$9&@owqTr%>KDygq@6fyf!qnbp7;D^d zxDw49u*iE8p&~)Z%a;dGdyyMFUZzgqsF|>nljp3?!zfacX;TJ(^Z=2Eb&%x3U`XI^ zV$ZJASPbUtJC^$TwnVcenHp1uq{g$EcZPn%pHjY^rl2t&ZO+{Q7cXR%MV!3vENK9N z9tfu0_tvJ0OnI_KgyVTA7Bq5zc@GiN`I6|g8^Ve+feWX8tMXaL1iw!LF5oDt+5Xbg!Z%JLyvn!ng`kF4v-`aF}F*bsQ3LorIPEL)}?BT{pQjp$`f?lBwpS!}AxaT+;4FRs=z z_l@ny(-&vYitAHxV|AdIK+QuV-4AQX;Dc!@89Rc z^S*s!qvJYV&=Jh;lrIBS1yDjEz4w!QZwnN5(gD8Uz5Joj@#HUP9_8a0fFMXY<=DN5 z1lg!;S|?igLy-Oru^5-gblh>^j6(T~TVUd%=_w$0cK(SLn7?eRh&Yeq1*1iR0RB3~ z!f+k;p*~r&g_>1|oX0!rtjAn`?rB@=o3-(}1yB>)nZ55_?-;4j^&jXf=B{z}&-~uQ zYz*~Z&m4T)Kd&Aq@BhI(qvlWRk($V{h1FCa( z_MX&aN97;U;15M?@fF*>H=-s>A`*mg-0!8x*jC<|tar?J26Qzv*d-a8AIB!z`D=m` zab=wNIMT0P$BVcW<}&xRi0?|qKrIZG*hGE%RV?%zB4CKLaWTWdJkf0>$Rjl;`Pi(t zJ0_r#z<8ql>T+L2V$YfiYd(yQomy+j9f0Nu*xC}U#ivyW?`;Z|RC@~3Z?uI9caJ2gh~3W;D#snP z30u{^W2)Vzenn56)^imP4|<-jH+fU;;dC$@uddnsnfsGds;UtGX4$jke&@d=G{E>W z-y)HeqPD*F&0Eh0WR&|RxF39}y^GH6dHui45=Mn_Cy14|8VppM%+JO=!Ly5CRVeW` z91*DsqO8AdLCbFBYr zO3_Ae@^>zPrV!M0r1}rq!Nfq8hZ?$9O=lx9F|D}YESnWT-p|iIjOR%hA`r&gCfx0> zZTC=6%jB3q0A+Ma$K|B7O9y%iE!_9<9F2=I=W5BlT4^@L%+FM{=YSiBc^v-%g;;G2 zSA|63`H_HhQ|acqAOJNE1AdByHQW$4jd`CH+EHolv>?^J0Z!4Q0o7I9lx^>V5d<`; zAX>DAu4KJM*7U8SHpZWO6@lYvg}ot+Mn>Ou7xI7KO1FJidAI`3j{K2<7oc%)z^NWz zJ3Hu-sB0y?yJfBz%<}ir{N6yMLb*r~2r{Ho+3j98XO>Rth9#%7nH!A$u0ciJELG|H z3Xr%Tv|@c>iME5X?d{Vb5dh>K7}nMLG=TLU>*xK|Y0Xmao*iNqV0DK z{gw}LD_5{aR^AhFG{Ypb3FpeeUrY9O^13NQ_}Tfe!n)Qk1atpZGcSuD{%`V1Knz#q z=NDM9ut`&(1#G52lUAzp^!eal@>T}!EN_C{KqdwT%5R& z86*Z)qi@2*99D;|X?~77rI+c#B3f#iw zYu2ciXz)AJYs0+_hu7Yr-IV$16~EazW#AMQNmpq!g!kxjgcQ z$nJ=M1d&5XKT>~O{Lk|K^;bnh0pT~!^j5kD&ndJM35Rfn|7TC}13W(!D$?)ILS{BBu?0Zv)ZfqhOj5YOqP$0Y$o$@XcBl0L2E(PEWC_Pt_ zmq^{}ThGUgofR7w8< zSt0~?kAD4~m|1(HS_)7(;N)Qxc+5CFIax9UWf6y4YTfUc@3Ht20EYGMQ>a!Kf1WA_ zv%@Qs;TNaYUgO3WzdYA(LA{rFtKHZ}6-`~HmE5W7?dC#^xDju8^_{Hj^&6WgFj%jA zP|Gj$U%x&p(G*^qp8l{t4#;>7gPCp|i4$>_GZ*ka2+M;4a1(B(8Onkg`Yw#KSD#Ub zYn=^MZ-Da{;NUP@oN=N|SWF`S`kCPS;&{uNhN{KQni2r)ie*Rwe06U44)?2jvNH;VH-4LQRRD;C|?&<_1IUjcH7vQ*dO+$&e;b@7+Z3Uf4SA7gc$HA zDKJN$olye71+*(api=!&gpcQQ><7p(kx9-*)6+908Z{Umy`WtzRML@FST_&hc23*3Xa&*RHJyt@ z%Afvg88e;J?P%PIf{>7)EwFLqzz#FffU34e6+qY+4TqAdT%;tMg;O>bhd0|o;#q9 zC`1aoMM^rAZh&=ciR+R5nB#nh9x;Fp0JxWI@(X_b*H%i@>FM5QZnN{~z?*q1@Z?yh z;{5z)v^&c^nl+utJpQlGgDYcmbH3t5rC|G>f}tB-580Rm*g@SOK7Q#}h_HVn?zM({ zz)%B=c2kA28u@)vb=1%T;0K@K2j01NPt{1iQ?03cL;ocqlWK7}%@rkpy1>uIy9x@# zv+3NKk88!U>KvBBqb52XftOKAEmf8P!}=|;6}Ax^40ugjRXo~}+brtao%H(N4ML|3YFvdV(qpGGxIKeZ&&=6!7 zuAG1-{+-sm<%kPt8H1s*-?x!aX#;A8n`R(3$X5l0cp#ZTHw(TuIk;nXo?ZMawH&&epi ziYHd3C@(J$6$>j22hWhf_W?A6W@LN=9Cb$0%WQ?QnVAOK>WNudhALP8ct!_DM`jil zpr}!}^2(?4&4tjF#YJ77b3$e>;O=+04R)u0)fBFhB8!ZT^QV=lq@jCxiN5s^8~- zdY=6L?dOME-D# zu`Q(msbXe~jbrQzs_r$F1Id@cyUshwd^+uf3sJ`-;9zvdH~(E@7Fd^m={?UE?Ee)T zxK_jmE>##D1*0>;)IgyKGcHv*Rzz%UT-;P(Egs%?K>?tv{QXp=P)T`s#j*aF8k}ud zCN}KF7TlcABcK2sj?zgv+_*op7liP}Hxx1Y8s% zRuMF)eLyLIe>Wci&d#!<$>-?`KvBD%?sXaOyYKhBSKv23%aT%ElK#KV{7A^do-xf? zgKPcKl7=Vn(sQ25isUlIh8Etuw11zJ2yZCrU!%fW(B3z#?}8QyA2Lkhwl#M(qCkB| zL2z?tfdQQ_gx0jtt$>i~vN56Hof$744f{y)n}@4|30cD)Rp=Lciu=4XxppZ z7u#RoaR)4E+{tPm@2wZ0QBheZVLu@(F8E5!x!l6vE1f^o)4r$4Bl!w*phh}aNt<3Wxe0^;m>Oa5=;@KI_1EBbZjIhvYETKY9naO7mMZ|> zb|`)R{O}MCnn3449u#g2F|Atg$%t=l;#pbHnUs=p(zTtW;%A)+&K2UwgKVDcl;93_ z`anaiSA~%qI3YEvJc8Im4Huf8w)@FhLSFvW=C>NnYR`Jvb)caKU!R0Q(Az4I)4ljD zJ(j-O{v?I8ba2o_BcSwwo_O5hk}iMKSQWjUwtJ^H;#ydH-^i$oxQr(xg~VWFqY)G4 zp<9obnmRk^uN<#R^(QIY+c>APN9D$JS9!Vv9g|Oi#BLk9B`GNn%N7@Na&uVK>(3iP za(yfKWK>6@x(U<Wpo;qt!(QYj3T?F696yn3o70&*NwHlQfz% zRxV9>YnZ~+2OYsI_q|XJY)fBRPoibyP(#h4Uw|WLWAQ*8eY)rF)TX|u zG%M&(A8v4izHo_1JNQlOF}FW*u<)d;X?r$kMzn;hIXjrRVS9VW{;;a*u9p`DIHKai zX2uz&;drKoFn+Yx4Qt6t{P4HjxVPEBr7V&x%!8SQ1qQzlc6Q#|!RCC88_+&@p~YmE z`|OrEN1Au@ZiRVtE9mGW=X2cDHr#+YqAT1akuDA7>l`>=7qQ6~TH~d<@TqwT(uz5|_2x z%X*;3r7SWFQ?RnLqp~7(Pq3ko5t3D;@S{)YP!Ci!2Amt+!y{yp$4jk~S7M>#5F=^9 zY;omm^H(n)pQKaSV;}aj;(4?%{>GCp2N*@So8gochc3SdHl=bYxQ!~3o9|K$WM@yE zF?K+Y%@g*aV>d4y_u(vWK-zC>KZ26iApfl@(6BfJFUbk*O#lguBKK0GX&-OJORngF z1)jyGo!!v;1_pC}BoGrs5Y|d31#w+T zydUR{1D*NLeXgp}f$cNlroLGz7}$78i~LuTn8@sAQS zQ8``SQR8`Peb10&s*B!0Z=XuQ@y)fbc1}dZ#Idq#lSP4*<@Uyo3(!JoZ7WWUlAMtH zdS+2(x*PUaSaS6>nv)Z9nN)!St0Aj-rJ*LHsTL;4-RMr#GNTIMff^jhGaPY|hlRv5 zdw>shk5wIPPW@lh1xJpcQPsG)=)@AJhGu`s!ss>84$=->p6CbaJOU&m& zh5=}NaTr?R0%U+T+2Vs^HJUd-ok4}s*t}rls|0C`WDd#f(3tJn?vAbE(K6R6xAl7# zKUckz+Pk<*G*Kgq-KTps!a3^^OK`Ou2f94jbhqt-rG`d<{S74K#5I#-_Eqy&>*Nsv zn(@kN&%%XPR<-I|vQOyG_S*Uu!`RGcUCkRdkp5Cr-b?rl?|!fDMbisCitlebNbvG*BhX;i0`78j>eZNa@=V4=&7nTdrjR zue5+Y*ePS%5_S?9dF5ly?;4jrs_WMS&xS;;niei($Uerq;`8|z2F6{3JqUhdE=nI= zS6e$jKkvM9hko5{wP(z>krz4pGo11h%kbB+3MZI3tZ+%PH%-t5yT)s3>QofRf_dmA zo)yrf5ILDGdh;e@$WI>cx{9z5^UHQ2VnNs7aXY9kwWI;u;mBtRQtB^hOO_NU}*FrB^3muMLGwmp+gj;rG+7- zV;H*Q*N&q0#2vv_@L zE%Rh!%ldbY$p^B(s~=Ng@6s&gMc7r{IUPYTOOU6_NdKHh+KME!<*}t>VULmvl`+yb zdP~vsiHr_Hq$)#|@`uI~EoebEP2xK^Gu4gib6hu+<0{kj?kZSf0s`iHQka zB4XSmsKK3QR?n%rKuSt#-sq8CJu4P-Sft2~G*8N_9T z@Le&nDsU7)28!6WSJ^S9TAj@=D}3GMxq}nN(}*Y#UL~i)Y#uNu-A&^B#q)RwBk-^-#H#4oJt3_TlZap#@8X8+gT)D$e)JT|eeP{!vxHb#+w5qCjfwLaZsXuge zb?t0!k|AB(U1Pa%IBSlaY_R?M##afdUSyzt&DZ_S6*dV}b1mq#PY>6yoiwxo(JUqSFW>i z^%TFHdTpL5lY0IB7c@9gmGm_|Pwf}e6lEuQ`t*@fhIzd(I;-p_9xG)vZ^-x~OHAfT z_$(3Q$_T}#+Ggb_aT!F90qhHgJfifhXD4TIsu3yt2CZ{#a|J|`9Kbx46lcUl=-b|kQwUU@o zCY1K2wz(^)XQ*1BRa@GHSOV6P*#F`Jh&f-5_Ug@2!s}C++Z=A^>tXb@AA@1S7$AL7 zuN@7lU9yKs&LS{8XAKeMjKMJ;QZCBg6}ple>2tIfck$Td39wEX|KmPfX3ZtxX=-GW zy_lHWPnF#dTBP=vWP=KeXOYaInToM4#laR>(D?XYre}?5%M{=IqMCC5gB>epN$Td? z+y=uJMVrlwCOR5SOG)wW{iCDL2=6&9rri`Xa$X6!isU?)G-X31ZJ%zHUi*$c5=Jua zF6G3GWw=7!2j#C}$K|?E55dFY{JhKj?~hj+aLiJhUvS0j-gOQR4yctN92}A6A72LR zXcc2>tu|;w{86(t3lm>@mbPrG_c~#SVKGHtGd0%D^VoFf-&d{p&nQYAYjaKobcn~^g3ad-EX2)wtQMlJ)5ROjuE(DB-lkz6cld3g|nF>jfl;dpU! z{cU2z1%Yq6d=%x-DpaUEdxJ)0=We3tZEIgt7<(1cszSDHC4tv#B)3?fuftG4#A(0% zXo?|XKdqEleO8y4-@wbOwazFL919LsyrUDW>HBJ5^Juon6z<|Q-ZvN)u8Gx~@Mqg8 znJjYWQwrEDmuh8KRA@fBQz?&ypziPc=1eV$DWptOB5Ir^)L%WLsLUYRJqVeyJ9*%j zDCQS$fO6W@HqYv#LOX*Py@@3-{v#ng#f;NtV?7RKc$)CL@w2K_nOBOChr^kbd#`ITw zEuZ(|ZUBRK#YwF@R}kusxAEOOvX_rsj@^5l&9e*MV3G#t-(KY0b#ag9c}h64LIV{A zx>Cm>rHj|DNbq{;4ss_h4x%+xRo!M4R5ypW+PrqPa{C8%EAX|#Qan7in^_-2Y4`Pi zmG3quw|Vbvp`MeuYy_Rows8hgN8_F!YY?01>+6H0@nD;UQ-9s_u=bpAM82Qgz)@%g z9vV$U^qd9zmv;UDwvB_IL!R*7$y68l6?(7LcL&2|mZ|nm9ly%U?R%rU>RuQc*-z1? z3@))KB&^SuWW$|oSoX1Ua4a<^dmYVSq!i8+3P#l#ED77Nb8|a8I#M8)!>~HrRUx$1 zTQfp<;c;$Jhw1t00D7z5jHqyo63E}-atyqyl=rU=vu6+08t3z?sl#CYA@5S~ns0Dl zp}$EsksK9OvmB7@eS}kbj^G@sH5xQh66Zg9FRN2x=FG&u)KwSly}m%5f%tQ}*ZGI) zlxXJ*ynA&JmiV|1u}pQRKI=IQtDU6-3PrrS(^c-$T|%#F_M});{b$JnU;Z27KX z?pw#iNlEkv+q&_#w$^`6m_N47=m_Vp?d*^v#U-ZvETr%Vu^)uIi!>1SA<8T0!JwzY zH2E4bEj^v*=(u@S08h=^}tG%lckRpr>%Z3x``AtqDul8R0BcSm)z{2Vp&3Lu?kb>6@U?sv zjt2Ou=O+9A>j&l15`stH98UTtn5t{4Erc42z?)!&4y6=osx!s3v%T&H*_+_!6p5_W zSvgEgZ|{^8=ck!|%b6aN(KO-jxcQ8+m{yd?*g8D(GrVtg`e3^4&tj$PPS!9Dh9An( zy-W29a@g3|_V!}NE$`-Phnrf|ATV*X)fIv>(Ur2Zeiaw6IqNpr8W#{Fw@j?5q12=K zB8w84mDrbo!+vTo%);HCcs)6*L2rElQBKJ^BH>|Cb@@T4y^|AH-&oVfYpo6%xe#68 zhRAJ)r*JcZ3k_?au1}S@g4XPkWsDgYahpCqcd17uRE8h-vE@CB64-z17*oPXo?|XG6 zx!Cfc*&-P}3FWvIxK5rs7eDSf$jbN__L>oaIAUtPyeM75Zb(HLeFz>)JKK)tr0b*W zpfOa1HTIj)D#)eW9!m>Z4hV>`h_M#>Id(fN*{HltODm45`0%qs^bK=%25p&~pdj_N zo|oX21EI8biJATf185VbVp#@ zx`S;1j@uN+Wt&fBJzPS|X9gY(vc6qY=#nXmnXoml4lnoOV6?LBfJ=W4~e-Ne@aE0NL)!2ws zJ?&v`8*ROInL9~^~iMn4{1Hgjg75uMJ zBV$PGmnXF~Fl7@U;HiEyJa4Ef(1W(MO;yPoFU+>e&KYJNu&|#>{2?Ruf+MrE($sYB z1w~VJe%|N>OZBoQZD|Lze(7%U#Qa3Lt@l5;${6>pB8ihGceQ{kIJ!P`-J8Ku`hK($ zoOq&12Qts5^l>bPoJ6tl^LcdW8|fU4Aepo*z__9 z3uAIHmoazF8ur~&ct>D&@Ug{Mr_8FWtt&>KIZ=X|=Fjb;!wW$3F%16kAY$=P!MAg7ZZbl zgE;Hg%0<$fY?%**Y$O2!BK!OJRZ?)U{LYG=RbP$O8TL0RMZ&oRbY&423bVFmxpcac z{%}c4-S#@7PZUCL4AVw<)cf}=2V1xr>jOni&6s_X z#rzm|p1FmMyH===RFHQS&r z37O5Cs3TO<)Zag(mH3M4D%e9rk-V~99g&;K=)PZdKm3Md-)42X0&`@G@r=+DXq^Ws z{r*Pi&vsU>& zf|kQ2@^gWBDz0xd;(7Y4z_0!k&hS(Nw1+L0H^`vk$B9AeV#8w(9$h@$%U>H=hIME7!Fr4A-p*WTPQpQ%zT8 zVos8ieD?Qg!VjZ{({%gi`2?NtIcu}*OEQ(! zr9pQy(^@HmAYG#qF#8Z4XCvw5J~i6pzqrLp$Ce*8AcM&+Y}2ZqY2)kvtLv~HIFSN^ z%PZ{tQSI#z$26TemWx^(sW8S;o`0)DCFOH|qRf<+Mlo5EoaWD06J^7{Qsg%~W@cvK zEWLRC{1YA%J}ro-Iy)^auUA%8?d=I_*S_k9V;3L}jwnhG&Ckin2D-Y-gIOu&;RdNP zQJjaN2|6}5etz08vmlM>kz({kz7+B0V6q&`i#1nzVB~F{8sUVV_T%g`Y}80a?CtGo zTdUkD9-$S!R1R1%j_=9g(a|&Pvp9jW7uIdg7Y~;3l--sC(lXALJ@>y@b@rP@S`2>w z^oV4vDyO!>rur}{FRfiZF*0>4S z+?bf0g!IE0_Koy(jTm+=PEJlPHfwA~Dg4rgB}IQtJT8~+vcIoyBV>N&J@+4^cAvjc zMtH?Wvn4|Fcm$abd}KJ_`wl02iUddL>TDmJ)V_PyAxQh|!P^rENdg>~m4$|CJumKW zE(`&m3hFqOPPqg5+8QrV8)wzlka|Mi#2;AJ_UBH#)9&6^%eS;W#GQ|`d0y5w4w(r*u0(%DbT%i|uV}^yqP~ARt*DFO{Doia(1uc84uqnK~^qd2q?m+XY^e;k?ezbp(4C6TWAUb*xz&4XQubL|71&_V;sG79{g3I%kRR}on=C>-n zj`r`1iJ2N3TVczLegvjOae6Ry0lg9q4?M`wyRxicx_g72iw!rNUK~*64%$9= zknTIt8}B_%-kta9{+(<3DL2B)(}xV%T}KgSgPwjd-!aANAOZlO*ZDxCBMX-%O};irx3OuQ%Tf0e)ZH!8bRkFaqEu<7ADE(#*QO=5=9ucqO@0PTMD>hJo-#;C-I`*vWS2dmee zxdGRH%NxM@{PD*jiJ;j!h>i%6#RjRFjXNr=_7RX%^{U1M6nDq5H!&E?7)7uqMM0#` z$teyYo|V;zx1CL*W=&JKnZT?RzYq4NFa<*S`Ds1OkL@>PPJ)4Kzq5>9TmTCa1j3M- z5VA)2a(;)P`JW&B&v^XLboigu@c(Hu_*ANgn3z>%gX9aDt;SBtUh$7D==uFg@)kh|dY>dXkk&_*O-j?Gq6yRA;O|SG1*DynvnZPo!nCXWp~0wzjT~&CSmC*2D1N3nNzN0n-bSNv(=!mcr-!^kQKtZR(fK zR%43_(q@MZw?6+#W^YV%G!@0PWpGgY&fMG#n5AA1ZI67Eh(v^l{xlO!g|tC@v6c zUYLXD{D6@0F({`%RI~tSOiWuKwQ}a~6nNWdKA#3d?E&R%M^-kjd>j&vnGt$9IeC~U z3+aG+we00z2C%O$O!OCP0oMvzjooDhpsgzbW zc}`-VLxsXGi_NK!ZZlpQz)bWd+fwVjt|C%9KeqUG?{`%KNI3G{qq-*a`wL)}tLcIn zNo3p?Wme#`^eb9ilnrQa=cHpZ;fw7y`}FOYa`AT38JR>Q0iu_m)~M;=wKml?H6#R& z04ag&r9-B!CrIPM1wRN1LS<4h7)*YeM+kCM8s>!zGs)S(42Id__lc;?> zVKt5ZG;o3ou((HifgwYgs^2?a8FL51BR7$#VCQ#ivx zOQykR{V~+IM6%~`6eea+4;89i!RPkiL=sX(Xj~8Bcalh?+M^EW|9xx;U>n4zv;u{7 z$m}QgUCK{KB#7|sJIjCm(Y~7~0oh|jL?^)o{rC&Gi7%B#KMM7}RdprGuTWea!zkgS za=&(TEn+icG;~VLH#CAr!jhk~w{+CJ+5BZ&tC!Zh;72z3G9`uaCMX``Vxw^QaWi1> zv}qP7%FFX$cn7Yruw-7IA0O=RXOgPBb*sM1kQWm6r)TUQJg66mzv`rQgku}3P}iTH-XeJK2o^@)eV`#=h4MK(#CKYwIG_^QQ3H~$p&Ujiec{IsEAVTy85>(edI0Z9c-td>IP6=D+mH*a)mU#SntdN_&d zy?mHL_O(!%V}^mAzS6Z#!~E9HpKrM~v>3&!lQRVMLf5FNEC7zXK{f%jlUGx3-=4d8 zP1KnXO2!TqBWRUI00z~v2Z+*d3kfL(xrE;ooBX?cgP#7hd|sdbG~ao9!%}V1M_VyW z@kIUoTP!JDY1&?wLj|WGmmcBAh`5XoZ7_#apZ9_#M<;lKK-m<~N>3(b*REaD4gE3KnJ!>HvI~IGTf|9!?x2v(jo*bS zXw?*G z{3#egLk1mu>Zt%B&G@a7qE>R5Na5Kta%7%%O;ZKS8iF-A`QcgLy1Hb!Z1E3vykcUq`>2Tr|Mi<>4hzfPDSv=-}ebl2%kKSO8r3|48Tm)cSUtg@lifXKIGOeim;g5Lafc6A<9P z96GL9^8=PGxUxh=FNk^{{}YbEWCqCQL~WJ8gn_Sv&6UZ8g>E1P+UQk&W(Zvz%LmdP zAn1Bnp~;sT!N8=pF#!l%=Ja}hwBP{kbk=&SLwl$Gt=V;o&j}IQ+By60uiFj`&<8b$53SrIFm6Gw=d8i*NQ(M;EVM zmU)B*V-f=)?PBMeQl>8)3LY!E4zTyLWoIJ^YxKR3zh7Xxg^9+-2`(LMEqR`lyYqAF zk6b4g^Y~-foAQ6<=K674Byin4uuV%jEpBe#6tm=%O$tKZWcu%!GU$CWVvfDM*amzQ z#7x%?>f!KqhLSo!>o1mKESK>y(MdJ}M6qN@=IZL|lQz{e!gT-fxcC$>b5CXNzZLKn zZ`bDK`L^eA&PoBJoa0{WbdlWM+%pap30?AqN~cvxL_JqM>vJ~sla6#Xx%3Z1L2pg? zUfz8yqxTrXrhou-_yt@`OZS3Q<%i*?G#vESvyUhj=>aK!=UV(S+!s;2sg9F_JL#V+sts-2p3T%(#16jU9xALw$UF6f_#U z&b1lyUA%Y^exSfC7gPd4*?=nTdv6sK8=x!?IwG(8sSw8QhDU#dOD(qtp+UMsUyOx` zLsV{Xv1)b%hlN97>lfj9$Ml~+r3pNWmI8B8wAq&Bcpu(MPkV`E}$?KfM~H;Ab?Ka_>aG(0%F z$S(6%MfRRGtf>)yn9Da3Z}eMeUR3W;ddCfxu00mPt#k)^g@z3r=vpsNYKC-W+0)D9 zBVu$EtFIblHUZ&2W8WH7igV=x(z?Ip?4Nl z^|E~yrS>1XLbQSnbKP{G>2bXnl~XdkKh+Eyx!J92GXDvH4f{AKh_3?+CD#ZH=U{)%fAwX2|{WX0(PL}F-n!0t&nXG$~Th;PG@+HH_jYRsD738lHX=!+# z;-nCU87gweh-Ilkk;qJ7dUiIBK{Yq==8c;Lx}AA7J!b?%qzjcZS*MB8<+6LS<>b*) zwGol=OVeosX1Wm8sy0vqhX*mZu(=Px&tdi9*T1(nj)0<;qQ*-Y@?Q~jTSv{}6fQAp z3yo$E4k}4cXWF;SrG=n-LevkbvTYOrlF*1)^{(d3Xrc=v6yoPjW6j7J-I^SGu8k3N zo-=Sf5q7y88~2{3b{o&lwitVOA@v|t5q*O0rL-tbN*ZHldUFFVBR)j5)8^{tS>%Nk zXD@mxt9k$RHj6EuBbM_oDGX~1P^5Tx&}H&x4gqm`=OAD)FJ@Mk%xk71GmsRvVg!FnAsAHHJ%av9eZAuK(Rm{Xi!e25f`xs8YS{J!u$zxOBt!{d2VLOU2Sr`!{^|Sp&T|Cb9%tjs2IA($>^) z4on!(K(66%=T1G?aJ8N6_e1#7qdIyKt`PT~NhZ}K;Z9@=7=CV!ge=IV^Ko%`Zt6|( z6&G2Q5EL@8=YXeTbE|rHsXBrss$sN6Sx2)DH%-+NOH6{mT#$MDQtC9BQxijIWPg(4 z)}f%M0%lInlv3w?*Ts_1+!BlHn?L6mz*x_*Ys_;eG})N!krF$EIh4PCk;)W(->^=yL+!1PyYqavxBTA^!aS?K!+C3R%rY)AZ4CIwNa zAC4uUnZCEyXL@pAu@P-8tUH|pyujdq09j0yX>m-%7FZKN#CxjNG-LFhT>y#{m zHVc-e%zXRw&P>RVAsW3_N5yaXl7)+lGl_GSl$X1#H-=-wpb;t17oNqfn?VH?YTcwt ziN<1UEDSXav^|pxrUo~7U8boGypH~E@UPr_qZt}~R0(I33M#bbX)H0L^Uvk6Li;zW zJr!X$ed@GUU6aQoY{yDl`!i2|bC0@@_RS9p_1B#k3)yja;tMuoAMtEiX&KTV5iu@S zEV`F*eiqs6aYv;K+i@JBiQO!f`)aG07_Y9JcdU$$*;^hQcbo2BXvCKv00%0n#Td8) zs~uGu70?^NW~KjR_vE^g+7IYR%NlHzq$=4FHcWf|8SPKG(wKR zjp(gCx(J-=*Y>RJMe$&J1ff}DjjS4g2;*GZv~~Em!ND6J8qVd<7s`|LG9C|aqY|>1w;YyQYghyFk_h~$b*63$*DF8lI+%#cGblz5J42_v zL>IHgPnJ_%@KpB#@YE0xi97xMB0%UoJuyZvaa-6n8d&2E)M7t1983FPb((NvlA(TN-^~cuxUV9!D4N_>oWGR~^sz-c zTVd@Ef7LS78qDMIro#p{$rzf>eCRcQUEI)mb6i!^^<)&2Rt!^k(7%);>}Hrj-D|&} zhryRfM=&P6apbb3hg%0qLjL!BuoxZ8>%I4>2dSDzA}+rX=5ruq`TMG@)p$^&a@(?R zwY{YgYSH(kx*HlA)Q&@!G$aL&?wPyKe|Xo;adICE-gS30mUhgcXKmxi?nzgc5D zskq{vCQDYKmc9z|T z8>1KlB4~Y$rbNQ|!Njz5m6FXjP``NW>*WE(@b{y4d}0W8X`RNKpb} zMko{ck|lc!ofL@SmD!`#4zBF>ZMd4u5<{V?E}}nX(>%)bTPALKAj8{J((0v{{ny@B z=8oHO7Mlz%%sXp5+Z!J}Mf9}B8=EemgGarQ`xrsy$<(eo^9gLBYNq<=SCcv^fl}sk z@d25Vn=s%8UMAaLQc}ZiO06C6w1FfeRMPfQg@i}%Y(A;@eQCn(3LUiYn1>Fb{fXxe zh+{%_qz;Yizg)#v?@Si+XDHD~DYm`@j%v6hpUH|29?YSw)_P2e4Lpa2OUL5G+*hi1 z_DOEk+I9Dkj>WS)J034L2Mkd@Gmw|919lTq1`)Sy-J-qs1U@etn>u=&ReOf`O*`ez zEY2l&k`fV(V5AzFo99Zkc%He=KeT*rU0u=IU!xOaOXWciJutpEJc4!pF@UA+@b8-* zM$5tc5a1SnOiaulq^m?N-4=AJNWXxX7?4F=4utYB5hIxPa&C*=&m!2w>%7QH+-QPh zp&D8Vir&BfndN>=!fju((WU`82c8ZOTs~%eY3R;6TFNVI=-Wbycep_9#@L~+?<3$q zcbNtS>PKeavDdMCDN^ci zm3+e^Dekx&neut3^CBv=qVD9&Rlunp`vy2K4U0fe!uGs8;6woXjw7nIKu?UA5$Ku4 ztp5GIMj*oiFs*H7eRb)KU6xF$`B=5q%am>4ry&Ekal=H6Nl9zp;ZtPC1#P@*DP+Nw^UVA z%F*s*(>#*OW9{kVxdL>1tY&(I=2$LI*DlVq&HQRVb4(jU65m4q;MkuEer6`7t$bI! z=i1C*K>@eWel^L=_G&~#Pg@N7w3mHLJ8+{~jC+$^98W3Ipf&h)b zru%h=mk~^9z%gRbFKV*d&yz*&F?f~%T?)_*U})|@w7?~?XP~B50wRRo^B;f!Q1HUM zLb5_J(;W`jp6$kPMT1heP_kFUcb>xvJ;LX%ku!I>;hYxS&%`Qd*u0{%EpU+7`yo)F zdkh`m!m7M`vZ|UO!vNLh(*Q{7uVEBDHe2R)LcQnxV)U;ff!c`C5QLo76A&0X6p9>~ zAg@^VXS_;NDO9G|d?Pwn6K(USe5k+wrvU%+h=hpSzN_nbhJRLeq>kyG=Kd6X^rYg} z-tUVH?{wL})SJR@8j%(X0|FEPVn$k_&8_wIkt$R&TL;MP;CzTGgAR<0p8Fvo%VnT| zebdqcAY!7JtZuEx%;v(~;HBuu3fprK8Q&B`#r7-*jq2_B50~4R^km<;Cnn^y{QLOt zPkDT`u)%QM8%--%cmP=JuX{7p2`w=#RGnK;24hNJG93(#3~4o5+bE7%8LcE_eBI%} z2;mSv3n>cMqZK4iLeL0tzb~1D`(x-|S6+UfLDE40C<0%32NdffVqMq!%&Dp8qPcv4 zsrYy2CUjZDQP2;3Gb&VI#uf|fyD4Y~Wl?+VEhtHG(h57bN9SW>j#l5y#3KnOXH+{E z$7^lUCqs!F>8PDodxsTo7B6;+^bO!Rvf- zi7h?8su|1RQN}b|Z;&e-O5+qm_No&|RogdrwzFA$T|CDwR{afkJ?J~I-rLtg*Xh~p z56*cO8g)TmsLa4lJ)@mu7n5xrWMBo}t6FeiF~lv~ws~dDXt)@-_c1&M-$v)GS+R{= zkU;66le#blC-`3tH9d7*Qb)YE>XqD1{i@`8&)kK;uyyv<&`r!>NezcH#(ez*a)+J} zGstLe{)5$AzgRh3YJJD|PpwhRLjL5`6!_@XIFMsq-bCekRyiXBZ;HM0CA)r|8tXLQ zm+p?Y&>j2^dJJSBsAAHia2#*I3I>yboxRBZHePnW#sIM8!^5*1M?Hsg;LF$PGTQ>X z>Qkj7(5^ImdcYk+%-DLUZMVm*S9#ch3RX&f8h6qlwjp&~9mG^!_RR#l4XuYbZ`F@$ z|5kINjk9#)lDHo&TkF++)M2kw=4Sa$#GkuXXrZ;w?_WH?s!`k z5WSL(Cy7+8=c^P*-x~{lRqaRCC^lV-8oWTqHnlz;mb23k z^_?-Lf_lgGz?W_VzsRUl)bKl{VtIOKbM{QFT>AH>1@I9ZLeoQqF-U%N^4oaO=$Z%tZCuRrLKQm!r z)_^G!sNI0pifYD15hUlPEr*Bd6t2w{rF{2i->K};l9Lv}8S>I_Jl8(m%AkC6o1b5v zu)FM;k7TVEw}z;qGHld4i&n& zrKL8je#F;Lby_FlFIau&yHgK7rZ%VH01Rz2SH(R+4?y6*UO3fq2^#@sbz^=eNpOhj=p4(uU?`Ls}x zyD;P9@GP6zfPZD8hY*d1i;Et8l+8RjY{LTu^wU=@b1Fxmu$|lAp+x3sS?(bUalJ;T z8s(jFR5;mfX6GHy7CTgUEK8u`WvT@W3Y4CC=Sc_8qN_zs|NN?AR`OIJyyuZM!#~!~ zTl8op{CVfm{h1MRPxe5+8x%jq(BjzEE%%qa{-*lxqpHMMO^gnHd5ym2?2Eo37Nxzi zbAfsEw!0P9bG|CQE}DY6P7GB>cAI0PwH>;BD~MB#Fg|9~+!fj+M>?+1x^AvEqzBjP zm+fLx1JL0e+YADrZkzJcr1y02*X1S+p076DDHusefT=QkF`(St1#+?0Lx-6RYNR9K zCE`n=_Z{u(lD!|;1^nJ8@tAsriqh0)^u6zWj8s&#*|8a<*9CSg+&4Nr91|*Op!|Y0 zzn2>a{k+YkQ47>KnJ(xlF1T@{E z&WFPfDxq;(vGdVy#&b~LDEIiuZkZ`B&37Rh^j*}*C&7zbEB%k+3Ozv^{-4cCo?Yj} ztHzHExLLBKxKZ+|{O?O(tOc^~~DPyf3PzfPH(E}@F>SpIX#QUo6~bebg8?jEK>5rp0%fz+ED_cWoFhEHVcdB&9aFZ&znl0W5mzNEdncBWt)dV5`VKBra ze|K=U{Y3zy1-=h0{+Rh5?zO~aNaxL5HJ@c?EdSG+V$S9GT6d1YCuPPabLG%Qb?YaK zX+%Vv;E`rvk;l))>s{h|P{gcq#@(RUMLVTP9v!x&2iLjIF0jCOTJzE(ABoP+%#qSM z1oROu4cfvKoSHp|Ov+-mewyP=osxl0#8UEXcx=;YMW(jws{u0r@R zCV3pAgr3;O`IFK)O#f0b&(Hfa8fEbayI8S+Jj-4x;Q09<<^V0}#%pWw&ma$@)^$Dk zq8OXi&%6&L%fgqJ>ZIQ*qL$Sx;=drGqUXry?6R%ONwNMk+ z85}-4Od8z@soKt}K&J50v@uNcaI$_r{`073J3aV1=-D=!O3x9HiX}&DsHzs3M9ySY zN$O){KfU#>?dZW+A&aEi_EPl1# z6X<%!8)!H#3OStat!r@%%BAqmhB=IxVvxEZ4QugLui?fb+%Xs3xhBCo7bzgQ+_DEw=F9`tF_M zO-@FyP^9zYJ2j|T_&h*YtG?&H$km=vI*<5L#(Va%uKNv}y?!Xqqs~4fVYEVlw1WN+6OKnz`>cbeazmZ+Fy9=2H zb2VH086@418%Jui);#Q`Ppq{)IRn%ilrUya-{a@uZ%qU5Q}uFiP%u2 zXnK|)Zhi93H=6654#5TM(Xy$rZ{&P@1xLmOB~*?TOH!IHZa_`_c&FKyY;ElT>{Q@X z0200*8RRgZzlQ`cOYOIz>#8a%FEa?KrK@rQqPcKADo)oTLS4CYylX=w=QDrjJ=27# zu54?Tu_%!{BX6=J^H}eSO})j0E3h$OWy>6WQquZZeeIl_**V!I-S|YffK;8!l62o0 zc2oXL#l@4onYk~~)<7a&A4>aBNcg6PokUVo3snK8sGX2W&njoN;y*ZYc` z>;gW7OP*xByd%ZTb~9X?_{P6oHu}#M@7kFu{%w}^L5x#OZTon7t=0X71}@C%uE8hgKqI+7h5Dt?LmVF zU95rSV&1Z*Y2Ds-_26845}WUfYGddHafr`e2)EU(TkH_l*MV8NC5+C$z73#rvd8v} zWwHKniPu)m&WIqOBCQ>TX=$73vFMuBL;m;ybP@zr*Sl(}JC?cXOqD#K(QkCV*!uD4 zt6BXxkprlDgOY*ZA|`U|yOKh({l0=~W?*4^d%N(s+YZ=2L3*#vmel4j zAZQy3(A4RbPeaxwA7G`sQ!4T%ou`|^VXwGLM~|fHJ5;0XmLfr+Tl$vE&V6mm+K#FC z@a-u_dYCaZcc~Lc2Wa$3?csjoUb4ozHjm^+6nvx3%|V$-+!h@gnufD!MUv~Tyf4Rt`RSqk ztkhioj!v0He4#fQnG!NTQmXU9lF>IHU``%gJCv?tY@^u8P_{|VCL%wqk@%F0R=_w`|p0Hg2ivMcoVEv3Azr#iqwRCA z(JuhD_d`6`NSrnW5o_SVc<%$c2MC$?o@xZA?`H>W{&R-f@ku*fKAZ0VDAQ`UbBSaZ zJKN)XyCkLXM|+u?PPuL#!*y=k%g2X#B2@A(U%fh<>djagPQ16(y}(scRfVrSdUvqG z&CcHWCvqrN7W4bVhb=lGJyatX{BN{|7=l!Z{X|LI$eT>zg#Gr>1H<6{{xA0CNbr#WyJa72x(RhL9 zXzhiGWlAzK<^FoEj6-m1iDQBgb7N<6?sDk+FnZCuCcPP4!`9zud-8P#F=H+jkL*_c zL*rkIuWb%Fnf3uQ1$sxVb&4^MJI#HXYz)ZXv&R+ln+k4SEf2-aVDc6Fhf3ugFgAMm z>I3L#uZ=&OESBRDJImK5HU_s!M3^KczUJMd*xm=09fQ%+#}CySGQ%VmE*?r9mR=fE zcT+YonW;!^*0rDc(Z|@hgU9j%8zY@5e|SgV+_sH+*rV9Wez2g0RC3cy|9Db{^9sVW zAo5TFxaMM2GL>goWJ!64KfT^TScd=5-JbdS>la}_!j2n@>NA8CGDwrglUPgcR;Pimtef1`&^T5@6&_(xyyeuTrWvevbZ~2>ddG~ ztC;AlfL>h4hu-j)4(%A!eReMuM%Y4T%qm$nUkpN z5A*eAuBQ$&hG|`@N7zx_LOh~BZ&<>XdHroE-75*Z6Df4nwuMj1F~f?WVAvjmH{aaM zU*;a&*6s_&|GxX8p^ZbBMV51=TP$8jsMN@CK8504wMQS(A1RhPOqNP5Ab9g(@$n^1p zyoov#qWBK>frOeE=8b?_{q^jeMZ5cX{r!T1f@1|2%+${tK54eW@OPfx=?5|iL--4U zU?Y1Azl%Vq-a`B<0#AE@_}B0B|IJ98zV83|28OH7XC5q7>?Dam?3u6{NfFMF}q^R$26iSMhK6*`WIFuah$9*SxlNb*&h9B@{1vnIZb~XG1<( zc{zDu>oJFk`UWbODuj5ur@mOCg_f3<+df)rNW|%NqD!mrCfn7XltwVayW_iSJozzt7IMo|9Yfr^dZ2r(cSQv7pw$!{zax5zO4E{lVSf znO|SKsH=1f+@vlkd7bB`5j)L~4LsINjwjDD{`mDKU}tI2bPqGWF-d^9-%IwEG3KAM zZ6NO{87%d-Px=wT6LX2t|H{+%K|y``$;R=Z=XM%?gcQ9jW%}pOMwia|jB5VT-#P;t za`GC_gU*DJ>f@vR^u)o}2IC*^$m-fP?Ag}wqdW7+mG=B4 znIa-1OG<{AM6$=iQ(=4j$?_vT6Fu02c7IMMWOIe+vcj|Lj{UxEQpeN$@g2;*f$!hf zisMv+(^n5DbK7fcVQd~t>wR18m3DUTNXbipF@atgK|#S&e*wB$TeC+J`ZSPH(Q7Ch ze#7FBfxmvO_I+xAx3*}yy6bf0Kb_V&m%#7XJtu$m+&OSIic0qW3|#5^=dQkGq|Pnf zU!6RQEA3sdYG<#ga76~zdb(8^2s^~9s}Den5ctyxjkjc_E3u7@-+jpfii$wb3!MlX zk&p8G2YS6s5!yb^wFi59L%8kr^`PNmTG1K0{ZI1|BNc_KSvjJSk&y#Ol_{NJl_>$MeeqP=$dR1TQ>mStU$Eb7Yk!js;Ls zMh#o~JVXyJfrmhVukQ^huzx)497mDd_;a#eA`e`e;x`Uu_}!YKqSiZ62s87QjZszQ zT^vfPFRA}Gn*l!av6^}A+o41DIjq79%F4zkwr(iC0)*A zI;$I0R5{Q51N^jz!p#;m2|vcibNB`Z29mvs>9>$@m^M>z1iyp8ppcPD>x24tM^jUO z+r3^h`npq~^!2@zm4EwDC!Mr>?~1cO?}e=_h2E8^GKq9FG#_Fs(A(HEh>3RC<#pFL zNHftoJif~6{ZrUJQPUCJrAuoo$#xB`zAW@;dfvd78+- zvm*9XV)&ND&f`bHaAK!rTv>!RJY!$FMyhz2nMJv|2b!BRi@p|R&37&FSP2~jQRX&< zE77^G1irrUE{?VtO(zs4aUw1oIyJcEBvx_;asQDWwb`%q%Hh}FD6~2K=$8}iYzj6Lw<~kJq$iy4S5z ziZ=nvvF^ZMc9AVv&zhQ=h!}~&Z*(&k7Zv-F0U9Un{I7OhL&F)|4%Cc&s}3|Hy~_>T zqVpx(94*JL{`&Qc0$iwOD=vONJxLf5=bSDO5IEw;)DQS+6eZ-ocXi#Mrp`UOaDKN6 zOU&s9OOHb{|I+2lzquI)el$0SUYE%6uB%NHLj{EglOz9Ed)FD&)V8fR2LU}&1rHrA zDpi3a3Ml=6!a*U35D|f((iFr{V<12{f~Y9uDuU9Blu#oA(u+bsK$?+WLPttMCqfE$ z<(&84cw@Zxb~dkuL=50142zjL zJE{ndl=kw?@kLvl)cGuZb9^i?qr!&rBNc~_7&921H4H}c$g@K;B(SuXPV|`A4`X&# zC=>Nwgfx8=r5j(bTv(x_t*xyeT8|M83fgrJ+urV#Q^wX#G9(@!*VR=F9VehLF&MA& z=c}D+6}&jA@c62%x=%f1b;Uet4AU0QWIc`_MEJwYa9~UI(2!TlEUff`^b|BS9xfaL z8#MY7!2QIl-zh2(?$$x@Mj23t{5MR(KK`FO@xQ#4i`6-S^LYP(`#9%vg-_=-OfkS% zDZ28o&L-X%ua;R5ZF97rKXv@$>7Sr-EjBXh%2WD8&Q7vaF)4tVD@MYEj8~5Y-_p{7 z%N3!Va-0_Yf@(FO@UsV-0LF?-x89~%2L`xmJ%b&@#(8QL#A`Xh`Sy(rM99d4|M{UzUM?kDV8F{{)v^dYs|&F+^KhvD3zbZ#h~7YKYn@~(CQSt zUg@kZV-Rwk(yAPXWDc6pf(S~G2j5p@XP?Hq%0h5cZXu6NbWE=D9F|iU_p?cD<&)IL zu-ot$#*wmVC?W48b9IJ=>rKe$vK(Zhldl{xfx)t>k9V8HmWnEV>?UHim!|leqO-D{ zQ0*Yg-+rr?x>K4K%!`-zAo|uone~eoB-!LW>L`JX=}8T)pQvZd-JL-so>`7RU-nh4 zw&gPNu+cLck=Kpp+o+@7>5b<7rv<_P)u@W#nSJ?2P*z<0G>t;rqb>U{t7_|Oct;7| z?rq`#YcDYo^GHx3ZgIStApSh6r}2l1p5DrE-hQ!C2f!V<*}M||6G{;u-`$#-|N7pA zHtxTWX=2~mz`Evu=vz!UWiKHk#2PEJvM=s8EV@2N(f+w<^Cyb}*pwDg6_%&OQm7a+ zwbO-~HrYFyr)P&ORtgBt(r7G(sE47p*G|gx%a?Nb%E?;DzF*MyMwPSIg=A*Lt z6(CM;+%ZS@IF%be&g-){IO1{{n{}J&yu3em=mhvonXM8Sw}PHgOV@P*VTiTeK@*;U zLejZ?5+O=}n%~tgAsw64yc_iFm#}hlpCVr|+Rr`i#x2si?FlHnjg3iY6%FM5cS|p@ z()Ck&PyG==p#T@SkwZ>`FwUVw^me=`A|NpVya9L7?Ah(Cx8+9-Q}&;-kA;MU5;3$# zQBh-PW=l1)k%mhy85|K779Kzj&DPU+GIGSW)pCS_PMtX0P^Dy6^(`zjmO@l`JJD}o zB&9!q|J%Z{SJ?76SB{(fnOyzrjsfNSO&!`DwJR{NdYYQ6xW)X;Eyc6BZo=V)DUFkR%O#7wazmjU zYfpq0R@%ofN+(C_L-tvr4_3yGiV60<#Z(41mJCYNqRe+_pi-rG8~(-dNI`eQ#>hxC z1vy9subLIFPtZAguZHl()Tjg!RtFDB^T>1Sc<^}OVk?M|D#!_!gGe&oiQ)28Rfx5U1YruYso9QKHpTv z2ZEB=j?NuX2syU3&{bkU4=HVT4c=K)9214iOe1A=QDgNWiK7#k2#EKyg|A-y#>JIT zR~J&OuNk-o0_`g(jH~M`z~~0+vu8%g*t9U}Q^oY*QvcVl0Z9JEwO3mOm$>zTEVcUK z*;3v)M_i&mJ!;70C*tMG<%gWGdg?_{=bfp#YS@A^&1m97;AYD38O{h`Mqr3WP15*8 zzQ5nz{P@T-&E*dWJ!6 z4W0Lzt(G6u?G5nUni4X8(&wV~%~XRxPCCzQPqZ|!sE`_J)Yeh>FkGm;5e`7&3E-Ty zgmS#ovbVOb{=P{ReJ(xI0R6afZ6}8h04bW>> zIwt=B6_-SeFPL2nV=bC#J8Jh`M)DhVdd||^u$#gL!E}!Gtq+sG=a@3{(%n8vXsTQf zy7Ng{tG6N42Yq3-o8qusu8!C;4?|GRuWhZbOY6@+l#Pv8-+??7>WQe4$;DBa^wIUU?ru>mDT- z8q#xiWz`w0(O9S9WDRsLR{aE`I=IWqFofQZO#a%4*ds>63xVrGx`uTCt^jNh&)*(% z^b8MAqvwD?+dLr)$g;i@`+VMqT)or=Bw34r-2pKvwuC$u>*&X1Wjg|EtStM$ik=t zgZjW7=M>Q2n8l`TZ*Qxf(wn~DxUx~`MbK0VjKu8n$foVI*qmW9zEr&C`I~CoL;_-K z(rpSCeS5HJI&1rukO^Oh=3AohrW5=crj<1&)9%Y{qA&16*)R+wD-{#O&kZRkmy3MU z6&DgedPG8tK3AF2ZHQdSvkAx=h)a3TFZ~T6A}X5L6=pfU`gEXZR3)-kt73NZ(Q4!7 z{2~&_3I&b<#0X$m-A;T{o-N29h?tm#NkSf?aCkrr`d3Og3VB~YtSxqP+;Yr*R;{P+?7LC+$9`A$X7nd(vu=3Y z%2CE0Z`iF_N7Z)e=j)dhix&;3$VK7^gyNc!@$X(*b`HhVc1eP{uyLf>g?cSoguZyK zRBX~b<+AQ%7eW*YkNWk11Qc##BUw3AGtI-z-9v*H(Bp4>coeC^J+ApSe)l9C6La~X z(By&x+Kr`NRk^s0b(=9@a_gPjUfPdZekn}5s6oH4O^o+xR;R+6TVPLNF$4TW5k&f^!=T})wuAg zne<-Ymd~5HV?julXlwX(!~=5D&Z>tguKHIEm0+KaUQt9MroTnfs^QvQ^U{KX<{oKj zLBZ=DUdXz=>2Gam7LwS&0E>IK+hB3IW1({`%V0(?w8VT#*B*2)8%K9~QxoubF`6?7 ztJwTP{>;e_8O8lI+-2uQ3`rm}w(Qt?)Xp@EvF~1If-N~J6dc{gVQ1&C`X+!mtIOKm z@>l2L=5q6p4i4->Tt~z5QZQq7^K8eXDhQIW2`n7%59ockp9eALi4xYFPLqAC|XC zlOCnM2{3Ut)$a)_8>Ogs16hZ!+kTqp=-w z5JFqHx?bqJs~5-#Nn{L5S@<_??xjeA~zKp=gsL1Q59s%NRO)Sa?=%qZ> zGOtrY?tVDJuL)&5TI1q`jNaOg1bX@-GoQEGIF(!iTW^NjU*F@^h&P&P?#~Jf`tsGH zk~pCo2b^aC@V%B}X*aXQ#*5?1D&CB998kGPg9`-RIraKVM^Uh158hjxAO6aI`=M?O z2XuoM+;F(U6{kx;s6uR#SqP{GjYK2TIUv=ifSoiVowLosf4%8(s(fKcDy!=2q^)@) zu&i!?c7vdlP)D_#@{XHY1uTPtv~MU0Kz-gN`93%e87;FJzFvy~38%oA?jE!4Gx-Oq za<4wZzh5r6r(+riZkLaJ<$3=@pa*;;Kp~=YFk>muIM07kMD29J<4$>7Ia~NSTjG50 zuv9=QXfMeoNd?~Niqx8{0>=buYG0G}1P;WXG%5S@pK?jOqe=NHKMN!P8OIuQ(K-c| z2hg|PQ#Rc@g+DEZW|uY#=Mm%Oe%w3-u3~izdTW_qP@o|m10EC5#i_2HPAn)WVn4GJ zKm9r)lH65NZ`}9^+r!%Semm!}liC4*dCh(#Fi3@j)yW`?l}%b`xk~nWYrn zcV~-66IHWDAf_mOkid+mdHHX1ZJi)>IfLd=hGW6+;-`74Ww9lG~HSagj>TOB%mYp{g(qIF3s8jeE2P_PmnAiD+1cCg|$ zYNn!|0-f@BYN?{0-j_SS2BT))n#TTa@w{;+7URFUvFw!bU^VSbdg#UrGmnFEzl5As z*HTOPlYB2%D&dIAK5}IGF`wkd6obq7$6!i zoch2b7KalCh|8?lDVfTT$Mv8Kc5X}S9I$%hvs-Q^+pwP74$={b>;4R=FHO1(@LoV? zk0ao3odWNY_tH9%VBVKo^nz_=MvnBE8&x= z+UixOl6eYHSpvJ$$H{AdfScPEel4_a(gxI>6(;x?ioQgQ;3qo&)VRuT zr^yN$pHNWXl}rd892ZDIu~mUkQn*+6A2lJNp^pV*cj#&Y4|+^5n$FM99hSS#YU5j6 zTrMl~*Q*U>H)Y4>Tzvrz8Q#>i;Lh6pOdeGrU$wUnn!X)e-vDBknMEt<1FY%cpT4*| z*Td3NQqJBqB9E?C4VFo=11CP0{$ndCe+h_8Wo1sQhUcWIvC93X58k?Z4Ya#BgR}RB z1m#*@%6HD!8q#1yytpIS6bQ^!dqu#+$T1vXB3%02I63 vKV@0j?f$n27W?~upWxqP@c%RqKJ9Z#CZEsku)O+;eMR$&unQ%|Hy{23RqdbI diff --git a/frontend/__snapshots__/scenes-app-max-ai--thread--light.png b/frontend/__snapshots__/scenes-app-max-ai--thread--light.png index f8d64397cb918cf12553fdca4771f520ed96b987..22c88333171fdef1d0e0807d4096ffce1adc38d1 100644 GIT binary patch literal 65884 zcmdqJbyU^sx<85uNQeR=N{C8#cSxtCbVxS{NT*T?64D{v(k+bwBHdlm-J$gFnXbLh z-DmB6?ilxu^Uu9=tg+S{bIm#Ve&2YWPrdWK+;cIETMup_At7N%hzlzqA>Dwd*V<67 z!hgOM-(7<$clZU1;`TN-K{CFpr=`QCdhtX*Fjtg%| z%l0^3Y#isR6t;Iz&v|h2*?*q!-A8Tj#zaE;Y3YZ`kj>(L?OZ-h^sZq4Knr;z{%Y*i zH(oC8w42qVIe7D0T<$QN*0Ju4r}SFY(kM0wEW5vc>kKgWJ8YaeZco?g)VY+~ z8VcCkmzQ8)hvi|edlmh&)ufZLpt!yLp^oP{X*Cb+=7aN-;e7t}wKd_9OdVNrpM#At zyUv)~)eLG#P7ewAcd1F5Cnw!z>P;R#G*?tCh>l*aKkxGiU0PaVHtwe6eujkPRe6uB zF?sF#u=FNmgnc^kBzaTkYHjSjgOD(U4cKwW{FN{ z-t&;F*|rlI(|p8Fye`ph8Pn7LC038kWG_inny9+xS>M672LSa;FV(rT0}TZl2TqCIllYV z`>xqc&_lMs77H`8k}{{lhOwVxd`S+XePuAqyz>0d6PPyZ9P_7LN6gkDO!+UqsFWO{ zki2;DV#d!3pMTmu=J=ibll-a7E)F+}qoG_Cy*9bRu>-;cH#@ui3d(be0&m$5scXl3vfKh=4_-=&=J+! zvvkf&nl??>bN;$}vv$JSxl$zX=PQooo}}S{k+f(6KAaleCZjgg(Z)B|o+ohSSSQmz zP?RR8tcN%iKd(pB4(qD-BuZF?C{P! z^FiZMN>seNc=XzmC}YL@GuqmT3Gyr?3)6L{I-Qq$7w5=&y2!Wj-FALnJoCQUFLiOU zUZ_^OBu9J|kJTnss;n+#paM#7de!@vU0!pq=cVh z6#aINfvJhec5RuC@vz>vNa`tz*cE> zUgdHAeRx=zE*iVod^s|=O#-inUTsZE>&E%k4EGAH_1Q<~`H+T=xRXAdJ{{8H+fv;2 zRQ0Zoo7ub{M+$UgoUGxI=oHC`Yd zt@GZ3M0~!>TII}4-=^!@ukg0E_d0I7oc4#E`{8OmN&GXV#*Sv{l7orj?(Xh_KX$)h zABgbW4#6Lk_O3RP;`Y3_${LcuWN1r{d%m|QHPh0uHRG9_lT&3R^Rqm$vxw>S1tN!r>dTj!sbrEQxuToNV4 zxma$FJd36$*Q$=d!YNZ%R4lEi*vc(b?#E+Tl#FyA#Z(yFS${cSBs<>{h^IrVad9?g z2VdGKa2Xg)_mrIcCURk0Tb0ei560ruMJ~kDN%(r=dek}ak_d~58J`@O<~<~Wsar_P z*|?4rVO`tt1*+cgP~8{zQ+{RTw3RGv_nogR+I22f()TY1WRbV0YIL-cV;)@FcxkZr2keqW>hgQx%HW`m%N zOx55w`*j*SJG)Y*QhM^N-ad2;jMb5IbaY|Q$Yws8eA%RF^5++N78W$s415=z#GaE+ zeKvx|m~G~+o6UM%Id2Uvw@dh~t2GsPetO&E+#bs={Ai_b{^!?o_mcw>9}CQ>n0VK9 zDEUxI9y^Lj$FY2@CK#DKV`6xTL9(#a6@Pvje@8I0%DvW9(L_p0>YJ~yhQ>pxL1@ zPmFgB#M;|!C8j+!qbxTV%>Kx0?^18!(ROa#(J|x*6%}trY-8u(AQ_us#Tcv1XfsVL z#N&AJ_go9wqRc-gQNJJXk^ZOo^KcldW57W1T{^csV!1oZxOl>)4jTAX?ccf9nZ%%^m>gp1L zgE2{-(jGowB~F{ZC3SxFDY-Eb>uJWp*3?9|6*@_J$=;p1SIzHc&4;fOogI@8T)MMc z7?=p7=-Roz`0U_gZ)5ZElgF6{RU($2xw%k7U)KGH4{N@B!4g!UlZx$pXXCIWuPE1E zvt1`u_v%$q7GC|Y8DINy`fNNGmue*)xo9^^Q_~UcTBm0yyT1)Y<6&4$){2F`fB()` zS|^g$l{i08sKYP#V|BoI)mK#1&nNV9vTDEVgtCr-!sL+sq2PDN4fEnJnwY#_(>mi= z!`IS$e9|4#+xaYzDb0Q}zEngzGJQ%$c1Q5!a9!*Y`^_BlgvMS2t}P+X9%cv(9h+O} z>S9MU0VX-!)(ZK?cTO0tvfBkn*FrtcPwIY6*IXX=Bz!pNH0+4lIX-4(W%UU~rJK(& zm&6R#rzg{@cA%Xyu5jGy(trkBQjgSDl=R#3)5(d;pk=OJhlYlRot-uA#S5qH>GObq zcGq89yT`|a#$ntFcvatyHYdbvb)S9J@dvI(4MBDM0i6w!SK@Z>ir!3h7lv%_*gjY z&fPd~>v0I>BFrEwJIIrsR#Njbe1vmrVlp#aw48#i{AH48;dEW%5Ra=o`CUZ;TtAC)0fYPN5G<8JkD0QtPw#7x6Sre z-P^Zs_m{CzNbcRccaY`4-PW5Tl*r?3yKht=M}cF>`$k}=H7I`YW|%7mK9kdr(66ON zU78IS<{|jZ`}=5^#C-i9QFnqq@n66CW~HtRFgGUxb6-QoFme2B@$If)S$Vlmz1y*- zo|%@K+L+POf6cIT)ub_NkJWT7rJ9_TRl#W35h0F+Un?FO9}H#?R)4Mv{n1BQ(aBRg zSTsn2?jB*w%};#J$}V3*ld7nwSYZxdIo=83-*P`cDM!q7VM@vytkkSR@{^nAyYsEl zbfi*KiQ^kX>mvae)M$seG{?s`-d~stEo7Hj(wbC6JEaZplJzOsF_$j2Oojh@p{3<9_7Jo*H860a-E@H^`sT{B-Q6rHsSXd_^r zxCinxlrs8bjx4|oF&?sA7P-pG>&nmS_}-Zj^Rv3ZJA8kjR%+B952zTGWbjEa@F^zG zi)gjjv5XAE){vxwL{)X(!_oNjrRI%@L9(lg!F*4NjEin_gXX)u5T!1sA*d0a0Pq19Ob`2UhP^;tpWw=Hqjqmmq zH_(=>$L^XzNyx|m4olxxh_fZGdK2*BInky0N@cugNX5{=z`)=j3k%C9ro*PuCzq`} zr!Q~-HCEGeo$jiXkqF&P;ygVaFE0B-_hJzSt=ckvCscon0gK5cbn<S}K@S*2!%QFAvS@_@|@^<^S;EyxlF(z87zuY?*JGIH*T6XH$nv_38Y;DUPn?c1}r+1bR@R8%M=c1zvL4#Dsh z$xfi>HO9}4mBJ$CO7d{&1%eB*3k5f&6L%1yc>|q+<>>Iv+1cB|sC+Dq^~J^GF=M;P zhzIc5*N;Ie{3#p4j>Q#b_N0?k7(1v}z@zeSNc+9()mzk>|f{ zBIPJp7jEZDt8JlG76wHZ~S^_Ii(V z^+zTz9Ow|YeJib?AO*Hgnph7J@9T&JG_SpX7PpAJf~~6RYNPFG_wpM1k-UTiR)YrOJs>V z-#p8hWo}IFkBfW2I>^d+3JSGXW#XIq;_7M_ef>1}fE<~$*Ru?OV+Y^r1mM%j4_tn^ zWL4o~zmzkDZh*l5HC*^#*(fqHv~IIE zvN`@2HD#}FD{TTOv-`(`f$Z(^v5`vU<>lSo-IDKnmiIBx(YewhypeC$pF$BA3%0O~ zJf+6JeC9r4*h>Z%)C)Iu1&53u@wn`aWnNobJANFIFfx&BJyYM-)<(l_)haAr@Z0u| zjA&T|xol#db{!WD4Gjs&Ga(_NX*ug;b{<~%9wfncf9BEkK0f{(!9+fH$%dOZ`uqD& z#9HyFGpeiADR8Q*s&aC2?4MO3-tI-+h@?eDN@{qp(nm%{W@Tk{o0u;>nwabLkM8c^ zrrFVn33x7UD^_f7p31(MnVAV&(3ay9KC_XMvNBWa!u~P5CKgOkTvW7kc!*0Ys7xRa z4`pR#QBl!>Oqq_(&UD+CKY|P&G+dnIW@KatJW3vpii})cUB$)23oI9if05bT+Pd$= zvle^+P+00iaavzp`Xv%EXAn>X1iUgb zNTWLrcXugiX$^@kJ0&E8MDOrYFflQW6P(e6u)=VzJcXhquA-#0u(~?d;OWWEUYVNu z*tdBST1E)}MNCA*;N)bj%b}Us?3-)IY?k8(UF2dZuidF-9ki4Q|6PDQEuNhBbTwGitqQvlUM7J+g zEl%w^P|aktUmJuL)7dF)_QK8W>~y<<|MiMo)o1B=Cc}2?hI7%WkM))lY=Ytj1`7pR zHQ$<=n3Lw7b{b z;+E_=T90xwBmDgQSj~qmrm9)Fxm{QLGo+$uQmk(nuMqmxjh7j;g#m|vU6P)W0WC96 zy*xmjj%#O>oRWHcYpMn=t?Ao0TU%Sc^8-bG{suPxTk-mcuETZP>dnnitCj#UcF-rbySs~tiRlwMkR{vmiBqwFDzJZen2m)ceOu7l(lY47 zhsi3t<%PCzRFZ2q(J8>esj|z;6VsNT0PLVqlG({>W@!mShr6y*Y+%Cca)6~VZS>a& z4*|PA9MQ3>($vwJ`SRrpXp2W1V*?{2jwc7JottFkXa++Oduv0v03l>QaeTyLa@?8( z;dLAE%UtvO&blY&^lJJ-gRlhQ#*+BlQAh&u=#LH#(xapZVO_TekYS-Xz-73f9)<9o zyn8?eTTEA1x3jKy2?YHf7_%oE{z?`h@Q7?Exzs zD>XJZyKrZ?b^Yqm_WQ2R&dlctYjbmRuwj>$L}il3KTsZT>6j77!}Ya7v3965bdR8-KZawzHQ&{(e+t@s|5BiItfEwVf1 zjrZNqlW7kPTcJ8~eSa6_IuQ{O3^80R^c5(?2e>~So>EdjU}X?a`k7yF!JkAGHiSk< z+z1!jYxNr)Cg~xY#eHrEi$d+X?;r4=9NRn-nSI3pr2z)d`!cW^SJ9#rR9|_WPeSLC z{6x?gDEawk`uZ4ISYE@d3>peWF^Wh8A%+!N64}$Iy;23*b?u*EjRWees;O!H^Kf-` zwtxDf7#}CP1CVqYzqS-FM|*p_q_P`bbZ%iGeR<}liRw|fEE{bjnbK)kM02lINwpVe zU0E5+iM_4uUbcMN=t1ycodE`?I?RTs=y#aqv$HcY*~H1w(H|wl3W4FcK~1yZwUG1j zCQOq)dE%{2nu|Az{t|9=g$Ge}m*?hewwKs5luml1`BgY%`jnv9f`*JK2hm+lT0JL5nk25E*Y~tfJ#1u$<4q(3lupl8xsi;sE64GC6 zk9_v*8Qc)`J?LN11TaxhLUEJEwaYSXY-~1jKN>J~YE+C}wGb?)m&mb!Zj?v&^0_ti zO;Eys?((|*eg#@rLj%7ZCAw?d16vm8_Jo89pe#cV)v9r@++XUVF{dr(Q0przD|2&q zzjpO1omMsUW{0)G97NX}Ln~3Y-kob1+#Eoxikw$yEM8#%fYX8N&(6;N+MZc{#Q`fS zY=D`Swfy|_SD|`&JG9sD-;L(KGhWU`{4)y>l;nPdPtrU-&IL5-(W7JlWuVj@GFH_osZw-d)h>VPkjgQ}kntb+qw=;ubqlICC zf{Tj_aMQuBU$+4QaM~KYeEAdl&X|&#nGJg1TW@cu`RC{7pxcRt5E0(H$7bA3u%sP2 zJg*yG-h?cH<4fbO`txm8qDsHu|WC_tQonw`LA z8JDVeQCgc%+qk@sxNl#LggTX)@q61y~8^p&jF{djmC!i5hQ&Yp`O-)S+2?|CeAc!@? zSK8j>epnRnJR4{7Dh3s%?3@3WK?yGc?RvM^q@=F6z zSI}9L8C;mkxF03;0JM=a3AWA7&$oAQPsOJH{hR!6Q`2=}%KtcCqvgKKy-LvSW!CuZ+qdTdc{@c&$#D>B zkc)xx0S~abKo4IIT-mVYUQKugx>R_0IPTpw4A1R7zbxclOpp)p=rm)(!?Ew(6GcHq zM~9xXpCaUsqbtSX)y@+U+^ zMU^Nbd9k;^t_%wcyM=}Zi)e6Yh?kca`jeu90+>-*8-pm_DheqwNJvj-Z!rkqy$=os zK+49*h!2=UPcJpE3wjaA_a8od(A3fj3=9-eA^aB*KA@sCH$M+6$^P0=iDAe6ioXHx z3=dw1jZu(m06OpQ?E#=eM!(PCab|N95ndTOhEh9K2G<>sD%wlg{!(>kBP z>srypXE-XgAsILrZvhbE0T$LvQ`5FZTX#1%NhvAP(_r^7g*5rp)YQDZJh-V$nfR!W zA4%fg=V^yp@Tvt9@tRp%%hq{ZoK=B0Y+&&8&|Fx!8R~8<+FjCIIW-}1<*c%?y-qP= zyKp9gC+J!ND93<#z$3VE^~#~Snp$jPBGC($CV$H6-^poEccY)cpAI19XVk zm>B6KzPj{u;k*NYubyYStsT+y#^F>Q1s~1PnJ*X3N-ag=<%h?Flru)pP@_7pBUPir zp6iEJ>g?ijv^_J^)s>%}o$cNC_{kH;&2a=QkBzM|=}WzVb}v0MQ*w&t@nb!(EIBzj z>+9>mG09LNtr4et@;Z9fEs2v%-UWn~hpIdq$Ahevv_>Gj^%xg9eBGlF_YNtpwziGt!CC$)SS z{$0T%P=n?}_@T*xzzdKd&YgwLw8Lz(x|)laILQ|c4~mUV)nsF%0L=M=2M++em)frn zZ)|L2NJZ1BmH5;iADIn=ks@^KU;@stsHn`ev{JJnsvP%LCJD7Zz>S3X`1tqk zMFAxNcztqw+}CGt_;zqOyk%&pyr`%sHTA7aNOnrfGxqLCY85h>xaN`?{9BP+KB`0} z3XBBqsRpb$dHTY`M-e%SS;HeE#zsa84c}W^8!j(Sh5Ruy_!T}TC0#Bjd13

q`~s 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 JbOqyE{{xEA9G(CG literal 63577 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

luZ*&FzityXwb+TQySV<#fEJUA?gw z(!Re&`_BKMa*(rk=V5nqQYgc&7ZLdyc>B=`1u(Vg29Hk&69DHxBzlsZ71eSSZi5p9 zJ4;sQl{i}ZjAIu=h?f*>jir50zEteNbfN1YkpYf{AkN;NrKP3uBQUZ4$;FBkRV~8X zB4NU`G&O7M>gqtKgCAGdCtO^162s%;3EmrXbAmeYxfODYTVG!{HhKfI09yv?CdlT{ zaT_E-k*3V2)&!{T=2in#*#Up8N|e4K&0-z07h5n@kV35XJhE3-MgYKq9s{6GT3Q

U@3s! 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 y`E4NfgZH_AY+nEWAO8OX@doqyzqt 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 literal 0 HcmV?d00001 diff --git a/frontend/__snapshots__/scenes-app-max-ai--thread-with-failed-generation--light.png b/frontend/__snapshots__/scenes-app-max-ai--thread-with-failed-generation--light.png new file mode 100644 index 0000000000000000000000000000000000000000..da0efa6c70d732c85004dbc02fbd7c3375fa723d GIT binary patch literal 16249 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 literal 0 HcmV?d00001 diff --git a/frontend/src/queries/schema.json b/frontend/src/queries/schema.json index 757097fa12025..5c28b52cf14e1 100644 --- a/frontend/src/queries/schema.json +++ b/frontend/src/queries/schema.json @@ -617,6 +617,24 @@ } ] }, + "AssistantEventType": { + "enum": ["status", "message"], + "type": "string" + }, + "AssistantGenerationStatusEvent": { + "additionalProperties": false, + "properties": { + "type": { + "$ref": "#/definitions/AssistantGenerationStatusType" + } + }, + "required": ["type"], + "type": "object" + }, + "AssistantGenerationStatusType": { + "enum": ["ack", "generation_error"], + "type": "string" + }, "AssistantMessage": { "additionalProperties": false, "properties": { @@ -632,7 +650,7 @@ "type": "object" }, "AssistantMessageType": { - "enum": ["human", "ai", "ai/viz"], + "enum": ["human", "ai", "ai/viz", "ai/failure"], "type": "string" }, "AutocompleteCompletionItem": { @@ -5534,6 +5552,20 @@ "required": ["kind", "series"], "type": "object" }, + "FailureMessage": { + "additionalProperties": false, + "properties": { + "content": { + "type": "string" + }, + "type": { + "const": "ai/failure", + "type": "string" + } + }, + "required": ["type"], + "type": "object" + }, "FeaturePropertyFilter": { "additionalProperties": false, "properties": { @@ -10875,6 +10907,9 @@ }, { "$ref": "#/definitions/HumanMessage" + }, + { + "$ref": "#/definitions/FailureMessage" } ] }, diff --git a/frontend/src/queries/schema.ts b/frontend/src/queries/schema.ts index 8fb58464d3ce4..993b393eb7fd3 100644 --- a/frontend/src/queries/schema.ts +++ b/frontend/src/queries/schema.ts @@ -2101,6 +2101,7 @@ export enum AssistantMessageType { Human = 'human', Assistant = 'ai', Visualization = 'ai/viz', + Failure = 'ai/failure', } export interface HumanMessage { @@ -2120,4 +2121,23 @@ export interface VisualizationMessage { answer?: ExperimentalAITrendsQuery } -export type RootAssistantMessage = VisualizationMessage | AssistantMessage | HumanMessage +export interface FailureMessage { + type: AssistantMessageType.Failure + content?: string +} + +export type RootAssistantMessage = VisualizationMessage | AssistantMessage | HumanMessage | FailureMessage + +export enum AssistantEventType { + Status = 'status', + Message = 'message', +} + +export enum AssistantGenerationStatusType { + Acknowledged = 'ack', + GenerationError = 'generation_error', +} + +export interface AssistantGenerationStatusEvent { + type: AssistantGenerationStatusType +} diff --git a/frontend/src/scenes/max/Max.stories.tsx b/frontend/src/scenes/max/Max.stories.tsx index 27045963c6e42..88ffe32ea7559 100644 --- a/frontend/src/scenes/max/Max.stories.tsx +++ b/frontend/src/scenes/max/Max.stories.tsx @@ -1,10 +1,10 @@ import { Meta, StoryFn } from '@storybook/react' -import { BindLogic, useActions } from 'kea' +import { BindLogic, useActions, useValues } from 'kea' import { useEffect } from 'react' import { mswDecorator, useStorybookMocks } from '~/mocks/browser' -import { chatResponseChunk } from './__mocks__/chatResponse.mocks' +import { chatResponseChunk, failureChunk, generationFailureChunk } from './__mocks__/chatResponse.mocks' import { MaxInstance } from './Max' import { maxLogic } from './maxLogic' @@ -104,3 +104,43 @@ EmptyThreadLoading.parameters = { waitForLoadersToDisappear: false, }, } + +export const GenerationFailureThread: StoryFn = () => { + useStorybookMocks({ + post: { + '/api/environments/:team_id/query/chat/': (_, res, ctx) => res(ctx.text(generationFailureChunk)), + }, + }) + + const sessionId = 'd210b263-8521-4c5b-b3c4-8e0348df574b' + + const { askMax, setMessageStatus } = useActions(maxLogic({ sessionId })) + const { thread, threadLoading } = useValues(maxLogic({ sessionId })) + useEffect(() => { + askMax('What are my most popular pages?') + }, []) + useEffect(() => { + if (thread.length === 2 && !threadLoading) { + setMessageStatus(1, 'error') + } + }, [thread.length, threadLoading]) + + return