From c7dc6a115ab7b034f589a87d52b5b201c18c0772 Mon Sep 17 00:00:00 2001 From: Tom Owers Date: Thu, 17 Oct 2024 09:49:35 +0100 Subject: [PATCH] feat(bi): Insight variables rollups on dashboards (#25545) Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- ...el-top-to-bottom-breakdown-edit--light.png | Bin 162983 -> 162492 bytes ...-pipeline-node-new-hog-function--light.png | Bin 130134 -> 127359 bytes frontend/src/lib/api.ts | 16 +- .../Cards/InsightCard/InsightCard.tsx | 6 + .../Cards/InsightCard/InsightMeta.tsx | 6 +- frontend/src/queries/Query/Query.tsx | 15 +- .../nodes/DataNode/dataNodeLogic.test.ts | 62 +++- .../queries/nodes/DataNode/dataNodeLogic.ts | 11 +- .../nodes/DataTable/dataTableLogic.test.ts | 1 + .../Components/Variables/Variables.tsx | 105 +++++- .../Components/Variables/addVariableLogic.ts | 23 +- .../Components/Variables/variableDataLogic.ts | 22 ++ .../Components/Variables/variablesLogic.ts | 104 ++++-- .../DataVisualization/DataVisualization.tsx | 37 ++- .../dataVisualizationLogic.ts | 8 +- .../queries/nodes/InsightViz/InsightViz.tsx | 6 +- frontend/src/queries/query.ts | 24 +- frontend/src/queries/schema.json | 6 + frontend/src/queries/schema.ts | 1 + frontend/src/scenes/dashboard/Dashboard.tsx | 2 + .../src/scenes/dashboard/DashboardItems.tsx | 2 + .../scenes/dashboard/dashboardLogic.test.ts | 3 +- .../src/scenes/dashboard/dashboardLogic.tsx | 144 ++++++++- .../dataWarehouseExternalSceneLogic.ts | 2 + frontend/src/scenes/insights/Insight.tsx | 18 +- .../src/scenes/insights/insightDataLogic.tsx | 2 + frontend/src/scenes/insights/insightLogic.tsx | 25 +- .../src/scenes/insights/insightSceneLogic.tsx | 37 ++- frontend/src/scenes/insights/utils/api.ts | 13 +- .../src/scenes/insights/utils/queryUtils.ts | 17 +- frontend/src/scenes/urls.ts | 18 +- frontend/src/types.ts | 4 + mypy-baseline.txt | 304 +++++++++--------- package.json | 2 + pnpm-lock.yaml | 16 + posthog/api/dashboards/dashboard.py | 26 +- posthog/api/insight.py | 23 +- posthog/api/query.py | 13 +- posthog/api/services/query.py | 12 + posthog/api/test/dashboards/test_dashboard.py | 50 +++ posthog/api/test/test_insight.py | 60 ++++ posthog/caching/calculate_results.py | 8 + .../hogql_queries/apply_dashboard_filters.py | 28 ++ posthog/hogql_queries/query_runner.py | 15 + posthog/models/insight.py | 10 +- posthog/schema.py | 1 + posthog/utils.py | 14 + 47 files changed, 1053 insertions(+), 269 deletions(-) create mode 100644 frontend/src/queries/nodes/DataVisualization/Components/Variables/variableDataLogic.ts diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown-edit--light.png b/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown-edit--light.png index 74e8409c16b8be4890f3e19d49b8bf71b2f7a6f8..78ea79ea3f74550c79004e8ec145f94889135282 100644 GIT binary patch delta 124143 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
  • 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 z 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 gSEr=&i(D%yAlOA{`yrm~%^bJe_X%`YMC9 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 diff --git a/frontend/src/lib/components/Cards/InsightCard/InsightMeta.tsx b/frontend/src/lib/components/Cards/InsightCard/InsightMeta.tsx index 6de4f0c2ff6..9ab7a431ff1 100644 --- a/frontend/src/lib/components/Cards/InsightCard/InsightMeta.tsx +++ b/frontend/src/lib/components/Cards/InsightCard/InsightMeta.tsx @@ -44,6 +44,7 @@ interface InsightMetaProps | 'showEditingControls' | 'showDetailsControls' | 'moreButtons' + | 'variablesOverride' > { insight: QueryBasedInsightModel areDetailsShown?: boolean @@ -55,6 +56,7 @@ export function InsightMeta({ ribbonColor, dashboardId, updateColor, + variablesOverride, removeFromDashboard, deleteWithUndo, refresh, @@ -98,7 +100,7 @@ export function InsightMeta({ topHeading={} meta={ <> - +

    {name || {summary}} {loading && ( @@ -130,7 +132,7 @@ export function InsightMeta({ moreButtons={ <> <> - + View {refresh && ( diff --git a/frontend/src/queries/Query/Query.tsx b/frontend/src/queries/Query/Query.tsx index 9a004a84656..7f6e4926f1c 100644 --- a/frontend/src/queries/Query/Query.tsx +++ b/frontend/src/queries/Query/Query.tsx @@ -13,6 +13,7 @@ import { DashboardFilter, DataTableNode, DataVisualizationNode, + HogQLVariable, InsightVizNode, Node, } from '~/queries/schema' @@ -50,10 +51,20 @@ export interface QueryProps { inSharedMode?: boolean /** Dashboard filters to override the ones in the query */ filtersOverride?: DashboardFilter | null + /** Dashboard variables to override the ones in the query */ + variablesOverride?: Record | null } export function Query(props: QueryProps): JSX.Element | null { - const { query: propsQuery, setQuery: propsSetQuery, readOnly, embedded, filtersOverride, inSharedMode } = props + const { + query: propsQuery, + setQuery: propsSetQuery, + readOnly, + embedded, + filtersOverride, + variablesOverride, + inSharedMode, + } = props const [localQuery, localSetQuery] = useState(propsQuery) useEffect(() => { @@ -102,6 +113,7 @@ export function Query(props: QueryProps): JSX.Element | null uniqueKey={uniqueKey} context={queryContext} readOnly={readOnly} + variablesOverride={props.variablesOverride} /> ) } else if (isSavedInsightNode(query)) { @@ -117,6 +129,7 @@ export function Query(props: QueryProps): JSX.Element | null embedded={embedded} inSharedMode={inSharedMode} filtersOverride={filtersOverride} + variablesOverride={variablesOverride} /> ) } else if (isWebOverviewQuery(query)) { diff --git a/frontend/src/queries/nodes/DataNode/dataNodeLogic.test.ts b/frontend/src/queries/nodes/DataNode/dataNodeLogic.test.ts index 4329a529463..e63cfba6f93 100644 --- a/frontend/src/queries/nodes/DataNode/dataNodeLogic.test.ts +++ b/frontend/src/queries/nodes/DataNode/dataNodeLogic.test.ts @@ -2,7 +2,7 @@ import { expectLogic, partial } from 'kea-test-utils' import { dataNodeLogic } from '~/queries/nodes/DataNode/dataNodeLogic' import { performQuery } from '~/queries/query' -import { DashboardFilter, NodeKind } from '~/queries/schema' +import { DashboardFilter, HogQLVariable, NodeKind } from '~/queries/schema' import { initKeaTests } from '~/test/init' jest.mock('~/queries/query', () => { @@ -473,6 +473,40 @@ describe('dataNodeLogic', () => { expect.any(String), expect.any(Function), filtersOverride, + undefined, + false + ) + }) + + it('passes variablesOverride to api', async () => { + const variablesOverride: Record = { + test_1: { + variableId: 'some_id', + code_name: 'some_name', + value: 'hello world', + }, + } + + const query = { + kind: NodeKind.EventsQuery, + select: ['*', 'event', 'timestamp'], + } + + logic = dataNodeLogic({ + key: 'key', + query, + variablesOverride, + }) + logic.mount() + + expect(performQuery).toHaveBeenCalledWith( + query, + expect.anything(), + false, + expect.any(String), + expect.any(Function), + undefined, + variablesOverride, false ) }) @@ -497,6 +531,32 @@ describe('dataNodeLogic', () => { expect.any(String), expect.any(Function), undefined, + undefined, + false + ) + }) + + it("doesn't pass undefined variablesOverride to api", async () => { + const query = { + kind: NodeKind.EventsQuery, + select: ['*', 'event', 'timestamp'], + } + + logic = dataNodeLogic({ + key: 'key', + query, + variablesOverride: undefined, + }) + logic.mount() + + expect(performQuery).toHaveBeenCalledWith( + query, + expect.anything(), + false, + expect.any(String), + expect.any(Function), + undefined, + undefined, false ) }) diff --git a/frontend/src/queries/nodes/DataNode/dataNodeLogic.ts b/frontend/src/queries/nodes/DataNode/dataNodeLogic.ts index 6d1bdfae9ff..25d0f758484 100644 --- a/frontend/src/queries/nodes/DataNode/dataNodeLogic.ts +++ b/frontend/src/queries/nodes/DataNode/dataNodeLogic.ts @@ -28,7 +28,7 @@ import { userLogic } from 'scenes/userLogic' import { dataNodeCollectionLogic, DataNodeCollectionProps } from '~/queries/nodes/DataNode/dataNodeCollectionLogic' import { removeExpressionComment } from '~/queries/nodes/DataTable/utils' import { performQuery } from '~/queries/query' -import { DashboardFilter, QueryStatus } from '~/queries/schema' +import { DashboardFilter, HogQLVariable, QueryStatus } from '~/queries/schema' import { ActorsQuery, ActorsQueryResponse, @@ -66,6 +66,8 @@ export interface DataNodeLogicProps { /** Dashboard filters to override the ones in the query */ filtersOverride?: DashboardFilter | null + /** Dashboard variables to override the ones in the query */ + variablesOverride?: Record | null } export const AUTOLOAD_INTERVAL = 30000 @@ -99,7 +101,7 @@ export const dataNodeLogic = kea([ ], ], })), - props({ query: {} } as DataNodeLogicProps), + props({ query: {}, variablesOverride: undefined } as DataNodeLogicProps), propsChanged(({ actions, props }, oldProps) => { if (!props.query) { return // Can't do anything without a query @@ -214,6 +216,7 @@ export const dataNodeLogic = kea([ queryId, actions.setPollResponse, props.filtersOverride, + props.variablesOverride, pollOnly )) ?? null const duration = performance.now() - now @@ -451,6 +454,10 @@ export const dataNodeLogic = kea([ ], })), selectors(({ cache }) => ({ + variableOverridesAreSet: [ + (_, p) => [p.variablesOverride ?? (() => ({}))], + (variablesOverride) => !!variablesOverride, + ], isShowingCachedResults: [ () => [(_, props) => props.cachedResults ?? null, (_, props) => props.query], (cachedResults: AnyResponseType | null, query: DataNode): boolean => { diff --git a/frontend/src/queries/nodes/DataTable/dataTableLogic.test.ts b/frontend/src/queries/nodes/DataTable/dataTableLogic.test.ts index e2fc4bde772..24d058bd7e8 100644 --- a/frontend/src/queries/nodes/DataTable/dataTableLogic.test.ts +++ b/frontend/src/queries/nodes/DataTable/dataTableLogic.test.ts @@ -67,6 +67,7 @@ describe('dataTableLogic', () => { expect.any(String), expect.any(Function), undefined, + undefined, false ) expect(performQuery).toHaveBeenCalledTimes(1) diff --git a/frontend/src/queries/nodes/DataVisualization/Components/Variables/Variables.tsx b/frontend/src/queries/nodes/DataVisualization/Components/Variables/Variables.tsx index 0a8e45cf687..d17fb419452 100644 --- a/frontend/src/queries/nodes/DataVisualization/Components/Variables/Variables.tsx +++ b/frontend/src/queries/nodes/DataVisualization/Components/Variables/Variables.tsx @@ -1,6 +1,6 @@ import './Variables.scss' -import { IconCopy, IconGear } from '@posthog/icons' +import { IconCopy, IconGear, IconTrash } from '@posthog/icons' import { LemonButton, LemonDivider, LemonInput, Popover } from '@posthog/lemon-ui' import { useActions, useValues } from 'kea' import { FEATURE_FLAGS } from 'lib/constants' @@ -8,17 +8,49 @@ import { LemonField } from 'lib/lemon-ui/LemonField' import { featureFlagLogic } from 'lib/logic/featureFlagLogic' import { copyToClipboard } from 'lib/utils/copyToClipboard' import { useEffect, useRef, useState } from 'react' +import { dashboardLogic } from 'scenes/dashboard/dashboardLogic' + +import { dataNodeLogic } from '~/queries/nodes/DataNode/dataNodeLogic' import { dataVisualizationLogic } from '../../dataVisualizationLogic' import { Variable } from '../../types' import { NewVariableModal } from './NewVariableModal' import { variablesLogic } from './variablesLogic' -export const Variables = (): JSX.Element => { +export const VariablesForDashboard = (): JSX.Element => { const { featureFlags } = useValues(featureFlagLogic) - const { variablesForInsight } = useValues(variablesLogic) + const { dashboardVariables } = useValues(dashboardLogic) + const { overrideVariableValue } = useActions(dashboardLogic) - if (!featureFlags[FEATURE_FLAGS.INSIGHT_VARIABLES] || !variablesForInsight.length) { + if (!featureFlags[FEATURE_FLAGS.INSIGHT_VARIABLES] || !dashboardVariables.length) { + return <> + } + + return ( + <> +
    + {dashboardVariables.map((n) => ( + + ))} +
    + + ) +} + +export const VariablesForInsight = (): JSX.Element => { + const { featureFlags } = useValues(featureFlagLogic) + const { variablesForInsight, showVariablesBar } = useValues(variablesLogic) + const { updateVariableValue, removeVariable } = useActions(variablesLogic) + const { showEditingUI } = useValues(dataVisualizationLogic) + const { variableOverridesAreSet } = useValues(dataNodeLogic) + + if (!featureFlags[FEATURE_FLAGS.INSIGHT_VARIABLES] || !variablesForInsight.length || !showVariablesBar) { return <> } @@ -26,7 +58,14 @@ export const Variables = (): JSX.Element => { <>
    {variablesForInsight.map((n) => ( - + ))}
    @@ -34,10 +73,21 @@ export const Variables = (): JSX.Element => { ) } -const VariableInput = ({ variable, closePopover }: { variable: Variable; closePopover: () => void }): JSX.Element => { - const { showEditingUI } = useValues(dataVisualizationLogic) - const { updateVariableValue } = useActions(variablesLogic) +interface VariableInputProps { + variable: Variable + showEditingUI: boolean + closePopover: () => void + onChange: (variableId: string, value: any) => void + onRemove?: (variableId: string) => void +} +const VariableInput = ({ + variable, + showEditingUI, + closePopover, + onChange, + onRemove, +}: VariableInputProps): JSX.Element => { const [localInputValue, setLocalInputValue] = useState(variable.value ?? variable.default_value ?? '') const inputRef = useRef(null) @@ -59,14 +109,14 @@ const VariableInput = ({ variable, closePopover }: { variable: Variable; closePo value={localInputValue.toString()} onChange={(value) => setLocalInputValue(value)} onPressEnter={() => { - updateVariableValue(variable.id, localInputValue) + onChange(variable.id, localInputValue) closePopover() }} /> { - updateVariableValue(variable.id, localInputValue) + onChange(variable.id, localInputValue) closePopover() }} > @@ -102,6 +152,14 @@ const VariableInput = ({ variable, closePopover }: { variable: Variable; closePo onClick={() => void copyToClipboard(variableAsHogQL, 'variable HogQL')} tooltip="Copy HogQL" /> + {onRemove && ( + onRemove(variable.id)} + icon={} + size="xsmall" + tooltip="Remove variable from insight" + /> + )} } size="xsmall" tooltip="Open variable settings" /> @@ -110,13 +168,35 @@ const VariableInput = ({ variable, closePopover }: { variable: Variable; closePo ) } -const VariableComponent = ({ variable }: { variable: Variable }): JSX.Element => { +interface VariableComponentProps { + variable: Variable + showEditingUI: boolean + onChange: (variableId: string, value: any) => void + variableOverridesAreSet: boolean + onRemove?: (variableId: string) => void +} + +const VariableComponent = ({ + variable, + showEditingUI, + onChange, + variableOverridesAreSet, + onRemove, +}: VariableComponentProps): JSX.Element => { const [isPopoverOpen, setPopoverOpen] = useState(false) return ( setPopoverOpen(false)} />} + overlay={ + setPopoverOpen(false)} + onRemove={onRemove} + /> + } visible={isPopoverOpen} onClickOutside={() => setPopoverOpen(false)} className="DataVizVariable_Popover" @@ -131,6 +211,7 @@ const VariableComponent = ({ variable }: { variable: Variable }): JSX.Element => type="secondary" className="min-w-32 DataVizVariable_Button" onClick={() => setPopoverOpen(!isPopoverOpen)} + disabledReason={variableOverridesAreSet && 'Discard dashboard variables to change'} > {variable.value ?? variable.default_value} diff --git a/frontend/src/queries/nodes/DataVisualization/Components/Variables/addVariableLogic.ts b/frontend/src/queries/nodes/DataVisualization/Components/Variables/addVariableLogic.ts index 396fd3dbc6b..7045f1d2048 100644 --- a/frontend/src/queries/nodes/DataVisualization/Components/Variables/addVariableLogic.ts +++ b/frontend/src/queries/nodes/DataVisualization/Components/Variables/addVariableLogic.ts @@ -1,9 +1,11 @@ -import { actions, kea, path, reducers } from 'kea' +import { actions, connect, kea, key, path, props, reducers } from 'kea' import { loaders } from 'kea-loaders' import api from 'lib/api' import { BooleanVariable, ListVariable, NumberVariable, StringVariable, Variable, VariableType } from '../../types' import type { addVariableLogicType } from './addVariableLogicType' +import { variableDataLogic } from './variableDataLogic' +import { variablesLogic } from './variablesLogic' const DEFAULT_VARIABLE: StringVariable = { id: '', @@ -13,8 +15,17 @@ const DEFAULT_VARIABLE: StringVariable = { code_name: '', } +export interface AddVariableLogicProps { + key: string +} + export const addVariableLogic = kea([ path(['queries', 'nodes', 'DataVisualization', 'Components', 'Variables', 'variableLogic']), + props({ key: '' } as AddVariableLogicProps), + key((props) => props.key), + connect({ + actions: [variableDataLogic, ['getVariables'], variablesLogic, ['addVariable']], + }), actions({ openModal: (variableType: VariableType) => ({ variableType }), closeModal: true, @@ -86,12 +97,18 @@ export const addVariableLogic = kea([ }, ], }), - loaders(({ values }) => ({ + loaders(({ values, actions }) => ({ savedVariable: [ null as null | Variable, { save: async () => { - return await api.insightVariables.create(values.variable) + const variable = await api.insightVariables.create(values.variable) + + actions.getVariables() + actions.addVariable({ variableId: variable.id, code_name: variable.code_name }) + actions.closeModal() + + return variable }, }, ], diff --git a/frontend/src/queries/nodes/DataVisualization/Components/Variables/variableDataLogic.ts b/frontend/src/queries/nodes/DataVisualization/Components/Variables/variableDataLogic.ts new file mode 100644 index 00000000000..8b7fbc8b989 --- /dev/null +++ b/frontend/src/queries/nodes/DataVisualization/Components/Variables/variableDataLogic.ts @@ -0,0 +1,22 @@ +import { kea, path } from 'kea' +import { loaders } from 'kea-loaders' +import api from 'lib/api' + +import { Variable } from '../../types' +import type { variableDataLogicType } from './variableDataLogicType' + +export const variableDataLogic = kea([ + path(['queries', 'nodes', 'DataVisualization', 'Components', 'Variables', 'variableDataLogic']), + loaders({ + variables: [ + [] as Variable[], + { + getVariables: async () => { + const insights = await api.insightVariables.list() + + return insights.results + }, + }, + ], + }), +]) diff --git a/frontend/src/queries/nodes/DataVisualization/Components/Variables/variablesLogic.ts b/frontend/src/queries/nodes/DataVisualization/Components/Variables/variablesLogic.ts index 4c92665b7f9..61f2590242a 100644 --- a/frontend/src/queries/nodes/DataVisualization/Components/Variables/variablesLogic.ts +++ b/frontend/src/queries/nodes/DataVisualization/Components/Variables/variablesLogic.ts @@ -1,15 +1,14 @@ -import { actions, afterMount, connect, kea, key, path, props, reducers, selectors } from 'kea' -import { loaders } from 'kea-loaders' +import { actions, afterMount, connect, kea, key, listeners, path, props, reducers, selectors } from 'kea' import { subscriptions } from 'kea-subscriptions' -import api from 'lib/api' import { FEATURE_FLAGS } from 'lib/constants' import { featureFlagLogic } from 'lib/logic/featureFlagLogic' -import { getVariablesFromQuery } from 'scenes/insights/utils/queryUtils' +import { getVariablesFromQuery, haveVariablesOrFiltersChanged } from 'scenes/insights/utils/queryUtils' import { DataVisualizationNode, HogQLVariable } from '~/queries/schema' import { dataVisualizationLogic } from '../../dataVisualizationLogic' import { Variable } from '../../types' +import { variableDataLogic } from './variableDataLogic' import type { variablesLogicType } from './variablesLogicType' export interface VariablesLogicProps { @@ -23,21 +22,39 @@ export const variablesLogic = kea([ props({ key: '' } as VariablesLogicProps), key((props) => props.key), connect({ - actions: [dataVisualizationLogic, ['setQuery', 'loadData']], - values: [dataVisualizationLogic, ['query'], featureFlagLogic, ['featureFlags']], + actions: [dataVisualizationLogic, ['setQuery', 'loadData'], variableDataLogic, ['getVariables']], + values: [ + dataVisualizationLogic, + ['query', 'insightLogicProps'], + variableDataLogic, + ['variables', 'variablesLoading'], + featureFlagLogic, + ['featureFlags'], + ], }), actions({ addVariable: (variable: HogQLVariable) => ({ variable }), + addVariables: (variables: HogQLVariable[]) => ({ variables }), + removeVariable: (variableId: string) => ({ variableId }), updateVariableValue: (variableId: string, value: any) => ({ variableId, value }), setEditorQuery: (query: string) => ({ query }), + resetVariables: true, + updateSourceQuery: true, }), reducers({ internalSelectedVariables: [ [] as HogQLVariable[], { addVariable: (state, { variable }) => { + if (state.find((n) => variable.variableId === n.variableId)) { + return state + } + return [...state, { ...variable }] }, + addVariables: (state, { variables }) => { + return [...state, ...variables.map((n) => ({ ...n }))] + }, updateVariableValue: (state, { variableId, value }) => { const variableIndex = state.findIndex((n) => n.variableId === variableId) if (variableIndex < 0) { @@ -49,6 +66,16 @@ export const variablesLogic = kea([ return variablesInState }, + removeVariable: (state, { variableId }) => { + const stateCopy = [...state] + const index = stateCopy.findIndex((n) => n.variableId === variableId) + if (index >= 0) { + stateCopy.splice(index) + } + + return stateCopy + }, + resetVariables: () => [], }, ], editorQuery: [ @@ -59,23 +86,11 @@ export const variablesLogic = kea([ }, ], }), - loaders({ - variables: [ - [] as Variable[], - { - getVariables: async () => { - const insights = await api.insightVariables.list() - - return insights.results - }, - }, - ], - }), selectors({ variablesForInsight: [ - (s) => [s.variables, s.internalSelectedVariables], - (variables, internalSelectedVariables): Variable[] => { - if (!variables.length || !internalSelectedVariables.length) { + (s) => [s.variables, s.internalSelectedVariables, s.variablesLoading], + (variables, internalSelectedVariables, variablesLoading): Variable[] => { + if (!variables.length || !internalSelectedVariables.length || variablesLoading) { return [] } @@ -91,9 +106,30 @@ export const variablesLogic = kea([ .filter((n): n is Variable => Boolean(n)) }, ], + showVariablesBar: [ + (state) => [state.insightLogicProps], + (insightLogicProps) => { + return !insightLogicProps.dashboardId + }, + ], }), - subscriptions(({ props, actions, values }) => ({ - variablesForInsight: (variables: Variable[]) => { + listeners(({ props, values, actions }) => ({ + addVariable: () => { + actions.updateSourceQuery() + }, + removeVariable: () => { + actions.updateSourceQuery() + }, + updateVariableValue: () => { + actions.updateSourceQuery() + }, + updateSourceQuery: () => { + if (!values.featureFlags[FEATURE_FLAGS.INSIGHT_VARIABLES]) { + return + } + + const variables = values.variablesForInsight + const query: DataVisualizationNode = { ...values.query, source: { @@ -112,7 +148,8 @@ export const variablesLogic = kea([ }, } - if (!values.featureFlags[FEATURE_FLAGS.INSIGHT_VARIABLES]) { + const queryVarsHaveChanged = haveVariablesOrFiltersChanged(query.source, values.query.source) + if (!queryVarsHaveChanged) { return } @@ -124,6 +161,8 @@ export const variablesLogic = kea([ actions.setQuery(query) } }, + })), + subscriptions(({ actions, values }) => ({ editorQuery: (query: string) => { const queryVariableMatches = getVariablesFromQuery(query) @@ -143,16 +182,25 @@ export const variablesLogic = kea([ } }) }, + query: (query: DataVisualizationNode) => { + if (!values.featureFlags[FEATURE_FLAGS.INSIGHT_VARIABLES]) { + return + } + + actions.resetVariables() + + const variables = Object.values(query.source.variables ?? {}) + + if (variables.length) { + actions.addVariables(variables) + } + }, })), afterMount(({ actions, values }) => { if (!values.featureFlags[FEATURE_FLAGS.INSIGHT_VARIABLES]) { return } - Object.values(values.query.source.variables ?? {}).forEach((variable) => { - actions.addVariable(variable) - }) - actions.getVariables() }), ]) diff --git a/frontend/src/queries/nodes/DataVisualization/DataVisualization.tsx b/frontend/src/queries/nodes/DataVisualization/DataVisualization.tsx index c15e9307680..799a135e5a6 100644 --- a/frontend/src/queries/nodes/DataVisualization/DataVisualization.tsx +++ b/frontend/src/queries/nodes/DataVisualization/DataVisualization.tsx @@ -17,7 +17,14 @@ import { HogQLBoldNumber } from 'scenes/insights/views/BoldNumber/BoldNumber' import { urls } from 'scenes/urls' import { insightVizDataCollectionId, insightVizDataNodeKey } from '~/queries/nodes/InsightViz/InsightViz' -import { AnyResponseType, DataVisualizationNode, HogQLQuery, HogQLQueryResponse, NodeKind } from '~/queries/schema' +import { + AnyResponseType, + DataVisualizationNode, + HogQLQuery, + HogQLQueryResponse, + HogQLVariable, + NodeKind, +} from '~/queries/schema' import { QueryContext } from '~/queries/types' import { ChartDisplayType, ExporterFormat, InsightLogicProps } from '~/types' @@ -32,7 +39,8 @@ import { SideBar } from './Components/SideBar' import { Table } from './Components/Table' import { TableDisplay } from './Components/TableDisplay' import { AddVariableButton } from './Components/Variables/AddVariableButton' -import { Variables } from './Components/Variables/Variables' +import { addVariableLogic } from './Components/Variables/addVariableLogic' +import { VariablesForInsight } from './Components/Variables/Variables' import { variablesLogic } from './Components/Variables/variablesLogic' import { dataVisualizationLogic, DataVisualizationLogicProps } from './dataVisualizationLogic' import { displayLogic } from './displayLogic' @@ -46,6 +54,8 @@ interface DataTableVisualizationProps { the data node logic becomes read only implicitly */ cachedResults?: AnyResponseType readOnly?: boolean + /** Dashboard variables to override the ones in the query */ + variablesOverride?: Record | null } let uniqueNode = 0 @@ -57,6 +67,7 @@ export function DataTableVisualization({ context, cachedResults, readOnly, + variablesOverride, }: DataTableVisualizationProps): JSX.Element { const [key] = useState(`DataVisualizationNode.${uniqueKey ?? uniqueNode++}`) const insightProps: InsightLogicProps = context?.insightProps || { @@ -73,6 +84,7 @@ export function DataTableVisualization({ insightLogicProps: insightProps, setQuery, cachedResults, + variablesOverride, } const dataNodeLogicProps: DataNodeLogicProps = { @@ -81,6 +93,7 @@ export function DataTableVisualization({ cachedResults, loadPriority: insightProps.loadPriority, dataNodeCollectionId: insightVizDataCollectionId(insightProps, key), + variablesOverride, } return ( @@ -91,14 +104,16 @@ export function DataTableVisualization({ logic={variablesLogic} props={{ key: dataVisualizationLogicProps.key, readOnly: readOnly ?? false }} > - + + + @@ -238,7 +253,7 @@ function InternalDataTableVisualization(props: DataTableVisualizationProps): JSX )} - +
    {showEditingUI && isChartSettingsPanelOpen && ( diff --git a/frontend/src/queries/nodes/DataVisualization/dataVisualizationLogic.ts b/frontend/src/queries/nodes/DataVisualization/dataVisualizationLogic.ts index b0ffb32015d..a1a23ac6f0d 100644 --- a/frontend/src/queries/nodes/DataVisualization/dataVisualizationLogic.ts +++ b/frontend/src/queries/nodes/DataVisualization/dataVisualizationLogic.ts @@ -16,6 +16,7 @@ import { ChartSettingsFormatting, ConditionalFormattingRule, DataVisualizationNode, + HogQLVariable, } from '~/queries/schema' import { QueryContext } from '~/queries/types' import { ChartDisplayType, InsightLogicProps, ItemMode } from '~/types' @@ -68,6 +69,8 @@ export interface DataVisualizationLogicProps { context?: QueryContext cachedResults?: AnyResponseType insightLoading?: boolean + /** Dashboard variables to override the ones in the query */ + variablesOverride?: Record | null } export interface SelectedYAxis { @@ -222,6 +225,7 @@ export const dataVisualizationLogic = kea([ query: props.query.source, dataNodeCollectionId: insightVizDataCollectionId(props.insightLogicProps, props.key), loadPriority: props.insightLogicProps.loadPriority, + variablesOverride: props.variablesOverride, }), ['response', 'responseLoading', 'responseError', 'queryCancelled'], themeLogic, @@ -234,11 +238,12 @@ export const dataVisualizationLogic = kea([ query: props.query.source, dataNodeCollectionId: insightVizDataCollectionId(props.insightLogicProps, props.key), loadPriority: props.insightLogicProps.loadPriority, + variablesOverride: props.variablesOverride, }), ['loadData'], ], })), - props({ query: {} } as DataVisualizationLogicProps), + props({ query: { source: {} } } as DataVisualizationLogicProps), actions(({ values }) => ({ setVisualizationType: (visualizationType: ChartDisplayType) => ({ visualizationType }), updateXSeries: (columnName: string) => ({ @@ -559,6 +564,7 @@ export const dataVisualizationLogic = kea([ return insightMode == ItemMode.Edit }, ], + insightLogicProps: [(_state, props) => [props.insightLogicProps], (insightLogicProps) => insightLogicProps], showResultControls: [ (state, props) => [state.insightMode, props.insightLogicProps], (insightMode, insightLogicProps) => { diff --git a/frontend/src/queries/nodes/InsightViz/InsightViz.tsx b/frontend/src/queries/nodes/InsightViz/InsightViz.tsx index aa47a108cd4..ba58d4a16b5 100644 --- a/frontend/src/queries/nodes/InsightViz/InsightViz.tsx +++ b/frontend/src/queries/nodes/InsightViz/InsightViz.tsx @@ -10,7 +10,7 @@ import { insightVizDataLogic } from 'scenes/insights/insightVizDataLogic' import { keyForInsightLogicProps } from 'scenes/insights/sharedUtils' import { ErrorBoundary } from '~/layout/ErrorBoundary' -import { DashboardFilter, InsightVizNode } from '~/queries/schema' +import { DashboardFilter, HogQLVariable, InsightVizNode } from '~/queries/schema' import { QueryContext } from '~/queries/types' import { isFunnelsQuery } from '~/queries/utils' import { InsightLogicProps, ItemMode } from '~/types' @@ -38,6 +38,7 @@ type InsightVizProps = { embedded?: boolean inSharedMode?: boolean filtersOverride?: DashboardFilter | null + variablesOverride?: Record | null } let uniqueNode = 0 @@ -51,6 +52,7 @@ export function InsightViz({ embedded, inSharedMode, filtersOverride, + variablesOverride, }: InsightVizProps): JSX.Element { const [key] = useState(() => `InsightViz.${uniqueKey || uniqueNode++}`) const insightProps: InsightLogicProps = context?.insightProps || { @@ -59,6 +61,7 @@ export function InsightViz({ setQuery, dataNodeCollectionId: key, filtersOverride, + variablesOverride, } if (!insightProps.setQuery && setQuery) { @@ -75,6 +78,7 @@ export function InsightViz({ loadPriority: insightProps.loadPriority, dataNodeCollectionId: insightVizDataCollectionId(insightProps, vizKey), filtersOverride, + variablesOverride, } const { insightMode } = useValues(insightSceneLogic) diff --git a/frontend/src/queries/query.ts b/frontend/src/queries/query.ts index 1ea01c13868..1952432e360 100644 --- a/frontend/src/queries/query.ts +++ b/frontend/src/queries/query.ts @@ -6,7 +6,16 @@ import posthog from 'posthog-js' import { OnlineExportContext, QueryExportContext } from '~/types' -import { DashboardFilter, DataNode, HogQLQuery, HogQLQueryResponse, NodeKind, PersonsNode, QueryStatus } from './schema' +import { + DashboardFilter, + DataNode, + HogQLQuery, + HogQLQueryResponse, + HogQLVariable, + NodeKind, + PersonsNode, + QueryStatus, +} from './schema' import { isAsyncResponse, isDataTableNode, @@ -79,6 +88,7 @@ async function executeQuery( queryId?: string, setPollResponse?: (response: QueryStatus) => void, filtersOverride?: DashboardFilter | null, + variablesOverride?: Record | null, /** * Whether to limit the function to just polling the provided query ID. * This is important in shared contexts, where we cannot create arbitrary queries via POST – we can only GET. @@ -91,7 +101,15 @@ async function executeQuery( !!featureFlagLogic.findMounted()?.values.featureFlags?.[FEATURE_FLAGS.QUERY_ASYNC] if (!pollOnly) { - const response = await api.query(queryNode, methodOptions, queryId, refresh, isAsyncQuery, filtersOverride) + const response = await api.query( + queryNode, + methodOptions, + queryId, + refresh, + isAsyncQuery, + filtersOverride, + variablesOverride + ) if (!isAsyncResponse(response)) { // Executed query synchronously or from cache @@ -124,6 +142,7 @@ export async function performQuery( queryId?: string, setPollResponse?: (status: QueryStatus) => void, filtersOverride?: DashboardFilter | null, + variablesOverride?: Record | null, pollOnly = false ): Promise> { let response: NonNullable @@ -141,6 +160,7 @@ export async function performQuery( queryId, setPollResponse, filtersOverride, + variablesOverride, pollOnly ) if (isHogQLQuery(queryNode) && response && typeof response === 'object') { diff --git a/frontend/src/queries/schema.json b/frontend/src/queries/schema.json index b2538f6daf6..266ca1ec918 100644 --- a/frontend/src/queries/schema.json +++ b/frontend/src/queries/schema.json @@ -7986,6 +7986,12 @@ "$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." + }, + "variables_override": { + "additionalProperties": { + "type": "object" + }, + "type": "object" } }, "required": ["query"], diff --git a/frontend/src/queries/schema.ts b/frontend/src/queries/schema.ts index 1970a06d26b..e156f17d82b 100644 --- a/frontend/src/queries/schema.ts +++ b/frontend/src/queries/schema.ts @@ -1221,6 +1221,7 @@ export interface QueryRequest { */ query: QuerySchema filters_override?: DashboardFilter + variables_override?: Record> } /** diff --git a/frontend/src/scenes/dashboard/Dashboard.tsx b/frontend/src/scenes/dashboard/Dashboard.tsx index d6576eb4fe2..5f9e59ee897 100644 --- a/frontend/src/scenes/dashboard/Dashboard.tsx +++ b/frontend/src/scenes/dashboard/Dashboard.tsx @@ -12,6 +12,7 @@ import { InsightErrorState } from 'scenes/insights/EmptyStates' import { SceneExport } from 'scenes/sceneTypes' import { urls } from 'scenes/urls' +import { VariablesForDashboard } from '~/queries/nodes/DataVisualization/Components/Variables/Variables' import { DashboardMode, DashboardPlacement, DashboardType, QueryBasedInsightModel } from '~/types' import { DashboardHeader } from './DashboardHeader' @@ -124,6 +125,7 @@ function DashboardScene(): JSX.Element {
    )} + )} diff --git a/frontend/src/scenes/dashboard/DashboardItems.tsx b/frontend/src/scenes/dashboard/DashboardItems.tsx index bef19ceff27..1582bcc4948 100644 --- a/frontend/src/scenes/dashboard/DashboardItems.tsx +++ b/frontend/src/scenes/dashboard/DashboardItems.tsx @@ -27,6 +27,7 @@ export function DashboardItems(): JSX.Element { refreshStatus, canEditDashboard, itemsLoading, + temporaryVariables, } = useValues(dashboardLogic) const { updateLayouts, @@ -152,6 +153,7 @@ export function DashboardItems(): JSX.Element { showDetailsControls={placement != DashboardPlacement.Export} placement={placement} loadPriority={smLayout ? smLayout.y * 1000 + smLayout.x : undefined} + variablesOverride={temporaryVariables} {...commonTileProps} /> ) diff --git a/frontend/src/scenes/dashboard/dashboardLogic.test.ts b/frontend/src/scenes/dashboard/dashboardLogic.test.ts index cb60271cae3..81dac66ad03 100644 --- a/frontend/src/scenes/dashboard/dashboardLogic.test.ts +++ b/frontend/src/scenes/dashboard/dashboardLogic.test.ts @@ -306,7 +306,7 @@ describe('dashboardLogic', () => { jest.spyOn(api, 'update') await expectLogic(logic, () => { - logic.actions.updateFiltersAndLayouts() + logic.actions.updateFiltersAndLayoutsAndVariables() }).toFinishAllListeners() expect(api.update).toHaveBeenCalledWith(`api/environments/${MOCK_TEAM_ID}/dashboards/5`, { @@ -329,6 +329,7 @@ describe('dashboardLogic', () => { date_to: null, properties: [], }, + variables: {}, }) }) }) diff --git a/frontend/src/scenes/dashboard/dashboardLogic.tsx b/frontend/src/scenes/dashboard/dashboardLogic.tsx index 17b478a1338..4addf1f04f4 100644 --- a/frontend/src/scenes/dashboard/dashboardLogic.tsx +++ b/frontend/src/scenes/dashboard/dashboardLogic.tsx @@ -23,6 +23,7 @@ import { Link } from 'lib/lemon-ui/Link' import { featureFlagLogic } from 'lib/logic/featureFlagLogic' import { clearDOMTextSelection, isAbortedRequest, shouldCancelQuery, toParams, uuid } from 'lib/utils' import { DashboardEventSource, eventUsageLogic } from 'lib/utils/eventUsageLogic' +import uniqBy from 'lodash.uniqby' import { Layout, Layouts } from 'react-grid-layout' import { calculateLayouts } from 'scenes/dashboard/tileLayouts' import { Scene } from 'scenes/sceneTypes' @@ -31,9 +32,11 @@ import { userLogic } from 'scenes/userLogic' import { dashboardsModel } from '~/models/dashboardsModel' import { insightsModel } from '~/models/insightsModel' +import { variableDataLogic } from '~/queries/nodes/DataVisualization/Components/Variables/variableDataLogic' +import { Variable } from '~/queries/nodes/DataVisualization/types' import { getQueryBasedDashboard, getQueryBasedInsightModel } from '~/queries/nodes/InsightViz/utils' import { pollForResults } from '~/queries/query' -import { DashboardFilter, RefreshType } from '~/queries/schema' +import { DashboardFilter, DataVisualizationNode, HogQLVariable, NodeKind, RefreshType } from '~/queries/schema' import { AnyPropertyFilter, Breadcrumb, @@ -139,7 +142,8 @@ async function getSingleInsight( queryId: string, refresh: RefreshType, methodOptions?: ApiMethodOptions, - filtersOverride?: DashboardFilter + filtersOverride?: DashboardFilter, + variablesOverride?: Record ): Promise { const apiUrl = `api/environments/${currentTeamId}/insights/${insight.id}/?${toParams({ refresh, @@ -147,6 +151,7 @@ async function getSingleInsight( client_query_id: queryId, session_id: currentSessionId(), ...(filtersOverride ? { filters_override: filtersOverride } : {}), + ...(variablesOverride ? { variables_override: variablesOverride } : {}), })}` const insightResponse: Response = await api.getResponse(apiUrl, methodOptions) const legacyInsight: InsightModel | null = await getJSONOrNull(insightResponse) @@ -156,7 +161,7 @@ async function getSingleInsight( export const dashboardLogic = kea([ path(['scenes', 'dashboard', 'dashboardLogic']), connect(() => ({ - values: [teamLogic, ['currentTeamId'], featureFlagLogic, ['featureFlags']], + values: [teamLogic, ['currentTeamId'], featureFlagLogic, ['featureFlags'], variableDataLogic, ['variables']], logic: [dashboardsModel, insightsModel, eventUsageLogic], })), @@ -169,7 +174,7 @@ export const dashboardLogic = kea([ return props.id }), - actions({ + actions(({ values }) => ({ loadDashboard: (payload: { refresh?: RefreshType action: @@ -201,7 +206,10 @@ export const dashboardLogic = kea([ date_to, }), setProperties: (properties: AnyPropertyFilter[] | null) => ({ properties }), - setFiltersAndLayouts: (filters: DashboardFilter) => ({ filters }), + setFiltersAndLayoutsAndVariables: (filters: DashboardFilter, variables: Record) => ({ + filters, + variables, + }), setAutoRefresh: (enabled: boolean, interval: number) => ({ enabled, interval }), setRefreshStatus: (shortId: InsightShortId, loading = false, queued = false) => ({ shortId, loading, queued }), setRefreshStatuses: (shortIds: InsightShortId[], loading = false, queued = false) => ({ @@ -233,8 +241,14 @@ export const dashboardLogic = kea([ setInitialLoadResponseBytes: (responseBytes: number) => ({ responseBytes }), abortQuery: (payload: { dashboardQueryId: string; queryId: string; queryStartTime: number }) => payload, abortAnyRunningQuery: true, - updateFiltersAndLayouts: true, - }), + updateFiltersAndLayoutsAndVariables: true, + overrideVariableValue: (variableId: string, value: any) => ({ + variableId, + value, + allVariables: values.variables, + }), + resetVariables: () => ({ variables: values.insightVariables }), + })), loaders(({ actions, props, values }) => ({ dashboard: [ @@ -248,7 +262,8 @@ export const dashboardLogic = kea([ try { const apiUrl = values.apiUrl( refresh || 'async', - action === 'preview' ? values.temporaryFilters : undefined + action === 'preview' ? values.temporaryFilters : undefined, + action === 'preview' ? values.temporaryVariables : undefined ) const dashboardResponse: Response = await api.getResponse(apiUrl) const dashboard: DashboardType | null = await getJSONOrNull(dashboardResponse) @@ -282,7 +297,7 @@ export const dashboardLogic = kea([ throw error } }, - updateFiltersAndLayouts: async (_, breakpoint) => { + updateFiltersAndLayoutsAndVariables: async (_, breakpoint) => { actions.abortAnyRunningQuery() try { @@ -297,6 +312,7 @@ export const dashboardLogic = kea([ `api/environments/${values.currentTeamId}/dashboards/${props.id}`, { filters: values.filters, + variables: values.insightVariables, tiles: layoutsToUpdate, } ) @@ -432,6 +448,48 @@ export const dashboardLogic = kea([ }, }, ], + temporaryVariables: [ + {} as Record, + { + overrideVariableValue: (state, { variableId, value, allVariables }) => { + const foundExistingVar = allVariables.find((n) => n.id === variableId) + if (!foundExistingVar) { + return state + } + + return { + ...state, + [variableId]: { code_name: foundExistingVar.code_name, variableId: foundExistingVar.id, value }, + } + }, + resetVariables: (_, { variables }) => ({ ...variables }), + loadDashboardSuccess: (state, { dashboard, payload }) => + dashboard + ? { + ...state, + // don't update filters if we're previewing + ...(payload?.action === 'preview' ? {} : dashboard.variables ?? {}), + } + : state, + }, + ], + insightVariables: [ + {} as Record, + { + setFiltersAndLayoutsAndVariables: (state, { variables }) => ({ + ...state, + ...variables, + }), + loadDashboardSuccess: (state, { dashboard, payload }) => + dashboard + ? { + ...state, + // don't update filters if we're previewing + ...(payload?.action === 'preview' ? {} : dashboard.variables ?? {}), + } + : state, + }, + ], temporaryFilters: [ { date_from: null, @@ -466,7 +524,7 @@ export const dashboardLogic = kea([ properties: null, } as DashboardFilter, { - setFiltersAndLayouts: (state, { filters }) => ({ + setFiltersAndLayoutsAndVariables: (state, { filters }) => ({ ...state, ...filters, }), @@ -689,6 +747,44 @@ export const dashboardLogic = kea([ ], })), selectors(() => ({ + dashboardVariables: [ + (s) => [s.dashboard, s.variables, s.temporaryVariables], + ( + dashboard: DashboardType, + allVariables: Variable[], + temporaryVariables: Record + ): Variable[] => { + const dataVizNodes = dashboard.tiles + .map((n) => n.insight?.query) + .filter((n) => n?.kind === NodeKind.DataVisualizationNode) + .filter((n): n is DataVisualizationNode => Boolean(n)) + const hogQLVariables = dataVizNodes + .map((n) => n.source.variables) + .filter((n): n is Record => Boolean(n)) + .flatMap((n) => Object.values(n)) + + const uniqueVars = uniqBy(hogQLVariables, (n) => n.variableId) + return uniqueVars + .map((v) => { + const foundVar = allVariables.find((n) => n.id === v.variableId) + + if (!foundVar) { + return null + } + + const overridenValue = temporaryVariables[v.variableId]?.value + + // Overwrite the variable `value` from the insight + const resultVar: Variable = { + ...foundVar, + value: overridenValue ?? v.value ?? foundVar.value, + } + + return resultVar + }) + .filter((n): n is Variable => Boolean(n)) + }, + ], asDashboardTemplate: [ (s) => [s.dashboard], (dashboard: DashboardType): DashboardTemplateEditorType | undefined => { @@ -731,10 +827,15 @@ export const dashboardLogic = kea([ apiUrl: [ () => [(_, props) => props.id], (id) => { - return (refresh?: RefreshType, filtersOverride?: DashboardFilter) => + return ( + refresh?: RefreshType, + filtersOverride?: DashboardFilter, + variablesOverride?: Record + ) => `api/environments/${teamLogic.values.currentTeamId}/dashboards/${id}/?${toParams({ refresh, filters_override: filtersOverride, + variables_override: variablesOverride, })}` }, ], @@ -947,7 +1048,7 @@ export const dashboardLogic = kea([ }, })), listeners(({ actions, values, cache, props, sharedListeners }) => ({ - updateFiltersAndLayoutsSuccess: () => { + updateFiltersAndLayoutsAndVariablesSuccess: () => { actions.loadDashboard({ action: 'update' }) }, setRefreshError: sharedListeners.reportRefreshTiming, @@ -1046,7 +1147,10 @@ export const dashboardLogic = kea([ insight, dashboardId, uuid(), - 'force_async' + 'force_async', + undefined, + undefined, + values.temporaryVariables ) dashboardsModel.actions.updateDashboardInsight(refreshedInsight!) // Start polling for results @@ -1138,7 +1242,8 @@ export const dashboardLogic = kea([ queryId, 'force_cache', methodOptions, - action === 'preview' ? values.temporaryFilters : undefined + action === 'preview' ? values.temporaryFilters : undefined, + action === 'preview' ? values.temporaryVariables : undefined ) if (action === 'preview' && polledInsight!.dashboard_tiles) { @@ -1187,8 +1292,8 @@ export const dashboardLogic = kea([ eventUsageLogic.actions.reportDashboardRefreshed(dashboardId, values.newestRefreshed) }, - setFiltersAndLayouts: ({ filters: { date_from, date_to } }) => { - actions.updateFiltersAndLayouts() + setFiltersAndLayoutsAndVariables: ({ filters: { date_from, date_to } }) => { + actions.updateFiltersAndLayoutsAndVariables() eventUsageLogic.actions.reportDashboardDateRangeChanged(date_from, date_to) eventUsageLogic.actions.reportDashboardPropertiesChanged() }, @@ -1203,12 +1308,13 @@ export const dashboardLogic = kea([ // reset filters to that before previewing actions.setDates(values.filters.date_from ?? null, values.filters.date_to ?? null) actions.setProperties(values.filters.properties ?? null) + actions.resetVariables() // also reset layout to that we stored in dashboardLayouts // this is done in the reducer for dashboard } else if (source === DashboardEventSource.DashboardHeaderSaveDashboard) { // save edit mode changes - actions.setFiltersAndLayouts(values.temporaryFilters) + actions.setFiltersAndLayoutsAndVariables(values.temporaryFilters, values.temporaryVariables) } } @@ -1305,6 +1411,10 @@ export const dashboardLogic = kea([ setDates: () => { actions.loadDashboard({ action: 'preview' }) }, + overrideVariableValue: () => { + actions.setDashboardMode(DashboardMode.Edit, null) + actions.loadDashboard({ action: 'preview' }) + }, })), urlToAction(({ values, actions }) => ({ diff --git a/frontend/src/scenes/data-warehouse/external/dataWarehouseExternalSceneLogic.ts b/frontend/src/scenes/data-warehouse/external/dataWarehouseExternalSceneLogic.ts index 17da8d174d3..77f809d35bf 100644 --- a/frontend/src/scenes/data-warehouse/external/dataWarehouseExternalSceneLogic.ts +++ b/frontend/src/scenes/data-warehouse/external/dataWarehouseExternalSceneLogic.ts @@ -104,6 +104,7 @@ export const dataWarehouseExternalSceneLogic = kea - {isObject(filtersOverride) && ( + {(isObject(filtersOverride) || isObject(variablesOverride)) && (
    - You are viewing this insight with filters from a dashboard + + You are viewing this insight with{' '} + {isObject(variablesOverride) ? 'variables' : 'filters'} from a dashboard + - Discard dashboard filters + Discard dashboard {isObject(variablesOverride) ? 'variables' : 'filters'}
    @@ -83,6 +90,7 @@ export function Insight({ insightId }: InsightSceneProps): JSX.Element { insightProps, }} filtersOverride={filtersOverride} + variablesOverride={variablesOverride} /> diff --git a/frontend/src/scenes/insights/insightDataLogic.tsx b/frontend/src/scenes/insights/insightDataLogic.tsx index e06b13c1975..168a9160bb9 100644 --- a/frontend/src/scenes/insights/insightDataLogic.tsx +++ b/frontend/src/scenes/insights/insightDataLogic.tsx @@ -32,6 +32,8 @@ export const insightDataLogic = kea([ dataNodeLogic({ key: insightVizDataNodeKey(props), loadPriority: props.loadPriority, + filtersOverride: props.filtersOverride, + variablesOverride: props.variablesOverride, } as DataNodeLogicProps), [ 'query as insightQuery', diff --git a/frontend/src/scenes/insights/insightLogic.tsx b/frontend/src/scenes/insights/insightLogic.tsx index cc04937a42a..a299d639fee 100644 --- a/frontend/src/scenes/insights/insightLogic.tsx +++ b/frontend/src/scenes/insights/insightLogic.tsx @@ -21,7 +21,7 @@ import { dashboardsModel } from '~/models/dashboardsModel' import { groupsModel } from '~/models/groupsModel' import { insightsModel } from '~/models/insightsModel' import { tagsModel } from '~/models/tagsModel' -import { DashboardFilter, Node } from '~/queries/schema' +import { DashboardFilter, HogQLVariable, Node } from '~/queries/schema' import { InsightLogicProps, InsightShortId, ItemMode, QueryBasedInsightModel, SetInsightOptions } from '~/types' import { teamLogic } from '../teamLogic' @@ -77,9 +77,14 @@ export const insightLogic: LogicWrapper = kea ({ redirectToViewMode }), saveInsightSuccess: true, saveInsightFailure: true, - loadInsight: (shortId: InsightShortId, filtersOverride?: DashboardFilter | null) => ({ + loadInsight: ( + shortId: InsightShortId, + filtersOverride?: DashboardFilter | null, + variablesOverride?: Record | null + ) => ({ shortId, filtersOverride, + variablesOverride, }), updateInsight: (insightUpdate: Partial, callback?: () => void) => ({ insightUpdate, @@ -96,9 +101,15 @@ export const insightLogic: LogicWrapper = kea { + loadInsight: async ({ shortId, filtersOverride, variablesOverride }, breakpoint) => { await breakpoint(100) - const insight = await insightsApi.getByShortId(shortId, undefined, 'async', filtersOverride) + const insight = await insightsApi.getByShortId( + shortId, + undefined, + 'async', + filtersOverride, + variablesOverride + ) if (!insight) { throw new Error(`Insight with shortId ${shortId} not found`) @@ -417,7 +428,11 @@ export const insightLogic: LogicWrapper = kea([ insightMode: ItemMode, itemId: string | undefined, alertId: AlertType['id'] | undefined, + filtersOverride: DashboardFilter | undefined, + variablesOverride: Record | undefined, dashboardId: DashboardType['id'] | undefined, - dashboardName: DashboardType['name'] | undefined, - filtersOverride: DashboardFilter | undefined + dashboardName: DashboardType['name'] | undefined ) => ({ insightId, insightMode, @@ -61,6 +62,7 @@ export const insightSceneLogic = kea([ dashboardId, dashboardName, filtersOverride, + variablesOverride, }), setInsightLogicRef: (logic: BuiltLogic | null, unmount: null | (() => void)) => ({ logic, @@ -122,6 +124,13 @@ export const insightSceneLogic = kea([ setSceneState: (_, { filtersOverride }) => (filtersOverride !== undefined ? filtersOverride : null), }, ], + variablesOverride: [ + null as null | Record, + { + setSceneState: (_, { variablesOverride }) => + variablesOverride !== undefined ? variablesOverride : null, + }, + ], insightLogicRef: [ null as null | { logic: BuiltLogic @@ -222,7 +231,11 @@ export const insightSceneLogic = kea([ const oldRef = values.insightLogicRef // free old logic after mounting new one const oldRef2 = values.insightDataLogicRef // free old logic after mounting new one if (insightId) { - const insightProps = { dashboardItemId: insightId, filtersOverride: values.filtersOverride } + const insightProps = { + dashboardItemId: insightId, + filtersOverride: values.filtersOverride, + variablesOverride: values.variablesOverride, + } const logic = insightLogic.build(insightProps) const unmount = logic.mount() @@ -242,7 +255,11 @@ export const insightSceneLogic = kea([ oldRef2.unmount() } } else if (insightId) { - values.insightLogicRef?.logic.actions.loadInsight(insightId as InsightShortId, values.filtersOverride) + values.insightLogicRef?.logic.actions.loadInsight( + insightId as InsightShortId, + values.filtersOverride, + values.variablesOverride + ) } }, })), @@ -294,18 +311,20 @@ export const insightSceneLogic = kea([ insightMode !== values.insightMode || itemId !== values.itemId || alert_id !== values.alertId || + !objectsEqual(searchParams['variables_override'], values.variablesOverride) || + !objectsEqual(filtersOverride, values.filtersOverride) || dashboard !== values.dashboardId || - dashboardName !== values.dashboardName || - !objectsEqual(filtersOverride, values.filtersOverride) + dashboardName !== values.dashboardName ) { actions.setSceneState( insightId, insightMode, itemId, alert_id, + filtersOverride, + searchParams['variables_override'], dashboard, - dashboardName, - filtersOverride + dashboardName ) } diff --git a/frontend/src/scenes/insights/utils/api.ts b/frontend/src/scenes/insights/utils/api.ts index cca500ab600..2d85cc71f70 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, RefreshType } from '~/queries/schema' +import { DashboardFilter, HogQLVariable, RefreshType } from '~/queries/schema' import { InsightShortId, QueryBasedInsightModel } from '~/types' async function _perform( @@ -20,9 +20,16 @@ export const insightsApi = { shortId: InsightShortId, basic?: boolean, refresh?: RefreshType, - filtersOverride?: DashboardFilter | null + filtersOverride?: DashboardFilter | null, + variablesOverride?: Record | null ): Promise { - const legacyInsights = await api.insights.loadInsight(shortId, basic, refresh, filtersOverride) + const legacyInsights = await api.insights.loadInsight( + shortId, + basic, + refresh, + filtersOverride, + variablesOverride + ) if (legacyInsights.results.length === 0) { return null } diff --git a/frontend/src/scenes/insights/utils/queryUtils.ts b/frontend/src/scenes/insights/utils/queryUtils.ts index abfc46ba28e..005093406c1 100644 --- a/frontend/src/scenes/insights/utils/queryUtils.ts +++ b/frontend/src/scenes/insights/utils/queryUtils.ts @@ -17,8 +17,21 @@ import { ChartDisplayType } from '~/types' type CompareQueryOpts = { ignoreVisualizationOnlyChanges: boolean } export const getVariablesFromQuery = (query: string): string[] => { - const queryVariableMatches = /\{variables\.([a-z0-9_]+)\}/gm.exec(query) - return (queryVariableMatches ?? []).filter(Boolean) + const re = /\{variables\.([a-z0-9_]+)\}/gm + const results: string[] = [] + + for (;;) { + const reResult = re.exec(query) + if (!reResult) { + break + } + + if (reResult[1]) { + results.push(reResult[1]) + } + } + + return results } export const compareQuery = (a: Node, b: Node, opts?: CompareQueryOpts): boolean => { diff --git a/frontend/src/scenes/urls.ts b/frontend/src/scenes/urls.ts index 146c561e225..05f0372b7f8 100644 --- a/frontend/src/scenes/urls.ts +++ b/frontend/src/scenes/urls.ts @@ -3,7 +3,7 @@ import { AlertType } from 'lib/components/Alerts/types' import { getCurrentTeamId } from 'lib/utils/getAppContext' import { ExportOptions } from '~/exporter/types' -import { HogQLFilters, Node } from '~/queries/schema' +import { HogQLFilters, HogQLVariable, Node } from '~/queries/schema' import { ActionType, ActivityTab, @@ -89,8 +89,20 @@ export const urls = { } ).url, insightEdit: (id: InsightShortId): string => `/insights/${id}/edit`, - insightView: (id: InsightShortId, dashboardId?: number): string => - `/insights/${id}${dashboardId !== undefined ? `?dashboard=${dashboardId}` : ''}`, + insightView: ( + id: InsightShortId, + dashboardId?: number, + variablesOverride?: Record + ): string => { + const params = [ + { param: 'dashboard', value: dashboardId }, + { param: 'variables_override', value: variablesOverride }, + ] + .filter((n) => Boolean(n.value)) + .map((n) => `${n.param}=${encodeURIComponent(JSON.stringify(n.value))}`) + .join('&') + return `/insights/${id}${params.length ? `?${params}` : ''}` + }, insightSubcriptions: (id: InsightShortId): string => `/insights/${id}/subscriptions`, insightSubcription: (id: InsightShortId, subscriptionId: string): string => `/insights/${id}/subscriptions/${subscriptionId}`, diff --git a/frontend/src/types.ts b/frontend/src/types.ts index 402ab3b2daa..a5fc38e0328 100644 --- a/frontend/src/types.ts +++ b/frontend/src/types.ts @@ -37,6 +37,7 @@ import type { DatabaseSchemaField, HogQLQuery, HogQLQueryModifiers, + HogQLVariable, InsightVizNode, Node, QueryStatus, @@ -1823,6 +1824,7 @@ export type DashboardTemplateScope = 'team' | 'global' | 'feature_flag' export interface DashboardType extends DashboardBasicType { tiles: DashboardTile[] filters: DashboardFilter + variables?: Record } export enum TemplateAvailabilityContext { @@ -2661,6 +2663,8 @@ export interface InsightLogicProps { /** Dashboard filters to override the ones in the query */ filtersOverride?: DashboardFilter | null + /** Dashboard variables to override the ones in the query */ + variablesOverride?: Record | null } export interface SetInsightOptions { diff --git a/mypy-baseline.txt b/mypy-baseline.txt index 2d1c674469d..c1d0be4b08c 100644 --- a/mypy-baseline.txt +++ b/mypy-baseline.txt @@ -3,6 +3,54 @@ posthog/temporal/common/utils.py:0: note: This is likely because "from_activity" posthog/temporal/common/utils.py:0: error: Argument 2 to "__get__" of "classmethod" has incompatible type "type[HeartbeatType]"; expected "type[Never]" [arg-type] posthog/tasks/exports/ordered_csv_renderer.py:0: error: No return value expected [return-value] posthog/warehouse/models/ssh_tunnel.py:0: error: Incompatible types in assignment (expression has type "NoEncryption", variable has type "BestAvailableEncryption") [assignment] +posthog/temporal/data_imports/pipelines/sql_database/helpers.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Dict entry 2 has incompatible type "Literal['auto']": "None"; expected "Literal['json_response', 'header_link', 'auto', 'single_page', 'cursor', 'offset', 'page_number']": "type[BasePaginator]" [dict-item] +posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Incompatible types in assignment (expression has type "None", variable has type "AuthConfigBase") [assignment] +posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Argument 1 to "get_auth_class" has incompatible type "Literal['bearer', 'api_key', 'http_basic'] | None"; expected "Literal['bearer', 'api_key', 'http_basic']" [arg-type] +posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Need type annotation for "dependency_graph" [var-annotated] +posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Incompatible types in assignment (expression has type "None", target has type "ResolvedParam") [assignment] +posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Incompatible return value type (got "tuple[TopologicalSorter[Any], dict[str, EndpointResource], dict[str, ResolvedParam]]", expected "tuple[Any, dict[str, EndpointResource], dict[str, ResolvedParam | None]]") [return-value] +posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Unsupported right operand type for in ("str | Endpoint | None") [operator] +posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Value of type variable "StrOrLiteralStr" of "parse" of "Formatter" cannot be "str | None" [type-var] +posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Unsupported right operand type for in ("dict[str, ResolveParamConfig | IncrementalParamConfig | Any] | None") [operator] +posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Unsupported right operand type for in ("dict[str, ResolveParamConfig | IncrementalParamConfig | Any] | None") [operator] +posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Value of type "dict[str, ResolveParamConfig | IncrementalParamConfig | Any] | None" is not indexable [index] +posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Item "None" of "dict[str, ResolveParamConfig | IncrementalParamConfig | Any] | None" has no attribute "pop" [union-attr] +posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Value of type "dict[str, ResolveParamConfig | IncrementalParamConfig | Any] | None" is not indexable [index] +posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Item "None" of "str | None" has no attribute "format" [union-attr] +posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Argument 1 to "single_entity_path" has incompatible type "str | None"; expected "str" [arg-type] +posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Item "None" of "dict[str, ResolveParamConfig | IncrementalParamConfig | Any] | None" has no attribute "items" [union-attr] +posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "str") [assignment] +posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "str") [assignment] +posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Statement is unreachable [unreachable] +posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Unpacked dict entry 0 has incompatible type "dict[str, Any] | None"; expected "SupportsKeysAndGetItem[str, Any]" [dict-item] +posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Unpacked dict entry 1 has incompatible type "dict[str, Any] | None"; expected "SupportsKeysAndGetItem[str, Any]" [dict-item] +posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Unpacked dict entry 0 has incompatible type "dict[str, Any] | None"; expected "SupportsKeysAndGetItem[str, ResolveParamConfig | IncrementalParamConfig | Any]" [dict-item] +posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Unpacked dict entry 1 has incompatible type "dict[str, ResolveParamConfig | IncrementalParamConfig | Any] | None"; expected "SupportsKeysAndGetItem[str, ResolveParamConfig | IncrementalParamConfig | Any]" [dict-item] +posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Not all union combinations were tried because there are too many unions [misc] +posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Argument 2 to "source" has incompatible type "str | None"; expected "str" [arg-type] +posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Argument 3 to "source" has incompatible type "str | None"; expected "str" [arg-type] +posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Argument 4 to "source" has incompatible type "int | None"; expected "int" [arg-type] +posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Argument 6 to "source" has incompatible type "Schema | None"; expected "Schema" [arg-type] +posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Argument 7 to "source" has incompatible type "Literal['evolve', 'discard_value', 'freeze', 'discard_row'] | TSchemaContractDict | None"; expected "Literal['evolve', 'discard_value', 'freeze', 'discard_row'] | TSchemaContractDict" [arg-type] +posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Argument 8 to "source" has incompatible type "type[BaseConfiguration] | None"; expected "type[BaseConfiguration]" [arg-type] +posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Argument 1 to "build_resource_dependency_graph" has incompatible type "EndpointResourceBase | None"; expected "EndpointResourceBase" [arg-type] +posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Incompatible types in assignment (expression has type "list[str] | None", variable has type "list[str]") [assignment] +posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Argument 1 to "setup_incremental_object" has incompatible type "dict[str, ResolveParamConfig | IncrementalParamConfig | Any] | None"; expected "dict[str, Any]" [arg-type] +posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Argument "base_url" to "RESTClient" has incompatible type "str | None"; expected "str" [arg-type] +posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Argument 1 to "exclude_keys" has incompatible type "dict[str, ResolveParamConfig | IncrementalParamConfig | Any] | None"; expected "Mapping[str, Any]" [arg-type] +posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Incompatible default for argument "resolved_param" (default has type "ResolvedParam | None", argument has type "ResolvedParam") [assignment] +posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Argument "module" to "SourceInfo" has incompatible type Module | None; expected Module [arg-type] +posthog/temporal/data_imports/pipelines/vitally/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/pipelines/vitally/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/pipelines/vitally/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/pipelines/vitally/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/pipelines/vitally/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/pipelines/vitally/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/pipelines/vitally/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/pipelines/vitally/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/pipelines/vitally/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] posthog/utils.py:0: error: No overload variant of "asdict" matches argument type "type[DataclassInstance]" [call-overload] posthog/utils.py:0: note: Possible overload variants: posthog/utils.py:0: note: def asdict(obj: DataclassInstance) -> dict[str, Any] @@ -292,8 +340,8 @@ posthog/hogql/query.py:0: error: Incompatible types in assignment (expression ha posthog/hogql/query.py:0: error: Argument 1 to "get_default_limit_for_context" has incompatible type "LimitContext | None"; expected "LimitContext" [arg-type] posthog/hogql/query.py:0: error: "SelectQuery" has no attribute "select_queries" [attr-defined] posthog/hogql/query.py:0: error: Subclass of "SelectQuery" and "SelectUnionQuery" cannot exist: would have incompatible method signatures [unreachable] -posthog/api/action.py:0: error: Argument 1 to has incompatible type "*tuple[str, ...]"; expected "type[BaseRenderer]" [arg-type] posthog/queries/person_query.py:0: error: Incompatible type for lookup 'pk': (got "str | int | list[str]", expected "str | int") [misc] +posthog/api/action.py:0: error: Argument 1 to has incompatible type "*tuple[str, ...]"; expected "type[BaseRenderer]" [arg-type] posthog/queries/event_query/event_query.py:0: error: Incompatible type for lookup 'pk': (got "str | int | list[str]", expected "str | int") [misc] posthog/hogql_queries/sessions_timeline_query_runner.py:0: error: Statement is unreachable [unreachable] posthog/hogql_queries/hogql_query_runner.py:0: error: Statement is unreachable [unreachable] @@ -383,7 +431,23 @@ posthog/test/test_feature_flag_analytics.py:0: error: Item "None" of "Dashboard posthog/test/test_feature_flag_analytics.py:0: error: Item "None" of "Dashboard | None" has no attribute "tiles" [union-attr] posthog/test/test_feature_flag_analytics.py:0: error: Item "None" of "Dashboard | None" has no attribute "tiles" [union-attr] posthog/test/test_feature_flag_analytics.py:0: error: Item "None" of "Dashboard | None" has no attribute "delete" [union-attr] -posthog/temporal/data_imports/pipelines/sql_database/helpers.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/pipelines/zendesk/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/pipelines/zendesk/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/pipelines/zendesk/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/pipelines/zendesk/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/pipelines/zendesk/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/pipelines/zendesk/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/pipelines/zendesk/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/pipelines/zendesk/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/pipelines/zendesk/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/pipelines/stripe/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/pipelines/stripe/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/pipelines/stripe/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/pipelines/stripe/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/pipelines/stripe/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/pipelines/stripe/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/pipelines/stripe/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/pipelines/stripe/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] posthog/tasks/test/test_update_survey_iteration.py:0: error: Item "None" of "FeatureFlag | None" has no attribute "filters" [union-attr] posthog/tasks/test/test_stop_surveys_reached_target.py:0: error: No overload variant of "__sub__" of "datetime" matches argument type "None" [operator] posthog/tasks/test/test_stop_surveys_reached_target.py:0: note: Possible overload variants: @@ -410,12 +474,19 @@ posthog/tasks/exports/test/test_csv_exporter_renders.py:0: error: Item "memoryvi posthog/tasks/exports/test/test_csv_exporter_renders.py:0: error: Item "None" of "bytes | memoryview | None" has no attribute "decode" [union-attr] posthog/tasks/exports/test/test_csv_exporter_renders.py:0: error: Item "memoryview" of "bytes | memoryview | None" has no attribute "decode" [union-attr] posthog/tasks/exports/test/test_csv_exporter_renders.py:0: error: Item "None" of "bytes | memoryview | None" has no attribute "decode" [union-attr] +posthog/management/commands/sync_persons_to_clickhouse.py:0: error: Argument 4 to "create_person_override" has incompatible type "int | None"; expected "int" [arg-type] +posthog/management/commands/sync_persons_to_clickhouse.py:0: error: Argument "group_type_index" to "raw_create_group_ch" has incompatible type "int"; expected "Literal[0, 1, 2, 3, 4]" [arg-type] +posthog/management/commands/migrate_team.py:0: error: Incompatible types in assignment (expression has type "None", variable has type "BatchExport") [assignment] +posthog/management/commands/migrate_team.py:0: error: "BatchExportDestination" has no attribute "exclude_events" [attr-defined] +posthog/management/commands/migrate_team.py:0: error: "BatchExportDestination" has no attribute "include_events" [attr-defined] +posthog/management/commands/fix_future_person_created_at.py:0: error: Argument "version" to "create_person" has incompatible type "int | None"; expected "int" [arg-type] posthog/hogql_queries/test/test_query_runner.py:0: error: Variable "TestQueryRunner" is not valid as a type [valid-type] posthog/hogql_queries/test/test_query_runner.py:0: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases posthog/hogql_queries/test/test_query_runner.py:0: error: Invalid base class "TestQueryRunner" [misc] posthog/hogql_queries/test/test_hogql_query_runner.py:0: error: Incompatible types in assignment (expression has type "Expr", variable has type "SelectQuery") [assignment] posthog/hogql_queries/test/test_hogql_query_runner.py:0: error: Incompatible types in assignment (expression has type "Expr", variable has type "SelectQuery") [assignment] posthog/hogql_queries/test/test_hogql_query_runner.py:0: error: Incompatible types in assignment (expression has type "Expr", variable has type "SelectQuery") [assignment] +posthog/hogql_queries/test/test_actors_query_runner.py:0: error: Incompatible types in assignment (expression has type "Expr", variable has type "SelectQuery") [assignment] posthog/hogql_queries/legacy_compatibility/test/test_filter_to_query.py:0: error: Need type annotation for "properties_0" (hint: "properties_0: list[] = ...") [var-annotated] posthog/hogql_queries/legacy_compatibility/test/test_filter_to_query.py:0: error: Need type annotation for "properties_3" (hint: "properties_3: dict[, ] = ...") [var-annotated] posthog/hogql_queries/legacy_compatibility/test/test_filter_to_query.py:0: error: Need type annotation for "filter" (hint: "filter: dict[, ] = ...") [var-annotated] @@ -428,6 +499,21 @@ posthog/hogql/test/test_timings.py:0: error: No overload variant of "__setitem__ posthog/hogql/test/test_timings.py:0: note: Possible overload variants: posthog/hogql/test/test_timings.py:0: note: def __setitem__(self, SupportsIndex, int, /) -> None posthog/hogql/test/test_timings.py:0: note: def __setitem__(self, slice, Iterable[int], /) -> None +posthog/hogql/test/test_resolver.py:0: error: Item "None" of "JoinExpr | None" has no attribute "next_join" [union-attr] +posthog/hogql/test/test_resolver.py:0: error: Item "None" of "JoinExpr | Any | None" has no attribute "constraint" [union-attr] +posthog/hogql/test/test_resolver.py:0: error: Item "None" of "JoinConstraint | Any | None" has no attribute "constraint_type" [union-attr] +posthog/hogql/test/test_resolver.py:0: error: Item "None" of "JoinConstraint | Any | None" has no attribute "expr" [union-attr] +posthog/hogql/test/test_resolver.py:0: error: Item "None" of "JoinExpr | None" has no attribute "next_join" [union-attr] +posthog/hogql/test/test_resolver.py:0: error: Item "None" of "JoinExpr | Any | None" has no attribute "constraint" [union-attr] +posthog/hogql/test/test_resolver.py:0: error: Item "None" of "JoinConstraint | Any | None" has no attribute "constraint_type" [union-attr] +posthog/hogql/test/test_resolver.py:0: error: Item "SelectUnionQueryType" of "SelectQueryType | SelectUnionQueryType | None" has no attribute "columns" [union-attr] +posthog/hogql/test/test_resolver.py:0: error: Item "None" of "SelectQueryType | SelectUnionQueryType | None" has no attribute "columns" [union-attr] +posthog/hogql/test/test_resolver.py:0: error: "FieldOrTable" has no attribute "fields" [attr-defined] +posthog/hogql/test/test_resolver.py:0: error: "FieldOrTable" has no attribute "fields" [attr-defined] +posthog/hogql/test/test_resolver.py:0: error: "FieldOrTable" has no attribute "fields" [attr-defined] +posthog/hogql/test/test_resolver.py:0: error: Item "None" of "JoinExpr | None" has no attribute "table" [union-attr] +posthog/hogql/test/test_resolver.py:0: error: Argument 1 to "clone_expr" has incompatible type "SelectQuery | SelectUnionQuery | Field | Any | None"; expected "Expr" [arg-type] +posthog/hogql/test/test_resolver.py:0: error: Item "None" of "JoinExpr | None" has no attribute "alias" [union-attr] posthog/hogql/test/test_property.py:0: error: Argument 1 to "_property_to_expr" of "TestProperty" has incompatible type "HogQLPropertyFilter"; expected "PropertyGroup | Property | dict[Any, Any] | list[Any]" [arg-type] posthog/hogql/test/test_printer.py:0: error: Argument 2 to "Database" has incompatible type "int"; expected "WeekStartDay | None" [arg-type] posthog/hogql/test/test_printer.py:0: error: Argument 2 to "Database" has incompatible type "int"; expected "WeekStartDay | None" [arg-type] @@ -456,6 +542,9 @@ posthog/hogql/test/_test_parser.py:0: error: Item "None" of "JoinExpr | None" ha posthog/hogql/test/_test_parser.py:0: error: Item "None" of "JoinExpr | None" has no attribute "table" [union-attr] posthog/hogql/test/_test_parser.py:0: error: Item "None" of "JoinExpr | None" has no attribute "alias" [union-attr] posthog/hogql/test/_test_parser.py:0: error: Item "None" of "JoinExpr | None" has no attribute "table" [union-attr] +posthog/hogql/functions/test/test_cohort.py:0: error: "TestCohort" has no attribute "snapshot" [attr-defined] +posthog/hogql/functions/test/test_cohort.py:0: error: "TestCohort" has no attribute "snapshot" [attr-defined] +posthog/hogql/functions/test/test_cohort.py:0: error: "TestCohort" has no attribute "snapshot" [attr-defined] posthog/hogql/database/schema/event_sessions.py:0: error: Statement is unreachable [unreachable] posthog/heatmaps/test/test_heatmaps_api.py:0: error: "HttpResponse" has no attribute "json" [attr-defined] posthog/heatmaps/test/test_heatmaps_api.py:0: error: "HttpResponse" has no attribute "json" [attr-defined] @@ -503,10 +592,32 @@ posthog/api/organization_feature_flag.py:0: error: Invalid index type "str | Non posthog/api/organization_feature_flag.py:0: error: Invalid index type "str | None" for "dict[str, int]"; expected type "str" [index] posthog/api/organization_feature_flag.py:0: error: Invalid index type "str | None" for "dict[str, int]"; expected type "str" [index] posthog/api/notebook.py:0: error: Incompatible types in assignment (expression has type "int", variable has type "str | None") [assignment] +posthog/warehouse/external_data_source/source.py:0: error: Incompatible types in assignment (expression has type "int", target has type "str") [assignment] +posthog/warehouse/external_data_source/source.py:0: error: Incompatible types in assignment (expression has type "int", target has type "str") [assignment] +posthog/warehouse/external_data_source/source.py:0: error: Incompatible types in assignment (expression has type "dict[str, Collection[str]]", variable has type "StripeSourcePayload") [assignment] +posthog/warehouse/external_data_source/source.py:0: error: Argument 1 to "_create_source" has incompatible type "StripeSourcePayload"; expected "dict[Any, Any]" [arg-type] posthog/warehouse/data_load/validate_schema.py:0: error: Incompatible types in assignment (expression has type "object", variable has type "DataWarehouseCredential | Combinable | None") [assignment] posthog/warehouse/data_load/validate_schema.py:0: error: Incompatible types in assignment (expression has type "object", variable has type "str | int | Combinable") [assignment] posthog/warehouse/data_load/validate_schema.py:0: error: Incompatible types in assignment (expression has type "dict[str, dict[str, str | bool]] | dict[str, str]", variable has type "dict[str, dict[str, str]]") [assignment] posthog/warehouse/data_load/source_templates.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "Type") [assignment] +posthog/warehouse/api/external_data_schema.py:0: error: Incompatible return value type (got "str | None", expected "SyncType | None") [return-value] +posthog/warehouse/api/external_data_schema.py:0: error: Argument 1 to "get_sql_schemas_for_source_type" has incompatible type "str"; expected "Type" [arg-type] +posthog/warehouse/api/external_data_schema.py:0: error: No overload variant of "get" of "dict" matches argument type "str" [call-overload] +posthog/warehouse/api/external_data_schema.py:0: note: Possible overload variants: +posthog/warehouse/api/external_data_schema.py:0: note: def get(self, Type, /) -> dict[str, list[IncrementalField]] | None +posthog/warehouse/api/external_data_schema.py:0: note: def get(self, Type, dict[str, list[IncrementalField]], /) -> dict[str, list[IncrementalField]] +posthog/warehouse/api/external_data_schema.py:0: note: def [_T] get(self, Type, _T, /) -> dict[str, list[IncrementalField]] | _T +posthog/warehouse/api/table.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/warehouse/api/table.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/warehouse/api/table.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/data_imports/workflow_activities/create_job_model.py:0: error: Argument 1 has incompatible type "str"; expected "Type" [arg-type] +posthog/temporal/data_imports/workflow_activities/create_job_model.py:0: error: Incompatible types in assignment (expression has type "list[Any]", variable has type "dict[str, list[tuple[str, str]]]") [assignment] +posthog/temporal/data_imports/workflow_activities/create_job_model.py:0: error: No overload variant of "get" of "dict" matches argument types "str", "tuple[()]" [call-overload] +posthog/temporal/data_imports/workflow_activities/create_job_model.py:0: note: Possible overload variants: +posthog/temporal/data_imports/workflow_activities/create_job_model.py:0: note: def get(self, Type, /) -> Sequence[str] | None +posthog/temporal/data_imports/workflow_activities/create_job_model.py:0: note: def get(self, Type, Sequence[str], /) -> Sequence[str] +posthog/temporal/data_imports/workflow_activities/create_job_model.py:0: note: def [_T] get(self, Type, _T, /) -> Sequence[str] | _T +posthog/temporal/data_imports/workflow_activities/create_job_model.py:0: error: Argument 1 has incompatible type "dict[str, list[tuple[str, str]]]"; expected "list[Any]" [arg-type] posthog/tasks/exports/test/test_csv_exporter.py:0: error: Function is missing a return type annotation [no-untyped-def] posthog/tasks/exports/test/test_csv_exporter.py:0: error: Function is missing a type annotation [no-untyped-def] posthog/tasks/exports/test/test_csv_exporter.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] @@ -549,28 +660,6 @@ posthog/queries/trends/test/test_person.py:0: error: Invalid index type "int" fo posthog/queries/trends/test/test_person.py:0: error: "str" has no attribute "get" [attr-defined] posthog/queries/trends/test/test_person.py:0: error: Invalid index type "int" for "_MonkeyPatchedResponse"; expected type "str" [index] posthog/models/test/test_organization_model.py:0: error: Module "django.utils.timezone" does not explicitly export attribute "timedelta" [attr-defined] -posthog/management/commands/sync_persons_to_clickhouse.py:0: error: Argument 4 to "create_person_override" has incompatible type "int | None"; expected "int" [arg-type] -posthog/management/commands/sync_persons_to_clickhouse.py:0: error: Argument "group_type_index" to "raw_create_group_ch" has incompatible type "int"; expected "Literal[0, 1, 2, 3, 4]" [arg-type] -posthog/management/commands/migrate_team.py:0: error: Incompatible types in assignment (expression has type "None", variable has type "BatchExport") [assignment] -posthog/management/commands/migrate_team.py:0: error: "BatchExportDestination" has no attribute "exclude_events" [attr-defined] -posthog/management/commands/migrate_team.py:0: error: "BatchExportDestination" has no attribute "include_events" [attr-defined] -posthog/management/commands/fix_future_person_created_at.py:0: error: Argument "version" to "create_person" has incompatible type "int | None"; expected "int" [arg-type] -posthog/hogql_queries/test/test_actors_query_runner.py:0: error: Incompatible types in assignment (expression has type "Expr", variable has type "SelectQuery") [assignment] -posthog/hogql/test/test_resolver.py:0: error: Item "None" of "JoinExpr | None" has no attribute "next_join" [union-attr] -posthog/hogql/test/test_resolver.py:0: error: Item "None" of "JoinExpr | Any | None" has no attribute "constraint" [union-attr] -posthog/hogql/test/test_resolver.py:0: error: Item "None" of "JoinConstraint | Any | None" has no attribute "constraint_type" [union-attr] -posthog/hogql/test/test_resolver.py:0: error: Item "None" of "JoinConstraint | Any | None" has no attribute "expr" [union-attr] -posthog/hogql/test/test_resolver.py:0: error: Item "None" of "JoinExpr | None" has no attribute "next_join" [union-attr] -posthog/hogql/test/test_resolver.py:0: error: Item "None" of "JoinExpr | Any | None" has no attribute "constraint" [union-attr] -posthog/hogql/test/test_resolver.py:0: error: Item "None" of "JoinConstraint | Any | None" has no attribute "constraint_type" [union-attr] -posthog/hogql/test/test_resolver.py:0: error: Item "SelectUnionQueryType" of "SelectQueryType | SelectUnionQueryType | None" has no attribute "columns" [union-attr] -posthog/hogql/test/test_resolver.py:0: error: Item "None" of "SelectQueryType | SelectUnionQueryType | None" has no attribute "columns" [union-attr] -posthog/hogql/test/test_resolver.py:0: error: "FieldOrTable" has no attribute "fields" [attr-defined] -posthog/hogql/test/test_resolver.py:0: error: "FieldOrTable" has no attribute "fields" [attr-defined] -posthog/hogql/test/test_resolver.py:0: error: "FieldOrTable" has no attribute "fields" [attr-defined] -posthog/hogql/test/test_resolver.py:0: error: Item "None" of "JoinExpr | None" has no attribute "table" [union-attr] -posthog/hogql/test/test_resolver.py:0: error: Argument 1 to "clone_expr" has incompatible type "SelectQuery | SelectUnionQuery | Field | Any | None"; expected "Expr" [arg-type] -posthog/hogql/test/test_resolver.py:0: error: Item "None" of "JoinExpr | None" has no attribute "alias" [union-attr] posthog/hogql/test/test_query.py:0: error: Value of type "list[QueryTiming] | None" is not indexable [index] posthog/hogql/test/test_query.py:0: error: Value of type "list[QueryTiming] | None" is not indexable [index] posthog/hogql/test/test_query.py:0: error: Module has no attribute "utc" [attr-defined] @@ -601,14 +690,12 @@ posthog/hogql/test/test_parser_python.py:0: error: Unsupported dynamic base clas posthog/hogql/test/test_parser_cpp.py:0: error: Unsupported dynamic base class "parser_test_factory" [misc] posthog/hogql/test/test_parse_string_python.py:0: error: Unsupported dynamic base class "parse_string_test_factory" [misc] posthog/hogql/test/test_parse_string_cpp.py:0: error: Unsupported dynamic base class "parse_string_test_factory" [misc] -posthog/hogql/functions/test/test_cohort.py:0: error: "TestCohort" has no attribute "snapshot" [attr-defined] -posthog/hogql/functions/test/test_cohort.py:0: error: "TestCohort" has no attribute "snapshot" [attr-defined] -posthog/hogql/functions/test/test_cohort.py:0: error: "TestCohort" has no attribute "snapshot" [attr-defined] posthog/hogql/database/test/test_view.py:0: error: Argument "dialect" to "print_ast" has incompatible type "str"; expected "Literal['hogql', 'clickhouse']" [arg-type] posthog/hogql/database/test/test_s3_table.py:0: error: Argument "dialect" to "print_ast" has incompatible type "str"; expected "Literal['hogql', 'clickhouse']" [arg-type] posthog/async_migrations/test/test_runner.py:0: error: Item "None" of "datetime | None" has no attribute "day" [union-attr] posthog/api/test/test_insight.py:0: error: Argument "data" to "get" of "APIClient" has incompatible type "dict[str, object]"; expected "Mapping[str, str | bytes | int | Iterable[str | bytes | int]] | Iterable[tuple[str, str | bytes | int | Iterable[str | bytes | int]]] | None" [arg-type] posthog/api/test/test_insight.py:0: error: Argument "data" to "get" of "APIClient" has incompatible type "dict[str, object]"; expected "Mapping[str, str | bytes | int | Iterable[str | bytes | int]] | Iterable[tuple[str, str | bytes | int | Iterable[str | bytes | int]]] | None" [arg-type] +posthog/api/test/test_insight.py:0: error: Argument "data" to "get" of "APIClient" has incompatible type "dict[str, object]"; expected "Mapping[str, str | bytes | int | Iterable[str | bytes | int]] | Iterable[tuple[str, str | bytes | int | Iterable[str | bytes | int]]] | None" [arg-type] posthog/api/test/test_feature_flag.py:0: error: Item "None" of "Dashboard | None" has no attribute "tiles" [union-attr] posthog/api/test/test_feature_flag.py:0: error: Item "None" of "Dashboard | None" has no attribute "name" [union-attr] posthog/api/test/test_feature_flag.py:0: error: Item "None" of "Dashboard | None" has no attribute "description" [union-attr] @@ -673,18 +760,11 @@ posthog/admin/admins/team_admin.py:0: error: Item "None" of "Project | None" has posthog/admin/admins/team_admin.py:0: error: Item "None" of "Project | None" has no attribute "name" [union-attr] posthog/admin/admins/plugin_admin.py:0: error: Item "None" of "Organization | None" has no attribute "pk" [union-attr] posthog/admin/admins/plugin_admin.py:0: error: Item "None" of "Organization | None" has no attribute "name" [union-attr] -ee/clickhouse/views/experiments.py:0: error: Argument 4 to "ClickhouseTrendExperimentResult" has incompatible type "datetime | None"; expected "datetime" [arg-type] -ee/clickhouse/views/experiments.py:0: error: Argument 4 to "ClickhouseFunnelExperimentResult" has incompatible type "datetime | None"; expected "datetime" [arg-type] -ee/clickhouse/views/experiments.py:0: error: Argument 4 to "ClickhouseSecondaryExperimentResult" has incompatible type "datetime | None"; expected "datetime" [arg-type] -ee/clickhouse/views/experiments.py:0: error: Item "None" of "User | None" has no attribute "email" [union-attr] -posthog/temporal/data_imports/workflow_activities/create_job_model.py:0: error: Argument 1 has incompatible type "str"; expected "Type" [arg-type] -posthog/temporal/data_imports/workflow_activities/create_job_model.py:0: error: Incompatible types in assignment (expression has type "list[Any]", variable has type "dict[str, list[tuple[str, str]]]") [assignment] -posthog/temporal/data_imports/workflow_activities/create_job_model.py:0: error: No overload variant of "get" of "dict" matches argument types "str", "tuple[()]" [call-overload] -posthog/temporal/data_imports/workflow_activities/create_job_model.py:0: note: Possible overload variants: -posthog/temporal/data_imports/workflow_activities/create_job_model.py:0: note: def get(self, Type, /) -> Sequence[str] | None -posthog/temporal/data_imports/workflow_activities/create_job_model.py:0: note: def get(self, Type, Sequence[str], /) -> Sequence[str] -posthog/temporal/data_imports/workflow_activities/create_job_model.py:0: note: def [_T] get(self, Type, _T, /) -> Sequence[str] | _T -posthog/temporal/data_imports/workflow_activities/create_job_model.py:0: error: Argument 1 has incompatible type "dict[str, list[tuple[str, str]]]"; expected "list[Any]" [arg-type] +posthog/temporal/tests/batch_exports/test_run_updates.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/tests/batch_exports/test_run_updates.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/tests/batch_exports/test_run_updates.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/tests/batch_exports/test_run_updates.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/temporal/tests/batch_exports/test_batch_exports.py:0: error: TypedDict key must be a string literal; expected one of ("_timestamp", "created_at", "distinct_id", "elements", "elements_chain", ...) [literal-required] posthog/session_recordings/session_recording_api.py:0: error: Argument "team_id" to "get_realtime_snapshots" has incompatible type "int"; expected "str" [arg-type] posthog/session_recordings/session_recording_api.py:0: error: Value of type variable "SupportsRichComparisonT" of "sorted" cannot be "str | None" [type-var] posthog/session_recordings/session_recording_api.py:0: error: Argument 1 to "get" of "dict" has incompatible type "str | None"; expected "str" [arg-type] @@ -695,14 +775,6 @@ posthog/queries/app_metrics/historical_exports.py:0: error: Argument 1 to "loads posthog/api/test/test_decide.py:0: error: Item "None" of "User | None" has no attribute "toolbar_mode" [union-attr] posthog/api/test/test_decide.py:0: error: Item "None" of "User | None" has no attribute "save" [union-attr] posthog/api/test/test_authentication.py:0: error: Module has no attribute "utc" [attr-defined] -posthog/admin/admins/plugin_config_admin.py:0: error: Item "None" of "Team | None" has no attribute "name" [union-attr] -posthog/migrations/0237_remove_timezone_from_teams.py:0: error: Argument 2 to "RunPython" has incompatible type "Callable[[Migration, Any], None]"; expected "_CodeCallable | None" [arg-type] -posthog/migrations/0228_fix_tile_layouts.py:0: error: Argument 2 to "RunPython" has incompatible type "Callable[[Migration, Any], None]"; expected "_CodeCallable | None" [arg-type] -posthog/warehouse/external_data_source/source.py:0: error: Incompatible types in assignment (expression has type "int", target has type "str") [assignment] -posthog/warehouse/external_data_source/source.py:0: error: Incompatible types in assignment (expression has type "int", target has type "str") [assignment] -posthog/warehouse/external_data_source/source.py:0: error: Incompatible types in assignment (expression has type "dict[str, Collection[str]]", variable has type "StripeSourcePayload") [assignment] -posthog/warehouse/external_data_source/source.py:0: error: Argument 1 to "_create_source" has incompatible type "StripeSourcePayload"; expected "dict[Any, Any]" [arg-type] -posthog/api/sharing.py:0: error: Item "None" of "list[Any] | None" has no attribute "__iter__" (not iterable) [union-attr] posthog/api/plugin.py:0: error: Item "None" of "Team | None" has no attribute "organization" [union-attr] posthog/api/plugin.py:0: error: Item "None" of "Team | None" has no attribute "id" [union-attr] posthog/api/plugin.py:0: error: Item "None" of "Team | None" has no attribute "organization" [union-attr] @@ -716,107 +788,55 @@ posthog/api/plugin.py:0: error: Incompatible type for "file_size" of "PluginAtta posthog/api/plugin.py:0: error: Item "None" of "IO[Any] | None" has no attribute "read" [union-attr] posthog/api/plugin.py:0: error: Item "None" of "Team | None" has no attribute "organization" [union-attr] posthog/api/plugin.py:0: error: Item "None" of "Team | None" has no attribute "id" [union-attr] -posthog/temporal/tests/batch_exports/test_run_updates.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/tests/batch_exports/test_run_updates.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/tests/batch_exports/test_run_updates.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/tests/batch_exports/test_run_updates.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/tests/batch_exports/test_batch_exports.py:0: error: TypedDict key must be a string literal; expected one of ("_timestamp", "created_at", "distinct_id", "elements", "elements_chain", ...) [literal-required] -posthog/api/plugin_log_entry.py:0: error: Name "timezone.datetime" is not defined [name-defined] -posthog/api/plugin_log_entry.py:0: error: Module "django.utils.timezone" does not explicitly export attribute "datetime" [attr-defined] -posthog/api/plugin_log_entry.py:0: error: Name "timezone.datetime" is not defined [name-defined] -posthog/api/plugin_log_entry.py:0: error: Module "django.utils.timezone" does not explicitly export attribute "datetime" [attr-defined] -posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Dict entry 2 has incompatible type "Literal['auto']": "None"; expected "Literal['json_response', 'header_link', 'auto', 'single_page', 'cursor', 'offset', 'page_number']": "type[BasePaginator]" [dict-item] -posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Incompatible types in assignment (expression has type "None", variable has type "AuthConfigBase") [assignment] -posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Argument 1 to "get_auth_class" has incompatible type "Literal['bearer', 'api_key', 'http_basic'] | None"; expected "Literal['bearer', 'api_key', 'http_basic']" [arg-type] -posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Need type annotation for "dependency_graph" [var-annotated] -posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Incompatible types in assignment (expression has type "None", target has type "ResolvedParam") [assignment] -posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Incompatible return value type (got "tuple[TopologicalSorter[Any], dict[str, EndpointResource], dict[str, ResolvedParam]]", expected "tuple[Any, dict[str, EndpointResource], dict[str, ResolvedParam | None]]") [return-value] -posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Unsupported right operand type for in ("str | Endpoint | None") [operator] -posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Value of type variable "StrOrLiteralStr" of "parse" of "Formatter" cannot be "str | None" [type-var] -posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Unsupported right operand type for in ("dict[str, ResolveParamConfig | IncrementalParamConfig | Any] | None") [operator] -posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Unsupported right operand type for in ("dict[str, ResolveParamConfig | IncrementalParamConfig | Any] | None") [operator] -posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Value of type "dict[str, ResolveParamConfig | IncrementalParamConfig | Any] | None" is not indexable [index] -posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Item "None" of "dict[str, ResolveParamConfig | IncrementalParamConfig | Any] | None" has no attribute "pop" [union-attr] -posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Value of type "dict[str, ResolveParamConfig | IncrementalParamConfig | Any] | None" is not indexable [index] -posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Item "None" of "str | None" has no attribute "format" [union-attr] -posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Argument 1 to "single_entity_path" has incompatible type "str | None"; expected "str" [arg-type] -posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Item "None" of "dict[str, ResolveParamConfig | IncrementalParamConfig | Any] | None" has no attribute "items" [union-attr] -posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "str") [assignment] -posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "str") [assignment] -posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Statement is unreachable [unreachable] -posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Unpacked dict entry 0 has incompatible type "dict[str, Any] | None"; expected "SupportsKeysAndGetItem[str, Any]" [dict-item] -posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Unpacked dict entry 1 has incompatible type "dict[str, Any] | None"; expected "SupportsKeysAndGetItem[str, Any]" [dict-item] -posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Unpacked dict entry 0 has incompatible type "dict[str, Any] | None"; expected "SupportsKeysAndGetItem[str, ResolveParamConfig | IncrementalParamConfig | Any]" [dict-item] -posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: error: Unpacked dict entry 1 has incompatible type "dict[str, ResolveParamConfig | IncrementalParamConfig | Any] | None"; expected "SupportsKeysAndGetItem[str, ResolveParamConfig | IncrementalParamConfig | Any]" [dict-item] +posthog/admin/admins/plugin_config_admin.py:0: error: Item "None" of "Team | None" has no attribute "name" [union-attr] +ee/clickhouse/views/experiments.py:0: error: Argument 4 to "ClickhouseTrendExperimentResult" has incompatible type "datetime | None"; expected "datetime" [arg-type] +ee/clickhouse/views/experiments.py:0: error: Argument 4 to "ClickhouseFunnelExperimentResult" has incompatible type "datetime | None"; expected "datetime" [arg-type] +ee/clickhouse/views/experiments.py:0: error: Argument 4 to "ClickhouseSecondaryExperimentResult" has incompatible type "datetime | None"; expected "datetime" [arg-type] +ee/clickhouse/views/experiments.py:0: error: Item "None" of "User | None" has no attribute "email" [union-attr] posthog/temporal/tests/batch_exports/test_snowflake_batch_export_workflow.py:0: error: Need type annotation for "_execute_calls" (hint: "_execute_calls: list[] = ...") [var-annotated] posthog/temporal/tests/batch_exports/test_snowflake_batch_export_workflow.py:0: error: Need type annotation for "_execute_async_calls" (hint: "_execute_async_calls: list[] = ...") [var-annotated] posthog/temporal/tests/batch_exports/test_snowflake_batch_export_workflow.py:0: error: Need type annotation for "_cursors" (hint: "_cursors: list[] = ...") [var-annotated] posthog/temporal/tests/batch_exports/test_snowflake_batch_export_workflow.py:0: error: List item 0 has incompatible type "tuple[str, str, int, int, int, int, str, int]"; expected "tuple[str, str, int, int, str, str, str, str]" [list-item] posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py:0: error: "tuple[Any, ...]" has no attribute "last_uploaded_part_timestamp" [attr-defined] posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py:0: error: "tuple[Any, ...]" has no attribute "upload_state" [attr-defined] +posthog/temporal/data_imports/workflow_activities/import_data.py:0: error: Argument "job_type" to "PipelineInputs" has incompatible type "str"; expected "Type" [arg-type] +posthog/temporal/data_imports/workflow_activities/import_data.py:0: error: Argument "source_type" to "sql_source_for_type" has incompatible type "str"; expected "Type" [arg-type] +posthog/temporal/data_imports/workflow_activities/import_data.py:0: error: Argument "source_type" to "sql_source_for_type" has incompatible type "str"; expected "Type" [arg-type] +posthog/migrations/0237_remove_timezone_from_teams.py:0: error: Argument 2 to "RunPython" has incompatible type "Callable[[Migration, Any], None]"; expected "_CodeCallable | None" [arg-type] +posthog/migrations/0228_fix_tile_layouts.py:0: error: Argument 2 to "RunPython" has incompatible type "Callable[[Migration, Any], None]"; expected "_CodeCallable | None" [arg-type] +posthog/api/query.py:0: error: Statement is unreachable [unreachable] +posthog/api/plugin_log_entry.py:0: error: Name "timezone.datetime" is not defined [name-defined] +posthog/api/plugin_log_entry.py:0: error: Module "django.utils.timezone" does not explicitly export attribute "datetime" [attr-defined] +posthog/api/plugin_log_entry.py:0: error: Name "timezone.datetime" is not defined [name-defined] +posthog/api/plugin_log_entry.py:0: error: Module "django.utils.timezone" does not explicitly export attribute "datetime" [attr-defined] posthog/temporal/tests/batch_exports/test_redshift_batch_export_workflow.py:0: error: Incompatible types in assignment (expression has type "str | int", variable has type "int") [assignment] -posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Not all union combinations were tried because there are too many unions [misc] -posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Argument 2 to "source" has incompatible type "str | None"; expected "str" [arg-type] -posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Argument 3 to "source" has incompatible type "str | None"; expected "str" [arg-type] -posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Argument 4 to "source" has incompatible type "int | None"; expected "int" [arg-type] -posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Argument 6 to "source" has incompatible type "Schema | None"; expected "Schema" [arg-type] -posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Argument 7 to "source" has incompatible type "Literal['evolve', 'discard_value', 'freeze', 'discard_row'] | TSchemaContractDict | None"; expected "Literal['evolve', 'discard_value', 'freeze', 'discard_row'] | TSchemaContractDict" [arg-type] -posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Argument 8 to "source" has incompatible type "type[BaseConfiguration] | None"; expected "type[BaseConfiguration]" [arg-type] -posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Argument 1 to "build_resource_dependency_graph" has incompatible type "EndpointResourceBase | None"; expected "EndpointResourceBase" [arg-type] -posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Incompatible types in assignment (expression has type "list[str] | None", variable has type "list[str]") [assignment] -posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Argument 1 to "setup_incremental_object" has incompatible type "dict[str, ResolveParamConfig | IncrementalParamConfig | Any] | None"; expected "dict[str, Any]" [arg-type] -posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Argument "base_url" to "RESTClient" has incompatible type "str | None"; expected "str" [arg-type] -posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Argument 1 to "exclude_keys" has incompatible type "dict[str, ResolveParamConfig | IncrementalParamConfig | Any] | None"; expected "Mapping[str, Any]" [arg-type] -posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Incompatible default for argument "resolved_param" (default has type "ResolvedParam | None", argument has type "ResolvedParam") [assignment] -posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/data_imports/pipelines/rest_source/__init__.py:0: error: Argument "module" to "SourceInfo" has incompatible type Module | None; expected Module [arg-type] -posthog/temporal/data_imports/pipelines/zendesk/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/data_imports/pipelines/zendesk/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/data_imports/pipelines/zendesk/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/data_imports/pipelines/zendesk/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/data_imports/pipelines/zendesk/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/data_imports/pipelines/zendesk/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/data_imports/pipelines/zendesk/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/data_imports/pipelines/zendesk/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/data_imports/pipelines/zendesk/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/data_imports/pipelines/vitally/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/data_imports/pipelines/vitally/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/data_imports/pipelines/vitally/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/data_imports/pipelines/vitally/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/data_imports/pipelines/vitally/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/data_imports/pipelines/vitally/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/data_imports/pipelines/vitally/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/data_imports/pipelines/vitally/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/data_imports/pipelines/vitally/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/data_imports/pipelines/stripe/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/data_imports/pipelines/stripe/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/data_imports/pipelines/stripe/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/data_imports/pipelines/stripe/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/data_imports/pipelines/stripe/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/data_imports/pipelines/stripe/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/data_imports/pipelines/stripe/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/data_imports/pipelines/stripe/__init__.py:0: error: Unused "type: ignore" comment [unused-ignore] +posthog/api/sharing.py:0: error: Item "None" of "list[Any] | None" has no attribute "__iter__" (not iterable) [union-attr] +posthog/temporal/tests/external_data/test_external_data_job.py:0: error: Invalid index type "str" for "dict[Type, Sequence[str]]"; expected type "Type" [index] +posthog/temporal/tests/external_data/test_external_data_job.py:0: error: Invalid index type "str" for "dict[Type, Sequence[str]]"; expected type "Type" [index] +posthog/temporal/tests/external_data/test_external_data_job.py:0: error: Invalid index type "str" for "dict[Type, Sequence[str]]"; expected type "Type" [index] +posthog/temporal/tests/external_data/test_external_data_job.py:0: error: Invalid index type "str" for "dict[Type, Sequence[str]]"; expected type "Type" [index] +posthog/temporal/tests/external_data/test_external_data_job.py:0: error: Invalid index type "str" for "dict[Type, Sequence[str]]"; expected type "Type" [index] posthog/api/test/batch_exports/conftest.py:0: error: Signature of "run" incompatible with supertype "Worker" [override] posthog/api/test/batch_exports/conftest.py:0: note: Superclass: posthog/api/test/batch_exports/conftest.py:0: note: def run(self) -> Coroutine[Any, Any, None] posthog/api/test/batch_exports/conftest.py:0: note: Subclass: posthog/api/test/batch_exports/conftest.py:0: note: def run(self, loop: Any) -> Any posthog/api/test/batch_exports/conftest.py:0: error: Argument "activities" to "ThreadedWorker" has incompatible type "list[function]"; expected "Sequence[Callable[..., Any]]" [arg-type] -posthog/warehouse/api/external_data_schema.py:0: error: Incompatible return value type (got "str | None", expected "SyncType | None") [return-value] -posthog/warehouse/api/external_data_schema.py:0: error: Argument 1 to "get_sql_schemas_for_source_type" has incompatible type "str"; expected "Type" [arg-type] -posthog/warehouse/api/external_data_schema.py:0: error: No overload variant of "get" of "dict" matches argument type "str" [call-overload] -posthog/warehouse/api/external_data_schema.py:0: note: Possible overload variants: -posthog/warehouse/api/external_data_schema.py:0: note: def get(self, Type, /) -> dict[str, list[IncrementalField]] | None -posthog/warehouse/api/external_data_schema.py:0: note: def get(self, Type, dict[str, list[IncrementalField]], /) -> dict[str, list[IncrementalField]] -posthog/warehouse/api/external_data_schema.py:0: note: def [_T] get(self, Type, _T, /) -> dict[str, list[IncrementalField]] | _T -posthog/warehouse/api/table.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/warehouse/api/table.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/warehouse/api/table.py:0: error: Unused "type: ignore" comment [unused-ignore] -posthog/temporal/data_imports/workflow_activities/import_data.py:0: error: Argument "job_type" to "PipelineInputs" has incompatible type "str"; expected "Type" [arg-type] -posthog/temporal/data_imports/workflow_activities/import_data.py:0: error: Argument "source_type" to "sql_source_for_type" has incompatible type "str"; expected "Type" [arg-type] -posthog/temporal/data_imports/workflow_activities/import_data.py:0: error: Argument "source_type" to "sql_source_for_type" has incompatible type "str"; expected "Type" [arg-type] +posthog/temporal/tests/data_imports/test_end_to_end.py:0: error: Unused "type: ignore" comment [unused-ignore] posthog/api/test/test_team.py:0: error: "HttpResponse" has no attribute "json" [attr-defined] posthog/api/test/test_team.py:0: error: "HttpResponse" has no attribute "json" [attr-defined] +posthog/api/test/test_capture.py:0: error: Statement is unreachable [unreachable] +posthog/api/test/test_capture.py:0: error: Incompatible return value type (got "_MonkeyPatchedWSGIResponse", expected "HttpResponse") [return-value] +posthog/api/test/test_capture.py:0: error: Module has no attribute "utc" [attr-defined] +posthog/api/test/test_capture.py:0: error: Unpacked dict entry 0 has incompatible type "Collection[str]"; expected "SupportsKeysAndGetItem[str, dict[Never, Never]]" [dict-item] +posthog/api/test/test_capture.py:0: error: Unpacked dict entry 0 has incompatible type "Collection[str]"; expected "SupportsKeysAndGetItem[str, dict[Never, Never]]" [dict-item] +posthog/api/test/test_capture.py:0: error: Unpacked dict entry 0 has incompatible type "Collection[str]"; expected "SupportsKeysAndGetItem[str, dict[Never, Never]]" [dict-item] +posthog/api/test/test_capture.py:0: error: Dict entry 0 has incompatible type "str": "float"; expected "str": "int" [dict-item] +posthog/api/test/test_capture.py:0: error: Dict entry 0 has incompatible type "str": "float"; expected "str": "int" [dict-item] +posthog/api/test/test_capture.py:0: error: Dict entry 0 has incompatible type "str": "float"; expected "str": "int" [dict-item] +posthog/api/test/test_capture.py:0: error: Dict entry 0 has incompatible type "str": "float"; expected "str": "int" [dict-item] +posthog/api/test/test_capture.py:0: error: Dict entry 0 has incompatible type "str": "float"; expected "str": "int" [dict-item] +posthog/api/test/test_capture.py:0: error: Dict entry 0 has incompatible type "str": "float"; expected "str": "int" [dict-item] posthog/test/test_middleware.py:0: error: Incompatible types in assignment (expression has type "_MonkeyPatchedWSGIResponse", variable has type "_MonkeyPatchedResponse") [assignment] posthog/management/commands/test/test_create_batch_export_from_app.py:0: error: Incompatible return value type (got "dict[str, Collection[str]]", expected "dict[str, str]") [return-value] posthog/management/commands/test/test_create_batch_export_from_app.py:0: error: Incompatible types in assignment (expression has type "dict[str, Collection[str]]", variable has type "dict[str, str]") [assignment] @@ -859,21 +879,3 @@ posthog/api/test/batch_exports/test_update.py:0: error: Value of type "BatchExpo posthog/api/test/batch_exports/test_update.py:0: error: Value of type "BatchExport" is not indexable [index] posthog/api/test/batch_exports/test_update.py:0: error: Value of type "BatchExport" is not indexable [index] posthog/api/test/batch_exports/test_pause.py:0: error: "batch_export_delete_schedule" does not return a value (it only ever returns None) [func-returns-value] -posthog/temporal/tests/external_data/test_external_data_job.py:0: error: Invalid index type "str" for "dict[Type, Sequence[str]]"; expected type "Type" [index] -posthog/temporal/tests/external_data/test_external_data_job.py:0: error: Invalid index type "str" for "dict[Type, Sequence[str]]"; expected type "Type" [index] -posthog/temporal/tests/external_data/test_external_data_job.py:0: error: Invalid index type "str" for "dict[Type, Sequence[str]]"; expected type "Type" [index] -posthog/temporal/tests/external_data/test_external_data_job.py:0: error: Invalid index type "str" for "dict[Type, Sequence[str]]"; expected type "Type" [index] -posthog/temporal/tests/external_data/test_external_data_job.py:0: error: Invalid index type "str" for "dict[Type, Sequence[str]]"; expected type "Type" [index] -posthog/api/test/test_capture.py:0: error: Statement is unreachable [unreachable] -posthog/api/test/test_capture.py:0: error: Incompatible return value type (got "_MonkeyPatchedWSGIResponse", expected "HttpResponse") [return-value] -posthog/api/test/test_capture.py:0: error: Module has no attribute "utc" [attr-defined] -posthog/api/test/test_capture.py:0: error: Unpacked dict entry 0 has incompatible type "Collection[str]"; expected "SupportsKeysAndGetItem[str, dict[Never, Never]]" [dict-item] -posthog/api/test/test_capture.py:0: error: Unpacked dict entry 0 has incompatible type "Collection[str]"; expected "SupportsKeysAndGetItem[str, dict[Never, Never]]" [dict-item] -posthog/api/test/test_capture.py:0: error: Unpacked dict entry 0 has incompatible type "Collection[str]"; expected "SupportsKeysAndGetItem[str, dict[Never, Never]]" [dict-item] -posthog/api/test/test_capture.py:0: error: Dict entry 0 has incompatible type "str": "float"; expected "str": "int" [dict-item] -posthog/api/test/test_capture.py:0: error: Dict entry 0 has incompatible type "str": "float"; expected "str": "int" [dict-item] -posthog/api/test/test_capture.py:0: error: Dict entry 0 has incompatible type "str": "float"; expected "str": "int" [dict-item] -posthog/api/test/test_capture.py:0: error: Dict entry 0 has incompatible type "str": "float"; expected "str": "int" [dict-item] -posthog/api/test/test_capture.py:0: error: Dict entry 0 has incompatible type "str": "float"; expected "str": "int" [dict-item] -posthog/api/test/test_capture.py:0: error: Dict entry 0 has incompatible type "str": "float"; expected "str": "int" [dict-item] -posthog/temporal/tests/data_imports/test_end_to_end.py:0: error: Unused "type: ignore" comment [unused-ignore] diff --git a/package.json b/package.json index 70aabb78bdb..7183211212e 100644 --- a/package.json +++ b/package.json @@ -144,6 +144,7 @@ "kea-waitfor": "^0.2.1", "kea-window-values": "^3.0.0", "lodash.merge": "^4.6.2", + "lodash.uniqby": "^4.7.0", "maplibre-gl": "^3.5.1", "md5": "^2.3.0", "monaco-editor": "^0.49.0", @@ -233,6 +234,7 @@ "@types/jest": "^29.5.12", "@types/jest-image-snapshot": "^6.1.0", "@types/lodash.merge": "^4.6.9", + "@types/lodash.uniqby": "^4.7.9", "@types/md5": "^2.3.0", "@types/node": "^18.11.9", "@types/papaparse": "^5.3.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e94f7aeb01f..cfbfff57adc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -253,6 +253,9 @@ dependencies: lodash.merge: specifier: ^4.6.2 version: 4.6.2 + lodash.uniqby: + specifier: ^4.7.0 + version: 4.7.0 maplibre-gl: specifier: ^3.5.1 version: 3.5.1 @@ -518,6 +521,9 @@ devDependencies: '@types/lodash.merge': specifier: ^4.6.9 version: 4.6.9 + '@types/lodash.uniqby': + specifier: ^4.7.9 + version: 4.7.9 '@types/node': specifier: ^18.11.9 version: 18.11.9 @@ -8397,6 +8403,12 @@ packages: '@types/lodash': 4.14.188 dev: true + /@types/lodash.uniqby@4.7.9: + resolution: {integrity: sha512-rjrXji/seS6BZJRgXrU2h6FqxRVufsbq/HE0Tx0SdgbtlWr2YmD/M64BlYEYYlaMcpZwy32IYVkMfUMYlPuv0w==} + dependencies: + '@types/lodash': 4.14.188 + dev: true + /@types/lodash@4.14.188: resolution: {integrity: sha512-zmEmF5OIM3rb7SbLCFYoQhO4dGt2FRM9AMkxvA3LaADOF1n8in/zGJlWji9fmafLoNyz+FoL6FE0SLtGIArD7w==} dev: true @@ -15687,6 +15699,10 @@ packages: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} dev: false + /lodash.uniqby@4.7.0: + resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} + dev: false + /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} diff --git a/posthog/api/dashboards/dashboard.py b/posthog/api/dashboards/dashboard.py index 7541b6f0080..ca626c0d1a8 100644 --- a/posthog/api/dashboards/dashboard.py +++ b/posthog/api/dashboards/dashboard.py @@ -30,7 +30,7 @@ from posthog.models.dashboard_templates import DashboardTemplate from posthog.models.tagged_item import TaggedItem from posthog.models.user import User from posthog.user_permissions import UserPermissionsSerializerMixin -from posthog.utils import filters_override_requested_by_client +from posthog.utils import filters_override_requested_by_client, variables_override_requested_by_client logger = structlog.get_logger(__name__) @@ -126,6 +126,7 @@ class DashboardBasicSerializer( class DashboardSerializer(DashboardBasicSerializer): tiles = serializers.SerializerMethodField() filters = serializers.SerializerMethodField() + variables = serializers.SerializerMethodField() created_by = UserBasicSerializer(read_only=True) use_template = serializers.CharField(write_only=True, allow_blank=True, required=False) use_dashboard = serializers.IntegerField(write_only=True, allow_null=True, required=False) @@ -150,6 +151,7 @@ class DashboardSerializer(DashboardBasicSerializer): "use_dashboard", "delete_insights", "filters", + "variables", "tags", "tiles", "restriction_level", @@ -164,6 +166,12 @@ class DashboardSerializer(DashboardBasicSerializer): return value + def validate_variables(self, value) -> dict: + if not isinstance(value, dict): + raise serializers.ValidationError("Variables must be a dictionary") + + return value + @monitor(feature=Feature.DASHBOARD, endpoint="dashboard", method="POST") def create(self, validated_data: dict, *args: Any, **kwargs: Any) -> Dashboard: request = self.context["request"] @@ -301,6 +309,12 @@ class DashboardSerializer(DashboardBasicSerializer): raise serializers.ValidationError("Filters must be a dictionary") instance.filters = request_filters + request_variables = initial_data.get("variables") + if request_variables: + if not isinstance(request_variables, dict): + raise serializers.ValidationError("Filters must be a dictionary") + instance.variables = request_variables + instance = super().update(instance, validated_data) user = cast(User, self.context["request"].user) @@ -410,6 +424,16 @@ class DashboardSerializer(DashboardBasicSerializer): return dashboard.filters + def get_variables(self, dashboard: Dashboard) -> dict: + request = self.context.get("request") + if request: + variables_override = variables_override_requested_by_client(request) + + if variables_override is not None: + return variables_override + + return dashboard.variables + def validate(self, data): if data.get("use_dashboard", None) and data.get("use_template", None): raise serializers.ValidationError("`use_dashboard` and `use_template` cannot be used together") diff --git a/posthog/api/insight.py b/posthog/api/insight.py index a039b7cb192..d1aa643a400 100644 --- a/posthog/api/insight.py +++ b/posthog/api/insight.py @@ -60,6 +60,7 @@ from posthog.hogql.timings import HogQLTimings from posthog.hogql_queries.apply_dashboard_filters import ( WRAPPER_NODE_KINDS, apply_dashboard_filters_to_dict, + apply_dashboard_variables_to_dict, ) from posthog.hogql_queries.legacy_compatibility.feature_flag import ( hogql_insights_replace_filters, @@ -109,10 +110,11 @@ from posthog.rate_limit import ( from posthog.settings import CAPTURE_TIME_TO_SEE_DATA, SITE_URL from posthog.user_permissions import UserPermissionsSerializerMixin from posthog.utils import ( - filters_override_requested_by_client, refresh_requested_by_client, relative_date_parse, str_to_bool, + filters_override_requested_by_client, + variables_override_requested_by_client, ) logger = structlog.get_logger(__name__) @@ -594,12 +596,17 @@ class InsightSerializer(InsightBasicSerializer, UserPermissionsSerializerMixin): dashboard: Optional[Dashboard] = self.context.get("dashboard") request: Optional[Request] = self.context.get("request") dashboard_filters_override = filters_override_requested_by_client(request) if request else None + dashboard_variables_override = variables_override_requested_by_client(request) if request else None if hogql_insights_replace_filters(instance.team) and ( instance.query is not None or instance.query_from_filters is not None ): query = instance.query or instance.query_from_filters - if dashboard is not None or dashboard_filters_override is not None: + if ( + dashboard is not None + or dashboard_filters_override is not None + or dashboard_variables_override is not None + ): query = apply_dashboard_filters_to_dict( query, ( @@ -611,6 +618,12 @@ class InsightSerializer(InsightBasicSerializer, UserPermissionsSerializerMixin): ), instance.team, ) + + query = apply_dashboard_variables_to_dict( + query, + dashboard_variables_override or {}, + instance.team, + ) representation["filters"] = {} representation["query"] = query else: @@ -618,7 +631,9 @@ class InsightSerializer(InsightBasicSerializer, UserPermissionsSerializerMixin): dashboard=dashboard, dashboard_filters_override=dashboard_filters_override ) representation["query"] = instance.get_effective_query( - dashboard=dashboard, dashboard_filters_override=dashboard_filters_override + dashboard=dashboard, + dashboard_filters_override=dashboard_filters_override, + dashboard_variables_override=dashboard_variables_override, ) if "insight" not in representation["filters"] and not representation["query"]: @@ -639,6 +654,7 @@ class InsightSerializer(InsightBasicSerializer, UserPermissionsSerializerMixin): refresh_requested = refresh_requested_by_client(self.context["request"]) execution_mode = execution_mode_from_refresh(refresh_requested) filters_override = filters_override_requested_by_client(self.context["request"]) + variables_override = variables_override_requested_by_client(self.context["request"]) if self.context.get("is_shared", False): execution_mode = shared_insights_execution_mode(execution_mode) @@ -650,6 +666,7 @@ class InsightSerializer(InsightBasicSerializer, UserPermissionsSerializerMixin): execution_mode=execution_mode, user=None if self.context["request"].user.is_anonymous else self.context["request"].user, filters_override=filters_override, + variables_override=variables_override, ) except ExposedHogQLError as e: raise ValidationError(str(e)) diff --git a/posthog/api/query.py b/posthog/api/query.py index 7896e102ca2..1d3bf3f67ed 100644 --- a/posthog/api/query.py +++ b/posthog/api/query.py @@ -28,7 +28,10 @@ from posthog.errors import ExposedCHQueryError from posthog.event_usage import report_user_action from posthog.hogql.ai import PromptUnclear, write_sql_from_prompt from posthog.hogql.errors import ExposedHogQLError -from posthog.hogql_queries.apply_dashboard_filters import apply_dashboard_filters_to_dict +from posthog.hogql_queries.apply_dashboard_filters import ( + apply_dashboard_filters_to_dict, + apply_dashboard_variables_to_dict, +) from posthog.hogql_queries.query_runner import ExecutionMode, execution_mode_from_refresh from posthog.models.user import User from posthog.rate_limit import ( @@ -79,6 +82,14 @@ class QueryViewSet(TeamAndOrgViewSetMixin, PydanticModelMixin, viewsets.ViewSet) data.query.model_dump(), data.filters_override.model_dump(), self.team ) # type: ignore + if data.variables_override is not None: + if isinstance(data.query, BaseModel): + query_as_dict = data.query.model_dump() + else: + query_as_dict = data.query + + data.query = apply_dashboard_variables_to_dict(query_as_dict, data.variables_override, self.team) # type: ignore + client_query_id = data.client_query_id or uuid.uuid4().hex execution_mode = execution_mode_from_refresh(data.refresh) response_status: int = status.HTTP_200_OK diff --git a/posthog/api/services/query.py b/posthog/api/services/query.py index be9f6d56bea..c3ca91cb88a 100644 --- a/posthog/api/services/query.py +++ b/posthog/api/services/query.py @@ -18,6 +18,7 @@ from posthog.hogql_queries.query_runner import CacheMissResponse, ExecutionMode, from posthog.models import Team, User from posthog.schema import ( DatabaseSchemaQueryResponse, + HogQLVariable, HogQuery, DashboardFilter, HogQLAutocomplete, @@ -35,6 +36,7 @@ def process_query_dict( query_json: dict, *, dashboard_filters_json: Optional[dict] = None, + variables_override_json: Optional[dict] = None, limit_context: Optional[LimitContext] = None, execution_mode: ExecutionMode = ExecutionMode.RECENT_CACHE_CALCULATE_BLOCKING_IF_STALE, user: Optional[User] = None, @@ -44,11 +46,17 @@ def process_query_dict( ) -> dict | BaseModel: model = QuerySchemaRoot.model_validate(query_json) tag_queries(query=query_json) + dashboard_filters = DashboardFilter.model_validate(dashboard_filters_json) if dashboard_filters_json else None + variables_override = ( + [HogQLVariable.model_validate(n) for n in variables_override_json.values()] if variables_override_json else None + ) + return process_query_model( team, model.root, dashboard_filters=dashboard_filters, + variables_override=variables_override, limit_context=limit_context, execution_mode=execution_mode, user=user, @@ -63,6 +71,7 @@ def process_query_model( query: BaseModel, # mypy has problems with unions and isinstance *, dashboard_filters: Optional[DashboardFilter] = None, + variables_override: Optional[list[HogQLVariable]] = None, limit_context: Optional[LimitContext] = None, execution_mode: ExecutionMode = ExecutionMode.RECENT_CACHE_CALCULATE_BLOCKING_IF_STALE, user: Optional[User] = None, @@ -80,6 +89,7 @@ def process_query_model( team, query.source, dashboard_filters=dashboard_filters, + variables_override=variables_override, limit_context=limit_context, execution_mode=execution_mode, user=user, @@ -119,6 +129,8 @@ def process_query_model( else: # Query runner available - it will handle execution as well as caching if dashboard_filters: query_runner.apply_dashboard_filters(dashboard_filters) + if variables_override: + query_runner.apply_variable_overrides(variables_override) result = query_runner.run( execution_mode=execution_mode, user=user, diff --git a/posthog/api/test/dashboards/test_dashboard.py b/posthog/api/test/dashboards/test_dashboard.py index 1b9c98b029f..ef97a1e6bd6 100644 --- a/posthog/api/test/dashboards/test_dashboard.py +++ b/posthog/api/test/dashboards/test_dashboard.py @@ -13,6 +13,7 @@ from posthog.api.test.dashboards import DashboardAPI from posthog.constants import AvailableFeature from posthog.hogql_queries.legacy_compatibility.filter_to_query import filter_to_query from posthog.models import Dashboard, DashboardTile, Filter, Insight, Team, User +from posthog.models.insight_variable import InsightVariable from posthog.models.organization import Organization from posthog.models.project import Project from posthog.models.sharing_configuration import SharingConfiguration @@ -1391,3 +1392,52 @@ class TestDashboard(APIBaseTest, QueryMatchingTest): for item in response["tiles"]: self.assertNotEqual(item.get("dashboard", None), existing_dashboard.pk) + + def test_dashboard_variables(self): + variable = InsightVariable.objects.create( + team=self.team, name="Test 1", code_name="test_1", default_value="some_default_value", type="String" + ) + dashboard = Dashboard.objects.create( + team=self.team, + name="dashboard 1", + created_by=self.user, + variables={ + str(variable.id): { + "code_name": variable.code_name, + "variableId": str(variable.id), + "value": "some override value", + } + }, + ) + insight = Insight.objects.create( + filters={}, + query={ + "kind": "DataVisualizationNode", + "source": { + "kind": "HogQLQuery", + "query": "select {variables.test_1}", + "variables": { + str(variable.id): { + "code_name": variable.code_name, + "variableId": str(variable.id), + } + }, + }, + "chartSettings": {}, + "tableSettings": {}, + }, + team=self.team, + last_refresh=now(), + ) + DashboardTile.objects.create(dashboard=dashboard, insight=insight) + + response_data = self.dashboard_api.get_dashboard(dashboard.pk) + + assert response_data["variables"] is not None + assert isinstance(response_data["variables"], dict) + assert len(response_data["variables"].keys()) == 1 + for key, value in response_data["variables"].items(): + assert key == str(variable.id) + assert value["code_name"] == variable.code_name + assert value["variableId"] == str(variable.id) + assert value["value"] == "some override value" diff --git a/posthog/api/test/test_insight.py b/posthog/api/test/test_insight.py index 3aa7723fb95..32cd4da9df8 100644 --- a/posthog/api/test/test_insight.py +++ b/posthog/api/test/test_insight.py @@ -33,6 +33,7 @@ from posthog.models import ( User, ) from posthog.models.insight_caching_state import InsightCachingState +from posthog.models.insight_variable import InsightVariable from posthog.models.project import Project from posthog.schema import ( DataTableNode, @@ -380,6 +381,7 @@ class TestInsight(ClickhouseTestMixin, APIBaseTest, QueryMatchingTest): team=self.team, user=mock.ANY, filters_override=None, + variables_override=None, ) with patch( @@ -393,6 +395,7 @@ class TestInsight(ClickhouseTestMixin, APIBaseTest, QueryMatchingTest): team=self.team, user=mock.ANY, filters_override=None, + variables_override=None, ) def test_get_insight_by_short_id(self) -> None: @@ -3596,3 +3599,60 @@ class TestInsight(ClickhouseTestMixin, APIBaseTest, QueryMatchingTest): self.assertNotIn("code", response) self.assertIsNotNone(response["results"][0]["types"]) + + def test_insight_variables_overrides(self): + dashboard = Dashboard.objects.create( + team=self.team, + name="dashboard 1", + created_by=self.user, + ) + variable = InsightVariable.objects.create( + team=self.team, name="Test 1", code_name="test_1", default_value="some_default_value", type="String" + ) + insight = Insight.objects.create( + filters={}, + query={ + "kind": "DataVisualizationNode", + "source": { + "kind": "HogQLQuery", + "query": "select {variables.test_1}", + "variables": { + str(variable.id): { + "code_name": variable.code_name, + "variableId": str(variable.id), + } + }, + }, + "chartSettings": {}, + "tableSettings": {}, + }, + team=self.team, + ) + DashboardTile.objects.create(dashboard=dashboard, insight=insight) + + response = self.client.get( + f"/api/projects/{self.team.id}/insights/{insight.pk}", + data={ + "from_dashboard": dashboard.pk, + "variables_override": json.dumps( + { + str(variable.id): { + "code_name": variable.code_name, + "variableId": str(variable.id), + "value": "override value!", + } + } + ), + }, + ).json() + + assert isinstance(response["query"], dict) + assert isinstance(response["query"]["source"], dict) + assert isinstance(response["query"]["source"]["variables"], dict) + + assert len(response["query"]["source"]["variables"].keys()) == 1 + for key, value in response["query"]["source"]["variables"].items(): + assert key == str(variable.id) + assert value["code_name"] == variable.code_name + assert value["variableId"] == str(variable.id) + assert value["value"] == "override value!" diff --git a/posthog/caching/calculate_results.py b/posthog/caching/calculate_results.py index 985332c3c72..8af99a3b2cf 100644 --- a/posthog/caching/calculate_results.py +++ b/posthog/caching/calculate_results.py @@ -130,6 +130,7 @@ def calculate_for_query_based_insight( execution_mode: ExecutionMode, user: Optional[User], filters_override: Optional[dict] = None, + variables_override: Optional[dict] = None, ) -> "InsightResult": from posthog.caching.fetch_from_cache import InsightResult, NothingInCacheResult from posthog.caching.insight_cache import update_cached_state @@ -144,6 +145,13 @@ def calculate_for_query_based_insight( dashboard_filters_json=( filters_override if filters_override is not None else dashboard.filters if dashboard is not None else None ), + variables_override_json=( + variables_override + if variables_override is not None + else dashboard.variables + if dashboard is not None + else None + ), execution_mode=execution_mode, user=user, insight_id=insight.pk, diff --git a/posthog/hogql_queries/apply_dashboard_filters.py b/posthog/hogql_queries/apply_dashboard_filters.py index 6d8e74f0fb5..9cb016eb48d 100644 --- a/posthog/hogql_queries/apply_dashboard_filters.py +++ b/posthog/hogql_queries/apply_dashboard_filters.py @@ -22,3 +22,31 @@ def apply_dashboard_filters_to_dict(query: dict, filters: dict, team: Team) -> d return query query_runner.apply_dashboard_filters(DashboardFilter(**filters)) return query_runner.query.model_dump() + + +# Apply the variables from the django-style Dashboard object +def apply_dashboard_variables_to_dict(query: dict, variables_overrides: dict[str, dict], team: Team) -> dict: + if not variables_overrides: + return query + + if query.get("kind") in WRAPPER_NODE_KINDS: + source = apply_dashboard_variables_to_dict(query["source"], variables_overrides, team) + return {**query, "source": source} + + if query.get("kind") == NodeKind.HOG_QL_QUERY: + query_variables: dict[str, dict] | None = query.get("variables") + if query_variables is None: + return query + + for variable_id, overriden_hogql_variable in variables_overrides.items(): + query_variable = query_variables.get(variable_id) + if query_variable: + query_variables[variable_id] = { + "variableId": variable_id, + "code_name": query_variable["code_name"], + "value": overriden_hogql_variable.get("value"), + } + + return {**query, "variables": query_variables} + + return query diff --git a/posthog/hogql_queries/query_runner.py b/posthog/hogql_queries/query_runner.py index 8d62fabf66c..2786a79f299 100644 --- a/posthog/hogql_queries/query_runner.py +++ b/posthog/hogql_queries/query_runner.py @@ -33,6 +33,7 @@ from posthog.schema import ( FunnelsQuery, HogQLQuery, HogQLQueryModifiers, + HogQLVariable, InsightActorsQuery, InsightActorsQueryOptions, LifecycleQuery, @@ -721,6 +722,20 @@ class QueryRunner(ABC, Generic[Q, R, CR]): def _refresh_frequency(self) -> timedelta: return timedelta(minutes=1) + def apply_variable_overrides(self, variable_overrides: list[HogQLVariable]): + """Irreversably update self.query with provided variable overrides.""" + if not hasattr(self.query, "variables") or not self.query.kind == "HogQLQuery" or len(variable_overrides) == 0: + return + + assert isinstance(self.query, HogQLQuery) + + if not self.query.variables: + return + + for variable in variable_overrides: + if self.query.variables.get(variable.variableId): + self.query.variables[variable.variableId] = variable + def apply_dashboard_filters(self, dashboard_filter: DashboardFilter): """Irreversably update self.query with provided dashboard filters.""" if not hasattr(self.query, "properties") or not hasattr(self.query, "dateRange"): diff --git a/posthog/models/insight.py b/posthog/models/insight.py index d32c2d1c31e..c8e5b0fbc76 100644 --- a/posthog/models/insight.py +++ b/posthog/models/insight.py @@ -196,9 +196,17 @@ class Insight(models.Model): return self.filters def get_effective_query( - self, *, dashboard: Optional[Dashboard], dashboard_filters_override: Optional[dict] = None + self, + *, + dashboard: Optional[Dashboard], + dashboard_filters_override: Optional[dict] = None, + dashboard_variables_override: Optional[dict[str, dict]] = None, ) -> Optional[dict]: from posthog.hogql_queries.apply_dashboard_filters import apply_dashboard_filters_to_dict + from posthog.hogql_queries.apply_dashboard_filters import apply_dashboard_variables_to_dict + + if self.query and dashboard_variables_override: + self.query = apply_dashboard_variables_to_dict(self.query, dashboard_variables_override or {}, self.team) if not (dashboard or dashboard_filters_override) or not self.query: return self.query diff --git a/posthog/schema.py b/posthog/schema.py index f980c95611b..f3256462172 100644 --- a/posthog/schema.py +++ b/posthog/schema.py @@ -6372,6 +6372,7 @@ class QueryRequest(BaseModel): " `query_status` response field." ), ) + variables_override: Optional[dict[str, dict[str, Any]]] = None class QuerySchemaRoot( diff --git a/posthog/utils.py b/posthog/utils.py index 7db447e77c8..5fc94a7722d 100644 --- a/posthog/utils.py +++ b/posthog/utils.py @@ -1068,6 +1068,20 @@ def filters_override_requested_by_client(request: Request) -> Optional[dict]: return None +def variables_override_requested_by_client(request: Request) -> Optional[dict[str, dict]]: + raw_variables = request.query_params.get("variables_override") + + if raw_variables is not None: + try: + return json.loads(raw_variables) + except Exception: + raise serializers.ValidationError( + {"variables_override": "Invalid JSON passed in variables_override parameter"} + ) + + return None + + def _request_has_key_set(key: str, request: Request, allowed_values: Optional[list[str]] = None) -> bool | str: query_param = request.query_params.get(key) data_value = request.data.get(key)

    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 b^Vjr|(e&MBsmO}zdEp^Mwf delta 124387 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 z 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 z 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 KUN-J5I`$Vh#K(gG diff --git a/frontend/src/lib/api.ts b/frontend/src/lib/api.ts index a8e6024171b..5796e0e2e56 100644 --- a/frontend/src/lib/api.ts +++ b/frontend/src/lib/api.ts @@ -16,6 +16,7 @@ import { DatabaseSerializedFieldType, ErrorTrackingGroup, HogCompileResponse, + HogQLVariable, QuerySchema, QueryStatusResponse, RecordingsQuery, @@ -962,7 +963,8 @@ const api = { shortId: InsightModel['short_id'], basic?: boolean, refresh?: RefreshType, - filtersOverride?: DashboardFilter | null + filtersOverride?: DashboardFilter | null, + variablesOverride?: Record | null ): Promise>> { return new ApiRequest() .insights() @@ -972,6 +974,7 @@ const api = { basic, refresh, filters_override: filtersOverride, + variables_override: variablesOverride, }) ) .get() @@ -2429,7 +2432,8 @@ const api = { queryId?: string, refresh?: boolean, async?: boolean, - filtersOverride?: DashboardFilter | null + filtersOverride?: DashboardFilter | null, + variablesOverride?: Record | null ): Promise< T extends { [response: string]: any } ? T['response'] extends infer P | undefined @@ -2440,7 +2444,13 @@ const api = { 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, filters_override: filtersOverride }, + data: { + query, + client_query_id: queryId, + refresh: refreshParam, + filters_override: filtersOverride, + variables_override: variablesOverride, + }, }) }, diff --git a/frontend/src/lib/components/Cards/InsightCard/InsightCard.tsx b/frontend/src/lib/components/Cards/InsightCard/InsightCard.tsx index 47466518295..a029e327165 100644 --- a/frontend/src/lib/components/Cards/InsightCard/InsightCard.tsx +++ b/frontend/src/lib/components/Cards/InsightCard/InsightCard.tsx @@ -11,6 +11,7 @@ import { insightLogic } from 'scenes/insights/insightLogic' import { ErrorBoundary } from '~/layout/ErrorBoundary' import { themeLogic } from '~/layout/navigation-3000/themeLogic' import { Query } from '~/queries/Query/Query' +import { HogQLVariable } from '~/queries/schema' import { DashboardBasicType, DashboardPlacement, @@ -60,6 +61,8 @@ export interface InsightCardProps extends Resizeable, React.HTMLAttributes } function InsightCardInternal( @@ -90,6 +93,7 @@ function InsightCardInternal( placement, loadPriority, doNotLoad, + variablesOverride, ...divProps }: InsightCardProps, ref: React.Ref @@ -141,6 +145,7 @@ function InsightCardInternal( showEditingControls={showEditingControls} showDetailsControls={showDetailsControls} moreButtons={moreButtons} + variablesOverride={variablesOverride} />