From 2a3e9efa8e992c78492a515957edef448aa5180e Mon Sep 17 00:00:00 2001 From: Georgiy Tarasov Date: Wed, 23 Oct 2024 13:12:06 +0200 Subject: [PATCH 01/26] feat: new mode --- posthog/clickhouse/client/execute_async.py | 16 ++++---- posthog/hogql_queries/query_runner.py | 31 +++++++++------- .../hogql_queries/test/test_query_runner.py | 37 +++++++++++++++++++ 3 files changed, 62 insertions(+), 22 deletions(-) diff --git a/posthog/clickhouse/client/execute_async.py b/posthog/clickhouse/client/execute_async.py index 8c7fa9cdfaec5..bf85bba7e4393 100644 --- a/posthog/clickhouse/client/execute_async.py +++ b/posthog/clickhouse/client/execute_async.py @@ -1,24 +1,22 @@ import datetime - -import orjson as json -from typing import TYPE_CHECKING, Optional import uuid +from typing import TYPE_CHECKING, Optional -from pydantic import BaseModel +import orjson as json import sentry_sdk import structlog from prometheus_client import Histogram -from rest_framework.exceptions import NotFound, APIException +from pydantic import BaseModel +from rest_framework.exceptions import APIException, NotFound from posthog import celery, redis from posthog.clickhouse.client.async_task_chain import add_task_to_on_commit from posthog.clickhouse.query_tagging import tag_queries -from posthog.errors import ExposedCHQueryError, CHQueryErrorTooManySimultaneousQueries +from posthog.errors import CHQueryErrorTooManySimultaneousQueries, ExposedCHQueryError from posthog.hogql.constants import LimitContext from posthog.hogql.errors import ExposedHogQLError from posthog.renderers import SafeJSONRenderer -from posthog.schema import QueryStatus -from posthog.schema import ClickhouseQueryProgress +from posthog.schema import ClickhouseQueryProgress, QueryStatus from posthog.tasks.tasks import process_query_task if TYPE_CHECKING: @@ -143,7 +141,7 @@ def execute_process_query( ): manager = QueryStatusManager(query_id, team_id) - from posthog.api.services.query import process_query_dict, ExecutionMode + from posthog.api.services.query import ExecutionMode, process_query_dict from posthog.models import Team from posthog.models.user import User diff --git a/posthog/hogql_queries/query_runner.py b/posthog/hogql_queries/query_runner.py index 664430cc7da04..16c7d04ec2946 100644 --- a/posthog/hogql_queries/query_runner.py +++ b/posthog/hogql_queries/query_runner.py @@ -1,19 +1,20 @@ from abc import ABC, abstractmethod -from datetime import datetime, timedelta, UTC +from datetime import UTC, datetime, timedelta from enum import StrEnum -from typing import Any, Generic, Optional, TypeVar, Union, cast, TypeGuard +from typing import Any, Generic, Optional, TypeGuard, TypeVar, Union, cast import structlog from prometheus_client import Counter from pydantic import BaseModel, ConfigDict -from sentry_sdk import capture_exception, push_scope, set_tag, get_traceparent +from sentry_sdk import capture_exception, get_traceparent, push_scope, set_tag -from posthog.caching.utils import is_stale, ThresholdMode, cache_target_age, last_refresh_from_cached_result -from posthog.clickhouse.client.execute_async import enqueue_process_query_task, get_query_status, QueryNotFoundError -from posthog.clickhouse.query_tagging import tag_queries, get_query_tag_value +from posthog.caching.utils import ThresholdMode, cache_target_age, is_stale, last_refresh_from_cached_result +from posthog.clickhouse.client.execute_async import QueryNotFoundError, enqueue_process_query_task, get_query_status +from posthog.clickhouse.query_tagging import get_query_tag_value, tag_queries from posthog.hogql import ast from posthog.hogql.constants import LimitContext from posthog.hogql.context import HogQLContext +from posthog.hogql.modifiers import create_default_modifiers_for_user from posthog.hogql.printer import print_ast from posthog.hogql.query import create_default_modifiers_for_team from posthog.hogql.timings import HogQLTimings @@ -31,6 +32,7 @@ FunnelCorrelationQuery, FunnelsActorsQuery, FunnelsQuery, + GenericCachedQueryResponse, HogQLQuery, HogQLQueryModifiers, HogQLVariable, @@ -40,25 +42,23 @@ PathsQuery, PropertyGroupFilter, PropertyGroupFilterValue, + QueryStatus, + QueryStatusResponse, QueryTiming, RetentionQuery, SamplingRate, + SessionAttributionExplorerQuery, SessionsTimelineQuery, StickinessQuery, SuggestedQuestionsQuery, TrendsQuery, + WebGoalsQuery, WebOverviewQuery, WebStatsTableQuery, WebTopClicksQuery, - QueryStatusResponse, - GenericCachedQueryResponse, - QueryStatus, - SessionAttributionExplorerQuery, - WebGoalsQuery, ) from posthog.schema_helpers import to_dict, to_json from posthog.utils import generate_cache_key, get_from_dict_or_attr -from posthog.hogql.modifiers import create_default_modifiers_for_user logger = structlog.get_logger(__name__) @@ -90,6 +90,8 @@ class ExecutionMode(StrEnum): """Use cache for longer, kick off async calculation when results are missing or stale.""" CACHE_ONLY_NEVER_CALCULATE = "force_cache" """Do not initiate calculation.""" + RECENT_CACHE_CALCULATE_ASYNC_IF_STALE_AND_BLOCKING_ON_MISS = "async_except_on_cache_miss" + """Use cache, kick off async calculation when results are stale, but block on cache miss.""" _REFRESH_TO_EXECUTION_MODE: dict[str | bool, ExecutionMode] = { @@ -555,7 +557,10 @@ def handle_cache_and_async_logic( if execution_mode == ExecutionMode.CACHE_ONLY_NEVER_CALCULATE: cached_response.query_status = self.get_async_query_status(cache_key=cache_manager.cache_key) return cached_response - elif execution_mode == ExecutionMode.RECENT_CACHE_CALCULATE_ASYNC_IF_STALE: + elif execution_mode in ( + ExecutionMode.RECENT_CACHE_CALCULATE_ASYNC_IF_STALE, + ExecutionMode.RECENT_CACHE_CALCULATE_ASYNC_IF_STALE_AND_BLOCKING_ON_MISS, + ): # We're allowed to calculate, but we'll do it asynchronously and attach the query status cached_response.query_status = self.enqueue_async_calculation( cache_manager=cache_manager, user=user, refresh_requested=True diff --git a/posthog/hogql_queries/test/test_query_runner.py b/posthog/hogql_queries/test/test_query_runner.py index 927930dad2da0..b1c46af92a9e1 100644 --- a/posthog/hogql_queries/test/test_query_runner.py +++ b/posthog/hogql_queries/test/test_query_runner.py @@ -206,6 +206,43 @@ def test_cache_response(self, mock_on_commit): self.assertEqual(response.is_cached, True) mock_on_commit.assert_called_once() + @mock.patch("django.db.transaction.on_commit") + def test_recent_cache_calculate_async_if_stale_and_blocking_on_miss(self, mock_on_commit): + TestQueryRunner = self.setup_test_query_runner_class() + + runner = TestQueryRunner(query={"some_attr": "bla"}, team=self.team) + + with freeze_time(datetime(2023, 2, 4, 13, 37, 42)): + # in cache-only mode, returns cache miss response if uncached + response = runner.run(execution_mode=ExecutionMode.CACHE_ONLY_NEVER_CALCULATE) + self.assertIsInstance(response, CacheMissResponse) + + response = runner.run( + execution_mode=ExecutionMode.RECENT_CACHE_CALCULATE_ASYNC_IF_STALE_AND_BLOCKING_ON_MISS + ) + self.assertIsInstance(response, TestCachedBasicQueryResponse) + self.assertEqual(response.is_cached, False) + self.assertEqual(response.last_refresh.isoformat(), "2023-02-04T13:37:42+00:00") + self.assertEqual(response.next_allowed_client_refresh.isoformat(), "2023-02-04T13:41:42+00:00") + + # returns cached response afterwards + response = runner.run( + execution_mode=ExecutionMode.RECENT_CACHE_CALCULATE_ASYNC_IF_STALE_AND_BLOCKING_ON_MISS + ) + self.assertIsInstance(response, TestCachedBasicQueryResponse) + self.assertEqual(response.is_cached, True) + + with freeze_time(datetime(2023, 2, 4, 13, 37 + 11, 42)): + # returns fresh response if stale + response = runner.run( + execution_mode=ExecutionMode.RECENT_CACHE_CALCULATE_ASYNC_IF_STALE_AND_BLOCKING_ON_MISS + ) + self.assertIsInstance(response, TestCachedBasicQueryResponse) + # Should kick off the calculation in the background + self.assertEqual(response.is_cached, True) + self.assertEqual(response.last_refresh.isoformat(), "2023-02-04T13:37:42+00:00") + mock_on_commit.assert_called_once() + def test_modifier_passthrough(self): try: from ee.clickhouse.materialized_columns.analyze import materialize From 1a819d1ccd5c9e4f64954ef12343d368909c8e41 Mon Sep 17 00:00:00 2001 From: Georgiy Tarasov Date: Wed, 23 Oct 2024 13:28:24 +0200 Subject: [PATCH 02/26] feat: ai queries in tasks --- frontend/src/queries/schema.json | 108 ++++++++++++++++++++++++++ frontend/src/queries/schema.ts | 3 + posthog/hogql_queries/query_runner.py | 33 ++++++++ posthog/schema.py | 78 +++++++++++++++++++ 4 files changed, 222 insertions(+) diff --git a/frontend/src/queries/schema.json b/frontend/src/queries/schema.json index c243cf67ba628..1dc8acd083c3a 100644 --- a/frontend/src/queries/schema.json +++ b/frontend/src/queries/schema.json @@ -9932,6 +9932,105 @@ }, "required": ["questions"], "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "error": { + "description": "Query error. Returned only if 'explain' or `modifiers.debug` is true. Throws an error otherwise.", + "type": "string" + }, + "hogql": { + "description": "Generated HogQL query.", + "type": "string" + }, + "modifiers": { + "$ref": "#/definitions/HogQLQueryModifiers", + "description": "Modifiers used when performing the query" + }, + "query_status": { + "$ref": "#/definitions/QueryStatus", + "description": "Query status indicates whether next to the provided data, a query is still running." + }, + "results": { + "$ref": "#/definitions/TeamTaxonomyResponse" + }, + "timings": { + "description": "Measured timings for different parts of the query generation process", + "items": { + "$ref": "#/definitions/QueryTiming" + }, + "type": "array" + } + }, + "required": ["results"], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "error": { + "description": "Query error. Returned only if 'explain' or `modifiers.debug` is true. Throws an error otherwise.", + "type": "string" + }, + "hogql": { + "description": "Generated HogQL query.", + "type": "string" + }, + "modifiers": { + "$ref": "#/definitions/HogQLQueryModifiers", + "description": "Modifiers used when performing the query" + }, + "query_status": { + "$ref": "#/definitions/QueryStatus", + "description": "Query status indicates whether next to the provided data, a query is still running." + }, + "results": { + "$ref": "#/definitions/EventTaxonomyResponse" + }, + "timings": { + "description": "Measured timings for different parts of the query generation process", + "items": { + "$ref": "#/definitions/QueryTiming" + }, + "type": "array" + } + }, + "required": ["results"], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "error": { + "description": "Query error. Returned only if 'explain' or `modifiers.debug` is true. Throws an error otherwise.", + "type": "string" + }, + "hogql": { + "description": "Generated HogQL query.", + "type": "string" + }, + "modifiers": { + "$ref": "#/definitions/HogQLQueryModifiers", + "description": "Modifiers used when performing the query" + }, + "query_status": { + "$ref": "#/definitions/QueryStatus", + "description": "Query status indicates whether next to the provided data, a query is still running." + }, + "results": { + "$ref": "#/definitions/ActorsPropertyTaxonomyResponse" + }, + "timings": { + "description": "Measured timings for different parts of the query generation process", + "items": { + "$ref": "#/definitions/QueryTiming" + }, + "type": "array" + } + }, + "required": ["results"], + "type": "object" } ] }, @@ -10044,6 +10143,15 @@ }, { "$ref": "#/definitions/SuggestedQuestionsQuery" + }, + { + "$ref": "#/definitions/TeamTaxonomyQuery" + }, + { + "$ref": "#/definitions/EventTaxonomyQuery" + }, + { + "$ref": "#/definitions/ActorsPropertyTaxonomyQuery" } ], "required": ["kind"], diff --git a/frontend/src/queries/schema.ts b/frontend/src/queries/schema.ts index 92b6d52f251db..8cbc8094cf376 100644 --- a/frontend/src/queries/schema.ts +++ b/frontend/src/queries/schema.ts @@ -184,6 +184,9 @@ export type QuerySchema = // AI | SuggestedQuestionsQuery + | TeamTaxonomyQuery + | EventTaxonomyQuery + | ActorsPropertyTaxonomyQuery // Keep this, because QuerySchema itself will be collapsed as it is used in other models export type QuerySchemaRoot = QuerySchema diff --git a/posthog/hogql_queries/query_runner.py b/posthog/hogql_queries/query_runner.py index 16c7d04ec2946..40918e51b5e97 100644 --- a/posthog/hogql_queries/query_runner.py +++ b/posthog/hogql_queries/query_runner.py @@ -22,11 +22,13 @@ from posthog.metrics import LABEL_TEAM_ID from posthog.models import Team, User from posthog.schema import ( + ActorsPropertyTaxonomyQuery, ActorsQuery, CacheMissResponse, DashboardFilter, DateRange, EventsQuery, + EventTaxonomyQuery, FilterLogicalOperator, FunnelCorrelationActorsQuery, FunnelCorrelationQuery, @@ -51,6 +53,7 @@ SessionsTimelineQuery, StickinessQuery, SuggestedQuestionsQuery, + TeamTaxonomyQuery, TrendsQuery, WebGoalsQuery, WebOverviewQuery, @@ -399,6 +402,36 @@ def get_query_runner( limit_context=limit_context, modifiers=modifiers, ) + if kind == "TeamTaxonomyQuery": + from .ai.team_taxonomy_query_runner import TeamTaxonomyQueryRunner + + return TeamTaxonomyQueryRunner( + query=cast(TeamTaxonomyQuery | dict[str, Any], query), + team=team, + timings=timings, + limit_context=limit_context, + modifiers=modifiers, + ) + if kind == "EventTaxonomyQuery": + from .ai.event_taxonomy_query_runner import EventTaxonomyQueryRunner + + return EventTaxonomyQueryRunner( + query=cast(EventTaxonomyQuery | dict[str, Any], query), + team=team, + timings=timings, + limit_context=limit_context, + modifiers=modifiers, + ) + if kind == "ActorsPropertyTaxonomyQuery": + from .ai.actors_property_taxonomy_query_runner import ActorsPropertyTaxonomyQueryRunner + + return ActorsPropertyTaxonomyQueryRunner( + query=cast(ActorsPropertyTaxonomyQuery | dict[str, Any], query), + team=team, + timings=timings, + limit_context=limit_context, + modifiers=modifiers, + ) raise ValueError(f"Can't get a runner for an unknown query kind: {kind}") diff --git a/posthog/schema.py b/posthog/schema.py index b77997f9f74f5..c9d792fd751ed 100644 --- a/posthog/schema.py +++ b/posthog/schema.py @@ -3810,6 +3810,69 @@ class QueryResponseAlternative36(BaseModel): types: Optional[list] = None +class QueryResponseAlternative39(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + error: Optional[str] = Field( + default=None, + description="Query error. Returned only if 'explain' or `modifiers.debug` is true. Throws an error otherwise.", + ) + hogql: Optional[str] = Field(default=None, description="Generated HogQL query.") + modifiers: Optional[HogQLQueryModifiers] = Field( + default=None, description="Modifiers used when performing the query" + ) + query_status: Optional[QueryStatus] = Field( + default=None, description="Query status indicates whether next to the provided data, a query is still running." + ) + results: list[TeamTaxonomyItem] + timings: Optional[list[QueryTiming]] = Field( + default=None, description="Measured timings for different parts of the query generation process" + ) + + +class QueryResponseAlternative40(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + error: Optional[str] = Field( + default=None, + description="Query error. Returned only if 'explain' or `modifiers.debug` is true. Throws an error otherwise.", + ) + hogql: Optional[str] = Field(default=None, description="Generated HogQL query.") + modifiers: Optional[HogQLQueryModifiers] = Field( + default=None, description="Modifiers used when performing the query" + ) + query_status: Optional[QueryStatus] = Field( + default=None, description="Query status indicates whether next to the provided data, a query is still running." + ) + results: list[EventTaxonomyItem] + timings: Optional[list[QueryTiming]] = Field( + default=None, description="Measured timings for different parts of the query generation process" + ) + + +class QueryResponseAlternative41(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + error: Optional[str] = Field( + default=None, + description="Query error. Returned only if 'explain' or `modifiers.debug` is true. Throws an error otherwise.", + ) + hogql: Optional[str] = Field(default=None, description="Generated HogQL query.") + modifiers: Optional[HogQLQueryModifiers] = Field( + default=None, description="Modifiers used when performing the query" + ) + query_status: Optional[QueryStatus] = Field( + default=None, description="Query status indicates whether next to the provided data, a query is still running." + ) + results: ActorsPropertyTaxonomyResponse + timings: Optional[list[QueryTiming]] = Field( + default=None, description="Measured timings for different parts of the query generation process" + ) + + class RetentionFilter(BaseModel): model_config = ConfigDict( extra="forbid", @@ -5872,6 +5935,9 @@ class QueryResponseAlternative( QueryResponseAlternative36, QueryResponseAlternative37, QueryResponseAlternative38, + QueryResponseAlternative39, + QueryResponseAlternative40, + QueryResponseAlternative41, ] ] ): @@ -5912,6 +5978,9 @@ class QueryResponseAlternative( QueryResponseAlternative36, QueryResponseAlternative37, QueryResponseAlternative38, + QueryResponseAlternative39, + QueryResponseAlternative40, + QueryResponseAlternative41, ] @@ -6401,6 +6470,9 @@ class QueryRequest(BaseModel): FunnelCorrelationQuery, DatabaseSchemaQuery, SuggestedQuestionsQuery, + TeamTaxonomyQuery, + EventTaxonomyQuery, + ActorsPropertyTaxonomyQuery, ] = Field( ..., description=( @@ -6466,6 +6538,9 @@ class QuerySchemaRoot( FunnelCorrelationQuery, DatabaseSchemaQuery, SuggestedQuestionsQuery, + TeamTaxonomyQuery, + EventTaxonomyQuery, + ActorsPropertyTaxonomyQuery, ] ] ): @@ -6505,6 +6580,9 @@ class QuerySchemaRoot( FunnelCorrelationQuery, DatabaseSchemaQuery, SuggestedQuestionsQuery, + TeamTaxonomyQuery, + EventTaxonomyQuery, + ActorsPropertyTaxonomyQuery, ] = Field(..., discriminator="kind") From 7409fb528ea8ae93e3a3b26d3b50f9165c4774aa Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 23 Oct 2024 11:54:21 +0000 Subject: [PATCH 03/26] Update UI snapshots for `chromium` (1) --- ...er--trends-line-insight-detailed--dark.png | Bin 21655 -> 21701 bytes ...r--trends-line-insight-detailed--light.png | Bin 21344 -> 21385 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/frontend/__snapshots__/exporter-exporter--trends-line-insight-detailed--dark.png b/frontend/__snapshots__/exporter-exporter--trends-line-insight-detailed--dark.png index e3e93b3dd9678360493d495ab090800a9f994b6f..b54d4facb0bfe8353e19863b17eee837e4aab6c0 100644 GIT binary patch literal 21701 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 RdnN$nb5B=4mvv4FO#tji&>jE) literal 21655 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 From e6a6c3d730213c38f78d394c7ad140d3067266ae Mon Sep 17 00:00:00 2001 From: Michael Matloka Date: Thu, 24 Oct 2024 19:00:53 +0200 Subject: [PATCH 04/26] Move `ExecutionMode` to `schema.{ts,py}` --- frontend/src/lib/api.ts | 10 ++-- frontend/src/queries/query.ts | 10 +++- frontend/src/queries/schema.json | 53 ++++++++----------- frontend/src/queries/schema.ts | 27 ++++++---- .../src/scenes/dashboard/dashboardLogic.tsx | 8 +-- frontend/src/scenes/insights/utils/api.ts | 4 +- posthog/hogql_queries/query_runner.py | 20 +------ posthog/schema.py | 14 ++++- 8 files changed, 70 insertions(+), 76 deletions(-) diff --git a/frontend/src/lib/api.ts b/frontend/src/lib/api.ts index 31933112d7b9a..3c76aa6050eac 100644 --- a/frontend/src/lib/api.ts +++ b/frontend/src/lib/api.ts @@ -15,13 +15,13 @@ import { DashboardFilter, DatabaseSerializedFieldType, ErrorTrackingGroup, + ExecutionMode, HogCompileResponse, HogQLVariable, QuerySchema, QueryStatusResponse, RecordingsQuery, RecordingsQueryResponse, - RefreshType, } from '~/queries/schema' import { ActionType, @@ -965,7 +965,7 @@ const api = { loadInsight( shortId: InsightModel['short_id'], basic?: boolean, - refresh?: RefreshType, + refresh?: ExecutionMode | boolean, filtersOverride?: DashboardFilter | null, variablesOverride?: Record | null ): Promise>> { @@ -2443,8 +2443,7 @@ const api = { query: T, options?: ApiMethodOptions, queryId?: string, - refresh?: boolean, - async?: boolean, + executionMode?: ExecutionMode | boolean, filtersOverride?: DashboardFilter | null, variablesOverride?: Record | null ): Promise< @@ -2454,13 +2453,12 @@ const api = { : T['response'] : Record > { - const refreshParam: RefreshType | undefined = refresh && async ? 'force_async' : async ? 'async' : refresh return await new ApiRequest().query().create({ ...options, data: { query, client_query_id: queryId, - refresh: refreshParam, + refresh: executionMode, filters_override: filtersOverride, variables_override: variablesOverride, }, diff --git a/frontend/src/queries/query.ts b/frontend/src/queries/query.ts index 1952432e3607f..6c4d3a85413ff 100644 --- a/frontend/src/queries/query.ts +++ b/frontend/src/queries/query.ts @@ -9,6 +9,7 @@ import { OnlineExportContext, QueryExportContext } from '~/types' import { DashboardFilter, DataNode, + ExecutionMode, HogQLQuery, HogQLQueryResponse, HogQLVariable, @@ -101,12 +102,17 @@ async function executeQuery( !!featureFlagLogic.findMounted()?.values.featureFlags?.[FEATURE_FLAGS.QUERY_ASYNC] if (!pollOnly) { + const executionMode: ExecutionMode | boolean | undefined = + refresh && isAsyncQuery + ? ExecutionMode.CALCULATE_ASYNC_ALWAYS + : isAsyncQuery + ? ExecutionMode.RECENT_CACHE_CALCULATE_ASYNC_IF_STALE + : refresh const response = await api.query( queryNode, methodOptions, queryId, - refresh, - isAsyncQuery, + executionMode, filtersOverride, variablesOverride ) diff --git a/frontend/src/queries/schema.json b/frontend/src/queries/schema.json index 1dc8acd083c3a..3aadcdc2d0faa 100644 --- a/frontend/src/queries/schema.json +++ b/frontend/src/queries/schema.json @@ -5128,6 +5128,19 @@ "required": ["columns", "hogql", "results", "types"], "type": "object" }, + "ExecutionMode": { + "description": "Query exeuctio mode.", + "enum": [ + "force_blocking", + "force_async", + "blocking", + "async", + "lazy_async", + "force_cache", + "async_except_on_cache_miss" + ], + "type": "string" + }, "ExperimentFunnelsQuery": { "additionalProperties": false, "properties": { @@ -8097,7 +8110,14 @@ "description": "Submit a JSON string representing a query for PostHog data analysis, for example a HogQL query.\n\nExample payload:\n\n```\n\n{\"query\": {\"kind\": \"HogQLQuery\", \"query\": \"select * from events limit 100\"}}\n\n```\n\nFor more details on HogQL queries, see the [PostHog HogQL documentation](/docs/hogql#api-access)." }, "refresh": { - "$ref": "#/definitions/RefreshType", + "anyOf": [ + { + "$ref": "#/definitions/ExecutionMode" + }, + { + "type": "boolean" + } + ], "default": "blocking", "description": "Whether results should be calculated sync or async, and how much to rely on the cache:\n- `'blocking'` - calculate synchronously (returning only when the query is done), UNLESS there are very fresh results in the cache\n- `'async'` - kick off background calculation (returning immediately with a query status), UNLESS there are very fresh results in the cache\n- `'lazy_async'` - kick off background calculation, UNLESS there are somewhat fresh results in the cache\n- `'force_blocking'` - calculate synchronously, even if fresh results are already cached\n- `'force_async'` - kick off background calculation, even if fresh results are already cached\n- `'force_cache'` - return cached data or a cache miss; always completes immediately as it never calculates Background calculation can be tracked using the `query_status` response field." }, @@ -10416,37 +10436,6 @@ "required": ["results", "has_next"], "type": "object" }, - "RefreshType": { - "anyOf": [ - { - "type": "boolean" - }, - { - "const": "async", - "type": "string" - }, - { - "const": "blocking", - "type": "string" - }, - { - "const": "force_async", - "type": "string" - }, - { - "const": "force_blocking", - "type": "string" - }, - { - "const": "force_cache", - "type": "string" - }, - { - "const": "lazy_async", - "type": "string" - } - ] - }, "RetentionEntity": { "additionalProperties": false, "properties": { diff --git a/frontend/src/queries/schema.ts b/frontend/src/queries/schema.ts index 8cbc8094cf376..34ef5d36c4812 100644 --- a/frontend/src/queries/schema.ts +++ b/frontend/src/queries/schema.ts @@ -1183,14 +1183,23 @@ export type LifecycleFilter = { showLegend?: LifecycleFilterLegacy['show_legend'] } -export type RefreshType = - | boolean - | 'async' - | 'blocking' - | 'force_async' - | 'force_blocking' - | 'force_cache' - | 'lazy_async' +/** Query exeuctio mode. */ +export enum ExecutionMode { + /** Always recalculate. */ + CALCULATE_BLOCKING_ALWAYS = 'force_blocking', + /** Always kick off async calculation. */ + CALCULATE_ASYNC_ALWAYS = 'force_async', + /** Use cache, unless the results are missing or stale. */ + RECENT_CACHE_CALCULATE_BLOCKING_IF_STALE = 'blocking', + /** Use cache, kick off async calculation when results are missing or stale. */ + RECENT_CACHE_CALCULATE_ASYNC_IF_STALE = 'async', + /** Use cache for longer, kick off async calculation when results are missing or stale. */ + EXTENDED_CACHE_CALCULATE_ASYNC_IF_STALE = 'lazy_async', + /** Do not initiate calculation. */ + CACHE_ONLY_NEVER_CALCULATE = 'force_cache', + /** Use cache, kick off async calculation when results are stale, but block on cache miss. */ + RECENT_CACHE_CALCULATE_ASYNC_IF_STALE_AND_BLOCKING_ON_MISS = 'async_except_on_cache_miss', +} export interface QueryRequest { /** Client provided query ID. Can be used to retrieve the status or cancel the query. */ @@ -1207,7 +1216,7 @@ export interface QueryRequest { * Background calculation can be tracked using the `query_status` response field. * @default 'blocking' */ - refresh?: RefreshType + refresh?: ExecutionMode | boolean /** @deprecated Use `refresh` instead. */ async?: boolean /** diff --git a/frontend/src/scenes/dashboard/dashboardLogic.tsx b/frontend/src/scenes/dashboard/dashboardLogic.tsx index 4addf1f04f4c0..13a8bc5d0065e 100644 --- a/frontend/src/scenes/dashboard/dashboardLogic.tsx +++ b/frontend/src/scenes/dashboard/dashboardLogic.tsx @@ -36,7 +36,7 @@ import { variableDataLogic } from '~/queries/nodes/DataVisualization/Components/ import { Variable } from '~/queries/nodes/DataVisualization/types' import { getQueryBasedDashboard, getQueryBasedInsightModel } from '~/queries/nodes/InsightViz/utils' import { pollForResults } from '~/queries/query' -import { DashboardFilter, DataVisualizationNode, HogQLVariable, NodeKind, RefreshType } from '~/queries/schema' +import { DashboardFilter, DataVisualizationNode, ExecutionMode, HogQLVariable, NodeKind } from '~/queries/schema' import { AnyPropertyFilter, Breadcrumb, @@ -140,7 +140,7 @@ async function getSingleInsight( insight: QueryBasedInsightModel, dashboardId: number, queryId: string, - refresh: RefreshType, + refresh: ExecutionMode | boolean, methodOptions?: ApiMethodOptions, filtersOverride?: DashboardFilter, variablesOverride?: Record @@ -176,7 +176,7 @@ export const dashboardLogic = kea([ actions(({ values }) => ({ loadDashboard: (payload: { - refresh?: RefreshType + refresh?: ExecutionMode | boolean action: | 'initial_load' | 'update' @@ -828,7 +828,7 @@ export const dashboardLogic = kea([ () => [(_, props) => props.id], (id) => { return ( - refresh?: RefreshType, + refresh?: ExecutionMode | boolean, filtersOverride?: DashboardFilter, variablesOverride?: Record ) => diff --git a/frontend/src/scenes/insights/utils/api.ts b/frontend/src/scenes/insights/utils/api.ts index 2d85cc71f702c..5e4d1ac5e38d5 100644 --- a/frontend/src/scenes/insights/utils/api.ts +++ b/frontend/src/scenes/insights/utils/api.ts @@ -1,7 +1,7 @@ import api from 'lib/api' import { getQueryBasedInsightModel } from '~/queries/nodes/InsightViz/utils' -import { DashboardFilter, HogQLVariable, RefreshType } from '~/queries/schema' +import { DashboardFilter, ExecutionMode, HogQLVariable } from '~/queries/schema' import { InsightShortId, QueryBasedInsightModel } from '~/types' async function _perform( @@ -19,7 +19,7 @@ export const insightsApi = { async getByShortId( shortId: InsightShortId, basic?: boolean, - refresh?: RefreshType, + refresh?: ExecutionMode | boolean, filtersOverride?: DashboardFilter | null, variablesOverride?: Record | null ): Promise { diff --git a/posthog/hogql_queries/query_runner.py b/posthog/hogql_queries/query_runner.py index 40918e51b5e97..dc1b50e87dc8a 100644 --- a/posthog/hogql_queries/query_runner.py +++ b/posthog/hogql_queries/query_runner.py @@ -1,6 +1,5 @@ from abc import ABC, abstractmethod from datetime import UTC, datetime, timedelta -from enum import StrEnum from typing import Any, Generic, Optional, TypeGuard, TypeVar, Union, cast import structlog @@ -29,6 +28,7 @@ DateRange, EventsQuery, EventTaxonomyQuery, + ExecutionMode, FilterLogicalOperator, FunnelCorrelationActorsQuery, FunnelCorrelationQuery, @@ -79,24 +79,6 @@ EXTENDED_CACHE_AGE = timedelta(days=1) - -class ExecutionMode(StrEnum): - CALCULATE_BLOCKING_ALWAYS = "force_blocking" - """Always recalculate.""" - CALCULATE_ASYNC_ALWAYS = "force_async" - """Always kick off async calculation.""" - RECENT_CACHE_CALCULATE_BLOCKING_IF_STALE = "blocking" - """Use cache, unless the results are missing or stale.""" - RECENT_CACHE_CALCULATE_ASYNC_IF_STALE = "async" - """Use cache, kick off async calculation when results are missing or stale.""" - EXTENDED_CACHE_CALCULATE_ASYNC_IF_STALE = "lazy_async" - """Use cache for longer, kick off async calculation when results are missing or stale.""" - CACHE_ONLY_NEVER_CALCULATE = "force_cache" - """Do not initiate calculation.""" - RECENT_CACHE_CALCULATE_ASYNC_IF_STALE_AND_BLOCKING_ON_MISS = "async_except_on_cache_miss" - """Use cache, kick off async calculation when results are stale, but block on cache miss.""" - - _REFRESH_TO_EXECUTION_MODE: dict[str | bool, ExecutionMode] = { **ExecutionMode._value2member_map_, # type: ignore True: ExecutionMode.CALCULATE_BLOCKING_ALWAYS, diff --git a/posthog/schema.py b/posthog/schema.py index c9d792fd751ed..135942b7340c8 100644 --- a/posthog/schema.py +++ b/posthog/schema.py @@ -517,6 +517,16 @@ class EventsQueryPersonColumn(BaseModel): uuid: str +class ExecutionMode(StrEnum): + FORCE_BLOCKING = "force_blocking" + FORCE_ASYNC = "force_async" + BLOCKING = "blocking" + ASYNC_ = "async" + LAZY_ASYNC = "lazy_async" + FORCE_CACHE = "force_cache" + ASYNC_EXCEPT_ON_CACHE_MISS = "async_except_on_cache_miss" + + class ExperimentSignificanceCode(StrEnum): SIGNIFICANT = "significant" NOT_ENOUGH_EXPOSURE = "not_enough_exposure" @@ -6483,8 +6493,8 @@ class QueryRequest(BaseModel): ), discriminator="kind", ) - refresh: Optional[Union[bool, str]] = Field( - default="blocking", + refresh: Optional[Union[ExecutionMode, bool]] = Field( + default=ExecutionMode.BLOCKING, description=( "Whether results should be calculated sync or async, and how much to rely on the cache:\n- `'blocking'` -" " calculate synchronously (returning only when the query is done), UNLESS there are very fresh results in" From faab07312e9f30bf13c6d3e4c31182983f1cae4d Mon Sep 17 00:00:00 2001 From: Michael Matloka Date: Thu, 24 Oct 2024 19:01:22 +0200 Subject: [PATCH 05/26] Use `async_except_on_cache_miss` in question suggestions --- frontend/src/scenes/max/maxLogic.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/frontend/src/scenes/max/maxLogic.ts b/frontend/src/scenes/max/maxLogic.ts index be0ca6e22130c..0d7e52462c752 100644 --- a/frontend/src/scenes/max/maxLogic.ts +++ b/frontend/src/scenes/max/maxLogic.ts @@ -3,7 +3,7 @@ import { actions, kea, key, listeners, path, props, reducers, selectors } from ' import { loaders } from 'kea-loaders' import api from 'lib/api' -import { ExperimentalAITrendsQuery, NodeKind, SuggestedQuestionsQuery } from '~/queries/schema' +import { ExecutionMode, ExperimentalAITrendsQuery, NodeKind, SuggestedQuestionsQuery } from '~/queries/schema' import type { maxLogicType } from './maxLogicType' @@ -88,9 +88,12 @@ export const maxLogic = kea([ null as string[] | null, { loadSuggestions: async () => { - const response = await api.query({ - kind: NodeKind.SuggestedQuestionsQuery, - }) + const response = await api.query( + { kind: NodeKind.SuggestedQuestionsQuery }, + undefined, + undefined, + ExecutionMode.RECENT_CACHE_CALCULATE_ASYNC_IF_STALE_AND_BLOCKING_ON_MISS + ) return response.questions }, }, From 9a0d15d953ee3130ed0b040413a945fa44c93866 Mon Sep 17 00:00:00 2001 From: Michael Matloka Date: Thu, 24 Oct 2024 19:11:13 +0200 Subject: [PATCH 06/26] Revert "Move `ExecutionMode` to `schema.{ts,py}`" This reverts commit e6a6c3d730213c38f78d394c7ad140d3067266ae. --- frontend/src/lib/api.ts | 10 ++-- frontend/src/queries/query.ts | 10 +--- frontend/src/queries/schema.json | 53 +++++++++++-------- frontend/src/queries/schema.ts | 27 ++++------ .../src/scenes/dashboard/dashboardLogic.tsx | 8 +-- frontend/src/scenes/insights/utils/api.ts | 4 +- posthog/hogql_queries/query_runner.py | 20 ++++++- posthog/schema.py | 14 +---- 8 files changed, 76 insertions(+), 70 deletions(-) diff --git a/frontend/src/lib/api.ts b/frontend/src/lib/api.ts index 3c76aa6050eac..31933112d7b9a 100644 --- a/frontend/src/lib/api.ts +++ b/frontend/src/lib/api.ts @@ -15,13 +15,13 @@ import { DashboardFilter, DatabaseSerializedFieldType, ErrorTrackingGroup, - ExecutionMode, HogCompileResponse, HogQLVariable, QuerySchema, QueryStatusResponse, RecordingsQuery, RecordingsQueryResponse, + RefreshType, } from '~/queries/schema' import { ActionType, @@ -965,7 +965,7 @@ const api = { loadInsight( shortId: InsightModel['short_id'], basic?: boolean, - refresh?: ExecutionMode | boolean, + refresh?: RefreshType, filtersOverride?: DashboardFilter | null, variablesOverride?: Record | null ): Promise>> { @@ -2443,7 +2443,8 @@ const api = { query: T, options?: ApiMethodOptions, queryId?: string, - executionMode?: ExecutionMode | boolean, + refresh?: boolean, + async?: boolean, filtersOverride?: DashboardFilter | null, variablesOverride?: Record | null ): Promise< @@ -2453,12 +2454,13 @@ const api = { : T['response'] : Record > { + const refreshParam: RefreshType | undefined = refresh && async ? 'force_async' : async ? 'async' : refresh return await new ApiRequest().query().create({ ...options, data: { query, client_query_id: queryId, - refresh: executionMode, + refresh: refreshParam, filters_override: filtersOverride, variables_override: variablesOverride, }, diff --git a/frontend/src/queries/query.ts b/frontend/src/queries/query.ts index 6c4d3a85413ff..1952432e3607f 100644 --- a/frontend/src/queries/query.ts +++ b/frontend/src/queries/query.ts @@ -9,7 +9,6 @@ import { OnlineExportContext, QueryExportContext } from '~/types' import { DashboardFilter, DataNode, - ExecutionMode, HogQLQuery, HogQLQueryResponse, HogQLVariable, @@ -102,17 +101,12 @@ async function executeQuery( !!featureFlagLogic.findMounted()?.values.featureFlags?.[FEATURE_FLAGS.QUERY_ASYNC] if (!pollOnly) { - const executionMode: ExecutionMode | boolean | undefined = - refresh && isAsyncQuery - ? ExecutionMode.CALCULATE_ASYNC_ALWAYS - : isAsyncQuery - ? ExecutionMode.RECENT_CACHE_CALCULATE_ASYNC_IF_STALE - : refresh const response = await api.query( queryNode, methodOptions, queryId, - executionMode, + refresh, + isAsyncQuery, filtersOverride, variablesOverride ) diff --git a/frontend/src/queries/schema.json b/frontend/src/queries/schema.json index 3aadcdc2d0faa..1dc8acd083c3a 100644 --- a/frontend/src/queries/schema.json +++ b/frontend/src/queries/schema.json @@ -5128,19 +5128,6 @@ "required": ["columns", "hogql", "results", "types"], "type": "object" }, - "ExecutionMode": { - "description": "Query exeuctio mode.", - "enum": [ - "force_blocking", - "force_async", - "blocking", - "async", - "lazy_async", - "force_cache", - "async_except_on_cache_miss" - ], - "type": "string" - }, "ExperimentFunnelsQuery": { "additionalProperties": false, "properties": { @@ -8110,14 +8097,7 @@ "description": "Submit a JSON string representing a query for PostHog data analysis, for example a HogQL query.\n\nExample payload:\n\n```\n\n{\"query\": {\"kind\": \"HogQLQuery\", \"query\": \"select * from events limit 100\"}}\n\n```\n\nFor more details on HogQL queries, see the [PostHog HogQL documentation](/docs/hogql#api-access)." }, "refresh": { - "anyOf": [ - { - "$ref": "#/definitions/ExecutionMode" - }, - { - "type": "boolean" - } - ], + "$ref": "#/definitions/RefreshType", "default": "blocking", "description": "Whether results should be calculated sync or async, and how much to rely on the cache:\n- `'blocking'` - calculate synchronously (returning only when the query is done), UNLESS there are very fresh results in the cache\n- `'async'` - kick off background calculation (returning immediately with a query status), UNLESS there are very fresh results in the cache\n- `'lazy_async'` - kick off background calculation, UNLESS there are somewhat fresh results in the cache\n- `'force_blocking'` - calculate synchronously, even if fresh results are already cached\n- `'force_async'` - kick off background calculation, even if fresh results are already cached\n- `'force_cache'` - return cached data or a cache miss; always completes immediately as it never calculates Background calculation can be tracked using the `query_status` response field." }, @@ -10436,6 +10416,37 @@ "required": ["results", "has_next"], "type": "object" }, + "RefreshType": { + "anyOf": [ + { + "type": "boolean" + }, + { + "const": "async", + "type": "string" + }, + { + "const": "blocking", + "type": "string" + }, + { + "const": "force_async", + "type": "string" + }, + { + "const": "force_blocking", + "type": "string" + }, + { + "const": "force_cache", + "type": "string" + }, + { + "const": "lazy_async", + "type": "string" + } + ] + }, "RetentionEntity": { "additionalProperties": false, "properties": { diff --git a/frontend/src/queries/schema.ts b/frontend/src/queries/schema.ts index 34ef5d36c4812..8cbc8094cf376 100644 --- a/frontend/src/queries/schema.ts +++ b/frontend/src/queries/schema.ts @@ -1183,23 +1183,14 @@ export type LifecycleFilter = { showLegend?: LifecycleFilterLegacy['show_legend'] } -/** Query exeuctio mode. */ -export enum ExecutionMode { - /** Always recalculate. */ - CALCULATE_BLOCKING_ALWAYS = 'force_blocking', - /** Always kick off async calculation. */ - CALCULATE_ASYNC_ALWAYS = 'force_async', - /** Use cache, unless the results are missing or stale. */ - RECENT_CACHE_CALCULATE_BLOCKING_IF_STALE = 'blocking', - /** Use cache, kick off async calculation when results are missing or stale. */ - RECENT_CACHE_CALCULATE_ASYNC_IF_STALE = 'async', - /** Use cache for longer, kick off async calculation when results are missing or stale. */ - EXTENDED_CACHE_CALCULATE_ASYNC_IF_STALE = 'lazy_async', - /** Do not initiate calculation. */ - CACHE_ONLY_NEVER_CALCULATE = 'force_cache', - /** Use cache, kick off async calculation when results are stale, but block on cache miss. */ - RECENT_CACHE_CALCULATE_ASYNC_IF_STALE_AND_BLOCKING_ON_MISS = 'async_except_on_cache_miss', -} +export type RefreshType = + | boolean + | 'async' + | 'blocking' + | 'force_async' + | 'force_blocking' + | 'force_cache' + | 'lazy_async' export interface QueryRequest { /** Client provided query ID. Can be used to retrieve the status or cancel the query. */ @@ -1216,7 +1207,7 @@ export interface QueryRequest { * Background calculation can be tracked using the `query_status` response field. * @default 'blocking' */ - refresh?: ExecutionMode | boolean + refresh?: RefreshType /** @deprecated Use `refresh` instead. */ async?: boolean /** diff --git a/frontend/src/scenes/dashboard/dashboardLogic.tsx b/frontend/src/scenes/dashboard/dashboardLogic.tsx index 13a8bc5d0065e..4addf1f04f4c0 100644 --- a/frontend/src/scenes/dashboard/dashboardLogic.tsx +++ b/frontend/src/scenes/dashboard/dashboardLogic.tsx @@ -36,7 +36,7 @@ import { variableDataLogic } from '~/queries/nodes/DataVisualization/Components/ import { Variable } from '~/queries/nodes/DataVisualization/types' import { getQueryBasedDashboard, getQueryBasedInsightModel } from '~/queries/nodes/InsightViz/utils' import { pollForResults } from '~/queries/query' -import { DashboardFilter, DataVisualizationNode, ExecutionMode, HogQLVariable, NodeKind } from '~/queries/schema' +import { DashboardFilter, DataVisualizationNode, HogQLVariable, NodeKind, RefreshType } from '~/queries/schema' import { AnyPropertyFilter, Breadcrumb, @@ -140,7 +140,7 @@ async function getSingleInsight( insight: QueryBasedInsightModel, dashboardId: number, queryId: string, - refresh: ExecutionMode | boolean, + refresh: RefreshType, methodOptions?: ApiMethodOptions, filtersOverride?: DashboardFilter, variablesOverride?: Record @@ -176,7 +176,7 @@ export const dashboardLogic = kea([ actions(({ values }) => ({ loadDashboard: (payload: { - refresh?: ExecutionMode | boolean + refresh?: RefreshType action: | 'initial_load' | 'update' @@ -828,7 +828,7 @@ export const dashboardLogic = kea([ () => [(_, props) => props.id], (id) => { return ( - refresh?: ExecutionMode | boolean, + refresh?: RefreshType, filtersOverride?: DashboardFilter, variablesOverride?: Record ) => diff --git a/frontend/src/scenes/insights/utils/api.ts b/frontend/src/scenes/insights/utils/api.ts index 5e4d1ac5e38d5..2d85cc71f702c 100644 --- a/frontend/src/scenes/insights/utils/api.ts +++ b/frontend/src/scenes/insights/utils/api.ts @@ -1,7 +1,7 @@ import api from 'lib/api' import { getQueryBasedInsightModel } from '~/queries/nodes/InsightViz/utils' -import { DashboardFilter, ExecutionMode, HogQLVariable } from '~/queries/schema' +import { DashboardFilter, HogQLVariable, RefreshType } from '~/queries/schema' import { InsightShortId, QueryBasedInsightModel } from '~/types' async function _perform( @@ -19,7 +19,7 @@ export const insightsApi = { async getByShortId( shortId: InsightShortId, basic?: boolean, - refresh?: ExecutionMode | boolean, + refresh?: RefreshType, filtersOverride?: DashboardFilter | null, variablesOverride?: Record | null ): Promise { diff --git a/posthog/hogql_queries/query_runner.py b/posthog/hogql_queries/query_runner.py index dc1b50e87dc8a..40918e51b5e97 100644 --- a/posthog/hogql_queries/query_runner.py +++ b/posthog/hogql_queries/query_runner.py @@ -1,5 +1,6 @@ from abc import ABC, abstractmethod from datetime import UTC, datetime, timedelta +from enum import StrEnum from typing import Any, Generic, Optional, TypeGuard, TypeVar, Union, cast import structlog @@ -28,7 +29,6 @@ DateRange, EventsQuery, EventTaxonomyQuery, - ExecutionMode, FilterLogicalOperator, FunnelCorrelationActorsQuery, FunnelCorrelationQuery, @@ -79,6 +79,24 @@ EXTENDED_CACHE_AGE = timedelta(days=1) + +class ExecutionMode(StrEnum): + CALCULATE_BLOCKING_ALWAYS = "force_blocking" + """Always recalculate.""" + CALCULATE_ASYNC_ALWAYS = "force_async" + """Always kick off async calculation.""" + RECENT_CACHE_CALCULATE_BLOCKING_IF_STALE = "blocking" + """Use cache, unless the results are missing or stale.""" + RECENT_CACHE_CALCULATE_ASYNC_IF_STALE = "async" + """Use cache, kick off async calculation when results are missing or stale.""" + EXTENDED_CACHE_CALCULATE_ASYNC_IF_STALE = "lazy_async" + """Use cache for longer, kick off async calculation when results are missing or stale.""" + CACHE_ONLY_NEVER_CALCULATE = "force_cache" + """Do not initiate calculation.""" + RECENT_CACHE_CALCULATE_ASYNC_IF_STALE_AND_BLOCKING_ON_MISS = "async_except_on_cache_miss" + """Use cache, kick off async calculation when results are stale, but block on cache miss.""" + + _REFRESH_TO_EXECUTION_MODE: dict[str | bool, ExecutionMode] = { **ExecutionMode._value2member_map_, # type: ignore True: ExecutionMode.CALCULATE_BLOCKING_ALWAYS, diff --git a/posthog/schema.py b/posthog/schema.py index 135942b7340c8..c9d792fd751ed 100644 --- a/posthog/schema.py +++ b/posthog/schema.py @@ -517,16 +517,6 @@ class EventsQueryPersonColumn(BaseModel): uuid: str -class ExecutionMode(StrEnum): - FORCE_BLOCKING = "force_blocking" - FORCE_ASYNC = "force_async" - BLOCKING = "blocking" - ASYNC_ = "async" - LAZY_ASYNC = "lazy_async" - FORCE_CACHE = "force_cache" - ASYNC_EXCEPT_ON_CACHE_MISS = "async_except_on_cache_miss" - - class ExperimentSignificanceCode(StrEnum): SIGNIFICANT = "significant" NOT_ENOUGH_EXPOSURE = "not_enough_exposure" @@ -6493,8 +6483,8 @@ class QueryRequest(BaseModel): ), discriminator="kind", ) - refresh: Optional[Union[ExecutionMode, bool]] = Field( - default=ExecutionMode.BLOCKING, + refresh: Optional[Union[bool, str]] = Field( + default="blocking", description=( "Whether results should be calculated sync or async, and how much to rely on the cache:\n- `'blocking'` -" " calculate synchronously (returning only when the query is done), UNLESS there are very fresh results in" From 21fbbd8f2c3fda220ea293a8223a79ecd3633ae1 Mon Sep 17 00:00:00 2001 From: Michael Matloka Date: Thu, 24 Oct 2024 19:17:44 +0200 Subject: [PATCH 07/26] Unify `api.query()`'s `refresh` and `async` --- frontend/src/lib/api.ts | 6 ++---- frontend/src/queries/query.ts | 6 ++++-- frontend/src/queries/schema.json | 4 ++++ frontend/src/queries/schema.ts | 1 + frontend/src/scenes/max/maxLogic.ts | 4 ++-- posthog/hogql_queries/query_runner.py | 4 ++-- 6 files changed, 15 insertions(+), 10 deletions(-) diff --git a/frontend/src/lib/api.ts b/frontend/src/lib/api.ts index 31933112d7b9a..9dbfab88c5a1f 100644 --- a/frontend/src/lib/api.ts +++ b/frontend/src/lib/api.ts @@ -2443,8 +2443,7 @@ const api = { query: T, options?: ApiMethodOptions, queryId?: string, - refresh?: boolean, - async?: boolean, + refresh?: RefreshType, filtersOverride?: DashboardFilter | null, variablesOverride?: Record | null ): Promise< @@ -2454,13 +2453,12 @@ const api = { : T['response'] : Record > { - const refreshParam: RefreshType | undefined = refresh && async ? 'force_async' : async ? 'async' : refresh return await new ApiRequest().query().create({ ...options, data: { query, client_query_id: queryId, - refresh: refreshParam, + refresh, filters_override: filtersOverride, variables_override: variablesOverride, }, diff --git a/frontend/src/queries/query.ts b/frontend/src/queries/query.ts index 1952432e3607f..2a0af2943316e 100644 --- a/frontend/src/queries/query.ts +++ b/frontend/src/queries/query.ts @@ -15,6 +15,7 @@ import { NodeKind, PersonsNode, QueryStatus, + RefreshType, } from './schema' import { isAsyncResponse, @@ -101,12 +102,13 @@ async function executeQuery( !!featureFlagLogic.findMounted()?.values.featureFlags?.[FEATURE_FLAGS.QUERY_ASYNC] if (!pollOnly) { + const refreshParam: RefreshType | undefined = + refresh && isAsyncQuery ? 'force_async' : isAsyncQuery ? 'async' : refresh const response = await api.query( queryNode, methodOptions, queryId, - refresh, - isAsyncQuery, + refreshParam, filtersOverride, variablesOverride ) diff --git a/frontend/src/queries/schema.json b/frontend/src/queries/schema.json index 1dc8acd083c3a..3f03db35ce1f4 100644 --- a/frontend/src/queries/schema.json +++ b/frontend/src/queries/schema.json @@ -10425,6 +10425,10 @@ "const": "async", "type": "string" }, + { + "const": "async_except_on_cache_miss", + "type": "string" + }, { "const": "blocking", "type": "string" diff --git a/frontend/src/queries/schema.ts b/frontend/src/queries/schema.ts index 8cbc8094cf376..f6259745a06da 100644 --- a/frontend/src/queries/schema.ts +++ b/frontend/src/queries/schema.ts @@ -1186,6 +1186,7 @@ export type LifecycleFilter = { export type RefreshType = | boolean | 'async' + | 'async_except_on_cache_miss' | 'blocking' | 'force_async' | 'force_blocking' diff --git a/frontend/src/scenes/max/maxLogic.ts b/frontend/src/scenes/max/maxLogic.ts index 0d7e52462c752..65aec8e819e86 100644 --- a/frontend/src/scenes/max/maxLogic.ts +++ b/frontend/src/scenes/max/maxLogic.ts @@ -3,7 +3,7 @@ import { actions, kea, key, listeners, path, props, reducers, selectors } from ' import { loaders } from 'kea-loaders' import api from 'lib/api' -import { ExecutionMode, ExperimentalAITrendsQuery, NodeKind, SuggestedQuestionsQuery } from '~/queries/schema' +import { ExperimentalAITrendsQuery, NodeKind, SuggestedQuestionsQuery } from '~/queries/schema' import type { maxLogicType } from './maxLogicType' @@ -92,7 +92,7 @@ export const maxLogic = kea([ { kind: NodeKind.SuggestedQuestionsQuery }, undefined, undefined, - ExecutionMode.RECENT_CACHE_CALCULATE_ASYNC_IF_STALE_AND_BLOCKING_ON_MISS + 'async_except_on_cache_miss' ) return response.questions }, diff --git a/posthog/hogql_queries/query_runner.py b/posthog/hogql_queries/query_runner.py index 40918e51b5e97..44d5abfe3c16c 100644 --- a/posthog/hogql_queries/query_runner.py +++ b/posthog/hogql_queries/query_runner.py @@ -89,12 +89,12 @@ class ExecutionMode(StrEnum): """Use cache, unless the results are missing or stale.""" RECENT_CACHE_CALCULATE_ASYNC_IF_STALE = "async" """Use cache, kick off async calculation when results are missing or stale.""" + RECENT_CACHE_CALCULATE_ASYNC_IF_STALE_AND_BLOCKING_ON_MISS = "async_except_on_cache_miss" + """Use cache, kick off async calculation when results are stale, but block on cache miss.""" EXTENDED_CACHE_CALCULATE_ASYNC_IF_STALE = "lazy_async" """Use cache for longer, kick off async calculation when results are missing or stale.""" CACHE_ONLY_NEVER_CALCULATE = "force_cache" """Do not initiate calculation.""" - RECENT_CACHE_CALCULATE_ASYNC_IF_STALE_AND_BLOCKING_ON_MISS = "async_except_on_cache_miss" - """Use cache, kick off async calculation when results are stale, but block on cache miss.""" _REFRESH_TO_EXECUTION_MODE: dict[str | bool, ExecutionMode] = { From 47c3f3c336dbdd6d20e544e6d25a02eee2fbf587 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 24 Oct 2024 17:21:15 +0000 Subject: [PATCH 08/26] Update UI snapshots for `chromium` (1) --- ...er--trends-line-insight-detailed--dark.png | Bin 21701 -> 21655 bytes ...r--trends-line-insight-detailed--light.png | Bin 21385 -> 21344 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/frontend/__snapshots__/exporter-exporter--trends-line-insight-detailed--dark.png b/frontend/__snapshots__/exporter-exporter--trends-line-insight-detailed--dark.png index b54d4facb0bfe8353e19863b17eee837e4aab6c0..e3e93b3dd9678360493d495ab090800a9f994b6f 100644 GIT binary patch literal 21655 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 RdnN$nb5B=4mvv4FO#tji&>jE) diff --git a/frontend/__snapshots__/exporter-exporter--trends-line-insight-detailed--light.png b/frontend/__snapshots__/exporter-exporter--trends-line-insight-detailed--light.png index 332ea24ce308456a5c4dc18262bded8de8689748..d4377362d92701640737571d7d9f29c058ada487 100644 GIT binary patch literal 21344 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 literal 21385 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 Date: Fri, 25 Oct 2024 17:13:13 +0200 Subject: [PATCH 09/26] Update query_runner.py --- posthog/hogql_queries/query_runner.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/posthog/hogql_queries/query_runner.py b/posthog/hogql_queries/query_runner.py index c0e1d85fd190e..44d5abfe3c16c 100644 --- a/posthog/hogql_queries/query_runner.py +++ b/posthog/hogql_queries/query_runner.py @@ -95,8 +95,6 @@ class ExecutionMode(StrEnum): """Use cache for longer, kick off async calculation when results are missing or stale.""" CACHE_ONLY_NEVER_CALCULATE = "force_cache" """Do not initiate calculation.""" - RECENT_CACHE_CALCULATE_ASYNC_IF_STALE_AND_BLOCKING_ON_MISS = "async_except_on_cache_miss" - """Use cache, kick off async calculation when results are stale, but block on cache miss.""" _REFRESH_TO_EXECUTION_MODE: dict[str | bool, ExecutionMode] = { From 6e38dd4f08a3a068102a7ead5dc76968e86e245b Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 15:39:23 +0000 Subject: [PATCH 10/26] Update query snapshots --- .../test/__snapshots__/test_trends.ambr | 204 +++++++++++++++--- 1 file changed, 172 insertions(+), 32 deletions(-) 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 From 7bb5f988e391b8ae443b7de4ea4de4cc1b2a4ce8 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 15:53:36 +0000 Subject: [PATCH 11/26] Update query snapshots --- posthog/api/test/__snapshots__/test_api_docs.ambr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posthog/api/test/__snapshots__/test_api_docs.ambr b/posthog/api/test/__snapshots__/test_api_docs.ambr index 6ef31c6530176..a5f9b394809ae 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.', From 8e3768bda3533de0fcf9269360cf2b8190f28b0e Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 15:57:15 +0000 Subject: [PATCH 12/26] Update UI snapshots for `chromium` (1) --- ...rter--trends-line-insight-legend--dark.png | Bin 14104 -> 11375 bytes ...ter--trends-line-insight-legend--light.png | Bin 13770 -> 11027 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/frontend/__snapshots__/exporter-exporter--trends-line-insight-legend--dark.png b/frontend/__snapshots__/exporter-exporter--trends-line-insight-legend--dark.png index 8ac461d15d0bbe78b06112735d2d7edc23f82143..fe89947c699ee507d932e63c45c8343a0bdeff7f 100644 GIT binary patch literal 11375 zcmeHtXHb*dzBlRy+|qQbpdhf74Tv-a=|Z-mAdwn+m)?u?9ux(YDg=-cKp=!3AV6p# zA_CHd5K8F1CiGB3;C=SJGw<9v_uM)6e7awDCNr53o@A}{to8r@+6Qe-RhCPfm+0u| zSk#_Bh0xKRv!J6pzjg6E@E2{&M@``6oHs=E30-;LtyMa@-|5tzKGqA!Bu)C8>F=L? z-R^(a&GUx&F}=nsEj>@vEju~y0y_l_jj|I1;tsV;T^McG+J&vkEc$G`^z={VUj#Kh z>8fBX{wJrh0sNsao&<2?Ms{cCx3QVQ?bu~5R4}=IVt0Uks1Qjvv+3%7aDmQK@D2;z zFZt)f!ynRJPGF!rKS=lIpPY0TpI@Lm=S27W@Bj3}y+w<`fq|CJPBjz;U4sz+3U70K zc$4{AeSIK3J^iAovK)SfOfGQiHp7q$H%gWr0Q|G)@|9A8K$Hn*xHhIg8L+wKZRXY-|%J|A-D)Dl5 z(#e^16w%%H#At6%voP&OZme0@aQxvbFsVo81^PfGnooS-#WK0&{K^x^&6n2;}6-P zrv#}3&X3H?ec5NUcsFCi@=R#&8`D}>#ekKqx7#*}i4cR6YDnX?N#KoUrff}^vQg*J z?k>}BSFieSFk?!)Iy;MOqWq*>hAS}W7yUop#}I>04m+!qn7Sj&XZ7oMY~opT!J_81 zb8~Ha-FpyelVc^J&Z((pZzSuva|9BJ1c5;ONvv9$nnH5QD8}HSGE;}nL|$F|;0f&{ zk~wf;rlr+1Y`Pf6DIbvIaXs5(xkpq)m6qn%ieBd3*VZI5XB@Y@4G#}JKx|+OF$qX(H#*A!F<>bt2& zey$rWqBsxphK-JI-##`m?DPw>V=lUv!-}Wxj#k-oa4e6~K7os{)Z8fM;HL93{x6J$ zSV{~~y5JhOt81H^$jRpRcT8%t!FRAt_xv5F%T*7khGiDPz2-#H-kuLBGCSL2{bz#W zl}~fUl&4SY8|!OW-K1=PhPS9REeR@hj&!1^-AF^Sjf1 z)ekZ;6LBxxuHHH}4q15nqSjCIo>qpDB)^TDgE`JEYdzCW;EZQj@~lZQm3okB$tJyC4PY{ z4fRK+jl-e(G#Yp+IW-k}dO}aC9dN8xXZzLZ)si|e$ozG~v`Ai}3?;=2BY4*K zzlKVIK>F5aU%!E!4poD&WxxZ8j7m)%S?o@IF{NK((EG|p)d>Ur-1xhKf~t@&Wkb&2 z|A3KarP*gJUdCj(ewPCVQBs;B#xq*ao76J%{KRPmnY5?9eM@^#DJNHdeP;%X#Xb@a zj*L>h5nI5@O*}q6&d)b1{Ti$CRHeSYUP&Sc1-Zw+I7jqdN2T2s7Z>MWw5};W1-8p{ z|0ZgMCThyS$ncA-oPrQSGh3~qM~K`5DF_Y@CX`M+I4}uDX%Y3{mDa>ds3!iu{dwT!_Fk+n>WrQ7nzw^-G}RR zS`pobw)Pec_NT*T%IPvLoL8?3H=AA|lwHkN)XeM5r#Y&%YPeVXkj61?qZOykp#vP^ z1%8{uHEtQhxU=nLsohK^_|FF4lH>g~;+k9hEk%Pe6GC|S8Y?TS+?ZTZkzxF98{D{S z51c%~bm>y2dFJ{r1SPM%&vrp_S%ygo9PzdXxPY}v>6%Li`OL!t!_6V~uOwS%XauNp z`bx;+sMX70ge&2P)=;9_QkT0t0u~z!0TYUSr-6xdRj)rJ>L{y`4cmhxGkV?2%cI%D zrmNL#y0OX(purNu{s9|-&*}xKf^l3je$~=gQ;gVEi(8Vb1epyINubFno+Ik9JHMX84>Y1N|h0_e6#~`IM1Vf}QT`>Z-jp=Df4Zl$e-U0~Np%;_Le0xC;MG zOBSwS+<<(E{=OmDcAdlJr@12)@got?gGL(O4Xc!$2bh$l}>EE;^| z6cy+9RwaS9MWYqN9@*ZtbC_}rQc+o&1+}FB)%$D3M6y*=bv#Sgnc$w6xV)EkZXaMXvtwJshR5Rezc#8%;q$1ha*MA*(@xQ z1!H(6txi4{d1&1{UAasu)7?A$EK|@_>^p08vK_d~0ax(15F%hrM+CD2)P)Gh{#I}i z(7w2jhIT*cP^&E`VX){cpLB@My1Mu~ck-;~SyNnp=F(4#n?BN_%4|k?fR#Qw>(fA) zr{%yI8*ntk+E2Du^xC7x+S&q_qVN-wlW;g(>C`hlDJf~d@q~5&0?rg-z_zIc-%vw_ z(}SP^owQXWi9%;E-_!!2HV-&Tbw=5J>b3QKJ`#Qz#t^k z-Mt*xMtJv*j_mt4n46oGczBW_y7<$HT4f9J;!wY(XI*IdSpn$w`gi1*B%S(@1$N|IM>HNsot$ii&&+3d`|jzp#Jjrx%-Y%eG2sdMv zIvm#6vDVU@zU5+K;364hlZm!=h3zWK^s|(2C0=&jFR)9k@%HA;nNp4~p$I+Og{doi z*$+5lvqO&C3Rql#et$gr-pYGfROFt>U=}Jqb);%hxFB?E;Pt31Vu;riwswMVUAFI8PLQfvl-NnadupjYjkT z@yBq9p{l~_=k)Xxcrs~YE;C^Zb2U?jn1x;#7n zEEnAo>0ju9`gqo_Lw1tu<`iU&Ew6keJ22ms86m#{lK>rk*zuAq5r+P{O@>ZGz{z>6 zfq{WUj~d9@Afg*s>6jSeNQG4>3D#09wO+l80(vB_l#NSqEiGN@JU2J@atP?4b#)Uc z)DL&(*9*4a57gE2JD-o)iI73!eWnGTQiiwfCJw$8vw0*bjz_QqkQODTmQ z>h}$ms5gm;qF2$1@JQ~$2R7B^#y<&|2GHh1T>Wz?r-=a4T8UhM+m0!S)^sc&6DsST z9TA~?vVE0pZ_U5g{PE)&>8LVYutwHS+~T9Td_#elo3uqobp@6tB6txHLL;R#j9?r-)^h zz=Gyhb%;fb3JSE>D;F6VqkzJLrJlxAZS0gZVVe@c8_OB5keM!D6~(0~n9CS{QBYR* zrTco>XJE4#Im>RHH(tFzOs7PwHe{r!S{5{gACI|xk{B%;Ygh57G66rsp=X5vr$B_( zO5{L!Nn0&#ZT0=F*lJz2ckkZCvvNJ!hYN|vz%LVP(SC&xoQ1iJp&>#~N9Ply>!3^Z zrHs?rsSyH(M5>O6!K;NX@U9|b)oyZgdoQf$lnLohXAPD**+4j?}- zAF%LH=bb5OGXMHzS)|(9LWB~uL^+6z%%eG#p7vNVow#d8>)c*luYg zI=z9mx=QzF?$<-^J**}yRn&B+^iZW-;eJHBK^QOBWovOIQZJ$+X$$b?wG%tLliy zC@d||X&})KTtsyqHo|%xm2;am_^%&}XWJYBqgR_xNbRpH?drx}o>Q8X7{Ja9Hl-s4 zdH2+IywK{d`l>SPa#HrSVoUj3+#kg^v0i-?4H5Tl^(*L#8i2_lotLjIiJO_7 zgqt$RIFHT<$QWvCZ=EpBYr*B+9FQK|oVi%753vfe_7hJdT5@3N+p~gr(8>3mPU10( z712ROU_DM7>Hv@YuGo{mpW9-osD~HreK| zc(S&p#BIkTX&S1iDTUqiSl=$xQ$vlo-~f8#zNX;evoRXhl8XqYJaxvIj8MHOm>`8v z6JiaN&V9QjCQaC|%#B!G37kL(WM?XLfXLJcamJ%?ZQPIceuOs*Bpvmny@faWIoMu< zvhVJ8N&Wik2e@MQx)wDU*L(5erXmyDqGx*Q#ZjlJUh&0w%; zay(c!>Mr7zE0gnerA57Znq_Lc3N=U$ffPo>i1}${7C%5g_DZf6p}kch-qGpkxr)=b zjMW!Fr`K+KAaA4mx2>I{`X-}4F33-a?gi1Z%uR(2De4*;RKGs9BYJwRM@o0@7N(53 zlJ~d5ZMHkQF+{J-$c4gl2G)5W&#pCmUC~~U;#cxA@+?FjbsdPfd4HVpNI0J9TQeo{ z>(y61e{OExpR(kjWEkhyHA&??y*xfX-rd(ncGrq%dHMMm=OhU_{yILs9xH@$zS?WQ zyLVHvd-C1REbt3+Gc($f6^9<`x)3cp+k7EJ(1^4_t>`IrrQ&HvbYPGwywV9ir~A?# zO$;_m>uo!79IAL-lCd5;oSmNTH}`a`*$&#VL!kg1|K)r;i?96TD&8T?qNbpf<8qzf zJ3El`?<`-j@i-Sc?FauTpZtHJY3ode#clkp($RMtepRt^FRc)p+L`?~H5)p&y87zK%b;`Clg_a;Xec2$IT;2s)7CcPyZ>_TurfOg(pO@v z|6Wz~k(~X+i;?(MPd3?`y#5kOR3eYH>p70V$PwKvD|$-Fg04pO2T< z!s`=2&dMyQ-W#Vs5YfvF^n`{b{eg}SYJ}6-B-&;DQ^Y_<>#!ni=((G0IA%J8W*agA z6lHAlVJM!u+3YQ$lty*Fy0oFDBGwyHHMC>lRY9Ft&N*OQ^xf03_$Qa6_(|YUAs>Gz~I0#Q>^vM%xeHn(9<6Q z?QAM@XRZ2RN(W4T@C`hNuE_QloweJMqr# z+oH*k-V7OCFdUcQLnCwmnAQMgHifhF&|-_f6Y&M8&1n0+8}haZekc^Ge@(ybfHS6D zAeJlixHGCBbga@ot?G(55#xsFTz^NOD$_Jh`1|ry1Kfy z#|2t6VnG6cq|p?JzrZ+Gds>fu_B@LHHi_>}9t@IlA&NrB(ZFxUo;D zG_n^;_gQaaEi3?VqZqu;S*lSlYe5!HIhC`;?_%WGNYz``uJ_6tnjzd7L6EE7i}cxqk0zRIo_YTAWP^b6mbKx;`kYWH_^ zG?tuGz+dY!Z_T|?i}j9tmQM2$Qwv!=eSO33*Vx%V@-?47i`2(&wd}>?s8*-@cn7Fl ziBnShg9nvK)0v#S(2$}3IGk@5r#3cRwY1o9!WT@BsnldMX(6GpepHt~sORkEamNTs zPMSQE_Vzms^J2qpCNgrL)UWVKB| zcikvI0*Ryo(A5H4Ovy7`>;k%^bXp8otF$S(23F{-4<$wV5p2+7rTA5m3rPVJdyULF zxf55QEXDv{LkxY&Q;p|QTv}ZnX!J)V9yrfmqil?ondn2|ng`#1T;bm&L|)$rlKENW zk3uYwnW(19%j70l?RBSmF4WQ>Q@?R?7xVR-#=6jIjSjxx&y?nySE#Td$|oXLBpM?EyYjs?YIz; z(*PZvfy%@Ae%w~Bv^m!xK$z=2aJNAyv!q0?fw8fplXv+5?pHh>)lG?x-6 zJ^8)2)OMtNYmTe2H5oECCP%D{>9i$!M_APWf*tS8M-)6;m4olCaSs7pdaotNV;>++m9#-R7g(!#`GH;_b^!u+oBpGKzfj(c-wHK)bQ9 zR?D=9auUv#0P2s&U@|hsHAK#tt&7#=`b5txiJCs_@9wv3aDCTl+kkUf-dyf60LO-I zBPuj-#=D>B{ELFU-={khiZ#PR6Cut!E+{||cFaEM;00|{d7)F}D255Nt8gI9?V_il z;Yd~UJ}otlI~wG3_#TJL#-yg^<;{JLjMbc`~P;EoJ)LANJq!a{Z|&?-?irdZ%6+3X#aU&;_tii zciH)GWhcnRy=SVgZ(u+NH8MV$@W+gOnz}$lOM)e!Xc#%x#F~h+h>7)emG129vM@x9 zxz-Z>UN^%3BSZs`CBL9hASL4~?Tj$=;Naj$8h|BbnCj_0*)srh3jpTO z*qA(5jS45=^T8m2M@I&u?4E1@u+)_Y+#>k(TD#bXfS+TstN5EI8z3zDc==R+i!A-b zfVJ?rf1|YG_Dq%o5TFTi$-Gmo@)w&10yKIT(POS~w!_2ASN=(A=(Rr1f?uNEM><%^ z#qT1d)_vzzyNG$qEA#dPX}R%I+D!Nv%6(TSVyq^ki0F#;-ePIYfmQiRDlldg_ewYV zq1PfVobopII^7Ra3XQgB*z%Yld$Uk#gl(4$L?g7?JDkp}PcNM<%&(Hk+Gg3M!0_Ds{DmkgbCd5n zqkH2xJQA`hkvg6g^!z&i#KOsPzoo1{ImC9TISt*sGM3jUT?x3NAe2$aUBAtOSQnET zz?cmR4h{u5_?f8>5eXpHnf zR?Xr`js#I)0R8CT)kKRNj+Mq|W@bjR@)|c9l-=Y#5f_pRY>lh{1fCM}#^DcF1snZV zLyo+L%O`{1WXOoxed1Q|iw!%yX=un198Aq2)|@Xk1X5cBz^UCWsj^une;il-D(b_C zc$|vv-WarKbW5rq60l1*-n3yhD%?2VRm}r1=Ke>D5|18zvy~7+@NgZ)K)MKo#lsIt zfSe*PFKVU^aS5Ar#?;$jAfr@%PPo8eGKymlLMV76@&Ky~l zH8qoso8pL}<5;W7MqjvshgAnFNfofn6xmknK?VxMQAFghgix4#r(XUB{5F8&mbb=0t8qDHM1W1u2mzLz(T;5MCifgANQt9 zhgt2RiQm6}M_0aLL^dlT01fZUmogQ_vlwaG6A0um>xZC9+}7S!;l}FrcFci-k0TN$ zA51ZGo%k|h8Ora9wQSp|hNp7Bj0^j!-%t+SzA5d%(op61` zU=B=zswo{5FT)_B9h7~^cotAfZu0h~-w*3q&JJtZ@8?cgwQ1LE3XyYZ+j*xuo&Lz7 z&#ZfI`>FuHAhIW$O4<;&Z{vA%*nNE8?KqOfDl3bJOZqg3Ch+~)Z&&*T{>X|YHuk@~ z4+KKwgG7{q&Rzq?+@(NB`1O_Z&O^fZ^FYl3H;YU&dx)dBM6C<4%h_kuE#E$ufd&fH zGn%i!H62`BO3W*(fIGAsc32RWHWX zf2g~ZOa5(fQ2$il)FrO-sY@o8ngI zMNhQ4KvK&~;FOC?7|jPfwjrP+o;`a9JclRlgzwA}xc*5K`iJN$OpZl`Z^Z5#SwJ4% z=lC$?uZU>N%e!+8B45q(Lkyup-ke_E-XzjSSHrdN@wS#JB^eo1>5F7J79iv#Ao#Tp@bEQR2o&FE1}9rtZLZu$^pek-K;AcIaFRZ#*x4_;06g0WjHec5eM#7gyPD Tg7rXxm`?4P=F{>gFW>w>HlS@b literal 14104 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 G2mc4UW$C^E diff --git a/frontend/__snapshots__/exporter-exporter--trends-line-insight-legend--light.png b/frontend/__snapshots__/exporter-exporter--trends-line-insight-legend--light.png index bbb59b784ba62a9afbe99034c94cba3b09e5dd92..b2c01e25a4548a4cb0307467d8e4e0b3efa56bba 100644 GIT binary patch literal 11027 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 N`L_D4{F`P^{}=Z71WW(` literal 13770 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 J@2t)J{{pOCRM7wc From 74539151c0b8e04d1cce7d65340336c2d3f65b96 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 16:16:17 +0000 Subject: [PATCH 13/26] Update UI snapshots for `chromium` (1) --- ...rter--trends-line-insight-legend--dark.png | Bin 11375 -> 14104 bytes ...ter--trends-line-insight-legend--light.png | Bin 11027 -> 13770 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/frontend/__snapshots__/exporter-exporter--trends-line-insight-legend--dark.png b/frontend/__snapshots__/exporter-exporter--trends-line-insight-legend--dark.png index fe89947c699ee507d932e63c45c8343a0bdeff7f..8ac461d15d0bbe78b06112735d2d7edc23f82143 100644 GIT binary patch literal 14104 zcmeHuX;f3$wr=c8E#z31q9S0aNFhQj5hA^o4H^WBUO<9~g0!JcfIwnXN+~L(bkeIB z5CVig1PD<8psAdth5s~6AP zhNaCjJ>%^r))q#mK7MT9djCMxj|oRE<=wo{@umTBi}>W~Nvo{mi^z9gwNHwVS?$>q z_u+|ZzrntuFE6hAVteTve*5=Icnc$L^uxH__aU<%$V8vwMA7`xeALR)CKHriGD@lH zIJonwtHWH3G1!58*uHT;1aj{mn@@o+KYe!-eE#~6kKpt7!}m5oAm5#bY=S`k@c^?zt@dE2 zl$4z2?*z8Uef224bLS4BFTcsd`ux}fzx{56O=nH0{>S4StNod}^T1$;F}~cVuebU3 z5|2kh)fMa-*(!H1J~6?MZ4VAEII3%E__V)~^!k_gY)DIT$f>D`^dSK&?$P1l;o*p3 zduo?AVN)fF?UW$`V>q%ip621xS4b&$UfXgMT;YGhUH^%HKkClHM#hy;)zw%^M31L& zIlX37)M_@+JgXfoHpDbz2M(H?GrlYvBHt`uriFH*V6c`>oC&PD0JVc}+AYC^8qwQ;0BLL9PNKz&~*Dok%6@=TzEc zZ@7S&Y-yH071|eNmZ;^&%fxnz&XV;8146rP-y z?2wjd-E4g3bm^0q72Tg-rm=$uClk8?rZC}N5!u(P-KM|BnOM#SiqIffd( zEI76nkH14smQ&PyZRmCl?lq)17HhItMh`$|5)SSdiB<_ei7#v9Y;q>~C!`L4e6Zz9 z7DC15dcSWw0;60c?Ni3y?%x^{)YX!x*9(^%+l&C`zcXtgLH=R!8x-V zYLe3>eZkgu=tiiy;ixIAtjoBCPtgyzaijWw+9n>Wz}dUHP3G&lRE79=W%FO*%^2lA zsn*`CS{JxF6iN(_ncTVW$E3tW`}8!+j8IMw_p^yH@lm`KYV64$^V9|45v5^X=1AJ+b!P5vOuv zlnIg&!AH#uxF=;8>7(Ws2pWaMlWsYd>3=3A3EJ!GB-}<5@tJ7Bgzbe5hG>pR9Y0J# z<)#dOOwsX~YKy{gh6L!rz-Zk9XFJz26uWATr!bzaapFYYr2PJN&ZjXZdfjPy z!8ULWheE^I4|SLj?h1Etk2PE~1!k#EOVh!$rIB|kX!#;+%TUZg`s_~BOikD4M==^2 z8v1C?nWgeR!X(loN6JsLbtDxY! zC-!dH^1Omk7Y_HDd}&=+}po2#vDf0<(!2rdU(+g%6COk?)Z z2oj{|8cIK+wg16`%dE4)KjJ&zU5be|TB+Zvk?&HC>Uj6Xk5Sgv(&7WAG_}!knngv5 zQ0!UQhfM1f9gIa!ilR|+YO?Io#TP_6gg!&*XR{u`>RP&NBJap`R>MiU6;bTOyn|ui z-ceKrDQ(-c2APaG@z$1JsVcea-5pP*_N6i(Z8Rdyua+sC7O!mZ>Yqzhj%YdQQk6fe z*Zk^LXK%}- zX*xbDO46EY;g%MybOZ4Fc6J2|`{}_q14($_r)?^)tq+=DzqJsbt(SSa#Y8!7th^At zVz)szvc9WFftCuB_Popr>hkH$mzu@{i#;>KIj`Mc9IT-ar>f|oJ%ivg;Dlieh*1lJ z(7UW!Bx~3R6G9aYiyZP-Z$9Ls8Gh$7hbhM`(rP+H1X!Nglm&S#|3iLjRQ`?;&7qk| zc6pyNvzoi!pg5)gMU+VY6tDD0k#I)RZ(HYDQ*=B@OcayslQbA!&dSiG_%U?ZgMOKr znbe4$SyeMhu;d6d)TK(L`b5(_hPFJ znpM2aztlM4!C4-iH^3yRz}!UJB4~aK9ib!cEAU*DzPKu+@5_M4mgIPA&b~<{^w20p z;Nf3asGTfFREGKA_%roGtH;iRItPVxs$dZB+0!`|D{26K3~M7R*xTDn7T)pbCfu~4 z^`9=RP!>c}h{z^O04l+wf70b5C@X250>>Q!^Hf@dC`fnhTn>|%FX7)`&UQZHQ&0B zG@;q~nXNm$Yhlw8Uehot2Lfy{jr9r?s zDLchiu%vM`dN`E+`j@fU?t;<_jW05X@{pMb{_KQ+LupA=i3F+K8s4akS>E2LV#5z4 zpsK>b=$ffNKVaZLxP0KtP6ZUFrc13aSqFoHdwskoQHfj_ExFU;NlRgZd{p3Eo{wEa zYpVs@@RFdefm1GmLMO8K!U#oC*LPt63k7p2k8nlK5x;5xGmb?_mpqtV&%8KSo8Y`sH8YJpU=ZG%+GB>9R>D!I+89ANe^DbVPvtU0w*ZIX6Tz4| zTUjlB&5D&%S-hs3>epZNshmnF2^?#XJJ>B1BZ>L0RP3coU#JrPwSvj!ioLBKZsjw|8OAV5?)-Ha(RE4%uru_qGrPqs<9yM!A`K!S&*Aai*uSpWoL;MVP0Z z4bN(H{HSc-(P@ren$Smn6hhb#|!$q3Lu6IZ$$mbBX3$*+p}% z^}R&s)kL%WMgSl?m-~{#nqFBJ+T5rKU=M~qS5z2(5jmMZfZ>oacKfA$apc@JKpkAm zz4<(7O-TLjXpYHks#~lP*-nPeN3K^@e6XK;%kxaDaOmrN`6XxELl;pc%rNFzq*RKT zQIk4OB@$@ADf=aWl?;@h2LPJAdy_BADQ3rGQ3HT+sG^yarW^y<35UE#v=lp+3YyXW z$QetVqqS4S{4b{X_=aZ((9JWf+z%frIr6xO*(Os!Pl9LF)rKP&CN1!mARGaSxE@BQ z2wcN^xW~;iURg&-9wh}qKSj(;IFM#lubZkw-Ns_E@R@n8%b%FYrQgS1kY}5v08hf& z`vjTBW9j=eQ*z?5foppOL!xu=8LqT)Y#>KhaD0T`l%#quco^U+U<1707^D9kcEMJt)!8mwaZJF9a6PD{rd{jgNZdxCAVkt z5(o#+_@44?YeW#sbK}U#acM0xxi&eWbG_xBu^gM>$hlG>0#q+1?u#k*G-vrJoUrL3 zsxY-z?TU9z2;azPD&tgb9VKc?ckM3CecK)DX6#&*?e#y+Rm4FHL@A4I19xV8B+pUE zC;++4 zW(HZV3Dzk~lgj(>Rm1*?}vbH2+I{g`4!)(Rek7G?YJ;6 z)^F$JBt=S7#MJcUhPm~$+L_N~p3SY(nYtZ;7SfM?kgrV<544w=(KG6l*DRMMtDTu9 z3nNFJE9Y`;hQHG3nTu`Jt|qHr<@SZnmW^p2RW?(1i5P$qhHr%~#%dV~(zI>h6d|X= zyJr>~CAzVMGueOk4bFcCfR##6KTKDseZ_gn;A5YJ)0`Ene`{@NuXx+8=7Qe{_61(Z z=R}w4mG)}RfnUB2RC8-|@XIu0W;*6rrA2zp)iKklsVNpp)b1*sOexTtkXqSZzkY*l zhbwPLnON+%W(lc!Oe+p$zGSjh+;W_g>3L7jDY z{pXX-Vi^Ht1mb#6V572lCU%yI_MF7xC#JJ@(Oq`^P_cS5HVtz{fj9F1zbH-~If1lR7@zJawMLH74sdMvi?QEcclj z=B=-kd69!^*AKbvJ>Ut5wDxc~D7|h3_Yi|)x!8jPzAJ-s$Sdk{hbrf^ zk3MDw_xV}IhMg32W)g_xiVsB#ORj+Q#B$KAaE7{C=AW3}AmDU@J<$R%b3FrmnP3>h z#Btkw3WfZA^P2d04sKyoz{*Ur7BXD@E2jz>9E#}0P=!s71?F2*jy>Qz(=LMd@u=zk z(U;L2rM2c@8Q$1n8~u*T%Hawt`UaCU=E7*X&%W>PMuzsZHmIr$^#=Chk-AW=lOIyZ zK2xoH&+K4i>$QB8Qe|^TV@Am8%f?A91_C^jr3wGNW%x}JD{x8^N7YQFaVp1lRm&Y} z&kiMk;!~q=ogD+EoW`ABd}Ojp1!SnuMc;K*9E=eRkPb6S> zP#F6-h40^w=W|_71yAPdhc2NM&mKm5^2gPY85qf>iHQkyybl(`?4eQ$XJHW;VL=x; zeV!*u74;M|GogKEMIf?je?4KtZ1!c7N^tYSQN2y1>WJ2DCQURVrD}fVMX5#R;OL-# z?nGw-IeAmnZAk!XWk|8hm2OEvt@fWauV83Fq0po^$=4>ATqPk~ilEAUnn|P@A6NJ@ zb9qV;*-VHdh0K(gD>3Z)Ziqll7Qvr&w6(nsun3g7!3thBa7!ccd_0ULZ0InxwfFF( zXYgjf_9a4Hr35W`JL~txlXa>)n zb?{|jF@xu$mCNbI5A`dMt_Z7Ne0t{{Okd=!PU9W@2FtKgu>jo6pxnF1srJ^T<8gZP z?GJ6>rLe`x0{WArn_z@}vy3s4TSKqLY~X9{ujW4W#M06d zLS^mOQV;W_la3KxH0gB*>m^#3#Z0$XqpvPz;jO79$UPNu)pF2JL0f>(c2ltj?h~{} zb?@4pM@h8(!M9lV6 zeU*wRyFIxyVP*r5X4`h;uM7^g?hc;QM5H=EZ8``%p~9&ZvX&O-5B{AKUi3 zHe*mgLYQclXq{?m{_}|whNG445i9c- zj}6;FZul1!v2R-!l&j^}dtsIZu2hLa)M4x% zB!}cptM5%%0WMwH=Emy*6LqoQi{8BeLwoO_O_swwhr%0m^S~Z}z)eM&55+&G2F$!gunUf%RtZFK=3x-n0d}zxG`fxVSawiA`v!~jS&p0 z!aA}rBxipi?{^pi6WrN9YH1iL^ip$R-EMzll(~OpWPH0jriPs7#T5 zJ-UlI-3e2BuC($s%JdNSO3ypF7wlGUqy{WU*jd`PzVgMSDqv{Z;rMfvD1HJp&w+@5 z=K_9eM{p6w#SmEGyMPirq`>-eC zw9yN?Wd1;|nF%-seS{=dmZ>0Bx-vC;Vej63#w%aNf5~(EXlC$U86?xSs>ho(u*udD z>rZy8<1aryxWZ+@NK3{TZi2ON{1J=x{b?Y$*uWV`R>g-8r|@NSh2o&p@AtQx;Jb4y zx$&LrTfUTf&<92gK#6X=)J`!~3cucU+`PHD1+y}Z6_@v=1*{j7@qka`#z*;PEgC0) zyfh}?Ctk_drcx%R7V7uBFq*6OJahLqs#VtGMis$xGp*X6@wT9H1YzZ!KHCKb{!`S3 z4L1Pl^V*CwU`9aZh_}u(rW`jEd2tmq#n4v{JQwg9gzP4Qvn*eolA*wk&iUq8YoDhDxs_h)u@w~ z6w&}ct^{}9B(MJt&0>O5(h@$CR!Ze%;vYRCI1u#!Jrb?3c#CR}0e24T5Txq*l|0HR zE_rurMERjeehBmJy}C?K)cYB~+-AUKlLdbc?Qn1ri}JjHAH1hE+x3zp9g|PTjZb#x*=gX*ME;w=wBsy{TBfftwYPG$r%6;QcER|e zHQX%mBy9^S6gUH*`n9w(;eC=Q5uZ&7=y)gO&snDH7l5#xBSHk61nUUD?#mm)sN$8Y z>P9Q8aoV0V3w7~mEbN7nh}+!EcgWZ#uUv+mX?0Y`D@xW$b@B%9{h9h0PO&Ji4mQtw z9uc(KrC}fWr*#B}JcSX=CRd-61DP(n`z|CW-l^Q%5rHuFY#TC-HVPbbMK;rX8QFXt z2iM{$d3>{)H7b4$M9#6*g(!0Pnt@^cvrb_ZgG=YMp?jO zpr*+UV~Fvc3%e~nO9$j$c=H}Ui}dR*6pL2a3{Sw7)$!5F2T-@t-3{1f?$p|-lrsZb z_~pSyC>(dj!>y1MtO9EJ#rn9Ty4RifE|auWDi-Tjs%aPpVz${l9;mfc!Xc0`pXYTz zYG-Fztfg3niJr8<#Fgcfl(9$6qITIciT--AZNL*N`ljM?y*#8R&(1tm*Q*B0n1lB(0CF5DFz?HPZ~k3EDvLBY8Hk~#`r%P zQu?BhCZ(*egKY9;YBFfJeJ_8=tcUCf$ z_ltZ#?g|*A)5)#!TKdw*ChMG6F}OdSg`F+L_wg^zuD8EX8uUD!%%d9_p!o(cC#{F_ z#?v1G?GBl5m;6z;YhYSSS5@$o2$Ua^oio6+b)?98^8%oI+3^-xy{k7XDKSqEm7LZD^pQ-=6+;#FVNt({X z`Ho#UBVPUc#Vkvp+r)R8lZJ#Hoz#;q75N}R(hd3jzvE){XTR22!~3L*mMuxdugsiu zk$F~NmTS0#JnGY1$jsxdt(48Eh5ut5VQ(8hUg7 z;o8opNT45G&B=HvE9+-K_MwP481l^XVQG!(!)J%|yv6lCS=Mk6{%tNv0I(yYmLC(l z^A7S98`IapJTYD!sjI0O1a(67>Z{D*VD2U|9*F+>!q;)ixLd2+RIu08pj;X$TQV)x z5;4r@Tt9`>5iSCgcnF^)@1ZM7PnLi>ih0-H`$#gI)Fdz z2=>UHUG)i@I4>F=KpO`_&-_Y{2y6%{t2mAp?>1z`k@zq z(Lsz&89#iKt$F?PYel#2jg-)xXTXvFxh3v@$I}?c9IS^x_BF_Q0sa>|`@h)~@bB>0 z-(LE^Z_fC89R8ISmcPC9x0h}L#P~P%_xvwMqrY?O-?{Z)>h}9PRsNkS|4x;lX8P~8 z%l>~kfqq4pbMpPu_4%_sEiEksJF_rQz}DM=`Wbz}o=(1oKp;TR&g}R^0irb91LbtV;TGs#x$bC1j-dTVkMKWk=%#9F zXgC7}=Z-F;=={T!0Wb5-0pNeuaBxk+{U|VQ3wujY?7{e^Zm`C_b;WMah8s{S!hE<# zrt~>n@$&K#NASIGn(FNS2wH-HP@+?GRAxg^b4v?v$@|+DJ8%RnJ}nJ_wi$?G0%#DP z%z3bWXgB!wUlg3br>y4UX$0T1XBo@Y1M3#Ks80=jAFd~>hpUyYbIa|iwq4u6lEX*o zQ|RiBfQpVkn=4=*ip$K~;_P^Dh1-hD1-=+}@bf{Vv*2cu=*UkSZgea&GP|0=*WZ{5 z;_m~P>BeyhXf{hgIbainJ1)U=hf=9kpc^KWw%h+2kR>v4{;N|kSvzxqT$TUaD}-Gw7b8-Hn=s_PW@$^#)+sh_>L;wgrzn_CwB? z$)9q4+x8Wj;3N;id6TgRL=EMAQlOGaa2T`-qdT-AaGktDdGWlo!SM&RAFYqQ%JXqM zRqwOit;ou}VDPO))~Rzvd+mP?`FL;9dWXAB%f+|1;!l^y_mvG^*YUGGy1D9Y;rnCv zKOR1I+jnH))!|nk&h1k}-D3H0Ro=~)IzL^DGe!=H3lr?X<$ zXC4X&8kUC)i;(^8KNWvkUM^!ZD(vmzajQut#;}=fI#YxQe$bOE@a9cO%G%|LnK4si z<1>DiV?au6S<}tNuSZ!@#Rsb(sPAkc0sr!JQSVWZ4h;xbuckGPW z2aQly%c0U8w6Q~^)KsylS@YvapLQkq)0o({C^!3{62@r2_~bI3!!Wh$sf|)@ZEij( zDLaNW_{+9aZ?|o^iRa(#PFKKG=!l1VE4A`G_77}%cPG`UaqMa`fBji!r~At*7cXYh zU#lKzYU1pyO=-PG?3%fDHGE{z>S*>g(PDD*iQVDoMoteQG3JlH)L(Q>xEM6c(xe4L(il2~XgsQ-P@*p;?tPlJkZn)}!-WVy<(37SaUv6b;yUU4?$c>3A! z<~iDa!|7BqSucs$-P_yy1;dbe5rW3&Y`%#vug8X3bQ`rz^AbCkw>gjLTVWIjsxQq2 z3u0{T;-i24DZ0+e%8I;{P+t5gSv#AC#b*2Omy>&b^}~j5T5#R$CE#p{w9G-nMX>b=Q@7pzF?6FhjG`2(-d$hpGHRFbQQu0<=g#r^s0sD zRj*{&QFpKp%rkvz@|^V;WDN+Ubw+)|*;!?!#cL!T3X;0~?1!rTJtfcQUEX;lJKg?P z8t3ffET&25g|4yBm)VS|B!YuQvOX_tt*Lk|{ODuq(IYT_-6vO8E<_Pol|LO3D+||u zCl@bj?{+K;bL<(weYrgN;Qa0Z*RX(@Z;$p+r6EO{*HQWFy)V)e4yhaK&qUMp)7u>E zrNDQuPlsFkTS#?$T%R}E|7Bd&yKOEH_AVBlGVF?P|MH=i{#EN#D)v&ngH7<_H~fob zjU%X3^NY&Zv*?94_n~d+N{aaf1%!P4Y80(y(>6ohTlGbH(AKBVT?s^}rh##ALz!*t z)Ld@H^Ep>VZI7})x_ev-^79bIzE?Xw#oi*?p{Mi5uPk=l-=vHwLUX(JCaB^YFF!w& zk&$7KnqN&CJ|^?nIR*Y3$jKvCT=>zb`!6Y`-OnmdhONQbLb=p^TCW9@NEmiK_S=g^ zumq+96Pffo7oqsgehd`q8T5K(+1s~)f;M!8|A1}y%Dk&U;Y-8LoiWxnMvu1b660bR zi6CxVatky}0^I#HA_9_mfeG42#HNCd?_MJP!5%m$U&aO^< zjgH{v+SQzU2KzPhkny>_=~h2}@h8nyX&rIr@lfnAk>aMuzt=_F*e6^1g}e@m?hlK8 zB@}M8QDutd0=}vhemZ`P9~*nWyCu zdS@w}Qo#w0u3H?=U~}069o^k!H%B|e3S{r8K&F$c);3@F((|p>H%ZYqNQu{2Au_SA zMjZyBKf_2G1)22(F22RVLmYyru?JWQfh9Ww!NqN4_S{31d@0T0v78bkn0;afK~*c@NWN)6OJ8$m>$`E$?Avp?_>u8SXMu( z{_y138>=H5iwfuR2E`_4|7qcUTf3f6qYcl0*nRJz-}>E9YcD2>BSL)--z82WfUL z>*D5-fa|gF?uj7PH=xNESY-Syi2w9r*4y9CZlL@SvfcjhKZ?}hC5!^EgRD)mr?~e; z{pmZe6b9S=$L*UpKJiMavMGR?xy&QI4r^DnFCo?bjsRk-b;pPSKcPwFq* zDXAw8?Rr%A_9E)9jCS~OoJ^?xSDyC2bjN?3a8nv=VoU|`{zXa2Q)8lw#vVvIRvt6^Tu7~+RlFs#krbedWY_xYnPoqG^`9Rne~s z)JZ-}6!+>CfT>*0?do*G`@e=%kmz*XLMHBB4j?5Bzl%|4*Zu zvYn4VeD_hdg_s?dwP`>gC+|c48qcE58)ff({aa2L#a({Wp{V;{@@Lr{u3oaZSorJB G2mc4UW$C^E literal 11375 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 Tg7rXxm`?4P=F{>gFW>w>HlS@b diff --git a/frontend/__snapshots__/exporter-exporter--trends-line-insight-legend--light.png b/frontend/__snapshots__/exporter-exporter--trends-line-insight-legend--light.png index b2c01e25a4548a4cb0307467d8e4e0b3efa56bba..bbb59b784ba62a9afbe99034c94cba3b09e5dd92 100644 GIT binary patch literal 13770 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 J@2t)J{{pOCRM7wc literal 11027 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 N`L_D4{F`P^{}=Z71WW(` From 5d5be04a2bd8fea3ab39e32846921dff62e7477e Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 16:18:53 +0000 Subject: [PATCH 14/26] Update query snapshots --- posthog/api/test/__snapshots__/test_api_docs.ambr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posthog/api/test/__snapshots__/test_api_docs.ambr b/posthog/api/test/__snapshots__/test_api_docs.ambr index a5f9b394809ae..6ef31c6530176 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 "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 "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.', From e1e7f858be4a304909ce38de1a6d0e7ea25ea37d Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 16:43:51 +0000 Subject: [PATCH 15/26] Update query snapshots --- posthog/api/test/__snapshots__/test_api_docs.ambr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posthog/api/test/__snapshots__/test_api_docs.ambr b/posthog/api/test/__snapshots__/test_api_docs.ambr index 6ef31c6530176..a5f9b394809ae 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.', From 31f34cfe019279cc9f29cadc79529a3123da4827 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 17:09:11 +0000 Subject: [PATCH 16/26] Update query snapshots --- posthog/api/test/__snapshots__/test_api_docs.ambr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posthog/api/test/__snapshots__/test_api_docs.ambr b/posthog/api/test/__snapshots__/test_api_docs.ambr index a5f9b394809ae..6ef31c6530176 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 "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 "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.', From f6280ff588edb0eed134dfc7997ddcb6912af1b8 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 17:31:02 +0000 Subject: [PATCH 17/26] Update UI snapshots for `chromium` (1) --- ...rter--trends-line-insight-legend--dark.png | Bin 14104 -> 11375 bytes ...ter--trends-line-insight-legend--light.png | Bin 13770 -> 11027 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/frontend/__snapshots__/exporter-exporter--trends-line-insight-legend--dark.png b/frontend/__snapshots__/exporter-exporter--trends-line-insight-legend--dark.png index 8ac461d15d0bbe78b06112735d2d7edc23f82143..fe89947c699ee507d932e63c45c8343a0bdeff7f 100644 GIT binary patch literal 11375 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 Tg7rXxm`?4P=F{>gFW>w>HlS@b literal 14104 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 G2mc4UW$C^E diff --git a/frontend/__snapshots__/exporter-exporter--trends-line-insight-legend--light.png b/frontend/__snapshots__/exporter-exporter--trends-line-insight-legend--light.png index bbb59b784ba62a9afbe99034c94cba3b09e5dd92..b2c01e25a4548a4cb0307467d8e4e0b3efa56bba 100644 GIT binary patch literal 11027 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 N`L_D4{F`P^{}=Z71WW(` literal 13770 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 J@2t)J{{pOCRM7wc From 82f0c252c11764eada06ef6b34cf2522300514a6 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 17:33:17 +0000 Subject: [PATCH 18/26] Update query snapshots --- posthog/api/test/__snapshots__/test_api_docs.ambr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posthog/api/test/__snapshots__/test_api_docs.ambr b/posthog/api/test/__snapshots__/test_api_docs.ambr index 6ef31c6530176..a5f9b394809ae 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.', From f062da25322fd82469ca7c1ab857fbec4a83b466 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 17:49:58 +0000 Subject: [PATCH 19/26] Update UI snapshots for `chromium` (1) --- ...rter--trends-line-insight-legend--dark.png | Bin 11375 -> 14104 bytes ...ter--trends-line-insight-legend--light.png | Bin 11027 -> 13770 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/frontend/__snapshots__/exporter-exporter--trends-line-insight-legend--dark.png b/frontend/__snapshots__/exporter-exporter--trends-line-insight-legend--dark.png index fe89947c699ee507d932e63c45c8343a0bdeff7f..8ac461d15d0bbe78b06112735d2d7edc23f82143 100644 GIT binary patch literal 14104 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 G2mc4UW$C^E literal 11375 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 Tg7rXxm`?4P=F{>gFW>w>HlS@b diff --git a/frontend/__snapshots__/exporter-exporter--trends-line-insight-legend--light.png b/frontend/__snapshots__/exporter-exporter--trends-line-insight-legend--light.png index b2c01e25a4548a4cb0307467d8e4e0b3efa56bba..bbb59b784ba62a9afbe99034c94cba3b09e5dd92 100644 GIT binary patch literal 13770 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 J@2t)J{{pOCRM7wc literal 11027 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 N`L_D4{F`P^{}=Z71WW(` From f853c8313ab6ed0605e379b87b0a77e289ae183d Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 18:23:03 +0000 Subject: [PATCH 20/26] Update query snapshots --- posthog/api/test/__snapshots__/test_api_docs.ambr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posthog/api/test/__snapshots__/test_api_docs.ambr b/posthog/api/test/__snapshots__/test_api_docs.ambr index a5f9b394809ae..6ef31c6530176 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 "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 "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.', From a4c79dd25cc74d418c180a907c00176468627f0e Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 18:49:12 +0000 Subject: [PATCH 21/26] Update query snapshots --- posthog/api/test/__snapshots__/test_api_docs.ambr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posthog/api/test/__snapshots__/test_api_docs.ambr b/posthog/api/test/__snapshots__/test_api_docs.ambr index 6ef31c6530176..a5f9b394809ae 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.', From 8205d70f1c6a91556a86b9cf2e3dae08530ceca7 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 20:18:29 +0000 Subject: [PATCH 22/26] Update query snapshots --- .../transforms/test/__snapshots__/test_in_cohort.ambr | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/posthog/hogql/transforms/test/__snapshots__/test_in_cohort.ambr b/posthog/hogql/transforms/test/__snapshots__/test_in_cohort.ambr index 06e46e0ca30b0..f018e96ef067a 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, [6]))) 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, [4]))) 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, [6])) AS __in_cohort ON equals(__in_cohort.cohort_person_id, person_id) + WHERE in(cohort_id, [4])) 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, [7]))) 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, [5]))) 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, [7])) AS __in_cohort ON equals(__in_cohort.cohort_person_id, person_id) + WHERE in(cohort_id, [5])) AS __in_cohort ON equals(__in_cohort.cohort_person_id, person_id) WHERE and(1, equals(__in_cohort.matched, 1)) LIMIT 100 ''' From ae329abdc858310e21f8c178b53a624f7cc34d47 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 20:39:22 +0000 Subject: [PATCH 23/26] Update query snapshots --- posthog/api/test/__snapshots__/test_api_docs.ambr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posthog/api/test/__snapshots__/test_api_docs.ambr b/posthog/api/test/__snapshots__/test_api_docs.ambr index a5f9b394809ae..6ef31c6530176 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 "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 "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.', From 9ee3ad98c9ef35ef838151fa210590267ad55e8d Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 20:56:42 +0000 Subject: [PATCH 24/26] Update UI snapshots for `chromium` (1) --- ...rter--trends-line-insight-legend--dark.png | Bin 14104 -> 11375 bytes ...ter--trends-line-insight-legend--light.png | Bin 13770 -> 11027 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/frontend/__snapshots__/exporter-exporter--trends-line-insight-legend--dark.png b/frontend/__snapshots__/exporter-exporter--trends-line-insight-legend--dark.png index 8ac461d15d0bbe78b06112735d2d7edc23f82143..fe89947c699ee507d932e63c45c8343a0bdeff7f 100644 GIT binary patch literal 11375 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 Tg7rXxm`?4P=F{>gFW>w>HlS@b literal 14104 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 G2mc4UW$C^E diff --git a/frontend/__snapshots__/exporter-exporter--trends-line-insight-legend--light.png b/frontend/__snapshots__/exporter-exporter--trends-line-insight-legend--light.png index bbb59b784ba62a9afbe99034c94cba3b09e5dd92..b2c01e25a4548a4cb0307467d8e4e0b3efa56bba 100644 GIT binary patch literal 11027 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 N`L_D4{F`P^{}=Z71WW(` literal 13770 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 J@2t)J{{pOCRM7wc From c0882d8d8118868c31e46d1c9bd5e887d127ec9e Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 21:15:55 +0000 Subject: [PATCH 25/26] Update UI snapshots for `chromium` (1) --- ...rter--trends-line-insight-legend--dark.png | Bin 11375 -> 14104 bytes ...ter--trends-line-insight-legend--light.png | Bin 11027 -> 13770 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/frontend/__snapshots__/exporter-exporter--trends-line-insight-legend--dark.png b/frontend/__snapshots__/exporter-exporter--trends-line-insight-legend--dark.png index fe89947c699ee507d932e63c45c8343a0bdeff7f..8ac461d15d0bbe78b06112735d2d7edc23f82143 100644 GIT binary patch literal 14104 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 G2mc4UW$C^E literal 11375 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 Tg7rXxm`?4P=F{>gFW>w>HlS@b diff --git a/frontend/__snapshots__/exporter-exporter--trends-line-insight-legend--light.png b/frontend/__snapshots__/exporter-exporter--trends-line-insight-legend--light.png index b2c01e25a4548a4cb0307467d8e4e0b3efa56bba..bbb59b784ba62a9afbe99034c94cba3b09e5dd92 100644 GIT binary patch literal 13770 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 J@2t)J{{pOCRM7wc literal 11027 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 N`L_D4{F`P^{}=Z71WW(` From cc88867e473638b7519c9a9abb7b39892b855d9e Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 21:53:41 +0000 Subject: [PATCH 26/26] Update query snapshots --- posthog/api/test/__snapshots__/test_api_docs.ambr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posthog/api/test/__snapshots__/test_api_docs.ambr b/posthog/api/test/__snapshots__/test_api_docs.ambr index 6ef31c6530176..a5f9b394809ae 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.',