From 56f8de77a11fe3423df241dcb426036ec42db544 Mon Sep 17 00:00:00 2001 From: Tom Owers Date: Mon, 24 Jun 2024 12:47:04 +0100 Subject: [PATCH 01/24] feat(data-warehouse): Added incremental syncs for postgres (#23145) * Added incremental syncs for postgres * Tests * Fixed mypy * Added extra protection on the sync form * Set the correct write disposition for SQL * PR fixes * Fixed tests * Fixed tests * Fixed tests --- frontend/src/lib/api.ts | 4 + .../lib/lemon-ui/LemonRadio/LemonRadio.tsx | 8 +- .../external/forms/PostgresSchemaForm.tsx | 187 ++++---- .../external/forms/SyncMethodForm.tsx | 197 +++++++++ .../data-warehouse/new/sourceWizardLogic.tsx | 53 ++- .../DataWarehouseManagedSourcesTable.tsx | 398 ++++++++++++------ .../settings/dataWarehouseSettingsLogic.ts | 42 +- ...rehouseSourcesTableSyncMethodModalLogic.ts | 66 +++ frontend/src/types.ts | 24 +- latest_migrations.manifest | 2 +- mypy-baseline.txt | 7 + ...31_externaldataschema_sync_type_payload.py | 45 ++ .../data_imports/pipelines/helpers.py | 9 + .../data_imports/pipelines/pipeline.py | 41 +- .../data_imports/pipelines/schemas.py | 11 + .../pipelines/sql_database/__init__.py | 49 ++- .../pipelines/sql_database/helpers.py | 16 +- .../data_imports/pipelines/stripe/settings.py | 63 +++ .../pipelines/test/test_pipeline.py | 5 +- .../pipelines/zendesk/settings.py | 11 + .../workflow_activities/import_data.py | 77 +++- .../tests/batch_exports/test_import_data.py | 6 + .../tests/data_imports/test_end_to_end.py | 16 + .../external_data/test_external_data_job.py | 14 +- posthog/warehouse/api/external_data_schema.py | 181 +++++++- posthog/warehouse/api/external_data_source.py | 101 ++++- posthog/warehouse/api/test/conftest.py | 71 ++++ .../api/test/test_external_data_schema.py | 358 ++++++++++++++++ .../api/test/test_external_data_source.py | 231 ++++++++-- posthog/warehouse/models/external_data_job.py | 9 +- .../warehouse/models/external_data_schema.py | 66 ++- posthog/warehouse/types.py | 17 + requirements.in | 2 +- requirements.txt | 2 +- 34 files changed, 2042 insertions(+), 347 deletions(-) create mode 100644 frontend/src/scenes/data-warehouse/external/forms/SyncMethodForm.tsx create mode 100644 frontend/src/scenes/data-warehouse/settings/dataWarehouseSourcesTableSyncMethodModalLogic.ts create mode 100644 posthog/migrations/0431_externaldataschema_sync_type_payload.py create mode 100644 posthog/warehouse/api/test/conftest.py create mode 100644 posthog/warehouse/api/test/test_external_data_schema.py create mode 100644 posthog/warehouse/types.py diff --git a/frontend/src/lib/api.ts b/frontend/src/lib/api.ts index 720c3c3642887..16a42c609e16c 100644 --- a/frontend/src/lib/api.ts +++ b/frontend/src/lib/api.ts @@ -73,6 +73,7 @@ import { RolesListParams, RoleType, ScheduledChangeType, + SchemaIncrementalFieldsResponse, SearchListParams, SearchResponse, SessionRecordingPlaylistType, @@ -2080,6 +2081,9 @@ const api = { async resync(schemaId: ExternalDataSourceSchema['id']): Promise { await new ApiRequest().externalDataSourceSchema(schemaId).withAction('resync').create() }, + async incremental_fields(schemaId: ExternalDataSourceSchema['id']): Promise { + return await new ApiRequest().externalDataSourceSchema(schemaId).withAction('incremental_fields').create() + }, }, dataWarehouseViewLinks: { diff --git a/frontend/src/lib/lemon-ui/LemonRadio/LemonRadio.tsx b/frontend/src/lib/lemon-ui/LemonRadio/LemonRadio.tsx index fba801de2a8e2..686255984134a 100644 --- a/frontend/src/lib/lemon-ui/LemonRadio/LemonRadio.tsx +++ b/frontend/src/lib/lemon-ui/LemonRadio/LemonRadio.tsx @@ -15,6 +15,7 @@ export interface LemonRadioProps { onChange: (newValue: T) => void options: LemonRadioOption[] className?: string + radioPosition?: 'center' | 'top' } /** Single choice radio. */ @@ -23,6 +24,7 @@ export function LemonRadio({ onChange, options, className, + radioPosition, }: LemonRadioProps): JSX.Element { return (
@@ -32,7 +34,11 @@ export function LemonRadio({ key={value} className={clsx( 'grid items-center gap-x-2 grid-cols-[min-content_auto] text-sm', - disabledReason ? 'text-muted cursor-not-allowed' : 'cursor-pointer' + disabledReason ? 'text-muted cursor-not-allowed' : 'cursor-pointer', + { + 'items-baseline': radioPosition === 'top', + 'items-center': radioPosition === 'center' || !radioPosition, + } )} > [] => { - const options: LemonSelectOptionLeaf[] = [] - - if (schema.sync_types.full_refresh) { - options.push({ value: 'full_refresh', label: 'Full refresh' }) - } - - if (schema.sync_types.incremental) { - options.push({ value: 'incremental', label: 'Incremental' }) - } - - return options -} +import { SyncMethodForm } from './SyncMethodForm' export default function PostgresSchemaForm(): JSX.Element { - const { toggleSchemaShouldSync, updateSchemaSyncType } = useActions(sourceWizardLogic) + const { toggleSchemaShouldSync, openSyncMethodModal } = useActions(sourceWizardLogic) const { databaseSchema } = useValues(sourceWizardLogic) - const [toggleAllState, setToggleAllState] = useState(false) - - const toggleAllSwitches = (): void => { - databaseSchema.forEach((schema) => { - toggleSchemaShouldSync(schema, toggleAllState) - }) - - setToggleAllState(!toggleAllState) - } return ( -
-
- +
+
+ { + return ( + { + toggleSchemaShouldSync(schema, checked) + }} + /> + ) + }, }, - }, - { - title: ( - <> - Sync - toggleAllSwitches()} - > - {toggleAllState ? 'Enable' : 'Disable'} all - - - ), - key: 'should_sync', - render: function RenderShouldSync(_, schema) { - return ( - { - toggleSchemaShouldSync(schema, checked) - }} - /> - ) + { + title: 'Table', + key: 'table', + render: function RenderTable(_, schema) { + return schema.table + }, }, - }, - { - key: 'sync_type', - title: 'Sync type', - tooltip: - 'Full refresh will refresh the full table on every sync, whereas incremental will only sync new and updated rows since the last sync', - render: (_, schema) => { - const options = syncTypesToOptions(schema) + { + key: 'sync_type', + title: 'Sync method', + align: 'right', + tooltip: + 'Full refresh will refresh the full table on every sync, whereas incremental will only sync new and updated rows since the last sync', + render: (_, schema) => { + if (!schema.sync_type) { + return ( +
+ openSyncMethodModal(schema)} + > + Set up + +
+ ) + } - return ( - updateSchemaSyncType(schema, newValue)} - /> - ) + return ( +
+ openSyncMethodModal(schema)} + > + {schema.sync_type === 'full_refresh' ? 'Full refresh' : 'Incremental'} + +
+ ) + }, }, - }, - ]} - /> + ]} + /> +
-
+ + + ) +} + +const SyncMethodModal = (): JSX.Element => { + const { cancelSyncMethodModal, updateSchemaSyncType, toggleSchemaShouldSync } = useActions(sourceWizardLogic) + const { syncMethodModalOpen, currentSyncMethodModalSchema } = useValues(sourceWizardLogic) + + if (!currentSyncMethodModalSchema) { + return <> + } + + return ( + + { + if (syncType === 'incremental') { + updateSchemaSyncType( + currentSyncMethodModalSchema, + syncType, + incrementalField, + incrementalFieldType + ) + } else { + updateSchemaSyncType(currentSyncMethodModalSchema, syncType ?? null, null, null) + } + + toggleSchemaShouldSync(currentSyncMethodModalSchema, true) + cancelSyncMethodModal() + }} + /> + ) } diff --git a/frontend/src/scenes/data-warehouse/external/forms/SyncMethodForm.tsx b/frontend/src/scenes/data-warehouse/external/forms/SyncMethodForm.tsx new file mode 100644 index 0000000000000..8d4bafe96632a --- /dev/null +++ b/frontend/src/scenes/data-warehouse/external/forms/SyncMethodForm.tsx @@ -0,0 +1,197 @@ +import { LemonButton, LemonSelect, LemonTag, lemonToast } from '@posthog/lemon-ui' +import { LemonRadio } from 'lib/lemon-ui/LemonRadio' +import { useEffect, useState } from 'react' + +import { ExternalDataSourceSyncSchema } from '~/types' + +const getIncrementalSyncSupported = ( + schema: ExternalDataSourceSyncSchema +): { disabled: true; disabledReason: string } | { disabled: false } => { + if (!schema.incremental_available) { + return { + disabled: true, + disabledReason: "Incremental replication isn't supported on this table", + } + } + + if (schema.incremental_fields.length === 0) { + return { + disabled: true, + disabledReason: 'No incremental fields found on table', + } + } + + return { + disabled: false, + } +} + +interface SyncMethodFormProps { + schema: ExternalDataSourceSyncSchema + onClose: () => void + onSave: ( + syncType: ExternalDataSourceSyncSchema['sync_type'], + incrementalField: string | null, + incrementalFieldType: string | null + ) => void + saveButtonIsLoading?: boolean + showRefreshMessageOnChange?: boolean +} + +const hasInputChanged = ( + newSchemaSyncType: ExternalDataSourceSyncSchema['sync_type'], + newSchemaIncrementalField: string | null, + originalSchemaSyncType: ExternalDataSourceSyncSchema['sync_type'], + originalSchemaIncrementalField: string | null +): boolean => { + if (originalSchemaSyncType !== newSchemaSyncType) { + return true + } + + if (newSchemaSyncType === 'incremental' && newSchemaIncrementalField !== originalSchemaIncrementalField) { + return true + } + + return false +} + +const getSaveDisabledReason = ( + syncType: 'full_refresh' | 'incremental' | undefined, + incrementalField: string | null +): string | undefined => { + if (!syncType) { + return 'You must select a sync method before saving' + } + + if (syncType === 'incremental' && !incrementalField) { + return 'You must select an incremental field' + } +} + +export const SyncMethodForm = ({ + schema, + onClose, + onSave, + saveButtonIsLoading, + showRefreshMessageOnChange, +}: SyncMethodFormProps): JSX.Element => { + const [originalSchemaSyncType] = useState(schema.sync_type ?? null) + const [originalSchemaIncrementalField] = useState(schema.incremental_field ?? null) + + const [radioValue, setRadioValue] = useState(schema.sync_type ?? undefined) + const [incrementalFieldValue, setIncrementalFieldValue] = useState(schema.incremental_field ?? null) + + useEffect(() => { + setRadioValue(schema.sync_type ?? undefined) + setIncrementalFieldValue(schema.incremental_field ?? null) + }, [schema.table]) + + const incrementalSyncSupported = getIncrementalSyncSupported(schema) + + const inputChanged = hasInputChanged( + radioValue ?? null, + incrementalFieldValue, + originalSchemaSyncType, + originalSchemaIncrementalField + ) + const showRefreshMessage = inputChanged && showRefreshMessageOnChange + + return ( + <> + +
+

Incremental replication

+ {!incrementalSyncSupported.disabled && ( + Recommended + )} +
+

+ When using incremental replication, we'll store the max value of the below field on + each sync and only sync rows with greater or equal value on the next run. +

+

+ You should pick a field that increments or updates each time the row is updated, + such as a updated_at timestamp. +

+ setIncrementalFieldValue(newValue)} + options={ + schema.incremental_fields.map((n) => ({ + value: n.field, + label: ( + <> + {n.label} + + {n.type} + + + ), + })) ?? [] + } + disabledReason={incrementalSyncSupported.disabled ? '' : undefined} + /> +
+ ), + }, + { + value: 'full_refresh', + label: ( +
+
+

Full table replication

+
+

+ We'll replicate the whole table on every sync. This can take longer to sync and + increase your monthly billing. +

+
+ ), + }, + ]} + onChange={(newValue) => setRadioValue(newValue)} + /> + {showRefreshMessage && ( +

+ Note: Changing the sync type or incremental replication field will trigger a full table refresh +

+ )} +
+ + Close + + { + if (radioValue === 'incremental') { + const fieldSelected = schema.incremental_fields.find( + (n) => n.field === incrementalFieldValue + ) + if (!fieldSelected) { + lemonToast.error('Selected field for incremental replication not found') + return + } + + onSave('incremental', incrementalFieldValue, fieldSelected.field_type) + } else { + onSave('full_refresh', null, null) + } + }} + > + Save + +
+ + ) +} diff --git a/frontend/src/scenes/data-warehouse/new/sourceWizardLogic.tsx b/frontend/src/scenes/data-warehouse/new/sourceWizardLogic.tsx index e1409477f62ac..bbbed3d43a777 100644 --- a/frontend/src/scenes/data-warehouse/new/sourceWizardLogic.tsx +++ b/frontend/src/scenes/data-warehouse/new/sourceWizardLogic.tsx @@ -351,10 +351,14 @@ export const sourceWizardLogic = kea([ toggleSchemaShouldSync: (schema: ExternalDataSourceSyncSchema, shouldSync: boolean) => ({ schema, shouldSync }), updateSchemaSyncType: ( schema: ExternalDataSourceSyncSchema, - sync_type: ExternalDataSourceSyncSchema['sync_type'] + syncType: ExternalDataSourceSyncSchema['sync_type'], + incrementalField: string | null, + incrementalFieldType: string | null ) => ({ schema, - sync_type, + syncType, + incrementalField, + incrementalFieldType, }), clearSource: true, updateSource: (source: Partial) => ({ source }), @@ -366,6 +370,8 @@ export const sourceWizardLogic = kea([ setStep: (step: number) => ({ step }), getDatabaseSchemas: true, setManualLinkingProvider: (provider: ManualLinkSourceType) => ({ provider }), + openSyncMethodModal: (schema: ExternalDataSourceSyncSchema) => ({ schema }), + cancelSyncMethodModal: true, }), connect({ values: [ @@ -422,10 +428,13 @@ export const sourceWizardLogic = kea([ })) return newSchema }, - updateSchemaSyncType: (state, { schema, sync_type }) => { + updateSchemaSyncType: (state, { schema, syncType, incrementalField, incrementalFieldType }) => { const newSchema = state.map((s) => ({ ...s, - sync_type: s.table === schema.table ? sync_type : s.sync_type, + sync_type: s.table === schema.table ? syncType : s.sync_type, + incremental_field: s.table === schema.table ? incrementalField : s.incremental_field, + incremental_field_type: + s.table === schema.table ? incrementalFieldType : s.incremental_field_type, })) return newSchema }, @@ -462,6 +471,26 @@ export const sourceWizardLogic = kea([ setSourceId: (_, { sourceId }) => sourceId, }, ], + syncMethodModalOpen: [ + false as boolean, + { + openSyncMethodModal: () => true, + cancelSyncMethodModal: () => false, + }, + ], + currentSyncMethodModalSchema: [ + null as ExternalDataSourceSyncSchema | null, + { + openSyncMethodModal: (_, { schema }) => schema, + cancelSyncMethodModal: () => null, + updateSchemaSyncType: (_, { schema, syncType, incrementalField, incrementalFieldType }) => ({ + ...schema, + sync_type: syncType, + incremental_field: incrementalField, + incremental_field_type: incrementalFieldType, + }), + }, + ], }), selectors({ isManualLinkingSelected: [(s) => [s.selectedConnector], (selectedConnector): boolean => !selectedConnector], @@ -472,12 +501,20 @@ export const sourceWizardLogic = kea([ }, ], canGoNext: [ - (s) => [s.currentStep, s.isManualLinkingSelected], - (currentStep, isManualLinkingSelected): boolean => { - if (isManualLinkingSelected && currentStep == 1) { + (s) => [s.currentStep, s.isManualLinkingSelected, s.databaseSchema], + (currentStep, isManualLinkingSelected, databaseSchema): boolean => { + if (isManualLinkingSelected && currentStep === 1) { return false } + if (!isManualLinkingSelected && currentStep === 3) { + if (databaseSchema.filter((n) => n.should_sync).length === 0) { + return false + } + + return databaseSchema.filter((n) => n.should_sync && !n.sync_type).length === 0 + } + return true }, ], @@ -638,6 +675,8 @@ export const sourceWizardLogic = kea([ name: schema.table, should_sync: schema.should_sync, sync_type: schema.sync_type, + incremental_field: schema.incremental_field, + incremental_field_type: schema.incremental_field_type, })), }, }) diff --git a/frontend/src/scenes/data-warehouse/settings/DataWarehouseManagedSourcesTable.tsx b/frontend/src/scenes/data-warehouse/settings/DataWarehouseManagedSourcesTable.tsx index c4b797426c6dc..f0e8b4f1943f6 100644 --- a/frontend/src/scenes/data-warehouse/settings/DataWarehouseManagedSourcesTable.tsx +++ b/frontend/src/scenes/data-warehouse/settings/DataWarehouseManagedSourcesTable.tsx @@ -2,7 +2,9 @@ import { TZLabel } from '@posthog/apps-common' import { LemonButton, LemonDialog, + LemonModal, LemonSelect, + LemonSkeleton, LemonSwitch, LemonTable, LemonTag, @@ -22,6 +24,7 @@ import s3Logo from 'public/s3-logo.png' import snowflakeLogo from 'public/snowflake-logo.svg' import stripeLogo from 'public/stripe-logo.svg' import zendeskLogo from 'public/zendesk-logo.svg' +import { useEffect } from 'react' import { urls } from 'scenes/urls' import { DataTableNode, NodeKind } from '~/queries/schema' @@ -33,7 +36,9 @@ import { ProductKey, } from '~/types' +import { SyncMethodForm } from '../external/forms/SyncMethodForm' import { dataWarehouseSettingsLogic } from './dataWarehouseSettingsLogic' +import { dataWarehouseSourcesTableSyncMethodModalLogic } from './dataWarehouseSourcesTableSyncMethodModalLogic' const StatusTagSetting = { Running: 'primary', @@ -272,154 +277,275 @@ const SchemaTable = ({ schemas }: SchemaTableProps): JSX.Element => { const { schemaReloadingById } = useValues(dataWarehouseSettingsLogic) return ( - {schema.name} - }, - }, - { - title: 'Refresh Type', - key: 'incremental', - render: function RenderIncremental(_, schema) { - return schema.incremental ? ( - - Incremental - - ) : ( - - Full Refresh - - ) - }, - }, - { - title: 'Enabled', - key: 'should_sync', - render: function RenderShouldSync(_, schema) { - return ( - { - updateSchema({ ...schema, should_sync: active }) - }} - /> - ) + <> + {schema.name} + }, }, - }, - { - title: 'Synced Table', - key: 'table', - render: function RenderTable(_, schema) { - if (schema.table) { - const query: DataTableNode = { - kind: NodeKind.DataTableNode, - full: true, - source: { - kind: NodeKind.HogQLQuery, - // TODO: Use `hogql` tag? - query: `SELECT ${schema.table.columns - .filter( - ({ table, fields, chain, schema_valid }) => - !table && !fields && !chain && schema_valid - ) - .map(({ name }) => name)} FROM ${ - schema.table.name === 'numbers' ? 'numbers(0, 10)' : schema.table.name - } LIMIT 100`, - }, + { + title: 'Sync method', + key: 'incremental', + render: function RenderIncremental(_, schema) { + const { openSyncMethodModal } = useActions( + dataWarehouseSourcesTableSyncMethodModalLogic({ schema }) + ) + + if (!schema.sync_type) { + return ( + <> + openSyncMethodModal(schema)} + > + Set up + + + + ) } + return ( - - {schema.table.name} - + <> + openSyncMethodModal(schema)} + > + {schema.sync_type == 'incremental' ? 'Incremental' : 'Full refresh'} + + + ) - } - return
Not yet synced
+ }, }, - }, - { - title: 'Last Synced At', - key: 'last_synced_at', - render: function Render(_, schema) { - return schema.last_synced_at ? ( - <> - - - ) : null + { + title: 'Enabled', + key: 'should_sync', + render: function RenderShouldSync(_, schema) { + return ( + { + updateSchema({ ...schema, should_sync: active }) + }} + /> + ) + }, }, - }, - { - title: 'Rows Synced', - key: 'rows_synced', - render: function Render(_, schema) { - return schema.table?.row_count ?? '' + { + title: 'Synced Table', + key: 'table', + render: function RenderTable(_, schema) { + if (schema.table) { + const query: DataTableNode = { + kind: NodeKind.DataTableNode, + full: true, + source: { + kind: NodeKind.HogQLQuery, + // TODO: Use `hogql` tag? + query: `SELECT ${schema.table.columns + .filter( + ({ table, fields, chain, schema_valid }) => + !table && !fields && !chain && schema_valid + ) + .map(({ name }) => name)} FROM ${ + schema.table.name === 'numbers' ? 'numbers(0, 10)' : schema.table.name + } LIMIT 100`, + }, + } + return ( + + {schema.table.name} + + ) + } + return
Not yet synced
+ }, }, - }, - { - title: 'Status', - key: 'status', - render: function RenderStatus(_, schema) { - if (!schema.status) { - return null - } - - return {schema.status} + { + title: 'Last Synced At', + key: 'last_synced_at', + render: function Render(_, schema) { + return schema.last_synced_at ? ( + <> + + + ) : null + }, }, - }, - { - key: 'actions', - width: 0, - render: function RenderActions(_, schema) { - if (schemaReloadingById[schema.id]) { + { + title: 'Rows Synced', + key: 'rows_synced', + render: function Render(_, schema) { + return schema.table?.row_count ?? '' + }, + }, + { + title: 'Status', + key: 'status', + render: function RenderStatus(_, schema) { + if (!schema.status) { + return null + } + return ( -
- -
+ {schema.status} ) - } + }, + }, + { + key: 'actions', + width: 0, + render: function RenderActions(_, schema) { + if (schemaReloadingById[schema.id]) { + return ( +
+ +
+ ) + } - return ( -
-
- - { - reloadSchema(schema) - }} - > - Reload - - {schema.incremental && ( - - { - resyncSchema(schema) - }} - status="danger" - > - Resync - - - )} - - } - /> + return ( +
+
+ + { + reloadSchema(schema) + }} + > + Reload + + {schema.incremental && ( + + { + resyncSchema(schema) + }} + status="danger" + > + Resync + + + )} + + } + /> +
-
- ) + ) + }, }, - }, - ]} - /> + ]} + /> + + ) +} + +const SyncMethodModal = ({ schema }: { schema: ExternalDataSourceSchema }): JSX.Element => { + const { + syncMethodModalIsOpen, + currentSyncMethodModalSchema, + schemaIncrementalFields, + schemaIncrementalFieldsLoading, + saveButtonIsLoading, + } = useValues(dataWarehouseSourcesTableSyncMethodModalLogic({ schema })) + const { closeSyncMethodModal, loadSchemaIncrementalFields, resetSchemaIncrementalFields, updateSchema } = + useActions(dataWarehouseSourcesTableSyncMethodModalLogic({ schema })) + + useEffect(() => { + if (currentSyncMethodModalSchema?.id) { + resetSchemaIncrementalFields() + loadSchemaIncrementalFields(currentSyncMethodModalSchema.id) + } + }, [currentSyncMethodModalSchema?.id]) + + const schemaLoading = schemaIncrementalFieldsLoading || !schemaIncrementalFields + const showForm = !schemaLoading && schemaIncrementalFields + + if (!currentSyncMethodModalSchema) { + return <> + } + + return ( + + + + + ) + } + > + {schemaLoading && ( +
+ + +
+ )} + {showForm && ( + { + resetSchemaIncrementalFields() + closeSyncMethodModal() + }} + onSave={(syncType, incrementalField, incrementalFieldType) => { + if (syncType === 'full_refresh') { + updateSchema({ + ...currentSyncMethodModalSchema, + should_sync: true, + sync_type: syncType, + incremental_field: null, + incremental_field_type: null, + }) + } else { + updateSchema({ + ...currentSyncMethodModalSchema, + should_sync: true, + sync_type: syncType, + incremental_field: incrementalField, + incremental_field_type: incrementalFieldType, + }) + } + }} + /> + )} +
) } diff --git a/frontend/src/scenes/data-warehouse/settings/dataWarehouseSettingsLogic.ts b/frontend/src/scenes/data-warehouse/settings/dataWarehouseSettingsLogic.ts index 41423920778dc..312c23bb582bc 100644 --- a/frontend/src/scenes/data-warehouse/settings/dataWarehouseSettingsLogic.ts +++ b/frontend/src/scenes/data-warehouse/settings/dataWarehouseSettingsLogic.ts @@ -38,7 +38,6 @@ export const dataWarehouseSettingsLogic = kea([ resyncSchema: (schema: ExternalDataSourceSchema) => ({ schema }), sourceLoadingFinished: (source: ExternalDataStripeSource) => ({ source }), schemaLoadingFinished: (schema: ExternalDataSourceSchema) => ({ schema }), - updateSchema: (schema: ExternalDataSourceSchema) => ({ schema }), abortAnyRunningQuery: true, setCurrentTab: (tab: DataWarehouseSettingsTab = DataWarehouseSettingsTab.Managed) => ({ tab }), deleteSelfManagedTable: (tableId: string) => ({ tableId }), @@ -74,6 +73,30 @@ export const dataWarehouseSettingsLogic = kea([ }, }, ], + schemas: [ + null, + { + updateSchema: async (schema: ExternalDataSourceSchema) => { + // Optimistic UI updates before sending updates to the backend + const clonedSources = JSON.parse( + JSON.stringify(values.dataWarehouseSources?.results ?? []) + ) as ExternalDataStripeSource[] + const sourceIndex = clonedSources.findIndex((n) => n.schemas.find((m) => m.id === schema.id)) + const schemaIndex = clonedSources[sourceIndex].schemas.findIndex((n) => n.id === schema.id) + clonedSources[sourceIndex].schemas[schemaIndex] = schema + + actions.loadSourcesSuccess({ + ...values.dataWarehouseSources, + results: clonedSources, + }) + + await api.externalDataSchemas.update(schema.id, schema) + actions.loadSources(null) + + return null + }, + }, + ], })), reducers(({ cache }) => ({ dataWarehouseSourcesLoading: [ @@ -261,23 +284,6 @@ export const dataWarehouseSettingsLogic = kea([ } } }, - updateSchema: async ({ schema }) => { - // Optimistic UI updates before sending updates to the backend - const clonedSources = JSON.parse( - JSON.stringify(values.dataWarehouseSources?.results ?? []) - ) as ExternalDataStripeSource[] - const sourceIndex = clonedSources.findIndex((n) => n.schemas.find((m) => m.id === schema.id)) - const schemaIndex = clonedSources[sourceIndex].schemas.findIndex((n) => n.id === schema.id) - clonedSources[sourceIndex].schemas[schemaIndex] = schema - - actions.loadSourcesSuccess({ - ...values.dataWarehouseSources, - results: clonedSources, - }) - - await api.externalDataSchemas.update(schema.id, schema) - actions.loadSources(null) - }, abortAnyRunningQuery: () => { if (cache.abortController) { cache.abortController.abort() diff --git a/frontend/src/scenes/data-warehouse/settings/dataWarehouseSourcesTableSyncMethodModalLogic.ts b/frontend/src/scenes/data-warehouse/settings/dataWarehouseSourcesTableSyncMethodModalLogic.ts new file mode 100644 index 0000000000000..d76f22a3583ad --- /dev/null +++ b/frontend/src/scenes/data-warehouse/settings/dataWarehouseSourcesTableSyncMethodModalLogic.ts @@ -0,0 +1,66 @@ +import { actions, connect, kea, key, listeners, path, props, reducers } from 'kea' +import { loaders } from 'kea-loaders' +import api from 'lib/api' + +import { ExternalDataSourceSchema, SchemaIncrementalFieldsResponse } from '~/types' + +import { dataWarehouseSettingsLogic } from './dataWarehouseSettingsLogic' +import type { dataWarehouseSourcesTableSyncMethodModalLogicType } from './dataWarehouseSourcesTableSyncMethodModalLogicType' + +export interface DataWarehouseSourcesTableSyncMethodModalLogicProps { + schema: ExternalDataSourceSchema +} + +export const dataWarehouseSourcesTableSyncMethodModalLogic = kea([ + path(['scenes', 'data-warehouse', 'settings', 'DataWarehouseSourcesTableSyncMethodModalLogic']), + props({ schema: {} } as DataWarehouseSourcesTableSyncMethodModalLogicProps), + key((props) => props.schema.id), + connect(() => ({ + actions: [dataWarehouseSettingsLogic, ['updateSchema', 'updateSchemaSuccess', 'updateSchemaFailure']], + })), + actions({ + openSyncMethodModal: (schema: ExternalDataSourceSchema) => ({ schema }), + closeSyncMethodModal: true, + }), + loaders({ + schemaIncrementalFields: [ + null as SchemaIncrementalFieldsResponse | null, + { + loadSchemaIncrementalFields: async (schemaId: string) => { + return await api.externalDataSchemas.incremental_fields(schemaId) + }, + resetSchemaIncrementalFields: () => null, + }, + ], + }), + reducers({ + syncMethodModalIsOpen: [ + false as boolean, + { + openSyncMethodModal: () => true, + closeSyncMethodModal: () => false, + }, + ], + currentSyncMethodModalSchema: [ + null as ExternalDataSourceSchema | null, + { + openSyncMethodModal: (_, { schema }) => schema, + closeSyncMethodModal: () => null, + }, + ], + saveButtonIsLoading: [ + false as boolean, + { + updateSchema: () => true, + updateSchemaFailure: () => false, + updateSchemaSuccess: () => false, + }, + ], + }), + listeners(({ actions }) => ({ + updateSchemaSuccess: () => { + actions.resetSchemaIncrementalFields() + actions.closeSyncMethodModal() + }, + })), +]) diff --git a/frontend/src/types.ts b/frontend/src/types.ts index 3e5b2d6500099..4ce45fa13fc91 100644 --- a/frontend/src/types.ts +++ b/frontend/src/types.ts @@ -3841,20 +3841,32 @@ export interface SimpleExternalDataSourceSchema { last_synced_at?: Dayjs } +export type SchemaIncrementalFieldsResponse = IncrementalField[] + +export interface IncrementalField { + label: string + type: string + field: string + field_type: string +} + export interface ExternalDataSourceSyncSchema { table: string should_sync: boolean - sync_type: 'full_refresh' | 'incremental' - sync_types: { - full_refresh: boolean - incremental: boolean - } + incremental_field: string | null + incremental_field_type: string | null + sync_type: 'full_refresh' | 'incremental' | null + incremental_fields: IncrementalField[] + incremental_available: boolean } export interface ExternalDataSourceSchema extends SimpleExternalDataSourceSchema { table?: SimpleDataWarehouseTable - incremental?: boolean + incremental: boolean + sync_type: 'incremental' | 'full_refresh' | null status?: string + incremental_field: string | null + incremental_field_type: string | null } export interface SimpleDataWarehouseTable { diff --git a/latest_migrations.manifest b/latest_migrations.manifest index 0e208217e0853..4e4b0e6c63d9d 100644 --- a/latest_migrations.manifest +++ b/latest_migrations.manifest @@ -5,7 +5,7 @@ contenttypes: 0002_remove_content_type_name ee: 0016_rolemembership_organization_member otp_static: 0002_throttling otp_totp: 0002_auto_20190420_0723 -posthog: 0430_batchexport_model +posthog: 0431_externaldataschema_sync_type_payload sessions: 0001_initial social_django: 0010_uid_db_index two_factor: 0007_auto_20201201_1019 diff --git a/mypy-baseline.txt b/mypy-baseline.txt index 8d95d21224471..bf1903dfd0c01 100644 --- a/mypy-baseline.txt +++ b/mypy-baseline.txt @@ -2,10 +2,13 @@ posthog/temporal/common/utils.py:0: error: Argument 1 to "abstractclassmethod" h posthog/temporal/common/utils.py:0: note: This is likely because "from_activity" has named arguments: "cls". Consider marking them positional-only posthog/temporal/common/utils.py:0: error: Argument 2 to "__get__" of "classmethod" has incompatible type "type[HeartbeatType]"; expected "type[Never]" [arg-type] 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: Value of type variable "TDict" of "update_dict_nested" cannot be "Mapping[str, object]" [type-var] +posthog/temporal/data_imports/pipelines/rest_source/config_setup.py:0: note: Error code "type-var" not covered by "type: ignore" comment 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] @@ -546,7 +549,11 @@ posthog/api/test/test_exports.py:0: error: Incompatible types in assignment (exp posthog/api/test/test_exports.py:0: error: Incompatible types in assignment (expression has type "None", variable has type "Insight") [assignment] posthog/api/notebook.py:0: error: Incompatible types in assignment (expression has type "int", variable has type "str | None") [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/api/external_data_source.py:0: error: Incompatible return value type (got "tuple[ExternalDataSource, dict[str, list[tuple[str, str]]]]", expected "tuple[ExternalDataSource, list[Any]]") [return-value] +posthog/warehouse/api/external_data_source.py:0: error: Incompatible return value type (got "tuple[ExternalDataSource, dict[str, list[tuple[str, str]]]]", expected "tuple[ExternalDataSource, list[Any]]") [return-value] posthog/warehouse/api/table.py:0: error: Unsupported target for indexed assignment ("dict[str, str | bool] | str") [index] +posthog/temporal/data_imports/workflow_activities/create_job_model.py:0: error: Incompatible types in assignment (expression has type "list[str]", variable has type "dict[str, list[tuple[str, str]]]") [assignment] +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/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] diff --git a/posthog/migrations/0431_externaldataschema_sync_type_payload.py b/posthog/migrations/0431_externaldataschema_sync_type_payload.py new file mode 100644 index 0000000000000..4ae377a4a5836 --- /dev/null +++ b/posthog/migrations/0431_externaldataschema_sync_type_payload.py @@ -0,0 +1,45 @@ +# Generated by Django 4.2.11 on 2024-06-19 15:24 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("posthog", "0430_batchexport_model"), + ] + + operations = [ + migrations.AddField( + model_name="externaldataschema", + name="sync_type_config", + field=models.JSONField(blank=True, default=dict), + ), + migrations.AlterField( + model_name="externaldataschema", + name="sync_type", + field=models.CharField( + blank=True, + choices=[("full_refresh", "full_refresh"), ("incremental", "incremental")], + max_length=128, + null=True, + ), + ), + migrations.RunSQL( # Update Stripe schemas + sql=""" + UPDATE posthog_externaldataschema AS schema + SET sync_type_config = '{"incremental_field": "created"}' + FROM posthog_externaldatasource AS source + WHERE schema.source_id = source.id AND source.source_type = 'Stripe' AND schema.sync_type = 'incremental' + """, + reverse_sql=migrations.RunSQL.noop, + ), + migrations.RunSQL( # Update Zendesk schemas + sql=""" + UPDATE posthog_externaldataschema AS schema + SET sync_type_config = '{"incremental_field": "generated_timestamp"}' + FROM posthog_externaldatasource AS source + WHERE schema.source_id = source.id AND source.source_type = 'Zendesk' AND schema.sync_type = 'incremental' + """, + reverse_sql=migrations.RunSQL.noop, + ), + ] diff --git a/posthog/temporal/data_imports/pipelines/helpers.py b/posthog/temporal/data_imports/pipelines/helpers.py index 9e38be0fd919e..776b7f8dd0582 100644 --- a/posthog/temporal/data_imports/pipelines/helpers.py +++ b/posthog/temporal/data_imports/pipelines/helpers.py @@ -1,5 +1,7 @@ +import uuid from posthog.warehouse.models import ExternalDataJob from django.db.models import F +from posthog.warehouse.models.external_data_source import ExternalDataSource from posthog.warehouse.util import database_sync_to_async @@ -20,3 +22,10 @@ def aget_external_data_job(team_id, job_id): @database_sync_to_async def aupdate_job_count(job_id: str, team_id: int, count: int): ExternalDataJob.objects.filter(id=job_id, team_id=team_id).update(rows_synced=F("rows_synced") + count) + + +@database_sync_to_async +def aremove_reset_pipeline(source_id: uuid.UUID): + source = ExternalDataSource.objects.get(id=source_id) + source.job_inputs.pop("reset_pipeline", None) + source.save() diff --git a/posthog/temporal/data_imports/pipelines/pipeline.py b/posthog/temporal/data_imports/pipelines/pipeline.py index 18da8f563cd04..29983da8c68ef 100644 --- a/posthog/temporal/data_imports/pipelines/pipeline.py +++ b/posthog/temporal/data_imports/pipelines/pipeline.py @@ -14,6 +14,7 @@ from collections import Counter from posthog.warehouse.data_load.validate_schema import validate_schema_and_update_table +from posthog.warehouse.models.external_data_source import ExternalDataSource @dataclass @@ -22,7 +23,7 @@ class PipelineInputs: run_id: str schema_id: UUID dataset_name: str - job_type: str + job_type: ExternalDataSource.Type team_id: int @@ -30,7 +31,12 @@ class DataImportPipeline: loader_file_format: Literal["parquet"] = "parquet" def __init__( - self, inputs: PipelineInputs, source: DltSource, logger: FilteringBoundLogger, incremental: bool = False + self, + inputs: PipelineInputs, + source: DltSource, + logger: FilteringBoundLogger, + reset_pipeline: bool, + incremental: bool = False, ): self.inputs = inputs self.logger = logger @@ -41,6 +47,12 @@ def __init__( self.source = source self._incremental = incremental + self.refresh_dlt = reset_pipeline + self.should_chunk_pipeline = ( + incremental + and inputs.job_type != ExternalDataSource.Type.POSTGRES + and inputs.job_type != ExternalDataSource.Type.SNOWFLAKE + ) def _get_pipeline_name(self): return f"{self.inputs.job_type}_pipeline_{self.inputs.team_id}_run_{self.inputs.schema_id}" @@ -75,16 +87,27 @@ def _create_pipeline(self): ) def _run(self) -> dict[str, int]: + if self.refresh_dlt: + self.logger.info("Pipeline getting a full refresh due to reset_pipeline being set") + pipeline = self._create_pipeline() total_counts: Counter[str] = Counter({}) - if self._incremental: + # Do chunking for incremental syncing on API based endpoints (e.g. not sql databases) + if self.should_chunk_pipeline: # will get overwritten counts: Counter[str] = Counter({"start": 1}) + pipeline_runs = 0 while counts: - pipeline.run(self.source, loader_file_format=self.loader_file_format) + self.logger.info(f"Running incremental (non-sql) pipeline, run ${pipeline_runs}") + + pipeline.run( + self.source, + loader_file_format=self.loader_file_format, + refresh="drop_sources" if self.refresh_dlt and pipeline_runs == 0 else None, + ) row_counts = pipeline.last_trace.last_normalize_info.row_counts # Remove any DLT tables from the counts @@ -99,8 +122,16 @@ def _run(self) -> dict[str, int]: table_schema=self.source.schema.tables, row_count=total_counts.total(), ) + + pipeline_runs = pipeline_runs + 1 else: - pipeline.run(self.source, loader_file_format=self.loader_file_format) + self.logger.info("Running standard pipeline") + + pipeline.run( + self.source, + loader_file_format=self.loader_file_format, + refresh="drop_sources" if self.refresh_dlt else None, + ) row_counts = pipeline.last_trace.last_normalize_info.row_counts filtered_rows = dict(filter(lambda pair: not pair[0].startswith("_dlt"), row_counts.items())) counts = Counter(filtered_rows) diff --git a/posthog/temporal/data_imports/pipelines/schemas.py b/posthog/temporal/data_imports/pipelines/schemas.py index 8089d1204e8b1..7dccb65eca59b 100644 --- a/posthog/temporal/data_imports/pipelines/schemas.py +++ b/posthog/temporal/data_imports/pipelines/schemas.py @@ -1,12 +1,15 @@ +from posthog.warehouse.types import IncrementalField from posthog.temporal.data_imports.pipelines.zendesk.settings import ( BASE_ENDPOINTS, SUPPORT_ENDPOINTS, INCREMENTAL_ENDPOINTS as ZENDESK_INCREMENTAL_ENDPOINTS, + INCREMENTAL_FIELDS as ZENDESK_INCREMENTAL_FIELDS, ) from posthog.warehouse.models import ExternalDataSource from posthog.temporal.data_imports.pipelines.stripe.settings import ( ENDPOINTS as STRIPE_ENDPOINTS, INCREMENTAL_ENDPOINTS as STRIPE_INCREMENTAL_ENDPOINTS, + INCREMENTAL_FIELDS as STRIPE_INCREMENTAL_FIELDS, ) from posthog.temporal.data_imports.pipelines.hubspot.settings import ENDPOINTS as HUBSPOT_ENDPOINTS @@ -27,3 +30,11 @@ ExternalDataSource.Type.POSTGRES: (), ExternalDataSource.Type.SNOWFLAKE: (), } + +PIPELINE_TYPE_INCREMENTAL_FIELDS_MAPPING: dict[ExternalDataSource.Type, dict[str, list[IncrementalField]]] = { + ExternalDataSource.Type.STRIPE: STRIPE_INCREMENTAL_FIELDS, + ExternalDataSource.Type.HUBSPOT: {}, + ExternalDataSource.Type.ZENDESK: ZENDESK_INCREMENTAL_FIELDS, + ExternalDataSource.Type.POSTGRES: {}, + ExternalDataSource.Type.SNOWFLAKE: {}, +} diff --git a/posthog/temporal/data_imports/pipelines/sql_database/__init__.py b/posthog/temporal/data_imports/pipelines/sql_database/__init__.py index b376d4d2da8db..023c4203a62fc 100644 --- a/posthog/temporal/data_imports/pipelines/sql_database/__init__.py +++ b/posthog/temporal/data_imports/pipelines/sql_database/__init__.py @@ -1,7 +1,9 @@ """Source that loads tables form any SQLAlchemy supported database, supports batching requests and incremental loads.""" -from typing import Optional, Union, List # noqa: UP035 +from datetime import datetime, date +from typing import Any, Optional, Union, List # noqa: UP035 from collections.abc import Iterable +from zoneinfo import ZoneInfo from sqlalchemy import MetaData, Table from sqlalchemy.engine import Engine @@ -12,6 +14,8 @@ from dlt.sources.credentials import ConnectionStringCredentials from urllib.parse import quote +from posthog.warehouse.types import IncrementalFieldType + from .helpers import ( table_rows, engine_from_credentials, @@ -20,8 +24,26 @@ ) +def incremental_type_to_initial_value(field_type: IncrementalFieldType) -> Any: + if field_type == IncrementalFieldType.Integer or field_type == IncrementalFieldType.Numeric: + return 0 + if field_type == IncrementalFieldType.DateTime or field_type == IncrementalFieldType.Timestamp: + return datetime(1970, 1, 1, 0, 0, 0, 0, tzinfo=ZoneInfo("UTC")) + if field_type == IncrementalFieldType.Date: + return date(1970, 1, 1) + + def postgres_source( - host: str, port: int, user: str, password: str, database: str, sslmode: str, schema: str, table_names: list[str] + host: str, + port: int, + user: str, + password: str, + database: str, + sslmode: str, + schema: str, + table_names: list[str], + incremental_field: Optional[str] = None, + incremental_field_type: Optional[IncrementalFieldType] = None, ) -> DltSource: host = quote(host) user = quote(user) @@ -32,7 +54,15 @@ def postgres_source( credentials = ConnectionStringCredentials( f"postgresql://{user}:{password}@{host}:{port}/{database}?sslmode={sslmode}" ) - db_source = sql_database(credentials, schema=schema, table_names=table_names) + + if incremental_field is not None and incremental_field_type is not None: + incremental: dlt.sources.incremental | None = dlt.sources.incremental( + cursor_path=incremental_field, initial_value=incremental_type_to_initial_value(incremental_field_type) + ) + else: + incremental = None + + db_source = sql_database(credentials, schema=schema, table_names=table_names, incremental=incremental) return db_source @@ -46,6 +76,8 @@ def snowflake_source( schema: str, table_names: list[str], role: Optional[str] = None, + incremental_field: Optional[str] = None, + incremental_field_type: Optional[str] = None, ) -> DltSource: account_id = quote(account_id) user = quote(user) @@ -68,6 +100,7 @@ def sql_database( schema: Optional[str] = dlt.config.value, metadata: Optional[MetaData] = None, table_names: Optional[List[str]] = dlt.config.value, # noqa: UP006 + incremental: Optional[dlt.sources.incremental] = None, ) -> Iterable[DltResource]: """ A DLT source which loads data from an SQL database using SQLAlchemy. @@ -96,9 +129,17 @@ def sql_database( tables = list(metadata.tables.values()) for table in tables: + # TODO(@Gilbert09): Read column types, convert them to DLT types + # and pass them in here to get empty table materialization yield dlt.resource( table_rows, name=table.name, primary_key=get_primary_key(table), + merge_key=get_primary_key(table), + write_disposition="merge" if incremental else "replace", spec=SqlDatabaseTableConfiguration, - )(engine, table) + )( + engine=engine, + table=table, + incremental=incremental, + ) diff --git a/posthog/temporal/data_imports/pipelines/sql_database/helpers.py b/posthog/temporal/data_imports/pipelines/sql_database/helpers.py index ba93b4246abad..653f93392466c 100644 --- a/posthog/temporal/data_imports/pipelines/sql_database/helpers.py +++ b/posthog/temporal/data_imports/pipelines/sql_database/helpers.py @@ -51,10 +51,10 @@ def make_query(self) -> Select[Any]: last_value_func = self.incremental.last_value_func if last_value_func is max: # Query ordered and filtered according to last_value function order_by = self.cursor_column.asc() # type: ignore - filter_op = operator.ge + filter_op = operator.gt elif last_value_func is min: order_by = self.cursor_column.desc() # type: ignore - filter_op = operator.le + filter_op = operator.lt else: # Custom last_value, load everything and let incremental handle filtering return query query = query.order_by(order_by) @@ -89,6 +89,8 @@ def table_rows( Returns: Iterable[DltResource]: A list of DLT resources for each table to be loaded. """ + yield dlt.mark.materialize_table_schema() # type: ignore + loader = TableLoader(engine, table, incremental=incremental, chunk_size=chunk_size) yield from loader.load_rows() @@ -104,7 +106,15 @@ def engine_from_credentials(credentials: Union[ConnectionStringCredentials, Engi def get_primary_key(table: Table) -> list[str]: - return [c.name for c in table.primary_key] + primary_keys = [c.name for c in table.primary_key] + if len(primary_keys) > 0: + return primary_keys + + column_names = [c.name for c in table.columns] + if "id" in column_names: + return ["id"] + + return [] @configspec diff --git a/posthog/temporal/data_imports/pipelines/stripe/settings.py b/posthog/temporal/data_imports/pipelines/stripe/settings.py index c280391c24c96..3eefb464967f0 100644 --- a/posthog/temporal/data_imports/pipelines/stripe/settings.py +++ b/posthog/temporal/data_imports/pipelines/stripe/settings.py @@ -3,6 +3,69 @@ # the most popular endpoints # Full list of the Stripe API endpoints you can find here: https://stripe.com/docs/api. # These endpoints are converted into ExternalDataSchema objects when a source is linked. + +from posthog.warehouse.types import IncrementalField, IncrementalFieldType + + ENDPOINTS = ("BalanceTransaction", "Subscription", "Customer", "Product", "Price", "Invoice", "Charge") INCREMENTAL_ENDPOINTS = ("BalanceTransaction", "Subscription", "Customer", "Product", "Price", "Invoice", "Charge") + +INCREMENTAL_FIELDS: dict[str, list[IncrementalField]] = { + "BalanceTransaction": [ + { + "label": "created_at", + "type": IncrementalFieldType.DateTime, + "field": "created", + "field_type": IncrementalFieldType.Integer, + } + ], + "Subscription": [ + { + "label": "created_at", + "type": IncrementalFieldType.DateTime, + "field": "created", + "field_type": IncrementalFieldType.Integer, + } + ], + "Customer": [ + { + "label": "created_at", + "type": IncrementalFieldType.DateTime, + "field": "created", + "field_type": IncrementalFieldType.Integer, + } + ], + "Product": [ + { + "label": "created_at", + "type": IncrementalFieldType.DateTime, + "field": "created", + "field_type": IncrementalFieldType.Integer, + } + ], + "Price": [ + { + "label": "created_at", + "type": IncrementalFieldType.DateTime, + "field": "created", + "field_type": IncrementalFieldType.Integer, + } + ], + "Invoice": [ + { + "label": "created_at", + "type": IncrementalFieldType.DateTime, + "field": "created", + "field_type": IncrementalFieldType.Integer, + } + ], + "Charge": [ + { + "label": "created_at", + "type": IncrementalFieldType.DateTime, + "field": "created", + "field_type": IncrementalFieldType.Integer, + } + ], +} diff --git a/posthog/temporal/data_imports/pipelines/test/test_pipeline.py b/posthog/temporal/data_imports/pipelines/test/test_pipeline.py index 435bcda33a9c5..de4f2df7e8694 100644 --- a/posthog/temporal/data_imports/pipelines/test/test_pipeline.py +++ b/posthog/temporal/data_imports/pipelines/test/test_pipeline.py @@ -45,8 +45,8 @@ async def _create_pipeline(self, schema_name: str, incremental: bool): source_id=source.pk, run_id=str(job.pk), schema_id=schema.pk, - dataset_name=job.folder_path, - job_type="Stripe", + dataset_name=job.folder_path(), + job_type=ExternalDataSource.Type.STRIPE, team_id=self.team.pk, ), source=stripe_source( @@ -59,6 +59,7 @@ async def _create_pipeline(self, schema_name: str, incremental: bool): ), logger=structlog.get_logger(), incremental=incremental, + reset_pipeline=False, ) return pipeline diff --git a/posthog/temporal/data_imports/pipelines/zendesk/settings.py b/posthog/temporal/data_imports/pipelines/zendesk/settings.py index ddd75aaafaf41..935bc714ac7cd 100644 --- a/posthog/temporal/data_imports/pipelines/zendesk/settings.py +++ b/posthog/temporal/data_imports/pipelines/zendesk/settings.py @@ -1,6 +1,7 @@ """Zendesk source settings and constants""" from dlt.common import pendulum +from posthog.warehouse.types import IncrementalField, IncrementalFieldType DEFAULT_START_DATE = pendulum.datetime(year=2000, month=1, day=1) PAGE_SIZE = 100 @@ -12,6 +13,16 @@ # Resources that will always get pulled BASE_ENDPOINTS = ["ticket_fields", "ticket_events", "tickets", "ticket_metric_events"] INCREMENTAL_ENDPOINTS = ["tickets"] +INCREMENTAL_FIELDS: dict[str, list[IncrementalField]] = { + "tickets": [ + { + "label": "generated_timestamp", + "type": IncrementalFieldType.Integer, + "field": "generated_timestamp", + "field_type": IncrementalFieldType.Integer, + } + ], +} # Tuples of (Resource name, endpoint URL, data_key, supports pagination) # data_key is the key which data list is nested under in responses diff --git a/posthog/temporal/data_imports/workflow_activities/import_data.py b/posthog/temporal/data_imports/workflow_activities/import_data.py index dcd1840622589..f293a329d68c1 100644 --- a/posthog/temporal/data_imports/workflow_activities/import_data.py +++ b/posthog/temporal/data_imports/workflow_activities/import_data.py @@ -5,8 +5,7 @@ from dlt.common.schema.typing import TSchemaTables from temporalio import activity -# TODO: remove dependency -from posthog.temporal.data_imports.pipelines.helpers import aupdate_job_count +from posthog.temporal.data_imports.pipelines.helpers import aremove_reset_pipeline, aupdate_job_count from posthog.temporal.data_imports.pipelines.pipeline import DataImportPipeline, PipelineInputs from posthog.warehouse.models import ( @@ -43,9 +42,11 @@ async def import_data_activity(inputs: ImportDataActivityInputs) -> tuple[TSchem run_id=inputs.run_id, team_id=inputs.team_id, job_type=model.pipeline.source_type, - dataset_name=model.folder_path, + dataset_name=model.folder_path(), ) + reset_pipeline = model.pipeline.job_inputs.get("reset_pipeline", "False") == "True" + schema: ExternalDataSchema = await aget_schema_by_id(inputs.schema_id, inputs.team_id) endpoints = [schema.name] @@ -70,7 +71,14 @@ async def import_data_activity(inputs: ImportDataActivityInputs) -> tuple[TSchem is_incremental=schema.is_incremental, ) - return await _run(job_inputs=job_inputs, source=source, logger=logger, inputs=inputs, schema=schema) + return await _run( + job_inputs=job_inputs, + source=source, + logger=logger, + inputs=inputs, + schema=schema, + reset_pipeline=reset_pipeline, + ) elif model.pipeline.source_type == ExternalDataSource.Type.HUBSPOT: from posthog.temporal.data_imports.pipelines.hubspot.auth import refresh_access_token from posthog.temporal.data_imports.pipelines.hubspot import hubspot @@ -89,7 +97,14 @@ async def import_data_activity(inputs: ImportDataActivityInputs) -> tuple[TSchem endpoints=tuple(endpoints), ) - return await _run(job_inputs=job_inputs, source=source, logger=logger, inputs=inputs, schema=schema) + return await _run( + job_inputs=job_inputs, + source=source, + logger=logger, + inputs=inputs, + schema=schema, + reset_pipeline=reset_pipeline, + ) elif model.pipeline.source_type == ExternalDataSource.Type.POSTGRES: from posthog.temporal.data_imports.pipelines.sql_database import postgres_source @@ -134,9 +149,22 @@ async def import_data_activity(inputs: ImportDataActivityInputs) -> tuple[TSchem sslmode="prefer", schema=pg_schema, table_names=endpoints, + incremental_field=schema.sync_type_config.get("incremental_field") + if schema.is_incremental + else None, + incremental_field_type=schema.sync_type_config.get("incremental_field_type") + if schema.is_incremental + else None, ) - return await _run(job_inputs=job_inputs, source=source, logger=logger, inputs=inputs, schema=schema) + return await _run( + job_inputs=job_inputs, + source=source, + logger=logger, + inputs=inputs, + schema=schema, + reset_pipeline=reset_pipeline, + ) source = postgres_source( host=host, @@ -147,9 +175,20 @@ async def import_data_activity(inputs: ImportDataActivityInputs) -> tuple[TSchem sslmode="prefer", schema=pg_schema, table_names=endpoints, + incremental_field=schema.sync_type_config.get("incremental_field") if schema.is_incremental else None, + incremental_field_type=schema.sync_type_config.get("incremental_field_type") + if schema.is_incremental + else None, ) - return await _run(job_inputs=job_inputs, source=source, logger=logger, inputs=inputs, schema=schema) + return await _run( + job_inputs=job_inputs, + source=source, + logger=logger, + inputs=inputs, + schema=schema, + reset_pipeline=reset_pipeline, + ) elif model.pipeline.source_type == ExternalDataSource.Type.SNOWFLAKE: from posthog.temporal.data_imports.pipelines.sql_database import snowflake_source @@ -172,7 +211,14 @@ async def import_data_activity(inputs: ImportDataActivityInputs) -> tuple[TSchem table_names=endpoints, ) - return await _run(job_inputs=job_inputs, source=source, logger=logger, inputs=inputs, schema=schema) + return await _run( + job_inputs=job_inputs, + source=source, + logger=logger, + inputs=inputs, + schema=schema, + reset_pipeline=reset_pipeline, + ) elif model.pipeline.source_type == ExternalDataSource.Type.ZENDESK: from posthog.temporal.data_imports.pipelines.zendesk import zendesk_source @@ -187,7 +233,14 @@ async def import_data_activity(inputs: ImportDataActivityInputs) -> tuple[TSchem is_incremental=schema.is_incremental, ) - return await _run(job_inputs=job_inputs, source=source, logger=logger, inputs=inputs, schema=schema) + return await _run( + job_inputs=job_inputs, + source=source, + logger=logger, + inputs=inputs, + schema=schema, + reset_pipeline=reset_pipeline, + ) else: raise ValueError(f"Source type {model.pipeline.source_type} not supported") @@ -198,6 +251,7 @@ async def _run( logger: FilteringBoundLogger, inputs: ImportDataActivityInputs, schema: ExternalDataSchema, + reset_pipeline: bool, ) -> tuple[TSchemaTables, dict[str, int]]: # Temp background heartbeat for now async def heartbeat() -> None: @@ -208,10 +262,13 @@ async def heartbeat() -> None: heartbeat_task = asyncio.create_task(heartbeat()) try: - table_row_counts = await DataImportPipeline(job_inputs, source, logger, schema.is_incremental).run() + table_row_counts = await DataImportPipeline( + job_inputs, source, logger, reset_pipeline, schema.is_incremental + ).run() total_rows_synced = sum(table_row_counts.values()) await aupdate_job_count(inputs.run_id, inputs.team_id, total_rows_synced) + await aremove_reset_pipeline(inputs.source_id) finally: heartbeat_task.cancel() await asyncio.wait([heartbeat_task]) diff --git a/posthog/temporal/tests/batch_exports/test_import_data.py b/posthog/temporal/tests/batch_exports/test_import_data.py index 39dba5199190b..2b743102056d0 100644 --- a/posthog/temporal/tests/batch_exports/test_import_data.py +++ b/posthog/temporal/tests/batch_exports/test_import_data.py @@ -84,6 +84,8 @@ async def test_postgres_source_without_ssh_tunnel(activity_environment, team, ** sslmode="prefer", schema="schema", table_names=["table_1"], + incremental_field=None, + incremental_field_type=None, ) @@ -119,6 +121,8 @@ async def test_postgres_source_with_ssh_tunnel_disabled(activity_environment, te sslmode="prefer", schema="schema", table_names=["table_1"], + incremental_field=None, + incremental_field_type=None, ) @@ -171,4 +175,6 @@ def __exit__(self, exc_type, exc_value, exc_traceback): sslmode="prefer", schema="schema", table_names=["table_1"], + incremental_field=None, + incremental_field_type=None, ) diff --git a/posthog/temporal/tests/data_imports/test_end_to_end.py b/posthog/temporal/tests/data_imports/test_end_to_end.py index c0fce812b2196..b02ef3997be3c 100644 --- a/posthog/temporal/tests/data_imports/test_end_to_end.py +++ b/posthog/temporal/tests/data_imports/test_end_to_end.py @@ -104,6 +104,9 @@ def mock_paginate( continue assert name in (res.columns or []) + await sync_to_async(source.refresh_from_db)() + assert source.job_inputs.get("reset_pipeline", None) is None + @pytest.mark.django_db(transaction=True) @pytest.mark.asyncio @@ -347,3 +350,16 @@ async def test_zendesk_ticket_metric_events(team, zendesk_ticket_metric_events): }, mock_data_response=zendesk_ticket_metric_events["ticket_metric_events"], ) + + +@pytest.mark.django_db(transaction=True) +@pytest.mark.asyncio +async def test_reset_pipeline(team, stripe_balance_transaction): + await _run( + team=team, + schema_name="BalanceTransaction", + table_name="stripe_balancetransaction", + source_type="Stripe", + job_inputs={"stripe_secret_key": "test-key", "stripe_account_id": "acct_id", "reset_pipeline": "True"}, + mock_data_response=stripe_balance_transaction["data"], + ) diff --git a/posthog/temporal/tests/external_data/test_external_data_job.py b/posthog/temporal/tests/external_data/test_external_data_job.py index bbaccf7308f9b..469ca2fac1845 100644 --- a/posthog/temporal/tests/external_data/test_external_data_job.py +++ b/posthog/temporal/tests/external_data/test_external_data_job.py @@ -386,8 +386,9 @@ def mock_charges_paginate( activity_environment.run(import_data_activity, job_1_inputs), ) + folder_path = await sync_to_async(job_1.folder_path)() job_1_customer_objects = await minio_client.list_objects_v2( - Bucket=BUCKET_NAME, Prefix=f"{job_1.folder_path}/customer/" + Bucket=BUCKET_NAME, Prefix=f"{folder_path}/customer/" ) assert len(job_1_customer_objects["Contents"]) == 1 @@ -409,7 +410,7 @@ def mock_charges_paginate( ) job_2_charge_objects = await minio_client.list_objects_v2( - Bucket=BUCKET_NAME, Prefix=f"{job_2.folder_path}/charge/" + Bucket=BUCKET_NAME, Prefix=f"{job_2.folder_path()}/charge/" ) assert len(job_2_charge_objects["Contents"]) == 1 @@ -491,8 +492,9 @@ def mock_customers_paginate( activity_environment.run(import_data_activity, job_1_inputs), ) + folder_path = await sync_to_async(job_1.folder_path)() job_1_customer_objects = await minio_client.list_objects_v2( - Bucket=BUCKET_NAME, Prefix=f"{job_1.folder_path}/customer/" + Bucket=BUCKET_NAME, Prefix=f"{folder_path}/customer/" ) # if job was not canceled, this job would run indefinitely @@ -577,8 +579,9 @@ def mock_customers_paginate( activity_environment.run(import_data_activity, job_1_inputs), ) + folder_path = await sync_to_async(job_1.folder_path)() job_1_customer_objects = await minio_client.list_objects_v2( - Bucket=BUCKET_NAME, Prefix=f"{job_1.folder_path}/customer/" + Bucket=BUCKET_NAME, Prefix=f"{folder_path}/customer/" ) assert len(job_1_customer_objects["Contents"]) == 1 @@ -716,8 +719,9 @@ async def setup_job_1(): activity_environment.run(import_data_activity, job_1_inputs), ) + folder_path = await sync_to_async(job_1.folder_path)() job_1_team_objects = await minio_client.list_objects_v2( - Bucket=BUCKET_NAME, Prefix=f"{job_1.folder_path}/posthog_test/" + Bucket=BUCKET_NAME, Prefix=f"{folder_path}/posthog_test/" ) assert len(job_1_team_objects["Contents"]) == 1 diff --git a/posthog/warehouse/api/external_data_schema.py b/posthog/warehouse/api/external_data_schema.py index 2375182aa8b18..35669885f6683 100644 --- a/posthog/warehouse/api/external_data_schema.py +++ b/posthog/warehouse/api/external_data_schema.py @@ -1,11 +1,13 @@ from rest_framework import serializers import structlog import temporalio +from posthog.temporal.data_imports.pipelines.schemas import PIPELINE_TYPE_INCREMENTAL_FIELDS_MAPPING from posthog.warehouse.models import ExternalDataSchema, ExternalDataJob from typing import Optional, Any from posthog.api.routing import TeamAndOrgViewSetMixin from rest_framework import viewsets, filters, status from rest_framework.decorators import action +from rest_framework.exceptions import ValidationError from rest_framework.request import Request from rest_framework.response import Response from posthog.hogql.database.database import create_hogql_database @@ -20,6 +22,15 @@ cancel_external_data_workflow, delete_data_import_folder, ) +from posthog.warehouse.models.external_data_schema import ( + filter_postgres_incremental_fields, + filter_snowflake_incremental_fields, + get_postgres_schemas, + get_snowflake_schemas, +) +from posthog.warehouse.models.external_data_source import ExternalDataSource +from posthog.warehouse.models.ssh_tunnel import SSHTunnel +from posthog.warehouse.types import IncrementalField logger = structlog.get_logger(__name__) @@ -28,6 +39,8 @@ class ExternalDataSchemaSerializer(serializers.ModelSerializer): table = serializers.SerializerMethodField(read_only=True) incremental = serializers.SerializerMethodField(read_only=True) sync_type = serializers.SerializerMethodField(read_only=True) + incremental_field = serializers.SerializerMethodField(read_only=True) + incremental_field_type = serializers.SerializerMethodField(read_only=True) class Meta: model = ExternalDataSchema @@ -42,13 +55,30 @@ class Meta: "incremental", "status", "sync_type", + "incremental_field", + "incremental_field_type", + ] + + read_only_fields = [ + "id", + "name", + "table", + "last_synced_at", + "latest_error", + "status", ] def get_incremental(self, schema: ExternalDataSchema) -> bool: return schema.is_incremental - def get_sync_type(self, schema: ExternalDataSchema) -> ExternalDataSchema.SyncType: - return schema.sync_type or ExternalDataSchema.SyncType.FULL_REFRESH + def get_incremental_field(self, schema: ExternalDataSchema) -> str | None: + return schema.sync_type_config.get("incremental_field") + + def get_incremental_field_type(self, schema: ExternalDataSchema) -> str | None: + return schema.sync_type_config.get("incremental_field_type") + + def get_sync_type(self, schema: ExternalDataSchema) -> ExternalDataSchema.SyncType | None: + return schema.sync_type def get_table(self, schema: ExternalDataSchema) -> Optional[dict]: from posthog.warehouse.api.table import SimpleTableSerializer @@ -60,7 +90,51 @@ def get_table(self, schema: ExternalDataSchema) -> Optional[dict]: return SimpleTableSerializer(schema.table, context={"database": hogql_context}).data or None def update(self, instance: ExternalDataSchema, validated_data: dict[str, Any]) -> ExternalDataSchema: + data = self.context["request"].data + + sync_type = data.get("sync_type") + + if ( + sync_type is not None + and sync_type != ExternalDataSchema.SyncType.FULL_REFRESH + and sync_type != ExternalDataSchema.SyncType.INCREMENTAL + ): + raise ValidationError("Invalid sync type") + + validated_data["sync_type"] = sync_type + + # Check whether we need a full table refresh + trigger_refresh = False + if instance.sync_type is not None and sync_type is not None: + # If sync type changes + if instance.sync_type != sync_type: + trigger_refresh = True + + # If sync type is incremental and the incremental field changes + if sync_type == ExternalDataSchema.SyncType.INCREMENTAL and instance.sync_type_config.get( + "incremental_field" + ) != data.get("incremental_field"): + trigger_refresh = True + + # Update the validated_data with incremental fields + if sync_type == "incremental": + payload = instance.sync_type_config + payload["incremental_field"] = data.get("incremental_field") + payload["incremental_field_type"] = data.get("incremental_field_type") + + validated_data["sync_type_config"] = payload + else: + payload = instance.sync_type_config + payload.pop("incremental_field", None) + payload.pop("incremental_field_type", None) + + validated_data["sync_type_config"] = payload + should_sync = validated_data.get("should_sync", None) + + if should_sync is True and sync_type is None and instance.sync_type is None: + raise ValidationError("Sync type must be set up first before enabling schema") + schedule_exists = external_data_workflow_exists(str(instance.id)) if schedule_exists: @@ -72,6 +146,12 @@ def update(self, instance: ExternalDataSchema, validated_data: dict[str, Any]) - if should_sync is True: sync_external_data_job_workflow(instance, create=True) + if trigger_refresh: + source: ExternalDataSource = instance.source + source.job_inputs.update({"reset_pipeline": True}) + source.save() + trigger_external_data_workflow(instance) + return super().update(instance, validated_data) @@ -146,9 +226,9 @@ def resync(self, request: Request, *args: Any, **kwargs: Any): # Unnecessary to iterate for incremental jobs since they'll all by identified by the schema_id. Be over eager just to clear remnants for job in all_jobs: try: - delete_data_import_folder(job.folder_path) + delete_data_import_folder(job.folder_path()) except Exception as e: - logger.exception(f"Could not clean up data import folder: {job.folder_path}", exc_info=e) + logger.exception(f"Could not clean up data import folder: {job.folder_path()}", exc_info=e) pass try: @@ -159,3 +239,96 @@ def resync(self, request: Request, *args: Any, **kwargs: Any): instance.status = ExternalDataSchema.Status.RUNNING instance.save() return Response(status=status.HTTP_200_OK) + + @action(methods=["POST"], detail=True) + def incremental_fields(self, request: Request, *args: Any, **kwargs: Any): + instance: ExternalDataSchema = self.get_object() + source: ExternalDataSource = instance.source + incremental_columns: list[IncrementalField] = [] + + if source.source_type == ExternalDataSource.Type.POSTGRES: + # TODO(@Gilbert09): Move all this into a util and replace elsewhere + host = source.job_inputs.get("host") + port = source.job_inputs.get("port") + user = source.job_inputs.get("user") + password = source.job_inputs.get("password") + database = source.job_inputs.get("database") + pg_schema = source.job_inputs.get("schema") + + using_ssh_tunnel = str(source.job_inputs.get("ssh_tunnel_enabled", False)) == "True" + ssh_tunnel_host = source.job_inputs.get("ssh_tunnel_host") + ssh_tunnel_port = source.job_inputs.get("ssh_tunnel_port") + ssh_tunnel_auth_type = source.job_inputs.get("ssh_tunnel_auth_type") + ssh_tunnel_auth_type_username = source.job_inputs.get("ssh_tunnel_auth_type_username") + ssh_tunnel_auth_type_password = source.job_inputs.get("ssh_tunnel_auth_type_password") + ssh_tunnel_auth_type_passphrase = source.job_inputs.get("ssh_tunnel_auth_type_passphrase") + ssh_tunnel_auth_type_private_key = source.job_inputs.get("ssh_tunnel_auth_type_private_key") + + ssh_tunnel = SSHTunnel( + enabled=using_ssh_tunnel, + host=ssh_tunnel_host, + port=ssh_tunnel_port, + auth_type=ssh_tunnel_auth_type, + username=ssh_tunnel_auth_type_username, + password=ssh_tunnel_auth_type_password, + passphrase=ssh_tunnel_auth_type_passphrase, + private_key=ssh_tunnel_auth_type_private_key, + ) + + pg_schemas = get_postgres_schemas( + host=host, + port=port, + database=database, + user=user, + password=password, + schema=pg_schema, + ssh_tunnel=ssh_tunnel, + ) + + columns = pg_schemas.get(instance.name, []) + incremental_columns = [ + {"field": name, "field_type": field_type, "label": name, "type": field_type} + for name, field_type in filter_postgres_incremental_fields(columns) + ] + elif source.source_type == ExternalDataSource.Type.SNOWFLAKE: + # TODO(@Gilbert09): Move all this into a util and replace elsewhere + account_id = source.job_inputs.get("account_id") + user = source.job_inputs.get("user") + password = source.job_inputs.get("password") + database = source.job_inputs.get("database") + warehouse = source.job_inputs.get("warehouse") + sf_schema = source.job_inputs.get("schema") + role = source.job_inputs.get("role") + + sf_schemas = get_snowflake_schemas( + account_id=account_id, + database=database, + warehouse=warehouse, + user=user, + password=password, + schema=sf_schema, + role=role, + ) + + columns = sf_schemas.get(instance.name, []) + incremental_columns = [ + {"field": name, "field_type": field_type, "label": name, "type": field_type} + for name, field_type in filter_snowflake_incremental_fields(columns) + ] + else: + mapping = PIPELINE_TYPE_INCREMENTAL_FIELDS_MAPPING.get(source.source_type) + if not mapping: + return Response( + status=status.HTTP_400_BAD_REQUEST, + data={"message": f'Source type "{source.source_type}" not found'}, + ) + mapping_fields = mapping.get(instance.name) + if not mapping_fields: + return Response( + status=status.HTTP_400_BAD_REQUEST, + data={"message": f'Incremental fields for "{source.source_type}.{instance.name}" can\'t be found'}, + ) + + incremental_columns = mapping_fields + + return Response(status=status.HTTP_200_OK, data=incremental_columns) diff --git a/posthog/warehouse/api/external_data_source.py b/posthog/warehouse/api/external_data_source.py index 36a705dfc1849..ae0487d58f66d 100644 --- a/posthog/warehouse/api/external_data_source.py +++ b/posthog/warehouse/api/external_data_source.py @@ -23,12 +23,18 @@ from posthog.hogql.database.database import create_hogql_database from posthog.temporal.data_imports.pipelines.schemas import ( PIPELINE_TYPE_INCREMENTAL_ENDPOINTS_MAPPING, + PIPELINE_TYPE_INCREMENTAL_FIELDS_MAPPING, PIPELINE_TYPE_SCHEMA_DEFAULT_MAPPING, ) from posthog.temporal.data_imports.pipelines.hubspot.auth import ( get_access_token_from_code, ) -from posthog.warehouse.models.external_data_schema import get_postgres_schemas, get_snowflake_schemas +from posthog.warehouse.models.external_data_schema import ( + filter_postgres_incremental_fields, + filter_snowflake_incremental_fields, + get_postgres_schemas, + get_snowflake_schemas, +) import temporalio @@ -233,12 +239,37 @@ def create(self, request: Request, *args: Any, **kwargs: Any) -> Response: active_schemas: list[ExternalDataSchema] = [] for schema in schemas: + sync_type = schema.get("sync_type") + is_incremental = sync_type == "incremental" + incremental_field = schema.get("incremental_field") + incremental_field_type = schema.get("incremental_field_type") + + if is_incremental and incremental_field is None: + new_source_model.delete() + return Response( + status=status.HTTP_400_BAD_REQUEST, + data={"message": "Incremental schemas given do not have an incremental field set"}, + ) + + if is_incremental and incremental_field_type is None: + new_source_model.delete() + return Response( + status=status.HTTP_400_BAD_REQUEST, + data={"message": "Incremental schemas given do not have an incremental field type set"}, + ) + schema_model = ExternalDataSchema.objects.create( name=schema.get("name"), team=self.team, source=new_source_model, should_sync=schema.get("should_sync"), - sync_type=schema.get("sync_type"), + sync_type=sync_type, + sync_type_config={ + "incremental_field": incremental_field, + "incremental_field_type": incremental_field_type, + } + if is_incremental + else {}, ) if schema.get("should_sync"): @@ -461,9 +492,9 @@ def destroy(self, request: Request, *args: Any, **kwargs: Any) -> Response: ).all() for job in all_jobs: try: - delete_data_import_folder(job.folder_path) + delete_data_import_folder(job.folder_path()) except Exception as e: - logger.exception(f"Could not clean up data import folder: {job.folder_path}", exc_info=e) + logger.exception(f"Could not clean up data import folder: {job.folder_path()}", exc_info=e) pass for schema in ExternalDataSchema.objects.filter( @@ -578,7 +609,7 @@ def database_schema(self, request: Request, *arg: Any, **kwargs: Any): try: result = get_postgres_schemas(host, port, database, user, password, schema, ssh_tunnel) - if len(result) == 0: + if len(result.keys()) == 0: return Response( status=status.HTTP_400_BAD_REQUEST, data={"message": "Postgres schema doesn't exist"}, @@ -607,14 +638,23 @@ def database_schema(self, request: Request, *arg: Any, **kwargs: Any): data={"message": GenericPostgresError}, ) + filtered_results = [ + (table_name, filter_postgres_incremental_fields(columns)) for table_name, columns in result.items() + ] + result_mapped_to_options = [ { - "table": row, - "should_sync": True, - "sync_types": {"full_refresh": True, "incremental": False}, - "sync_type": "full_refresh", + "table": table_name, + "should_sync": False, + "incremental_fields": [ + {"label": column_name, "type": column_type, "field": column_name, "field_type": column_type} + for column_name, column_type in columns + ], + "incremental_available": True, + "incremental_field": columns[0][0] if len(columns) > 0 and len(columns[0]) > 0 else None, + "sync_type": None, } - for row in result + for table_name, columns in filtered_results ] return Response(status=status.HTTP_200_OK, data=result_mapped_to_options) elif source_type == ExternalDataSource.Type.SNOWFLAKE: @@ -636,7 +676,7 @@ def database_schema(self, request: Request, *arg: Any, **kwargs: Any): try: result = get_snowflake_schemas(account_id, database, warehouse, user, password, schema, role) - if len(result) == 0: + if len(result.keys()) == 0: return Response( status=status.HTTP_400_BAD_REQUEST, data={"message": "Snowflake schema doesn't exist"}, @@ -659,20 +699,31 @@ def database_schema(self, request: Request, *arg: Any, **kwargs: Any): status=status.HTTP_400_BAD_REQUEST, data={"message": GenericSnowflakeError}, ) + + filtered_results = [ + (table_name, filter_snowflake_incremental_fields(columns)) for table_name, columns in result.items() + ] + result_mapped_to_options = [ { - "table": row, - "should_sync": True, - "sync_types": {"full_refresh": True, "incremental": False}, - "sync_type": "full_refresh", + "table": table_name, + "should_sync": False, + "incremental_fields": [ + {"label": column_name, "type": column_type, "field": column_name, "field_type": column_type} + for column_name, column_type in columns + ], + "incremental_available": True, + "incremental_field": columns[0][0] if len(columns) > 0 and len(columns[0]) > 0 else None, + "sync_type": None, } - for row in result + for table_name, columns in filtered_results ] return Response(status=status.HTTP_200_OK, data=result_mapped_to_options) # Return the possible endpoints for all other source types schemas = PIPELINE_TYPE_SCHEMA_DEFAULT_MAPPING.get(source_type, None) incremental_schemas = PIPELINE_TYPE_INCREMENTAL_ENDPOINTS_MAPPING.get(source_type, ()) + incremental_fields = PIPELINE_TYPE_INCREMENTAL_FIELDS_MAPPING.get(source_type, {}) if schemas is None: return Response( @@ -683,9 +734,21 @@ def database_schema(self, request: Request, *arg: Any, **kwargs: Any): options = [ { "table": row, - "should_sync": True, - "sync_types": {"full_refresh": True, "incremental": row in incremental_schemas}, - "sync_type": "incremental" if row in incremental_schemas else "full_refresh", + "should_sync": False, + "incremental_fields": [ + { + "label": field["label"], + "type": field["type"], + "field": field["field"], + "field_type": field["field_type"], + } + for field in incremental_fields.get(row, []) + ], + "incremental_available": row in incremental_schemas, + "incremental_field": incremental_fields.get(row, [])[0]["field"] + if row in incremental_schemas + else None, + "sync_type": None, } for row in schemas ] diff --git a/posthog/warehouse/api/test/conftest.py b/posthog/warehouse/api/test/conftest.py new file mode 100644 index 0000000000000..fd75bceb4cc0e --- /dev/null +++ b/posthog/warehouse/api/test/conftest.py @@ -0,0 +1,71 @@ +import psycopg +import pytest_asyncio +from psycopg import sql + + +@pytest_asyncio.fixture +async def setup_postgres_test_db(postgres_config): + """Fixture to manage a database for Postgres export testing. + + Managing a test database involves the following steps: + 1. Creating a test database. + 2. Initializing a connection to that database. + 3. Creating a test schema. + 4. Yielding the connection to be used in tests. + 5. After tests, drop the test schema and any tables in it. + 6. Drop the test database. + """ + connection = await psycopg.AsyncConnection.connect( + user=postgres_config["user"], + password=postgres_config["password"], + host=postgres_config["host"], + port=postgres_config["port"], + ) + await connection.set_autocommit(True) + + async with connection.cursor() as cursor: + await cursor.execute( + sql.SQL("SELECT 1 FROM pg_database WHERE datname = %s"), + (postgres_config["database"],), + ) + + if await cursor.fetchone() is None: + await cursor.execute(sql.SQL("CREATE DATABASE {}").format(sql.Identifier(postgres_config["database"]))) + + await connection.close() + + # We need a new connection to connect to the database we just created. + connection = await psycopg.AsyncConnection.connect( + user=postgres_config["user"], + password=postgres_config["password"], + host=postgres_config["host"], + port=postgres_config["port"], + dbname=postgres_config["database"], + ) + await connection.set_autocommit(True) + + async with connection.cursor() as cursor: + await cursor.execute( + sql.SQL("CREATE SCHEMA IF NOT EXISTS {}").format(sql.Identifier(postgres_config["schema"])) + ) + + yield + + async with connection.cursor() as cursor: + await cursor.execute(sql.SQL("DROP SCHEMA {} CASCADE").format(sql.Identifier(postgres_config["schema"]))) + + await connection.close() + + # We need a new connection to drop the database, as we cannot drop the current database. + connection = await psycopg.AsyncConnection.connect( + user=postgres_config["user"], + password=postgres_config["password"], + host=postgres_config["host"], + port=postgres_config["port"], + ) + await connection.set_autocommit(True) + + async with connection.cursor() as cursor: + await cursor.execute(sql.SQL("DROP DATABASE {}").format(sql.Identifier(postgres_config["database"]))) + + await connection.close() diff --git a/posthog/warehouse/api/test/test_external_data_schema.py b/posthog/warehouse/api/test/test_external_data_schema.py new file mode 100644 index 0000000000000..4babec0833ab0 --- /dev/null +++ b/posthog/warehouse/api/test/test_external_data_schema.py @@ -0,0 +1,358 @@ +from unittest import mock +import uuid +import psycopg +import pytest +from asgiref.sync import sync_to_async +import pytest_asyncio +from posthog.test.base import APIBaseTest +from posthog.warehouse.models.external_data_schema import ExternalDataSchema +from posthog.warehouse.models.external_data_source import ExternalDataSource +from django.conf import settings + + +@pytest.fixture +def postgres_config(): + return { + "user": settings.PG_USER, + "password": settings.PG_PASSWORD, + "database": "external_data_database", + "schema": "external_data_schema", + "host": settings.PG_HOST, + "port": int(settings.PG_PORT), + } + + +@pytest_asyncio.fixture +async def postgres_connection(postgres_config, setup_postgres_test_db): + if setup_postgres_test_db: + await anext(setup_postgres_test_db) + + connection = await psycopg.AsyncConnection.connect( + user=postgres_config["user"], + password=postgres_config["password"], + dbname=postgres_config["database"], + host=postgres_config["host"], + port=postgres_config["port"], + ) + + yield connection + + await connection.close() + + +@pytest.mark.usefixtures("postgres_connection", "postgres_config") +class TestExternalDataSchema(APIBaseTest): + @pytest.fixture(autouse=True) + def _setup(self, postgres_connection, postgres_config): + self.postgres_connection = postgres_connection + self.postgres_config = postgres_config + + def test_incremental_fields_stripe(self): + soruce = ExternalDataSource.objects.create( + team=self.team, + source_type=ExternalDataSource.Type.STRIPE, + ) + schema = ExternalDataSchema.objects.create( + name="BalanceTransaction", + team=self.team, + source=soruce, + should_sync=True, + status=ExternalDataSchema.Status.COMPLETED, + sync_type=ExternalDataSchema.SyncType.FULL_REFRESH, + ) + + response = self.client.post( + f"/api/projects/{self.team.pk}/external_data_schemas/{schema.id}/incremental_fields", + ) + payload = response.json() + + assert payload == [{"label": "created_at", "type": "datetime", "field": "created", "field_type": "integer"}] + + def test_incremental_fields_missing_source_type(self): + soruce = ExternalDataSource.objects.create( + team=self.team, + source_type="bad_source", + ) + schema = ExternalDataSchema.objects.create( + name="BalanceTransaction", + team=self.team, + source=soruce, + should_sync=True, + status=ExternalDataSchema.Status.COMPLETED, + sync_type=ExternalDataSchema.SyncType.FULL_REFRESH, + ) + + response = self.client.post( + f"/api/projects/{self.team.pk}/external_data_schemas/{schema.id}/incremental_fields", + ) + + assert response.status_code == 400 + + def test_incremental_fields_missing_table_name(self): + soruce = ExternalDataSource.objects.create( + team=self.team, + source_type=ExternalDataSource.Type.STRIPE, + ) + schema = ExternalDataSchema.objects.create( + name="Some_other_non_existent_table", + team=self.team, + source=soruce, + should_sync=True, + status=ExternalDataSchema.Status.COMPLETED, + sync_type=ExternalDataSchema.SyncType.FULL_REFRESH, + ) + + response = self.client.post( + f"/api/projects/{self.team.pk}/external_data_schemas/{schema.id}/incremental_fields", + ) + + assert response.status_code == 400 + + @pytest.mark.django_db(transaction=True) + @pytest.mark.asyncio + async def test_incremental_fields_postgres(self): + if not isinstance(self.postgres_connection, psycopg.AsyncConnection): + postgres_connection: psycopg.AsyncConnection = await anext(self.postgres_connection) + else: + postgres_connection = self.postgres_connection + + await postgres_connection.execute( + "CREATE TABLE IF NOT EXISTS {schema}.posthog_test (id integer)".format( + schema=self.postgres_config["schema"] + ) + ) + await postgres_connection.execute( + "INSERT INTO {schema}.posthog_test (id) VALUES (1)".format(schema=self.postgres_config["schema"]) + ) + await postgres_connection.commit() + + source = await sync_to_async(ExternalDataSource.objects.create)( + source_id=uuid.uuid4(), + connection_id=uuid.uuid4(), + destination_id=uuid.uuid4(), + team=self.team, + status="running", + source_type="Postgres", + job_inputs={ + "host": self.postgres_config["host"], + "port": self.postgres_config["port"], + "database": self.postgres_config["database"], + "user": self.postgres_config["user"], + "password": self.postgres_config["password"], + "schema": self.postgres_config["schema"], + "ssh_tunnel_enabled": False, + }, + ) + + schema = await sync_to_async(ExternalDataSchema.objects.create)( + name="posthog_test", + team=self.team, + source=source, + ) + + response = await sync_to_async(self.client.post)( + f"/api/projects/{self.team.pk}/external_data_schemas/{schema.id}/incremental_fields", + ) + payload = response.json() + + assert payload == [{"label": "id", "type": "integer", "field": "id", "field_type": "integer"}] + + def test_update_schema_change_sync_type(self): + source = ExternalDataSource.objects.create( + team=self.team, source_type=ExternalDataSource.Type.STRIPE, job_inputs={} + ) + schema = ExternalDataSchema.objects.create( + name="BalanceTransaction", + team=self.team, + source=source, + should_sync=True, + status=ExternalDataSchema.Status.COMPLETED, + sync_type=ExternalDataSchema.SyncType.INCREMENTAL, + ) + + with mock.patch( + "posthog.warehouse.api.external_data_schema.trigger_external_data_workflow" + ) as mock_trigger_external_data_workflow: + response = self.client.patch( + f"/api/projects/{self.team.pk}/external_data_schemas/{schema.id}", + data={"sync_type": "full_refresh"}, + ) + + assert response.status_code == 200 + mock_trigger_external_data_workflow.assert_called_once() + source.refresh_from_db() + assert source.job_inputs.get("reset_pipeline") == "True" + + def test_update_schema_change_sync_type_incremental_field(self): + source = ExternalDataSource.objects.create( + team=self.team, source_type=ExternalDataSource.Type.STRIPE, job_inputs={} + ) + schema = ExternalDataSchema.objects.create( + name="BalanceTransaction", + team=self.team, + source=source, + should_sync=True, + status=ExternalDataSchema.Status.COMPLETED, + sync_type=ExternalDataSchema.SyncType.INCREMENTAL, + sync_type_config={"incremental_field": "some_other_field", "incremental_field_type": "datetime"}, + ) + + with mock.patch( + "posthog.warehouse.api.external_data_schema.trigger_external_data_workflow" + ) as mock_trigger_external_data_workflow: + response = self.client.patch( + f"/api/projects/{self.team.pk}/external_data_schemas/{schema.id}", + data={"sync_type": "incremental", "incremental_field": "field", "incremental_field_type": "integer"}, + ) + + assert response.status_code == 200 + mock_trigger_external_data_workflow.assert_called_once() + + source.refresh_from_db() + assert source.job_inputs.get("reset_pipeline") == "True" + + schema.refresh_from_db() + assert schema.sync_type_config.get("incremental_field") == "field" + assert schema.sync_type_config.get("incremental_field_type") == "integer" + + def test_update_schema_change_should_sync_off(self): + source = ExternalDataSource.objects.create( + team=self.team, source_type=ExternalDataSource.Type.STRIPE, job_inputs={} + ) + schema = ExternalDataSchema.objects.create( + name="BalanceTransaction", + team=self.team, + source=source, + should_sync=True, + status=ExternalDataSchema.Status.COMPLETED, + sync_type=ExternalDataSchema.SyncType.FULL_REFRESH, + ) + + with ( + mock.patch( + "posthog.warehouse.api.external_data_schema.external_data_workflow_exists" + ) as mock_external_data_workflow_exists, + mock.patch( + "posthog.warehouse.api.external_data_schema.pause_external_data_schedule" + ) as mock_pause_external_data_schedule, + ): + mock_external_data_workflow_exists.return_value = True + + response = self.client.patch( + f"/api/projects/{self.team.pk}/external_data_schemas/{schema.id}", + data={"should_sync": False}, + ) + + assert response.status_code == 200 + mock_pause_external_data_schedule.assert_called_once() + + schema.refresh_from_db() + assert schema.should_sync is False + + def test_update_schema_change_should_sync_on_with_existing_schedule(self): + source = ExternalDataSource.objects.create( + team=self.team, source_type=ExternalDataSource.Type.STRIPE, job_inputs={} + ) + schema = ExternalDataSchema.objects.create( + name="BalanceTransaction", + team=self.team, + source=source, + should_sync=False, + status=ExternalDataSchema.Status.COMPLETED, + sync_type=ExternalDataSchema.SyncType.FULL_REFRESH, + ) + + with ( + mock.patch( + "posthog.warehouse.api.external_data_schema.external_data_workflow_exists" + ) as mock_external_data_workflow_exists, + mock.patch( + "posthog.warehouse.api.external_data_schema.unpause_external_data_schedule" + ) as mock_unpause_external_data_schedule, + ): + mock_external_data_workflow_exists.return_value = True + + response = self.client.patch( + f"/api/projects/{self.team.pk}/external_data_schemas/{schema.id}", + data={"should_sync": True}, + ) + + assert response.status_code == 200 + mock_unpause_external_data_schedule.assert_called_once() + + schema.refresh_from_db() + assert schema.should_sync is True + + def test_update_schema_change_should_sync_on_without_existing_schedule(self): + source = ExternalDataSource.objects.create( + team=self.team, source_type=ExternalDataSource.Type.STRIPE, job_inputs={} + ) + schema = ExternalDataSchema.objects.create( + name="BalanceTransaction", + team=self.team, + source=source, + should_sync=False, + status=ExternalDataSchema.Status.COMPLETED, + sync_type=ExternalDataSchema.SyncType.FULL_REFRESH, + ) + + with ( + mock.patch( + "posthog.warehouse.api.external_data_schema.external_data_workflow_exists" + ) as mock_external_data_workflow_exists, + mock.patch( + "posthog.warehouse.api.external_data_schema.sync_external_data_job_workflow" + ) as mock_sync_external_data_job_workflow, + ): + mock_external_data_workflow_exists.return_value = False + + response = self.client.patch( + f"/api/projects/{self.team.pk}/external_data_schemas/{schema.id}", + data={"should_sync": True}, + ) + + assert response.status_code == 200 + mock_sync_external_data_job_workflow.assert_called_once() + + schema.refresh_from_db() + assert schema.should_sync is True + + def test_update_schema_change_should_sync_on_without_sync_type(self): + source = ExternalDataSource.objects.create( + team=self.team, source_type=ExternalDataSource.Type.STRIPE, job_inputs={} + ) + schema = ExternalDataSchema.objects.create( + name="BalanceTransaction", + team=self.team, + source=source, + should_sync=False, + status=ExternalDataSchema.Status.COMPLETED, + sync_type=None, + ) + + response = self.client.patch( + f"/api/projects/{self.team.pk}/external_data_schemas/{schema.id}", + data={"should_sync": True}, + ) + + assert response.status_code == 400 + + def test_update_schema_change_sync_type_with_invalid_type(self): + source = ExternalDataSource.objects.create( + team=self.team, source_type=ExternalDataSource.Type.STRIPE, job_inputs={} + ) + schema = ExternalDataSchema.objects.create( + name="BalanceTransaction", + team=self.team, + source=source, + should_sync=False, + status=ExternalDataSchema.Status.COMPLETED, + sync_type=None, + ) + + response = self.client.patch( + f"/api/projects/{self.team.pk}/external_data_schemas/{schema.id}", + data={"sync_type": "blah"}, + ) + + assert response.status_code == 400 diff --git a/posthog/warehouse/api/test/test_external_data_source.py b/posthog/warehouse/api/test/test_external_data_source.py index 1c8e53d99b6a7..69a3ae2248205 100644 --- a/posthog/warehouse/api/test/test_external_data_source.py +++ b/posthog/warehouse/api/test/test_external_data_source.py @@ -16,7 +16,7 @@ import datetime -class TestSavedQuery(APIBaseTest): +class TestExternalDataSource(APIBaseTest): def _create_external_data_source(self) -> ExternalDataSource: return ExternalDataSource.objects.create( team_id=self.team.pk, @@ -38,7 +38,7 @@ def _create_external_data_schema(self, source_id) -> ExternalDataSchema: def test_create_external_data_source(self): response = self.client.post( - f"/api/projects/{self.team.id}/external_data_sources/", + f"/api/projects/{self.team.pk}/external_data_sources/", data={ "source_type": "Stripe", "payload": { @@ -66,7 +66,7 @@ def test_create_external_data_source(self): def test_create_external_data_source_delete_on_missing_schemas(self): response = self.client.post( - f"/api/projects/{self.team.id}/external_data_sources/", + f"/api/projects/{self.team.pk}/external_data_sources/", data={ "source_type": "Stripe", "payload": { @@ -81,7 +81,7 @@ def test_create_external_data_source_delete_on_missing_schemas(self): def test_create_external_data_source_delete_on_bad_schema(self): response = self.client.post( - f"/api/projects/{self.team.id}/external_data_sources/", + f"/api/projects/{self.team.pk}/external_data_sources/", data={ "source_type": "Stripe", "payload": { @@ -100,7 +100,7 @@ def test_prefix_external_data_source(self): # Create no prefix response = self.client.post( - f"/api/projects/{self.team.id}/external_data_sources/", + f"/api/projects/{self.team.pk}/external_data_sources/", data={ "source_type": "Stripe", "payload": { @@ -122,7 +122,7 @@ def test_prefix_external_data_source(self): # Try to create same type without prefix again response = self.client.post( - f"/api/projects/{self.team.id}/external_data_sources/", + f"/api/projects/{self.team.pk}/external_data_sources/", data={ "source_type": "Stripe", "payload": { @@ -145,7 +145,7 @@ def test_prefix_external_data_source(self): # Create with prefix response = self.client.post( - f"/api/projects/{self.team.id}/external_data_sources/", + f"/api/projects/{self.team.pk}/external_data_sources/", data={ "source_type": "Stripe", "payload": { @@ -168,7 +168,7 @@ def test_prefix_external_data_source(self): # Try to create same type with same prefix again response = self.client.post( - f"/api/projects/{self.team.id}/external_data_sources/", + f"/api/projects/{self.team.pk}/external_data_sources/", data={ "source_type": "Stripe", "payload": { @@ -190,11 +190,188 @@ def test_prefix_external_data_source(self): self.assertEqual(response.status_code, 400) self.assertEqual(response.json(), {"message": "Prefix already exists"}) + def test_create_external_data_source_incremental(self): + response = self.client.post( + f"/api/projects/{self.team.pk}/external_data_sources/", + data={ + "source_type": "Stripe", + "payload": { + "client_secret": "sk_test_123", + "schemas": [ + { + "name": "BalanceTransaction", + "should_sync": True, + "sync_type": "incremental", + "incremental_field": "created", + "incremental_field_type": "integer", + }, + { + "name": "Subscription", + "should_sync": True, + "sync_type": "incremental", + "incremental_field": "created", + "incremental_field_type": "integer", + }, + { + "name": "Customer", + "should_sync": True, + "sync_type": "incremental", + "incremental_field": "created", + "incremental_field_type": "integer", + }, + { + "name": "Product", + "should_sync": True, + "sync_type": "incremental", + "incremental_field": "created", + "incremental_field_type": "integer", + }, + { + "name": "Price", + "should_sync": True, + "sync_type": "incremental", + "incremental_field": "created", + "incremental_field_type": "integer", + }, + { + "name": "Invoice", + "should_sync": True, + "sync_type": "incremental", + "incremental_field": "created", + "incremental_field_type": "integer", + }, + { + "name": "Charge", + "should_sync": True, + "sync_type": "incremental", + "incremental_field": "created", + "incremental_field_type": "integer", + }, + ], + }, + }, + ) + self.assertEqual(response.status_code, 201) + + def test_create_external_data_source_incremental_missing_field(self): + response = self.client.post( + f"/api/projects/{self.team.pk}/external_data_sources/", + data={ + "source_type": "Stripe", + "payload": { + "client_secret": "sk_test_123", + "schemas": [ + { + "name": "BalanceTransaction", + "should_sync": True, + "sync_type": "incremental", + "incremental_field_type": "integer", + }, + { + "name": "Subscription", + "should_sync": True, + "sync_type": "incremental", + "incremental_field_type": "integer", + }, + { + "name": "Customer", + "should_sync": True, + "sync_type": "incremental", + "incremental_field_type": "integer", + }, + { + "name": "Product", + "should_sync": True, + "sync_type": "incremental", + "incremental_field_type": "integer", + }, + { + "name": "Price", + "should_sync": True, + "sync_type": "incremental", + "incremental_field_type": "integer", + }, + { + "name": "Invoice", + "should_sync": True, + "sync_type": "incremental", + "incremental_field_type": "integer", + }, + { + "name": "Charge", + "should_sync": True, + "sync_type": "incremental", + "incremental_field_type": "integer", + }, + ], + }, + }, + ) + assert response.status_code == 400 + assert len(ExternalDataSource.objects.all()) == 0 + + def test_create_external_data_source_incremental_missing_type(self): + response = self.client.post( + f"/api/projects/{self.team.pk}/external_data_sources/", + data={ + "source_type": "Stripe", + "payload": { + "client_secret": "sk_test_123", + "schemas": [ + { + "name": "BalanceTransaction", + "should_sync": True, + "sync_type": "incremental", + "incremental_field": "created", + }, + { + "name": "Subscription", + "should_sync": True, + "sync_type": "incremental", + "incremental_field": "created", + }, + { + "name": "Customer", + "should_sync": True, + "sync_type": "incremental", + "incremental_field": "created", + }, + { + "name": "Product", + "should_sync": True, + "sync_type": "incremental", + "incremental_field": "created", + }, + { + "name": "Price", + "should_sync": True, + "sync_type": "incremental", + "incremental_field": "created", + }, + { + "name": "Invoice", + "should_sync": True, + "sync_type": "incremental", + "incremental_field": "created", + }, + { + "name": "Charge", + "should_sync": True, + "sync_type": "incremental", + "incremental_field": "created", + }, + ], + }, + }, + ) + assert response.status_code == 400 + assert len(ExternalDataSource.objects.all()) == 0 + def test_list_external_data_source(self): self._create_external_data_source() self._create_external_data_source() - response = self.client.get(f"/api/projects/{self.team.id}/external_data_sources/") + response = self.client.get(f"/api/projects/{self.team.pk}/external_data_sources/") payload = response.json() self.assertEqual(response.status_code, 200) @@ -204,7 +381,7 @@ def test_get_external_data_source_with_schema(self): source = self._create_external_data_source() schema = self._create_external_data_schema(source.pk) - response = self.client.get(f"/api/projects/{self.team.id}/external_data_sources/{source.pk}") + response = self.client.get(f"/api/projects/{self.team.pk}/external_data_sources/{source.pk}") payload = response.json() self.assertEqual(response.status_code, 200) @@ -228,6 +405,8 @@ def test_get_external_data_source_with_schema(self): { "id": str(schema.pk), "incremental": False, + "incremental_field": None, + "incremental_field_type": None, "last_synced_at": schema.last_synced_at, "name": schema.name, "should_sync": schema.should_sync, @@ -243,7 +422,7 @@ def test_delete_external_data_source(self): source = self._create_external_data_source() schema = self._create_external_data_schema(source.pk) - response = self.client.delete(f"/api/projects/{self.team.id}/external_data_sources/{source.pk}") + response = self.client.delete(f"/api/projects/{self.team.pk}/external_data_sources/{source.pk}") self.assertEqual(response.status_code, 204) @@ -255,7 +434,7 @@ def test_delete_external_data_source(self): def test_reload_external_data_source(self, mock_trigger): source = self._create_external_data_source() - response = self.client.post(f"/api/projects/{self.team.id}/external_data_sources/{source.pk}/reload/") + response = self.client.post(f"/api/projects/{self.team.pk}/external_data_sources/{source.pk}/reload/") source.refresh_from_db() @@ -285,7 +464,7 @@ def test_database_schema(self): postgres_connection.commit() response = self.client.post( - f"/api/projects/{self.team.id}/external_data_sources/database_schema/", + f"/api/projects/{self.team.pk}/external_data_sources/database_schema/", data={ "source_type": "Postgres", "host": settings.PG_HOST, @@ -315,7 +494,7 @@ def test_database_schema(self): def test_database_schema_non_postgres_source(self): response = self.client.post( - f"/api/projects/{self.team.id}/external_data_sources/database_schema/", + f"/api/projects/{self.team.pk}/external_data_sources/database_schema/", data={ "source_type": "Stripe", }, @@ -330,7 +509,7 @@ def test_database_schema_non_postgres_source(self): @patch("posthog.warehouse.api.external_data_source.get_postgres_schemas") def test_internal_postgres(self, patch_get_postgres_schemas): - patch_get_postgres_schemas.return_value = ["table_1"] + patch_get_postgres_schemas.return_value = {"table_1": [("id", "integer")]} with override_settings(CLOUD_DEPLOYMENT="US"): team_2, _ = Team.objects.get_or_create(id=2, organization=self.team.organization) @@ -349,17 +528,19 @@ def test_internal_postgres(self, patch_get_postgres_schemas): assert response.status_code == 200 assert response.json() == [ { - "should_sync": True, "table": "table_1", - "sync_type": "full_refresh", - "sync_types": {"full_refresh": True, "incremental": False}, + "should_sync": False, + "incremental_fields": [{"label": "id", "type": "integer", "field": "id", "field_type": "integer"}], + "incremental_available": True, + "incremental_field": "id", + "sync_type": None, } ] new_team = Team.objects.create(name="new_team", organization=self.team.organization) response = self.client.post( - f"/api/projects/{new_team.id}/external_data_sources/database_schema/", + f"/api/projects/{new_team.pk}/external_data_sources/database_schema/", data={ "source_type": "Postgres", "host": "172.16.0.0", @@ -391,17 +572,19 @@ def test_internal_postgres(self, patch_get_postgres_schemas): assert response.status_code == 200 assert response.json() == [ { - "should_sync": True, "table": "table_1", - "sync_type": "full_refresh", - "sync_types": {"full_refresh": True, "incremental": False}, + "should_sync": False, + "incremental_fields": [{"label": "id", "type": "integer", "field": "id", "field_type": "integer"}], + "incremental_available": True, + "incremental_field": "id", + "sync_type": None, } ] new_team = Team.objects.create(name="new_team", organization=self.team.organization) response = self.client.post( - f"/api/projects/{new_team.id}/external_data_sources/database_schema/", + f"/api/projects/{new_team.pk}/external_data_sources/database_schema/", data={ "source_type": "Postgres", "host": "172.16.0.0", @@ -430,7 +613,7 @@ def test_update_source_sync_frequency(self, _patch_sync_external_data_job_workfl # test api response = self.client.patch( - f"/api/projects/{self.team.id}/external_data_sources/{source.pk}/", + f"/api/projects/{self.team.pk}/external_data_sources/{source.pk}/", data={"sync_frequency": ExternalDataSource.SyncFrequency.WEEKLY}, ) self.assertEqual(response.status_code, status.HTTP_200_OK) diff --git a/posthog/warehouse/models/external_data_job.py b/posthog/warehouse/models/external_data_job.py index 0b40c41f11069..08a0e1c0fcd5f 100644 --- a/posthog/warehouse/models/external_data_job.py +++ b/posthog/warehouse/models/external_data_job.py @@ -31,24 +31,23 @@ class Status(models.TextChoices): __repr__ = sane_repr("id") - @property def folder_path(self) -> str: if self.schema and self.schema.is_incremental: - return f"team_{self.team_id}_{self.pipeline.source_type}_{str(self.schema.pk)}".lower().replace("-", "_") + return f"team_{self.team_id}_{self.pipeline.source_type}_{str(self.schema_id)}".lower().replace("-", "_") return f"team_{self.team_id}_{self.pipeline.source_type}_{str(self.pk)}".lower().replace("-", "_") def url_pattern_by_schema(self, schema: str) -> str: if TEST: return ( - f"http://{settings.AIRBYTE_BUCKET_DOMAIN}/test-pipeline/{self.folder_path}/{schema.lower()}/*.parquet" + f"http://{settings.AIRBYTE_BUCKET_DOMAIN}/test-pipeline/{self.folder_path()}/{schema.lower()}/*.parquet" ) - return f"https://{settings.AIRBYTE_BUCKET_DOMAIN}/dlt/{self.folder_path}/{schema.lower()}/*.parquet" + return f"https://{settings.AIRBYTE_BUCKET_DOMAIN}/dlt/{self.folder_path()}/{schema.lower()}/*.parquet" def delete_data_in_bucket(self) -> None: s3 = get_s3_client() - s3.delete(f"{settings.BUCKET_URL}/{self.folder_path}", recursive=True) + s3.delete(f"{settings.BUCKET_URL}/{self.folder_path()}", recursive=True) @database_sync_to_async diff --git a/posthog/warehouse/models/external_data_schema.py b/posthog/warehouse/models/external_data_schema.py index 314410f4071bf..109c440eccc2c 100644 --- a/posthog/warehouse/models/external_data_schema.py +++ b/posthog/warehouse/models/external_data_schema.py @@ -1,10 +1,12 @@ -from typing import Any, Optional +from collections import defaultdict +from typing import Optional from django.db import models import snowflake.connector from posthog.models.team import Team from posthog.models.utils import CreatedMetaFields, UUIDModel, sane_repr import uuid import psycopg2 +from posthog.warehouse.types import IncrementalFieldType from posthog.warehouse.models.ssh_tunnel import SSHTunnel from posthog.warehouse.util import database_sync_to_async @@ -35,8 +37,10 @@ class SyncType(models.TextChoices): ) status: models.CharField = models.CharField(max_length=400, null=True, blank=True) last_synced_at: models.DateTimeField = models.DateTimeField(null=True, blank=True) - sync_type: models.CharField = models.CharField( - max_length=128, choices=SyncType.choices, default=SyncType.FULL_REFRESH, blank=True + sync_type: models.CharField = models.CharField(max_length=128, choices=SyncType.choices, null=True, blank=True) + sync_type_config: models.JSONField = models.JSONField( + default=dict, + blank=True, ) __repr__ = sane_repr("name") @@ -85,9 +89,25 @@ def sync_old_schemas_with_new_schemas(new_schemas: list, source_id: uuid.UUID, t ExternalDataSchema.objects.create(name=schema, team_id=team_id, source_id=source_id, should_sync=False) +def filter_snowflake_incremental_fields(columns: list[tuple[str, str]]) -> list[tuple[str, IncrementalFieldType]]: + results: list[tuple[str, IncrementalFieldType]] = [] + for column_name, type in columns: + type = type.lower() + if type.startswith("timestamp"): + results.append((column_name, IncrementalFieldType.Timestamp)) + elif type == "date": + results.append((column_name, IncrementalFieldType.Date)) + elif type == "datetime": + results.append((column_name, IncrementalFieldType.DateTime)) + elif type == "numeric": + results.append((column_name, IncrementalFieldType.Numeric)) + + return results + + def get_snowflake_schemas( account_id: str, database: str, warehouse: str, user: str, password: str, schema: str, role: Optional[str] = None -) -> list[Any]: +) -> dict[str, list[tuple[str, str]]]: with snowflake.connector.connect( user=user, password=password, @@ -102,17 +122,35 @@ def get_snowflake_schemas( raise Exception("Can't create cursor to Snowflake") cursor.execute( - "SELECT table_name FROM information_schema.tables WHERE table_schema = %(schema)s", {"schema": schema} + "SELECT table_name, column_name, data_type FROM information_schema.columns WHERE table_schema = %(schema)s ORDER BY table_name ASC", + {"schema": schema}, ) - results = cursor.fetchall() - results = [row[0] for row in results] + result = cursor.fetchall() + + schema_list = defaultdict(list) + for row in result: + schema_list[row[0]].append((row[1], row[2])) - return results + return schema_list + + +def filter_postgres_incremental_fields(columns: list[tuple[str, str]]) -> list[tuple[str, IncrementalFieldType]]: + results: list[tuple[str, IncrementalFieldType]] = [] + for column_name, type in columns: + type = type.lower() + if type.startswith("timestamp"): + results.append((column_name, IncrementalFieldType.Timestamp)) + elif type == "date": + results.append((column_name, IncrementalFieldType.Date)) + elif type == "integer" or type == "smallint" or type == "bigint": + results.append((column_name, IncrementalFieldType.Integer)) + + return results def get_postgres_schemas( host: str, port: str, database: str, user: str, password: str, schema: str, ssh_tunnel: SSHTunnel -) -> list[Any]: +) -> dict[str, list[tuple[str, str]]]: def get_schemas(postgres_host: str, postgres_port: int): connection = psycopg2.connect( host=postgres_host, @@ -129,14 +167,18 @@ def get_schemas(postgres_host: str, postgres_port: int): with connection.cursor() as cursor: cursor.execute( - "SELECT table_name FROM information_schema.tables WHERE table_schema = %(schema)s", {"schema": schema} + "SELECT table_name, column_name, data_type FROM information_schema.columns WHERE table_schema = %(schema)s ORDER BY table_name ASC", + {"schema": schema}, ) result = cursor.fetchall() - result = [row[0] for row in result] + + schema_list = defaultdict(list) + for row in result: + schema_list[row[0]].append((row[1], row[2])) connection.close() - return result + return schema_list if ssh_tunnel.enabled: with ssh_tunnel.get_tunnel(host, int(port)) as tunnel: diff --git a/posthog/warehouse/types.py b/posthog/warehouse/types.py new file mode 100644 index 0000000000000..57455ac361232 --- /dev/null +++ b/posthog/warehouse/types.py @@ -0,0 +1,17 @@ +from enum import Enum +from typing import TypedDict + + +class IncrementalFieldType(Enum): + Integer = "integer" + Numeric = "numeric" # For snowflake + DateTime = "datetime" + Date = "date" + Timestamp = "timestamp" + + +class IncrementalField(TypedDict): + label: str # Label shown in the UI + type: IncrementalFieldType # Field type shown in the UI + field: str # Actual DB field accessed + field_type: IncrementalFieldType # Actual DB type of the field diff --git a/requirements.in b/requirements.in index 6b59c0ad8f13a..fb24969950a0f 100644 --- a/requirements.in +++ b/requirements.in @@ -33,7 +33,7 @@ djangorestframework==3.15.1 djangorestframework-csv==2.1.1 djangorestframework-dataclasses==1.2.0 django-fernet-encrypted-fields==0.1.3 -dlt==0.4.12 +dlt==0.4.13a0 dnspython==2.2.1 drf-exceptions-hog==0.4.0 drf-extensions==0.7.0 diff --git a/requirements.txt b/requirements.txt index 13796a6133fd7..49d060f506970 100644 --- a/requirements.txt +++ b/requirements.txt @@ -207,7 +207,7 @@ djangorestframework-csv==2.1.1 # via -r requirements.in djangorestframework-dataclasses==1.2.0 # via -r requirements.in -dlt==0.4.12 +dlt==0.4.13a0 # via -r requirements.in dnspython==2.2.1 # via -r requirements.in From a35266b17e471072f1a7ea2bc9d2ae011295fee7 Mon Sep 17 00:00:00 2001 From: Eric Duong Date: Mon, 24 Jun 2024 09:13:33 -0400 Subject: [PATCH 02/24] chore(data-warehouse): fix column typing and remove unnecessary UI (#23130) * fix column typing and remove unneessary UI * typing --- .../data-warehouse/external/TableData.tsx | 93 +------------------ .../models/datawarehouse_saved_query.py | 85 +++++++++++++---- posthog/warehouse/models/table.py | 59 +----------- posthog/warehouse/models/util.py | 62 +++++++++++++ 4 files changed, 133 insertions(+), 166 deletions(-) diff --git a/frontend/src/scenes/data-warehouse/external/TableData.tsx b/frontend/src/scenes/data-warehouse/external/TableData.tsx index 3ec7cbe952e61..2daa2c4a8e3e9 100644 --- a/frontend/src/scenes/data-warehouse/external/TableData.tsx +++ b/frontend/src/scenes/data-warehouse/external/TableData.tsx @@ -3,13 +3,11 @@ import { LemonButton, LemonModal } from '@posthog/lemon-ui' import { useActions, useValues } from 'kea' import { capitalizeFirstLetter } from 'kea-forms' import { humanFriendlyDetailedTime } from 'lib/utils' -import { Dispatch, SetStateAction, useEffect, useState } from 'react' +import { Dispatch, SetStateAction } from 'react' import { DatabaseTable } from 'scenes/data-management/database/DatabaseTable' -import { HogQLQueryEditor } from '~/queries/nodes/HogQLQuery/HogQLQueryEditor' -import { DatabaseSchemaTable, HogQLQuery, NodeKind } from '~/queries/schema' +import { DatabaseSchemaTable } from '~/queries/schema' -import { ViewLinkModal } from '../ViewLinkModal' import { dataWarehouseSceneLogic } from './dataWarehouseSceneLogic' export function TableData(): JSX.Element { @@ -18,30 +16,13 @@ export function TableData(): JSX.Element { isEditingSavedQuery, inEditSchemaMode, editSchemaIsLoading, - databaseLoading, } = useValues(dataWarehouseSceneLogic) - const { - deleteDataWarehouseSavedQuery, - deleteDataWarehouseTable, - setIsEditingSavedQuery, - updateDataWarehouseSavedQuery, - toggleEditSchemaMode, - updateSelectedSchema, - saveSchema, - cancelEditSchema, - } = useActions(dataWarehouseSceneLogic) - const [localQuery, setLocalQuery] = useState() - const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false) + const { setIsEditingSavedQuery, toggleEditSchemaMode, updateSelectedSchema, saveSchema, cancelEditSchema } = + useActions(dataWarehouseSceneLogic) const isExternalTable = table?.type === 'data_warehouse' const isManuallyLinkedTable = isExternalTable && !table.source - useEffect(() => { - if (table && table.type === 'view') { - setLocalQuery(table.query) - } - }, [table]) - return (
{table ? ( @@ -91,11 +72,6 @@ export function TableData(): JSX.Element { Edit schema )} - {table.type === 'view' && ( - setIsEditingSavedQuery(true)}> - Edit - - )}
)}
@@ -139,71 +115,10 @@ export function TableData(): JSX.Element { />
)} - - {table.type === 'view' && isEditingSavedQuery && ( -
- Update View Definition - { - setLocalQuery({ - kind: NodeKind.HogQLQuery, - query: queryInput, - }) - }} - editorFooter={(hasErrors, error, isValidView) => ( - { - localQuery && - updateDataWarehouseSavedQuery({ - ...table, - query: localQuery, - }) - }} - loading={databaseLoading} - type="primary" - center - disabledReason={ - hasErrors - ? error ?? 'Query has errors' - : !isValidView - ? 'All fields must have an alias' - : '' - } - data-attr="hogql-query-editor-save-as-view" - > - Save as view - - )} - /> -
- )} ) : (
)} - {table && ( - { - if (table) { - if (table.type === 'view') { - deleteDataWarehouseSavedQuery(table.id) - } else { - deleteDataWarehouseTable(table.id) - } - } - }} - /> - )} -
) } diff --git a/posthog/warehouse/models/datawarehouse_saved_query.py b/posthog/warehouse/models/datawarehouse_saved_query.py index 29ecb28dd3296..204a85c15f80f 100644 --- a/posthog/warehouse/models/datawarehouse_saved_query.py +++ b/posthog/warehouse/models/datawarehouse_saved_query.py @@ -1,14 +1,20 @@ import re -from sentry_sdk import capture_exception from django.core.exceptions import ValidationError from django.db import models +from typing import Optional, Any from posthog.hogql.database.database import Database -from posthog.hogql.database.models import SavedQuery +from posthog.hogql.database.models import SavedQuery, FieldOrTable from posthog.hogql import ast from posthog.models.team import Team from posthog.models.utils import CreatedMetaFields, DeletedMetaFields, UUIDModel -from posthog.warehouse.models.util import remove_named_tuples +from posthog.warehouse.models.util import ( + remove_named_tuples, + CLICKHOUSE_HOGQL_MAPPING, + clean_type, + STR_TO_HOGQL_MAPPING, +) +from posthog.schema import HogQLQueryModifiers def validate_saved_query_name(value): @@ -52,13 +58,37 @@ class Meta: ) ] - def get_columns(self) -> dict[str, str]: + def get_columns(self) -> dict[str, dict[str, Any]]: from posthog.api.services.query import process_query_dict from posthog.hogql_queries.query_runner import ExecutionMode response = process_query_dict(self.team, self.query, execution_mode=ExecutionMode.CALCULATE_BLOCKING_ALWAYS) - types = getattr(response, "types", {}) - return dict(types) + result = getattr(response, "types", []) + + if result is None or isinstance(result, int): + raise Exception("No columns types provided by clickhouse in get_columns") + + columns = { + str(item[0]): { + "hogql": CLICKHOUSE_HOGQL_MAPPING[clean_type(str(item[1]))].__name__, + "clickhouse": item[1], + "valid": True, + } + for item in result + } + + return columns + + def get_clickhouse_column_type(self, column_name: str) -> Optional[str]: + clickhouse_type = self.columns.get(column_name, None) + + if isinstance(clickhouse_type, dict) and self.columns[column_name].get("clickhouse"): + clickhouse_type = self.columns[column_name].get("clickhouse") + + if clickhouse_type.startswith("Nullable("): + clickhouse_type = clickhouse_type.replace("Nullable(", "")[:-1] + + return clickhouse_type @property def s3_tables(self): @@ -83,26 +113,43 @@ def s3_tables(self): return list(table_collector.tables) - def hogql_definition(self) -> SavedQuery: + def hogql_definition(self, modifiers: Optional[HogQLQueryModifiers] = None) -> SavedQuery: from posthog.warehouse.models.table import CLICKHOUSE_HOGQL_MAPPING columns = self.columns or {} - fields = {} + fields: dict[str, FieldOrTable] = {} + structure = [] for column, type in columns.items(): - if type.startswith("Nullable("): - type = type.replace("Nullable(", "")[:-1] + # Support for 'old' style columns + if isinstance(type, str): + clickhouse_type = type + else: + clickhouse_type = type["clickhouse"] + + if clickhouse_type.startswith("Nullable("): + clickhouse_type = clickhouse_type.replace("Nullable(", "")[:-1] # TODO: remove when addressed https://github.com/ClickHouse/ClickHouse/issues/37594 - if type.startswith("Array("): - type = remove_named_tuples(type) - - type = type.partition("(")[0] - try: - type = CLICKHOUSE_HOGQL_MAPPING[type] - fields[column] = type(name=column) - except KeyError as e: - capture_exception(e) + if clickhouse_type.startswith("Array("): + clickhouse_type = remove_named_tuples(clickhouse_type) + + if isinstance(type, dict): + column_invalid = not type.get("valid", True) + else: + column_invalid = False + + if not column_invalid or (modifiers is not None and modifiers.s3TableUseInvalidColumns): + structure.append(f"`{column}` {clickhouse_type}") + + # Support for 'old' style columns + if isinstance(type, str): + hogql_type_str = clickhouse_type.partition("(")[0] + hogql_type = CLICKHOUSE_HOGQL_MAPPING[hogql_type_str] + else: + hogql_type = STR_TO_HOGQL_MAPPING[type["hogql"]] + + fields[column] = hogql_type(name=column) return SavedQuery( name=self.name, diff --git a/posthog/warehouse/models/table.py b/posthog/warehouse/models/table.py index af8638a57f2e0..084eba202ea52 100644 --- a/posthog/warehouse/models/table.py +++ b/posthog/warehouse/models/table.py @@ -1,4 +1,3 @@ -import re from typing import Optional, TypeAlias from django.db import models @@ -6,15 +5,7 @@ from posthog.errors import wrap_query_error from posthog.hogql import ast from posthog.hogql.database.models import ( - BooleanDatabaseField, - DateDatabaseField, - DateTimeDatabaseField, FieldOrTable, - FloatDatabaseField, - IntegerDatabaseField, - StringArrayDatabaseField, - StringDatabaseField, - StringJSONDatabaseField, ) from posthog.hogql.database.s3_table import S3Table from posthog.models.team import Team @@ -32,6 +23,7 @@ from uuid import UUID from sentry_sdk import capture_exception from posthog.warehouse.util import database_sync_to_async +from posthog.warehouse.models.util import CLICKHOUSE_HOGQL_MAPPING, clean_type, STR_TO_HOGQL_MAPPING from .external_table_definitions import external_tables SERIALIZED_FIELD_TO_CLICKHOUSE_MAPPING: dict[DatabaseSerializedFieldType, str] = { @@ -45,44 +37,6 @@ DatabaseSerializedFieldType.JSON: "Map", } -CLICKHOUSE_HOGQL_MAPPING = { - "UUID": StringDatabaseField, - "String": StringDatabaseField, - "DateTime64": DateTimeDatabaseField, - "DateTime32": DateTimeDatabaseField, - "DateTime": DateTimeDatabaseField, - "Date": DateDatabaseField, - "Date32": DateDatabaseField, - "UInt8": IntegerDatabaseField, - "UInt16": IntegerDatabaseField, - "UInt32": IntegerDatabaseField, - "UInt64": IntegerDatabaseField, - "Float8": FloatDatabaseField, - "Float16": FloatDatabaseField, - "Float32": FloatDatabaseField, - "Float64": FloatDatabaseField, - "Int8": IntegerDatabaseField, - "Int16": IntegerDatabaseField, - "Int32": IntegerDatabaseField, - "Int64": IntegerDatabaseField, - "Tuple": StringJSONDatabaseField, - "Array": StringArrayDatabaseField, - "Map": StringJSONDatabaseField, - "Bool": BooleanDatabaseField, - "Decimal": FloatDatabaseField, -} - -STR_TO_HOGQL_MAPPING = { - "BooleanDatabaseField": BooleanDatabaseField, - "DateDatabaseField": DateDatabaseField, - "DateTimeDatabaseField": DateTimeDatabaseField, - "IntegerDatabaseField": IntegerDatabaseField, - "FloatDatabaseField": FloatDatabaseField, - "StringArrayDatabaseField": StringArrayDatabaseField, - "StringDatabaseField": StringDatabaseField, - "StringJSONDatabaseField": StringJSONDatabaseField, -} - ExtractErrors = { "The AWS Access Key Id you provided does not exist": "The Access Key you provided does not exist", "Access Denied: while reading key:": "Access was denied when reading the provided file", @@ -183,17 +137,6 @@ def get_columns(self, safe_expose_ch_error=True) -> DataWarehouseTableColumns: if result is None or isinstance(result, int): raise Exception("No columns types provided by clickhouse in get_columns") - def clean_type(column_type: str) -> str: - if column_type.startswith("Nullable("): - column_type = column_type.replace("Nullable(", "")[:-1] - - if column_type.startswith("Array("): - column_type = remove_named_tuples(column_type) - - column_type = re.sub(r"\(.+\)+", "", column_type) - - return column_type - columns = { str(item[0]): { "hogql": CLICKHOUSE_HOGQL_MAPPING[clean_type(str(item[1]))].__name__, diff --git a/posthog/warehouse/models/util.py b/posthog/warehouse/models/util.py index d33cb47b3cbf5..ab26b5151ea87 100644 --- a/posthog/warehouse/models/util.py +++ b/posthog/warehouse/models/util.py @@ -1,5 +1,16 @@ import re +from posthog.hogql.database.models import ( + BooleanDatabaseField, + DateDatabaseField, + DateTimeDatabaseField, + FloatDatabaseField, + IntegerDatabaseField, + StringArrayDatabaseField, + StringDatabaseField, + StringJSONDatabaseField, +) + def remove_named_tuples(type): """Remove named tuples from query""" @@ -12,3 +23,54 @@ def remove_named_tuples(type): if token == "Nullable" or (len(token) == 1 and not token.isalnum()) or token in CLICKHOUSE_HOGQL_MAPPING.keys() ] return "".join(filtered_tokens) + + +def clean_type(column_type: str) -> str: + if column_type.startswith("Nullable("): + column_type = column_type.replace("Nullable(", "")[:-1] + + if column_type.startswith("Array("): + column_type = remove_named_tuples(column_type) + + column_type = re.sub(r"\(.+\)+", "", column_type) + + return column_type + + +CLICKHOUSE_HOGQL_MAPPING = { + "UUID": StringDatabaseField, + "String": StringDatabaseField, + "DateTime64": DateTimeDatabaseField, + "DateTime32": DateTimeDatabaseField, + "DateTime": DateTimeDatabaseField, + "Date": DateDatabaseField, + "Date32": DateDatabaseField, + "UInt8": IntegerDatabaseField, + "UInt16": IntegerDatabaseField, + "UInt32": IntegerDatabaseField, + "UInt64": IntegerDatabaseField, + "Float8": FloatDatabaseField, + "Float16": FloatDatabaseField, + "Float32": FloatDatabaseField, + "Float64": FloatDatabaseField, + "Int8": IntegerDatabaseField, + "Int16": IntegerDatabaseField, + "Int32": IntegerDatabaseField, + "Int64": IntegerDatabaseField, + "Tuple": StringJSONDatabaseField, + "Array": StringArrayDatabaseField, + "Map": StringJSONDatabaseField, + "Bool": BooleanDatabaseField, + "Decimal": FloatDatabaseField, +} + +STR_TO_HOGQL_MAPPING = { + "BooleanDatabaseField": BooleanDatabaseField, + "DateDatabaseField": DateDatabaseField, + "DateTimeDatabaseField": DateTimeDatabaseField, + "IntegerDatabaseField": IntegerDatabaseField, + "FloatDatabaseField": FloatDatabaseField, + "StringArrayDatabaseField": StringArrayDatabaseField, + "StringDatabaseField": StringDatabaseField, + "StringJSONDatabaseField": StringJSONDatabaseField, +} From c0b0baee3243275e41780002fb88ae2670395bae Mon Sep 17 00:00:00 2001 From: Michael Matloka Date: Mon, 24 Jun 2024 15:56:47 +0200 Subject: [PATCH 03/24] fix(api): Always allow GET /users/@me with personal API key (#23188) * fix(api): Always allow GET /users/@me with personal API key * Fix `scope_object` retrieval --- posthog/api/test/test_personal_api_keys.py | 12 ++++++++++++ posthog/permissions.py | 12 ++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/posthog/api/test/test_personal_api_keys.py b/posthog/api/test/test_personal_api_keys.py index 0ae1050d7acad..b398639c9e44e 100644 --- a/posthog/api/test/test_personal_api_keys.py +++ b/posthog/api/test/test_personal_api_keys.py @@ -476,6 +476,12 @@ def test_cant_list_all_projecs_for_current_org(self): response = self._do_request(f"/api/projects") assert response.status_code == status.HTTP_200_OK, response.json() + def test_allows_user_me_read_access(self): + # The /users/@me/ endpoint is not team-based, but it's useful as a way of checking whether the key works + # (e.g. in our Zapier integration), hence it's exempt from org/team scoping + response = self._do_request(f"/api/users/@me/") + assert response.status_code == status.HTTP_200_OK, response.json() + class TestPersonalAPIKeysWithTeamScopeAPIAuthentication(PersonalAPIKeysBaseTest): def setUp(self): @@ -510,3 +516,9 @@ def test_denies_access_to_non_scoped_org_and_team(self): assert response.status_code == status.HTTP_403_FORBIDDEN, response.json() assert response.status_code == status.HTTP_403_FORBIDDEN, response.json() response = self._do_request(f"/api/projects/{self.other_team.id}") + + def test_allows_user_me_read_access(self): + # The /users/@me/ endpoint is not team-based, but it's useful as a way of checking whether the key works + # (e.g. in our Zapier integration), hence it's exempt from org/team scoping + response = self._do_request(f"/api/users/@me/") + assert response.status_code == status.HTTP_200_OK, response.json() diff --git a/posthog/permissions.py b/posthog/permissions.py index 72fd657a9ad4f..d7c6bd4cf81d9 100644 --- a/posthog/permissions.py +++ b/posthog/permissions.py @@ -354,6 +354,10 @@ def has_permission(self, request, view) -> bool: return True def check_team_and_org_permissions(self, request, view) -> None: + scope_object = self.get_scope_object(request, view) + if scope_object == "user": + return # The /api/users/@me/ endpoint is exempt from team and org scoping + scoped_organizations = request.successful_authenticator.personal_api_key.scoped_organizations scoped_teams = request.successful_authenticator.personal_api_key.scoped_teams @@ -361,16 +365,16 @@ def check_team_and_org_permissions(self, request, view) -> None: try: team = view.team if team.id not in scoped_teams: - raise PermissionDenied(f"API key does not have access to the requested project '{team.id}'") - except (ValueError, KeyError): - raise PermissionDenied(f"API key with scoped projects are only supported on project-based views.") + raise PermissionDenied(f"API key does not have access to the requested project: ID {team.id}.") + except (KeyError, AttributeError): + raise PermissionDenied(f"API keys with scoped projects are only supported on project-based endpoints.") if scoped_organizations: try: organization = get_organization_from_view(view) if str(organization.id) not in scoped_organizations: raise PermissionDenied( - f"API key does not have access to the requested organization '{organization.id}'" + f"API key does not have access to the requested organization: ID {organization.id}." ) except ValueError: # Indicates this is not an organization scoped view From 6f1d5c4c1d5fda6bc1be680b94f42255eb432779 Mon Sep 17 00:00:00 2001 From: Robbie Date: Mon, 24 Jun 2024 15:37:17 +0100 Subject: [PATCH 04/24] fix(web-analytics): Make channel type comparison case-insensitive (#23182) * Make channel type comparison case-insensitive * Add comment --- posthog/hogql/database/schema/channel_type.py | 12 ++++++++--- .../database/schema/test/test_channel_type.py | 20 +++++++++++++++++++ 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/posthog/hogql/database/schema/channel_type.py b/posthog/hogql/database/schema/channel_type.py index c45c71458d7d1..13c65c2045565 100644 --- a/posthog/hogql/database/schema/channel_type.py +++ b/posthog/hogql/database/schema/channel_type.py @@ -68,6 +68,12 @@ def wrap_with_null_if_empty(expr: ast.Expr) -> ast.Expr: args=[ast.Call(name="nullIf", args=[expr, ast.Constant(value="")]), ast.Constant(value="null")], ) + def wrap_with_lower(expr: ast.Expr) -> ast.Expr: + return ast.Call( + name="lower", + args=[expr], + ) + # This logic is referenced in our docs https://posthog.com/docs/data/channel-type, be sure to update both if you # update either. return parse_expr( @@ -131,9 +137,9 @@ def wrap_with_null_if_empty(expr: ast.Expr) -> ast.Expr: )""", start=None, placeholders={ - "campaign": wrap_with_null_if_empty(campaign), - "medium": wrap_with_null_if_empty(medium), - "source": wrap_with_null_if_empty(source), + "campaign": wrap_with_lower(wrap_with_null_if_empty(campaign)), + "medium": wrap_with_lower(wrap_with_null_if_empty(medium)), + "source": wrap_with_lower(wrap_with_null_if_empty(source)), "referring_domain": referring_domain, "gclid": wrap_with_null_if_empty(gclid), "gad_source": wrap_with_null_if_empty(gad_source), diff --git a/posthog/hogql/database/schema/test/test_channel_type.py b/posthog/hogql/database/schema/test/test_channel_type.py index 6f70dbd9620f4..712ed61404371 100644 --- a/posthog/hogql/database/schema/test/test_channel_type.py +++ b/posthog/hogql/database/schema/test/test_channel_type.py @@ -549,3 +549,23 @@ def test_duckduckgo_paid_click(self): # "https://l.facebook.com/", # ), # ) + + def test_zendesk_ticket_14945(self): + # see https://posthoghelp.zendesk.com/agent/tickets/14945 + + # In this ticket, a customer's paid social traffic was incorrect tagged as organic social, because we + # didn't recognise the word "Paid" with an uppercase 'P' as a paid source. Really, this should have + # been case-insensitive, and that is what the fix was. + self.assertEqual( + "Paid Social", + self._get_session_channel_type( + { + "utm_source": "Facebook", + "utm_medium": "Paid", + "utm_campaign": "Foo", + "referring_domain": "l.facebook.com", + "gclid": "", + "gad_source": "", + } + ), + ) From 077b2759fd40ff96e64a03ddfea1019bce694f8c Mon Sep 17 00:00:00 2001 From: Michael Matloka Date: Mon, 24 Jun 2024 16:38:42 +0200 Subject: [PATCH 05/24] chore(insights): Yeet the unbaked groups-on-events (#22764) * chore(insights): Yeet the unbaked groups-on-events * Update TestAutoProjectMiddleware * Update verifiedDomainsLogic.test.ts.snap * Update funnel_correlation.py * Update test_property.py * Update query snapshots * Update UI snapshots for `chromium` (2) * Update query snapshots * Update UI snapshots for `chromium` (2) * Update query snapshots * Update query snapshots * Update query snapshots --------- Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- .github/actions/run-backend-tests/action.yml | 1 - ee/clickhouse/models/test/test_property.py | 93 +- .../queries/funnels/funnel_correlation.py | 32 +- ee/clickhouse/queries/groups_join_query.py | 4 - frontend/src/lib/api.mock.ts | 1 - .../SystemStatus/systemStatusLogic.ts | 1 - .../verifiedDomainsLogic.test.ts.snap | 1 - frontend/src/scenes/teamActivityDescriber.tsx | 1 - frontend/src/types.ts | 1 - posthog/api/team.py | 11 +- .../test_properties_timeline.ambr | 137 +- posthog/api/test/test_properties_timeline.py | 1464 ++++++++--------- posthog/api/test/test_team.py | 4 - posthog/models/property/util.py | 24 +- posthog/models/team/team.py | 9 - posthog/queries/breakdown_props.py | 4 +- posthog/queries/funnels/base.py | 29 +- posthog/queries/trends/breakdown.py | 16 - posthog/settings/dynamic_settings.py | 6 - posthog/test/test_middleware.py | 2 +- 20 files changed, 818 insertions(+), 1023 deletions(-) diff --git a/.github/actions/run-backend-tests/action.yml b/.github/actions/run-backend-tests/action.yml index 39cba842f237b..d7c9689f55901 100644 --- a/.github/actions/run-backend-tests/action.yml +++ b/.github/actions/run-backend-tests/action.yml @@ -148,7 +148,6 @@ runs: if: ${{ inputs.segment == 'Core' }} env: PERSON_ON_EVENTS_V2_ENABLED: ${{ inputs.person-on-events }} - GROUPS_ON_EVENTS_ENABLED: ${{ inputs.person-on-events }} shell: bash run: | # async_migrations covered in ci-async-migrations.yml pytest ${{ diff --git a/ee/clickhouse/models/test/test_property.py b/ee/clickhouse/models/test/test_property.py index 6348697d84435..fd1791438ceeb 100644 --- a/ee/clickhouse/models/test/test_property.py +++ b/ee/clickhouse/models/test/test_property.py @@ -14,7 +14,6 @@ from posthog.models.filters import Filter from posthog.models.instance_setting import ( get_instance_setting, - override_instance_config, ) from posthog.models.organization import Organization from posthog.models.property import Property, TableWithProperties @@ -1037,38 +1036,6 @@ def test_get_property_string_expr(self): ) self.assertEqual(string_expr, ('"mat_pp_some_mat_prop2"', True)) - def test_get_property_string_expr_groups(self): - if not get_instance_setting("GROUPS_ON_EVENTS_ENABLED"): - return - - materialize("events", "some_mat_prop3", table_column="group2_properties") - - string_expr = get_property_string_expr( - "events", - "some_mat_prop3", - "x", - "properties", - table_alias="e", - materialised_table_column="group2_properties", - ) - self.assertEqual(string_expr, ('e."mat_gp2_some_mat_prop3"', True)) - - string_expr = get_property_string_expr( - "events", - "some_mat_prop3", - "'x'", - "gp_props_alias", - table_alias="e", - materialised_table_column="group1_properties", - ) - self.assertEqual( - string_expr, - ( - "replaceRegexpAll(JSONExtractRaw(e.gp_props_alias, 'x'), '^\"|\"$', '')", - False, - ), - ) - @pytest.mark.django_db def test_parse_prop_clauses_defaults(snapshot): @@ -1255,22 +1222,7 @@ def test_breakdown_query_expression( {"breakdown_param_1": "$browser"}, ), ('array("mat_pp_$browser") AS value', {"breakdown_param_1": "$browser"}), - ), - ( - ["$browser", "$browser_version"], - "events", - "prop", - "properties", - "group2_properties", - ( - "array(replaceRegexpAll(JSONExtractRaw(properties, %(breakdown_param_1)s), '^\"|\"$', ''),replaceRegexpAll(JSONExtractRaw(properties, %(breakdown_param_2)s), '^\"|\"$', '')) AS prop", - {"breakdown_param_1": "$browser", "breakdown_param_2": "$browser_version"}, - ), - ( - """array("mat_gp2_$browser",replaceRegexpAll(JSONExtractRaw(properties, %(breakdown_param_2)s), '^\"|\"$', '')) AS prop""", - {"breakdown_param_1": "$browser", "breakdown_param_2": "$browser_version"}, - ), - ), + ) ] @@ -1289,31 +1241,30 @@ def test_breakdown_query_expression_materialised( expected_with: str, expected_without: str, ): - with override_instance_config("GROUPS_ON_EVENTS_ENABLED", True): - from posthog.models.team import util + from posthog.models.team import util - util.can_enable_actor_on_events = True + util.can_enable_actor_on_events = True - materialize(table, breakdown[0], table_column="properties") - actual = get_single_or_multi_property_string_expr( - breakdown, - table, - query_alias, - column, - materialised_table_column=materialise_column, - ) - assert actual == expected_with - - materialize(table, breakdown[0], table_column=materialise_column) # type: ignore - actual = get_single_or_multi_property_string_expr( - breakdown, - table, - query_alias, - column, - materialised_table_column=materialise_column, - ) + materialize(table, breakdown[0], table_column="properties") + actual = get_single_or_multi_property_string_expr( + breakdown, + table, + query_alias, + column, + materialised_table_column=materialise_column, + ) + assert actual == expected_with + + materialize(table, breakdown[0], table_column=materialise_column) # type: ignore + actual = get_single_or_multi_property_string_expr( + breakdown, + table, + query_alias, + column, + materialised_table_column=materialise_column, + ) - assert actual == expected_without + assert actual == expected_without @pytest.fixture diff --git a/ee/clickhouse/queries/funnels/funnel_correlation.py b/ee/clickhouse/queries/funnels/funnel_correlation.py index 9bf35aaa67b8c..d23c459c7ef8d 100644 --- a/ee/clickhouse/queries/funnels/funnel_correlation.py +++ b/ee/clickhouse/queries/funnels/funnel_correlation.py @@ -24,7 +24,6 @@ from posthog.models.filters import Filter from posthog.models.property.util import get_property_string_expr from posthog.models.team import Team -from posthog.models.team.team import groups_on_events_querying_enabled from posthog.queries.funnels.utils import get_funnel_order_actor_class from posthog.queries.insight import insight_sync_execute from posthog.queries.person_distinct_id_query import get_team_distinct_ids_query @@ -161,23 +160,7 @@ def properties_to_include(self) -> list[str]: for property_name in cast(list, self._filter.correlation_property_names): if self._filter.aggregation_group_type_index is not None: - if not groups_on_events_querying_enabled(): - continue - - if "$all" == property_name: - return [f"group{self._filter.aggregation_group_type_index}_properties"] - - possible_mat_col = mat_event_cols.get( - ( - property_name, - f"group{self._filter.aggregation_group_type_index}_properties", - ) - ) - if possible_mat_col is not None: - props_to_include.append(possible_mat_col) - else: - props_to_include.append(f"group{self._filter.aggregation_group_type_index}_properties") - + continue # We don't support group properties on events at this time else: if "$all" == property_name: return [f"person_properties"] @@ -499,12 +482,6 @@ def _get_events_join_query(self) -> str: def _get_aggregation_join_query(self): if self._filter.aggregation_group_type_index is None: - if ( - alias_poe_mode_for_legacy(self._team.person_on_events_mode) != PersonsOnEventsMode.DISABLED - and groups_on_events_querying_enabled() - ): - return "", {} - person_query, person_query_params = PersonQuery( self._filter, self._team.pk, @@ -524,12 +501,9 @@ def _get_aggregation_join_query(self): def _get_properties_prop_clause(self): if ( alias_poe_mode_for_legacy(self._team.person_on_events_mode) != PersonsOnEventsMode.DISABLED - and groups_on_events_querying_enabled() + and self._filter.aggregation_group_type_index is None ): - group_properties_field = f"group{self._filter.aggregation_group_type_index}_properties" - aggregation_properties_alias = ( - "person_properties" if self._filter.aggregation_group_type_index is None else group_properties_field - ) + aggregation_properties_alias = "person_properties" else: group_properties_field = f"groups_{self._filter.aggregation_group_type_index}.group_properties_{self._filter.aggregation_group_type_index}" aggregation_properties_alias = ( diff --git a/ee/clickhouse/queries/groups_join_query.py b/ee/clickhouse/queries/groups_join_query.py index 70334d0f2df1d..5a48bc0d0efa2 100644 --- a/ee/clickhouse/queries/groups_join_query.py +++ b/ee/clickhouse/queries/groups_join_query.py @@ -7,7 +7,6 @@ from posthog.models.filters.stickiness_filter import StickinessFilter from posthog.models.filters.utils import GroupTypeIndex from posthog.models.property.util import parse_prop_grouped_clauses -from posthog.models.team.team import groups_on_events_querying_enabled from posthog.queries.util import PersonPropertiesMode, alias_poe_mode_for_legacy from posthog.schema import PersonsOnEventsMode @@ -38,9 +37,6 @@ def __init__( def get_join_query(self) -> tuple[str, dict]: join_queries, params = [], {} - if self._person_on_events_mode != PersonsOnEventsMode.DISABLED and groups_on_events_querying_enabled(): - return "", {} - for group_type_index in self._column_optimizer.group_types_to_query: var = f"group_index_{group_type_index}" group_join_key = self._join_key or f'"$group_{group_type_index}"' diff --git a/frontend/src/lib/api.mock.ts b/frontend/src/lib/api.mock.ts index 676f55a6fb866..4021fb67b004c 100644 --- a/frontend/src/lib/api.mock.ts +++ b/frontend/src/lib/api.mock.ts @@ -86,7 +86,6 @@ export const MOCK_DEFAULT_TEAM: TeamType = { primary_dashboard: 1, live_events_columns: null, person_on_events_querying_enabled: true, - groups_on_events_querying_enabled: true, live_events_token: '123', } diff --git a/frontend/src/scenes/instance/SystemStatus/systemStatusLogic.ts b/frontend/src/scenes/instance/SystemStatus/systemStatusLogic.ts index 48384258b378c..5ee7e0b6e3c97 100644 --- a/frontend/src/scenes/instance/SystemStatus/systemStatusLogic.ts +++ b/frontend/src/scenes/instance/SystemStatus/systemStatusLogic.ts @@ -39,7 +39,6 @@ const EDITABLE_INSTANCE_SETTINGS = [ 'EMAIL_REPLY_TO', 'AGGREGATE_BY_DISTINCT_IDS_TEAMS', 'PERSON_ON_EVENTS_ENABLED', - 'GROUPS_ON_EVENTS_ENABLED', 'STRICT_CACHING_TEAMS', 'SLACK_APP_CLIENT_ID', 'SLACK_APP_CLIENT_SECRET', diff --git a/frontend/src/scenes/settings/organization/VerifiedDomains/__snapshots__/verifiedDomainsLogic.test.ts.snap b/frontend/src/scenes/settings/organization/VerifiedDomains/__snapshots__/verifiedDomainsLogic.test.ts.snap index 9ae32414a859c..8f407e7d5330e 100644 --- a/frontend/src/scenes/settings/organization/VerifiedDomains/__snapshots__/verifiedDomainsLogic.test.ts.snap +++ b/frontend/src/scenes/settings/organization/VerifiedDomains/__snapshots__/verifiedDomainsLogic.test.ts.snap @@ -61,7 +61,6 @@ exports[`verifiedDomainsLogic values has proper defaults 1`] = ` "data-attr", ], "effective_membership_level": 8, - "groups_on_events_querying_enabled": true, "has_group_types": true, "heatmaps_opt_in": true, "id": 997, diff --git a/frontend/src/scenes/teamActivityDescriber.tsx b/frontend/src/scenes/teamActivityDescriber.tsx index 992c3d3708dea..708651fb9a6ab 100644 --- a/frontend/src/scenes/teamActivityDescriber.tsx +++ b/frontend/src/scenes/teamActivityDescriber.tsx @@ -222,7 +222,6 @@ const teamActionsMapping: Record< correlation_config: () => null, data_attributes: () => null, effective_membership_level: () => null, - groups_on_events_querying_enabled: () => null, has_group_types: () => null, ingested_event: () => null, is_demo: () => null, diff --git a/frontend/src/types.ts b/frontend/src/types.ts index 4ce45fa13fc91..9b14ea8d07f3a 100644 --- a/frontend/src/types.ts +++ b/frontend/src/types.ts @@ -507,7 +507,6 @@ export interface TeamType extends TeamBasicType { */ correlation_config: CorrelationConfigType | null person_on_events_querying_enabled: boolean - groups_on_events_querying_enabled: boolean extra_settings?: Record modifiers?: HogQLQueryModifiers default_modifiers?: HogQLQueryModifiers diff --git a/posthog/api/team.py b/posthog/api/team.py index 0b2d7b850013e..667dbfa74243d 100644 --- a/posthog/api/team.py +++ b/posthog/api/team.py @@ -30,10 +30,7 @@ from posthog.models.organization import OrganizationMembership from posthog.models.personal_api_key import APIScopeObjectOrNotSupported from posthog.models.signals import mute_selected_signals -from posthog.models.team.team import ( - groups_on_events_querying_enabled, - set_team_in_cache, -) +from posthog.models.team.team import set_team_in_cache from posthog.models.team.util import delete_batch_exports, delete_bulky_postgres_data from posthog.models.utils import UUIDT, generate_random_token_project from posthog.permissions import ( @@ -117,7 +114,6 @@ class Meta: class TeamSerializer(serializers.ModelSerializer, UserPermissionsSerializerMixin): effective_membership_level = serializers.SerializerMethodField() has_group_types = serializers.SerializerMethodField() - groups_on_events_querying_enabled = serializers.SerializerMethodField() live_events_token = serializers.SerializerMethodField() class Meta: @@ -162,7 +158,6 @@ class Meta: "live_events_columns", "recording_domains", "person_on_events_querying_enabled", - "groups_on_events_querying_enabled", "inject_web_apps", "extra_settings", "modifiers", @@ -184,7 +179,6 @@ class Meta: "has_group_types", "default_modifiers", "person_on_events_querying_enabled", - "groups_on_events_querying_enabled", "live_events_token", ) @@ -194,9 +188,6 @@ def get_effective_membership_level(self, team: Team) -> Optional[OrganizationMem def get_has_group_types(self, team: Team) -> bool: return GroupTypeMapping.objects.filter(team=team).exists() - def get_groups_on_events_querying_enabled(self, team: Team) -> bool: - return groups_on_events_querying_enabled() - def get_live_events_token(self, team: Team) -> Optional[str]: return encode_jwt( {"team_id": team.id, "api_token": team.api_token}, diff --git a/posthog/api/test/__snapshots__/test_properties_timeline.ambr b/posthog/api/test/__snapshots__/test_properties_timeline.ambr index 496592e781895..ac8cf04120ea6 100644 --- a/posthog/api/test/__snapshots__/test_properties_timeline.ambr +++ b/posthog/api/test/__snapshots__/test_properties_timeline.ambr @@ -1,5 +1,6 @@ +# serializer version: 1 # name: TestPersonPropertiesTimeline.test_timeline_for_existing_actor_with_six_events_but_only_two_relevant_changes - ' + ''' /* user_id:0 request:_snapshot_ */ SELECT timestamp, properties, end_event_number - start_event_number AS relevant_event_count @@ -20,7 +21,7 @@ e."person_properties" AS "person_properties" FROM events e WHERE team_id = 2 - AND person_id = '12345678-0000-0000-0000-000000000001' + AND person_id = '00000000-0000-0000-0000-000000000000' AND event = '$pageview' AND toTimeZone(timestamp, 'UTC') >= toDateTime(toStartOfDay(toDateTime('2020-01-01 00:00:00', 'UTC')), 'UTC') AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-05 23:59:59', 'UTC') @@ -32,10 +33,10 @@ OR relevant_property_values != previous_relevant_property_values OR timestamp IS NULL ) WHERE timestamp IS NOT NULL - ' ---- + ''' +# --- # name: TestPersonPropertiesTimeline.test_timeline_for_existing_actor_with_six_events_but_only_two_relevant_changes_without_events - ' + ''' /* user_id:0 request:_snapshot_ */ SELECT timestamp, properties, end_event_number - start_event_number AS relevant_event_count @@ -56,7 +57,7 @@ e."person_properties" AS "person_properties" FROM events e WHERE team_id = 2 - AND person_id = '12345678-0000-0000-0000-000000000001' + AND person_id = '00000000-0000-0000-0000-000000000000' AND toTimeZone(timestamp, 'UTC') >= toDateTime(toStartOfDay(toDateTime('2020-01-01 00:00:00', 'UTC')), 'UTC') AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-05 23:59:59', 'UTC') ORDER BY timestamp ASC) @@ -67,10 +68,10 @@ OR relevant_property_values != previous_relevant_property_values OR timestamp IS NULL ) WHERE timestamp IS NOT NULL - ' ---- + ''' +# --- # name: TestPersonPropertiesTimeline.test_timeline_for_existing_actor_with_six_events_but_only_two_relevant_changes_without_filters - ' + ''' /* user_id:0 request:_snapshot_ */ SELECT timestamp, properties, end_event_number - start_event_number AS relevant_event_count @@ -91,7 +92,7 @@ e."person_properties" AS "person_properties" FROM events e WHERE team_id = 2 - AND person_id = '12345678-0000-0000-0000-000000000001' + AND person_id = '00000000-0000-0000-0000-000000000000' AND event = '$pageview' AND toTimeZone(timestamp, 'UTC') >= toDateTime(toStartOfDay(toDateTime('2020-01-01 00:00:00', 'UTC')), 'UTC') AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-05 23:59:59', 'UTC') @@ -103,10 +104,10 @@ OR relevant_property_values != previous_relevant_property_values OR timestamp IS NULL ) WHERE timestamp IS NOT NULL - ' ---- + ''' +# --- # name: TestPersonPropertiesTimeline.test_timeline_for_existing_actor_with_three_events_and_return_to_previous_value - ' + ''' /* user_id:0 request:_snapshot_ */ SELECT timestamp, properties, end_event_number - start_event_number AS relevant_event_count @@ -127,7 +128,7 @@ e."person_properties" AS "person_properties" FROM events e WHERE team_id = 2 - AND person_id = '12345678-0000-0000-0000-000000000001' + AND person_id = '00000000-0000-0000-0000-000000000000' AND event = '$pageview' AND toTimeZone(timestamp, 'UTC') >= toDateTime(toStartOfDay(toDateTime('2020-01-01 00:00:00', 'UTC')), 'UTC') AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-05 23:59:59', 'UTC') @@ -139,10 +140,10 @@ OR relevant_property_values != previous_relevant_property_values OR timestamp IS NULL ) WHERE timestamp IS NOT NULL - ' ---- + ''' +# --- # name: TestPersonPropertiesTimeline.test_timeline_for_existing_person_with_three_events_and_return_to_previous_value_at_single_day_point - ' + ''' /* user_id:0 request:_snapshot_ */ SELECT timestamp, properties, end_event_number - start_event_number AS relevant_event_count @@ -163,7 +164,7 @@ e."person_properties" AS "person_properties" FROM events e WHERE team_id = 2 - AND person_id = '12345678-0000-0000-0000-000000000001' + AND person_id = '00000000-0000-0000-0000-000000000000' AND event = '$pageview' AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-02 00:00:00', 'UTC') AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-02 23:59:59', 'UTC') @@ -175,10 +176,10 @@ OR relevant_property_values != previous_relevant_property_values OR timestamp IS NULL ) WHERE timestamp IS NOT NULL - ' ---- + ''' +# --- # name: TestPersonPropertiesTimeline.test_timeline_for_existing_person_with_three_events_and_return_to_previous_value_at_single_hour_point - ' + ''' /* user_id:0 request:_snapshot_ */ SELECT timestamp, properties, end_event_number - start_event_number AS relevant_event_count @@ -199,7 +200,7 @@ e."person_properties" AS "person_properties" FROM events e WHERE team_id = 2 - AND person_id = '12345678-0000-0000-0000-000000000001' + AND person_id = '00000000-0000-0000-0000-000000000000' AND event = '$pageview' AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-02 00:00:00', 'UTC') AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-02 01:00:00', 'UTC') @@ -211,10 +212,10 @@ OR relevant_property_values != previous_relevant_property_values OR timestamp IS NULL ) WHERE timestamp IS NOT NULL - ' ---- + ''' +# --- # name: TestPersonPropertiesTimeline.test_timeline_for_existing_person_with_three_events_and_return_to_previous_value_at_single_month_point - ' + ''' /* user_id:0 request:_snapshot_ */ SELECT timestamp, properties, end_event_number - start_event_number AS relevant_event_count @@ -235,7 +236,7 @@ e."person_properties" AS "person_properties" FROM events e WHERE team_id = 2 - AND person_id = '12345678-0000-0000-0000-000000000001' + AND person_id = '00000000-0000-0000-0000-000000000000' AND event = '$pageview' AND toTimeZone(timestamp, 'UTC') >= toDateTime(toStartOfMonth(toDateTime('2020-01-01 00:00:00', 'UTC')), 'UTC') AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-31 23:59:59', 'UTC') @@ -247,10 +248,10 @@ OR relevant_property_values != previous_relevant_property_values OR timestamp IS NULL ) WHERE timestamp IS NOT NULL - ' ---- + ''' +# --- # name: TestPersonPropertiesTimeline.test_timeline_for_existing_person_with_three_events_and_return_to_previous_value_using_relative_date_from - ' + ''' /* user_id:0 request:_snapshot_ */ SELECT timestamp, properties, end_event_number - start_event_number AS relevant_event_count @@ -271,7 +272,7 @@ e."person_properties" AS "person_properties" FROM events e WHERE team_id = 2 - AND person_id = '12345678-0000-0000-0000-000000000001' + AND person_id = '00000000-0000-0000-0000-000000000000' AND event = '$pageview' AND toTimeZone(timestamp, 'UTC') >= toDateTime(toStartOfDay(toDateTime('2020-01-02 00:00:00', 'UTC')), 'UTC') AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-09 23:59:59', 'UTC') @@ -283,10 +284,10 @@ OR relevant_property_values != previous_relevant_property_values OR timestamp IS NULL ) WHERE timestamp IS NOT NULL - ' ---- + ''' +# --- # name: TestPersonPropertiesTimeline.test_timeline_for_new_actor_with_one_event_before_range - ' + ''' /* user_id:0 request:_snapshot_ */ SELECT timestamp, properties, end_event_number - start_event_number AS relevant_event_count @@ -307,7 +308,7 @@ e."person_properties" AS "person_properties" FROM events e WHERE team_id = 2 - AND person_id = '12345678-0000-0000-0000-000000000001' + AND person_id = '00000000-0000-0000-0000-000000000000' AND event = '$pageview' AND toTimeZone(timestamp, 'UTC') >= toDateTime(toStartOfDay(toDateTime('2020-01-01 00:00:00', 'UTC')), 'UTC') AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-05 23:59:59', 'UTC') @@ -319,10 +320,10 @@ OR relevant_property_values != previous_relevant_property_values OR timestamp IS NULL ) WHERE timestamp IS NOT NULL - ' ---- + ''' +# --- # name: TestPersonPropertiesTimeline.test_timeline_for_new_actor_with_one_event_before_range_materialized - ' + ''' /* user_id:0 request:_snapshot_ */ SELECT timestamp, properties, end_event_number - start_event_number AS relevant_event_count @@ -344,7 +345,7 @@ e."person_properties" AS "person_properties" FROM events e WHERE team_id = 2 - AND person_id = '12345678-0000-0000-0000-000000000001' + AND person_id = '00000000-0000-0000-0000-000000000000' AND event = '$pageview' AND toTimeZone(timestamp, 'UTC') >= toDateTime(toStartOfDay(toDateTime('2020-01-01 00:00:00', 'UTC')), 'UTC') AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-05 23:59:59', 'UTC') @@ -357,10 +358,10 @@ OR relevant_property_values != previous_relevant_property_values OR timestamp IS NULL ) WHERE timestamp IS NOT NULL - ' ---- + ''' +# --- # name: TestPersonPropertiesTimeline.test_timeline_for_new_actor_with_one_event_in_range - ' + ''' /* user_id:0 request:_snapshot_ */ SELECT timestamp, properties, end_event_number - start_event_number AS relevant_event_count @@ -381,7 +382,7 @@ e."person_properties" AS "person_properties" FROM events e WHERE team_id = 2 - AND person_id = '12345678-0000-0000-0000-000000000001' + AND person_id = '00000000-0000-0000-0000-000000000000' AND event = '$pageview' AND toTimeZone(timestamp, 'UTC') >= toDateTime(toStartOfDay(toDateTime('2020-01-01 00:00:00', 'UTC')), 'UTC') AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-05 23:59:59', 'UTC') @@ -393,10 +394,10 @@ OR relevant_property_values != previous_relevant_property_values OR timestamp IS NULL ) WHERE timestamp IS NOT NULL - ' ---- + ''' +# --- # name: TestPersonPropertiesTimeline.test_timeline_for_new_actor_with_one_event_in_range_materialized - ' + ''' /* user_id:0 request:_snapshot_ */ SELECT timestamp, properties, end_event_number - start_event_number AS relevant_event_count @@ -418,7 +419,7 @@ e."person_properties" AS "person_properties" FROM events e WHERE team_id = 2 - AND person_id = '12345678-0000-0000-0000-000000000001' + AND person_id = '00000000-0000-0000-0000-000000000000' AND event = '$pageview' AND toTimeZone(timestamp, 'UTC') >= toDateTime(toStartOfDay(toDateTime('2020-01-01 00:00:00', 'UTC')), 'UTC') AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-05 23:59:59', 'UTC') @@ -431,10 +432,10 @@ OR relevant_property_values != previous_relevant_property_values OR timestamp IS NULL ) WHERE timestamp IS NOT NULL - ' ---- + ''' +# --- # name: TestPersonPropertiesTimeline.test_timeline_with_two_events_in_range_using_breakdown - ' + ''' /* user_id:0 request:_snapshot_ */ SELECT timestamp, properties, end_event_number - start_event_number AS relevant_event_count @@ -445,7 +446,7 @@ ORDER BY timestamp ASC ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) AS end_event_number FROM (SELECT timestamp, person_properties AS properties, - array(replaceRegexpAll(JSONExtractRaw(person_properties, 'foo'), '^"|"$', ''), replaceRegexpAll(JSONExtractRaw(person_properties, 'bar'), '^"|"$', '')) AS relevant_property_values, + array(replaceRegexpAll(JSONExtractRaw(person_properties, 'bar'), '^"|"$', ''), replaceRegexpAll(JSONExtractRaw(person_properties, 'foo'), '^"|"$', '')) AS relevant_property_values, lagInFrame(relevant_property_values) OVER ( ORDER BY timestamp ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS previous_relevant_property_values, row_number() OVER ( @@ -455,7 +456,7 @@ e."person_properties" AS "person_properties" FROM events e WHERE team_id = 2 - AND person_id = '12345678-0000-0000-0000-000000000001' + AND person_id = '00000000-0000-0000-0000-000000000000' AND event = '$pageview' AND toTimeZone(timestamp, 'UTC') >= toDateTime(toStartOfDay(toDateTime('2020-01-01 00:00:00', 'UTC')), 'UTC') AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-05 23:59:59', 'UTC') @@ -467,10 +468,10 @@ OR relevant_property_values != previous_relevant_property_values OR timestamp IS NULL ) WHERE timestamp IS NOT NULL - ' ---- + ''' +# --- # name: TestPersonPropertiesTimeline.test_timeline_with_two_events_in_range_using_breakdown_materialized - ' + ''' /* user_id:0 request:_snapshot_ */ SELECT timestamp, properties, end_event_number - start_event_number AS relevant_event_count @@ -481,7 +482,7 @@ ORDER BY timestamp ASC ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) AS end_event_number FROM (SELECT timestamp, person_properties AS properties, - array("mat_pp_foo", "mat_pp_bar") AS relevant_property_values, + array("mat_pp_bar", "mat_pp_foo") AS relevant_property_values, lagInFrame(relevant_property_values) OVER ( ORDER BY timestamp ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS previous_relevant_property_values, row_number() OVER ( @@ -493,7 +494,7 @@ e."person_properties" AS "person_properties" FROM events e WHERE team_id = 2 - AND person_id = '12345678-0000-0000-0000-000000000001' + AND person_id = '00000000-0000-0000-0000-000000000000' AND event = '$pageview' AND toTimeZone(timestamp, 'UTC') >= toDateTime(toStartOfDay(toDateTime('2020-01-01 00:00:00', 'UTC')), 'UTC') AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-05 23:59:59', 'UTC') @@ -507,10 +508,10 @@ OR relevant_property_values != previous_relevant_property_values OR timestamp IS NULL ) WHERE timestamp IS NOT NULL - ' ---- + ''' +# --- # name: TestPersonPropertiesTimeline.test_timeline_with_two_events_in_range_using_filter_on_series - ' + ''' /* user_id:0 request:_snapshot_ */ SELECT timestamp, properties, end_event_number - start_event_number AS relevant_event_count @@ -521,7 +522,7 @@ ORDER BY timestamp ASC ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) AS end_event_number FROM (SELECT timestamp, person_properties AS properties, - array(replaceRegexpAll(JSONExtractRaw(person_properties, 'foo'), '^"|"$', ''), replaceRegexpAll(JSONExtractRaw(person_properties, 'bar'), '^"|"$', '')) AS relevant_property_values, + array(replaceRegexpAll(JSONExtractRaw(person_properties, 'bar'), '^"|"$', ''), replaceRegexpAll(JSONExtractRaw(person_properties, 'foo'), '^"|"$', '')) AS relevant_property_values, lagInFrame(relevant_property_values) OVER ( ORDER BY timestamp ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS previous_relevant_property_values, row_number() OVER ( @@ -531,7 +532,7 @@ e."person_properties" AS "person_properties" FROM events e WHERE team_id = 2 - AND person_id = '12345678-0000-0000-0000-000000000001' + AND person_id = '00000000-0000-0000-0000-000000000000' AND event = '$pageview' AND toTimeZone(timestamp, 'UTC') >= toDateTime(toStartOfDay(toDateTime('2020-01-01 00:00:00', 'UTC')), 'UTC') AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-05 23:59:59', 'UTC') @@ -543,10 +544,10 @@ OR relevant_property_values != previous_relevant_property_values OR timestamp IS NULL ) WHERE timestamp IS NOT NULL - ' ---- + ''' +# --- # name: TestPersonPropertiesTimeline.test_timeline_with_two_events_in_range_using_filter_on_series_materialized - ' + ''' /* user_id:0 request:_snapshot_ */ SELECT timestamp, properties, end_event_number - start_event_number AS relevant_event_count @@ -557,7 +558,7 @@ ORDER BY timestamp ASC ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) AS end_event_number FROM (SELECT timestamp, person_properties AS properties, - array("mat_pp_foo", "mat_pp_bar") AS relevant_property_values, + array("mat_pp_bar", "mat_pp_foo") AS relevant_property_values, lagInFrame(relevant_property_values) OVER ( ORDER BY timestamp ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS previous_relevant_property_values, row_number() OVER ( @@ -569,7 +570,7 @@ e."person_properties" AS "person_properties" FROM events e WHERE team_id = 2 - AND person_id = '12345678-0000-0000-0000-000000000001' + AND person_id = '00000000-0000-0000-0000-000000000000' AND event = '$pageview' AND toTimeZone(timestamp, 'UTC') >= toDateTime(toStartOfDay(toDateTime('2020-01-01 00:00:00', 'UTC')), 'UTC') AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-05 23:59:59', 'UTC') @@ -583,5 +584,5 @@ OR relevant_property_values != previous_relevant_property_values OR timestamp IS NULL ) WHERE timestamp IS NOT NULL - ' ---- + ''' +# --- diff --git a/posthog/api/test/test_properties_timeline.py b/posthog/api/test/test_properties_timeline.py index d8b8a11e9099a..b4eb9a080f17d 100644 --- a/posthog/api/test/test_properties_timeline.py +++ b/posthog/api/test/test_properties_timeline.py @@ -1,17 +1,15 @@ import json import random import uuid -from typing import Any, Literal, Optional +from typing import Optional from freezegun.api import freeze_time from rest_framework import status from posthog.models.filters.mixins.base import BreakdownType -from posthog.models.group.util import create_group from posthog.queries.properties_timeline.properties_timeline import ( PropertiesTimelineResult, ) -from posthog.settings.dynamic_settings import CONSTANCE_CONFIG from posthog.test.base import ( APIBaseTest, ClickhouseTestMixin, @@ -22,612 +20,520 @@ snapshot_clickhouse_queries, ) - -def properties_timeline_test_factory(actor_type: Literal["person", "group"]): - materialized_column_kwargs = ( - {"person_properties": ["foo", "bar"]} if actor_type == "person" else {"group_properties": ["foo", "bar"]} - ) - main_actor_id = uuid.UUID("12345678-0000-0000-0000-000000000001") if actor_type == "person" else "test" - - class TestPropertiesTimeline(ClickhouseTestMixin, APIBaseTest): - maxDiff = None - - def _create_actor(self, properties: dict) -> str: - """Create actor of relevant type and return its UUID (for persons) or key (for groups).""" - if actor_type == "person": - person = _create_person( - team=self.team, - distinct_ids=["abcd"], - uuid=main_actor_id, - properties=properties, - ) - return str(person.uuid) - else: - group = create_group( - team_id=self.team.pk, - group_type_index=0, - group_key=str(main_actor_id), - properties=properties, - ) - return group.group_key - - def _create_event(self, event: str, timestamp: str, actor_properties: dict): - create_event_kwargs: dict[str, Any] = {} - if actor_type == "person": - create_event_kwargs["person_id"] = main_actor_id - create_event_kwargs["person_properties"] = actor_properties - else: - create_event_kwargs["properties"] = {"$group_0": main_actor_id} - create_event_kwargs["group_0_properties"] = actor_properties - - _create_event( - team=self.team, - event=event, - timestamp=timestamp, - distinct_id=str(random.randint(1, 1000)), - **create_event_kwargs, - ) - - def _get_timeline_result( - self, - *, - events: Optional[list] = None, - actions: Optional[list] = None, - properties: Optional[list] = None, - breakdown: Optional[str] = None, - breakdown_type: Optional[BreakdownType] = None, - date_from: Optional[str], - date_to: Optional[str], - display: str = "ActionsTable", - interval: Optional[str] = None, - expected_status: int = status.HTTP_200_OK, - ) -> PropertiesTimelineResult: - url = ( - f"/api/person/{main_actor_id}/properties_timeline" - f"?events={json.dumps(events or [])}&actions={json.dumps(actions or [])}" - f"&properties={json.dumps(properties or [])}&display={display}" - f"&date_from={date_from or ''}&date_to={date_to or ''}&interval={interval or ''}" - f"&breakdown={breakdown or ''}&breakdown_type={(breakdown_type or actor_type) if breakdown else ''}" - ) - properties_timeline = self.client.get(url) - self.assertEqual(properties_timeline.status_code, expected_status) - return properties_timeline.json() - - @also_test_with_materialized_columns(**materialized_column_kwargs) - @snapshot_clickhouse_queries - def test_timeline_for_new_actor_with_one_event_in_range(self): - self._create_actor({"foo": "abc", "bar": 123}) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 123}, - timestamp="2020-01-01T00:00:00Z", # Exactly the same as date_from - ) - flush_persons_and_events() - - timeline = self._get_timeline_result( - events=[ - { - "id": "$pageview", - } - ], - properties=[{"key": "bar", "value": "xyz", "type": "person"}], - date_from="2020-01-01", - date_to="2020-01-05", - ) - - self.assertEqual( - timeline, +MATERIALIZED_COLUMN_KWARGS = {"person_properties": ["foo", "bar"]} +TEST_PERSON_ID = uuid.UUID("12345678-0000-0000-0000-000000000001") + + +class TestPersonPropertiesTimeline(ClickhouseTestMixin, APIBaseTest): + maxDiff = None + + def _create_person(self, properties: dict) -> str: + """Create person and return its UUID.""" + person = _create_person( + team=self.team, + distinct_ids=["abcd"], + uuid=TEST_PERSON_ID, + properties=properties, + ) + return str(person.uuid) + + def _create_event(self, event: str, timestamp: str, actor_properties: dict): + _create_event( + team=self.team, + event=event, + timestamp=timestamp, + distinct_id=str(random.randint(1, 1000)), + person_id=TEST_PERSON_ID, + person_properties=actor_properties, + ) + + def _get_timeline_result( + self, + *, + events: Optional[list] = None, + actions: Optional[list] = None, + properties: Optional[list] = None, + breakdown: Optional[str] = None, + breakdown_type: Optional[BreakdownType] = None, + date_from: Optional[str], + date_to: Optional[str], + display: str = "ActionsTable", + interval: Optional[str] = None, + expected_status: int = status.HTTP_200_OK, + ) -> PropertiesTimelineResult: + url = ( + f"/api/person/{TEST_PERSON_ID}/properties_timeline" + f"?events={json.dumps(events or [])}&actions={json.dumps(actions or [])}" + f"&properties={json.dumps(properties or [])}&display={display}" + f"&date_from={date_from or ''}&date_to={date_to or ''}&interval={interval or ''}" + f"&breakdown={breakdown or ''}&breakdown_type={(breakdown_type or 'person') if breakdown else ''}" + ) + properties_timeline = self.client.get(url) + self.assertEqual(properties_timeline.status_code, expected_status) + return properties_timeline.json() + + @also_test_with_materialized_columns(**MATERIALIZED_COLUMN_KWARGS) + @snapshot_clickhouse_queries + def test_timeline_for_new_actor_with_one_event_in_range(self): + self._create_person({"foo": "abc", "bar": 123}) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 123}, + timestamp="2020-01-01T00:00:00Z", # Exactly the same as date_from + ) + flush_persons_and_events() + + timeline = self._get_timeline_result( + events=[ { - "points": [ - { - "properties": {"foo": "abc", "bar": 123}, - "relevant_event_count": 1, - "timestamp": "2020-01-01T00:00:00Z", - } - ], - "crucial_property_keys": ["bar"], - "effective_date_from": "2020-01-01T00:00:00+00:00", - "effective_date_to": "2020-01-05T23:59:59.999999+00:00", - }, - ) - - @also_test_with_materialized_columns(**materialized_column_kwargs) - @snapshot_clickhouse_queries - def test_timeline_for_new_actor_with_one_event_before_range(self): - self._create_actor({"foo": "abc", "bar": 123}) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 123}, - timestamp="2019-12-27T00:00:00Z", # Before date_from - ) - flush_persons_and_events() - - timeline = self._get_timeline_result( - events=[ + "id": "$pageview", + } + ], + properties=[{"key": "bar", "value": "xyz", "type": "person"}], + date_from="2020-01-01", + date_to="2020-01-05", + ) + + self.assertEqual( + timeline, + { + "points": [ { - "id": "$pageview", + "properties": {"foo": "abc", "bar": 123}, + "relevant_event_count": 1, + "timestamp": "2020-01-01T00:00:00Z", } ], - properties=[{"key": "bar", "value": "xyz", "type": "person"}], - date_from="2020-01-01", - date_to="2020-01-05", - ) - - self.assertEqual( - timeline, + "crucial_property_keys": ["bar"], + "effective_date_from": "2020-01-01T00:00:00+00:00", + "effective_date_to": "2020-01-05T23:59:59.999999+00:00", + }, + ) + + @also_test_with_materialized_columns(**MATERIALIZED_COLUMN_KWARGS) + @snapshot_clickhouse_queries + def test_timeline_for_new_actor_with_one_event_before_range(self): + self._create_person({"foo": "abc", "bar": 123}) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 123}, + timestamp="2019-12-27T00:00:00Z", # Before date_from + ) + flush_persons_and_events() + + timeline = self._get_timeline_result( + events=[ { - "points": [], # No relevant events in range - "crucial_property_keys": ["bar"], - "effective_date_from": "2020-01-01T00:00:00+00:00", - "effective_date_to": "2020-01-05T23:59:59.999999+00:00", - }, - ) - - @also_test_with_materialized_columns(**materialized_column_kwargs) - @snapshot_clickhouse_queries - def test_timeline_with_two_events_in_range_using_filter_on_series(self): - self._create_actor({"foo": "abc", "bar": 123}) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 123}, - timestamp="2020-01-01T00:00:00Z", # Exactly the same as date_from - ) - self._create_event( - event="$pageview", - actor_properties={"foo": "klm", "bar": 123}, - timestamp="2020-01-01T21:37:00Z", - ) - flush_persons_and_events() - - timeline = self._get_timeline_result( - events=[ - { - "id": "$pageview", - "properties": [ - { - "key": "foo", - "type": "person", - "value": ["whatever"], - "operator": "exact", - }, - { - "key": "fin", - "type": "event", - "value": ["anything"], - "operator": "exact", - }, - ], - } - ], - properties=[{"key": "bar", "value": "xyz", "type": "person"}], - date_from="2020-01-01", - date_to="2020-01-05", - ) - - self.assertEqual( - timeline, + "id": "$pageview", + } + ], + properties=[{"key": "bar", "value": "xyz", "type": "person"}], + date_from="2020-01-01", + date_to="2020-01-05", + ) + + self.assertEqual( + timeline, + { + "points": [], # No relevant events in range + "crucial_property_keys": ["bar"], + "effective_date_from": "2020-01-01T00:00:00+00:00", + "effective_date_to": "2020-01-05T23:59:59.999999+00:00", + }, + ) + + @also_test_with_materialized_columns(**MATERIALIZED_COLUMN_KWARGS) + @snapshot_clickhouse_queries + def test_timeline_with_two_events_in_range_using_filter_on_series(self): + self._create_person({"foo": "abc", "bar": 123}) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 123}, + timestamp="2020-01-01T00:00:00Z", # Exactly the same as date_from + ) + self._create_event( + event="$pageview", + actor_properties={"foo": "klm", "bar": 123}, + timestamp="2020-01-01T21:37:00Z", + ) + flush_persons_and_events() + + timeline = self._get_timeline_result( + events=[ { - "points": [ + "id": "$pageview", + "properties": [ { - "properties": {"foo": "abc", "bar": 123}, - "relevant_event_count": 1, - "timestamp": "2020-01-01T00:00:00Z", + "key": "foo", + "type": "person", + "value": ["whatever"], + "operator": "exact", }, { - "properties": {"foo": "klm", "bar": 123}, - "relevant_event_count": 1, - "timestamp": "2020-01-01T21:37:00Z", + "key": "fin", + "type": "event", + "value": ["anything"], + "operator": "exact", }, ], - "crucial_property_keys": ["bar", "foo"], - "effective_date_from": "2020-01-01T00:00:00+00:00", - "effective_date_to": "2020-01-05T23:59:59.999999+00:00", - }, - ) - - @also_test_with_materialized_columns(**materialized_column_kwargs) - @snapshot_clickhouse_queries - def test_timeline_with_two_events_in_range_using_breakdown(self): - self._create_actor({"foo": "abc", "bar": 123}) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 123}, - timestamp="2020-01-01T00:00:00Z", # Exactly the same as date_from - ) - self._create_event( - event="$pageview", - actor_properties={"foo": "klm", "bar": 123}, - timestamp="2020-01-01T21:37:00Z", - ) - flush_persons_and_events() - - timeline = self._get_timeline_result( - events=[ + } + ], + properties=[{"key": "bar", "value": "xyz", "type": "person"}], + date_from="2020-01-01", + date_to="2020-01-05", + ) + + self.assertEqual( + timeline, + { + "points": [ { - "id": "$pageview", - } + "properties": {"foo": "abc", "bar": 123}, + "relevant_event_count": 1, + "timestamp": "2020-01-01T00:00:00Z", + }, + { + "properties": {"foo": "klm", "bar": 123}, + "relevant_event_count": 1, + "timestamp": "2020-01-01T21:37:00Z", + }, ], - breakdown="foo", - properties=[{"key": "bar", "value": "xyz", "type": "person"}], - date_from="2020-01-01", - date_to="2020-01-05", - ) - - self.assertEqual( - timeline, + "crucial_property_keys": ["bar", "foo"], + "effective_date_from": "2020-01-01T00:00:00+00:00", + "effective_date_to": "2020-01-05T23:59:59.999999+00:00", + }, + ) + + @also_test_with_materialized_columns(**MATERIALIZED_COLUMN_KWARGS) + @snapshot_clickhouse_queries + def test_timeline_with_two_events_in_range_using_breakdown(self): + self._create_person({"foo": "abc", "bar": 123}) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 123}, + timestamp="2020-01-01T00:00:00Z", # Exactly the same as date_from + ) + self._create_event( + event="$pageview", + actor_properties={"foo": "klm", "bar": 123}, + timestamp="2020-01-01T21:37:00Z", + ) + flush_persons_and_events() + + timeline = self._get_timeline_result( + events=[ { - "points": [ - { - "properties": {"foo": "abc", "bar": 123}, - "relevant_event_count": 1, - "timestamp": "2020-01-01T00:00:00Z", - }, - { - "properties": {"foo": "klm", "bar": 123}, - "relevant_event_count": 1, - "timestamp": "2020-01-01T21:37:00Z", - }, - ], - "crucial_property_keys": ["bar", "foo"], - "effective_date_from": "2020-01-01T00:00:00+00:00", - "effective_date_to": "2020-01-05T23:59:59.999999+00:00", - }, - ) - - @snapshot_clickhouse_queries - @also_test_with_materialized_columns(**materialized_column_kwargs) - def test_timeline_for_existing_actor_with_three_events_and_return_to_previous_value(self): - self._create_actor({"foo": "abc", "bar": 123}) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 456}, # Initial bar - timestamp="2020-01-02T00:00:00Z", - ) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 123}, # Changed bar - timestamp="2020-01-03T00:00:00Z", - ) - self._create_event( - event="$pageview", - actor_properties={ - "foo": "abc", - "bar": 456, - }, # Changed bar back to initial value - timestamp="2020-01-04T00:00:00Z", - ) - flush_persons_and_events() - - timeline = self._get_timeline_result( - events=[ + "id": "$pageview", + } + ], + breakdown="foo", + properties=[{"key": "bar", "value": "xyz", "type": "person"}], + date_from="2020-01-01", + date_to="2020-01-05", + ) + + self.assertEqual( + timeline, + { + "points": [ { - "id": "$pageview", - } + "properties": {"foo": "abc", "bar": 123}, + "relevant_event_count": 1, + "timestamp": "2020-01-01T00:00:00Z", + }, + { + "properties": {"foo": "klm", "bar": 123}, + "relevant_event_count": 1, + "timestamp": "2020-01-01T21:37:00Z", + }, ], - properties=[{"key": "bar", "value": "xyz", "type": "person"}], - date_from="2020-01-01", - date_to="2020-01-05", - ) - - self.assertEqual( - timeline, + "crucial_property_keys": ["bar", "foo"], + "effective_date_from": "2020-01-01T00:00:00+00:00", + "effective_date_to": "2020-01-05T23:59:59.999999+00:00", + }, + ) + + @snapshot_clickhouse_queries + @also_test_with_materialized_columns(**MATERIALIZED_COLUMN_KWARGS) + def test_timeline_for_existing_actor_with_three_events_and_return_to_previous_value(self): + self._create_person({"foo": "abc", "bar": 123}) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 456}, # Initial bar + timestamp="2020-01-02T00:00:00Z", + ) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 123}, # Changed bar + timestamp="2020-01-03T00:00:00Z", + ) + self._create_event( + event="$pageview", + actor_properties={ + "foo": "abc", + "bar": 456, + }, # Changed bar back to initial value + timestamp="2020-01-04T00:00:00Z", + ) + flush_persons_and_events() + + timeline = self._get_timeline_result( + events=[ { - "points": [ - { - "properties": {"foo": "abc", "bar": 456}, - "relevant_event_count": 1, - "timestamp": "2020-01-02T00:00:00Z", - }, - { - "properties": {"foo": "abc", "bar": 123}, - "relevant_event_count": 1, - "timestamp": "2020-01-03T00:00:00Z", - }, - { - "properties": {"foo": "abc", "bar": 456}, - "relevant_event_count": 1, - "timestamp": "2020-01-04T00:00:00Z", - }, - ], - "crucial_property_keys": ["bar"], - "effective_date_from": "2020-01-01T00:00:00+00:00", - "effective_date_to": "2020-01-05T23:59:59.999999+00:00", - }, - ) - - @snapshot_clickhouse_queries - @also_test_with_materialized_columns(person_properties=["bar"], materialize_only_with_person_on_events=True) - def test_timeline_for_existing_person_with_three_events_and_return_to_previous_value_at_single_day_point(self): - self._create_actor(properties={"foo": "abc", "bar": 123}) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 456}, # Initial bar - timestamp="2020-01-02T00:00:00Z", - ) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 123}, # Changed bar - timestamp="2020-01-02T07:00:00Z", - ) - self._create_event( - event="$pageview", - actor_properties={ - "foo": "abc", - "bar": 456, - }, # Changed bar back to initial value - timestamp="2020-01-02T14:00:00Z", - ) - flush_persons_and_events() - - timeline = self._get_timeline_result( - events=[ + "id": "$pageview", + } + ], + properties=[{"key": "bar", "value": "xyz", "type": "person"}], + date_from="2020-01-01", + date_to="2020-01-05", + ) + + self.assertEqual( + timeline, + { + "points": [ { - "id": "$pageview", - } + "properties": {"foo": "abc", "bar": 456}, + "relevant_event_count": 1, + "timestamp": "2020-01-02T00:00:00Z", + }, + { + "properties": {"foo": "abc", "bar": 123}, + "relevant_event_count": 1, + "timestamp": "2020-01-03T00:00:00Z", + }, + { + "properties": {"foo": "abc", "bar": 456}, + "relevant_event_count": 1, + "timestamp": "2020-01-04T00:00:00Z", + }, ], - properties=[{"key": "bar", "value": "xyz", "type": "person"}], - display="ActionsLineGraph", - date_from="2020-01-02T00:00:00Z", - date_to="2020-01-02T00:00:00Z", - # For some legacy reason data point-specific date_from and date_to are the same in the persons modal - # The backend needs interval to offset date_from properly - interval="day", - ) - - self.assertEqual( - timeline, + "crucial_property_keys": ["bar"], + "effective_date_from": "2020-01-01T00:00:00+00:00", + "effective_date_to": "2020-01-05T23:59:59.999999+00:00", + }, + ) + + @snapshot_clickhouse_queries + @also_test_with_materialized_columns(person_properties=["bar"], materialize_only_with_person_on_events=True) + def test_timeline_for_existing_person_with_three_events_and_return_to_previous_value_at_single_day_point(self): + self._create_person(properties={"foo": "abc", "bar": 123}) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 456}, # Initial bar + timestamp="2020-01-02T00:00:00Z", + ) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 123}, # Changed bar + timestamp="2020-01-02T07:00:00Z", + ) + self._create_event( + event="$pageview", + actor_properties={ + "foo": "abc", + "bar": 456, + }, # Changed bar back to initial value + timestamp="2020-01-02T14:00:00Z", + ) + flush_persons_and_events() + + timeline = self._get_timeline_result( + events=[ { - "points": [ - { - "properties": {"foo": "abc", "bar": 456}, - "relevant_event_count": 1, - "timestamp": "2020-01-02T00:00:00Z", - }, - { - "properties": {"foo": "abc", "bar": 123}, - "relevant_event_count": 1, - "timestamp": "2020-01-02T07:00:00Z", - }, - { - "properties": {"foo": "abc", "bar": 456}, - "relevant_event_count": 1, - "timestamp": "2020-01-02T14:00:00Z", - }, - ], - "crucial_property_keys": ["bar"], - "effective_date_from": "2020-01-02T00:00:00+00:00", - "effective_date_to": "2020-01-02T23:59:59.999999+00:00", - }, - ) - - @snapshot_clickhouse_queries - @also_test_with_materialized_columns(person_properties=["bar"], materialize_only_with_person_on_events=True) - def test_timeline_for_existing_person_with_three_events_and_return_to_previous_value_at_single_hour_point(self): - self._create_actor(properties={"foo": "abc", "bar": 123}) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 456}, # Initial bar - timestamp="2020-01-02T00:00:00Z", - ) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 123}, # Changed bar - timestamp="2020-01-02T00:20:00Z", - ) - self._create_event( - event="$pageview", - actor_properties={ - "foo": "abc", - "bar": 456, - }, # Changed bar back to initial value - timestamp="2020-01-02T00:40:00Z", - ) - flush_persons_and_events() - - timeline = self._get_timeline_result( - events=[ + "id": "$pageview", + } + ], + properties=[{"key": "bar", "value": "xyz", "type": "person"}], + display="ActionsLineGraph", + date_from="2020-01-02T00:00:00Z", + date_to="2020-01-02T00:00:00Z", + # For some legacy reason data point-specific date_from and date_to are the same in the persons modal + # The backend needs interval to offset date_from properly + interval="day", + ) + + self.assertEqual( + timeline, + { + "points": [ { - "id": "$pageview", - } + "properties": {"foo": "abc", "bar": 456}, + "relevant_event_count": 1, + "timestamp": "2020-01-02T00:00:00Z", + }, + { + "properties": {"foo": "abc", "bar": 123}, + "relevant_event_count": 1, + "timestamp": "2020-01-02T07:00:00Z", + }, + { + "properties": {"foo": "abc", "bar": 456}, + "relevant_event_count": 1, + "timestamp": "2020-01-02T14:00:00Z", + }, ], - properties=[{"key": "bar", "value": "xyz", "type": "person"}], - display="ActionsLineGraph", - date_from="2020-01-02T00:00:00Z", - date_to="2020-01-02T00:00:00Z", - interval="hour", - ) - - self.assertEqual( - timeline, + "crucial_property_keys": ["bar"], + "effective_date_from": "2020-01-02T00:00:00+00:00", + "effective_date_to": "2020-01-02T23:59:59.999999+00:00", + }, + ) + + @snapshot_clickhouse_queries + @also_test_with_materialized_columns(person_properties=["bar"], materialize_only_with_person_on_events=True) + def test_timeline_for_existing_person_with_three_events_and_return_to_previous_value_at_single_hour_point(self): + self._create_person(properties={"foo": "abc", "bar": 123}) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 456}, # Initial bar + timestamp="2020-01-02T00:00:00Z", + ) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 123}, # Changed bar + timestamp="2020-01-02T00:20:00Z", + ) + self._create_event( + event="$pageview", + actor_properties={ + "foo": "abc", + "bar": 456, + }, # Changed bar back to initial value + timestamp="2020-01-02T00:40:00Z", + ) + flush_persons_and_events() + + timeline = self._get_timeline_result( + events=[ { - "points": [ - { - "properties": {"foo": "abc", "bar": 456}, - "relevant_event_count": 1, - "timestamp": "2020-01-02T00:00:00Z", - }, - { - "properties": {"foo": "abc", "bar": 123}, - "relevant_event_count": 1, - "timestamp": "2020-01-02T00:20:00Z", - }, - { - "properties": {"foo": "abc", "bar": 456}, - "relevant_event_count": 1, - "timestamp": "2020-01-02T00:40:00Z", - }, - ], - "crucial_property_keys": ["bar"], - "effective_date_from": "2020-01-02T00:00:00+00:00", - "effective_date_to": "2020-01-02T01:00:00+00:00", - }, - ) - - @snapshot_clickhouse_queries - @also_test_with_materialized_columns(person_properties=["bar"], materialize_only_with_person_on_events=True) - def test_timeline_for_existing_person_with_three_events_and_return_to_previous_value_at_single_month_point( - self, - ): - self._create_actor(properties={"foo": "abc", "bar": 123}) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 456}, # Initial bar - timestamp="2020-01-01T00:00:00Z", - ) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 123}, # Changed bar - timestamp="2020-01-02T00:20:00Z", - ) - self._create_event( - event="$pageview", - actor_properties={ - "foo": "abc", - "bar": 456, - }, # Changed bar back to initial value - timestamp="2020-01-31T00:40:00Z", - ) - flush_persons_and_events() - - timeline = self._get_timeline_result( - events=[ + "id": "$pageview", + } + ], + properties=[{"key": "bar", "value": "xyz", "type": "person"}], + display="ActionsLineGraph", + date_from="2020-01-02T00:00:00Z", + date_to="2020-01-02T00:00:00Z", + interval="hour", + ) + + self.assertEqual( + timeline, + { + "points": [ { - "id": "$pageview", - } + "properties": {"foo": "abc", "bar": 456}, + "relevant_event_count": 1, + "timestamp": "2020-01-02T00:00:00Z", + }, + { + "properties": {"foo": "abc", "bar": 123}, + "relevant_event_count": 1, + "timestamp": "2020-01-02T00:20:00Z", + }, + { + "properties": {"foo": "abc", "bar": 456}, + "relevant_event_count": 1, + "timestamp": "2020-01-02T00:40:00Z", + }, ], - properties=[{"key": "bar", "value": "xyz", "type": "person"}], - display="ActionsLineGraph", - date_from="2020-01-01", - date_to="2020-01-01", - interval="month", - ) - - self.assertEqual( - timeline, - { - "points": [ - { - "properties": {"foo": "abc", "bar": 456}, - "relevant_event_count": 1, - "timestamp": "2020-01-01T00:00:00Z", - }, - { - "properties": {"foo": "abc", "bar": 123}, - "relevant_event_count": 1, - "timestamp": "2020-01-02T00:20:00Z", - }, - { - "properties": {"foo": "abc", "bar": 456}, - "relevant_event_count": 1, - "timestamp": "2020-01-31T00:40:00Z", - }, - ], - "crucial_property_keys": ["bar"], - "effective_date_from": "2020-01-01T00:00:00+00:00", - "effective_date_to": "2020-01-31T23:59:59.999999+00:00", - }, - ) - - @snapshot_clickhouse_queries - @also_test_with_materialized_columns(person_properties=["bar"], materialize_only_with_person_on_events=True) - def test_timeline_for_existing_person_with_three_events_and_return_to_previous_value_using_relative_date_from( - self, - ): - self._create_actor(properties={"foo": "abc", "bar": 123}) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 456}, # Initial bar - timestamp="2020-01-02T00:00:00Z", - ) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 123}, # Changed bar - timestamp="2020-01-02T00:20:00Z", - ) - self._create_event( - event="$pageview", - actor_properties={ - "foo": "abc", - "bar": 456, - }, # Changed bar back to initial value - timestamp="2020-01-06T00:40:00Z", - ) - flush_persons_and_events() - - with freeze_time("2020-01-09T21:37:00Z"): - timeline = self._get_timeline_result( - events=[ - { - "id": "$pageview", - } - ], - properties=[{"key": "bar", "value": "xyz", "type": "person"}], - date_from="-7d", - date_to=None, - ) - - self.assertEqual( - timeline, + "crucial_property_keys": ["bar"], + "effective_date_from": "2020-01-02T00:00:00+00:00", + "effective_date_to": "2020-01-02T01:00:00+00:00", + }, + ) + + @snapshot_clickhouse_queries + @also_test_with_materialized_columns(person_properties=["bar"], materialize_only_with_person_on_events=True) + def test_timeline_for_existing_person_with_three_events_and_return_to_previous_value_at_single_month_point( + self, + ): + self._create_person(properties={"foo": "abc", "bar": 123}) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 456}, # Initial bar + timestamp="2020-01-01T00:00:00Z", + ) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 123}, # Changed bar + timestamp="2020-01-02T00:20:00Z", + ) + self._create_event( + event="$pageview", + actor_properties={ + "foo": "abc", + "bar": 456, + }, # Changed bar back to initial value + timestamp="2020-01-31T00:40:00Z", + ) + flush_persons_and_events() + + timeline = self._get_timeline_result( + events=[ { - "points": [ - { - "properties": {"foo": "abc", "bar": 456}, - "relevant_event_count": 1, - "timestamp": "2020-01-02T00:00:00Z", - }, - { - "properties": {"foo": "abc", "bar": 123}, - "relevant_event_count": 1, - "timestamp": "2020-01-02T00:20:00Z", - }, - { - "properties": {"foo": "abc", "bar": 456}, - "relevant_event_count": 1, - "timestamp": "2020-01-06T00:40:00Z", - }, - ], - "crucial_property_keys": ["bar"], - "effective_date_from": "2020-01-02T00:00:00+00:00", - "effective_date_to": "2020-01-09T23:59:59.999999+00:00", - }, - ) - - @snapshot_clickhouse_queries - @also_test_with_materialized_columns(**materialized_column_kwargs) - def test_timeline_for_existing_actor_with_six_events_but_only_two_relevant_changes(self): - self._create_actor({"foo": "abc", "bar": 123}) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 456}, - timestamp="2020-01-01T00:00:00Z", # Exactly the same as date_from - ) - self._create_event( - event="whatever", # This event is not a $pageview, so it must be ignored here - actor_properties={"foo": "abc", "bar": 123}, # Changed bar - timestamp="2020-01-02T00:00:00Z", - ) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 123}, # Changed bar - timestamp="2020-01-02T01:00:00Z", - ) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 123}, - timestamp="2020-01-03T01:00:00Z", - ) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 123}, - timestamp="2020-01-04T19:00:00Z", - ) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 789}, # Changed bar - timestamp="2020-01-04T19:00:01Z", - ) - flush_persons_and_events() - + "id": "$pageview", + } + ], + properties=[{"key": "bar", "value": "xyz", "type": "person"}], + display="ActionsLineGraph", + date_from="2020-01-01", + date_to="2020-01-01", + interval="month", + ) + + self.assertEqual( + timeline, + { + "points": [ + { + "properties": {"foo": "abc", "bar": 456}, + "relevant_event_count": 1, + "timestamp": "2020-01-01T00:00:00Z", + }, + { + "properties": {"foo": "abc", "bar": 123}, + "relevant_event_count": 1, + "timestamp": "2020-01-02T00:20:00Z", + }, + { + "properties": {"foo": "abc", "bar": 456}, + "relevant_event_count": 1, + "timestamp": "2020-01-31T00:40:00Z", + }, + ], + "crucial_property_keys": ["bar"], + "effective_date_from": "2020-01-01T00:00:00+00:00", + "effective_date_to": "2020-01-31T23:59:59.999999+00:00", + }, + ) + + @snapshot_clickhouse_queries + @also_test_with_materialized_columns(person_properties=["bar"], materialize_only_with_person_on_events=True) + def test_timeline_for_existing_person_with_three_events_and_return_to_previous_value_using_relative_date_from( + self, + ): + self._create_person(properties={"foo": "abc", "bar": 123}) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 456}, # Initial bar + timestamp="2020-01-02T00:00:00Z", + ) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 123}, # Changed bar + timestamp="2020-01-02T00:20:00Z", + ) + self._create_event( + event="$pageview", + actor_properties={ + "foo": "abc", + "bar": 456, + }, # Changed bar back to initial value + timestamp="2020-01-06T00:40:00Z", + ) + flush_persons_and_events() + + with freeze_time("2020-01-09T21:37:00Z"): timeline = self._get_timeline_result( events=[ { @@ -635,177 +541,233 @@ def test_timeline_for_existing_actor_with_six_events_but_only_two_relevant_chang } ], properties=[{"key": "bar", "value": "xyz", "type": "person"}], - date_from="2020-01-01", - date_to="2020-01-05", - ) - - self.assertEqual( - timeline, - { - "points": [ - { - "properties": {"foo": "abc", "bar": 456}, - "relevant_event_count": 1, - "timestamp": "2020-01-01T00:00:00Z", - }, - { - "properties": {"foo": "abc", "bar": 123}, - "relevant_event_count": 3, - "timestamp": "2020-01-02T01:00:00Z", - }, - { - "properties": {"foo": "abc", "bar": 789}, - "relevant_event_count": 1, - "timestamp": "2020-01-04T19:00:01Z", - }, - ], - "crucial_property_keys": ["bar"], - "effective_date_from": "2020-01-01T00:00:00+00:00", - "effective_date_to": "2020-01-05T23:59:59.999999+00:00", - }, + date_from="-7d", + date_to=None, ) - @snapshot_clickhouse_queries - def test_timeline_for_existing_actor_with_six_events_but_only_two_relevant_changes_without_filters(self): - self._create_actor({"foo": "abc", "bar": 123}) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 456}, - timestamp="2020-01-01T00:00:00Z", # Exactly the same as date_from - ) - self._create_event( - event="whatever", # This event is not a $pageview, but this doesn't matter here anyway - actor_properties={"foo": "abc", "bar": 123}, # Changed bar - timestamp="2020-01-01T01:00:00Z", - ) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 123}, # Changed bar - timestamp="2020-01-02T01:00:00Z", - ) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 123}, - timestamp="2020-01-03T01:00:00Z", - ) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 123}, - timestamp="2020-01-04T19:00:00Z", - ) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 789}, # Changed bar - timestamp="2020-01-04T19:00:01Z", - ) - flush_persons_and_events() - - timeline = self._get_timeline_result( - events=[ + self.assertEqual( + timeline, + { + "points": [ { - "id": "$pageview", - } + "properties": {"foo": "abc", "bar": 456}, + "relevant_event_count": 1, + "timestamp": "2020-01-02T00:00:00Z", + }, + { + "properties": {"foo": "abc", "bar": 123}, + "relevant_event_count": 1, + "timestamp": "2020-01-02T00:20:00Z", + }, + { + "properties": {"foo": "abc", "bar": 456}, + "relevant_event_count": 1, + "timestamp": "2020-01-06T00:40:00Z", + }, ], - date_from="2020-01-01", - date_to="2020-01-05", - ) - - self.assertEqual( - timeline, # Without filters, NO changes are relevant + "crucial_property_keys": ["bar"], + "effective_date_from": "2020-01-02T00:00:00+00:00", + "effective_date_to": "2020-01-09T23:59:59.999999+00:00", + }, + ) + + @snapshot_clickhouse_queries + @also_test_with_materialized_columns(**MATERIALIZED_COLUMN_KWARGS) + def test_timeline_for_existing_actor_with_six_events_but_only_two_relevant_changes(self): + self._create_person({"foo": "abc", "bar": 123}) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 456}, + timestamp="2020-01-01T00:00:00Z", # Exactly the same as date_from + ) + self._create_event( + event="whatever", # This event is not a $pageview, so it must be ignored here + actor_properties={"foo": "abc", "bar": 123}, # Changed bar + timestamp="2020-01-02T00:00:00Z", + ) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 123}, # Changed bar + timestamp="2020-01-02T01:00:00Z", + ) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 123}, + timestamp="2020-01-03T01:00:00Z", + ) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 123}, + timestamp="2020-01-04T19:00:00Z", + ) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 789}, # Changed bar + timestamp="2020-01-04T19:00:01Z", + ) + flush_persons_and_events() + + timeline = self._get_timeline_result( + events=[ { - "points": [ - { - "properties": {"foo": "abc", "bar": 456}, - "relevant_event_count": 5, - "timestamp": "2020-01-01T00:00:00Z", - }, - ], - "crucial_property_keys": [], - "effective_date_from": "2020-01-01T00:00:00+00:00", - "effective_date_to": "2020-01-05T23:59:59.999999+00:00", - }, - ) - - @snapshot_clickhouse_queries - def test_timeline_for_existing_actor_with_six_events_but_only_two_relevant_changes_without_events(self): - self._create_actor({"foo": "abc", "bar": 123}) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 456}, - timestamp="2020-01-01T00:00:00Z", # Exactly the same as date_from - ) - self._create_event( - event="whatever", # This event is not a $pageview, but with no events/actions specified, it will be counted - actor_properties={"foo": "abc", "bar": 123}, # Changed bar - timestamp="2020-01-01T01:00:00Z", - ) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 123}, # Changed bar - timestamp="2020-01-02T01:00:00Z", - ) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 123}, - timestamp="2020-01-03T01:00:00Z", - ) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 123}, - timestamp="2020-01-04T19:00:00Z", - ) - self._create_event( - event="$pageview", - actor_properties={"foo": "abc", "bar": 789}, # Changed bar - timestamp="2020-01-04T19:00:01Z", - ) - flush_persons_and_events() - - timeline = self._get_timeline_result( - properties=[{"key": "bar", "value": "xyz", "type": "person"}], - date_from="2020-01-01", - date_to="2020-01-05", - ) - - self.assertEqual( - timeline, + "id": "$pageview", + } + ], + properties=[{"key": "bar", "value": "xyz", "type": "person"}], + date_from="2020-01-01", + date_to="2020-01-05", + ) + + self.assertEqual( + timeline, + { + "points": [ + { + "properties": {"foo": "abc", "bar": 456}, + "relevant_event_count": 1, + "timestamp": "2020-01-01T00:00:00Z", + }, + { + "properties": {"foo": "abc", "bar": 123}, + "relevant_event_count": 3, + "timestamp": "2020-01-02T01:00:00Z", + }, + { + "properties": {"foo": "abc", "bar": 789}, + "relevant_event_count": 1, + "timestamp": "2020-01-04T19:00:01Z", + }, + ], + "crucial_property_keys": ["bar"], + "effective_date_from": "2020-01-01T00:00:00+00:00", + "effective_date_to": "2020-01-05T23:59:59.999999+00:00", + }, + ) + + @snapshot_clickhouse_queries + def test_timeline_for_existing_actor_with_six_events_but_only_two_relevant_changes_without_filters(self): + self._create_person({"foo": "abc", "bar": 123}) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 456}, + timestamp="2020-01-01T00:00:00Z", # Exactly the same as date_from + ) + self._create_event( + event="whatever", # This event is not a $pageview, but this doesn't matter here anyway + actor_properties={"foo": "abc", "bar": 123}, # Changed bar + timestamp="2020-01-01T01:00:00Z", + ) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 123}, # Changed bar + timestamp="2020-01-02T01:00:00Z", + ) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 123}, + timestamp="2020-01-03T01:00:00Z", + ) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 123}, + timestamp="2020-01-04T19:00:00Z", + ) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 789}, # Changed bar + timestamp="2020-01-04T19:00:01Z", + ) + flush_persons_and_events() + + timeline = self._get_timeline_result( + events=[ { - "points": [ - { - "properties": {"foo": "abc", "bar": 456}, - "relevant_event_count": 1, - "timestamp": "2020-01-01T00:00:00Z", - }, - { - "properties": {"foo": "abc", "bar": 123}, - "relevant_event_count": 4, - "timestamp": "2020-01-01T01:00:00Z", # whatever event - }, - { - "properties": {"foo": "abc", "bar": 789}, - "relevant_event_count": 1, - "timestamp": "2020-01-04T19:00:01Z", - }, - ], - "crucial_property_keys": ["bar"], - "effective_date_from": "2020-01-01T00:00:00+00:00", - "effective_date_to": "2020-01-05T23:59:59.999999+00:00", - }, - ) - - return TestPropertiesTimeline - - -# Only test person properties timeline if persons-on-events is enabled -# Using CONSTANCE_CONFIG instead of get_instance_setting, becasue DB access is only allowed _inside_ the Test* class -if CONSTANCE_CONFIG["PERSON_ON_EVENTS_ENABLED"][0]: - - class TestPersonPropertiesTimeline(properties_timeline_test_factory(actor_type="person")): # type: ignore - pass - - -# TODO: Uncomment below when groups-on-events is released, and make sure everything works -# if CONSTANCE_CONFIG["GROUPS_ON_EVENTS_ENABLED"][0]: -# -# class TestGroupPropertiesTimeline(properties_timeline_test_factory(actor_type="group")): # type: ignore -# pass + "id": "$pageview", + } + ], + date_from="2020-01-01", + date_to="2020-01-05", + ) + + self.assertEqual( + timeline, # Without filters, NO changes are relevant + { + "points": [ + { + "properties": {"foo": "abc", "bar": 456}, + "relevant_event_count": 5, + "timestamp": "2020-01-01T00:00:00Z", + }, + ], + "crucial_property_keys": [], + "effective_date_from": "2020-01-01T00:00:00+00:00", + "effective_date_to": "2020-01-05T23:59:59.999999+00:00", + }, + ) + + @snapshot_clickhouse_queries + def test_timeline_for_existing_actor_with_six_events_but_only_two_relevant_changes_without_events(self): + self._create_person({"foo": "abc", "bar": 123}) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 456}, + timestamp="2020-01-01T00:00:00Z", # Exactly the same as date_from + ) + self._create_event( + event="whatever", # This event is not a $pageview, but with no events/actions specified, it will be counted + actor_properties={"foo": "abc", "bar": 123}, # Changed bar + timestamp="2020-01-01T01:00:00Z", + ) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 123}, # Changed bar + timestamp="2020-01-02T01:00:00Z", + ) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 123}, + timestamp="2020-01-03T01:00:00Z", + ) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 123}, + timestamp="2020-01-04T19:00:00Z", + ) + self._create_event( + event="$pageview", + actor_properties={"foo": "abc", "bar": 789}, # Changed bar + timestamp="2020-01-04T19:00:01Z", + ) + flush_persons_and_events() + + timeline = self._get_timeline_result( + properties=[{"key": "bar", "value": "xyz", "type": "person"}], + date_from="2020-01-01", + date_to="2020-01-05", + ) + + self.assertEqual( + timeline, + { + "points": [ + { + "properties": {"foo": "abc", "bar": 456}, + "relevant_event_count": 1, + "timestamp": "2020-01-01T00:00:00Z", + }, + { + "properties": {"foo": "abc", "bar": 123}, + "relevant_event_count": 4, + "timestamp": "2020-01-01T01:00:00Z", # whatever event + }, + { + "properties": {"foo": "abc", "bar": 789}, + "relevant_event_count": 1, + "timestamp": "2020-01-04T19:00:01Z", + }, + ], + "crucial_property_keys": ["bar"], + "effective_date_from": "2020-01-01T00:00:00+00:00", + "effective_date_to": "2020-01-05T23:59:59.999999+00:00", + }, + ) diff --git a/posthog/api/test/test_team.py b/posthog/api/test/test_team.py index 6a6825f598f42..1eb35ff162669 100644 --- a/posthog/api/test/test_team.py +++ b/posthog/api/test/test_team.py @@ -73,10 +73,6 @@ def test_retrieve_project(self): response_data["person_on_events_querying_enabled"], get_instance_setting("PERSON_ON_EVENTS_ENABLED") or get_instance_setting("PERSON_ON_EVENTS_V2_ENABLED"), ) - self.assertEqual( - response_data["groups_on_events_querying_enabled"], - get_instance_setting("GROUPS_ON_EVENTS_ENABLED"), - ) # TODO: These assertions will no longer make sense when we fully remove these attributes from the model self.assertNotIn("event_names", response_data) diff --git a/posthog/models/property/util.py b/posthog/models/property/util.py index de2602539e6ec..0a28a3f3f0683 100644 --- a/posthog/models/property/util.py +++ b/posthog/models/property/util.py @@ -49,7 +49,6 @@ PropertyName, ) from posthog.models.property.property import ValueT -from posthog.models.team.team import groups_on_events_querying_enabled from posthog.queries.person_distinct_id_query import get_team_distinct_ids_query from posthog.session_recordings.queries.session_query import SessionQuery from posthog.queries.util import PersonPropertiesMode @@ -288,27 +287,6 @@ def parse_prop_clauses( if query: final.append(f"{property_operator} {query}") params.update(filter_params) - elif ( - prop.type == "group" - and person_properties_mode - in [ - PersonPropertiesMode.DIRECT_ON_EVENTS, - PersonPropertiesMode.DIRECT_ON_EVENTS_WITH_POE_V2, - ] - and groups_on_events_querying_enabled() - ): - group_column = f"group{prop.group_type_index}_properties" - filter_query, filter_params = prop_filter_json_extract( - prop, - idx, - prepend, - prop_var=group_column, - allow_denormalized_props=True, - property_operator=property_operator, - use_event_column=group_column, - ) - final.append(filter_query) - params.update(filter_params) elif prop.type == "group": if group_properties_joined: filter_query, filter_params = prop_filter_json_extract( @@ -740,7 +718,7 @@ def get_property_string_expr( if ( allow_denormalized_props and (property_name, materialised_table_column) in materialized_columns - and ("group" not in materialised_table_column or groups_on_events_querying_enabled()) + and "group" not in materialised_table_column ): return ( f'{table_string}"{materialized_columns[(property_name, materialised_table_column)]}"', diff --git a/posthog/models/team/team.py b/posthog/models/team/team.py index e06104ce1c2a6..e798a906386f1 100644 --- a/posthog/models/team/team.py +++ b/posthog/models/team/team.py @@ -482,15 +482,6 @@ def delete_team_in_cache_on_delete(sender, instance: Team, **kwargs): set_team_in_cache(instance.api_token, None) -def groups_on_events_querying_enabled(): - """ - Returns whether to allow querying groups columns on events. - - Remove all usages of this when the feature is released to everyone. - """ - return get_instance_setting("GROUPS_ON_EVENTS_ENABLED") - - def check_is_feature_available_for_team(team_id: int, feature_key: str, current_usage: Optional[int] = None): available_product_features: Optional[list[dict[str, str]]] = ( Team.objects.select_related("organization") diff --git a/posthog/queries/breakdown_props.py b/posthog/queries/breakdown_props.py index 010d61aa8d16c..8475866f4dddc 100644 --- a/posthog/queries/breakdown_props.py +++ b/posthog/queries/breakdown_props.py @@ -22,7 +22,6 @@ parse_prop_grouped_clauses, ) from posthog.models.team import Team -from posthog.models.team.team import groups_on_events_querying_enabled from posthog.queries.column_optimizer.column_optimizer import ColumnOptimizer from posthog.queries.groups_join_query import GroupsJoinQuery from posthog.queries.insight import insight_sync_execute @@ -95,8 +94,7 @@ def get_breakdown_prop_values( outer_properties: Optional[PropertyGroup] = props_to_filter person_id_joined_alias = "e.person_id" - if not groups_on_events_querying_enabled(): - groups_join_clause, groups_join_params = GroupsJoinQuery(filter, team.pk, column_optimizer).get_join_query() + groups_join_clause, groups_join_params = GroupsJoinQuery(filter, team.pk, column_optimizer).get_join_query() else: outer_properties = ( column_optimizer.property_optimizer.parse_property_groups(props_to_filter).outer diff --git a/posthog/queries/funnels/base.py b/posthog/queries/funnels/base.py index ea337267a2c57..b72e223ab24aa 100644 --- a/posthog/queries/funnels/base.py +++ b/posthog/queries/funnels/base.py @@ -24,7 +24,6 @@ get_single_or_multi_property_string_expr, parse_prop_grouped_clauses, ) -from posthog.models.team.team import groups_on_events_querying_enabled from posthog.queries.breakdown_props import ( format_breakdown_cohort_join_query, get_breakdown_cohort_name, @@ -760,27 +759,13 @@ def _get_breakdown_select_prop(self) -> tuple[str, dict[str, Any]]: # :TRICKY: We only support string breakdown for group properties assert isinstance(self._filter.breakdown, str) - if ( - alias_poe_mode_for_legacy(self._team.person_on_events_mode) != PersonsOnEventsMode.DISABLED - and groups_on_events_querying_enabled() - ): - properties_field = f"group{self._filter.breakdown_group_type_index}_properties" - expression, _ = get_property_string_expr( - table="events", - property_name=self._filter.breakdown, - var="%(breakdown)s", - column=properties_field, - allow_denormalized_props=True, - materialised_table_column=properties_field, - ) - else: - properties_field = f"group_properties_{self._filter.breakdown_group_type_index}" - expression, _ = get_property_string_expr( - table="groups", - property_name=self._filter.breakdown, - var="%(breakdown)s", - column=properties_field, - ) + properties_field = f"group_properties_{self._filter.breakdown_group_type_index}" + expression, _ = get_property_string_expr( + table="groups", + property_name=self._filter.breakdown, + var="%(breakdown)s", + column=properties_field, + ) basic_prop_selector = f"{expression} AS prop_basic" elif self._filter.breakdown_type == "hogql": from posthog.hogql.hogql import translate_hogql diff --git a/posthog/queries/trends/breakdown.py b/posthog/queries/trends/breakdown.py index 663ccd42ccff6..28c9e3d4d2ab5 100644 --- a/posthog/queries/trends/breakdown.py +++ b/posthog/queries/trends/breakdown.py @@ -30,7 +30,6 @@ parse_prop_grouped_clauses, ) from posthog.models.team import Team -from posthog.models.team.team import groups_on_events_querying_enabled from posthog.queries.breakdown_props import ( ALL_USERS_COHORT_ID, format_breakdown_cohort_join_query, @@ -520,7 +519,6 @@ def _get_breakdown_value(self, breakdown: str) -> str: from posthog.hogql.hogql import translate_hogql breakdown_value = translate_hogql(breakdown, self.filter.hogql_context) - elif self.filter.breakdown_type == "session": if breakdown == "$session_duration": # Return the session duration expression right away because it's already an number, @@ -528,20 +526,6 @@ def _get_breakdown_value(self, breakdown: str) -> str: breakdown_value = f"{SessionQuery.SESSION_TABLE_ALIAS}.session_duration" else: raise ValidationError(f'Invalid breakdown "{breakdown}" for breakdown type "session"') - - elif ( - self.person_on_events_mode != PersonsOnEventsMode.DISABLED - and self.filter.breakdown_type == "group" - and groups_on_events_querying_enabled() - ): - properties_field = f"group{self.filter.breakdown_group_type_index}_properties" - breakdown_value, _ = get_property_string_expr( - "events", - breakdown, - "%(key)s", - properties_field, - materialised_table_column=properties_field, - ) elif self.person_on_events_mode != PersonsOnEventsMode.DISABLED and self.filter.breakdown_type != "group": if self.filter.breakdown_type == "person": breakdown_value, _ = get_property_string_expr( diff --git a/posthog/settings/dynamic_settings.py b/posthog/settings/dynamic_settings.py index 7f16237912f6d..0f883965d2f45 100644 --- a/posthog/settings/dynamic_settings.py +++ b/posthog/settings/dynamic_settings.py @@ -41,11 +41,6 @@ "Whether to use query path using person_id and person_properties on events or the old query", bool, ), - "GROUPS_ON_EVENTS_ENABLED": ( - get_from_env("GROUPS_ON_EVENTS_ENABLED", False, type_cast=str_to_bool), - "Whether to use query path using group_properties on events or the old query", - bool, - ), "AUTO_START_ASYNC_MIGRATIONS": ( get_from_env("AUTO_START_ASYNC_MIGRATIONS", False, type_cast=str_to_bool), "Whether the earliest unapplied async migration should be triggered automatically on server startup.", @@ -212,7 +207,6 @@ "ASYNC_MIGRATIONS_OPT_OUT_EMAILS", "PERSON_ON_EVENTS_ENABLED", "PERSON_ON_EVENTS_V2_ENABLED", - "GROUPS_ON_EVENTS_ENABLED", "STRICT_CACHING_TEAMS", "SLACK_APP_CLIENT_ID", "SLACK_APP_CLIENT_SECRET", diff --git a/posthog/test/test_middleware.py b/posthog/test/test_middleware.py index dfbed651e918a..ce8bfeb71b7bb 100644 --- a/posthog/test/test_middleware.py +++ b/posthog/test/test_middleware.py @@ -124,7 +124,7 @@ class TestAutoProjectMiddleware(APIBaseTest): @classmethod def setUpTestData(cls): super().setUpTestData() - cls.base_app_num_queries = 41 + cls.base_app_num_queries = 40 # Create another team that the user does have access to cls.second_team = create_team(organization=cls.organization, name="Second Life") From 5617963e7acb27b4ad207dff08948f3f474b2f9f Mon Sep 17 00:00:00 2001 From: Julian Bez Date: Mon, 24 Jun 2024 15:42:47 +0100 Subject: [PATCH 06/24] chore: Update pyproject.toml for Python 3.11 (#23181) --- .../views/test/test_clickhouse_experiments.py | 6 +- .../test/test_summarize_session.py | 4 +- .../test/test_session_recording_extensions.py | 4 +- .../test/test_session_recording_playlist.py | 6 +- ee/tasks/subscriptions/subscription_utils.py | 2 +- posthog/api/app_metrics.py | 4 +- posthog/api/authentication.py | 2 +- .../api/test/batch_exports/test_log_entry.py | 10 +-- posthog/api/test/batch_exports/test_pause.py | 4 +- posthog/api/test/batch_exports/test_update.py | 4 +- posthog/api/test/test_app_metrics.py | 4 +- posthog/api/test/test_capture.py | 4 +- posthog/async_migrations/test/test_utils.py | 6 +- posthog/batch_exports/http.py | 6 +- posthog/batch_exports/service.py | 4 +- posthog/clickhouse/client/execute_async.py | 6 +- .../clickhouse/test/test_person_overrides.py | 4 +- posthog/demo/matrix/models.py | 4 +- posthog/hogql/test/test_resolver.py | 4 +- .../test/test_trends_actors_query_builder.py | 4 +- posthog/hogql_queries/query_runner.py | 8 +- posthog/jwt.py | 4 +- .../commands/create_batch_export_from_app.py | 2 +- .../management/commands/generate_demo_data.py | 2 +- posthog/management/commands/migrate_team.py | 4 +- .../commands/plugin_server_load_test.py | 2 +- .../test/test_sync_persons_to_clickhouse.py | 14 ++-- posthog/models/filters/stickiness_filter.py | 2 +- .../models/test/test_async_deletion_model.py | 8 +- .../models/test/test_person_override_model.py | 2 +- .../session_recording_api.py | 6 +- .../session_recording_helpers.py | 4 +- .../test/test_session_recordings.py | 4 +- .../test/test_process_scheduled_changes.py | 18 ++--- .../batch_exports/backfill_batch_export.py | 2 +- .../batch_exports/squash_person_overrides.py | 6 +- .../test_backfill_batch_export.py | 76 +++++++++---------- .../tests/batch_exports/test_batch_exports.py | 14 ++-- .../test_bigquery_batch_export_workflow.py | 16 ++-- .../test_http_batch_export_workflow.py | 10 +-- .../tests/batch_exports/test_logger.py | 12 +-- .../test_postgres_batch_export_workflow.py | 6 +- .../test_redshift_batch_export_workflow.py | 6 +- .../tests/batch_exports/test_run_updates.py | 16 ++-- .../test_s3_batch_export_workflow.py | 4 +- .../test_snowflake_batch_export_workflow.py | 4 +- .../test_squash_person_overrides_workflow.py | 6 +- posthog/temporal/tests/test_clickhouse.py | 4 +- posthog/temporal/tests/utils/datetimes.py | 2 +- posthog/test/test_datetime.py | 4 +- posthog/utils.py | 4 +- .../external_data_source/workspace.py | 2 +- pyproject.toml | 4 +- requirements-dev.in | 2 +- requirements-dev.txt | 3 +- 55 files changed, 184 insertions(+), 191 deletions(-) diff --git a/ee/clickhouse/views/test/test_clickhouse_experiments.py b/ee/clickhouse/views/test/test_clickhouse_experiments.py index 1a5735473ffa0..a67d6523858f2 100644 --- a/ee/clickhouse/views/test/test_clickhouse_experiments.py +++ b/ee/clickhouse/views/test/test_clickhouse_experiments.py @@ -1,4 +1,4 @@ -from datetime import datetime, timedelta, timezone +from datetime import datetime, timedelta, UTC from django.core.cache import cache from flaky import flaky from rest_framework import status @@ -1601,8 +1601,8 @@ def test_create_exposure_cohort_for_experiment_with_custom_action_filters_exposu explicit_datetime = parser.isoparse(target_filter["explicit_datetime"]) self.assertTrue( - explicit_datetime <= datetime.now(timezone.utc) - timedelta(days=5) - and explicit_datetime >= datetime.now(timezone.utc) - timedelta(days=5, hours=1) + explicit_datetime <= datetime.now(UTC) - timedelta(days=5) + and explicit_datetime >= datetime.now(UTC) - timedelta(days=5, hours=1) ) cohort_id = cohort["id"] diff --git a/ee/session_recordings/session_summary/test/test_summarize_session.py b/ee/session_recordings/session_summary/test/test_summarize_session.py index 69412608dd3b9..3cc69df02b18b 100644 --- a/ee/session_recordings/session_summary/test/test_summarize_session.py +++ b/ee/session_recordings/session_summary/test/test_summarize_session.py @@ -1,4 +1,4 @@ -from datetime import timezone, datetime +from datetime import datetime, UTC from dateutil.parser import isoparse @@ -23,7 +23,7 @@ def test_format_dates_as_millis_since_start(self) -> None: ["$pageview", isoparse("2021-01-01T00:00:02Z")], ], ), - datetime(2021, 1, 1, 0, 0, 0, tzinfo=timezone.utc), + datetime(2021, 1, 1, 0, 0, 0, tzinfo=UTC), ) assert processed.columns == ["event", "milliseconds_since_start"] assert processed.results == [["$pageview", 0], ["$pageview", 1000], ["$pageview", 2000]] diff --git a/ee/session_recordings/test/test_session_recording_extensions.py b/ee/session_recordings/test/test_session_recording_extensions.py index ad545e5cec33f..e425213f747a2 100644 --- a/ee/session_recordings/test/test_session_recording_extensions.py +++ b/ee/session_recordings/test/test_session_recording_extensions.py @@ -1,5 +1,5 @@ import gzip -from datetime import timedelta, datetime, timezone +from datetime import timedelta, datetime, UTC from secrets import token_urlsafe from unittest.mock import patch, MagicMock from uuid import uuid4 @@ -84,7 +84,7 @@ def test_can_build_different_object_storage_paths(self) -> None: def test_persists_recording_from_blob_ingested_storage(self): with self.settings(OBJECT_STORAGE_SESSION_RECORDING_BLOB_INGESTION_FOLDER=TEST_BUCKET): - two_minutes_ago = (datetime.now() - timedelta(minutes=2)).replace(tzinfo=timezone.utc) + two_minutes_ago = (datetime.now() - timedelta(minutes=2)).replace(tzinfo=UTC) with freeze_time(two_minutes_ago): session_id = f"test_persists_recording_from_blob_ingested_storage-s1-{uuid4()}" diff --git a/ee/session_recordings/test/test_session_recording_playlist.py b/ee/session_recordings/test/test_session_recording_playlist.py index 6fb6a730a7aae..0ec14e0decb15 100644 --- a/ee/session_recordings/test/test_session_recording_playlist.py +++ b/ee/session_recordings/test/test_session_recording_playlist.py @@ -1,4 +1,4 @@ -from datetime import datetime, timedelta, timezone +from datetime import datetime, timedelta, UTC from unittest import mock from unittest.mock import MagicMock, patch from uuid import uuid4 @@ -187,7 +187,7 @@ def test_get_pinned_recordings_for_playlist(self, mock_copy_objects: MagicMock) session_one = f"test_fetch_playlist_recordings-session1-{uuid4()}" session_two = f"test_fetch_playlist_recordings-session2-{uuid4()}" - three_days_ago = (datetime.now() - timedelta(days=3)).replace(tzinfo=timezone.utc) + three_days_ago = (datetime.now() - timedelta(days=3)).replace(tzinfo=UTC) produce_replay_summary( team_id=self.team.id, @@ -242,7 +242,7 @@ def test_fetch_playlist_recordings(self, mock_copy_objects: MagicMock, mock_list session_one = f"test_fetch_playlist_recordings-session1-{uuid4()}" session_two = f"test_fetch_playlist_recordings-session2-{uuid4()}" - three_days_ago = (datetime.now() - timedelta(days=3)).replace(tzinfo=timezone.utc) + three_days_ago = (datetime.now() - timedelta(days=3)).replace(tzinfo=UTC) for session_id in [session_one, session_two]: produce_replay_summary( diff --git a/ee/tasks/subscriptions/subscription_utils.py b/ee/tasks/subscriptions/subscription_utils.py index 6fa4b63960fc2..eb8afed13cbaf 100644 --- a/ee/tasks/subscriptions/subscription_utils.py +++ b/ee/tasks/subscriptions/subscription_utils.py @@ -56,7 +56,7 @@ def generate_assets( # Wait for all assets to be exported tasks = [exporter.export_asset.si(asset.id) for asset in assets] # run them one after the other, so we don't exhaust celery workers - exports_expire = datetime.datetime.now(tz=datetime.timezone.utc) + datetime.timedelta( + exports_expire = datetime.datetime.now(tz=datetime.UTC) + datetime.timedelta( minutes=settings.PARALLEL_ASSET_GENERATION_MAX_TIMEOUT_MINUTES ) parallel_job = chain(*tasks).apply_async(expires=exports_expire, retry=False) diff --git a/posthog/api/app_metrics.py b/posthog/api/app_metrics.py index 6fe56947b42c7..12d5483873768 100644 --- a/posthog/api/app_metrics.py +++ b/posthog/api/app_metrics.py @@ -90,9 +90,7 @@ def get_batch_export_runs_app_metrics_queryset(self, batch_export_id: str): after = self.request.GET.get("date_from", "-30d") before = self.request.GET.get("date_to", None) after_datetime = relative_date_parse(after, self.team.timezone_info) - before_datetime = ( - relative_date_parse(before, self.team.timezone_info) if before else dt.datetime.now(dt.timezone.utc) - ) + before_datetime = relative_date_parse(before, self.team.timezone_info) if before else dt.datetime.now(dt.UTC) date_range = (after_datetime, before_datetime) runs = ( BatchExportRun.objects.select_related("batch_export__destination") diff --git a/posthog/api/authentication.py b/posthog/api/authentication.py index d82d958f27428..b04707ca559de 100644 --- a/posthog/api/authentication.py +++ b/posthog/api/authentication.py @@ -290,7 +290,7 @@ def create(self, validated_data): user = None if user: - user.requested_password_reset_at = datetime.datetime.now(datetime.timezone.utc) + user.requested_password_reset_at = datetime.datetime.now(datetime.UTC) user.save() token = password_reset_token_generator.make_token(user) send_password_reset(user.id, token) diff --git a/posthog/api/test/batch_exports/test_log_entry.py b/posthog/api/test/batch_exports/test_log_entry.py index b166583ee0b87..06dcb6ce4a8d2 100644 --- a/posthog/api/test/batch_exports/test_log_entry.py +++ b/posthog/api/test/batch_exports/test_log_entry.py @@ -38,7 +38,7 @@ def create_batch_export_log_entry( "log_source": "batch_exports", "log_source_id": batch_export_id, "instance_id": run_id, - "timestamp": dt.datetime.now(dt.timezone.utc).strftime("%Y-%m-%d %H:%M:%S.%f"), + "timestamp": dt.datetime.now(dt.UTC).strftime("%Y-%m-%d %H:%M:%S.%f"), "level": level, "message": message, }, @@ -147,7 +147,7 @@ def test_log_level_filter(batch_export, team, level): results = [] timeout = 10 - start = dt.datetime.now(dt.timezone.utc) + start = dt.datetime.now(dt.UTC) while not results: results = fetch_batch_export_log_entries( @@ -157,7 +157,7 @@ def test_log_level_filter(batch_export, team, level): after=dt.datetime(2023, 9, 22, 0, 59, 59), before=dt.datetime(2023, 9, 22, 1, 0, 1), ) - if (dt.datetime.now(dt.timezone.utc) - start) > dt.timedelta(seconds=timeout): + if (dt.datetime.now(dt.UTC) - start) > dt.timedelta(seconds=timeout): break results.sort(key=lambda record: record.message) @@ -195,7 +195,7 @@ def test_log_level_filter_with_lowercase(batch_export, team, level): results = [] timeout = 10 - start = dt.datetime.now(dt.timezone.utc) + start = dt.datetime.now(dt.UTC) while not results: results = fetch_batch_export_log_entries( @@ -205,7 +205,7 @@ def test_log_level_filter_with_lowercase(batch_export, team, level): after=dt.datetime(2023, 9, 22, 0, 59, 59), before=dt.datetime(2023, 9, 22, 1, 0, 1), ) - if (dt.datetime.now(dt.timezone.utc) - start) > dt.timedelta(seconds=timeout): + if (dt.datetime.now(dt.UTC) - start) > dt.timedelta(seconds=timeout): break results.sort(key=lambda record: record.message) diff --git a/posthog/api/test/batch_exports/test_pause.py b/posthog/api/test/batch_exports/test_pause.py index 7db786347e09c..33c32f1a200bc 100644 --- a/posthog/api/test/batch_exports/test_pause.py +++ b/posthog/api/test/batch_exports/test_pause.py @@ -397,8 +397,8 @@ def test_unpause_can_trigger_a_backfill(client: HttpClient): data = get_batch_export_ok(client, team.pk, batch_export_id) assert batch_export["last_updated_at"] < data["last_updated_at"] - start_at = dt.datetime.strptime(data["last_paused_at"], "%Y-%m-%dT%H:%M:%S.%fZ").replace(tzinfo=dt.timezone.utc) - end_at = dt.datetime.strptime(data["last_updated_at"], "%Y-%m-%dT%H:%M:%S.%fZ").replace(tzinfo=dt.timezone.utc) + start_at = dt.datetime.strptime(data["last_paused_at"], "%Y-%m-%dT%H:%M:%S.%fZ").replace(tzinfo=dt.UTC) + end_at = dt.datetime.strptime(data["last_updated_at"], "%Y-%m-%dT%H:%M:%S.%fZ").replace(tzinfo=dt.UTC) mock_backfill.assert_called_once_with( ANY, batch_export["id"], diff --git a/posthog/api/test/batch_exports/test_update.py b/posthog/api/test/batch_exports/test_update.py index 30333c206f953..08c42e51aa303 100644 --- a/posthog/api/test/batch_exports/test_update.py +++ b/posthog/api/test/batch_exports/test_update.py @@ -94,8 +94,8 @@ def test_can_put_config(client: HttpClient): new_schedule = describe_schedule(temporal, batch_export["id"]) assert old_schedule.schedule.spec.intervals[0].every != new_schedule.schedule.spec.intervals[0].every assert new_schedule.schedule.spec.intervals[0].every == dt.timedelta(days=1) - assert new_schedule.schedule.spec.start_at == dt.datetime(2022, 7, 19, 0, 0, 0, tzinfo=dt.timezone.utc) - assert new_schedule.schedule.spec.end_at == dt.datetime(2023, 7, 20, 0, 0, 0, tzinfo=dt.timezone.utc) + assert new_schedule.schedule.spec.start_at == dt.datetime(2022, 7, 19, 0, 0, 0, tzinfo=dt.UTC) + assert new_schedule.schedule.spec.end_at == dt.datetime(2023, 7, 20, 0, 0, 0, tzinfo=dt.UTC) decoded_payload = async_to_sync(codec.decode)(new_schedule.schedule.action.args) args = json.loads(decoded_payload[0].data) diff --git a/posthog/api/test/test_app_metrics.py b/posthog/api/test/test_app_metrics.py index a6c154bea5062..d3c6a351b6c67 100644 --- a/posthog/api/test/test_app_metrics.py +++ b/posthog/api/test/test_app_metrics.py @@ -116,7 +116,7 @@ def test_retrieve_batch_export_runs_app_metrics(self): temporal = sync_connect() - now = dt.datetime(2021, 12, 5, 13, 23, 0, tzinfo=dt.timezone.utc) + now = dt.datetime(2021, 12, 5, 13, 23, 0, tzinfo=dt.UTC) with start_test_worker(temporal): response = create_batch_export_ok( self.client, @@ -213,7 +213,7 @@ def test_retrieve_batch_export_runs_app_metrics_defaults_to_zero(self): } temporal = sync_connect() - now = dt.datetime(2021, 12, 5, 13, 23, 0, tzinfo=dt.timezone.utc) + now = dt.datetime(2021, 12, 5, 13, 23, 0, tzinfo=dt.UTC) with start_test_worker(temporal): response = create_batch_export_ok( diff --git a/posthog/api/test/test_capture.py b/posthog/api/test/test_capture.py index 9762473a3a869..df72aa8fd6dc0 100644 --- a/posthog/api/test/test_capture.py +++ b/posthog/api/test/test_capture.py @@ -13,7 +13,7 @@ import structlog import zlib from datetime import datetime, timedelta -from datetime import timezone as tz +from datetime import UTC from django.http import HttpResponse from django.test.client import MULTIPART_CONTENT, Client from django.utils import timezone @@ -1305,7 +1305,7 @@ def test_js_library_underscore_sent_at(self, kafka_produce): # right time sent as sent_at to process_event sent_at = datetime.fromisoformat(arguments["sent_at"]) - self.assertEqual(sent_at.tzinfo, tz.utc) + self.assertEqual(sent_at.tzinfo, UTC) timediff = sent_at.timestamp() - tomorrow_sent_at.timestamp() self.assertLess(abs(timediff), 1) diff --git a/posthog/async_migrations/test/test_utils.py b/posthog/async_migrations/test/test_utils.py index da01ec9dda54d..15d88019e785f 100644 --- a/posthog/async_migrations/test/test_utils.py +++ b/posthog/async_migrations/test/test_utils.py @@ -1,4 +1,4 @@ -from datetime import datetime, timedelta, timezone +from datetime import datetime, timedelta, UTC from unittest.mock import patch import pytest @@ -49,7 +49,7 @@ def test_process_error(self, _): sm.refresh_from_db() self.assertEqual(sm.status, MigrationStatus.Errored) - self.assertGreater(sm.finished_at, datetime.now(timezone.utc) - timedelta(hours=1)) + self.assertGreater(sm.finished_at, datetime.now(UTC) - timedelta(hours=1)) errors = AsyncMigrationError.objects.filter(async_migration=sm).order_by("created_at") self.assertEqual(errors.count(), 2) self.assertEqual(errors[0].description, "some error") @@ -81,7 +81,7 @@ def test_complete_migration(self): sm.refresh_from_db() self.assertEqual(sm.status, MigrationStatus.CompletedSuccessfully) - self.assertGreater(sm.finished_at, datetime.now(timezone.utc) - timedelta(hours=1)) + self.assertGreater(sm.finished_at, datetime.now(UTC) - timedelta(hours=1)) self.assertEqual(sm.progress, 100) errors = AsyncMigrationError.objects.filter(async_migration=sm) diff --git a/posthog/batch_exports/http.py b/posthog/batch_exports/http.py index 9977b3bc75729..021ce2faccf36 100644 --- a/posthog/batch_exports/http.py +++ b/posthog/batch_exports/http.py @@ -76,11 +76,11 @@ def validate_date_input(date_input: Any, team: Team | None = None) -> dt.datetim if parsed.tzinfo is None: if team: - parsed = parsed.replace(tzinfo=team.timezone_info).astimezone(dt.timezone.utc) + parsed = parsed.replace(tzinfo=team.timezone_info).astimezone(dt.UTC) else: - parsed = parsed.replace(tzinfo=dt.timezone.utc) + parsed = parsed.replace(tzinfo=dt.UTC) else: - parsed = parsed.astimezone(dt.timezone.utc) + parsed = parsed.astimezone(dt.UTC) return parsed diff --git a/posthog/batch_exports/service.py b/posthog/batch_exports/service.py index 89992d2228f75..fe16a53c6dc81 100644 --- a/posthog/batch_exports/service.py +++ b/posthog/batch_exports/service.py @@ -257,7 +257,7 @@ def pause_batch_export(temporal: Client, batch_export_id: str, note: str | None raise BatchExportServiceRPCError(f"BatchExport {batch_export_id} could not be paused") from exc batch_export.paused = True - batch_export.last_paused_at = dt.datetime.now(dt.timezone.utc) + batch_export.last_paused_at = dt.datetime.now(dt.UTC) batch_export.save() return True @@ -285,7 +285,7 @@ async def apause_batch_export(temporal: Client, batch_export_id: str, note: str raise BatchExportServiceRPCError(f"BatchExport {batch_export_id} could not be paused") from exc batch_export.paused = True - batch_export.last_paused_at = dt.datetime.now(dt.timezone.utc) + batch_export.last_paused_at = dt.datetime.now(dt.UTC) await batch_export.asave() return True diff --git a/posthog/clickhouse/client/execute_async.py b/posthog/clickhouse/client/execute_async.py index 23aac6cdd5b4d..b863a0f251068 100644 --- a/posthog/clickhouse/client/execute_async.py +++ b/posthog/clickhouse/client/execute_async.py @@ -154,7 +154,7 @@ def execute_process_query( query_status.error = True # Assume error in case nothing below ends up working - pickup_time = datetime.datetime.now(datetime.timezone.utc) + pickup_time = datetime.datetime.now(datetime.UTC) if query_status.start_time: wait_duration = (pickup_time - query_status.start_time) / datetime.timedelta(seconds=1) QUERY_WAIT_TIME.labels(team=team_id).observe(wait_duration) @@ -173,7 +173,7 @@ def execute_process_query( query_status.complete = True query_status.error = False query_status.results = results - query_status.end_time = datetime.datetime.now(datetime.timezone.utc) + query_status.end_time = datetime.datetime.now(datetime.UTC) query_status.expiration_time = query_status.end_time + datetime.timedelta(seconds=manager.STATUS_TTL_SECONDS) process_duration = (query_status.end_time - pickup_time) / datetime.timedelta(seconds=1) QUERY_PROCESS_TIME.labels(team=team_id).observe(process_duration) @@ -232,7 +232,7 @@ def enqueue_process_query_task( return manager.get_query_status() # Immediately set status, so we don't have race with celery - query_status = QueryStatus(id=query_id, team_id=team.id, start_time=datetime.datetime.now(datetime.timezone.utc)) + query_status = QueryStatus(id=query_id, team_id=team.id, start_time=datetime.datetime.now(datetime.UTC)) manager.store_query_status(query_status) if _test_only_bypass_celery: diff --git a/posthog/clickhouse/test/test_person_overrides.py b/posthog/clickhouse/test/test_person_overrides.py index ec632eebe7774..4dbf0900b5387 100644 --- a/posthog/clickhouse/test/test_person_overrides.py +++ b/posthog/clickhouse/test/test_person_overrides.py @@ -1,5 +1,5 @@ import json -from datetime import datetime, timedelta, timezone +from datetime import datetime, timedelta, UTC from time import sleep from typing import TypedDict from uuid import UUID, uuid4 @@ -124,7 +124,7 @@ def test_person_overrides_dict(): "override_person_id": uuid4(), "merged_at": datetime.fromisoformat("2020-01-02T00:00:00+00:00"), "oldest_event": datetime.fromisoformat("2020-01-01T00:00:00+00:00"), - "created_at": datetime.now(timezone.utc), + "created_at": datetime.now(UTC), "version": 1, } diff --git a/posthog/demo/matrix/models.py b/posthog/demo/matrix/models.py index c09fcae8cbb03..1d3af8cbfeecf 100644 --- a/posthog/demo/matrix/models.py +++ b/posthog/demo/matrix/models.py @@ -106,9 +106,7 @@ class SimEvent: group4_created_at: Optional[dt.datetime] = None def __str__(self) -> str: - separator = ( - "-" if self.timestamp < dt.datetime.now(dt.timezone.utc) else "+" - ) # Future events are denoted by a '+' + separator = "-" if self.timestamp < dt.datetime.now(dt.UTC) else "+" # Future events are denoted by a '+' display = f"{self.timestamp} {separator} {self.event} # {self.distinct_id}" if current_url := self.properties.get("$current_url"): display += f" @ {current_url}" diff --git a/posthog/hogql/test/test_resolver.py b/posthog/hogql/test/test_resolver.py index c0555a8bebe5e..44b7e5d616496 100644 --- a/posthog/hogql/test/test_resolver.py +++ b/posthog/hogql/test/test_resolver.py @@ -1,4 +1,4 @@ -from datetime import timezone, datetime, date +from datetime import datetime, date, UTC from typing import Optional, cast import pytest from django.test import override_settings @@ -97,7 +97,7 @@ def test_resolve_constant_type(self): "SELECT 1, 'boo', true, 1.1232, null, {date}, {datetime}, {uuid}, {array}, {array12}, {tuple}", placeholders={ "date": ast.Constant(value=date(2020, 1, 10)), - "datetime": ast.Constant(value=datetime(2020, 1, 10, 0, 0, 0, tzinfo=timezone.utc)), + "datetime": ast.Constant(value=datetime(2020, 1, 10, 0, 0, 0, tzinfo=UTC)), "uuid": ast.Constant(value=UUID("00000000-0000-4000-8000-000000000000")), "array": ast.Constant(value=[]), "array12": ast.Constant(value=[1, 2]), diff --git a/posthog/hogql_queries/insights/trends/test/test_trends_actors_query_builder.py b/posthog/hogql_queries/insights/trends/test/test_trends_actors_query_builder.py index fd95febddf61a..b12f15ac6411c 100644 --- a/posthog/hogql_queries/insights/trends/test/test_trends_actors_query_builder.py +++ b/posthog/hogql_queries/insights/trends/test/test_trends_actors_query_builder.py @@ -1,4 +1,4 @@ -from datetime import datetime, timezone +from datetime import datetime, UTC from typing import Optional, cast from freezegun import freeze_time @@ -70,7 +70,7 @@ def _get_date_where_sql(self, **kwargs): def _get_utc_string(self, dt: datetime | None) -> str | None: if dt is None: return None - return dt.astimezone(timezone.utc).strftime("%Y-%m-%d %H:%M:%SZ") + return dt.astimezone(UTC).strftime("%Y-%m-%d %H:%M:%SZ") def test_time_frame(self): self.team.timezone = "Europe/Berlin" diff --git a/posthog/hogql_queries/query_runner.py b/posthog/hogql_queries/query_runner.py index a517dcd0a632f..0c22271b9c4e4 100644 --- a/posthog/hogql_queries/query_runner.py +++ b/posthog/hogql_queries/query_runner.py @@ -1,5 +1,5 @@ from abc import ABC, abstractmethod -from datetime import datetime, timedelta, timezone +from datetime import datetime, timedelta, UTC from enum import IntEnum from typing import Any, Generic, Optional, TypeVar, Union, cast, TypeGuard from zoneinfo import ZoneInfo @@ -445,7 +445,7 @@ def handle_cache_and_async_logic( elif execution_mode == ExecutionMode.EXTENDED_CACHE_CALCULATE_ASYNC_IF_STALE: # We're allowed to calculate if the cache is older than 24 hours, but we'll do it asynchronously assert isinstance(cached_response, CachedResponse) - if datetime.now(timezone.utc) - cached_response.last_refresh > EXTENDED_CACHE_AGE: + if datetime.now(UTC) - cached_response.last_refresh > EXTENDED_CACHE_AGE: query_status_response = self.enqueue_async_calculation(cache_key=cache_key, user=user) cached_response.query_status = query_status_response.query_status return cached_response @@ -490,8 +490,8 @@ def run( fresh_response_dict = { **self.calculate().model_dump(), "is_cached": False, - "last_refresh": datetime.now(timezone.utc), - "next_allowed_client_refresh": datetime.now(timezone.utc) + self._refresh_frequency(), + "last_refresh": datetime.now(UTC), + "next_allowed_client_refresh": datetime.now(UTC) + self._refresh_frequency(), "cache_key": cache_key, "timezone": self.team.timezone, } diff --git a/posthog/jwt.py b/posthog/jwt.py index ead4196aa4730..897abf98ee9a0 100644 --- a/posthog/jwt.py +++ b/posthog/jwt.py @@ -1,4 +1,4 @@ -from datetime import datetime, timedelta, timezone +from datetime import datetime, timedelta, UTC from enum import Enum from typing import Any @@ -23,7 +23,7 @@ def encode_jwt(payload: dict, expiry_delta: timedelta, audience: PosthogJwtAudie encoded_jwt = jwt.encode( { **payload, - "exp": datetime.now(tz=timezone.utc) + expiry_delta, + "exp": datetime.now(tz=UTC) + expiry_delta, "aud": audience.value, }, settings.SECRET_KEY, diff --git a/posthog/management/commands/create_batch_export_from_app.py b/posthog/management/commands/create_batch_export_from_app.py index 90806ad900fee..80907dccea7f7 100644 --- a/posthog/management/commands/create_batch_export_from_app.py +++ b/posthog/management/commands/create_batch_export_from_app.py @@ -116,7 +116,7 @@ def handle(self, *args, **options): if options.get("backfill_batch_export", False) and dry_run is False: client = sync_connect() - end_at = dt.datetime.now(dt.timezone.utc) + end_at = dt.datetime.now(dt.UTC) start_at = end_at - (dt.timedelta(hours=1) if interval == "hour" else dt.timedelta(days=1)) backfill_export( client, diff --git a/posthog/management/commands/generate_demo_data.py b/posthog/management/commands/generate_demo_data.py index f75f151259570..ce094620453a1 100644 --- a/posthog/management/commands/generate_demo_data.py +++ b/posthog/management/commands/generate_demo_data.py @@ -65,7 +65,7 @@ def add_arguments(self, parser): def handle(self, *args, **options): timer = monotonic() seed = options.get("seed") or secrets.token_hex(16) - now = options.get("now") or dt.datetime.now(dt.timezone.utc) + now = options.get("now") or dt.datetime.now(dt.UTC) existing_team_id = options.get("team_id") if ( existing_team_id is not None diff --git a/posthog/management/commands/migrate_team.py b/posthog/management/commands/migrate_team.py index d964a7db0c07b..e2395a46e2ad5 100644 --- a/posthog/management/commands/migrate_team.py +++ b/posthog/management/commands/migrate_team.py @@ -254,7 +254,7 @@ def create_migration( raise CommandError("Didn't receive 'y', exiting") print() # noqa: T201 - now = dt.datetime.now(dt.timezone.utc) + now = dt.datetime.now(dt.UTC) # This is a precaution so we don't accidentally leave the export running indefinitely. end_at = now + dt.timedelta(days=end_days_from_now) @@ -299,5 +299,5 @@ def parse_to_utc(date_str: str) -> dt.datetime: except ValueError: raise ValueError("Invalid date format. Expected 'YYYY-MM-DD' or 'YYYY-MM-DD HH:MM:SS'.") - utc_datetime = parsed_datetime.replace(tzinfo=dt.timezone.utc) + utc_datetime = parsed_datetime.replace(tzinfo=dt.UTC) return utc_datetime diff --git a/posthog/management/commands/plugin_server_load_test.py b/posthog/management/commands/plugin_server_load_test.py index 4adfe8941e644..a97a5f6973804 100644 --- a/posthog/management/commands/plugin_server_load_test.py +++ b/posthog/management/commands/plugin_server_load_test.py @@ -63,7 +63,7 @@ def add_arguments(self, parser): def handle(self, *args, **options): seed = options.get("seed") or secrets.token_hex(16) - now = options.get("now") or dt.datetime.now(dt.timezone.utc) + now = options.get("now") or dt.datetime.now(dt.UTC) admin = KafkaAdminClient(bootstrap_servers=settings.KAFKA_HOSTS) consumer = KafkaConsumer(KAFKA_EVENTS_PLUGIN_INGESTION_TOPIC, bootstrap_servers=settings.KAFKA_HOSTS) diff --git a/posthog/management/commands/test/test_sync_persons_to_clickhouse.py b/posthog/management/commands/test/test_sync_persons_to_clickhouse.py index 3609a358054bd..b38d0fbe138fb 100644 --- a/posthog/management/commands/test/test_sync_persons_to_clickhouse.py +++ b/posthog/management/commands/test/test_sync_persons_to_clickhouse.py @@ -1,5 +1,5 @@ import logging -from datetime import datetime, timedelta, timezone +from datetime import datetime, timedelta, UTC from unittest import mock from uuid import UUID, uuid4 @@ -143,7 +143,7 @@ def test_distinct_ids_deleted(self): wraps=posthog.management.commands.sync_persons_to_clickhouse.raw_create_group_ch, ) def test_group_sync(self, mocked_ch_call): - ts = datetime.now(timezone.utc) + ts = datetime.now(UTC) Group.objects.create( team_id=self.team.pk, group_type_index=2, @@ -183,12 +183,12 @@ def test_group_sync_updates_group(self, mocked_ch_call): 2, "group-key", {"a": 5}, - timestamp=datetime.now(timezone.utc) - timedelta(hours=3), + timestamp=datetime.now(UTC) - timedelta(hours=3), ) group.group_properties = {"a": 5, "b": 3} group.save() - ts_before = datetime.now(timezone.utc) + ts_before = datetime.now(UTC) run_group_sync(self.team.pk, live_run=True, sync=True) mocked_ch_call.assert_called_once() @@ -213,7 +213,7 @@ def test_group_sync_updates_group(self, mocked_ch_call): ) self.assertLessEqual( ch_group[4].strftime("%Y-%m-%d %H:%M:%S"), - datetime.now(timezone.utc).strftime("%Y-%m-%d %H:%M:%S"), + datetime.now(UTC).strftime("%Y-%m-%d %H:%M:%S"), ) # second time it's a no-op @@ -225,7 +225,7 @@ def test_group_sync_updates_group(self, mocked_ch_call): wraps=posthog.management.commands.sync_persons_to_clickhouse.raw_create_group_ch, ) def test_group_sync_multiple_entries(self, mocked_ch_call): - ts = datetime.now(timezone.utc) + ts = datetime.now(UTC) Group.objects.create( team_id=self.team.pk, group_type_index=2, @@ -430,7 +430,7 @@ def everything_test_run(self, live_run): group_type_index=2, group_key="group-key", group_properties={"a": 1234}, - created_at=datetime.now(timezone.utc) - timedelta(hours=3), + created_at=datetime.now(UTC) - timedelta(hours=3), version=5, ) diff --git a/posthog/models/filters/stickiness_filter.py b/posthog/models/filters/stickiness_filter.py index cde6d8020928f..d19b2418e0655 100644 --- a/posthog/models/filters/stickiness_filter.py +++ b/posthog/models/filters/stickiness_filter.py @@ -72,7 +72,7 @@ def __init__( else: data = {"insight": INSIGHT_STICKINESS} super().__init__(data, request, **kwargs) - team: Optional["Team"] = kwargs.get("team", None) + team: Optional[Team] = kwargs.get("team", None) if not team: raise ValidationError("Team must be provided to stickiness filter") self.team = team diff --git a/posthog/models/test/test_async_deletion_model.py b/posthog/models/test/test_async_deletion_model.py index 060c938186689..8f4125be67a3c 100644 --- a/posthog/models/test/test_async_deletion_model.py +++ b/posthog/models/test/test_async_deletion_model.py @@ -65,7 +65,7 @@ def test_mark_deletions_done_team_when_not_done(self): @snapshot_clickhouse_queries def test_mark_deletions_done_person(self): - base_datetime = dt.datetime(2024, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc) + base_datetime = dt.datetime(2024, 1, 1, 0, 0, 0, tzinfo=dt.UTC) _create_event( event_uuid=uuid4(), @@ -101,7 +101,7 @@ def test_mark_deletions_done_person(self): @snapshot_clickhouse_queries def test_mark_deletions_done_person_when_not_done(self): - base_datetime = dt.datetime(2024, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc) + base_datetime = dt.datetime(2024, 1, 1, 0, 0, 0, tzinfo=dt.UTC) _create_event( event_uuid=uuid4(), @@ -226,7 +226,7 @@ def test_delete_teams_unrelated(self): @snapshot_clickhouse_alter_queries def test_delete_person(self): - base_datetime = dt.datetime(2024, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc) + base_datetime = dt.datetime(2024, 1, 1, 0, 0, 0, tzinfo=dt.UTC) # Event for person, created before AsyncDeletion, so it should be deleted _create_event( @@ -264,7 +264,7 @@ def test_delete_person(self): @snapshot_clickhouse_alter_queries def test_delete_person_unrelated(self): - base_datetime = dt.datetime(2024, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc) + base_datetime = dt.datetime(2024, 1, 1, 0, 0, 0, tzinfo=dt.UTC) _create_event( event_uuid=uuid4(), diff --git a/posthog/models/test/test_person_override_model.py b/posthog/models/test/test_person_override_model.py index d080970329664..ea64d7a9c9749 100644 --- a/posthog/models/test/test_person_override_model.py +++ b/posthog/models/test/test_person_override_model.py @@ -48,7 +48,7 @@ def people(team): @pytest.fixture def oldest_event(): - return dt.datetime.now(dt.timezone.utc) + return dt.datetime.now(dt.UTC) @pytest.mark.django_db(transaction=True) diff --git a/posthog/session_recordings/session_recording_api.py b/posthog/session_recordings/session_recording_api.py index e0ac5d701a3eb..e4ecc1ccfe37a 100644 --- a/posthog/session_recordings/session_recording_api.py +++ b/posthog/session_recordings/session_recording_api.py @@ -1,7 +1,7 @@ import os import time from contextlib import contextmanager -from datetime import datetime, timedelta, timezone +from datetime import datetime, timedelta, UTC from prometheus_client import Histogram import json from typing import Any, cast @@ -430,7 +430,7 @@ def _gather_session_recording_sources(self, recording: SessionRecording) -> Resp # Keys are like 1619712000-1619712060 blob_key = full_key.replace(blob_prefix.rstrip("/") + "/", "") blob_key_base = blob_key.split(".")[0] # Remove the extension if it exists - time_range = [datetime.fromtimestamp(int(x) / 1000, tz=timezone.utc) for x in blob_key_base.split("-")] + time_range = [datetime.fromtimestamp(int(x) / 1000, tz=UTC) for x in blob_key_base.split("-")] sources.append( { @@ -446,7 +446,7 @@ def _gather_session_recording_sources(self, recording: SessionRecording) -> Resp newest_timestamp = min(sources, key=lambda k: k["end_timestamp"])["end_timestamp"] if might_have_realtime: - might_have_realtime = oldest_timestamp + timedelta(hours=24) > datetime.now(timezone.utc) + might_have_realtime = oldest_timestamp + timedelta(hours=24) > datetime.now(UTC) if might_have_realtime: sources.append( { diff --git a/posthog/session_recordings/session_recording_helpers.py b/posthog/session_recordings/session_recording_helpers.py index 8dfb1c0ad2396..c54117603c92d 100644 --- a/posthog/session_recordings/session_recording_helpers.py +++ b/posthog/session_recordings/session_recording_helpers.py @@ -2,7 +2,7 @@ import gzip import json from collections import defaultdict -from datetime import datetime, timezone +from datetime import datetime, UTC from typing import Any from collections.abc import Callable, Generator @@ -268,7 +268,7 @@ def is_active_event(event: SessionRecordingEventSummary) -> bool: def parse_snapshot_timestamp(timestamp: int): - return datetime.fromtimestamp(timestamp / 1000, timezone.utc) + return datetime.fromtimestamp(timestamp / 1000, UTC) def convert_to_timestamp(source: str) -> int: diff --git a/posthog/session_recordings/test/test_session_recordings.py b/posthog/session_recordings/test/test_session_recordings.py index eee3c288c3be9..bed84f6be517a 100644 --- a/posthog/session_recordings/test/test_session_recordings.py +++ b/posthog/session_recordings/test/test_session_recordings.py @@ -1,7 +1,7 @@ import json import time import uuid -from datetime import datetime, timedelta, timezone +from datetime import datetime, timedelta, UTC from unittest.mock import ANY, patch, MagicMock, call from urllib.parse import urlencode @@ -395,7 +395,7 @@ def test_get_single_session_recording_metadata(self): "distinct_id": "d1", "viewed": False, "recording_duration": 30, - "start_time": base_time.replace(tzinfo=timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ"), + "start_time": base_time.replace(tzinfo=UTC).strftime("%Y-%m-%dT%H:%M:%SZ"), "end_time": (base_time + relativedelta(seconds=30)).strftime("%Y-%m-%dT%H:%M:%SZ"), "click_count": 0, "keypress_count": 0, diff --git a/posthog/tasks/test/test_process_scheduled_changes.py b/posthog/tasks/test/test_process_scheduled_changes.py index 0e1fb9b9db3f8..452c97a6e24e1 100644 --- a/posthog/tasks/test/test_process_scheduled_changes.py +++ b/posthog/tasks/test/test_process_scheduled_changes.py @@ -1,4 +1,4 @@ -from datetime import datetime, timedelta, timezone +from datetime import datetime, timedelta, UTC from posthog.models import ScheduledChange, FeatureFlag from posthog.test.base import APIBaseTest, QueryMatchingTest, snapshot_postgres_queries from posthog.tasks.process_scheduled_changes import process_scheduled_changes @@ -21,7 +21,7 @@ def test_schedule_feature_flag_set_active(self) -> None: record_id=feature_flag.id, model_name="FeatureFlag", payload={"operation": "update_status", "value": True}, - scheduled_at=(datetime.now(timezone.utc) - timedelta(seconds=30)).isoformat(), + scheduled_at=(datetime.now(UTC) - timedelta(seconds=30)).isoformat(), ) process_scheduled_changes() @@ -55,7 +55,7 @@ def test_schedule_feature_flag_add_release_condition(self) -> None: record_id=feature_flag.id, model_name="FeatureFlag", payload=payload, - scheduled_at=(datetime.now(timezone.utc) - timedelta(seconds=30)), + scheduled_at=(datetime.now(UTC) - timedelta(seconds=30)), ) process_scheduled_changes() @@ -105,7 +105,7 @@ def test_schedule_feature_flag_add_release_condition_preserve_variants(self) -> record_id=feature_flag.id, model_name="FeatureFlag", payload=payload, - scheduled_at=(datetime.now(timezone.utc) - timedelta(seconds=30)), + scheduled_at=(datetime.now(UTC) - timedelta(seconds=30)), ) process_scheduled_changes() @@ -131,7 +131,7 @@ def test_schedule_feature_flag_invalid_payload(self) -> None: record_id=feature_flag.id, model_name="FeatureFlag", payload=payload, - scheduled_at=(datetime.now(timezone.utc) - timedelta(seconds=30)), + scheduled_at=(datetime.now(UTC) - timedelta(seconds=30)), ) process_scheduled_changes() @@ -169,11 +169,11 @@ def test_schedule_feature_flag_multiple_changes(self) -> None: "operation": "add_release_condition", "value": {"groups": [change_past_condition], "multivariate": None, "payloads": {}}, }, - scheduled_at=(datetime.now(timezone.utc) - timedelta(hours=1)), + scheduled_at=(datetime.now(UTC) - timedelta(hours=1)), ) # 2. Due in the past and already executed - change_past_executed_at = datetime.now(timezone.utc) - timedelta(hours=5) + change_past_executed_at = datetime.now(UTC) - timedelta(hours=5) change_past_executed = ScheduledChange.objects.create( team=self.team, record_id=feature_flag.id, @@ -197,7 +197,7 @@ def test_schedule_feature_flag_multiple_changes(self) -> None: "operation": "add_release_condition", "value": {"groups": [change_due_now_condition], "multivariate": None, "payloads": {}}, }, - scheduled_at=datetime.now(timezone.utc), + scheduled_at=datetime.now(UTC), ) # 4. Due in the future @@ -206,7 +206,7 @@ def test_schedule_feature_flag_multiple_changes(self) -> None: record_id=feature_flag.id, model_name="FeatureFlag", payload={"operation": "update_status", "value": False}, - scheduled_at=(datetime.now(timezone.utc) + timedelta(hours=1)), + scheduled_at=(datetime.now(UTC) + timedelta(hours=1)), ) process_scheduled_changes() diff --git a/posthog/temporal/batch_exports/backfill_batch_export.py b/posthog/temporal/batch_exports/backfill_batch_export.py index 75df851caefdc..c7e6d53c47ad5 100644 --- a/posthog/temporal/batch_exports/backfill_batch_export.py +++ b/posthog/temporal/batch_exports/backfill_batch_export.py @@ -114,7 +114,7 @@ class BackfillScheduleInputs: def get_utcnow(): """Return the current time in UTC. This function is only required for mocking during tests, because mocking the global datetime breaks Temporal.""" - return dt.datetime.now(dt.timezone.utc) + return dt.datetime.now(dt.UTC) @temporalio.activity.defn diff --git a/posthog/temporal/batch_exports/squash_person_overrides.py b/posthog/temporal/batch_exports/squash_person_overrides.py index eac97a38a6fb6..69ecd87c0da96 100644 --- a/posthog/temporal/batch_exports/squash_person_overrides.py +++ b/posthog/temporal/batch_exports/squash_person_overrides.py @@ -5,7 +5,7 @@ import json import typing from dataclasses import dataclass, field -from datetime import date, datetime, timedelta, timezone +from datetime import date, datetime, timedelta, timezone, UTC from temporalio import activity, workflow from temporalio.common import RetryPolicy @@ -14,7 +14,7 @@ from posthog.temporal.common.clickhouse import get_client from posthog.temporal.common.heartbeat import Heartbeater -EPOCH = datetime(1970, 1, 1, 0, 0, tzinfo=timezone.utc) +EPOCH = datetime(1970, 1, 1, 0, 0, tzinfo=UTC) CREATE_TABLE_PERSON_DISTINCT_ID_OVERRIDES_JOIN = """ @@ -174,7 +174,7 @@ } -def parse_clickhouse_timestamp(s: str, tzinfo: timezone = timezone.utc) -> datetime: +def parse_clickhouse_timestamp(s: str, tzinfo: timezone = UTC) -> datetime: """Parse a timestamp from ClickHouse.""" return datetime.strptime(s.strip(), "%Y-%m-%d %H:%M:%S.%f").replace(tzinfo=tzinfo) diff --git a/posthog/temporal/tests/batch_exports/test_backfill_batch_export.py b/posthog/temporal/tests/batch_exports/test_backfill_batch_export.py index f8823710c27fd..e0eb79ab10cd0 100644 --- a/posthog/temporal/tests/batch_exports/test_backfill_batch_export.py +++ b/posthog/temporal/tests/batch_exports/test_backfill_batch_export.py @@ -60,66 +60,66 @@ async def temporal_schedule(temporal_client, team): "start_at,end_at,step,expected", [ ( - dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc), - dt.datetime(2023, 1, 2, 0, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 1, 2, 0, 0, 0, tzinfo=dt.UTC), dt.timedelta(days=1), [ ( - dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc), - dt.datetime(2023, 1, 2, 0, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 1, 2, 0, 0, 0, tzinfo=dt.UTC), ) ], ), ( - dt.datetime(2023, 1, 1, 10, 0, 0, tzinfo=dt.timezone.utc), - dt.datetime(2023, 1, 1, 12, 20, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 1, 1, 10, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 1, 1, 12, 20, 0, tzinfo=dt.UTC), dt.timedelta(hours=1), [ ( - dt.datetime(2023, 1, 1, 10, 0, 0, tzinfo=dt.timezone.utc), - dt.datetime(2023, 1, 1, 11, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 1, 1, 10, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 1, 1, 11, 0, 0, tzinfo=dt.UTC), ), ( - dt.datetime(2023, 1, 1, 11, 0, 0, tzinfo=dt.timezone.utc), - dt.datetime(2023, 1, 1, 12, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 1, 1, 11, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 1, 1, 12, 0, 0, tzinfo=dt.UTC), ), ], ), ( - dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc), - dt.datetime(2023, 1, 2, 0, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 1, 2, 0, 0, 0, tzinfo=dt.UTC), dt.timedelta(hours=12), [ ( - dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc), - dt.datetime(2023, 1, 1, 12, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 1, 1, 12, 0, 0, tzinfo=dt.UTC), ), ( - dt.datetime(2023, 1, 1, 12, 0, 0, tzinfo=dt.timezone.utc), - dt.datetime(2023, 1, 2, 0, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 1, 1, 12, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 1, 2, 0, 0, 0, tzinfo=dt.UTC), ), ], ), ( - dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc), - dt.datetime(2023, 1, 5, 0, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 1, 5, 0, 0, 0, tzinfo=dt.UTC), dt.timedelta(days=1), [ ( - dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc), - dt.datetime(2023, 1, 2, 0, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 1, 2, 0, 0, 0, tzinfo=dt.UTC), ), ( - dt.datetime(2023, 1, 2, 0, 0, 0, tzinfo=dt.timezone.utc), - dt.datetime(2023, 1, 3, 0, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 1, 2, 0, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 1, 3, 0, 0, 0, tzinfo=dt.UTC), ), ( - dt.datetime(2023, 1, 3, 0, 0, 0, tzinfo=dt.timezone.utc), - dt.datetime(2023, 1, 4, 0, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 1, 3, 0, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 1, 4, 0, 0, 0, tzinfo=dt.UTC), ), ( - dt.datetime(2023, 1, 4, 0, 0, 0, tzinfo=dt.timezone.utc), - dt.datetime(2023, 1, 5, 0, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 1, 4, 0, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 1, 5, 0, 0, 0, tzinfo=dt.UTC), ), ], ), @@ -145,8 +145,8 @@ async def test_get_schedule_frequency(activity_environment, temporal_worker, tem @pytest.mark.django_db(transaction=True) async def test_backfill_schedule_activity(activity_environment, temporal_worker, temporal_client, temporal_schedule): """Test backfill_schedule activity schedules all backfill runs.""" - start_at = dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc) - end_at = dt.datetime(2023, 1, 1, 0, 10, 0, tzinfo=dt.timezone.utc) + start_at = dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.UTC) + end_at = dt.datetime(2023, 1, 1, 0, 10, 0, tzinfo=dt.UTC) desc = await temporal_schedule.describe() inputs = BackfillScheduleInputs( @@ -199,8 +199,8 @@ async def test_backfill_schedule_activity(activity_environment, temporal_worker, @pytest.mark.django_db(transaction=True) async def test_backfill_batch_export_workflow(temporal_worker, temporal_schedule, temporal_client, team): """Test BackfillBatchExportWorkflow executes all backfill runs and updates model.""" - start_at = dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc) - end_at = dt.datetime(2023, 1, 1, 0, 10, 0, tzinfo=dt.timezone.utc) + start_at = dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.UTC) + end_at = dt.datetime(2023, 1, 1, 0, 10, 0, tzinfo=dt.UTC) desc = await temporal_schedule.describe() @@ -275,9 +275,9 @@ async def test_backfill_batch_export_workflow_no_end_at( """Test BackfillBatchExportWorkflow executes all backfill runs and updates model.""" # Note the mocked time here, we should stop backfilling at 8 minutes and unpause the job. - mock_utcnow.return_value = dt.datetime(2023, 1, 1, 0, 8, 12, tzinfo=dt.timezone.utc) + mock_utcnow.return_value = dt.datetime(2023, 1, 1, 0, 8, 12, tzinfo=dt.UTC) - start_at = dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc) + start_at = dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.UTC) end_at = None desc = await temporal_schedule.describe() @@ -356,8 +356,8 @@ async def test_backfill_batch_export_workflow_fails_when_schedule_deleted( temporal_worker, temporal_schedule, temporal_client, team ): """Test BackfillBatchExportWorkflow fails when its underlying Temporal Schedule is deleted.""" - start_at = dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc) - end_at = dt.datetime(2023, 1, 1, 0, 10, 0, tzinfo=dt.timezone.utc) + start_at = dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.UTC) + end_at = dt.datetime(2023, 1, 1, 0, 10, 0, tzinfo=dt.UTC) desc = await temporal_schedule.describe() @@ -398,8 +398,8 @@ async def test_backfill_batch_export_workflow_fails_when_schedule_deleted_after_ In this test, in contrats to the previous one, we wait until we have started running some backfill runs before cancelling. """ - start_at = dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc) - end_at = dt.datetime(2023, 1, 1, 0, 10, 0, tzinfo=dt.timezone.utc) + start_at = dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.UTC) + end_at = dt.datetime(2023, 1, 1, 0, 10, 0, tzinfo=dt.UTC) desc = await temporal_schedule.describe() @@ -471,8 +471,8 @@ async def test_backfill_batch_export_workflow_is_cancelled_on_repeated_failures( temporal_worker, failing_s3_batch_export, temporal_client, ateam, clickhouse_client ): """Test BackfillBatchExportWorkflow will be cancelled on repeated failures.""" - start_at = dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc) - end_at = dt.datetime(2023, 1, 1, 1, 0, 0, tzinfo=dt.timezone.utc) + start_at = dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.UTC) + end_at = dt.datetime(2023, 1, 1, 1, 0, 0, tzinfo=dt.UTC) # We need some data otherwise the S3 batch export will not fail as it short-circuits. for d in date_range(start_at, end_at, dt.timedelta(minutes=5)): diff --git a/posthog/temporal/tests/batch_exports/test_batch_exports.py b/posthog/temporal/tests/batch_exports/test_batch_exports.py index d019d72b9509e..0643b0191daee 100644 --- a/posthog/temporal/tests/batch_exports/test_batch_exports.py +++ b/posthog/temporal/tests/batch_exports/test_batch_exports.py @@ -189,9 +189,7 @@ def assert_records_match_events(records, events): key in ("timestamp", "_inserted_at", "created_at") and expected.get(key.removeprefix("_"), None) is not None ): - assert value == dt.datetime.fromisoformat(expected[key.removeprefix("_")]).replace( - tzinfo=dt.timezone.utc - ), msg + assert value == dt.datetime.fromisoformat(expected[key.removeprefix("_")]).replace(tzinfo=dt.UTC), msg elif isinstance(expected[key], dict): assert value == json.dumps(expected[key]), msg else: @@ -437,7 +435,7 @@ async def test_iter_records_with_single_field_and_alias(clickhouse_client, field if isinstance(result, dt.datetime): # Event generation function returns datetimes as strings. - expected_value = dt.datetime.fromisoformat(expected_value).replace(tzinfo=dt.timezone.utc) + expected_value = dt.datetime.fromisoformat(expected_value).replace(tzinfo=dt.UTC) assert result == expected_value @@ -536,16 +534,16 @@ async def test_iter_records_uses_extra_query_parameters(clickhouse_client): "hour", "2023-08-01T00:00:00+00:00", ( - dt.datetime(2023, 7, 31, 23, 0, 0, tzinfo=dt.timezone.utc), - dt.datetime(2023, 8, 1, 0, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 7, 31, 23, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 8, 1, 0, 0, 0, tzinfo=dt.UTC), ), ), ( "day", "2023-08-01T00:00:00+00:00", ( - dt.datetime(2023, 7, 31, 0, 0, 0, tzinfo=dt.timezone.utc), - dt.datetime(2023, 8, 1, 0, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 7, 31, 0, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 8, 1, 0, 0, 0, tzinfo=dt.UTC), ), ), ], diff --git a/posthog/temporal/tests/batch_exports/test_bigquery_batch_export_workflow.py b/posthog/temporal/tests/batch_exports/test_bigquery_batch_export_workflow.py index b74e784492556..d132f2dc21338 100644 --- a/posthog/temporal/tests/batch_exports/test_bigquery_batch_export_workflow.py +++ b/posthog/temporal/tests/batch_exports/test_bigquery_batch_export_workflow.py @@ -48,7 +48,7 @@ pytestmark = [SKIP_IF_MISSING_GOOGLE_APPLICATION_CREDENTIALS, pytest.mark.asyncio, pytest.mark.django_db] -TEST_TIME = dt.datetime.now(dt.timezone.utc) +TEST_TIME = dt.datetime.now(dt.UTC) def assert_clickhouse_records_in_bigquery( @@ -133,7 +133,7 @@ def assert_clickhouse_records_in_bigquery( if k in json_columns and v is not None: expected_record[k] = json.loads(v) elif isinstance(v, dt.datetime): - expected_record[k] = v.replace(tzinfo=dt.timezone.utc) + expected_record[k] = v.replace(tzinfo=dt.UTC) else: expected_record[k] = v @@ -251,8 +251,8 @@ async def test_insert_into_bigquery_activity_inserts_data_into_bigquery_table( Once we have these events, we pass them to the assert_events_in_bigquery function to check that they appear in the expected BigQuery table. """ - data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.timezone.utc) - data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.timezone.utc) + data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.UTC) + data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.UTC) # Generate a random team id integer. There's still a chance of a collision, # but it's very small. @@ -312,7 +312,7 @@ async def test_insert_into_bigquery_activity_inserts_data_into_bigquery_table( with freeze_time(TEST_TIME) as frozen_time: await activity_environment.run(insert_into_bigquery_activity, insert_inputs) - ingested_timestamp = frozen_time().replace(tzinfo=dt.timezone.utc) + ingested_timestamp = frozen_time().replace(tzinfo=dt.UTC) assert_clickhouse_records_in_bigquery( bigquery_client=bigquery_client, @@ -456,7 +456,7 @@ async def test_bigquery_export_workflow( assert run.status == "Completed" assert run.records_completed == 100 - ingested_timestamp = frozen_time().replace(tzinfo=dt.timezone.utc) + ingested_timestamp = frozen_time().replace(tzinfo=dt.UTC) assert_clickhouse_records_in_bigquery( bigquery_client=bigquery_client, clickhouse_client=clickhouse_client, @@ -692,7 +692,7 @@ async def never_finish_activity(_: BigQueryInsertInputs) -> str: ([{"test": 6.0}], [bigquery.SchemaField("test", "FLOAT64")]), ([{"test": True}], [bigquery.SchemaField("test", "BOOL")]), ([{"test": dt.datetime.now()}], [bigquery.SchemaField("test", "TIMESTAMP")]), - ([{"test": dt.datetime.now(tz=dt.timezone.utc)}], [bigquery.SchemaField("test", "TIMESTAMP")]), + ([{"test": dt.datetime.now(tz=dt.UTC)}], [bigquery.SchemaField("test", "TIMESTAMP")]), ( [ { @@ -702,7 +702,7 @@ async def never_finish_activity(_: BigQueryInsertInputs) -> str: "test_float": 6.0, "test_bool": False, "test_timestamp": dt.datetime.now(), - "test_timestamptz": dt.datetime.now(tz=dt.timezone.utc), + "test_timestamptz": dt.datetime.now(tz=dt.UTC), } ], [ diff --git a/posthog/temporal/tests/batch_exports/test_http_batch_export_workflow.py b/posthog/temporal/tests/batch_exports/test_http_batch_export_workflow.py index 4dfb8563ff943..5821a8a98a90a 100644 --- a/posthog/temporal/tests/batch_exports/test_http_batch_export_workflow.py +++ b/posthog/temporal/tests/batch_exports/test_http_batch_export_workflow.py @@ -99,7 +99,7 @@ async def assert_clickhouse_records_in_mock_server( if k == "properties": expected_record[k] = json.loads(v) if v else {} elif isinstance(v, dt.datetime): - expected_record[k] = v.replace(tzinfo=dt.timezone.utc).isoformat() + expected_record[k] = v.replace(tzinfo=dt.UTC).isoformat() else: expected_record[k] = v @@ -134,8 +134,8 @@ async def test_insert_into_http_activity_inserts_data_into_http_endpoint( * Are not duplicates of other events that are in the same batch. * Do not have an event name contained in the batch export's exclude_events. """ - data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.timezone.utc) - data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.timezone.utc) + data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.UTC) + data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.UTC) # Generate a random team id integer. There's still a chance of a collision, # but it's very small. @@ -211,8 +211,8 @@ async def test_insert_into_http_activity_throws_on_bad_http_status( clickhouse_client, activity_environment, http_config, exclude_events ): """Test that the insert_into_http_activity function throws on status >= 400""" - data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.timezone.utc) - data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.timezone.utc) + data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.UTC) + data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.UTC) # Generate a random team id integer. There's still a chance of a collision, # but it's very small. diff --git a/posthog/temporal/tests/batch_exports/test_logger.py b/posthog/temporal/tests/batch_exports/test_logger.py index 4ee3ca9a014aa..3ee605882e349 100644 --- a/posthog/temporal/tests/batch_exports/test_logger.py +++ b/posthog/temporal/tests/batch_exports/test_logger.py @@ -211,13 +211,13 @@ def activity_environment(request): "activity_environment", [ ActivityInfo( - workflow_id=f"{BATCH_EXPORT_ID}-{dt.datetime.now(dt.timezone.utc)}", + workflow_id=f"{BATCH_EXPORT_ID}-{dt.datetime.now(dt.UTC)}", workflow_type="s3-export", workflow_run_id=str(uuid.uuid4()), attempt=random.randint(1, 10000), ), ActivityInfo( - workflow_id=f"{BATCH_EXPORT_ID}-Backfill-{dt.datetime.now(dt.timezone.utc)}", + workflow_id=f"{BATCH_EXPORT_ID}-Backfill-{dt.datetime.now(dt.UTC)}", workflow_type="backfill-batch-export", workflow_run_id=str(uuid.uuid4()), attempt=random.randint(1, 10000), @@ -262,13 +262,13 @@ async def log_activity(): "activity_environment", [ ActivityInfo( - workflow_id=f"{BATCH_EXPORT_ID}-{dt.datetime.now(dt.timezone.utc)}", + workflow_id=f"{BATCH_EXPORT_ID}-{dt.datetime.now(dt.UTC)}", workflow_type="s3-export", workflow_run_id=str(uuid.uuid4()), attempt=random.randint(1, 10000), ), ActivityInfo( - workflow_id=f"{BATCH_EXPORT_ID}-Backfill-{dt.datetime.now(dt.timezone.utc)}", + workflow_id=f"{BATCH_EXPORT_ID}-Backfill-{dt.datetime.now(dt.UTC)}", workflow_type="backfill-batch-export", workflow_run_id=str(uuid.uuid4()), attempt=random.randint(1, 10000), @@ -324,13 +324,13 @@ def log_entries_table(): "activity_environment", [ ActivityInfo( - workflow_id=f"{BATCH_EXPORT_ID}-{dt.datetime.now(dt.timezone.utc)}", + workflow_id=f"{BATCH_EXPORT_ID}-{dt.datetime.now(dt.UTC)}", workflow_type="s3-export", workflow_run_id=str(uuid.uuid4()), attempt=random.randint(1, 10000), ), ActivityInfo( - workflow_id=f"{BATCH_EXPORT_ID}-Backfill-{dt.datetime.now(dt.timezone.utc)}", + workflow_id=f"{BATCH_EXPORT_ID}-Backfill-{dt.datetime.now(dt.UTC)}", workflow_type="backfill-batch-export", workflow_run_id=str(uuid.uuid4()), attempt=random.randint(1, 10000), diff --git a/posthog/temporal/tests/batch_exports/test_postgres_batch_export_workflow.py b/posthog/temporal/tests/batch_exports/test_postgres_batch_export_workflow.py index 5dedb8c8c0faf..ee13138341e87 100644 --- a/posthog/temporal/tests/batch_exports/test_postgres_batch_export_workflow.py +++ b/posthog/temporal/tests/batch_exports/test_postgres_batch_export_workflow.py @@ -117,7 +117,7 @@ async def assert_clickhouse_records_in_postgres( if k in {"properties", "set", "set_once", "person_properties"} and v is not None: expected_record[k] = json.loads(v) elif isinstance(v, dt.datetime): - expected_record[k] = v.replace(tzinfo=dt.timezone.utc) + expected_record[k] = v.replace(tzinfo=dt.UTC) else: expected_record[k] = v @@ -200,8 +200,8 @@ async def test_insert_into_postgres_activity_inserts_data_into_postgres_table( development postgres instance for testing. But we setup and manage our own database to avoid conflicting with PostHog itself. """ - data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.timezone.utc) - data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.timezone.utc) + data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.UTC) + data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.UTC) # Generate a random team id integer. There's still a chance of a collision, # but it's very small. diff --git a/posthog/temporal/tests/batch_exports/test_redshift_batch_export_workflow.py b/posthog/temporal/tests/batch_exports/test_redshift_batch_export_workflow.py index 3ddbb805c21c4..5567bd336713e 100644 --- a/posthog/temporal/tests/batch_exports/test_redshift_batch_export_workflow.py +++ b/posthog/temporal/tests/batch_exports/test_redshift_batch_export_workflow.py @@ -130,7 +130,7 @@ async def assert_clickhouse_records_in_redshfit( remove_escaped_whitespace_recursive(json.loads(v)), ensure_ascii=False ) elif isinstance(v, dt.datetime): - expected_record[k] = v.replace(tzinfo=dt.timezone.utc) # type: ignore + expected_record[k] = v.replace(tzinfo=dt.UTC) # type: ignore else: expected_record[k] = v @@ -242,8 +242,8 @@ async def test_insert_into_redshift_activity_inserts_data_into_redshift_table( Once we have these events, we pass them to the assert_events_in_redshift function to check that they appear in the expected Redshift table. """ - data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.timezone.utc) - data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.timezone.utc) + data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.UTC) + data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.UTC) # Generate a random team id integer. There's still a chance of a collision, # but it's very small. diff --git a/posthog/temporal/tests/batch_exports/test_run_updates.py b/posthog/temporal/tests/batch_exports/test_run_updates.py index 1e50e13325b82..649585f52836b 100644 --- a/posthog/temporal/tests/batch_exports/test_run_updates.py +++ b/posthog/temporal/tests/batch_exports/test_run_updates.py @@ -85,8 +85,8 @@ async def test_start_batch_export_run(activity_environment, team, batch_export): We check if a 'BatchExportRun' is created after the activity runs. """ - start = dt.datetime(2023, 4, 24, tzinfo=dt.timezone.utc) - end = dt.datetime(2023, 4, 25, tzinfo=dt.timezone.utc) + start = dt.datetime(2023, 4, 24, tzinfo=dt.UTC) + end = dt.datetime(2023, 4, 25, tzinfo=dt.UTC) inputs = StartBatchExportRunInputs( team_id=team.id, @@ -110,8 +110,8 @@ async def test_start_batch_export_run(activity_environment, team, batch_export): @pytest.mark.asyncio async def test_finish_batch_export_run(activity_environment, team, batch_export): """Test the export_run_status activity.""" - start = dt.datetime(2023, 4, 24, tzinfo=dt.timezone.utc) - end = dt.datetime(2023, 4, 25, tzinfo=dt.timezone.utc) + start = dt.datetime(2023, 4, 24, tzinfo=dt.UTC) + end = dt.datetime(2023, 4, 25, tzinfo=dt.UTC) inputs = StartBatchExportRunInputs( team_id=team.id, @@ -145,8 +145,8 @@ async def test_finish_batch_export_run(activity_environment, team, batch_export) @pytest.mark.asyncio async def test_finish_batch_export_run_pauses_if_reaching_failure_threshold(activity_environment, team, batch_export): """Test if 'finish_batch_export_run' will pause a batch export upon reaching failure_threshold.""" - start = dt.datetime(2023, 4, 24, tzinfo=dt.timezone.utc) - end = dt.datetime(2023, 4, 25, tzinfo=dt.timezone.utc) + start = dt.datetime(2023, 4, 24, tzinfo=dt.UTC) + end = dt.datetime(2023, 4, 25, tzinfo=dt.UTC) inputs = StartBatchExportRunInputs( team_id=team.id, @@ -183,8 +183,8 @@ async def test_finish_batch_export_run_pauses_if_reaching_failure_threshold(acti @pytest.mark.asyncio async def test_finish_batch_export_run_never_pauses_with_small_check_window(activity_environment, team, batch_export): """Test if 'finish_batch_export_run' will never pause a batch export with a small check window.""" - start = dt.datetime(2023, 4, 24, tzinfo=dt.timezone.utc) - end = dt.datetime(2023, 4, 25, tzinfo=dt.timezone.utc) + start = dt.datetime(2023, 4, 24, tzinfo=dt.UTC) + end = dt.datetime(2023, 4, 25, tzinfo=dt.UTC) inputs = StartBatchExportRunInputs( team_id=team.id, diff --git a/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py b/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py index b89cf422f733f..baecce38e47b5 100644 --- a/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py +++ b/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py @@ -286,8 +286,8 @@ async def test_insert_into_s3_activity_puts_data_into_s3( Once we have these events, we pass them to the assert_clickhouse_records_in_s3 function to check that they appear in the expected S3 bucket and key. """ - data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.timezone.utc) - data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.timezone.utc) + data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.UTC) + data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.UTC) # Generate a random team id integer. There's still a chance of a collision, # but it's very small. diff --git a/posthog/temporal/tests/batch_exports/test_snowflake_batch_export_workflow.py b/posthog/temporal/tests/batch_exports/test_snowflake_batch_export_workflow.py index 857da4f3ce99f..09341ca04648c 100644 --- a/posthog/temporal/tests/batch_exports/test_snowflake_batch_export_workflow.py +++ b/posthog/temporal/tests/batch_exports/test_snowflake_batch_export_workflow.py @@ -977,8 +977,8 @@ async def test_insert_into_snowflake_activity_inserts_data_into_snowflake_table( that they appear in the expected Snowflake table. This function runs against a real Snowflake instance, so the environment should be populated with the necessary credentials. """ - data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.timezone.utc) - data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.timezone.utc) + data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.UTC) + data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.UTC) team_id = random.randint(1, 1000000) await generate_test_events_in_clickhouse( diff --git a/posthog/temporal/tests/persons_on_events_squash/test_squash_person_overrides_workflow.py b/posthog/temporal/tests/persons_on_events_squash/test_squash_person_overrides_workflow.py index 19bf42bad8f5f..71a5bff99c508 100644 --- a/posthog/temporal/tests/persons_on_events_squash/test_squash_person_overrides_workflow.py +++ b/posthog/temporal/tests/persons_on_events_squash/test_squash_person_overrides_workflow.py @@ -1,7 +1,7 @@ import operator import random from collections import defaultdict -from datetime import datetime, timezone +from datetime import datetime, UTC from typing import NamedTuple, TypedDict from uuid import UUID, uuid4 @@ -862,7 +862,7 @@ async def test_delete_person_overrides_mutation_within_grace_period( activity_environment, events_to_override, person_overrides_data, clickhouse_client ): """Test we do not delete person overrides if they are within the grace period.""" - now = datetime.now(tz=timezone.utc) + now = datetime.now(tz=UTC) override_timestamp = int(now.timestamp()) team_id, person_override = next(iter(person_overrides_data.items())) distinct_id, _ = next(iter(person_override)) @@ -914,7 +914,7 @@ async def test_delete_person_overrides_mutation_within_grace_period( assert int(row[0]) == not_deleted_person["team_id"] assert row[1] == not_deleted_person["distinct_id"] assert UUID(row[2]) == UUID(not_deleted_person["person_id"]) - _timestamp = datetime.strptime(row[3], "%Y-%m-%d %H:%M:%S").replace(tzinfo=timezone.utc) + _timestamp = datetime.strptime(row[3], "%Y-%m-%d %H:%M:%S").replace(tzinfo=UTC) # _timestamp is up to second precision assert _timestamp == now.replace(microsecond=0) diff --git a/posthog/temporal/tests/test_clickhouse.py b/posthog/temporal/tests/test_clickhouse.py index 0d02dcd5bf790..79003f718e682 100644 --- a/posthog/temporal/tests/test_clickhouse.py +++ b/posthog/temporal/tests/test_clickhouse.py @@ -23,12 +23,12 @@ (("; DROP TABLE events --",), b"('; DROP TABLE events --')"), (("'a'); DROP TABLE events --",), b"('\\'a\\'); DROP TABLE events --')"), ( - dt.datetime(2023, 7, 14, 0, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 7, 14, 0, 0, 0, tzinfo=dt.UTC), b"toDateTime('2023-07-14 00:00:00', 'UTC')", ), (dt.datetime(2023, 7, 14, 0, 0, 0), b"toDateTime('2023-07-14 00:00:00')"), ( - dt.datetime(2023, 7, 14, 0, 0, 0, 5555, tzinfo=dt.timezone.utc), + dt.datetime(2023, 7, 14, 0, 0, 0, 5555, tzinfo=dt.UTC), b"toDateTime64('2023-07-14 00:00:00.005555', 6, 'UTC')", ), ], diff --git a/posthog/temporal/tests/utils/datetimes.py b/posthog/temporal/tests/utils/datetimes.py index c168e885a3e8d..d5a3f747bf874 100644 --- a/posthog/temporal/tests/utils/datetimes.py +++ b/posthog/temporal/tests/utils/datetimes.py @@ -16,4 +16,4 @@ def to_isoformat(d: str | None) -> str | None: """Parse a string and return it as default isoformatted.""" if d is None: return None - return dt.datetime.fromisoformat(d).replace(tzinfo=dt.timezone.utc).isoformat() + return dt.datetime.fromisoformat(d).replace(tzinfo=dt.UTC).isoformat() diff --git a/posthog/test/test_datetime.py b/posthog/test/test_datetime.py index 2b8e6b087e5fb..9365cffb085a8 100644 --- a/posthog/test/test_datetime.py +++ b/posthog/test/test_datetime.py @@ -1,4 +1,4 @@ -from datetime import datetime, timezone +from datetime import datetime, UTC from posthog.datetime import ( start_of_hour, @@ -23,7 +23,7 @@ def test_start_of_day(): def test_end_of_day(): assert end_of_day(datetime.fromisoformat("2023-02-08T12:05:23+00:00")) == datetime( - 2023, 2, 8, 23, 59, 59, 999999, tzinfo=timezone.utc + 2023, 2, 8, 23, 59, 59, 999999, tzinfo=UTC ) diff --git a/posthog/utils.py b/posthog/utils.py index 18f271c4a5d56..a8faf24b19e5c 100644 --- a/posthog/utils.py +++ b/posthog/utils.py @@ -1289,12 +1289,12 @@ async def wait_for_parallel_celery_group(task: Any, expires: Optional[datetime.d default_expires = datetime.timedelta(minutes=5) if not expires: - expires = datetime.datetime.now(tz=datetime.timezone.utc) + default_expires + expires = datetime.datetime.now(tz=datetime.UTC) + default_expires sleep_generator = sleep_time_generator() while not task.ready(): - if datetime.datetime.now(tz=datetime.timezone.utc) > expires: + if datetime.datetime.now(tz=datetime.UTC) > expires: child_states = [] child: AsyncResult children = task.children or [] diff --git a/posthog/warehouse/external_data_source/workspace.py b/posthog/warehouse/external_data_source/workspace.py index 0a9f9436bab47..f7e80761eb1d3 100644 --- a/posthog/warehouse/external_data_source/workspace.py +++ b/posthog/warehouse/external_data_source/workspace.py @@ -27,7 +27,7 @@ def get_or_create_workspace(team_id: int): workspace_id = create_workspace(team_id) team.external_data_workspace_id = workspace_id # start tracking from now - team.external_data_workspace_last_synced_at = datetime.datetime.now(datetime.timezone.utc) + team.external_data_workspace_last_synced_at = datetime.datetime.now(datetime.UTC) team.save() return team.external_data_workspace_id diff --git a/pyproject.toml b/pyproject.toml index cb19ccadb8178..57d7560e99d0a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,9 +1,9 @@ [project] -requires-python = ">=3.10" +requires-python = ">=3.11" [tool.black] line-length = 120 -target-version = ['py310'] +target-version = ['py311'] [tool.isort] profile = "black" diff --git a/requirements-dev.in b/requirements-dev.in index 35ad7044d22dd..61efe698ecf3b 100644 --- a/requirements-dev.in +++ b/requirements-dev.in @@ -11,7 +11,7 @@ -c requirements.txt -ruff~=0.4.3 +ruff~=0.4.10 mypy~=1.10.0 mypy-baseline~=0.7.0 mypy-extensions==1.0.0 diff --git a/requirements-dev.txt b/requirements-dev.txt index dbf468cd45bb2..c534a931f0c92 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -288,8 +288,7 @@ ruamel-yaml==0.18.6 # via prance ruamel-yaml-clib==0.2.8 # via ruamel-yaml -ruff==0.4.3 - # via -r requirements-dev.in +ruff==0.4.10 six==1.16.0 # via # -c requirements.txt From ca0bf0bb920d2e4a2e4ca98769e279853057c971 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Mon, 24 Jun 2024 17:09:57 +0200 Subject: [PATCH 07/24] refactor: Support batch export models as views (#23052) * refactor: Update metrics to fetch counts at request time * fix: Move import to method * fix: Add function * feat: Custom schemas for batch exports * feat: Frontend support for model field * fix: Clean-up * fix: Add missing migration * fix: Make new field nullable * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * fix: Bump migration number * fix: Bump migration number * refactor: Update metrics to fetch counts at request time * fix: Actually use include and exclude events * refactor: Switch to counting runs * refactor: Support batch export models as views * fix: Merge conflict * fix: Quality check fixes * refactor: Update metrics to fetch counts at request time * fix: Move import to method * fix: Add function * fix: Typing fixes * feat: Custom schemas for batch exports * feat: Frontend support for model field * fix: Clean-up * fix: Add missing migration * fix: Make new field nullable * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * fix: Bump migration number * fix: Clean-up unused code * chore: Clean-up unused function and tests * fix: Clean-up unused function * fix: HTTP Batch export default fields * fix: Remove test case on new column not present in base table * chore: Clean-up unused functions and queries * fix: Only run extra clickhouse queries in batch exports tests * refactor: Remove coalesce and use only inserted_at in queries At this point, inserted_at should always be set for all batch exports. Only historical exports require _timestamp, but backfills have already been switched over to query based on timestamp, so they also do not need to check for inserted_at/_timestamp. Removing the colaesce and using only inserted_at reduces the size of the data CH has to fetch by half. * fix: Remove deprecated test * fix: Add person_id to person model and enforce ordering * refactor: Also add version column --------- Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- posthog/api/test/test_app_metrics.py | 23 -- posthog/batch_exports/sql.py | 135 ++++++++++ .../0064_create_person_batch_export_view.py | 17 ++ posthog/conftest.py | 12 +- .../temporal/batch_exports/batch_exports.py | 246 ++++++++---------- .../batch_exports/bigquery_batch_export.py | 11 +- .../batch_exports/http_batch_export.py | 6 +- .../batch_exports/postgres_batch_export.py | 13 +- .../batch_exports/redshift_batch_export.py | 28 +- .../temporal/batch_exports/s3_batch_export.py | 21 +- .../batch_exports/snowflake_batch_export.py | 21 +- posthog/temporal/batch_exports/utils.py | 33 +++ posthog/temporal/common/asyncpa.py | 129 +++++++++ posthog/temporal/common/clickhouse.py | 19 ++ .../temporal/tests/batch_exports/conftest.py | 32 ++- .../tests/batch_exports/test_batch_exports.py | 164 +----------- .../test_bigquery_batch_export_workflow.py | 1 - .../test_postgres_batch_export_workflow.py | 3 +- .../test_redshift_batch_export_workflow.py | 2 +- .../test_s3_batch_export_workflow.py | 127 +++------ .../test_snowflake_batch_export_workflow.py | 25 +- posthog/temporal/tests/utils/events.py | 4 +- 22 files changed, 593 insertions(+), 479 deletions(-) create mode 100644 posthog/batch_exports/sql.py create mode 100644 posthog/clickhouse/migrations/0064_create_person_batch_export_view.py create mode 100644 posthog/temporal/common/asyncpa.py diff --git a/posthog/api/test/test_app_metrics.py b/posthog/api/test/test_app_metrics.py index d3c6a351b6c67..67b9a0a42eaa5 100644 --- a/posthog/api/test/test_app_metrics.py +++ b/posthog/api/test/test_app_metrics.py @@ -1,6 +1,5 @@ import datetime as dt import json -import uuid from unittest import mock from freezegun.api import freeze_time @@ -9,7 +8,6 @@ from posthog.api.test.batch_exports.conftest import start_test_worker from posthog.api.test.batch_exports.operations import create_batch_export_ok from posthog.batch_exports.models import BatchExportRun -from posthog.client import sync_execute from posthog.models.activity_logging.activity_log import Detail, Trigger, log_activity from posthog.models.plugin import Plugin, PluginConfig from posthog.models.utils import UUIDT @@ -20,20 +18,6 @@ SAMPLE_PAYLOAD = {"dateRange": ["2021-06-10", "2022-06-12"], "parallelism": 1} -def insert_event(team_id: int, timestamp: dt.datetime, event: str = "test-event"): - sync_execute( - "INSERT INTO `sharded_events` (uuid, team_id, event, timestamp) VALUES", - [ - { - "uuid": uuid.uuid4(), - "team_id": team_id, - "event": event, - "timestamp": timestamp, - } - ], - ) - - @freeze_time("2021-12-05T13:23:00Z") class TestAppMetricsAPI(ClickhouseTestMixin, APIBaseTest): maxDiff = None @@ -149,9 +133,6 @@ def test_retrieve_batch_export_runs_app_metrics(self): data_interval_start=last_updated_at - dt.timedelta(hours=1), status=BatchExportRun.Status.COMPLETED, ) - for _ in range(3): - insert_event(team_id=self.team.pk, timestamp=last_updated_at - dt.timedelta(minutes=1)) - BatchExportRun.objects.create( batch_export_id=batch_export_id, data_interval_end=last_updated_at - dt.timedelta(hours=2), @@ -164,9 +145,6 @@ def test_retrieve_batch_export_runs_app_metrics(self): data_interval_start=last_updated_at - dt.timedelta(hours=3), status=BatchExportRun.Status.FAILED_RETRYABLE, ) - for _ in range(5): - timestamp = last_updated_at - dt.timedelta(hours=2, minutes=1) - insert_event(team_id=self.team.pk, timestamp=timestamp) response = self.client.get(f"/api/projects/@current/app_metrics/{batch_export_id}?date_from=-7d") self.assertEqual(response.status_code, status.HTTP_200_OK) @@ -235,7 +213,6 @@ def test_retrieve_batch_export_runs_app_metrics_defaults_to_zero(self): data_interval_start=last_updated_at - dt.timedelta(hours=1), status=BatchExportRun.Status.COMPLETED, ) - insert_event(team_id=self.team.pk, timestamp=last_updated_at - dt.timedelta(minutes=1)) response = self.client.get(f"/api/projects/@current/app_metrics/{batch_export_id}?date_from=-7d") self.assertEqual(response.status_code, status.HTTP_200_OK) diff --git a/posthog/batch_exports/sql.py b/posthog/batch_exports/sql.py new file mode 100644 index 0000000000000..8236ecb878f74 --- /dev/null +++ b/posthog/batch_exports/sql.py @@ -0,0 +1,135 @@ +CREATE_PERSONS_BATCH_EXPORT_VIEW = """ +CREATE OR REPLACE VIEW persons_batch_export AS ( + SELECT + pd.team_id AS team_id, + pd.distinct_id AS distinct_id, + toString(p.id) AS person_id, + p.properties AS properties, + pd.version AS version, + pd._timestamp AS _inserted_at + FROM ( + SELECT + team_id, + distinct_id, + max(version) AS version, + argMax(person_id, person_distinct_id2.version) AS person_id, + max(_timestamp) AS _timestamp + FROM + person_distinct_id2 + WHERE + team_id = {team_id:Int64} + GROUP BY + team_id, + distinct_id + ) AS pd + INNER JOIN + person p ON p.id = pd.person_id AND p.team_id = pd.team_id + WHERE + pd.team_id = {team_id:Int64} + AND p.team_id = {team_id:Int64} + AND pd._timestamp >= {interval_start:DateTime64} + AND pd._timestamp < {interval_end:DateTime64} + ORDER BY + _inserted_at +) +""" + +CREATE_EVENTS_BATCH_EXPORT_VIEW = """ +CREATE OR REPLACE VIEW events_batch_export AS ( + SELECT + team_id AS team_id, + min(timestamp) AS timestamp, + event AS event, + any(distinct_id) AS distinct_id, + any(toString(uuid)) AS uuid, + min(COALESCE(inserted_at, _timestamp)) AS _inserted_at, + any(created_at) AS created_at, + any(elements_chain) AS elements_chain, + any(toString(person_id)) AS person_id, + any(nullIf(properties, '')) AS properties, + any(nullIf(person_properties, '')) AS person_properties, + nullIf(JSONExtractString(properties, '$set'), '') AS set, + nullIf(JSONExtractString(properties, '$set_once'), '') AS set_once + FROM + events + PREWHERE + events.inserted_at >= {interval_start:DateTime64} + AND events.inserted_at < {interval_end:DateTime64} + WHERE + team_id = {team_id:Int64} + AND events.timestamp >= {interval_start:DateTime64} - INTERVAL {lookback_days:Int32} DAY + AND events.timestamp < {interval_end:DateTime64} + INTERVAL 1 DAY + AND (length({include_events:Array(String)}) = 0 OR event IN {include_events:Array(String)}) + AND (length({exclude_events:Array(String)}) = 0 OR event NOT IN {exclude_events:Array(String)}) + GROUP BY + team_id, toDate(events.timestamp), event, cityHash64(events.distinct_id), cityHash64(events.uuid) + ORDER BY + _inserted_at, event + SETTINGS optimize_aggregation_in_order=1 +) +""" + +CREATE_EVENTS_BATCH_EXPORT_VIEW_UNBOUNDED = """ +CREATE OR REPLACE VIEW events_batch_export_unbounded AS ( + SELECT + team_id AS team_id, + min(timestamp) AS timestamp, + event AS event, + any(distinct_id) AS distinct_id, + any(toString(uuid)) AS uuid, + min(COALESCE(inserted_at, _timestamp)) AS _inserted_at, + any(created_at) AS created_at, + any(elements_chain) AS elements_chain, + any(toString(person_id)) AS person_id, + any(nullIf(properties, '')) AS properties, + any(nullIf(person_properties, '')) AS person_properties, + nullIf(JSONExtractString(properties, '$set'), '') AS set, + nullIf(JSONExtractString(properties, '$set_once'), '') AS set_once + FROM + events + PREWHERE + events.inserted_at >= {interval_start:DateTime64} + AND events.inserted_at < {interval_end:DateTime64} + WHERE + team_id = {team_id:Int64} + AND (length({include_events:Array(String)}) = 0 OR event IN {include_events:Array(String)}) + AND (length({exclude_events:Array(String)}) = 0 OR event NOT IN {exclude_events:Array(String)}) + GROUP BY + team_id, toDate(events.timestamp), event, cityHash64(events.distinct_id), cityHash64(events.uuid) + ORDER BY + _inserted_at, event + SETTINGS optimize_aggregation_in_order=1 +) +""" + +CREATE_EVENTS_BATCH_EXPORT_VIEW_BACKFILL = """ +CREATE OR REPLACE VIEW events_batch_export_backfill AS ( + SELECT + team_id AS team_id, + min(timestamp) AS timestamp, + event AS event, + any(distinct_id) AS distinct_id, + any(toString(uuid)) AS uuid, + min(COALESCE(inserted_at, _timestamp)) AS _inserted_at, + any(created_at) AS created_at, + any(elements_chain) AS elements_chain, + any(toString(person_id)) AS person_id, + any(nullIf(properties, '')) AS properties, + any(nullIf(person_properties, '')) AS person_properties, + nullIf(JSONExtractString(properties, '$set'), '') AS set, + nullIf(JSONExtractString(properties, '$set_once'), '') AS set_once + FROM + events + WHERE + team_id = {team_id:Int64} + AND events.timestamp >= {interval_start:DateTime64} + AND events.timestamp < {interval_end:DateTime64} + AND (length({include_events:Array(String)}) = 0 OR event IN {include_events:Array(String)}) + AND (length({exclude_events:Array(String)}) = 0 OR event NOT IN {exclude_events:Array(String)}) + GROUP BY + team_id, toDate(events.timestamp), event, cityHash64(events.distinct_id), cityHash64(events.uuid) + ORDER BY + _inserted_at, event + SETTINGS optimize_aggregation_in_order=1 +) +""" diff --git a/posthog/clickhouse/migrations/0064_create_person_batch_export_view.py b/posthog/clickhouse/migrations/0064_create_person_batch_export_view.py new file mode 100644 index 0000000000000..dd48dc355ec7e --- /dev/null +++ b/posthog/clickhouse/migrations/0064_create_person_batch_export_view.py @@ -0,0 +1,17 @@ +from posthog.batch_exports.sql import ( + CREATE_EVENTS_BATCH_EXPORT_VIEW, + CREATE_EVENTS_BATCH_EXPORT_VIEW_BACKFILL, + CREATE_EVENTS_BATCH_EXPORT_VIEW_UNBOUNDED, + CREATE_PERSONS_BATCH_EXPORT_VIEW, +) +from posthog.clickhouse.client.migration_tools import run_sql_with_exceptions + +operations = map( + run_sql_with_exceptions, + [ + CREATE_PERSONS_BATCH_EXPORT_VIEW, + CREATE_EVENTS_BATCH_EXPORT_VIEW, + CREATE_EVENTS_BATCH_EXPORT_VIEW_UNBOUNDED, + CREATE_EVENTS_BATCH_EXPORT_VIEW_BACKFILL, + ], +) diff --git a/posthog/conftest.py b/posthog/conftest.py index b771573e78582..291c49a6dec76 100644 --- a/posthog/conftest.py +++ b/posthog/conftest.py @@ -12,11 +12,11 @@ def create_clickhouse_tables(num_tables: int): # Create clickhouse tables to default before running test # Mostly so that test runs locally work correctly from posthog.clickhouse.schema import ( + CREATE_DATA_QUERIES, + CREATE_DICTIONARY_QUERIES, CREATE_DISTRIBUTED_TABLE_QUERIES, CREATE_MERGETREE_TABLE_QUERIES, CREATE_MV_TABLE_QUERIES, - CREATE_DATA_QUERIES, - CREATE_DICTIONARY_QUERIES, CREATE_VIEW_QUERIES, build_query, ) @@ -53,24 +53,24 @@ def reset_clickhouse_tables(): from posthog.clickhouse.plugin_log_entries import ( TRUNCATE_PLUGIN_LOG_ENTRIES_TABLE_SQL, ) + from posthog.heatmaps.sql import TRUNCATE_HEATMAPS_TABLE_SQL from posthog.models.app_metrics.sql import TRUNCATE_APP_METRICS_TABLE_SQL + from posthog.models.channel_type.sql import TRUNCATE_CHANNEL_DEFINITION_TABLE_SQL from posthog.models.cohort.sql import TRUNCATE_COHORTPEOPLE_TABLE_SQL from posthog.models.event.sql import TRUNCATE_EVENTS_TABLE_SQL from posthog.models.group.sql import TRUNCATE_GROUPS_TABLE_SQL from posthog.models.performance.sql import TRUNCATE_PERFORMANCE_EVENTS_TABLE_SQL from posthog.models.person.sql import ( TRUNCATE_PERSON_DISTINCT_ID2_TABLE_SQL, + TRUNCATE_PERSON_DISTINCT_ID_OVERRIDES_TABLE_SQL, TRUNCATE_PERSON_DISTINCT_ID_TABLE_SQL, TRUNCATE_PERSON_STATIC_COHORT_TABLE_SQL, - TRUNCATE_PERSON_DISTINCT_ID_OVERRIDES_TABLE_SQL, TRUNCATE_PERSON_TABLE_SQL, ) + from posthog.models.sessions.sql import TRUNCATE_SESSIONS_TABLE_SQL from posthog.session_recordings.sql.session_recording_event_sql import ( TRUNCATE_SESSION_RECORDING_EVENTS_TABLE_SQL, ) - from posthog.models.channel_type.sql import TRUNCATE_CHANNEL_DEFINITION_TABLE_SQL - from posthog.models.sessions.sql import TRUNCATE_SESSIONS_TABLE_SQL - from posthog.heatmaps.sql import TRUNCATE_HEATMAPS_TABLE_SQL # REMEMBER TO ADD ANY NEW CLICKHOUSE TABLES TO THIS ARRAY! TABLES_TO_CREATE_DROP = [ diff --git a/posthog/temporal/batch_exports/batch_exports.py b/posthog/temporal/batch_exports/batch_exports.py index 1de6b551981ed..04e9a7fa000f0 100644 --- a/posthog/temporal/batch_exports/batch_exports.py +++ b/posthog/temporal/batch_exports/batch_exports.py @@ -30,136 +30,120 @@ from posthog.temporal.common.client import connect from posthog.temporal.common.logger import bind_temporal_worker_logger -SELECT_QUERY_TEMPLATE = Template( - """ - SELECT - $distinct - $fields - FROM events - WHERE - team_id = {team_id} - AND $timestamp_field >= toDateTime64({data_interval_start}, 6, 'UTC') - AND $timestamp_field < toDateTime64({data_interval_end}, 6, 'UTC') - $timestamp - $exclude_events - $include_events - $order_by - $format - """ -) - -TIMESTAMP_PREDICATES = Template( - """ --- These 'timestamp' checks are a heuristic to exploit the sort key. --- Ideally, we need a schema that serves our needs, i.e. with a sort key on the _timestamp field used for batch exports. --- As a side-effect, this heuristic will discard historical loads older than a day. -AND timestamp >= toDateTime64({data_interval_start}, 6, 'UTC') - INTERVAL $lookback_days DAY -AND timestamp < toDateTime64({data_interval_end}, 6, 'UTC') + INTERVAL 1 DAY -""" -) - - -def get_timestamp_predicates_for_team(team_id: int, is_backfill: bool = False) -> str: - if str(team_id) in settings.UNCONSTRAINED_TIMESTAMP_TEAM_IDS or is_backfill: - return "" - else: - return TIMESTAMP_PREDICATES.substitute( - lookback_days=settings.OVERRIDE_TIMESTAMP_TEAM_IDS.get(team_id, settings.DEFAULT_TIMESTAMP_LOOKBACK_DAYS), - ) - - -def get_timestamp_field(is_backfill: bool) -> str: - """Return the field to use for timestamp bounds.""" - if is_backfill: - timestamp_field = "timestamp" - else: - timestamp_field = "COALESCE(inserted_at, _timestamp)" - return timestamp_field - - -async def get_rows_count( - client: ClickHouseClient, - team_id: int, - interval_start: str, - interval_end: str, - exclude_events: collections.abc.Iterable[str] | None = None, - include_events: collections.abc.Iterable[str] | None = None, - is_backfill: bool = False, -) -> int: - """Return a count of rows to be batch exported.""" - data_interval_start_ch = dt.datetime.fromisoformat(interval_start).strftime("%Y-%m-%d %H:%M:%S") - data_interval_end_ch = dt.datetime.fromisoformat(interval_end).strftime("%Y-%m-%d %H:%M:%S") +BytesGenerator = collections.abc.Generator[bytes, None, None] +RecordsGenerator = collections.abc.Generator[pa.RecordBatch, None, None] - if exclude_events: - exclude_events_statement = "AND event NOT IN {exclude_events}" - events_to_exclude_tuple = tuple(exclude_events) - else: - exclude_events_statement = "" - events_to_exclude_tuple = () +AsyncBytesGenerator = collections.abc.AsyncGenerator[bytes, None] +AsyncRecordsGenerator = collections.abc.AsyncGenerator[pa.RecordBatch, None] - if include_events: - include_events_statement = "AND event IN {include_events}" - events_to_include_tuple = tuple(include_events) - else: - include_events_statement = "" - events_to_include_tuple = () - - timestamp_field = get_timestamp_field(is_backfill) - timestamp_predicates = get_timestamp_predicates_for_team(team_id, is_backfill) - - query = SELECT_QUERY_TEMPLATE.substitute( - fields="count(DISTINCT event, cityHash64(distinct_id), cityHash64(uuid)) as count", - order_by="", - format="", - distinct="", - timestamp_field=timestamp_field, - timestamp=timestamp_predicates, - exclude_events=exclude_events_statement, - include_events=include_events_statement, +SELECT_FROM_PERSONS_VIEW = """ +SELECT * +FROM + persons_batch_export( + team_id={team_id}, + interval_start={interval_start}, + interval_end={interval_end} ) +FORMAT ArrowStream +""" - count = await client.read_query( - query, - query_parameters={ - "team_id": team_id, - "data_interval_start": data_interval_start_ch, - "data_interval_end": data_interval_end_ch, - "exclude_events": events_to_exclude_tuple, - "include_events": events_to_include_tuple, - }, +SELECT_FROM_EVENTS_VIEW = Template(""" +SELECT + $fields +FROM + events_batch_export( + team_id={team_id}, + lookback_days={lookback_days}, + interval_start={interval_start}, + interval_end={interval_end}, + include_events={include_events}::Array(String), + exclude_events={exclude_events}::Array(String) ) +FORMAT ArrowStream +""") - if count is None or len(count) == 0: - raise ValueError("Unexpected result from ClickHouse: `None` returned for count query") +SELECT_FROM_EVENTS_VIEW_UNBOUNDED = Template(""" +SELECT + $fields +FROM + events_batch_export_unbounded( + team_id={team_id}, + lookback_days={lookback_days}, + interval_start={interval_start}, + interval_end={interval_end}, + include_events={include_events}::Array(String), + exclude_events={exclude_events}::Array(String) + ) +FORMAT ArrowStream +""") - return int(count) +SELECT_FROM_EVENTS_VIEW_BACKFILL = Template(""" +SELECT + $fields +FROM + events_batch_export_backfill( + team_id={team_id}, + interval_start={interval_start}, + interval_end={interval_end}, + include_events={include_events}::Array(String), + exclude_events={exclude_events}::Array(String) + ) +FORMAT ArrowStream +""") def default_fields() -> list[BatchExportField]: """Return list of default batch export Fields.""" return [ - BatchExportField(expression="toString(uuid)", alias="uuid"), + BatchExportField(expression="uuid", alias="uuid"), BatchExportField(expression="team_id", alias="team_id"), BatchExportField(expression="timestamp", alias="timestamp"), - BatchExportField(expression="COALESCE(inserted_at, _timestamp)", alias="_inserted_at"), + BatchExportField(expression="_inserted_at", alias="_inserted_at"), BatchExportField(expression="created_at", alias="created_at"), BatchExportField(expression="event", alias="event"), - BatchExportField(expression="nullIf(properties, '')", alias="properties"), - BatchExportField(expression="toString(distinct_id)", alias="distinct_id"), - BatchExportField(expression="nullIf(JSONExtractString(properties, '$set'), '')", alias="set"), + BatchExportField(expression="properties", alias="properties"), + BatchExportField(expression="distinct_id", alias="distinct_id"), + BatchExportField(expression="set", alias="set"), BatchExportField( - expression="nullIf(JSONExtractString(properties, '$set_once'), '')", + expression="set_once", alias="set_once", ), ] -BytesGenerator = collections.abc.Generator[bytes, None, None] -RecordsGenerator = collections.abc.Generator[pa.RecordBatch, None, None] +DEFAULT_MODELS = {"events", "persons"} + + +async def iter_model_records( + client: ClickHouseClient, model: str, team_id: int, is_backfill: bool, **parameters +) -> AsyncRecordsGenerator: + if model in DEFAULT_MODELS: + async for record in iter_records_from_model_view( + client=client, model=model, team_id=team_id, is_backfill=is_backfill, **parameters + ): + yield record + else: + for record in iter_records(client, team_id=team_id, is_backfill=is_backfill, **parameters): + yield record + -# Spoiler: We'll use these ones later 8) -# AsyncBytesGenerator = collections.abc.AsyncGenerator[bytes, None] -# AsyncRecordsGenerator = collections.abc.AsyncGenerator[pa.RecordBatch, None] +async def iter_records_from_model_view( + client: ClickHouseClient, model: str, is_backfill: bool, team_id: int, **parameters +) -> AsyncRecordsGenerator: + if model == "persons": + view = SELECT_FROM_PERSONS_VIEW + else: + # TODO: Let this model be exported by `astream_query_as_arrow`. + # Just to reduce risk, I don't want to change the function that runs 100% of the exports + # without battle testing it first. + # There are already changes going out to the queries themselves that will impact events in a + # positive way. So, we can come back later and drop this block. + for record_batch in iter_records(client, team_id=team_id, is_backfill=is_backfill, **parameters): + yield record_batch + return + + async for record_batch in client.astream_query_as_arrow(view, query_parameters=parameters): + yield record_batch def iter_records( @@ -193,48 +177,42 @@ def iter_records( data_interval_end_ch = dt.datetime.fromisoformat(interval_end).strftime("%Y-%m-%d %H:%M:%S") if exclude_events: - exclude_events_statement = "AND event NOT IN {exclude_events}" - events_to_exclude_tuple = tuple(exclude_events) + events_to_exclude_array = list(exclude_events) else: - exclude_events_statement = "" - events_to_exclude_tuple = () + events_to_exclude_array = [] if include_events: - include_events_statement = "AND event IN {include_events}" - events_to_include_tuple = tuple(include_events) + events_to_include_array = list(include_events) else: - include_events_statement = "" - events_to_include_tuple = () - - timestamp_field = get_timestamp_field(is_backfill) - timestamp_predicates = get_timestamp_predicates_for_team(team_id, is_backfill) + events_to_include_array = [] if fields is None: query_fields = ",".join(f"{field['expression']} AS {field['alias']}" for field in default_fields()) else: if "_inserted_at" not in [field["alias"] for field in fields]: - control_fields = [BatchExportField(expression="COALESCE(inserted_at, _timestamp)", alias="_inserted_at")] + control_fields = [BatchExportField(expression="_inserted_at", alias="_inserted_at")] else: control_fields = [] query_fields = ",".join(f"{field['expression']} AS {field['alias']}" for field in fields + control_fields) - query = SELECT_QUERY_TEMPLATE.substitute( - fields=query_fields, - order_by="ORDER BY COALESCE(inserted_at, _timestamp)", - format="FORMAT ArrowStream", - distinct="DISTINCT ON (event, cityHash64(distinct_id), cityHash64(uuid))", - timestamp_field=timestamp_field, - timestamp=timestamp_predicates, - exclude_events=exclude_events_statement, - include_events=include_events_statement, - ) + lookback_days = 4 + if str(team_id) in settings.UNCONSTRAINED_TIMESTAMP_TEAM_IDS: + query = SELECT_FROM_EVENTS_VIEW_UNBOUNDED + elif is_backfill: + query = SELECT_FROM_EVENTS_VIEW_BACKFILL + else: + query = SELECT_FROM_EVENTS_VIEW + lookback_days = settings.OVERRIDE_TIMESTAMP_TEAM_IDS.get(team_id, settings.DEFAULT_TIMESTAMP_LOOKBACK_DAYS) + + query_str = query.substitute(fields=query_fields) base_query_parameters = { "team_id": team_id, - "data_interval_start": data_interval_start_ch, - "data_interval_end": data_interval_end_ch, - "exclude_events": events_to_exclude_tuple, - "include_events": events_to_include_tuple, + "interval_start": data_interval_start_ch, + "interval_end": data_interval_end_ch, + "exclude_events": events_to_exclude_array, + "include_events": events_to_include_array, + "lookback_days": lookback_days, } if extra_query_parameters is not None: @@ -242,7 +220,7 @@ def iter_records( else: query_parameters = base_query_parameters - yield from client.stream_query_as_arrow(query, query_parameters=query_parameters) + yield from client.stream_query_as_arrow(query_str, query_parameters=query_parameters) def get_data_interval(interval: str, data_interval_end: str | None) -> tuple[dt.datetime, dt.datetime]: diff --git a/posthog/temporal/batch_exports/bigquery_batch_export.py b/posthog/temporal/batch_exports/bigquery_batch_export.py index 9190d736a724c..85385b1c80108 100644 --- a/posthog/temporal/batch_exports/bigquery_batch_export.py +++ b/posthog/temporal/batch_exports/bigquery_batch_export.py @@ -25,7 +25,7 @@ default_fields, execute_batch_export_insert_activity, get_data_interval, - iter_records, + iter_model_records, start_batch_export_run, ) from posthog.temporal.batch_exports.metrics import ( @@ -35,7 +35,7 @@ from posthog.temporal.batch_exports.temporary_file import ( BatchExportTemporaryFile, ) -from posthog.temporal.batch_exports.utils import peek_first_and_rewind, try_set_batch_export_run_to_running +from posthog.temporal.batch_exports.utils import apeek_first_and_rewind, try_set_batch_export_run_to_running from posthog.temporal.common.clickhouse import get_client from posthog.temporal.common.heartbeat import Heartbeater from posthog.temporal.common.logger import bind_temporal_worker_logger @@ -238,8 +238,9 @@ async def insert_into_bigquery_activity(inputs: BigQueryInsertInputs) -> Records fields = inputs.batch_export_schema["fields"] query_parameters = inputs.batch_export_schema["values"] - records_iterator = iter_records( + records_iterator = iter_model_records( client=client, + model="events", team_id=inputs.team_id, interval_start=data_interval_start, interval_end=inputs.data_interval_end, @@ -250,7 +251,7 @@ async def insert_into_bigquery_activity(inputs: BigQueryInsertInputs) -> Records is_backfill=inputs.is_backfill, ) - first_record_batch, records_iterator = peek_first_and_rewind(records_iterator) + first_record_batch, records_iterator = await apeek_first_and_rewind(records_iterator) if first_record_batch is None: return 0 @@ -314,7 +315,7 @@ async def flush_to_bigquery(bigquery_table, table_schema): # Columns need to be sorted according to BigQuery schema. record_columns = [field.name for field in schema] + ["_inserted_at"] - for record_batch in records_iterator: + async for record_batch in records_iterator: for record in record_batch.select(record_columns).to_pylist(): inserted_at = record.pop("_inserted_at") diff --git a/posthog/temporal/batch_exports/http_batch_export.py b/posthog/temporal/batch_exports/http_batch_export.py index 92ff0e9d58792..cf0e9b485f376 100644 --- a/posthog/temporal/batch_exports/http_batch_export.py +++ b/posthog/temporal/batch_exports/http_batch_export.py @@ -64,12 +64,12 @@ def raise_for_status(response: aiohttp.ClientResponse): def http_default_fields() -> list[BatchExportField]: """Return default fields used in HTTP batch export, currently supporting only migrations.""" return [ - BatchExportField(expression="toString(uuid)", alias="uuid"), + BatchExportField(expression="uuid", alias="uuid"), BatchExportField(expression="timestamp", alias="timestamp"), - BatchExportField(expression="COALESCE(inserted_at, _timestamp)", alias="_inserted_at"), + BatchExportField(expression="_inserted_at", alias="_inserted_at"), BatchExportField(expression="event", alias="event"), BatchExportField(expression="nullIf(properties, '')", alias="properties"), - BatchExportField(expression="toString(distinct_id)", alias="distinct_id"), + BatchExportField(expression="distinct_id", alias="distinct_id"), BatchExportField(expression="elements_chain", alias="elements_chain"), ] diff --git a/posthog/temporal/batch_exports/postgres_batch_export.py b/posthog/temporal/batch_exports/postgres_batch_export.py index 4408bb83b863f..54eb667062fbc 100644 --- a/posthog/temporal/batch_exports/postgres_batch_export.py +++ b/posthog/temporal/batch_exports/postgres_batch_export.py @@ -27,7 +27,7 @@ default_fields, execute_batch_export_insert_activity, get_data_interval, - iter_records, + iter_model_records, start_batch_export_run, ) from posthog.temporal.batch_exports.metrics import ( @@ -37,7 +37,7 @@ from posthog.temporal.batch_exports.temporary_file import ( BatchExportTemporaryFile, ) -from posthog.temporal.batch_exports.utils import peek_first_and_rewind, try_set_batch_export_run_to_running +from posthog.temporal.batch_exports.utils import apeek_first_and_rewind, try_set_batch_export_run_to_running from posthog.temporal.common.clickhouse import get_client from posthog.temporal.common.heartbeat import Heartbeater from posthog.temporal.common.logger import bind_temporal_worker_logger @@ -159,7 +159,7 @@ def postgres_default_fields() -> list[BatchExportField]: ) # Fields kept or removed for backwards compatibility with legacy apps schema. batch_export_fields.append({"expression": "toJSONString(elements_chain)", "alias": "elements"}) - batch_export_fields.append({"expression": "nullIf('', '')", "alias": "site_url"}) + batch_export_fields.append({"expression": "Null::Nullable(String)", "alias": "site_url"}) batch_export_fields.pop(batch_export_fields.index({"expression": "created_at", "alias": "created_at"})) # Team ID is (for historical reasons) an INTEGER (4 bytes) in PostgreSQL, but in ClickHouse is stored as Int64. # We can't encode it as an Int64, as this includes 4 extra bytes, and PostgreSQL will reject the data with a @@ -270,8 +270,9 @@ async def insert_into_postgres_activity(inputs: PostgresInsertInputs) -> Records fields = inputs.batch_export_schema["fields"] query_parameters = inputs.batch_export_schema["values"] - record_iterator = iter_records( + record_iterator = iter_model_records( client=client, + model="events", team_id=inputs.team_id, interval_start=inputs.data_interval_start, interval_end=inputs.data_interval_end, @@ -281,7 +282,7 @@ async def insert_into_postgres_activity(inputs: PostgresInsertInputs) -> Records extra_query_parameters=query_parameters, is_backfill=inputs.is_backfill, ) - first_record_batch, record_iterator = peek_first_and_rewind(record_iterator) + first_record_batch, record_iterator = await apeek_first_and_rewind(record_iterator) if first_record_batch is None: return 0 @@ -339,7 +340,7 @@ async def flush_to_postgres(): rows_exported.add(pg_file.records_since_last_reset) bytes_exported.add(pg_file.bytes_since_last_reset) - for record_batch in record_iterator: + async for record_batch in record_iterator: for result in record_batch.select(schema_columns).to_pylist(): row = result diff --git a/posthog/temporal/batch_exports/redshift_batch_export.py b/posthog/temporal/batch_exports/redshift_batch_export.py index f2467800764f2..52ce4e9db32cc 100644 --- a/posthog/temporal/batch_exports/redshift_batch_export.py +++ b/posthog/temporal/batch_exports/redshift_batch_export.py @@ -1,7 +1,6 @@ import collections.abc import contextlib import datetime as dt -import itertools import json import typing from dataclasses import dataclass @@ -22,7 +21,7 @@ default_fields, execute_batch_export_insert_activity, get_data_interval, - iter_records, + iter_model_records, start_batch_export_run, ) from posthog.temporal.batch_exports.metrics import get_rows_exported_metric @@ -31,7 +30,7 @@ create_table_in_postgres, postgres_connection, ) -from posthog.temporal.batch_exports.utils import peek_first_and_rewind, try_set_batch_export_run_to_running +from posthog.temporal.batch_exports.utils import apeek_first_and_rewind, try_set_batch_export_run_to_running from posthog.temporal.common.clickhouse import get_client from posthog.temporal.common.heartbeat import Heartbeater from posthog.temporal.common.logger import bind_temporal_worker_logger @@ -167,7 +166,7 @@ def get_redshift_fields_from_record_schema( async def insert_records_to_redshift( - records: collections.abc.Iterator[dict[str, typing.Any]], + records: collections.abc.AsyncGenerator[dict[str, typing.Any], None], redshift_connection: psycopg.AsyncConnection, schema: str | None, table: str, @@ -192,8 +191,11 @@ async def insert_records_to_redshift( make us go OOM or exceed Redshift's SQL statement size limit (16MB). Setting this too low can significantly affect performance due to Redshift's poor handling of INSERTs. """ - first_record = next(records) - columns = first_record.keys() + first_record_batch, records_iterator = await apeek_first_and_rewind(records) + if first_record_batch is None: + return 0 + + columns = first_record_batch.keys() if schema: table_identifier = sql.Identifier(schema, table) @@ -225,7 +227,7 @@ async def flush_to_redshift(batch): # the byte size of each batch the way things are currently written. We can revisit this # in the future if we decide it's useful enough. - for record in itertools.chain([first_record], records): + async for record in records_iterator: batch.append(cursor.mogrify(template, record).encode("utf-8")) if len(batch) < batch_size: continue @@ -313,8 +315,9 @@ async def insert_into_redshift_activity(inputs: RedshiftInsertInputs) -> Records fields = inputs.batch_export_schema["fields"] query_parameters = inputs.batch_export_schema["values"] - record_iterator = iter_records( + record_iterator = iter_model_records( client=client, + model="events", team_id=inputs.team_id, interval_start=inputs.data_interval_start, interval_end=inputs.data_interval_end, @@ -324,7 +327,7 @@ async def insert_into_redshift_activity(inputs: RedshiftInsertInputs) -> Records extra_query_parameters=query_parameters, is_backfill=inputs.is_backfill, ) - first_record_batch, record_iterator = peek_first_and_rewind(record_iterator) + first_record_batch, record_iterator = await apeek_first_and_rewind(record_iterator) if first_record_batch is None: return 0 @@ -379,9 +382,14 @@ def map_to_record(row: dict) -> dict: return record + async def record_generator() -> collections.abc.AsyncGenerator[dict[str, typing.Any], None]: + async for record_batch in record_iterator: + for record in record_batch.to_pylist(): + yield map_to_record(record) + async with postgres_connection(inputs) as connection: records_completed = await insert_records_to_redshift( - (map_to_record(record) for record_batch in record_iterator for record in record_batch.to_pylist()), + record_generator(), connection, inputs.schema, inputs.table_name, diff --git a/posthog/temporal/batch_exports/s3_batch_export.py b/posthog/temporal/batch_exports/s3_batch_export.py index 43ad45257a3be..7f460cb12fa7b 100644 --- a/posthog/temporal/batch_exports/s3_batch_export.py +++ b/posthog/temporal/batch_exports/s3_batch_export.py @@ -28,7 +28,7 @@ default_fields, execute_batch_export_insert_activity, get_data_interval, - iter_records, + iter_model_records, start_batch_export_run, ) from posthog.temporal.batch_exports.metrics import ( @@ -43,7 +43,7 @@ ParquetBatchExportWriter, UnsupportedFileFormatError, ) -from posthog.temporal.batch_exports.utils import peek_first_and_rewind, try_set_batch_export_run_to_running +from posthog.temporal.batch_exports.utils import apeek_first_and_rewind, try_set_batch_export_run_to_running from posthog.temporal.common.clickhouse import get_client from posthog.temporal.common.heartbeat import Heartbeater from posthog.temporal.common.logger import bind_temporal_worker_logger @@ -407,8 +407,8 @@ def s3_default_fields() -> list[BatchExportField]: """ batch_export_fields = default_fields() batch_export_fields.append({"expression": "elements_chain", "alias": "elements_chain"}) - batch_export_fields.append({"expression": "nullIf(person_properties, '')", "alias": "person_properties"}) - batch_export_fields.append({"expression": "toString(person_id)", "alias": "person_id"}) + batch_export_fields.append({"expression": "person_properties", "alias": "person_properties"}) + batch_export_fields.append({"expression": "person_id", "alias": "person_id"}) # Again, in contrast to other destinations, and for historical reasons, we do not include these fields. not_exported_by_default = {"team_id", "set", "set_once"} @@ -452,7 +452,8 @@ async def insert_into_s3_activity(inputs: S3InsertInputs) -> RecordsCompleted: fields = inputs.batch_export_schema["fields"] query_parameters = inputs.batch_export_schema["values"] - record_iterator = iter_records( + record_iterator = iter_model_records( + model="events", client=client, team_id=inputs.team_id, interval_start=interval_start, @@ -464,10 +465,11 @@ async def insert_into_s3_activity(inputs: S3InsertInputs) -> RecordsCompleted: is_backfill=inputs.is_backfill, ) - first_record_batch, record_iterator = peek_first_and_rewind(record_iterator) + first_record_batch, record_iterator = await apeek_first_and_rewind(record_iterator) + records_completed = 0 if first_record_batch is None: - return 0 + return records_completed async with s3_upload as s3_upload: @@ -516,14 +518,15 @@ async def flush_to_s3( rows_exported = get_rows_exported_metric() bytes_exported = get_bytes_exported_metric() - for record_batch in record_iterator: + async for record_batch in record_iterator: record_batch = cast_record_batch_json_columns(record_batch) await writer.write_record_batch(record_batch) + records_completed = writer.records_total await s3_upload.complete() - return writer.records_total + return records_completed def get_batch_export_writer( diff --git a/posthog/temporal/batch_exports/snowflake_batch_export.py b/posthog/temporal/batch_exports/snowflake_batch_export.py index 73e6c23fb2f49..374248e83aff5 100644 --- a/posthog/temporal/batch_exports/snowflake_batch_export.py +++ b/posthog/temporal/batch_exports/snowflake_batch_export.py @@ -28,7 +28,7 @@ default_fields, execute_batch_export_insert_activity, get_data_interval, - iter_records, + iter_model_records, start_batch_export_run, ) from posthog.temporal.batch_exports.metrics import ( @@ -38,7 +38,7 @@ from posthog.temporal.batch_exports.temporary_file import ( BatchExportTemporaryFile, ) -from posthog.temporal.batch_exports.utils import peek_first_and_rewind, try_set_batch_export_run_to_running +from posthog.temporal.batch_exports.utils import apeek_first_and_rewind, try_set_batch_export_run_to_running from posthog.temporal.common.clickhouse import get_client from posthog.temporal.common.heartbeat import Heartbeater from posthog.temporal.common.logger import bind_temporal_worker_logger @@ -204,17 +204,11 @@ def snowflake_default_fields() -> list[BatchExportField]: batch_export_fields.pop(batch_export_fields.index({"expression": "created_at", "alias": "created_at"})) # For historical reasons, 'set' and 'set_once' are prefixed with 'people_'. - set_field = batch_export_fields.pop( - batch_export_fields.index( - BatchExportField(expression="nullIf(JSONExtractString(properties, '$set'), '')", alias="set") - ) - ) + set_field = batch_export_fields.pop(batch_export_fields.index(BatchExportField(expression="set", alias="set"))) set_field["alias"] = "people_set" set_once_field = batch_export_fields.pop( - batch_export_fields.index( - BatchExportField(expression="nullIf(JSONExtractString(properties, '$set_once'), '')", alias="set_once") - ) + batch_export_fields.index(BatchExportField(expression="set_once", alias="set_once")) ) set_once_field["alias"] = "people_set_once" @@ -462,8 +456,9 @@ async def flush_to_snowflake( fields = inputs.batch_export_schema["fields"] query_parameters = inputs.batch_export_schema["values"] - record_iterator = iter_records( + record_iterator = iter_model_records( client=client, + model="events", team_id=inputs.team_id, interval_start=data_interval_start, interval_end=inputs.data_interval_end, @@ -473,7 +468,7 @@ async def flush_to_snowflake( extra_query_parameters=query_parameters, is_backfill=inputs.is_backfill, ) - first_record_batch, record_iterator = peek_first_and_rewind(record_iterator) + first_record_batch, record_iterator = await apeek_first_and_rewind(record_iterator) if first_record_batch is None: return 0 @@ -510,7 +505,7 @@ async def flush_to_snowflake( inserted_at = None with BatchExportTemporaryFile() as local_results_file: - for record_batch in record_iterator: + async for record_batch in record_iterator: for record in record_batch.select(record_columns).to_pylist(): inserted_at = record.pop("_inserted_at") diff --git a/posthog/temporal/batch_exports/utils.py b/posthog/temporal/batch_exports/utils.py index 8a589ec378733..85b6151cb3a46 100644 --- a/posthog/temporal/batch_exports/utils.py +++ b/posthog/temporal/batch_exports/utils.py @@ -2,6 +2,7 @@ import collections.abc import typing import uuid + from posthog.batch_exports.models import BatchExportRun from posthog.batch_exports.service import update_batch_export_run @@ -38,6 +39,38 @@ def rewind_gen() -> collections.abc.Generator[T, None, None]: return (first, rewind_gen()) +async def apeek_first_and_rewind( + gen: collections.abc.AsyncGenerator[T, None], +) -> tuple[T | None, collections.abc.AsyncGenerator[T, None]]: + """Peek into the first element in a generator and rewind the advance. + + The generator is advanced and cannot be reversed, so we create a new one that first + yields the element we popped before yielding the rest of the generator. + + Returns: + A tuple with the first element of the generator and the generator itself. + """ + try: + first = await anext(gen) + except StopAsyncIteration: + first = None + + async def rewind_gen() -> collections.abc.AsyncGenerator[T, None]: + """Yield the item we popped to rewind the generator. + + Return early if the generator is empty. + """ + if first is None: + return + + yield first + + async for value in gen: + yield value + + return (first, rewind_gen()) + + async def try_set_batch_export_run_to_running(run_id: str | None, logger, timeout: float = 10.0) -> None: """Try to set a batch export run to 'RUNNING' status, but do nothing if we fail or if 'run_id' is 'None'. diff --git a/posthog/temporal/common/asyncpa.py b/posthog/temporal/common/asyncpa.py new file mode 100644 index 0000000000000..c301538a50eb0 --- /dev/null +++ b/posthog/temporal/common/asyncpa.py @@ -0,0 +1,129 @@ +import typing + +import pyarrow as pa + +CONTINUATION_BYTES = b"\xff\xff\xff\xff" + + +class InvalidMessageFormat(Exception): + pass + + +class AsyncMessageReader: + """Asynchronously read PyArrow messages from bytes iterator.""" + + def __init__(self, bytes_iter: typing.AsyncIterator[bytes]): + self._bytes = bytes_iter + self._buffer = bytearray() + + def __aiter__(self) -> "AsyncMessageReader": + return self + + async def __anext__(self) -> pa.Message: + return await self.read_next_message() + + async def read_next_message(self) -> pa.Message: + """Read the next message as an encapsulated IPC binary message. + + See: https://arrow.apache.org/docs/format/Columnar.html#encapsulated-message-format. + """ + await self.read_until(4) + + if self._buffer[:4] != CONTINUATION_BYTES: + raise InvalidMessageFormat("Encapsulated IPC message format must begin with continuation bytes") + + await self.read_until(8) + + # Size of the metadata message + padding to 8-byte boundary. + metadata_size = int.from_bytes(self._buffer[4:8], byteorder="little") + + if not metadata_size: + raise StopAsyncIteration() + + await self.read_until(8 + metadata_size) + + metadata_flatbuffer = self._buffer[8:][:metadata_size] + + body_size = self.parse_body_size(metadata_flatbuffer) + + total_message_size = 8 + metadata_size + body_size + await self.read_until(total_message_size) + + msg = pa.ipc.read_message(memoryview(self._buffer)[:total_message_size]) + + self._buffer = self._buffer[total_message_size:] + + return msg + + async def read_until(self, n: int) -> None: + """Read from self._bytes until there are at least n bytes in self._buffer.""" + while len(self._buffer) < n: + self._buffer.extend(await anext(self._bytes)) + + def parse_body_size(self, metadata_flatbuffer: bytearray) -> int: + """Parse body size from metadata flatbuffer. + + See: https://github.com/dvidelabs/flatcc/blob/master/doc/binary-format.md#internals. + """ + # All content is little endian, and most offsets are 4 bytes. + # The first location points to root table. + root_table_location = int.from_bytes(metadata_flatbuffer[:4], byteorder="little", signed=False) + # Root table starts with a 4 byte vtable offset, it is signed. + v_table_offset = int.from_bytes(metadata_flatbuffer[root_table_location:][:4], byteorder="little", signed=True) + # Vtable is found by substracting the signed 'v_table_offset' to the location where 'v_table_offset' is stored. + # This 'v_table_offset' is stored in the root table, hence the following substraction: + v_table_location = root_table_location - v_table_offset + + # The vtable is a table of 2 byte offsets. The first entry is the vtable size in bytes. + v_table_size = int.from_bytes(metadata_flatbuffer[v_table_location:][:2], byteorder="little") + # The second entry is another 2 byte offset indicating the table size, which we are not interested in. + # We know that a Message contains the following: a version number, a header, the body size, and custom metadata. + # We are interested in parsing the body size, which comes after the first two vtable entries, the version number, and header. + # So, we skip until 10 (4 bytes for vtable entries, 2 bytes for version number, 2 bytes for header type, 2 bytes for header). + body_size_v_table_offset = 10 + + if v_table_size <= body_size_v_table_offset: + body_size = 0 + else: + body_size_offset = int.from_bytes( + metadata_flatbuffer[v_table_location + body_size_v_table_offset :][:2], byteorder="little" + ) + body_size = int.from_bytes( + metadata_flatbuffer[root_table_location + body_size_offset :][:8], byteorder="little" + ) + + return body_size + + +class AsyncRecordBatchReader: + """Asynchronously read PyArrow RecordBatches from an iterator of bytes.""" + + def __init__(self, bytes_iter: typing.AsyncIterator[bytes]) -> None: + self._reader = AsyncMessageReader(bytes_iter) + self._schema: None | pa.Schema = None + + def __aiter__(self) -> "AsyncRecordBatchReader": + return self + + async def __anext__(self) -> pa.RecordBatch: + return await self.read_next_record_batch() + + async def read_next_record_batch(self) -> pa.RecordBatch: + if self._schema is None: + schema = await self.read_schema() + self._schema = schema + else: + schema = self._schema + + message = await anext(self._reader) + + return pa.ipc.read_record_batch(message, schema) + + async def read_schema(self) -> pa.Schema: + """Read the schema, which should be the first message.""" + message = await anext(self._reader) + + if message.type != "schema": + raise TypeError(f"Expected message of type 'schema' got '{message.type}'") + + return pa.ipc.read_schema(message) diff --git a/posthog/temporal/common/clickhouse.py b/posthog/temporal/common/clickhouse.py index ad8bfe8173e82..c021fc7007da4 100644 --- a/posthog/temporal/common/clickhouse.py +++ b/posthog/temporal/common/clickhouse.py @@ -10,6 +10,8 @@ import requests from django.conf import settings +from posthog.temporal.common.asyncpa import AsyncRecordBatchReader + def encode_clickhouse_data(data: typing.Any, quote_char="'") -> bytes: """Encode data for ClickHouse. @@ -357,6 +359,23 @@ def stream_query_as_arrow( with pa.ipc.open_stream(pa.PythonFile(response.raw)) as reader: yield from reader + async def astream_query_as_arrow( + self, + query, + *data, + query_parameters=None, + query_id: str | None = None, + ) -> typing.AsyncGenerator[pa.RecordBatch, None]: + """Execute the given query in ClickHouse and stream back the response as Arrow record batches. + + This method makes sense when running with FORMAT ArrowStream, although we currently do not enforce this. + As pyarrow doesn't support async/await buffers, this method is sync and utilizes requests instead of aiohttp. + """ + async with self.apost_query(query, *data, query_parameters=query_parameters, query_id=query_id) as response: + reader = AsyncRecordBatchReader(response.content.iter_any()) + async for batch in reader: + yield batch + async def __aenter__(self): """Enter method part of the AsyncContextManager protocol.""" return self diff --git a/posthog/temporal/tests/batch_exports/conftest.py b/posthog/temporal/tests/batch_exports/conftest.py index 58263066cc191..deebf15349e3a 100644 --- a/posthog/temporal/tests/batch_exports/conftest.py +++ b/posthog/temporal/tests/batch_exports/conftest.py @@ -1,3 +1,5 @@ +import asyncio + import psycopg import pytest import pytest_asyncio @@ -59,7 +61,7 @@ def batch_export_schema(request) -> dict | None: @pytest_asyncio.fixture async def setup_postgres_test_db(postgres_config): - """Fixture to manage a database for Redshift export testing. + """Fixture to manage a database for Redshift and Postgres export testing. Managing a test database involves the following steps: 1. Creating a test database. @@ -123,3 +125,31 @@ async def setup_postgres_test_db(postgres_config): await cursor.execute(sql.SQL("DROP DATABASE {}").format(sql.Identifier(postgres_config["database"]))) await connection.close() + + +@pytest_asyncio.fixture(scope="module", autouse=True) +async def create_clickhouse_tables_and_views(clickhouse_client, django_db_setup): + from posthog.batch_exports.sql import ( + CREATE_EVENTS_BATCH_EXPORT_VIEW, + CREATE_EVENTS_BATCH_EXPORT_VIEW_BACKFILL, + CREATE_EVENTS_BATCH_EXPORT_VIEW_UNBOUNDED, + CREATE_PERSONS_BATCH_EXPORT_VIEW, + ) + from posthog.clickhouse.schema import CREATE_KAFKA_TABLE_QUERIES + + create_view_queries = ( + CREATE_EVENTS_BATCH_EXPORT_VIEW, + CREATE_EVENTS_BATCH_EXPORT_VIEW_BACKFILL, + CREATE_EVENTS_BATCH_EXPORT_VIEW_UNBOUNDED, + CREATE_PERSONS_BATCH_EXPORT_VIEW, + ) + + clickhouse_tasks = set() + for query in create_view_queries + CREATE_KAFKA_TABLE_QUERIES: + task = asyncio.create_task(clickhouse_client.execute_query(query)) + clickhouse_tasks.add(task) + task.add_done_callback(clickhouse_tasks.discard) + + await asyncio.wait(clickhouse_tasks) + + return diff --git a/posthog/temporal/tests/batch_exports/test_batch_exports.py b/posthog/temporal/tests/batch_exports/test_batch_exports.py index 0643b0191daee..90e660a06adbe 100644 --- a/posthog/temporal/tests/batch_exports/test_batch_exports.py +++ b/posthog/temporal/tests/batch_exports/test_batch_exports.py @@ -8,7 +8,7 @@ from posthog.temporal.batch_exports.batch_exports import ( get_data_interval, - get_rows_count, + iter_model_records, iter_records, ) from posthog.temporal.tests.utils.events import generate_test_events_in_clickhouse @@ -16,155 +16,6 @@ pytestmark = [pytest.mark.asyncio, pytest.mark.django_db] -async def test_get_rows_count(clickhouse_client): - """Test the count of rows returned by get_rows_count.""" - team_id = randint(1, 1000000) - data_interval_end = dt.datetime.fromisoformat("2023-04-25T14:31:00.000000+00:00") - data_interval_start = dt.datetime.fromisoformat("2023-04-25T14:30:00.000000+00:00") - - _ = await generate_test_events_in_clickhouse( - client=clickhouse_client, - team_id=team_id, - start_time=data_interval_start, - end_time=data_interval_end, - count=10000, - count_outside_range=0, - count_other_team=0, - duplicate=False, - ) - - row_count = await get_rows_count( - clickhouse_client, team_id, data_interval_start.isoformat(), data_interval_end.isoformat() - ) - assert row_count == 10000 - - -async def test_get_rows_count_handles_duplicates(clickhouse_client): - """Test the count of rows returned by get_rows_count are de-duplicated.""" - team_id = randint(1, 1000000) - - data_interval_end = dt.datetime.fromisoformat("2023-04-25T14:31:00.000000+00:00") - data_interval_start = dt.datetime.fromisoformat("2023-04-25T14:30:00.000000+00:00") - - _ = await generate_test_events_in_clickhouse( - client=clickhouse_client, - team_id=team_id, - start_time=data_interval_start, - end_time=data_interval_end, - count=10, - count_outside_range=0, - count_other_team=0, - duplicate=True, - ) - - row_count = await get_rows_count( - clickhouse_client, team_id, data_interval_start.isoformat(), data_interval_end.isoformat() - ) - assert row_count == 10 - - -async def test_get_rows_count_can_exclude_events(clickhouse_client): - """Test the count of rows returned by get_rows_count can exclude events.""" - team_id = randint(1, 1000000) - - data_interval_end = dt.datetime.fromisoformat("2023-04-25T14:31:00.000000+00:00") - data_interval_start = dt.datetime.fromisoformat("2023-04-25T14:30:00.000000+00:00") - - (events, _, _) = await generate_test_events_in_clickhouse( - client=clickhouse_client, - team_id=team_id, - start_time=data_interval_start, - end_time=data_interval_end, - count=10000, - count_outside_range=0, - count_other_team=0, - duplicate=False, - ) - - # Exclude the latter half of events. - exclude_events = (event["event"] for event in events[5000:]) - row_count = await get_rows_count( - clickhouse_client, - team_id, - data_interval_start.isoformat(), - data_interval_end.isoformat(), - exclude_events=exclude_events, - ) - assert row_count == 5000 - - -async def test_get_rows_count_can_include_events(clickhouse_client): - """Test the count of rows returned by get_rows_count can include events.""" - team_id = randint(1, 1000000) - - data_interval_end = dt.datetime.fromisoformat("2023-04-25T14:31:00.000000+00:00") - data_interval_start = dt.datetime.fromisoformat("2023-04-25T14:30:00.000000+00:00") - - (events, _, _) = await generate_test_events_in_clickhouse( - client=clickhouse_client, - team_id=team_id, - start_time=data_interval_start, - end_time=data_interval_end, - count=5000, - count_outside_range=0, - count_other_team=0, - duplicate=False, - ) - - # Include the latter half of events. - include_events = (event["event"] for event in events[2500:]) - row_count = await get_rows_count( - clickhouse_client, - team_id, - data_interval_start.isoformat(), - data_interval_end.isoformat(), - include_events=include_events, - ) - assert row_count == 2500 - - -async def test_get_rows_count_ignores_timestamp_predicates(clickhouse_client): - """Test the count of rows returned by get_rows_count can ignore timestamp predicates.""" - team_id = randint(1, 1000000) - - inserted_at = dt.datetime.fromisoformat("2023-04-25T14:30:00.000000+00:00") - data_interval_end = inserted_at + dt.timedelta(hours=1) - - # Insert some data with timestamps a couple of years before inserted_at - timestamp_start = inserted_at - dt.timedelta(hours=24 * 365 * 2) - timestamp_end = inserted_at - dt.timedelta(hours=24 * 365) - - await generate_test_events_in_clickhouse( - client=clickhouse_client, - team_id=team_id, - start_time=timestamp_start, - end_time=timestamp_end, - count=10, - count_outside_range=0, - count_other_team=0, - duplicate=False, - inserted_at=inserted_at, - ) - - row_count = await get_rows_count( - clickhouse_client, - team_id, - inserted_at.isoformat(), - data_interval_end.isoformat(), - ) - # All events are outside timestamp bounds (a year difference with inserted_at) - assert row_count == 0 - - with override_settings(UNCONSTRAINED_TIMESTAMP_TEAM_IDS=[str(team_id)]): - row_count = await get_rows_count( - clickhouse_client, - team_id, - inserted_at.isoformat(), - data_interval_end.isoformat(), - ) - assert row_count == 10 - - def assert_records_match_events(records, events): """Compare records returned from ClickHouse to events inserted into ClickHouse. @@ -388,7 +239,6 @@ async def test_iter_records_ignores_timestamp_predicates(clickhouse_client): {"expression": "event", "alias": "event_name"}, {"expression": "team_id", "alias": "team"}, {"expression": "timestamp", "alias": "time_the_stamp"}, - {"expression": "inserted_at", "alias": "ingestion_time"}, {"expression": "created_at", "alias": "creation_time"}, ], ) @@ -412,11 +262,13 @@ async def test_iter_records_with_single_field_and_alias(clickhouse_client, field records = [ record - for record_batch in iter_records( - clickhouse_client, - team_id, - data_interval_start.isoformat(), - data_interval_end.isoformat(), + async for record_batch in iter_model_records( + client=clickhouse_client, + model="events", + team_id=team_id, + is_backfill=False, + interval_start=data_interval_start.isoformat(), + interval_end=data_interval_end.isoformat(), fields=[field], ) for record in record_batch.to_pylist() diff --git a/posthog/temporal/tests/batch_exports/test_bigquery_batch_export_workflow.py b/posthog/temporal/tests/batch_exports/test_bigquery_batch_export_workflow.py index d132f2dc21338..9296ea2fdfc87 100644 --- a/posthog/temporal/tests/batch_exports/test_bigquery_batch_export_workflow.py +++ b/posthog/temporal/tests/batch_exports/test_bigquery_batch_export_workflow.py @@ -216,7 +216,6 @@ def use_json_type(request) -> bool: { "fields": [ {"expression": "event", "alias": "event"}, - {"expression": "inserted_at", "alias": "inserted_at"}, {"expression": "toInt8(1 + 1)", "alias": "two"}, ], "values": {}, diff --git a/posthog/temporal/tests/batch_exports/test_postgres_batch_export_workflow.py b/posthog/temporal/tests/batch_exports/test_postgres_batch_export_workflow.py index ee13138341e87..54f638a68d688 100644 --- a/posthog/temporal/tests/batch_exports/test_postgres_batch_export_workflow.py +++ b/posthog/temporal/tests/batch_exports/test_postgres_batch_export_workflow.py @@ -127,6 +127,7 @@ async def assert_clickhouse_records_in_postgres( expected_column_names = list(expected_records[0].keys()).sort() assert inserted_column_names == expected_column_names + assert len(inserted_records) == len(expected_records) assert inserted_records[0] == expected_records[0] assert inserted_records == expected_records @@ -171,7 +172,7 @@ async def postgres_connection(postgres_config, setup_postgres_test_db): { "fields": [ {"expression": "event", "alias": "event"}, - {"expression": "inserted_at", "alias": "inserted_at"}, + {"expression": "_inserted_at", "alias": "inserted_at"}, {"expression": "toInt8(1 + 1)", "alias": "two"}, ], "values": {}, diff --git a/posthog/temporal/tests/batch_exports/test_redshift_batch_export_workflow.py b/posthog/temporal/tests/batch_exports/test_redshift_batch_export_workflow.py index 5567bd336713e..40071bd153b53 100644 --- a/posthog/temporal/tests/batch_exports/test_redshift_batch_export_workflow.py +++ b/posthog/temporal/tests/batch_exports/test_redshift_batch_export_workflow.py @@ -215,7 +215,7 @@ async def psycopg_connection(redshift_config, setup_postgres_test_db): { "fields": [ {"expression": "event", "alias": "event"}, - {"expression": "inserted_at", "alias": "inserted_at"}, + {"expression": "_inserted_at", "alias": "inserted_at"}, {"expression": "toInt8(1 + 1)", "alias": "two"}, ], "values": {}, diff --git a/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py b/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py index baecce38e47b5..c4847e45a752a 100644 --- a/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py +++ b/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py @@ -149,6 +149,28 @@ async def minio_client(bucket_name): await minio_client.delete_bucket(Bucket=bucket_name) +async def assert_file_in_s3(s3_compatible_client, bucket_name, key_prefix, file_format, compression, json_columns): + """Assert a file is in S3 and return its contents.""" + objects = await s3_compatible_client.list_objects_v2(Bucket=bucket_name, Prefix=key_prefix) + + assert len(objects.get("Contents", [])) == 1 + + key = objects["Contents"][0].get("Key") + assert key + + if file_format == "Parquet": + s3_data = await read_parquet_from_s3(bucket_name, key, json_columns) + + elif file_format == "JSONLines": + s3_object = await s3_compatible_client.get_object(Bucket=bucket_name, Key=key) + data = await s3_object["Body"].read() + s3_data = read_s3_data_as_json(data, compression) + else: + raise ValueError(f"Unsupported file format: {file_format}") + + return s3_data + + async def assert_clickhouse_records_in_s3( s3_compatible_client, clickhouse_client: ClickHouseClient, @@ -178,27 +200,15 @@ async def assert_clickhouse_records_in_s3( batch_export_schema: Custom schema used in the batch export. compression: Optional compression used in upload. """ - # List the objects in the bucket with the prefix. - objects = await s3_compatible_client.list_objects_v2(Bucket=bucket_name, Prefix=key_prefix) - - # Check that there is only one object. - assert len(objects.get("Contents", [])) == 1 - - # Get the object. - key = objects["Contents"][0].get("Key") - assert key - json_columns = ("properties", "person_properties", "set", "set_once") - - if file_format == "Parquet": - s3_data = await read_parquet_from_s3(bucket_name, key, json_columns) - - elif file_format == "JSONLines": - s3_object = await s3_compatible_client.get_object(Bucket=bucket_name, Key=key) - data = await s3_object["Body"].read() - s3_data = read_s3_data_as_json(data, compression) - else: - raise ValueError(f"Unsupported file format: {file_format}") + s3_data = await assert_file_in_s3( + s3_compatible_client=s3_compatible_client, + bucket_name=bucket_name, + key_prefix=key_prefix, + file_format=file_format, + compression=compression, + json_columns=json_columns, + ) if batch_export_schema is not None: schema_column_names = [field["alias"] for field in batch_export_schema["fields"]] @@ -816,81 +826,6 @@ async def test_s3_export_workflow_with_minio_bucket_and_a_lot_of_data( ) -async def test_s3_export_workflow_defaults_to_timestamp_on_null_inserted_at( - clickhouse_client, minio_client, bucket_name, compression, interval, s3_batch_export, s3_key_prefix, ateam -): - """Test the S3BatchExport Workflow end-to-end by using a local MinIO bucket instead of S3. - - This test is the same as test_s3_export_workflow_with_minio_bucket, but we create events with None as - inserted_at to assert we properly default to _timestamp. This is relevant for rows inserted before inserted_at - was added. - """ - data_interval_end = dt.datetime.fromisoformat("2023-04-25T14:30:00.000000+00:00") - data_interval_start = data_interval_end - s3_batch_export.interval_time_delta - - await generate_test_events_in_clickhouse( - client=clickhouse_client, - team_id=ateam.pk, - start_time=data_interval_start, - end_time=data_interval_end, - count=100, - count_outside_range=10, - count_other_team=10, - duplicate=True, - properties={"$browser": "Chrome", "$os": "Mac OS X"}, - person_properties={"utm_medium": "referral", "$initial_os": "Linux"}, - inserted_at=None, - ) - - workflow_id = str(uuid4()) - inputs = S3BatchExportInputs( - team_id=ateam.pk, - batch_export_id=str(s3_batch_export.id), - data_interval_end=data_interval_end.isoformat(), - interval=interval, - **s3_batch_export.destination.config, - ) - - async with await WorkflowEnvironment.start_time_skipping() as activity_environment: - async with Worker( - activity_environment.client, - task_queue=settings.TEMPORAL_TASK_QUEUE, - workflows=[S3BatchExportWorkflow], - activities=[ - start_batch_export_run, - insert_into_s3_activity, - finish_batch_export_run, - ], - workflow_runner=UnsandboxedWorkflowRunner(), - ): - await activity_environment.client.execute_workflow( - S3BatchExportWorkflow.run, - inputs, - id=workflow_id, - task_queue=settings.TEMPORAL_TASK_QUEUE, - retry_policy=RetryPolicy(maximum_attempts=1), - execution_timeout=dt.timedelta(seconds=10), - ) - - runs = await afetch_batch_export_runs(batch_export_id=s3_batch_export.id) - assert len(runs) == 1 - - run = runs[0] - assert run.status == "Completed" - assert run.records_completed == 100 - - await assert_clickhouse_records_in_s3( - s3_compatible_client=minio_client, - clickhouse_client=clickhouse_client, - bucket_name=bucket_name, - key_prefix=s3_key_prefix, - team_id=ateam.pk, - data_interval_start=data_interval_start, - data_interval_end=data_interval_end, - compression=compression, - ) - - @pytest.mark.parametrize( "s3_key_prefix", [ @@ -1364,7 +1299,7 @@ async def test_insert_into_s3_activity_heartbeats( count_other_team=0, duplicate=False, # We need at least 5MB for a multi-part upload which is what we are testing. - properties={"$chonky": ("a" * 5 * 1024**2)}, + properties={"$chonky": ("a" * 5 * 2048**2)}, inserted_at=part_inserted_at, ) diff --git a/posthog/temporal/tests/batch_exports/test_snowflake_batch_export_workflow.py b/posthog/temporal/tests/batch_exports/test_snowflake_batch_export_workflow.py index 09341ca04648c..1462fd03b0b35 100644 --- a/posthog/temporal/tests/batch_exports/test_snowflake_batch_export_workflow.py +++ b/posthog/temporal/tests/batch_exports/test_snowflake_batch_export_workflow.py @@ -329,18 +329,21 @@ def snowflake_config(database, schema) -> dict[str, str]: and tests that mock it. """ password = os.getenv("SNOWFLAKE_PASSWORD", "password") - warehouse = os.getenv("SNOWFLAKE_WAREHOUSE", "COMPUTE_WH") + warehouse = os.getenv("SNOWFLAKE_WAREHOUSE", "warehouse") account = os.getenv("SNOWFLAKE_ACCOUNT", "account") - username = os.getenv("SNOWFLAKE_USERNAME", "hazzadous") + username = os.getenv("SNOWFLAKE_USERNAME", "username") + role = os.getenv("SNOWFLAKE_ROLE", "role") - return { + config = { "password": password, "user": username, "warehouse": warehouse, "account": account, "database": database, "schema": schema, + "role": role, } + return config @pytest_asyncio.fixture @@ -917,6 +920,7 @@ def snowflake_cursor(snowflake_config): with snowflake.connector.connect( user=snowflake_config["user"], password=snowflake_config["password"], + role=snowflake_config["role"], account=snowflake_config["account"], warehouse=snowflake_config["warehouse"], ) as connection: @@ -936,14 +940,14 @@ def snowflake_cursor(snowflake_config): {"expression": "event", "alias": "event"}, {"expression": "nullIf(JSONExtractString(properties, %(hogql_val_0)s), '')", "alias": "browser"}, {"expression": "nullIf(JSONExtractString(properties, %(hogql_val_1)s), '')", "alias": "os"}, - {"expression": "nullIf(properties, '')", "alias": "all_properties"}, + {"expression": "properties", "alias": "all_properties"}, ], "values": {"hogql_val_0": "$browser", "hogql_val_1": "$os"}, }, { "fields": [ {"expression": "event", "alias": "event"}, - {"expression": "inserted_at", "alias": "inserted_at"}, + {"expression": "_inserted_at", "alias": "inserted_at"}, {"expression": "toInt32(1 + 1)", "alias": "two"}, ], "values": {}, @@ -1334,16 +1338,11 @@ def capture_heartbeat_details(*details): **snowflake_config, ) - with override_settings(BATCH_EXPORT_SNOWFLAKE_UPLOAD_CHUNK_SIZE_BYTES=1): + with override_settings(BATCH_EXPORT_SNOWFLAKE_UPLOAD_CHUNK_SIZE_BYTES=0): await activity_environment.run(insert_into_snowflake_activity, insert_inputs) - assert n_expected_files == len(captured_details) - - for index, details_captured in enumerate(captured_details): - assert dt.datetime.fromisoformat( - details_captured[0] - ) == data_interval_end - snowflake_batch_export.interval_time_delta / (index + 1) - assert details_captured[1] == index + 1 + # It's not guaranteed we will heartbeat right after every file. + assert len(captured_details) > 0 assert_clickhouse_records_in_snowflake( snowflake_cursor=snowflake_cursor, diff --git a/posthog/temporal/tests/utils/events.py b/posthog/temporal/tests/utils/events.py index ce48257381801..85d4f866b515d 100644 --- a/posthog/temporal/tests/utils/events.py +++ b/posthog/temporal/tests/utils/events.py @@ -37,7 +37,7 @@ def generate_test_events( team_id: int, possible_datetimes: list[dt.datetime], event_name: str, - inserted_at: str | dt.datetime | None = "_timestamp", + inserted_at: str | dt.datetime | None = "random", properties: dict | None = None, person_properties: dict | None = None, ip: str | None = None, @@ -51,6 +51,8 @@ def generate_test_events( if inserted_at == "_timestamp": inserted_at_value = _timestamp.strftime("%Y-%m-%d %H:%M:%S.%f") + elif inserted_at == "random": + inserted_at_value = random.choice(possible_datetimes).strftime("%Y-%m-%d %H:%M:%S.%f") elif inserted_at is None: inserted_at_value = None else: From abb9a9a4267dc9cb08c9afd284366b9b88a0bd53 Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto <5731772+marandaneto@users.noreply.github.com> Date: Mon, 24 Jun 2024 17:17:15 +0200 Subject: [PATCH 08/24] chore: add ios session replay onboarding (#23190) --- frontend/src/scenes/onboarding/Onboarding.tsx | 6 ++- .../onboarding/sdks/feature-flags/ios.tsx | 7 ++++ .../onboarding/sdks/product-analytics/ios.tsx | 39 +++++++++++++++++++ .../sdks/sdk-install-instructions/android.tsx | 8 +++- .../sdks/sdk-install-instructions/ios.tsx | 37 ++++++++++++++++-- .../onboarding/sdks/session-replay/index.tsx | 1 + .../onboarding/sdks/session-replay/ios.tsx | 11 ++++++ 7 files changed, 102 insertions(+), 7 deletions(-) create mode 100644 frontend/src/scenes/onboarding/sdks/session-replay/ios.tsx diff --git a/frontend/src/scenes/onboarding/Onboarding.tsx b/frontend/src/scenes/onboarding/Onboarding.tsx index 83fff791a99c9..c5fdd54c2e890 100644 --- a/frontend/src/scenes/onboarding/Onboarding.tsx +++ b/frontend/src/scenes/onboarding/Onboarding.tsx @@ -20,6 +20,7 @@ import { OnboardingReverseProxy } from './OnboardingReverseProxy' import { FeatureFlagsSDKInstructions } from './sdks/feature-flags/FeatureFlagsSDKInstructions' import { ProductAnalyticsSDKInstructions } from './sdks/product-analytics/ProductAnalyticsSDKInstructions' import { SDKs } from './sdks/SDKs' +import { iOSInstructions } from './sdks/session-replay/ios' import { SessionReplaySDKInstructions } from './sdks/session-replay/SessionReplaySDKInstructions' import { SurveysSDKInstructions } from './sdks/surveys/SurveysSDKInstructions' @@ -155,7 +156,7 @@ const SessionReplayOnboarding = (): JSX.Element => { const { currentTeam } = useValues(teamLogic) const { featureFlags } = useValues(featureFlagLogic) - const hasAndroidOnBoarding = !!featureFlags[FEATURE_FLAGS.SESSION_REPLAY_MOBILE_ONBOARDING] + const hasMobileOnBoarding = !!featureFlags[FEATURE_FLAGS.SESSION_REPLAY_MOBILE_ONBOARDING] const configOptions: ProductConfigOption[] = [ { @@ -192,8 +193,9 @@ const SessionReplayOnboarding = (): JSX.Element => { } const sdkInstructionMap = SessionReplaySDKInstructions - if (hasAndroidOnBoarding) { + if (hasMobileOnBoarding) { sdkInstructionMap[SDKKey.ANDROID] = AndroidInstructions + sdkInstructionMap[SDKKey.IOS] = iOSInstructions } return ( diff --git a/frontend/src/scenes/onboarding/sdks/feature-flags/ios.tsx b/frontend/src/scenes/onboarding/sdks/feature-flags/ios.tsx index 5a9bee6e12017..8612f0ae43c52 100644 --- a/frontend/src/scenes/onboarding/sdks/feature-flags/ios.tsx +++ b/frontend/src/scenes/onboarding/sdks/feature-flags/ios.tsx @@ -1,3 +1,7 @@ +import { FlaggedFeature } from 'lib/components/FlaggedFeature' +import { FEATURE_FLAGS } from 'lib/constants' +import { AdvertiseiOSReplay } from 'scenes/onboarding/sdks/product-analytics' + import { SDKKey } from '~/types' import { SDKInstallIOSInstructions } from '../sdk-install-instructions' @@ -8,6 +12,9 @@ export function FeatureFlagsIOSInstructions(): JSX.Element { <> + + + ) } diff --git a/frontend/src/scenes/onboarding/sdks/product-analytics/ios.tsx b/frontend/src/scenes/onboarding/sdks/product-analytics/ios.tsx index 739bbb7e2c129..1d205fc9b39ca 100644 --- a/frontend/src/scenes/onboarding/sdks/product-analytics/ios.tsx +++ b/frontend/src/scenes/onboarding/sdks/product-analytics/ios.tsx @@ -1,4 +1,14 @@ import { CodeSnippet, Language } from 'lib/components/CodeSnippet' +import { FlaggedFeature } from 'lib/components/FlaggedFeature' +import { FEATURE_FLAGS } from 'lib/constants' +import { LemonBanner } from 'lib/lemon-ui/LemonBanner' +import { LemonDivider } from 'lib/lemon-ui/LemonDivider' +import { LemonTag } from 'lib/lemon-ui/LemonTag' +import { Link } from 'lib/lemon-ui/Link' +import { OnboardingStepKey } from 'scenes/onboarding/onboardingLogic' +import { urls } from 'scenes/urls' + +import { SDKKey } from '~/types' import { SDKInstallIOSInstructions } from '../sdk-install-instructions' import { PersonModeEventPropertyInstructions } from '../shared-snippets' @@ -7,6 +17,32 @@ function IOSCaptureSnippet(): JSX.Element { return {`PostHogSDK.shared.capture("Test Event")`} } +export function AdvertiseiOSReplay({ + context, +}: { + context: 'product-analytics-onboarding' | 'flags-onboarding' +}): JSX.Element { + return ( +
+ + +

+ Session Replay for iOS NEW +

+
+ Session replay is now in beta for iOS.{' '} + + Learn how to set it up + +
+
+
+ ) +} + export function ProductAnalyticsIOSInstructions(): JSX.Element { return ( <> @@ -14,6 +50,9 @@ export function ProductAnalyticsIOSInstructions(): JSX.Element {

Send an event

+ + + ) } diff --git a/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/android.tsx b/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/android.tsx index 103a87f183508..d3bc825f9791a 100644 --- a/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/android.tsx +++ b/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/android.tsx @@ -48,13 +48,17 @@ function AndroidSetupSnippet({ includeReplay }: AndroidSetupProps): JSX.Element config.sessionReplay = true // choose whether to mask images or text config.sessionReplayConfig.maskAllImages = false - config.sessionReplayConfig.maskAllTextInputs = true` + config.sessionReplayConfig.maskAllTextInputs = true + // screenshot is disabled by default + // The screenshot may contain sensitive information, use with caution + config.sessionReplayConfig.screenshot = true` : '' } // Setup PostHog with the given Context and Config PostHogAndroid.setup(this, config) - }`} + } +}`} ) } diff --git a/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/ios.tsx b/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/ios.tsx index 4b86871452ca0..b8c27bcc683b1 100644 --- a/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/ios.tsx +++ b/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/ios.tsx @@ -1,8 +1,13 @@ +import { LemonBanner, Link } from '@posthog/lemon-ui' import { useValues } from 'kea' import { CodeSnippet, Language } from 'lib/components/CodeSnippet' import { apiHostOrigin } from 'lib/utils/apiHost' import { teamLogic } from 'scenes/teamLogic' +export interface iOSSetupProps { + includeReplay?: boolean +} + function IOSInstallCocoaPodsSnippet(): JSX.Element { return {'pod "PostHog", "~> 3.0.0"'} } @@ -17,7 +22,7 @@ function IOSInstallSPMSnippet(): JSX.Element { ) } -function IOSSetupSnippet(): JSX.Element { +function IOSSetupSnippet({ includeReplay }: iOSSetupProps): JSX.Element { const { currentTeam } = useValues(teamLogic) return ( @@ -32,6 +37,21 @@ class AppDelegate: NSObject, UIApplicationDelegate { let POSTHOG_HOST = "${apiHostOrigin()}" let config = PostHogConfig(apiKey: POSTHOG_API_KEY, host: POSTHOG_HOST) + ${ + includeReplay + ? ` + // check https://posthog.com/docs/session-replay/mobile#installation + // for more config and to learn about how we capture sessions on mobile + // and what to expect + config.sessionReplay = true + // choose whether to mask images or text + config.sessionReplayConfig.maskAllImages = false + config.sessionReplayConfig.maskAllTextInputs = true + // screenshot is disabled by default + // The screenshot may contain sensitive information, use with caution + config.sessionReplayConfig.screenshotMode = true` + : '' + } PostHogSDK.shared.setup(config) return true @@ -41,15 +61,26 @@ class AppDelegate: NSObject, UIApplicationDelegate { ) } -export function SDKInstallIOSInstructions(): JSX.Element { +export function SDKInstallIOSInstructions(props: iOSSetupProps): JSX.Element { return ( <> + {props.includeReplay ? ( + + 🚧 NOTE: Mobile recording is + currently in beta. We are keen to gather as much feedback as possible so if you try this out please + let us know. You can send feedback via the{' '} + + in-app support panel + {' '} + or one of our other support options. + + ) : null}

Install via CocoaPods

Or Install via SPM

Configure

- + ) } diff --git a/frontend/src/scenes/onboarding/sdks/session-replay/index.tsx b/frontend/src/scenes/onboarding/sdks/session-replay/index.tsx index f0e1dee69a6ec..3a5aadfe8909d 100644 --- a/frontend/src/scenes/onboarding/sdks/session-replay/index.tsx +++ b/frontend/src/scenes/onboarding/sdks/session-replay/index.tsx @@ -4,6 +4,7 @@ export * from './astro' export * from './bubble' export * from './framer' export * from './html-snippet' +export * from './ios' export * from './js-web' export * from './next-js' export * from './nuxt' diff --git a/frontend/src/scenes/onboarding/sdks/session-replay/ios.tsx b/frontend/src/scenes/onboarding/sdks/session-replay/ios.tsx new file mode 100644 index 0000000000000..0281faeba1d04 --- /dev/null +++ b/frontend/src/scenes/onboarding/sdks/session-replay/ios.tsx @@ -0,0 +1,11 @@ +import { SDKInstallIOSInstructions } from '../sdk-install-instructions' +import { SessionReplayFinalSteps } from '../shared-snippets' + +export function iOSInstructions(): JSX.Element { + return ( + <> + + + + ) +} From d8ef389daa5d0d47f7ea6bae6d0bc33536d4c0dc Mon Sep 17 00:00:00 2001 From: Julian Bez Date: Mon, 24 Jun 2024 16:20:01 +0100 Subject: [PATCH 09/24] fix(insights): Fix render column tzlabel regex (#23144) --- frontend/src/queries/nodes/DataTable/renderColumn.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/queries/nodes/DataTable/renderColumn.tsx b/frontend/src/queries/nodes/DataTable/renderColumn.tsx index aa45984eca707..f13857617714d 100644 --- a/frontend/src/queries/nodes/DataTable/renderColumn.tsx +++ b/frontend/src/queries/nodes/DataTable/renderColumn.tsx @@ -73,7 +73,7 @@ export function renderColumn( } catch (e) { // do nothing } - if (value.match(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{3,6})?Z$/)) { + if (value.match(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{3,6})?(?:Z|[+-]\d{2}:\d{2})?$/)) { return } } From 165ccf4924f2017407482a675df9a4ea6745b9f7 Mon Sep 17 00:00:00 2001 From: Michael Matloka Date: Mon, 24 Jun 2024 17:29:27 +0200 Subject: [PATCH 10/24] chore(schema): Remove Python codegen hack (#23189) * chore(schema): Remove Python codegen hack * Make StrEnum hack cross-platform --- bin/build-schema-python.sh | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/bin/build-schema-python.sh b/bin/build-schema-python.sh index 4f6cf8d6d658b..efd65bb091b78 100755 --- a/bin/build-schema-python.sh +++ b/bin/build-schema-python.sh @@ -18,20 +18,13 @@ ruff format posthog/schema.py # Check schema.py and autofix ruff check --fix posthog/schema.py -# HACK: Datamodel-codegen output for enum-type fields with a default is invalid – the default value is a plain string, -# and not the expected enum member. We fix this using sed, which is pretty hacky, but does the job. -# Specifically, we need to replace `Optional[PropertyOperator] = "exact"` -# with `Optional[PropertyOperator] = PropertyOperator("exact")` to make the default value valid. -# Remove this when https://github.com/koxudaxi/datamodel-code-generator/issues/1929 is resolved. +# Replace class Foo(str, Enum) with class Foo(StrEnum) for proper handling in format strings in python 3.11 +# Remove this when https://github.com/koxudaxi/datamodel-code-generator/issues/1313 is resolved if [[ "$OSTYPE" == "darwin"* ]]; then # sed needs `-i` to be followed by `''` on macOS - sed -i '' -e 's/Optional\[PropertyOperator\] = \("[A-Za-z_]*"\)/Optional[PropertyOperator] = PropertyOperator(\1)/g' posthog/schema.py + sed -i '' -e 's/str, Enum/StrEnum/g' posthog/schema.py + sed -i '' 's/from enum import Enum/from enum import Enum, StrEnum/g' posthog/schema.py else - sed -i -e 's/Optional\[PropertyOperator\] = \("[A-Za-z_]*"\)/Optional[PropertyOperator] = PropertyOperator(\1)/g' posthog/schema.py + sed -i -e 's/str, Enum/StrEnum/g' posthog/schema.py + sed -i 's/from enum import Enum/from enum import Enum, StrEnum/g' posthog/schema.py fi - -# Replace class Foo(str, Enum) with class Foo(StrEnum) for proper handling in format strings in python 3.11 -# Remove this when https://github.com/koxudaxi/datamodel-code-generator/issues/1313 is resolved - -sed -i -e 's/str, Enum/StrEnum/g' posthog/schema.py -sed -i 's/from enum import Enum/from enum import Enum, StrEnum/g' posthog/schema.py From d0e14b5363f27623e8b0b48e8eee94a5ba3576e1 Mon Sep 17 00:00:00 2001 From: Michael Matloka Date: Mon, 24 Jun 2024 17:29:37 +0200 Subject: [PATCH 11/24] feat(events): Expose "Open as new insight" button (#23122) * feat(events): Expose "Open as new insight" button * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) --------- Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- ...-data-management-actions--action--dark.png | Bin 178504 -> 179440 bytes ...data-management-actions--action--light.png | Bin 177352 -> 178410 bytes ...cenes-app-events--event-explorer--dark.png | Bin 75233 -> 78067 bytes ...enes-app-events--event-explorer--light.png | Bin 74089 -> 76864 bytes ...enes-app-persons-groups--persons--dark.png | Bin 36096 -> 37861 bytes ...nes-app-persons-groups--persons--light.png | Bin 36118 -> 37879 bytes .../src/queries/nodes/DataTable/DataTable.tsx | 3 + .../nodes/DataTable/DataTableExport.tsx | 23 +------ .../nodes/DataTable/DataTableOpenEditor.tsx | 56 ++++++++++++++++++ .../nodes/DataTable/defaultEventsQuery.ts | 6 +- .../insights/InsightNav/insightNavLogic.tsx | 11 +++- 11 files changed, 72 insertions(+), 27 deletions(-) create mode 100644 frontend/src/queries/nodes/DataTable/DataTableOpenEditor.tsx diff --git a/frontend/__snapshots__/scenes-app-data-management-actions--action--dark.png b/frontend/__snapshots__/scenes-app-data-management-actions--action--dark.png index 409825d4a236ce9d8b6647f6ab122f6dd833ae04..a374f3681915ff06e97b204b0c92b1aac9e2bdf7 100644 GIT binary patch delta 27981 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
b}Y&DWYr<{J+J^h_r zGs*Av8ZGad7e%2^Sc`gx+e!j5q7w5Z`5|@l+$dRNHn!%JVGL**nF?_o8`Iw@X#)=x zHE*uYB!?c(FYWpf`P>dp%g;we1i#`()T3Up@WO?(wVbk3xtb}l0v1n-5s#!q^{6k;UetI=bxJUwlIH*?3 zVAaZrGx;a%=#L}kx;fKRyA4_}hzb{HiBE2Iza1Z?w|aB9!C-VA<;5lWn`uC7!kcQ` zqy6~tBMkPxRQiNIP|LPWOxz#MQwGRxb!lhk9*j#s00TBPt25{X!Emv#_~A<}N~t4G z?#^BP(?9pFFV8c&=ZqjpK$fAkre(y&24MRq!(i(-9ITK${E=wp8IAE_!luHD7lA-z z(=4@#0pO$<^^E+Q!(_K13KsApk=1l#3CU`)P*}|OJUlX)BU}2a#>v@P6a7rsW4Gr5 zo1Bo!ml8&B3T<$|ZfwjnY!<2`bbUH{n6u99dk>+-&jqu<0yOgd2#JrLd&N#B#V|T9 zG|5UVxz#l``r-YZ*ZbW+jU66w!CO?UtG^7f z!^%$dRjZ3cGeo>XZ3YK{Q|49Pg>B!;?yLu>rNRL&A4NTLc;<2{VrsU6noDP{_q13M z6fn5u*$dB7oF|Xrq!5F-b0)oL1jEJh6M1QvK#)x-K}?GTDKYAwd+7zf_)Vk%!lk%MsF8EE!Pu89l@%_y1X?GJHO26JfYm$ zgZS4h@E-;*Zw#+&j28==I|J$oEtZi$)M+VP64?iKzW(Lr{OZdM>nK=Nu|!o~90n0+ zM{lHA6HSAAr*O70=5e$yg!eCT6LpkACcYfI2@01iR-l2M8PL&`M7a@w`GB|i--NPH zXS8yUx>B)Q*#d@CA<=qfE994%7Ni|rJM$agAR7PEA^A64AYsS^B?zD5Qr4MHAC5EY z=Wu~7RQBNaPorf)XgRBg$2?c*)x2EhO3q4JO6r{DJ{9rpp*bug}zd$6H)O4Fon z(Bz8tM7u;1_=LF4E=fM03I-MMF4`yqIa;F44KVMS-04*^^l{(f)zYEci!(15%ioQA z-o}f!L5RJ3o8K;Ua=DqcFD+ba&o@H0=i+{pJ4?)xQ7d6Ept6=Pqy7X`+iz=6ou*wj zGQ0wS0O<;!N`05)raV)Re7tw$i^z>{V1oA>%~4Es85xEmt?%7K8jM-`_2r3C&rV>> z3GwldPH99+c-VK*AO^pq10ioJU_g?HqYqK5FqZT^dWi-!^Vd!n!8_vi7A5MrM7PsE z5|8J3%e%e_T+AKv*x8=!e4l8m zR_9~_z{mUF-S6ASG_wvmB4b6OJ-y7@n_eLl50JmYA)vFEz5TTEE|#~--qsSKTARtm zNC3_fggn8U!OxT4?Mzx*bPCBHi?|0ZO`oJ`F=O=>%UgZUG7eAbj?wYA!UP-_I<`07 zO5RYaUn=_nz2e88B70`Ol#%4Jn}$3w-3|YrET2yAzO5F6;((>D+73@ghy23>K^(o> zU8rr&E7G~@LnuPURLE5aQX_eeI!hNlH!whSEcjt0dZgnnclYVsyVn%A>07D$*_t|_ z;YhGj*J8R!8`3T{#0MgX@15V_6H9>POpH0(nqz+{#Q-om26tjI_$NEV;Ro7!*O`3> zk{Y*CHOs(}f~a^33>q2XPy!2XYh?2BpFiQDxZByD2fx9WMG{8+(?8s*R#1*(YcjDj z??W3>;Z4wxX*7>@Ss+mR>KSdF=T;^vwLXHA4wX=f?)>B2(vh(?8}7<(G-pz`QZ( zCG4Uxo6t@aLp>d{J;~8AYugHU^|M%D*_wQEE94_oW2cWoNlE#+)rk;DiX;_DmxmF2 z39^g6(O;g009yzcWSZs`L||YMv{LeuFPsGKYa=(B;Xmul}M^8rn@ zyioLbrmj}XRS9P>y)`!XpWx9hc^!$D-r8O7;$QH0C%75f>o~U7KrMapvYz!J*(r11 z#nv}v%ZvE8h;8a~I@MFE))oF3d-@H=84d;>(IgRT$YEZw=B0Oavfim7a!^7`c5X>Z0htB)URGbR`wUGs@l(0lzB;H%^78p@d}hmaK}Wm_t48dyuA>ci6cc#Lm? zYknQH76`AVuQGM_ROO>Y9mk3C#lYQJe&cz7dVjm&fVu3ct9*2DCVs`!{Jzmd`cOzw zlzizA3k?EzBh=Gh#`vo|oX~&lD19$e^inb%zbvro_#(1Ev9`DA#W&e!UT}=R4(y;< z9i*L2jen8A9Q~TlmX>xOUAz2ZPVfWuQzEzRF{ucm?t`@fJs^m*mziU(UcX3e`N=zQ z?4j~EB)Fs6&;TR_;3|CV@%}{LiBqOEexS@i$YeEgXO0-eWYg}mLWQpwv(d7~|6f2E>#pGL$tc&2*9 z;6qX2Vt2vUwDtgn;5Oc%QC|BI1q(Zr)<_-NHUAQ!f0XUizDJJ$B2LRv&)ncT7GD|YtnVe(a3E|f00snyF7yH$OQl1nW&h0y zIl{)$Z&V>;`&!+ao{gOim?-X@=x2I+LAGh6DD18cQ zF*+U|EEM!>+Ks^oj+@KNleB}`(0FCMK=)xCWJWbfgI>a=#wLGv)@Rd`mvPVV^N?CmUvLT*HCAGCUIJ7iehmvB+U z3s3BOefO!z_rlp~q9g)dg@OO@_js|>HLnFS@C1{w8%DpbE;3u+(?cva-=WVM9C`=9 zm$_9B%l8}n3ao1Y36@i}B6-&o1IgcNIEy7P$ngzDt^o~J2r{_Y2W-up?d{Tr8&j3k zfJKTP(DUzv(i_iI2c|JQL-D#Ii1VNNqO0gN|60|}jmkTJBpi(|RYS+h`an`3Xt+)d zWp(?5&J7AsYw?)!i*&1doXC@1r{(Bw;s~b4wZGHLbFw#ilSTv3NXJiT)^p7AKwi+z z)wQks`x^;U*7kQOVF!QbeS#8}hqIx|^}Rn#NG;0H1yu&Xu$~{NV%{%mw#|(9aeswq z?B=RSzgrFs@lw+)ey8B`Mh0%G9`M=n&Q3V+3l&^H3Imp)TF1o>;0XFa!H?RfQ=;be z;S5mv{V9R~@7I~`ZdnkdrI=g88k({ISO75S-0d&2{)_u1e@9k}5w8)1&09$2Vd7QM z9iQv&2xbt*sdS8EqiOfIZW|S61OW9qVsx^d))%xNU9)#`s_6YF>oPnukE=*FB%KIP zOh6IX+yWC+Wi^3nAmkxYo-to(llvx=r|^l2H>H4mNKlZdHk;lD{!%@Y6rKN>4hgGBolRY||yRVBXd9TZ>sqf4ro+%IqIA;4z%OlLJZfdf%v zgF2(aa$LR2-J^3OuCvl><+bbPwHL$m#)j1#PD_X!?)J*a>Yw%;P`XZtiE!e{_@J85!W)`MM@%VyX+v+|D9N9C{&$M;a)~MPN(>G2*`= zEaO!vr*LO^ukrRATTw&@L5=`#onZe!f5mo;C~KcmniwSj&nY}!^dfRN-GCr@+Ju)K z4RPEw?4`O;EOX=Got^@|SMUL!O#q;rR>n4;!g>F_!2lugSM4G}S9cG>bl0D9ON@-{ zU_4fUIsM5|`Fv$aG!^~ya%-ZR*nM{@>u?1u55%r;1&LPLT|AJHllwgGZc7hPjGmvkI`O zxdI*n_{pU6qjxKu$AvsUJosYritdEIxR=$Qx0`1AtuH|X?wcV-d>)Sj)5Cgwz^ViW z2GS+>y=56N&b%D4pbR;dm--V@!}^c;rk3$v<{J+PjnmP=Arx2_v%tDnNMP)^I%lC0 zah18>L|#=b8=n^i)J0>Mgu)NM>*FI%xr1nF2VlmRq6YH2=b4x-xw`vZCAATB!}ma7 z;M}@2lH7Oyc=PG;rtm$GU@Ls5rN)Y0p$vU#ZQBvVu5ddNvYV>XT76q_S$4t&+))V- zi^c?=@IKHT4Z=g6wrwmn&1Y2D|J z@F7ZGnc(&$;jHndt zx6Bj$N=m6V^Q#>vA7qP!W}9|n0Y$$D&;_O^Gf}ZW#lFB|Kv_x5^r8J1VfONNns2`O z&|m5TjYdYBN&8?c_IIVRB0zs9+<=hYzCExxE3e@VhU|(P8Z9Uwg%y7ZjlSuhXnb@-aX(_iYMGowo%G3T5?~)a zfeV)tdE*S)@m`M!pG@<;_BYf7uHDr-W*8V~HrMTm`_Y4L&ei(IsdR(v-$wY|?@sXD z_n=$(eBYM47IJ`=p7hT4{1?G4`(lkx&_E~l@3Vrd8ejOK^}I_=6bVN>1>D%+~`mPN+_mb@jqH) zKm98j(7Y*DE-UjTqT96pivYHBDphO$r%2G-fu$SS!VnP=alY5BNb;@vofOilF<)qo zDol-g7&yatJZFwAKK?WZ?n;!2lKI$K*-R1B^|IDq<%?%d&P7F|mo#F&UD4^GS0Ye` zs!_7Xj{}ib*ED|n&bD`cYIz?nktjky0|AS_z|uO&s97`D!;3<3_&6{OR4IZYy7_Xz zxsk#gl|C!$fQ92B8QB__z*EIryM%~{0KW0~e{2iDxey+yB0(?im;C7PirOcuAHk%6 zt=R?flVz6}OGT~zFsyxnL;PHw3kJYOdTMA*r5QNiy>4;ZwZG9>eN*A{;giEOA zVD|qun-n38FSQjFTrxa47`OQ0;m$NMpm&1eo7i{zKaM3&WG=Zin*|h{fV0Ln+*|=a z1nU3-?w#2w8g+luAODzjpeTe}C)7sT8{;e@f+xJ2K7s932Q6AwiQ@cOD8`+$WJ%h?N=jU9Ul@IBu7peV!!hyUUGaGXJ4 zzN@T!`(Lk~Q-hnz`@odgr6$TZ06aQ`a4H=;umCeEv+7rvjHw30PhtY<#IGKi%(h)X z6;%%>B+b3+E&s2cu*1FQ&j?r96crVLk(Ytt&!Sl14c#hJs7S4XJte_&U?`&dw;AZZ zxdg&XOvhavT$svde)#9ChQ;US>hsv2NE%OV!(aA8gb#0LjIHJKHA|4uu-eAP684se zuI(UxSo>I|1tVt|J(Hx0Z;m_L&5ME1`I5SRuNDJ8r#^| z6qrAc0?`Dt>y?|UnDFR{JJuMXwY4=M6$Q(fVgcWoJ_dajXSjX_YAPE<2$UZw*2FdU zx6UM2(mZm4ZxL1`@d{u?Vrra;l??Lv$4o{~5BF-KRz!p*!Xrd6_mBIHknp}B!oc~@ zAs5{a+;fN{F3!y9Umn8$>yRn01P{D>( zP>yYE@1eb2NgVS_2`MQN5@TQm`{&4sRzPKjF?97xGRAlG^vuw1Zc)#rrKL&cCON4nxQS8fY;<9G4>uk6CErHpHniz=u;^!FyBxo`p>b24p3i{c1t~^<)WSWI-rf z2dJxQ0;Te!j8QI)%!pg9m%5ADy#HhE<@UHT4Zkk~?CYB$$K?e$ZWtc*yR!pg_=Q1( zt5n$Ou2cWjGd!Bpkx$AthK`HPo#m~AA)24=!BUR4m8PbrS(5wM(vPhPt>bGr9&@vgd>4^ZL( zN9#9EGrcnWI_6!<8uz<@xKl@1x0slOSN`{EmwAf1v z@)->4*P**Hhe9uRHRhYD+zc7xmp8w^IbVsHN042i7pc_5FbUw4DqN>WSUg7aRZ@5_ z-hj1T4PcTyuyg6cQk5)P?Wb+J{CPJ+@hyUuN~^Owc@0R2*|FjLZ;ic*Ma$ z2K;q{6(4GNfss-Tpr^m3bFm2t!C?51VV7rD5E8KX5Q3uIpPaLOdKy#I#~-^;^ZgO| zwQ7?m_qB){4y#jp)s6Zu4JksEFwZF5+SZMYM zd-`TD%XX3jevvNZ9*`UInBQ(H7;rAIfL~YmTq9=Bgxu|7sD&YSiys;q{~5_st)ivV zbm7#&$r&*rHw0{~v73($2#|oar3-s-n_TPG)jD_9?6zWaG{)Xa{ot{K629b=9sxxQ zc)HE=j-CoL){PZo1DUcFU1!qUsZfte+Nqp{8oILuJtjnM23x?)@_cGKQ3kjn2?;z6 zpjAw2dbi^!TswO^wOR*z&{GG4eG;(6ic`pOf7L^sQ!H{a*c>4f2>MG|AS{v!^;GCa zjsT<|8_jZbSb^4ebQmqyfPoL)Chh9`6yR82Z1Ll<*G&-Mvmc?@ovD78n7DN}4vd;0 z@RmRhA&S^?djfX+D%(l)C`thczC2<{a{oRitb$8GC$+3}f$T|=NVDta2w+w)fn}}t z-s&~zlS6_5LRtDrZBj*bW%n28HUvZ{42Gvg4eYvMK-o^%M#Wf^()XqMOjT^j%rvX8 zV7zl8`gCT?Mcem8>po(!-rj_za%7kKJLQ2XBC?5#Z_ z2`A-Ve7gQ?{pv2$>nLx!PRm?@^of5^1aU7C%iaRDu)DrsxpMkz3O*ZD7;q^eBO!g+ z4oTC)#-aL!58Ge-ez$)-{hf;4BaU8HwF&a%)_wK5eSRJnw!iewhBm8o;RORx;svNM zFh)Md+D(7M^=sL~4J$eYq8A2i={5*ss>zEIcvwu#3}AcWzQIzNs%6>0Hcfnl8G=m; zSGBB(n|o7oVsOv?MDPjKPW&D`B(w-xd?+;&7UdRtiUd2Mx0f4K)1jbbJYvsP3PyqyhlW%1Cctn50lrgd6?R0G2m2vH7 z0_}OAHHZa;;$Q75tXF*OU{EbePDF3gEh}|zq)k78xSkT$Y@hYm1KVntQu6SOSe6-2 z6+R5)U0HSYkMOSsGjNU^cI;Q7yL)}cCA%WU>f22+rhyG^TT6|GqG}+sf~`*zs{fGZ zt~L4iBJO&`;zhP%vhsP6(tX-hwVNuC-dtgzG3F+P&jtPW?-i%x6dNNY!4<{AGi#8I z9s<+0WaQd_YKyNRV6*9IX;tl=IC+!kcKI@rk3;~8&0d~|>8v^heW=p`vB!0mWTkLYT7Hjupz zbJ|M42P((G^#yj5*AaTX$x0r(D#PRD`Kz<@z1H>nYqrI;%gf7kZy((QJ|LR4{?w4X zmk(B^Dp$ag72~?OJ~9WY8JkfH7826Cd$`RpfXT^Lf;LA$Mvhe-E8lznfUoGuUW#V9 zA#M^`Qr+7X%e;$kQGXtqmFxkZ>pwCeNkvD#N@Yb&joh%QEFod$<&Wl?OSS|B1}Q)? zYN2as$?IL!`Ea5}J>ZuBnrb3opjKa`h*;AjIy3u{>;wBaa`1^}R4Q*)p`NKhx40T; zaIx73pU-weB5G?qp}jfJ-2w!W@8j=En{Y}okcbQ1@MGCN2rn!QjUg#Hoz!KQ{? z^k0k@r@3QSRfbKT5unrtjxRcplEIRo<>pq~{q`!tLg71SY1wMwQj5epWUJYlYIxOg z&~sFDMvODQA|0LEQbnOc!)EUgh?q$QI1b#=r;y>8CNU4`c7`8SAC0tT#k~OhNH1^%TzonbJ(g1~)o;MNBAXqGtNPv2ZI#yI(@17hH^p{y3uw1Scr@~^%UX4k@Ror>)-vU-@%^=nX2E0RD9n@$qoQ5u~1zW^f*CstG_b;I2N_|UExKN zvCD$L9`UO}4F%Q)0GpHXT_(<#cEuR`;NZhUq0r!9R4@;yrE{-;clO3i)!xCBzYJc- zi*0Q^g#pWQ5svv0H$A=d{!%OvFreDt{jIK!Ion$_8>Ux50O=EhZAlI&dFAJ5{xjbn zio5arsfpCcv(DNx!m~81vQjf|UR!Vb0(!JezxlnW&uNhXzh9$sp&o{+i!>7#Ede6P z=NsI3P|vnTp5J-nswrdRG`%wv^;udi*13ldrEfaFin0h-|EKu8r^}(??*8~-x%qMr z3)CVO`ITn!nYzPJR*Il)bU-fX*9||+qnC}eZQ6JwlhNP;s-^_eVx987UHV^lvyFS_ zMO#-fD|e#}^fk3M^QF|pDPb@gX+b7^mvPJBf?MVukWzc(3s7oYdeV$VcZkYNE2 zGUfb+L}7?ypJw^tKQAI5&7mM(7{3kn`R5yK(Ey`^BcPk`FKCs5!7840{Of1Pr4lH+0gCskqjweE)g# zKl%;-gWH7uzxVk+xXS;{MMAVazz79+;DssTC2K&=(?$6x{K--~{2^0Q)c~#zxQ9&zM$p zdap&1gOrSD3kg=R`OFy~79gwXR#9GNfeeG){r58k{kK!~|IZL`R5b{Lhv;WvcJ;pT z(+z*g-#7r3^BX89V^J$VzikE~HO59&4^S4C+8@`8n}=bevK5GT5+J6Qu$G-k?~c|_ zNY6#UMaCo$p;$)CAwJSP`b7miphT41Kc}hx`F~pZ?y#n^Zhaia(NTe!QB*)+6p#)o zRjP`B0cp~t1XQF22}Ozo!Wk=rQU;_*M_Q<1r~v~(L_i2gCqQU|)DU7Ip(K>wj&pzi zefN9rz0b$8v26aM}pyO2XTKo$c^$=>9# zjW{Io=HAW@i{i7)rZtuOI_$*|<5EcH_pMt6Bb8 zZ85@Sd3o38=I57F+{1J0*XIufUM4(pFl#%Rtp4aiA@PFP8%hV~ zQO=EX7hYV&)7+7<&Y{%uwjN824t9N^$5yYrp=$JjfBg>{2V@oz_p+wRS^H}*_jZzP zi}6C=2I~BBqqE$*9vKR$KIpIYCO;*l7pIe=^fz+3N+W?W4c>M$gCyj4-!WFv%3n4d zRFLBy65`?>v`I9IT0>HCUu_^xk_d1Ilk`Us{R4REixt?>8<%E7bZO;M3M}=U4 zmKU-8$76Mi84M(=UDuf;TfWmx+vs$u8dVP8xg9N}XxosEL3D+ZU(n4)*+7}S?d#pN-tG)jl0h$RAXYVK=#Uxa9QP7{F@eEAG- z6J`57x8-&;ya8#vMC)2|*67C-BD8~7L*yf`l!WjRn_l8_c^v(KK^ z>rTIHENd%AAEQ<7A9}=w|GhztITvve>)w-D5+Ra_XsBJO6H!5=6N;Yk1#&rRtILaW zbv|0DC=%3kOQ6@8qz$9C=X5)k{1KB-Lr?Sq^l1H&_AaCR#L1IxTBk%ruml10pjvLM zTQ|zADV%jVmblgJlWCp&SsK}Mu;0lO+Fln`3EMKqEnpjK>p7p{7s5+dQ^R6`w#Pgl zEkh^nhdPQG98(fWwk5+}uMWO8(~`mO_G>$U$|mNmo=-22+Oc68v~LJCZVxLD5Yfv; zk}8kB{XR>F2Tw>RI|^zqpKom^#fj@18ZPazX_j%hH_8dDRQlM<;VLc5g7K0FQPg{C zeSt~Za=UJ7>6aGd;Fjoku}izc{(JID9i#2R?mnY^%4@JNu5A{qQxk$$j(v6AFay=u zLth_VxomKFc><5Q23@-r#b<|Y(&;{Yg}p%yKDzNZ%A$(-&8=%OjWP2|u}+&*YG(=Z z10b$u4lQ1su!g{IzO>k0+AQDoK4Vy^N2^>iYbTK` z@MFFgls1-M_3M2{g=9D2DEPFstd-n8$BU0rgS0nBtn!1F9-!*w?W=nSi(YLZH;E3K4)rgRuZpehOOBmd-5^CLwbBCb%WH;0H?5@ zZ&;w?Cf9VgMt0#A0l)oT{EcjXt`* z)7iBTMrB~da7|Nb>5M2+k_ag)TvbzQ_s}0#{Jx63=by7R)6Tv8@THmJ1i>4xv$qAs z-%pQ+-@aYg5o}`R;Xz-e6*=pcK>O^bHul2jwDPX!t+XbW58lYTc^}KO!cA#S`;X~c zJ&KK|%|j)EsAKtuM8mGr>4DWyc#DDe)LxmmCn%)a@3j5^yOpNdVVlRrC4}Yd|5x?a zBH$`nR`yF{;rLli^j0&Jcc~^reTjGW@LZaY$-q&?1}XS4Zqo?8*XJjs@e|m{*Q>p4 zCTS+}nY9qdiy0(jBea8HxTVPFxFLf%wQJ+Yo5+p z8gO5(Uw|axrA>|s6Cn#fW)b^Z`OJ2Nb*tQatN|A%0o!G542{)L6!+5aHUw{^*B_8? z$wIvuEeNEXKMm>bGl!bIHdnP%b@v}mJnV_Rk0S>z_I~mAx?iw+WkGK=1l|{(VAEG| z`UaS!ojPNeb*iTlgFLn8^zQc2h=C&T1{kbxr6-L($$33)Ju27GQ&Bo&4I#$#p8U3& zQM447mFfrWKV*%TD7H8V-?BC8RwWGryZh&_i!3bU*|y%JyIGwHt$N0KgLu<7Ym!LV z@sA|WULng?1k-e=6L>Q~nIX_{*=S)UBOXCz^KvKcXwtKYh>$QJS7uRlf6Z>eV9^k= z#sptIZl<%{McoxeGa}EMyt9l?NCH$*hy;O+#01b6Lp>w-PDMmkk}&XxCePN^*SVo$ zjAT(!a*RRpUTPKCaO3fbM+~@O8>Db|l(BQyU=xT`ZR?!j$ZXx6#p45C2sVbLqdL9~0z7{HbB235Ixeoy zL9uDA7*KE+3f4;k#sV0r+GlF-4>m7XGr+~Z`t`nFp3omI36(6(h?d7E{F3E6%GUas zhsPT19VeUgix(9ZexmwiQxgyK@sTXecC$dsry?(GecK~K1IZTB&oWZ7Bx?jNpYBO) zY#y$dP5ux93eQD*u=s(c3-n^*!CPi#2olzNCk)j2aZ__&AMwSzAr@ZMvz(V*Hu_wU z<(E-|J0>WZOW`ph+Q6vPq#7M;;lXfO6_D-kChUx^8me&%=QbBEDMHLBr#+%*V(OSa z3>KN{%PxcZsjbODrOr)PW3~5;sZ-AM>643LQkvyY-{u4!t+w&=^K0vwMEv^a9U3{1 zuGd=QMJfv23WQplWU+ml3 z9xSpHnG(I(T#6CTxctxn25Y65vD7l&h0hskKZJ*c3FCCmi@!Ol zbL7rW*v9CYd{BylH=M8cX_^shR7fVO^K13G{%8p{Od|KbP!SU>4d(Kw9w4gC4GbV3 zFy0c2GQjARRrDMz^y5c1o$rpga?rkHeB9CH*s!rtK#6{1o_H3K@8^1kq}Ni~T%wJg z%W_rEd?AEbHC+4DTYsHfr`ZaA;I^XF!RD=I1k zwH{@Q7ybQr?_f=DGot)!;JZf&Q0Z5x+h9EvqlLTeo9;e+!6!?IoG7#qi>8cAc-}11 z3`pD7XaKikhS&Z`}=iT z432X$B&MI`hPZ|zITNPj&AK_^+j55!ctzDd%v0hioBYTGf~-nRm&3N z_)|&a&JGQDZfO{5CeqnsW2GK3Rvj6>BSs5;i+vfW>;>SpAZnJUl1zOUx+ebo#WRnA zd3hsh|7hJLc_{$FiVA*G+qGtumkFM*Z3$}8-J{=^cP3mTCYL9OH!4xI#m4u)&X{}* zqK%c&bx&i)YFkD5i}efPC15MB$NTqtZJ||ARjiHr zNXg5Er??8C!aIY@EwMVPA9mrdSFQe>z(%L3;)ildeQLdxKK~fAH|;2UkSm`$7P55S z4vuHaZLaoAI@wOrR^RwSY2n*M$rHcLY#%0lhU1m*et@@04-;53KB1Xf^pCkB+#?`V z=lRXHosM;=McBHci*I;qqsxPT#te8ahprO6$XN@!Wf+CYXOtudq^iim*RN7kma!pA zG<@-ZNy^N&Y)fTjl}h-Id|R9rv&lWRMd`i4X6iAUWm0rIdmHWw+M1K7; zCaW(O*)O{PXo=k`%o~B)SYGf;Klo52X;agO%-|s1c9FDYzfs-@Jw6@ApYuJ=)AUV3 zlEa6o?K?qDwn;eVv9{aC49c9?Y+10}dR=>ZGPQ00LE=%}Q96yx`Lz9p6(=qlf$cL9 zM3#p{NYW$hjo-u!c}ZE$sJ=&z0Mx8%UkaP_;pXakX?CMw<$Uwr%qQUA`n!TBhYGqK z0@|OE6EY`FfCrV4k{Vo{z^i~F4aahtupP$?LZPjetbmObyJ!LQYe8j??9!D7=&dj9 zECBZxP8yVW34_9g_lsKOt`R^i(Az-;_z6+ba!|_mnr$;lRYkicrpK2b8D0md0`qX8 z$7`flDB;bULXO#siuyPn-(6^G$N~ND7C&pAFGRCzzbA4V767H*hS+Scg4JH9lry{$ z=S|-^Y)*#8A_XsB;}KE?{uINQ4BhX8ruMTO>NfLpX5H_)6+oapbT+6*!TLdqQQ|IF zkxW}5&YM-PHra3M4CUe_&2FXDmRYNvy~?rfmKV`1l8}$Ul%L3-#i@LRHe~h_ixTNg z-8}G*{abXG#Pspo7}Jd5QajpG6AhX^xoRv2uXVIsh0JyF`xr#ujD3by$Su)uMx;~7 zoDcE~M5yi*v`k5HmeSRoQWx?782iUiE)`xw4t4Yd@b=R6eqyeo+VepJl?oY_43G=K zPWem^%QxbZZT={>#F%=QIfO3#_Jgx~qSYY){}fN6v2D>puy~QZZN)lEoj$d)ETeR|nk!ZveA>-GT zs>-UGJ6GKTgL$|V^uDuO7tw8+f|u_9r4h7}4KA}3DJjypq5^hG_KWU)!yuMK@2Ipy z@C_*z?2S|FPdPohm@Op#!xh)FfRFNh{)tE&;PXkzc0ktKwY-?jwkflRWHdDFLEbt5 zx*amMpFBs=8utscv$NmfkKDcn>H&d!VVNMSu70?nu)EGwQ}&r$7@Cmh`u3;SKg4gL zL37>w-WtvIJ2l3YbnU;TfB!Y72>8eU6^Z<>NBOTo>O!U;OFQjbKi}Hgl5wyJ`Owl5 zNGa1T?RT}ALjlbl1-!kIc-Lm#y{N|ci{RZ+jUbxs?}!iS*uv$JQ;y!n55ueicq{l0 znjZ(eSY60$G>+LOAw<#*}7N=!@h+9AMR-)Bx*8j$P&VjT5|-zzh=D% z#$2*-An*>ku@4tM+fG5@0xzQ@EdVw-Dc3c~iJcqx08j#=0|*_^&$fy% zT021rGKMYXB_x=>jE?S$oRy4nP5fqKW`>5pf$Bfe2#*9ckDk15!>T=&hja~GP0!){ zXJpK9hb5*O#S{cBpr$CS#Ioi(KNn?o)n(w+{s34zf582-M|Wz?SYv1`JvF|<_5;aL z`Yw*F;?^ZKm)>D9pQEUS)w{3^fLfwTZTBFF#M&-)4?!#9wY#FYomCjE4)XR;4Z?0! zC%7%juCt@#BD`mfwd6gS%)i(m6_=1uc=qWbX$1vSOiy|rNT7gZ1DQqLN+r9sU5{Lw z|EnBbSguj+O*Zf>f-^psZi>S|RDQRRiLbfWD&yTSVgqVWsj9HyWaFfRuE!44v7UV# z!mUBCV;N!|eq z7#jn5tT(o;Bbqr8tSJEluE9DWp!$;1DbIlddBn)yk0GqrkkQoY$lFh!Zsg|$Slz#$ z2X@5U?ChN+72nN$F;@T3mcE7$;5-V!vC;|v=swVwU=U;G12i2T)G;QKA{w>P2_|m{ z)ZvF}y@eX-ZDfuCgT;r&1_Pu$SY^v64}a&#ITuii9AfL`8D3#+ROz@q2FefWi+_dI z%u2?9XW$0}7^B-kTbnub#dmAsl$i^ru&}Tn=c-ScFN!IGYk1L ze)AQRN-e_R!jsf!vR+OB%Yzm$7|g!nUgAZ?pBOX@=$N+Hm6GmHzNmylM~65+{M4m0 zXe+$7w#IpUZ*r~4!Gq5clMN|=1hY|1GtmqRlY}j2PD0k8AxUpadio#jzi?3^qh9iE zacjklbAL+%)ZO_TzOC;!8W*TF;-uk0|Nu z^Q!nv-sBO2RL#pq?2T?3S>5pX(;;-OQI~V7MVyBD`5VGokNzIN;3PoZ#-{_fuCH(C z`Ss5)ND>$Mf$Hc3)mZODTS`mBglJlkyC?sWab%?nrV{7+J6hi2Ry)Y3>a?3cbBX+b z)vtlOTG9^tfHjnsFEg&^Oe;{h6(A?xEtf$!Oo-Myd;9lHRl7rGPcGJ?he%}LCozh9 zrA@fqWHmRh3YT_M9>Ec3<0Lt2Kncb#OL%UihlJPsdPCRRWIZQ9(~UIH^+wT$H)S*; zwX6kH?uYVVusXBh^vmmmd9X@B<-&5HFv;j44gd@YFr?zaI&Ut=3{Vw&G6Mm&@yO3S z7EgcT0m74bUQvw)XPD9@Ut<-jnmb=#bTN>Yle;-Z-7*DR4C7~IBMhPiJ(nAULg}ZT zt7iaWp;4Gx+PM)HLYvxW3QUJpkjIw$BA)!(Q*7v&3hKxicVFH9Vs8i)}!V$o+*&pFMI?(Z2GI09+RS8K+Svff? zz-B8Ao##r3DF49y%L!AAB|eC1Q<5alu}$279#I3VBf>tk7b+pCrkV-rNXsJ?Pjhl| z!W3jd$cYwI8N_6L9tKQejn7p0^B1Z6rEBB$58nZ{M^NR#;zrnL`_ND(Ztm;CoUH13 z15Prj3p?^Ny+Knk#B6=Odpy$&>0h+LU*xXOnt@qAAl_jx!TFs%`%VCj`-T!=1NVh> zgP`#M$XFRU4k#i};0T!6iX=L@2Vui@=#r^ww1>=A7vZ zb))>1fwrm~O-LQHV=Fot0EOUH2}n}S#^1lv&q$Zc>ckh3E4?ct^bC8PXW7Shfzg_0 zLTCKzL7%>p9AtCeB;Fbyln$6<8x#&JBPYkGPj6_@;y-z!*qf{hkcD-w0nbp0JKw-= zfJVkxWk|_S$5t=}CaD}S0vxDSM2zrF+^3IYc!FG%x&h@`z3MqT^ za@9N-y#|;PBU5Clg<7<^(aQzP9JoR<(5@El?XrtQ*4;SQ0loHz3Ie@mRos^CYRmbT zUP%Hc_q5M8nV8Q*Q3I^kF;2k(j01SHvRn9oJ}~;tP2BbJOzpvHPd`nGVAjT9%xL{B zD=R2(_Ykkg_FCdQzr|mMiY&>q{@i7_Q4Oos5$q>c3Wzv_L!oDWw0{NYqT;|bO2Ta% zHi$L}f2-O+uMvJ~$A=jxVj$s)X{Ur#9m8!=(D1;@f2~E9WdsoQlyC^l{Og7>_luC% zo-BiE>S)paKjvo3 z%3Lxsj1?YW@3VWY>J;VV2HQoU;sf05l2DYIux_{`W!R^8x|!Q#Gmx2DBjc~GeCLj? zzP`S+Cc7|6&aNO%EFuLd*2|gqnn(2Ccm&n2fHoMtEM{ht9h6-S$cVzfv#%^IO;~9v zn7a3541gj`H4?rJ-S8Q&wlhsO77#$6IDWirWhK}C?+cc*?XihBhpQeqpOX7jYVO=w zT4e4jV)(F?pUDlv<9UBW&e-9yKG&WvntJx!r}^eQVMh3+RPcv*QWkWWw>kj zoUE)dh~pXojKBS=)FJY>wt)sk+1u+MEWVo0=d^MXv*p2}G9`EaYQXny&^E)B$s`m@ zb6&gqtTWpjTK*fX+a!k|;ScP_{RV4WB+cZ%z16{wmE_hR3M@1isU zFR5d44*X5fq@`!`%i0J|jly38dJ30z0ThaFw7i%oBsoJ>2GxhwpIER#jb#b6VYJ7s zu9YhsO9I+MlQ+I4oE$f?_Sj&U^~GT>uHoOZ{<mzhj1BkX1u$6RV_z^x zTa5mRX zgkoCGrgfi8pX8j(<;!0I)CTHj4&aXaf@LUk>xPHNd*Sbi_cY=-AXP#1_=Ehj`uM`! z90;3Q(=q>?R`c`GSaT<*@b}ao&#WpsO8rHYfFBnS@O1}=LH=E55B41cW^fs_tT}+= zPY_z3o6k(VZ)+70_2I*Zx}QY9kHYsrH4XfFf?rq+V+>-Kqxl%mSnFDSy*ob;f)*Cu z(ASTU5f>M~ZSq|z=Bw|kentkMvF-H`fIbh~*Z)^q ovH!zN{%h*X}&|e+1mBT>t<8 delta 26569 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
%?vFQN>H{Y=m#?mR9s4$iIl#w| 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 z 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 ?N|_pjSYnBojMdg)Bp}tV4qdTZBbm4i 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๮jHZ*-RE~o$pX1!w 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 LA7)Cuc=ta5Wq$m; literal 75233 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

mjKl+8_rZaXNL$v&>v0x;Dm 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

w$jN{r7zNJA_5Zk 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

Vk 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 X4eOdBBCo)u6Ug3Hl*+zk`1IcZVZ1e# diff --git a/frontend/__snapshots__/scenes-app-persons-groups--persons--dark.png b/frontend/__snapshots__/scenes-app-persons-groups--persons--dark.png index 61595ddcbe47b1b993ca0a890dcc0be1b5a316e4..786766df2301c46892c09469550dde713655add1 100644 GIT binary patch delta 21097 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 Ns;qUl^bf0N{|g58<`)0} diff --git a/frontend/__snapshots__/scenes-app-persons-groups--persons--light.png b/frontend/__snapshots__/scenes-app-persons-groups--persons--light.png index f67aa472806a6577c34d8430e297044d8450c3c2..fe7e3c7d2d21faf0497a87d0b5ed25bb634ec606 100644 GIT binary patch delta 21065 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 ) : null, showExport ? : null, + showOpenEditorButton ? : null, ].filter((x) => !!x) const showFirstRow = !isReadOnly && (firstRowLeft.length > 0 || firstRowRight.length > 0) diff --git a/frontend/src/queries/nodes/DataTable/DataTableExport.tsx b/frontend/src/queries/nodes/DataTable/DataTableExport.tsx index 97afe4d248849..c391496a4c188 100644 --- a/frontend/src/queries/nodes/DataTable/DataTableExport.tsx +++ b/frontend/src/queries/nodes/DataTable/DataTableExport.tsx @@ -6,7 +6,6 @@ import { exportsLogic } from 'lib/components/ExportButton/exportsLogic' import { copyToClipboard } from 'lib/utils/copyToClipboard' import Papa from 'papaparse' import { asDisplay } from 'scenes/persons/person-utils' -import { urls } from 'scenes/urls' import { defaultDataTableColumns, @@ -14,7 +13,7 @@ import { removeExpressionComment, } from '~/queries/nodes/DataTable/utils' import { getPersonsEndpoint } from '~/queries/query' -import { DataNode, DataTableNode, NodeKind } from '~/queries/schema' +import { DataNode, DataTableNode } from '~/queries/schema' import { isActorsQuery, isEventsQuery, isHogQLQuery, isPersonsNode } from '~/queries/utils' import { ExporterFormat } from '~/types' @@ -189,7 +188,7 @@ interface DataTableExportProps { } export function DataTableExport({ query }: DataTableExportProps): JSX.Element | null { - const { dataTableRows, columnsInResponse, columnsInQuery, queryWithDefaults, response } = useValues(dataTableLogic) + const { dataTableRows, columnsInResponse, columnsInQuery, queryWithDefaults } = useValues(dataTableLogic) const { startExport } = useActions(exportsLogic) const source: DataNode = query.source @@ -264,24 +263,6 @@ export function DataTableExport({ query }: DataTableExportProps): JSX.Element | }, ], }, - queryWithDefaults.showOpenEditorButton && { - label: 'Open table as a new insight', - to: query ? urls.insightNew(undefined, undefined, JSON.stringify(query)) : undefined, - 'data-attr': 'open-json-editor-button', - }, - response?.hogql && { - label: 'Edit SQL directly', - to: urls.insightNew( - undefined, - undefined, - JSON.stringify({ - kind: NodeKind.DataTableNode, - full: true, - source: { kind: NodeKind.HogQLQuery, query: response.hogql }, - }) - ), - 'data-attr': 'open-sql-editor-button', - }, ].filter(Boolean)} > } data-attr="data-table-export-menu"> diff --git a/frontend/src/queries/nodes/DataTable/DataTableOpenEditor.tsx b/frontend/src/queries/nodes/DataTable/DataTableOpenEditor.tsx new file mode 100644 index 0000000000000..71eb46a0e7652 --- /dev/null +++ b/frontend/src/queries/nodes/DataTable/DataTableOpenEditor.tsx @@ -0,0 +1,56 @@ +import { LemonButton } from '@posthog/lemon-ui' +import { useValues } from 'kea' +import { IconTableChart } from 'lib/lemon-ui/icons' +import { LemonMenuOverlay } from 'lib/lemon-ui/LemonMenu/LemonMenu' +import { urls } from 'scenes/urls' + +import { DataTableNode, NodeKind } from '~/queries/schema' + +import { dataTableLogic } from './dataTableLogic' + +interface DataTableOpenEditorProps { + query: DataTableNode + setQuery?: (query: DataTableNode) => void +} + +export function DataTableOpenEditor({ query }: DataTableOpenEditorProps): JSX.Element | null { + const { response } = useValues(dataTableLogic) + + return ( + } + to={urls.insightNew(undefined, undefined, JSON.stringify(query))} + sideAction={ + response?.hogql + ? { + dropdown: { + overlay: ( + + ), + }, + } + : undefined + } + data-attr="open-json-editor-button" + > + Open as new insight + + ) +} diff --git a/frontend/src/queries/nodes/DataTable/defaultEventsQuery.ts b/frontend/src/queries/nodes/DataTable/defaultEventsQuery.ts index 32e132f976244..5f189678855aa 100644 --- a/frontend/src/queries/nodes/DataTable/defaultEventsQuery.ts +++ b/frontend/src/queries/nodes/DataTable/defaultEventsQuery.ts @@ -46,9 +46,9 @@ export function getDefaultEventsQueryForTeam(team: Partial): EventsQue export function getEventsQueriesForTeam(team: Partial): Record { const projectDefault = getDefaultEventsQueryForTeam(team) return { - ...(projectDefault ? { 'Project Default': projectDefault } : {}), - 'PostHog default': getDefaultEventsSceneQuery().source as EventsQuery, - 'Event counts': { + ...(projectDefault ? { 'Project default view': projectDefault } : {}), + 'PostHog default view': getDefaultEventsSceneQuery().source as EventsQuery, + 'Event counts view': { kind: NodeKind.EventsQuery, select: ['event', 'count()'], after: '-24h', diff --git a/frontend/src/scenes/insights/InsightNav/insightNavLogic.tsx b/frontend/src/scenes/insights/InsightNav/insightNavLogic.tsx index d8b8d7246ca5c..bd02adf329ca8 100644 --- a/frontend/src/scenes/insights/InsightNav/insightNavLogic.tsx +++ b/frontend/src/scenes/insights/InsightNav/insightNavLogic.tsx @@ -3,6 +3,7 @@ import { urlToAction } from 'kea-router' import { FEATURE_FLAGS } from 'lib/constants' import { LemonTag } from 'lib/lemon-ui/LemonTag/LemonTag' import { featureFlagLogic } from 'lib/logic/featureFlagLogic' +import { identifierToHuman } from 'lib/utils' import { insightDataLogic, queryFromKind } from 'scenes/insights/insightDataLogic' import { insightLogic } from 'scenes/insights/insightLogic' import { keyForInsightLogicProps } from 'scenes/insights/sharedUtils' @@ -167,8 +168,8 @@ export const insightNavLogic = kea([ }, ], tabs: [ - (s) => [s.activeView, s.featureFlags], - (activeView, featureFlags) => { + (s) => [s.activeView, s.query, s.featureFlags], + (activeView, query, featureFlags) => { const tabs: Tab[] = [ { label: 'Trends', @@ -226,10 +227,14 @@ export const insightNavLogic = kea([ // only display this tab when it is selected by the provided insight query // don't display it otherwise... humans shouldn't be able to click to select this tab // it only opens when you click the + const humanFriendlyQueryKind: string | null = + typeof query?.kind === 'string' + ? identifierToHuman(query.kind.replace(/(Node|Query)$/g, ''), 'title') + : null tabs.push({ label: ( <> - Custom{' '} + {humanFriendlyQueryKind ?? 'Custom'}{' '} Beta From a8f5d098eb09f1d9c20f799f494b719942c3d437 Mon Sep 17 00:00:00 2001 From: Julian Bez Date: Mon, 24 Jun 2024 16:47:04 +0100 Subject: [PATCH 12/24] fix: Fix FieldAliasType.resolve_database_field not implemented (#23186) --- .../hogql/database/schema/util/where_clause_extractor.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/posthog/hogql/database/schema/util/where_clause_extractor.py b/posthog/hogql/database/schema/util/where_clause_extractor.py index 4f0096af9ff53..c011355806fc1 100644 --- a/posthog/hogql/database/schema/util/where_clause_extractor.py +++ b/posthog/hogql/database/schema/util/where_clause_extractor.py @@ -501,7 +501,11 @@ def visit_alias(self, node: ast.Alias) -> bool: from posthog.hogql.database.schema.session_replay_events import RawSessionReplayEventsTable if node.type and isinstance(node.type, ast.FieldAliasType): - resolved_field = node.type.resolve_database_field(self.context) + try: + resolved_field = node.type.resolve_database_field(self.context) + except NotImplementedError: + return False + table_type = node.type.resolve_table_type(self.context) if not table_type: return False From a21ab359db6e6e6020e01e996fcdc97b8db9def7 Mon Sep 17 00:00:00 2001 From: Raquel Smith Date: Mon, 24 Jun 2024 09:44:15 -0700 Subject: [PATCH 13/24] fix: handle redirect on org delete properly (#22733) Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- .github/workflows/ci-e2e.yml | 1 + bin/e2e-test-runner | 1 + cypress/e2e/organizationSettings.cy.ts | 32 +++++++++++++++++++ cypress/support/e2e.ts | 3 ++ .../navigation/OrganizationSwitcher.tsx | 1 + .../organization/CreateOrganizationModal.tsx | 1 + frontend/src/scenes/organizationLogic.tsx | 5 ++- frontend/src/scenes/sceneLogic.ts | 20 ++++++++++-- .../settings/organization/OrgDisplayName.tsx | 8 ++++- .../organization/OrganizationDangerZone.tsx | 1 + 10 files changed, 67 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci-e2e.yml b/.github/workflows/ci-e2e.yml index c7c20d69d7fc8..c633b70075a66 100644 --- a/.github/workflows/ci-e2e.yml +++ b/.github/workflows/ci-e2e.yml @@ -191,6 +191,7 @@ jobs: OBJECT_STORAGE_SECRET_ACCESS_KEY=object_storage_root_password GITHUB_ACTION_RUN_URL="${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" CELERY_METRICS_PORT=8999 + CLOUD_DEPLOYMENT=1 EOT - name: Start PostHog diff --git a/bin/e2e-test-runner b/bin/e2e-test-runner index 6a88c241727cd..2eb0ae0455a6c 100755 --- a/bin/e2e-test-runner +++ b/bin/e2e-test-runner @@ -66,6 +66,7 @@ export PGUSER="${PGUSER:=posthog}" export PGPASSWORD="${PGPASSWORD:=posthog}" export PGPORT="${PGPORT:=5432}" export DATABASE_URL="postgres://${PGUSER}:${PGPASSWORD}@${PGHOST}:${PGPORT}/${DATABASE}" +export CLOUD_DEPLOYMENT=1 trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM EXIT diff --git a/cypress/e2e/organizationSettings.cy.ts b/cypress/e2e/organizationSettings.cy.ts index 238edd13fe3d8..a65a2acc49023 100644 --- a/cypress/e2e/organizationSettings.cy.ts +++ b/cypress/e2e/organizationSettings.cy.ts @@ -1,8 +1,40 @@ +import { urls } from 'scenes/urls' + // For tests related to team members administration please see `inviteMembers.js` describe('Organization settings', () => { + beforeEach(() => { + cy.intercept('/api/billing/', { fixture: 'api/billing/billing.json' }) + cy.useSubscriptionStatus('subscribed') + }) it('can navigate to organization settings', () => { cy.get('[data-attr=menu-item-me]').click() cy.get('[data-attr=top-menu-item-org-settings]').click() cy.location('pathname').should('include', '/settings/organization') }) + it('can create a new organization', () => { + cy.visit(urls.settings('organization'), { + onLoad(win: Cypress.AUTWindow) { + ;(win as any).POSTHOG_APP_CONTEXT.preflight.cloud = true + }, + }) + cy.get('[data-attr=breadcrumb-organization]').click() + cy.get('[data-attr=new-organization-button]').click() + cy.get('[data-attr=organization-name-input]').type('New Organization') + cy.get('[data-attr=create-organization-ok]').click() + cy.get('[data-attr=organization-name-input-settings]').should('have.value', 'New Organization') + }) + it('can delete an organization', () => { + cy.visit(urls.settings('organization'), { + onLoad(win: Cypress.AUTWindow) { + ;(win as any).POSTHOG_APP_CONTEXT.preflight.cloud = true + }, + }) + cy.get('[data-attr=organization-name-input-settings]').should('have.value', 'New Organization') + cy.get('[data-attr=delete-organization-button]').click() + cy.get('[data-attr=delete-organization-confirmation-input]').type('New Organization') + cy.get('[data-attr=delete-organization-ok]').click() + // it redirects to the homepage after deleting the organization + cy.get('[data-attr=organization-name-input-settings]').should('not.exist') + cy.get('[data-attr=top-bar-name]').should('contain.text', 'Homepage') + }) }) diff --git a/cypress/support/e2e.ts b/cypress/support/e2e.ts index 177c41508b8e1..1c3cc7ebdf5e3 100644 --- a/cypress/support/e2e.ts +++ b/cypress/support/e2e.ts @@ -2,6 +2,7 @@ import 'givens/setup' import './commands' import 'cypress-axe' import { decideResponse } from '../fixtures/api/decide' +import { urls } from 'scenes/urls' try { // eslint-disable-next-line @typescript-eslint/no-var-requires @@ -50,6 +51,8 @@ beforeEach(() => { if (Cypress.spec.name.includes('before-onboarding')) { cy.visit('/?no-preloaded-app-context=true') + } else if (Cypress.spec.name.includes('organizationSettings')) { + cy.visit(urls.settings('organization')) } else { cy.visit('/insights') cy.wait('@getInsights').then(() => { diff --git a/frontend/src/layout/navigation/OrganizationSwitcher.tsx b/frontend/src/layout/navigation/OrganizationSwitcher.tsx index 692d0c8846ad1..d71a52df45c6e 100644 --- a/frontend/src/layout/navigation/OrganizationSwitcher.tsx +++ b/frontend/src/layout/navigation/OrganizationSwitcher.tsx @@ -66,6 +66,7 @@ export function NewOrganizationButton(): JSX.Element { ) } fullWidth + data-attr="new-organization-button" > New organization diff --git a/frontend/src/scenes/organization/CreateOrganizationModal.tsx b/frontend/src/scenes/organization/CreateOrganizationModal.tsx index f0aa3482f534f..133a7aff39806 100644 --- a/frontend/src/scenes/organization/CreateOrganizationModal.tsx +++ b/frontend/src/scenes/organization/CreateOrganizationModal.tsx @@ -75,6 +75,7 @@ export function CreateOrganizationModal({ handleSubmit() } }} + data-attr="organization-name-input" /> diff --git a/frontend/src/scenes/organizationLogic.tsx b/frontend/src/scenes/organizationLogic.tsx index 5d2690d3eb0a7..f0073d5478918 100644 --- a/frontend/src/scenes/organizationLogic.tsx +++ b/frontend/src/scenes/organizationLogic.tsx @@ -1,5 +1,6 @@ import { actions, afterMount, connect, kea, listeners, path, reducers, selectors } from 'kea' import { loaders } from 'kea-loaders' +import { router } from 'kea-router' import api, { ApiConfig } from 'lib/api' import { OrganizationMembershipLevel } from 'lib/constants' import { lemonToast } from 'lib/lemon-ui/LemonToast/LemonToast' @@ -108,15 +109,13 @@ export const organizationLogic = kea([ deleteOrganization: async ({ organization }) => { try { await api.delete(`api/organizations/${organization.id}`) + router.actions.push(router.values.currentLocation.pathname, 'organizationDeleted=true') location.reload() actions.deleteOrganizationSuccess() } catch { actions.deleteOrganizationFailure() } }, - deleteOrganizationSuccess: () => { - lemonToast.success('Organization has been deleted') - }, })), afterMount(({ actions }) => { const appContext = getAppContext() diff --git a/frontend/src/scenes/sceneLogic.ts b/frontend/src/scenes/sceneLogic.ts index 5ec8f2ad622b2..a533644ce3139 100644 --- a/frontend/src/scenes/sceneLogic.ts +++ b/frontend/src/scenes/sceneLogic.ts @@ -3,6 +3,7 @@ import { router, urlToAction } from 'kea-router' import { commandBarLogic } from 'lib/components/CommandBar/commandBarLogic' import { BarStatus } from 'lib/components/CommandBar/types' import { FEATURE_FLAGS, TeamMembershipLevel } from 'lib/constants' +import { lemonToast } from 'lib/lemon-ui/LemonToast/LemonToast' import { featureFlagLogic } from 'lib/logic/featureFlagLogic' import { addProjectIdIfMissing, removeProjectIdIfPresent } from 'lib/utils/router-utils' import posthog from 'posthog-js' @@ -39,7 +40,14 @@ export const sceneLogic = kea([ connect(() => ({ logic: [router, userLogic, preflightLogic], actions: [router, ['locationChanged'], commandBarLogic, ['setCommandBar'], inviteLogic, ['hideInviteModal']], - values: [featureFlagLogic, ['featureFlags'], billingLogic, ['billing']], + values: [ + featureFlagLogic, + ['featureFlags'], + billingLogic, + ['billing'], + organizationLogic, + ['organizationBeingDeleted'], + ], })), actions({ /* 1. Prepares to open the scene, as the listener may override and do something @@ -142,6 +150,12 @@ export const sceneLogic = kea([ const { user } = userLogic.values const { preflight } = preflightLogic.values + if (params.searchParams?.organizationDeleted && !organizationLogic.values.organizationBeingDeleted) { + lemonToast.success('Organization has been deleted') + router.actions.push(urls.default()) + return + } + if (scene === Scene.Signup && preflight && !preflight.can_create_org) { // If user is on an already initiated self-hosted instance, redirect away from signup router.actions.replace(urls.login()) @@ -403,7 +417,9 @@ export const sceneLogic = kea([ actions.openScene(scene, { params, searchParams, hashParams }, method) } - mapping['/*'] = (_, __, { method }) => actions.loadScene(Scene.Error404, emptySceneParams, method) + mapping['/*'] = (_, __, { method }) => { + return actions.loadScene(Scene.Error404, emptySceneParams, method) + } return mapping }), diff --git a/frontend/src/scenes/settings/organization/OrgDisplayName.tsx b/frontend/src/scenes/settings/organization/OrgDisplayName.tsx index 6f1836245ad59..895a27fe305d0 100644 --- a/frontend/src/scenes/settings/organization/OrgDisplayName.tsx +++ b/frontend/src/scenes/settings/organization/OrgDisplayName.tsx @@ -15,7 +15,13 @@ export function OrganizationDisplayName(): JSX.Element { return (

- + { diff --git a/frontend/src/scenes/settings/organization/OrganizationDangerZone.tsx b/frontend/src/scenes/settings/organization/OrganizationDangerZone.tsx index 87660a66c4ff5..85e23a1709634 100644 --- a/frontend/src/scenes/settings/organization/OrganizationDangerZone.tsx +++ b/frontend/src/scenes/settings/organization/OrganizationDangerZone.tsx @@ -58,6 +58,7 @@ export function DeleteOrganizationModal({ setIsDeletionConfirmed(value.toLowerCase() === currentOrganization.name.toLowerCase()) } }} + data-attr="delete-organization-confirmation-input" /> ) From ebb61479ed91627c4f1cd93773dc92eebd583a33 Mon Sep 17 00:00:00 2001 From: Sandy Spicer Date: Mon, 24 Jun 2024 10:56:01 -0700 Subject: [PATCH 14/24] fix: saml auth upgrade (#23197) Co-authored-by: Zach Waterfield --- requirements.in | 8 ++++---- requirements.txt | 41 +++++++++++++++++++---------------------- 2 files changed, 23 insertions(+), 26 deletions(-) diff --git a/requirements.in b/requirements.in index fb24969950a0f..77c1d947c7341 100644 --- a/requirements.in +++ b/requirements.in @@ -58,9 +58,9 @@ psycopg2-binary==2.9.7 psycopg[binary]==3.1.18 pyarrow==15.0.0 pydantic==2.5.3 -pyjwt==2.4.0 +pyjwt==2.7.0 python-dateutil>=2.8.2 -python3-saml==1.12.0 +python3-saml==1.16.0 pytz==2023.3 redis==4.5.4 retry==0.9.2 @@ -74,8 +74,8 @@ scikit-learn==1.4.0 slack_sdk==3.17.1 snowflake-connector-python==3.6.0 snowflake-sqlalchemy==1.5.3 -social-auth-app-django==5.0.0 -social-auth-core==4.3.0 +social-auth-app-django==5.4.1 +social-auth-core==4.5.0 sqlalchemy==1.4.52 sshtunnel==0.4.0 statshog==1.0.6 diff --git a/requirements.txt b/requirements.txt index 49d060f506970..9aaa81c170ee7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,12 @@ -# This file was autogenerated by uv via the following command: -# uv pip compile requirements.in -o requirements.txt +# +# This file is autogenerated by pip-compile with Python 3.11 +# by the following command: +# +# pip-compile requirements.in +# aioboto3==12.0.0 # via -r requirements.in -aiobotocore==2.7.0 +aiobotocore[boto3]==2.7.0 # via # aioboto3 # s3fs @@ -40,7 +44,6 @@ async-generator==1.10 # trio-websocket async-timeout==4.0.2 # via - # aiohttp # aiokafka # redis attrs==23.2.0 @@ -157,6 +160,7 @@ django==4.2.11 # djangorestframework-dataclasses # drf-spectacular # sentry-sdk + # social-auth-app-django django-axes==5.9.0 # via -r requirements.in django-cors-headers==3.5.0 @@ -219,8 +223,6 @@ drf-spectacular==0.27.1 # via -r requirements.in et-xmlfile==1.1.0 # via openpyxl -exceptiongroup==1.2.1 - # via anyio filelock==3.12.0 # via snowflake-connector-python frozenlist==1.4.1 @@ -241,7 +243,7 @@ gitpython==3.1.40 # via dlt giturlparse==0.12.0 # via dlt -google-api-core==2.11.1 +google-api-core[grpc]==2.11.1 # via # google-cloud-bigquery # google-cloud-core @@ -413,7 +415,7 @@ protobuf==4.22.1 # grpcio-status # proto-plus # temporalio -psycopg==3.1.18 +psycopg[binary]==3.1.18 # via -r requirements.in psycopg-binary==3.1.18 # via psycopg @@ -437,7 +439,7 @@ pydantic==2.5.3 # openai pydantic-core==2.14.6 # via pydantic -pyjwt==2.4.0 +pyjwt==2.7.0 # via # -r requirements.in # snowflake-connector-python @@ -462,14 +464,13 @@ python-dateutil==2.8.2 # pandas # pendulum # posthoganalytics - # temporalio python-dotenv==0.21.0 # via webdriver-manager python-statsd==2.1.0 # via django-statsd python3-openid==3.1.0 # via social-auth-core -python3-saml==1.12.0 +python3-saml==1.16.0 # via -r requirements.in pytz==2023.3 # via @@ -540,13 +541,8 @@ semantic-version==2.8.5 # via -r requirements.in semver==3.0.2 # via dlt -sentry-sdk==1.44.1 +sentry-sdk[celery,clickhouse-driver,django,openai]==1.44.1 # via -r requirements.in -setuptools==70.0.0 - # via - # dlt - # gunicorn - # infi-clickhouse-orm simplejson==3.19.2 # via dlt six==1.16.0 @@ -573,9 +569,9 @@ snowflake-connector-python==3.6.0 # snowflake-sqlalchemy snowflake-sqlalchemy==1.5.3 # via -r requirements.in -social-auth-app-django==5.0.0 +social-auth-app-django==5.4.1 # via -r requirements.in -social-auth-core==4.3.0 +social-auth-core==4.5.0 # via # -r requirements.in # social-auth-app-django @@ -635,8 +631,6 @@ types-setuptools==69.0.0.0 # via requirements-parser typing-extensions==4.7.1 # via - # anyio - # asgiref # dlt # openai # psycopg @@ -657,7 +651,7 @@ unicodecsv==0.14.1 # via djangorestframework-csv uritemplate==4.1.1 # via drf-spectacular -urllib3==1.26.18 +urllib3[secure,socks]==1.26.18 # via # botocore # django-revproxy @@ -695,3 +689,6 @@ zstd==1.5.5.1 # via -r requirements.in zxcvbn==4.4.28 # via -r requirements.in + +# The following packages are considered to be unsafe in a requirements file: +# setuptools From 6c23c9bd89ca3ae5383f438989404d298c63cb61 Mon Sep 17 00:00:00 2001 From: Sandy Spicer Date: Mon, 24 Jun 2024 11:50:48 -0700 Subject: [PATCH 15/24] =?UTF-8?q?revert:=20=09"chore:=20upgrade=20python?= =?UTF-8?q?=20to=203.11=20=F0=9F=90=8D"=20(#23198)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- .github/actions/run-backend-tests/action.yml | 2 +- .github/workflows/benchmark.yml | 2 +- .github/workflows/build-hogql-parser.yml | 4 +- .../ci-backend-update-test-timing.yml | 2 +- .github/workflows/ci-backend.yml | 10 +- .github/workflows/ci-hog.yml | 2 +- .github/workflows/ci-plugin-server.yml | 4 +- bin/build-schema-python.sh | 20 ++-- .../__snapshots__/test_time_to_see_data.ambr | 2 +- .../views/test/test_clickhouse_experiments.py | 6 +- .../test/test_summarize_session.py | 4 +- .../test/test_session_recording_extensions.py | 4 +- .../test/test_session_recording_playlist.py | 6 +- ee/tasks/subscriptions/subscription_utils.py | 2 +- mypy.ini | 2 +- posthog/api/app_metrics.py | 4 +- posthog/api/authentication.py | 2 +- posthog/api/comments.py | 2 - posthog/api/feature_flag.py | 4 - posthog/api/plugin.py | 3 - posthog/api/routing.py | 26 ----- .../api/test/__snapshots__/test_api_docs.ambr | 2 +- .../api/test/batch_exports/test_log_entry.py | 10 +- posthog/api/test/batch_exports/test_pause.py | 4 +- posthog/api/test/batch_exports/test_update.py | 4 +- posthog/api/test/test_app_metrics.py | 4 +- posthog/api/test/test_capture.py | 4 +- posthog/api/user.py | 2 - posthog/api/utils.py | 11 +- posthog/async_migrations/test/test_utils.py | 6 +- posthog/batch_exports/http.py | 6 +- posthog/batch_exports/models.py | 4 +- posthog/batch_exports/service.py | 4 +- posthog/clickhouse/client/execute_async.py | 6 +- posthog/clickhouse/table_engines.py | 4 +- .../clickhouse/test/test_person_overrides.py | 4 +- posthog/constants.py | 26 ++--- posthog/decorators.py | 4 +- posthog/demo/matrix/models.py | 4 +- posthog/demo/matrix/randomization.py | 4 +- posthog/demo/products/hedgebox/models.py | 4 +- posthog/hogql/ast.py | 6 +- posthog/hogql/constants.py | 4 +- posthog/hogql/test/test_resolver.py | 4 +- .../test/test_trends_actors_query_builder.py | 4 +- .../legacy_compatibility/filter_to_query.py | 4 +- posthog/hogql_queries/query_runner.py | 8 +- posthog/jwt.py | 4 +- posthog/kafka_client/client.py | 4 +- .../commands/create_batch_export_from_app.py | 2 +- .../create_channel_definitions_file.py | 4 +- .../management/commands/generate_demo_data.py | 2 +- posthog/management/commands/migrate_team.py | 4 +- .../commands/plugin_server_load_test.py | 2 +- .../test/test_sync_persons_to_clickhouse.py | 14 +-- posthog/models/feature_flag/flag_matching.py | 4 +- posthog/models/filters/stickiness_filter.py | 2 +- posthog/models/plugin.py | 6 +- posthog/models/property/property.py | 4 +- .../models/test/test_async_deletion_model.py | 8 +- .../models/test/test_person_override_model.py | 2 +- posthog/schema.py | 92 ++++++++-------- .../session_recording_api.py | 6 +- .../session_recording_helpers.py | 4 +- .../test/test_session_recordings.py | 4 +- .../test/test_process_scheduled_changes.py | 18 +-- .../batch_exports/backfill_batch_export.py | 2 +- .../batch_exports/squash_person_overrides.py | 6 +- .../test_backfill_batch_export.py | 76 ++++++------- .../tests/batch_exports/test_batch_exports.py | 14 ++- .../test_bigquery_batch_export_workflow.py | 16 +-- .../test_http_batch_export_workflow.py | 10 +- .../tests/batch_exports/test_logger.py | 12 +- .../test_postgres_batch_export_workflow.py | 6 +- .../test_redshift_batch_export_workflow.py | 6 +- .../tests/batch_exports/test_run_updates.py | 16 +-- .../test_s3_batch_export_workflow.py | 4 +- .../test_snowflake_batch_export_workflow.py | 4 +- .../test_squash_person_overrides_workflow.py | 6 +- posthog/temporal/tests/test_clickhouse.py | 4 +- posthog/temporal/tests/utils/datetimes.py | 2 +- posthog/test/test_datetime.py | 4 +- posthog/utils.py | 4 +- .../external_data_source/workspace.py | 2 +- production.Dockerfile | 103 +++++++++++++++++- pyproject.toml | 4 +- requirements-dev.in | 2 +- requirements-dev.txt | 3 +- requirements.in | 14 +-- requirements.txt | 44 ++++---- unit.json.tpl | 4 +- 91 files changed, 435 insertions(+), 379 deletions(-) diff --git a/.github/actions/run-backend-tests/action.yml b/.github/actions/run-backend-tests/action.yml index d7c9689f55901..3c5a4d1986027 100644 --- a/.github/actions/run-backend-tests/action.yml +++ b/.github/actions/run-backend-tests/action.yml @@ -6,7 +6,7 @@ name: Run Django tests inputs: python-version: required: true - description: Python version, e.g. 3.11.9 + description: Python version, e.g. 3.10.10 clickhouse-server-image: required: true description: ClickHouse server image tag, e.g. clickhouse/clickhouse-server:latest diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 9478b7d2f8c80..bd50811fae662 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -54,7 +54,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: 3.11.9 + python-version: 3.10.10 cache: 'pip' cache-dependency-path: '**/requirements*.txt' token: ${{ secrets.POSTHOG_BOT_GITHUB_TOKEN }} diff --git a/.github/workflows/build-hogql-parser.yml b/.github/workflows/build-hogql-parser.yml index 21e153660dd13..8d0d52d19dbe8 100644 --- a/.github/workflows/build-hogql-parser.yml +++ b/.github/workflows/build-hogql-parser.yml @@ -73,12 +73,12 @@ jobs: - if: ${{ !endsWith(matrix.os, '-arm') }} uses: actions/setup-python@v4 with: - python-version: '3.11' + python-version: '3.10' - if: ${{ endsWith(matrix.os, '-arm') }} uses: deadsnakes/action@v3.1.0 # Unfortunately actions/setup-python@v4 just doesn't work on ARM! This does with: - python-version: '3.11' + python-version: '3.10' # # This is an alternative way to install Python 3.11 on ARM if the above fails # - if: ${{ endsWith(matrix.os, '-arm') }} diff --git a/.github/workflows/ci-backend-update-test-timing.yml b/.github/workflows/ci-backend-update-test-timing.yml index 01ad7d33ce305..a2082f6b98955 100644 --- a/.github/workflows/ci-backend-update-test-timing.yml +++ b/.github/workflows/ci-backend-update-test-timing.yml @@ -28,7 +28,7 @@ jobs: concurrency: 1 group: 1 token: ${{ secrets.POSTHOG_BOT_GITHUB_TOKEN }} - python-version: '3.11.9' + python-version: '3.10.10' clickhouse-server-image: 'clickhouse/clickhouse-server:23.12.5.81-alpine' segment: 'FOSS' person-on-events: false diff --git a/.github/workflows/ci-backend.yml b/.github/workflows/ci-backend.yml index b757f69c8f804..14d2c1045c2c4 100644 --- a/.github/workflows/ci-backend.yml +++ b/.github/workflows/ci-backend.yml @@ -108,7 +108,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: 3.11.9 + python-version: 3.10.10 cache: 'pip' cache-dependency-path: '**/requirements*.txt' token: ${{ secrets.POSTHOG_BOT_GITHUB_TOKEN }} @@ -163,7 +163,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: 3.11.9 + python-version: 3.10.10 cache: 'pip' cache-dependency-path: '**/requirements*.txt' token: ${{ secrets.POSTHOG_BOT_GITHUB_TOKEN }} @@ -232,7 +232,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ['3.11.9'] + python-version: ['3.10.10'] clickhouse-server-image: ['clickhouse/clickhouse-server:23.12.5.81-alpine'] segment: ['Core'] person-on-events: [false, true] @@ -243,7 +243,7 @@ jobs: - segment: 'Temporal' person-on-events: false clickhouse-server-image: 'clickhouse/clickhouse-server:23.12.5.81-alpine' - python-version: '3.11.9' + python-version: '3.10.10' concurrency: 1 group: 1 @@ -331,7 +331,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: 3.11.9 + python-version: 3.10.10 cache: 'pip' cache-dependency-path: '**/requirements*.txt' token: ${{ secrets.POSTHOG_BOT_GITHUB_TOKEN }} diff --git a/.github/workflows/ci-hog.yml b/.github/workflows/ci-hog.yml index 2a2ee8ecb8684..860f0b6e47be8 100644 --- a/.github/workflows/ci-hog.yml +++ b/.github/workflows/ci-hog.yml @@ -70,7 +70,7 @@ jobs: if: needs.changes.outputs.hog == 'true' uses: actions/setup-python@v5 with: - python-version: 3.11.9 + python-version: 3.10.10 cache: 'pip' cache-dependency-path: '**/requirements*.txt' token: ${{ secrets.POSTHOG_BOT_GITHUB_TOKEN }} diff --git a/.github/workflows/ci-plugin-server.yml b/.github/workflows/ci-plugin-server.yml index b4d6cb0a17f36..dac67b705b6a5 100644 --- a/.github/workflows/ci-plugin-server.yml +++ b/.github/workflows/ci-plugin-server.yml @@ -115,7 +115,7 @@ jobs: if: needs.changes.outputs.plugin-server == 'true' uses: actions/setup-python@v5 with: - python-version: 3.11.9 + python-version: 3.10.10 cache: 'pip' cache-dependency-path: '**/requirements*.txt' token: ${{ secrets.POSTHOG_BOT_GITHUB_TOKEN }} @@ -207,7 +207,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: 3.11.9 + python-version: 3.10.10 cache: 'pip' cache-dependency-path: '**/requirements*.txt' token: ${{ secrets.POSTHOG_BOT_GITHUB_TOKEN }} diff --git a/bin/build-schema-python.sh b/bin/build-schema-python.sh index efd65bb091b78..d033c5f4f1e21 100755 --- a/bin/build-schema-python.sh +++ b/bin/build-schema-python.sh @@ -4,27 +4,25 @@ set -e # Generate schema.py from schema.json datamodel-codegen \ - --class-name='SchemaRoot' --collapse-root-models --target-python-version 3.11 --disable-timestamp \ + --class-name='SchemaRoot' --collapse-root-models --target-python-version 3.10 --disable-timestamp \ --use-one-literal-as-default --use-default --use-default-kwarg --use-subclass-enum \ --input frontend/src/queries/schema.json --input-file-type jsonschema \ --output posthog/schema.py --output-model-type pydantic_v2.BaseModel \ --custom-file-header "# mypy: disable-error-code=\"assignment\"" \ --set-default-enum-member --capitalise-enum-members \ --wrap-string-literal - # Format schema.py ruff format posthog/schema.py - # Check schema.py and autofix ruff check --fix posthog/schema.py - -# Replace class Foo(str, Enum) with class Foo(StrEnum) for proper handling in format strings in python 3.11 -# Remove this when https://github.com/koxudaxi/datamodel-code-generator/issues/1313 is resolved +# HACK: Datamodel-codegen output for enum-type fields with a default is invalid – the default value is a plain string, +# and not the expected enum member. We fix this using sed, which is pretty hacky, but does the job. +# Specifically, we need to replace `Optional[PropertyOperator] = "exact"` +# with `Optional[PropertyOperator] = PropertyOperator("exact")` to make the default value valid. +# Remove this when https://github.com/koxudaxi/datamodel-code-generator/issues/1929 is resolved. if [[ "$OSTYPE" == "darwin"* ]]; then # sed needs `-i` to be followed by `''` on macOS - sed -i '' -e 's/str, Enum/StrEnum/g' posthog/schema.py - sed -i '' 's/from enum import Enum/from enum import Enum, StrEnum/g' posthog/schema.py + sed -i '' -e 's/Optional\[PropertyOperator\] = \("[A-Za-z_]*"\)/Optional[PropertyOperator] = PropertyOperator(\1)/g' posthog/schema.py else - sed -i -e 's/str, Enum/StrEnum/g' posthog/schema.py - sed -i 's/from enum import Enum/from enum import Enum, StrEnum/g' posthog/schema.py -fi + sed -i -e 's/Optional\[PropertyOperator\] = \("[A-Za-z_]*"\)/Optional[PropertyOperator] = PropertyOperator(\1)/g' posthog/schema.py +fi \ No newline at end of file diff --git a/ee/api/test/__snapshots__/test_time_to_see_data.ambr b/ee/api/test/__snapshots__/test_time_to_see_data.ambr index beda2bc14bdef..2d93af68cee82 100644 --- a/ee/api/test/__snapshots__/test_time_to_see_data.ambr +++ b/ee/api/test/__snapshots__/test_time_to_see_data.ambr @@ -20,7 +20,7 @@ "first_name": "", "last_name": "", "email": "", - "is_email_verified": null + "is_email_verified": false } }, "children": [ diff --git a/ee/clickhouse/views/test/test_clickhouse_experiments.py b/ee/clickhouse/views/test/test_clickhouse_experiments.py index a67d6523858f2..1a5735473ffa0 100644 --- a/ee/clickhouse/views/test/test_clickhouse_experiments.py +++ b/ee/clickhouse/views/test/test_clickhouse_experiments.py @@ -1,4 +1,4 @@ -from datetime import datetime, timedelta, UTC +from datetime import datetime, timedelta, timezone from django.core.cache import cache from flaky import flaky from rest_framework import status @@ -1601,8 +1601,8 @@ def test_create_exposure_cohort_for_experiment_with_custom_action_filters_exposu explicit_datetime = parser.isoparse(target_filter["explicit_datetime"]) self.assertTrue( - explicit_datetime <= datetime.now(UTC) - timedelta(days=5) - and explicit_datetime >= datetime.now(UTC) - timedelta(days=5, hours=1) + explicit_datetime <= datetime.now(timezone.utc) - timedelta(days=5) + and explicit_datetime >= datetime.now(timezone.utc) - timedelta(days=5, hours=1) ) cohort_id = cohort["id"] diff --git a/ee/session_recordings/session_summary/test/test_summarize_session.py b/ee/session_recordings/session_summary/test/test_summarize_session.py index 3cc69df02b18b..69412608dd3b9 100644 --- a/ee/session_recordings/session_summary/test/test_summarize_session.py +++ b/ee/session_recordings/session_summary/test/test_summarize_session.py @@ -1,4 +1,4 @@ -from datetime import datetime, UTC +from datetime import timezone, datetime from dateutil.parser import isoparse @@ -23,7 +23,7 @@ def test_format_dates_as_millis_since_start(self) -> None: ["$pageview", isoparse("2021-01-01T00:00:02Z")], ], ), - datetime(2021, 1, 1, 0, 0, 0, tzinfo=UTC), + datetime(2021, 1, 1, 0, 0, 0, tzinfo=timezone.utc), ) assert processed.columns == ["event", "milliseconds_since_start"] assert processed.results == [["$pageview", 0], ["$pageview", 1000], ["$pageview", 2000]] diff --git a/ee/session_recordings/test/test_session_recording_extensions.py b/ee/session_recordings/test/test_session_recording_extensions.py index e425213f747a2..ad545e5cec33f 100644 --- a/ee/session_recordings/test/test_session_recording_extensions.py +++ b/ee/session_recordings/test/test_session_recording_extensions.py @@ -1,5 +1,5 @@ import gzip -from datetime import timedelta, datetime, UTC +from datetime import timedelta, datetime, timezone from secrets import token_urlsafe from unittest.mock import patch, MagicMock from uuid import uuid4 @@ -84,7 +84,7 @@ def test_can_build_different_object_storage_paths(self) -> None: def test_persists_recording_from_blob_ingested_storage(self): with self.settings(OBJECT_STORAGE_SESSION_RECORDING_BLOB_INGESTION_FOLDER=TEST_BUCKET): - two_minutes_ago = (datetime.now() - timedelta(minutes=2)).replace(tzinfo=UTC) + two_minutes_ago = (datetime.now() - timedelta(minutes=2)).replace(tzinfo=timezone.utc) with freeze_time(two_minutes_ago): session_id = f"test_persists_recording_from_blob_ingested_storage-s1-{uuid4()}" diff --git a/ee/session_recordings/test/test_session_recording_playlist.py b/ee/session_recordings/test/test_session_recording_playlist.py index 0ec14e0decb15..6fb6a730a7aae 100644 --- a/ee/session_recordings/test/test_session_recording_playlist.py +++ b/ee/session_recordings/test/test_session_recording_playlist.py @@ -1,4 +1,4 @@ -from datetime import datetime, timedelta, UTC +from datetime import datetime, timedelta, timezone from unittest import mock from unittest.mock import MagicMock, patch from uuid import uuid4 @@ -187,7 +187,7 @@ def test_get_pinned_recordings_for_playlist(self, mock_copy_objects: MagicMock) session_one = f"test_fetch_playlist_recordings-session1-{uuid4()}" session_two = f"test_fetch_playlist_recordings-session2-{uuid4()}" - three_days_ago = (datetime.now() - timedelta(days=3)).replace(tzinfo=UTC) + three_days_ago = (datetime.now() - timedelta(days=3)).replace(tzinfo=timezone.utc) produce_replay_summary( team_id=self.team.id, @@ -242,7 +242,7 @@ def test_fetch_playlist_recordings(self, mock_copy_objects: MagicMock, mock_list session_one = f"test_fetch_playlist_recordings-session1-{uuid4()}" session_two = f"test_fetch_playlist_recordings-session2-{uuid4()}" - three_days_ago = (datetime.now() - timedelta(days=3)).replace(tzinfo=UTC) + three_days_ago = (datetime.now() - timedelta(days=3)).replace(tzinfo=timezone.utc) for session_id in [session_one, session_two]: produce_replay_summary( diff --git a/ee/tasks/subscriptions/subscription_utils.py b/ee/tasks/subscriptions/subscription_utils.py index eb8afed13cbaf..6fa4b63960fc2 100644 --- a/ee/tasks/subscriptions/subscription_utils.py +++ b/ee/tasks/subscriptions/subscription_utils.py @@ -56,7 +56,7 @@ def generate_assets( # Wait for all assets to be exported tasks = [exporter.export_asset.si(asset.id) for asset in assets] # run them one after the other, so we don't exhaust celery workers - exports_expire = datetime.datetime.now(tz=datetime.UTC) + datetime.timedelta( + exports_expire = datetime.datetime.now(tz=datetime.timezone.utc) + datetime.timedelta( minutes=settings.PARALLEL_ASSET_GENERATION_MAX_TIMEOUT_MINUTES ) parallel_job = chain(*tasks).apply_async(expires=exports_expire, retry=False) diff --git a/mypy.ini b/mypy.ini index 438b5f47ef60c..414b1d252174b 100644 --- a/mypy.ini +++ b/mypy.ini @@ -1,5 +1,5 @@ [mypy] -python_version = 3.11 +python_version = 3.10 plugins = mypy_django_plugin.main, mypy_drf_plugin.main, diff --git a/posthog/api/app_metrics.py b/posthog/api/app_metrics.py index 12d5483873768..6fe56947b42c7 100644 --- a/posthog/api/app_metrics.py +++ b/posthog/api/app_metrics.py @@ -90,7 +90,9 @@ def get_batch_export_runs_app_metrics_queryset(self, batch_export_id: str): after = self.request.GET.get("date_from", "-30d") before = self.request.GET.get("date_to", None) after_datetime = relative_date_parse(after, self.team.timezone_info) - before_datetime = relative_date_parse(before, self.team.timezone_info) if before else dt.datetime.now(dt.UTC) + before_datetime = ( + relative_date_parse(before, self.team.timezone_info) if before else dt.datetime.now(dt.timezone.utc) + ) date_range = (after_datetime, before_datetime) runs = ( BatchExportRun.objects.select_related("batch_export__destination") diff --git a/posthog/api/authentication.py b/posthog/api/authentication.py index b04707ca559de..d82d958f27428 100644 --- a/posthog/api/authentication.py +++ b/posthog/api/authentication.py @@ -290,7 +290,7 @@ def create(self, validated_data): user = None if user: - user.requested_password_reset_at = datetime.datetime.now(datetime.UTC) + user.requested_password_reset_at = datetime.datetime.now(datetime.timezone.utc) user.save() token = password_reset_token_generator.make_token(user) send_password_reset(user.id, token) diff --git a/posthog/api/comments.py b/posthog/api/comments.py index 06443f92b2fcc..20961be0e3cbb 100644 --- a/posthog/api/comments.py +++ b/posthog/api/comments.py @@ -11,13 +11,11 @@ from posthog.api.routing import TeamAndOrgViewSetMixin from posthog.api.shared import UserBasicSerializer -from posthog.api.utils import ClassicBehaviorBooleanFieldSerializer from posthog.models.comment import Comment class CommentSerializer(serializers.ModelSerializer): created_by = UserBasicSerializer(read_only=True) - deleted = ClassicBehaviorBooleanFieldSerializer() class Meta: model = Comment diff --git a/posthog/api/feature_flag.py b/posthog/api/feature_flag.py index 029a3186d4365..6887b85dcf53b 100644 --- a/posthog/api/feature_flag.py +++ b/posthog/api/feature_flag.py @@ -23,7 +23,6 @@ from posthog.api.shared import UserBasicSerializer from posthog.api.tagged_item import TaggedItemSerializerMixin, TaggedItemViewSetMixin from posthog.api.dashboards.dashboard import Dashboard -from posthog.api.utils import ClassicBehaviorBooleanFieldSerializer from posthog.auth import PersonalAPIKeyAuthentication, TemporaryTokenAuthentication from posthog.constants import FlagRequestType from posthog.event_usage import report_user_action @@ -90,9 +89,6 @@ class FeatureFlagSerializer(TaggedItemSerializerMixin, serializers.HyperlinkedMo is_simple_flag = serializers.SerializerMethodField() rollout_percentage = serializers.SerializerMethodField() - ensure_experience_continuity = ClassicBehaviorBooleanFieldSerializer() - has_enriched_analytics = ClassicBehaviorBooleanFieldSerializer() - experiment_set: serializers.PrimaryKeyRelatedField = serializers.PrimaryKeyRelatedField(many=True, read_only=True) surveys: serializers.SerializerMethodField = serializers.SerializerMethodField() features: serializers.SerializerMethodField = serializers.SerializerMethodField() diff --git a/posthog/api/plugin.py b/posthog/api/plugin.py index 481b63476f10e..47a5ab5b3bb80 100644 --- a/posthog/api/plugin.py +++ b/posthog/api/plugin.py @@ -22,7 +22,6 @@ from posthog.api.routing import TeamAndOrgViewSetMixin from posthog.api.shared import FiltersSerializer -from posthog.api.utils import ClassicBehaviorBooleanFieldSerializer from posthog.models import Plugin, PluginAttachment, PluginConfig, User from posthog.models.activity_logging.activity_log import ( ActivityPage, @@ -587,8 +586,6 @@ class PluginConfigSerializer(serializers.ModelSerializer): delivery_rate_24h = serializers.SerializerMethodField() error = serializers.SerializerMethodField() - deleted = ClassicBehaviorBooleanFieldSerializer() - class Meta: model = PluginConfig fields = [ diff --git a/posthog/api/routing.py b/posthog/api/routing.py index f2816f9a2b131..c4e67d1826274 100644 --- a/posthog/api/routing.py +++ b/posthog/api/routing.py @@ -36,32 +36,6 @@ class DefaultRouterPlusPlus(ExtendedDefaultRouter): """DefaultRouter with optional trailing slash and drf-extensions nesting.""" - # This is an override because of changes in djangorestframework 3.15, which is required for python 3.11 - # changes taken from and explained here: https://github.com/nautobot/nautobot/pull/5546/files#diff-81850a2ccad5814aab4f477d447f85cc0a82e9c10fd88fd72327cda51a750471R30 - def _register(self, prefix, viewset, basename=None): - """ - Override DRF's BaseRouter.register() to bypass an unnecessary restriction added in version 3.15.0. - (Reference: https://github.com/encode/django-rest-framework/pull/8438) - """ - if basename is None: - basename = self.get_default_basename(viewset) - - # DRF: - # if self.is_already_registered(basename): - # msg = (f'Router with basename "{basename}" is already registered. ' - # f'Please provide a unique basename for viewset "{viewset}"') - # raise ImproperlyConfigured(msg) - # - # We bypass this because we have at least one use case (/api/extras/jobs/) where we are *intentionally* - # registering two viewsets with the same basename, but have carefully defined them so as not to conflict. - - # resuming standard DRF code... - self.registry.append((prefix, viewset, basename)) - - # invalidate the urls cache - if hasattr(self, "_urls"): - del self._urls - def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.trailing_slash = r"/?" diff --git a/posthog/api/test/__snapshots__/test_api_docs.ambr b/posthog/api/test/__snapshots__/test_api_docs.ambr index 2ded9229008c7..8793984c350a5 100644 --- a/posthog/api/test/__snapshots__/test_api_docs.ambr +++ b/posthog/api/test/__snapshots__/test_api_docs.ambr @@ -77,7 +77,7 @@ "/home/runner/work/posthog/posthog/posthog/api/property_definition.py: Error [PropertyDefinitionViewSet]: exception raised while getting serializer. Hint: Is get_serializer_class() returning None or is get_queryset() not working without a request? Ignoring the view for now. (Exception: 'AnonymousUser' object has no attribute 'organization')", '/home/runner/work/posthog/posthog/posthog/api/property_definition.py: Warning [PropertyDefinitionViewSet]: could not derive type of path parameter "project_id" because model "posthog.models.property_definition.PropertyDefinition" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', '/home/runner/work/posthog/posthog/posthog/api/query.py: Warning [QueryViewSet]: could not derive type of path parameter "project_id" because it is untyped and obtaining queryset from the viewset failed. Consider adding a type to the path (e.g. ) or annotating the parameter type with @extend_schema. Defaulting to "string".', - '/opt/hostedtoolcache/Python/3.11.9/x64/lib/python3.11/site-packages/pydantic/_internal/_model_construction.py: Warning [QueryViewSet > ModelMetaclass]: Encountered 2 components with identical names "Person" and different classes and . This will very likely result in an incorrect schema. Try renaming one.', + '/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/pydantic/_internal/_model_construction.py: Warning [QueryViewSet > ModelMetaclass]: Encountered 2 components with identical names "Person" and different classes and . This will very likely result in an incorrect schema. Try renaming one.', '/home/runner/work/posthog/posthog/posthog/api/query.py: Warning [QueryViewSet]: could not derive type of path parameter "id" because it is untyped and obtaining queryset from the viewset failed. Consider adding a type to the path (e.g. ) or annotating the parameter type with @extend_schema. Defaulting to "string".', '/home/runner/work/posthog/posthog/posthog/api/query.py: Error [QueryViewSet]: unable to guess serializer. This is graceful fallback handling for APIViews. Consider using GenericAPIView as view base class, if view is under your control. Either way you may want to add a serializer_class (or method). Ignoring view for now.', '/home/runner/work/posthog/posthog/ee/session_recordings/session_recording_playlist.py: Warning [SessionRecordingPlaylistViewSet]: could not derive type of path parameter "project_id" because model "posthog.session_recordings.models.session_recording_playlist.SessionRecordingPlaylist" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".', diff --git a/posthog/api/test/batch_exports/test_log_entry.py b/posthog/api/test/batch_exports/test_log_entry.py index 06dcb6ce4a8d2..b166583ee0b87 100644 --- a/posthog/api/test/batch_exports/test_log_entry.py +++ b/posthog/api/test/batch_exports/test_log_entry.py @@ -38,7 +38,7 @@ def create_batch_export_log_entry( "log_source": "batch_exports", "log_source_id": batch_export_id, "instance_id": run_id, - "timestamp": dt.datetime.now(dt.UTC).strftime("%Y-%m-%d %H:%M:%S.%f"), + "timestamp": dt.datetime.now(dt.timezone.utc).strftime("%Y-%m-%d %H:%M:%S.%f"), "level": level, "message": message, }, @@ -147,7 +147,7 @@ def test_log_level_filter(batch_export, team, level): results = [] timeout = 10 - start = dt.datetime.now(dt.UTC) + start = dt.datetime.now(dt.timezone.utc) while not results: results = fetch_batch_export_log_entries( @@ -157,7 +157,7 @@ def test_log_level_filter(batch_export, team, level): after=dt.datetime(2023, 9, 22, 0, 59, 59), before=dt.datetime(2023, 9, 22, 1, 0, 1), ) - if (dt.datetime.now(dt.UTC) - start) > dt.timedelta(seconds=timeout): + if (dt.datetime.now(dt.timezone.utc) - start) > dt.timedelta(seconds=timeout): break results.sort(key=lambda record: record.message) @@ -195,7 +195,7 @@ def test_log_level_filter_with_lowercase(batch_export, team, level): results = [] timeout = 10 - start = dt.datetime.now(dt.UTC) + start = dt.datetime.now(dt.timezone.utc) while not results: results = fetch_batch_export_log_entries( @@ -205,7 +205,7 @@ def test_log_level_filter_with_lowercase(batch_export, team, level): after=dt.datetime(2023, 9, 22, 0, 59, 59), before=dt.datetime(2023, 9, 22, 1, 0, 1), ) - if (dt.datetime.now(dt.UTC) - start) > dt.timedelta(seconds=timeout): + if (dt.datetime.now(dt.timezone.utc) - start) > dt.timedelta(seconds=timeout): break results.sort(key=lambda record: record.message) diff --git a/posthog/api/test/batch_exports/test_pause.py b/posthog/api/test/batch_exports/test_pause.py index 33c32f1a200bc..7db786347e09c 100644 --- a/posthog/api/test/batch_exports/test_pause.py +++ b/posthog/api/test/batch_exports/test_pause.py @@ -397,8 +397,8 @@ def test_unpause_can_trigger_a_backfill(client: HttpClient): data = get_batch_export_ok(client, team.pk, batch_export_id) assert batch_export["last_updated_at"] < data["last_updated_at"] - start_at = dt.datetime.strptime(data["last_paused_at"], "%Y-%m-%dT%H:%M:%S.%fZ").replace(tzinfo=dt.UTC) - end_at = dt.datetime.strptime(data["last_updated_at"], "%Y-%m-%dT%H:%M:%S.%fZ").replace(tzinfo=dt.UTC) + start_at = dt.datetime.strptime(data["last_paused_at"], "%Y-%m-%dT%H:%M:%S.%fZ").replace(tzinfo=dt.timezone.utc) + end_at = dt.datetime.strptime(data["last_updated_at"], "%Y-%m-%dT%H:%M:%S.%fZ").replace(tzinfo=dt.timezone.utc) mock_backfill.assert_called_once_with( ANY, batch_export["id"], diff --git a/posthog/api/test/batch_exports/test_update.py b/posthog/api/test/batch_exports/test_update.py index 08c42e51aa303..30333c206f953 100644 --- a/posthog/api/test/batch_exports/test_update.py +++ b/posthog/api/test/batch_exports/test_update.py @@ -94,8 +94,8 @@ def test_can_put_config(client: HttpClient): new_schedule = describe_schedule(temporal, batch_export["id"]) assert old_schedule.schedule.spec.intervals[0].every != new_schedule.schedule.spec.intervals[0].every assert new_schedule.schedule.spec.intervals[0].every == dt.timedelta(days=1) - assert new_schedule.schedule.spec.start_at == dt.datetime(2022, 7, 19, 0, 0, 0, tzinfo=dt.UTC) - assert new_schedule.schedule.spec.end_at == dt.datetime(2023, 7, 20, 0, 0, 0, tzinfo=dt.UTC) + assert new_schedule.schedule.spec.start_at == dt.datetime(2022, 7, 19, 0, 0, 0, tzinfo=dt.timezone.utc) + assert new_schedule.schedule.spec.end_at == dt.datetime(2023, 7, 20, 0, 0, 0, tzinfo=dt.timezone.utc) decoded_payload = async_to_sync(codec.decode)(new_schedule.schedule.action.args) args = json.loads(decoded_payload[0].data) diff --git a/posthog/api/test/test_app_metrics.py b/posthog/api/test/test_app_metrics.py index 67b9a0a42eaa5..c639b37aee68d 100644 --- a/posthog/api/test/test_app_metrics.py +++ b/posthog/api/test/test_app_metrics.py @@ -100,7 +100,7 @@ def test_retrieve_batch_export_runs_app_metrics(self): temporal = sync_connect() - now = dt.datetime(2021, 12, 5, 13, 23, 0, tzinfo=dt.UTC) + now = dt.datetime(2021, 12, 5, 13, 23, 0, tzinfo=dt.timezone.utc) with start_test_worker(temporal): response = create_batch_export_ok( self.client, @@ -191,7 +191,7 @@ def test_retrieve_batch_export_runs_app_metrics_defaults_to_zero(self): } temporal = sync_connect() - now = dt.datetime(2021, 12, 5, 13, 23, 0, tzinfo=dt.UTC) + now = dt.datetime(2021, 12, 5, 13, 23, 0, tzinfo=dt.timezone.utc) with start_test_worker(temporal): response = create_batch_export_ok( diff --git a/posthog/api/test/test_capture.py b/posthog/api/test/test_capture.py index df72aa8fd6dc0..9762473a3a869 100644 --- a/posthog/api/test/test_capture.py +++ b/posthog/api/test/test_capture.py @@ -13,7 +13,7 @@ import structlog import zlib from datetime import datetime, timedelta -from datetime import UTC +from datetime import timezone as tz from django.http import HttpResponse from django.test.client import MULTIPART_CONTENT, Client from django.utils import timezone @@ -1305,7 +1305,7 @@ def test_js_library_underscore_sent_at(self, kafka_produce): # right time sent as sent_at to process_event sent_at = datetime.fromisoformat(arguments["sent_at"]) - self.assertEqual(sent_at.tzinfo, UTC) + self.assertEqual(sent_at.tzinfo, tz.utc) timediff = sent_at.timestamp() - tomorrow_sent_at.timestamp() self.assertLess(abs(timediff), 1) diff --git a/posthog/api/user.py b/posthog/api/user.py index ee2b66c47eb1c..ad5ef32de0e8c 100644 --- a/posthog/api/user.py +++ b/posthog/api/user.py @@ -38,7 +38,6 @@ from posthog.api.utils import ( PublicIPOnlyHttpAdapter, raise_if_user_provided_url_unsafe, - ClassicBehaviorBooleanFieldSerializer, ) from posthog.auth import ( PersonalAPIKeyAuthentication, @@ -88,7 +87,6 @@ class UserSerializer(serializers.ModelSerializer): current_password = serializers.CharField(write_only=True, required=False) notification_settings = serializers.DictField(required=False) scene_personalisation = ScenePersonalisationBasicSerializer(many=True, read_only=True) - anonymize_data = ClassicBehaviorBooleanFieldSerializer() class Meta: model = User diff --git a/posthog/api/utils.py b/posthog/api/utils.py index 2f1bd5c087bab..65cff4897ebb9 100644 --- a/posthog/api/utils.py +++ b/posthog/api/utils.py @@ -7,7 +7,6 @@ from requests.adapters import HTTPAdapter from typing import Literal, Optional, Union -from rest_framework.fields import Field from urllib3 import HTTPSConnectionPool, HTTPConnectionPool, PoolManager from uuid import UUID @@ -15,7 +14,7 @@ from django.core.exceptions import RequestDataTooBig from django.db.models import QuerySet from prometheus_client import Counter -from rest_framework import request, status, serializers +from rest_framework import request, status from rest_framework.exceptions import ValidationError from statshog.defaults.django import statsd @@ -36,14 +35,6 @@ class PaginationMode(Enum): previous = auto() -# This overrides a change in DRF 3.15 that alters our behavior. If the user passes an empty argument, -# the new version keeps it as null vs coalescing it to the default. -# Don't add this to new classes -class ClassicBehaviorBooleanFieldSerializer(serializers.BooleanField): - def __init__(self, **kwargs): - Field.__init__(self, allow_null=True, required=False, **kwargs) - - def get_target_entity(filter: Union[Filter, StickinessFilter]) -> Entity: # Except for "events", we require an entity id and type to be provided if not filter.target_entity_id and filter.target_entity_type != "events": diff --git a/posthog/async_migrations/test/test_utils.py b/posthog/async_migrations/test/test_utils.py index 15d88019e785f..da01ec9dda54d 100644 --- a/posthog/async_migrations/test/test_utils.py +++ b/posthog/async_migrations/test/test_utils.py @@ -1,4 +1,4 @@ -from datetime import datetime, timedelta, UTC +from datetime import datetime, timedelta, timezone from unittest.mock import patch import pytest @@ -49,7 +49,7 @@ def test_process_error(self, _): sm.refresh_from_db() self.assertEqual(sm.status, MigrationStatus.Errored) - self.assertGreater(sm.finished_at, datetime.now(UTC) - timedelta(hours=1)) + self.assertGreater(sm.finished_at, datetime.now(timezone.utc) - timedelta(hours=1)) errors = AsyncMigrationError.objects.filter(async_migration=sm).order_by("created_at") self.assertEqual(errors.count(), 2) self.assertEqual(errors[0].description, "some error") @@ -81,7 +81,7 @@ def test_complete_migration(self): sm.refresh_from_db() self.assertEqual(sm.status, MigrationStatus.CompletedSuccessfully) - self.assertGreater(sm.finished_at, datetime.now(UTC) - timedelta(hours=1)) + self.assertGreater(sm.finished_at, datetime.now(timezone.utc) - timedelta(hours=1)) self.assertEqual(sm.progress, 100) errors = AsyncMigrationError.objects.filter(async_migration=sm) diff --git a/posthog/batch_exports/http.py b/posthog/batch_exports/http.py index 021ce2faccf36..9977b3bc75729 100644 --- a/posthog/batch_exports/http.py +++ b/posthog/batch_exports/http.py @@ -76,11 +76,11 @@ def validate_date_input(date_input: Any, team: Team | None = None) -> dt.datetim if parsed.tzinfo is None: if team: - parsed = parsed.replace(tzinfo=team.timezone_info).astimezone(dt.UTC) + parsed = parsed.replace(tzinfo=team.timezone_info).astimezone(dt.timezone.utc) else: - parsed = parsed.replace(tzinfo=dt.UTC) + parsed = parsed.replace(tzinfo=dt.timezone.utc) else: - parsed = parsed.astimezone(dt.UTC) + parsed = parsed.astimezone(dt.timezone.utc) return parsed diff --git a/posthog/batch_exports/models.py b/posthog/batch_exports/models.py index 7c1b3b7b0a4a3..f891089e7a327 100644 --- a/posthog/batch_exports/models.py +++ b/posthog/batch_exports/models.py @@ -1,7 +1,7 @@ import collections.abc import dataclasses import datetime as dt -import enum +from enum import Enum import typing from datetime import timedelta @@ -254,7 +254,7 @@ def interval_time_delta(self) -> timedelta: raise ValueError(f"Invalid interval: '{self.interval}'") -class BatchExportLogEntryLevel(enum.StrEnum): +class BatchExportLogEntryLevel(str, Enum): """Enumeration of batch export log levels.""" DEBUG = "DEBUG" diff --git a/posthog/batch_exports/service.py b/posthog/batch_exports/service.py index fe16a53c6dc81..89992d2228f75 100644 --- a/posthog/batch_exports/service.py +++ b/posthog/batch_exports/service.py @@ -257,7 +257,7 @@ def pause_batch_export(temporal: Client, batch_export_id: str, note: str | None raise BatchExportServiceRPCError(f"BatchExport {batch_export_id} could not be paused") from exc batch_export.paused = True - batch_export.last_paused_at = dt.datetime.now(dt.UTC) + batch_export.last_paused_at = dt.datetime.now(dt.timezone.utc) batch_export.save() return True @@ -285,7 +285,7 @@ async def apause_batch_export(temporal: Client, batch_export_id: str, note: str raise BatchExportServiceRPCError(f"BatchExport {batch_export_id} could not be paused") from exc batch_export.paused = True - batch_export.last_paused_at = dt.datetime.now(dt.UTC) + batch_export.last_paused_at = dt.datetime.now(dt.timezone.utc) await batch_export.asave() return True diff --git a/posthog/clickhouse/client/execute_async.py b/posthog/clickhouse/client/execute_async.py index b863a0f251068..23aac6cdd5b4d 100644 --- a/posthog/clickhouse/client/execute_async.py +++ b/posthog/clickhouse/client/execute_async.py @@ -154,7 +154,7 @@ def execute_process_query( query_status.error = True # Assume error in case nothing below ends up working - pickup_time = datetime.datetime.now(datetime.UTC) + pickup_time = datetime.datetime.now(datetime.timezone.utc) if query_status.start_time: wait_duration = (pickup_time - query_status.start_time) / datetime.timedelta(seconds=1) QUERY_WAIT_TIME.labels(team=team_id).observe(wait_duration) @@ -173,7 +173,7 @@ def execute_process_query( query_status.complete = True query_status.error = False query_status.results = results - query_status.end_time = datetime.datetime.now(datetime.UTC) + query_status.end_time = datetime.datetime.now(datetime.timezone.utc) query_status.expiration_time = query_status.end_time + datetime.timedelta(seconds=manager.STATUS_TTL_SECONDS) process_duration = (query_status.end_time - pickup_time) / datetime.timedelta(seconds=1) QUERY_PROCESS_TIME.labels(team=team_id).observe(process_duration) @@ -232,7 +232,7 @@ def enqueue_process_query_task( return manager.get_query_status() # Immediately set status, so we don't have race with celery - query_status = QueryStatus(id=query_id, team_id=team.id, start_time=datetime.datetime.now(datetime.UTC)) + query_status = QueryStatus(id=query_id, team_id=team.id, start_time=datetime.datetime.now(datetime.timezone.utc)) manager.store_query_status(query_status) if _test_only_bypass_celery: diff --git a/posthog/clickhouse/table_engines.py b/posthog/clickhouse/table_engines.py index b67ef9be5bc10..e2b83d3f29006 100644 --- a/posthog/clickhouse/table_engines.py +++ b/posthog/clickhouse/table_engines.py @@ -1,11 +1,11 @@ import uuid -from enum import StrEnum +from enum import Enum from typing import Optional from django.conf import settings -class ReplicationScheme(StrEnum): +class ReplicationScheme(str, Enum): NOT_SHARDED = "NOT_SHARDED" SHARDED = "SHARDED" REPLICATED = "REPLICATED" diff --git a/posthog/clickhouse/test/test_person_overrides.py b/posthog/clickhouse/test/test_person_overrides.py index 4dbf0900b5387..ec632eebe7774 100644 --- a/posthog/clickhouse/test/test_person_overrides.py +++ b/posthog/clickhouse/test/test_person_overrides.py @@ -1,5 +1,5 @@ import json -from datetime import datetime, timedelta, UTC +from datetime import datetime, timedelta, timezone from time import sleep from typing import TypedDict from uuid import UUID, uuid4 @@ -124,7 +124,7 @@ def test_person_overrides_dict(): "override_person_id": uuid4(), "merged_at": datetime.fromisoformat("2020-01-02T00:00:00+00:00"), "oldest_event": datetime.fromisoformat("2020-01-01T00:00:00+00:00"), - "created_at": datetime.now(UTC), + "created_at": datetime.now(timezone.utc), "version": 1, } diff --git a/posthog/constants.py b/posthog/constants.py index af1e627bc7160..fc8f7a9142195 100644 --- a/posthog/constants.py +++ b/posthog/constants.py @@ -1,4 +1,4 @@ -from enum import StrEnum +from enum import Enum from typing import Literal from semantic_version import Version @@ -9,7 +9,7 @@ # N.B. Keep this in sync with frontend enum (types.ts) # AND ensure it is added to the Billing Service -class AvailableFeature(StrEnum): +class AvailableFeature(str, Enum): ZAPIER = "zapier" ORGANIZATIONS_PROJECTS = "organizations_projects" PROJECT_BASED_PERMISSIONING = "project_based_permissioning" @@ -215,19 +215,19 @@ class AvailableFeature(StrEnum): BREAKDOWN_TYPES = Literal["event", "person", "cohort", "group", "session", "hogql"] -class FunnelOrderType(StrEnum): +class FunnelOrderType(str, Enum): STRICT = "strict" UNORDERED = "unordered" ORDERED = "ordered" -class FunnelVizType(StrEnum): +class FunnelVizType(str, Enum): TRENDS = "trends" TIME_TO_CONVERT = "time_to_convert" STEPS = "steps" -class FunnelCorrelationType(StrEnum): +class FunnelCorrelationType(str, Enum): EVENTS = "events" PROPERTIES = "properties" EVENT_WITH_PROPERTIES = "event_with_properties" @@ -240,7 +240,7 @@ class FunnelCorrelationType(StrEnum): PERSON_UUID_FILTER = "person_uuid" -class AnalyticsDBMS(StrEnum): +class AnalyticsDBMS(str, Enum): POSTGRES = "postgres" CLICKHOUSE = "clickhouse" @@ -251,13 +251,13 @@ class AnalyticsDBMS(StrEnum): MONTHLY_ACTIVE = "monthly_active" -class RetentionQueryType(StrEnum): +class RetentionQueryType(str, Enum): RETURNING = "returning" TARGET = "target" TARGET_FIRST_TIME = "target_first_time" -class ExperimentSignificanceCode(StrEnum): +class ExperimentSignificanceCode(str, Enum): SIGNIFICANT = "significant" NOT_ENOUGH_EXPOSURE = "not_enough_exposure" LOW_WIN_PROBABILITY = "low_win_probability" @@ -265,7 +265,7 @@ class ExperimentSignificanceCode(StrEnum): HIGH_P_VALUE = "high_p_value" -class ExperimentNoResultsErrorKeys(StrEnum): +class ExperimentNoResultsErrorKeys(str, Enum): NO_EVENTS = "no-events" NO_FLAG_INFO = "no-flag-info" NO_CONTROL_VARIANT = "no-control-variant" @@ -273,12 +273,12 @@ class ExperimentNoResultsErrorKeys(StrEnum): NO_RESULTS = "no-results" -class PropertyOperatorType(StrEnum): +class PropertyOperatorType(str, Enum): AND = "AND" OR = "OR" -class BreakdownAttributionType(StrEnum): +class BreakdownAttributionType(str, Enum): FIRST_TOUCH = "first_touch" # FIRST_TOUCH attribution means the breakdown value is the first property value found within all funnel steps LAST_TOUCH = "last_touch" @@ -294,7 +294,7 @@ class BreakdownAttributionType(StrEnum): GROUP_TYPES_LIMIT = 5 -class EventDefinitionType(StrEnum): +class EventDefinitionType(str, Enum): # Mimics EventDefinitionType in frontend/src/types.ts ALL = "all" ACTION_EVENT = "action_event" @@ -303,7 +303,7 @@ class EventDefinitionType(StrEnum): EVENT_CUSTOM = "event_custom" -class FlagRequestType(StrEnum): +class FlagRequestType(str, Enum): DECIDE = "decide" LOCAL_EVALUATION = "local-evaluation" diff --git a/posthog/decorators.py b/posthog/decorators.py index c4aba39e3d2c5..eb66afcf422d4 100644 --- a/posthog/decorators.py +++ b/posthog/decorators.py @@ -1,4 +1,4 @@ -from enum import StrEnum +from enum import Enum from functools import wraps from typing import Any, TypeVar, Union, cast from collections.abc import Callable @@ -17,7 +17,7 @@ from .utils import generate_cache_key, get_safe_cache -class CacheType(StrEnum): +class CacheType(str, Enum): TRENDS = "Trends" FUNNEL = "Funnel" RETENTION = "Retention" diff --git a/posthog/demo/matrix/models.py b/posthog/demo/matrix/models.py index 1d3af8cbfeecf..c09fcae8cbb03 100644 --- a/posthog/demo/matrix/models.py +++ b/posthog/demo/matrix/models.py @@ -106,7 +106,9 @@ class SimEvent: group4_created_at: Optional[dt.datetime] = None def __str__(self) -> str: - separator = "-" if self.timestamp < dt.datetime.now(dt.UTC) else "+" # Future events are denoted by a '+' + separator = ( + "-" if self.timestamp < dt.datetime.now(dt.timezone.utc) else "+" + ) # Future events are denoted by a '+' display = f"{self.timestamp} {separator} {self.event} # {self.distinct_id}" if current_url := self.properties.get("$current_url"): display += f" @ {current_url}" diff --git a/posthog/demo/matrix/randomization.py b/posthog/demo/matrix/randomization.py index 71701d2c6ce99..9500f72778a0f 100644 --- a/posthog/demo/matrix/randomization.py +++ b/posthog/demo/matrix/randomization.py @@ -1,11 +1,11 @@ -from enum import StrEnum +from enum import Enum import mimesis.random WeightedPool = tuple[list[str], list[int]] -class Industry(StrEnum): +class Industry(str, Enum): TECHNOLOGY = "technology" FINANCE = "finance" MEDIA = "media" diff --git a/posthog/demo/products/hedgebox/models.py b/posthog/demo/products/hedgebox/models.py index 9b0c72afc69a7..af7b3d6862f31 100644 --- a/posthog/demo/products/hedgebox/models.py +++ b/posthog/demo/products/hedgebox/models.py @@ -1,7 +1,7 @@ import datetime as dt import math from dataclasses import dataclass, field -from enum import auto, StrEnum +from enum import auto, Enum from typing import ( TYPE_CHECKING, Any, @@ -66,7 +66,7 @@ class HedgeboxSessionIntent(SimSessionIntent): DOWNGRADE_PLAN = auto() -class HedgeboxPlan(StrEnum): +class HedgeboxPlan(str, Enum): PERSONAL_FREE = "personal/free" PERSONAL_PRO = "personal/pro" BUSINESS_STANDARD = "business/standard" diff --git a/posthog/hogql/ast.py b/posthog/hogql/ast.py index 72b2c32f7b745..a21a74f4a91bf 100644 --- a/posthog/hogql/ast.py +++ b/posthog/hogql/ast.py @@ -1,4 +1,4 @@ -from enum import StrEnum +from enum import Enum from typing import Any, Literal, Optional, Union from dataclasses import dataclass, field @@ -554,7 +554,7 @@ class Alias(Expr): hidden: bool = False -class ArithmeticOperationOp(StrEnum): +class ArithmeticOperationOp(str, Enum): Add = "+" Sub = "-" Mult = "*" @@ -581,7 +581,7 @@ class Or(Expr): type: Optional[ConstantType] = None -class CompareOperationOp(StrEnum): +class CompareOperationOp(str, Enum): Eq = "==" NotEq = "!=" Gt = ">" diff --git a/posthog/hogql/constants.py b/posthog/hogql/constants.py index f484a6d0fad70..769d4a250e65e 100644 --- a/posthog/hogql/constants.py +++ b/posthog/hogql/constants.py @@ -1,5 +1,5 @@ from datetime import date, datetime -from enum import StrEnum +from enum import Enum from typing import Optional, Literal, TypeAlias from uuid import UUID from pydantic import ConfigDict, BaseModel @@ -47,7 +47,7 @@ BREAKDOWN_VALUES_LIMIT_FOR_COUNTRIES = 300 -class LimitContext(StrEnum): +class LimitContext(str, Enum): QUERY = "query" QUERY_ASYNC = "query_async" EXPORT = "export" diff --git a/posthog/hogql/test/test_resolver.py b/posthog/hogql/test/test_resolver.py index 44b7e5d616496..c0555a8bebe5e 100644 --- a/posthog/hogql/test/test_resolver.py +++ b/posthog/hogql/test/test_resolver.py @@ -1,4 +1,4 @@ -from datetime import datetime, date, UTC +from datetime import timezone, datetime, date from typing import Optional, cast import pytest from django.test import override_settings @@ -97,7 +97,7 @@ def test_resolve_constant_type(self): "SELECT 1, 'boo', true, 1.1232, null, {date}, {datetime}, {uuid}, {array}, {array12}, {tuple}", placeholders={ "date": ast.Constant(value=date(2020, 1, 10)), - "datetime": ast.Constant(value=datetime(2020, 1, 10, 0, 0, 0, tzinfo=UTC)), + "datetime": ast.Constant(value=datetime(2020, 1, 10, 0, 0, 0, tzinfo=timezone.utc)), "uuid": ast.Constant(value=UUID("00000000-0000-4000-8000-000000000000")), "array": ast.Constant(value=[]), "array12": ast.Constant(value=[1, 2]), diff --git a/posthog/hogql_queries/insights/trends/test/test_trends_actors_query_builder.py b/posthog/hogql_queries/insights/trends/test/test_trends_actors_query_builder.py index b12f15ac6411c..fd95febddf61a 100644 --- a/posthog/hogql_queries/insights/trends/test/test_trends_actors_query_builder.py +++ b/posthog/hogql_queries/insights/trends/test/test_trends_actors_query_builder.py @@ -1,4 +1,4 @@ -from datetime import datetime, UTC +from datetime import datetime, timezone from typing import Optional, cast from freezegun import freeze_time @@ -70,7 +70,7 @@ def _get_date_where_sql(self, **kwargs): def _get_utc_string(self, dt: datetime | None) -> str | None: if dt is None: return None - return dt.astimezone(UTC).strftime("%Y-%m-%d %H:%M:%SZ") + return dt.astimezone(timezone.utc).strftime("%Y-%m-%d %H:%M:%SZ") def test_time_frame(self): self.team.timezone = "Europe/Berlin" diff --git a/posthog/hogql_queries/legacy_compatibility/filter_to_query.py b/posthog/hogql_queries/legacy_compatibility/filter_to_query.py index 8a40413be6379..9209f8516329c 100644 --- a/posthog/hogql_queries/legacy_compatibility/filter_to_query.py +++ b/posthog/hogql_queries/legacy_compatibility/filter_to_query.py @@ -1,5 +1,5 @@ import copy -from enum import StrEnum +from enum import Enum import json import re from typing import Any, Literal @@ -35,7 +35,7 @@ from posthog.utils import str_to_bool -class MathAvailability(StrEnum): +class MathAvailability(str, Enum): Unavailable = ("Unavailable",) All = ("All",) ActorsOnly = "ActorsOnly" diff --git a/posthog/hogql_queries/query_runner.py b/posthog/hogql_queries/query_runner.py index 0c22271b9c4e4..a517dcd0a632f 100644 --- a/posthog/hogql_queries/query_runner.py +++ b/posthog/hogql_queries/query_runner.py @@ -1,5 +1,5 @@ from abc import ABC, abstractmethod -from datetime import datetime, timedelta, UTC +from datetime import datetime, timedelta, timezone from enum import IntEnum from typing import Any, Generic, Optional, TypeVar, Union, cast, TypeGuard from zoneinfo import ZoneInfo @@ -445,7 +445,7 @@ def handle_cache_and_async_logic( elif execution_mode == ExecutionMode.EXTENDED_CACHE_CALCULATE_ASYNC_IF_STALE: # We're allowed to calculate if the cache is older than 24 hours, but we'll do it asynchronously assert isinstance(cached_response, CachedResponse) - if datetime.now(UTC) - cached_response.last_refresh > EXTENDED_CACHE_AGE: + if datetime.now(timezone.utc) - cached_response.last_refresh > EXTENDED_CACHE_AGE: query_status_response = self.enqueue_async_calculation(cache_key=cache_key, user=user) cached_response.query_status = query_status_response.query_status return cached_response @@ -490,8 +490,8 @@ def run( fresh_response_dict = { **self.calculate().model_dump(), "is_cached": False, - "last_refresh": datetime.now(UTC), - "next_allowed_client_refresh": datetime.now(UTC) + self._refresh_frequency(), + "last_refresh": datetime.now(timezone.utc), + "next_allowed_client_refresh": datetime.now(timezone.utc) + self._refresh_frequency(), "cache_key": cache_key, "timezone": self.team.timezone, } diff --git a/posthog/jwt.py b/posthog/jwt.py index 897abf98ee9a0..ead4196aa4730 100644 --- a/posthog/jwt.py +++ b/posthog/jwt.py @@ -1,4 +1,4 @@ -from datetime import datetime, timedelta, UTC +from datetime import datetime, timedelta, timezone from enum import Enum from typing import Any @@ -23,7 +23,7 @@ def encode_jwt(payload: dict, expiry_delta: timedelta, audience: PosthogJwtAudie encoded_jwt = jwt.encode( { **payload, - "exp": datetime.now(tz=UTC) + expiry_delta, + "exp": datetime.now(tz=timezone.utc) + expiry_delta, "aud": audience.value, }, settings.SECRET_KEY, diff --git a/posthog/kafka_client/client.py b/posthog/kafka_client/client.py index f0008c4ba72e8..3f58e572417b8 100644 --- a/posthog/kafka_client/client.py +++ b/posthog/kafka_client/client.py @@ -1,5 +1,5 @@ import json -from enum import StrEnum +from enum import Enum from typing import Any, Optional from collections.abc import Callable @@ -83,7 +83,7 @@ def subscribe(self, _): return -class _KafkaSecurityProtocol(StrEnum): +class _KafkaSecurityProtocol(str, Enum): PLAINTEXT = "PLAINTEXT" SSL = "SSL" SASL_PLAINTEXT = "SASL_PLAINTEXT" diff --git a/posthog/management/commands/create_batch_export_from_app.py b/posthog/management/commands/create_batch_export_from_app.py index 80907dccea7f7..90806ad900fee 100644 --- a/posthog/management/commands/create_batch_export_from_app.py +++ b/posthog/management/commands/create_batch_export_from_app.py @@ -116,7 +116,7 @@ def handle(self, *args, **options): if options.get("backfill_batch_export", False) and dry_run is False: client = sync_connect() - end_at = dt.datetime.now(dt.UTC) + end_at = dt.datetime.now(dt.timezone.utc) start_at = end_at - (dt.timedelta(hours=1) if interval == "hour" else dt.timedelta(days=1)) backfill_export( client, diff --git a/posthog/management/commands/create_channel_definitions_file.py b/posthog/management/commands/create_channel_definitions_file.py index bea98c02b5243..cab70bf31d360 100644 --- a/posthog/management/commands/create_channel_definitions_file.py +++ b/posthog/management/commands/create_channel_definitions_file.py @@ -3,7 +3,7 @@ import subprocess from collections import OrderedDict from dataclasses import dataclass -from enum import StrEnum +from enum import Enum from typing import Optional from django.core.management.base import BaseCommand @@ -12,7 +12,7 @@ OUTPUT_FILE = "posthog/models/channel_type/channel_definitions.json" -class EntryKind(StrEnum): +class EntryKind(str, Enum): source = "source" medium = "medium" diff --git a/posthog/management/commands/generate_demo_data.py b/posthog/management/commands/generate_demo_data.py index ce094620453a1..f75f151259570 100644 --- a/posthog/management/commands/generate_demo_data.py +++ b/posthog/management/commands/generate_demo_data.py @@ -65,7 +65,7 @@ def add_arguments(self, parser): def handle(self, *args, **options): timer = monotonic() seed = options.get("seed") or secrets.token_hex(16) - now = options.get("now") or dt.datetime.now(dt.UTC) + now = options.get("now") or dt.datetime.now(dt.timezone.utc) existing_team_id = options.get("team_id") if ( existing_team_id is not None diff --git a/posthog/management/commands/migrate_team.py b/posthog/management/commands/migrate_team.py index e2395a46e2ad5..d964a7db0c07b 100644 --- a/posthog/management/commands/migrate_team.py +++ b/posthog/management/commands/migrate_team.py @@ -254,7 +254,7 @@ def create_migration( raise CommandError("Didn't receive 'y', exiting") print() # noqa: T201 - now = dt.datetime.now(dt.UTC) + now = dt.datetime.now(dt.timezone.utc) # This is a precaution so we don't accidentally leave the export running indefinitely. end_at = now + dt.timedelta(days=end_days_from_now) @@ -299,5 +299,5 @@ def parse_to_utc(date_str: str) -> dt.datetime: except ValueError: raise ValueError("Invalid date format. Expected 'YYYY-MM-DD' or 'YYYY-MM-DD HH:MM:SS'.") - utc_datetime = parsed_datetime.replace(tzinfo=dt.UTC) + utc_datetime = parsed_datetime.replace(tzinfo=dt.timezone.utc) return utc_datetime diff --git a/posthog/management/commands/plugin_server_load_test.py b/posthog/management/commands/plugin_server_load_test.py index a97a5f6973804..4adfe8941e644 100644 --- a/posthog/management/commands/plugin_server_load_test.py +++ b/posthog/management/commands/plugin_server_load_test.py @@ -63,7 +63,7 @@ def add_arguments(self, parser): def handle(self, *args, **options): seed = options.get("seed") or secrets.token_hex(16) - now = options.get("now") or dt.datetime.now(dt.UTC) + now = options.get("now") or dt.datetime.now(dt.timezone.utc) admin = KafkaAdminClient(bootstrap_servers=settings.KAFKA_HOSTS) consumer = KafkaConsumer(KAFKA_EVENTS_PLUGIN_INGESTION_TOPIC, bootstrap_servers=settings.KAFKA_HOSTS) diff --git a/posthog/management/commands/test/test_sync_persons_to_clickhouse.py b/posthog/management/commands/test/test_sync_persons_to_clickhouse.py index b38d0fbe138fb..3609a358054bd 100644 --- a/posthog/management/commands/test/test_sync_persons_to_clickhouse.py +++ b/posthog/management/commands/test/test_sync_persons_to_clickhouse.py @@ -1,5 +1,5 @@ import logging -from datetime import datetime, timedelta, UTC +from datetime import datetime, timedelta, timezone from unittest import mock from uuid import UUID, uuid4 @@ -143,7 +143,7 @@ def test_distinct_ids_deleted(self): wraps=posthog.management.commands.sync_persons_to_clickhouse.raw_create_group_ch, ) def test_group_sync(self, mocked_ch_call): - ts = datetime.now(UTC) + ts = datetime.now(timezone.utc) Group.objects.create( team_id=self.team.pk, group_type_index=2, @@ -183,12 +183,12 @@ def test_group_sync_updates_group(self, mocked_ch_call): 2, "group-key", {"a": 5}, - timestamp=datetime.now(UTC) - timedelta(hours=3), + timestamp=datetime.now(timezone.utc) - timedelta(hours=3), ) group.group_properties = {"a": 5, "b": 3} group.save() - ts_before = datetime.now(UTC) + ts_before = datetime.now(timezone.utc) run_group_sync(self.team.pk, live_run=True, sync=True) mocked_ch_call.assert_called_once() @@ -213,7 +213,7 @@ def test_group_sync_updates_group(self, mocked_ch_call): ) self.assertLessEqual( ch_group[4].strftime("%Y-%m-%d %H:%M:%S"), - datetime.now(UTC).strftime("%Y-%m-%d %H:%M:%S"), + datetime.now(timezone.utc).strftime("%Y-%m-%d %H:%M:%S"), ) # second time it's a no-op @@ -225,7 +225,7 @@ def test_group_sync_updates_group(self, mocked_ch_call): wraps=posthog.management.commands.sync_persons_to_clickhouse.raw_create_group_ch, ) def test_group_sync_multiple_entries(self, mocked_ch_call): - ts = datetime.now(UTC) + ts = datetime.now(timezone.utc) Group.objects.create( team_id=self.team.pk, group_type_index=2, @@ -430,7 +430,7 @@ def everything_test_run(self, live_run): group_type_index=2, group_key="group-key", group_properties={"a": 1234}, - created_at=datetime.now(UTC) - timedelta(hours=3), + created_at=datetime.now(timezone.utc) - timedelta(hours=3), version=5, ) diff --git a/posthog/models/feature_flag/flag_matching.py b/posthog/models/feature_flag/flag_matching.py index ea181081f0c31..70e0190a5704a 100644 --- a/posthog/models/feature_flag/flag_matching.py +++ b/posthog/models/feature_flag/flag_matching.py @@ -1,6 +1,6 @@ import hashlib from dataclasses import dataclass -from enum import StrEnum +from enum import Enum import time import structlog from typing import Literal, Optional, Union, cast @@ -67,7 +67,7 @@ PERSON_KEY = "person" -class FeatureFlagMatchReason(StrEnum): +class FeatureFlagMatchReason(str, Enum): SUPER_CONDITION_VALUE = "super_condition_value" CONDITION_MATCH = "condition_match" NO_CONDITION_MATCH = "no_condition_match" diff --git a/posthog/models/filters/stickiness_filter.py b/posthog/models/filters/stickiness_filter.py index d19b2418e0655..cde6d8020928f 100644 --- a/posthog/models/filters/stickiness_filter.py +++ b/posthog/models/filters/stickiness_filter.py @@ -72,7 +72,7 @@ def __init__( else: data = {"insight": INSIGHT_STICKINESS} super().__init__(data, request, **kwargs) - team: Optional[Team] = kwargs.get("team", None) + team: Optional["Team"] = kwargs.get("team", None) if not team: raise ValidationError("Team must be provided to stickiness filter") self.team = team diff --git a/posthog/models/plugin.py b/posthog/models/plugin.py index 87ab0497c8118..46ddfb9177f4c 100644 --- a/posthog/models/plugin.py +++ b/posthog/models/plugin.py @@ -1,7 +1,7 @@ import datetime import os from dataclasses import dataclass -from enum import StrEnum +from enum import Enum from typing import Any, Optional, cast from uuid import UUID @@ -288,13 +288,13 @@ class Meta: value: models.TextField = models.TextField(blank=True, null=True) -class PluginLogEntrySource(StrEnum): +class PluginLogEntrySource(str, Enum): SYSTEM = "SYSTEM" PLUGIN = "PLUGIN" CONSOLE = "CONSOLE" -class PluginLogEntryType(StrEnum): +class PluginLogEntryType(str, Enum): DEBUG = "DEBUG" LOG = "LOG" INFO = "INFO" diff --git a/posthog/models/property/property.py b/posthog/models/property/property.py index bb378b7616d43..7185306b8ccb2 100644 --- a/posthog/models/property/property.py +++ b/posthog/models/property/property.py @@ -1,5 +1,5 @@ import json -from enum import StrEnum +from enum import Enum from typing import ( Any, Literal, @@ -14,7 +14,7 @@ from posthog.utils import str_to_bool -class BehavioralPropertyType(StrEnum): +class BehavioralPropertyType(str, Enum): PERFORMED_EVENT = "performed_event" PERFORMED_EVENT_MULTIPLE = "performed_event_multiple" PERFORMED_EVENT_FIRST_TIME = "performed_event_first_time" diff --git a/posthog/models/test/test_async_deletion_model.py b/posthog/models/test/test_async_deletion_model.py index 8f4125be67a3c..060c938186689 100644 --- a/posthog/models/test/test_async_deletion_model.py +++ b/posthog/models/test/test_async_deletion_model.py @@ -65,7 +65,7 @@ def test_mark_deletions_done_team_when_not_done(self): @snapshot_clickhouse_queries def test_mark_deletions_done_person(self): - base_datetime = dt.datetime(2024, 1, 1, 0, 0, 0, tzinfo=dt.UTC) + base_datetime = dt.datetime(2024, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc) _create_event( event_uuid=uuid4(), @@ -101,7 +101,7 @@ def test_mark_deletions_done_person(self): @snapshot_clickhouse_queries def test_mark_deletions_done_person_when_not_done(self): - base_datetime = dt.datetime(2024, 1, 1, 0, 0, 0, tzinfo=dt.UTC) + base_datetime = dt.datetime(2024, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc) _create_event( event_uuid=uuid4(), @@ -226,7 +226,7 @@ def test_delete_teams_unrelated(self): @snapshot_clickhouse_alter_queries def test_delete_person(self): - base_datetime = dt.datetime(2024, 1, 1, 0, 0, 0, tzinfo=dt.UTC) + base_datetime = dt.datetime(2024, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc) # Event for person, created before AsyncDeletion, so it should be deleted _create_event( @@ -264,7 +264,7 @@ def test_delete_person(self): @snapshot_clickhouse_alter_queries def test_delete_person_unrelated(self): - base_datetime = dt.datetime(2024, 1, 1, 0, 0, 0, tzinfo=dt.UTC) + base_datetime = dt.datetime(2024, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc) _create_event( event_uuid=uuid4(), diff --git a/posthog/models/test/test_person_override_model.py b/posthog/models/test/test_person_override_model.py index ea64d7a9c9749..d080970329664 100644 --- a/posthog/models/test/test_person_override_model.py +++ b/posthog/models/test/test_person_override_model.py @@ -48,7 +48,7 @@ def people(team): @pytest.fixture def oldest_event(): - return dt.datetime.now(dt.UTC) + return dt.datetime.now(dt.timezone.utc) @pytest.mark.django_db(transaction=True) diff --git a/posthog/schema.py b/posthog/schema.py index e8125987d6509..0251060daeea4 100644 --- a/posthog/schema.py +++ b/posthog/schema.py @@ -2,7 +2,7 @@ from __future__ import annotations -from enum import Enum, StrEnum +from enum import Enum from typing import Any, Literal, Optional, Union from pydantic import AwareDatetime, BaseModel, ConfigDict, Field, RootModel @@ -20,7 +20,7 @@ class MathGroupTypeIndex(float, Enum): NUMBER_4 = 4 -class AggregationAxisFormat(StrEnum): +class AggregationAxisFormat(str, Enum): NUMERIC = "numeric" DURATION = "duration" DURATION_MS = "duration_ms" @@ -28,7 +28,7 @@ class AggregationAxisFormat(StrEnum): PERCENTAGE_SCALED = "percentage_scaled" -class Kind(StrEnum): +class Kind(str, Enum): METHOD = "Method" FUNCTION = "Function" CONSTRUCTOR = "Constructor" @@ -87,7 +87,7 @@ class AutocompleteCompletionItem(BaseModel): ) -class BaseMathType(StrEnum): +class BaseMathType(str, Enum): TOTAL = "total" DAU = "dau" WEEKLY_ACTIVE = "weekly_active" @@ -95,14 +95,14 @@ class BaseMathType(StrEnum): UNIQUE_SESSION = "unique_session" -class BreakdownAttributionType(StrEnum): +class BreakdownAttributionType(str, Enum): FIRST_TOUCH = "first_touch" LAST_TOUCH = "last_touch" ALL_EVENTS = "all_events" STEP = "step" -class BreakdownType(StrEnum): +class BreakdownType(str, Enum): COHORT = "cohort" PERSON = "person" EVENT = "event" @@ -164,7 +164,7 @@ class ChartAxis(BaseModel): column: str -class ChartDisplayType(StrEnum): +class ChartDisplayType(str, Enum): ACTIONS_LINE_GRAPH = "ActionsLineGraph" ACTIONS_BAR = "ActionsBar" ACTIONS_AREA_GRAPH = "ActionsAreaGraph" @@ -205,7 +205,7 @@ class CompareFilter(BaseModel): compare_to: Optional[str] = None -class CountPerActorMathType(StrEnum): +class CountPerActorMathType(str, Enum): AVG_COUNT_PER_ACTOR = "avg_count_per_actor" MIN_COUNT_PER_ACTOR = "min_count_per_actor" MAX_COUNT_PER_ACTOR = "max_count_per_actor" @@ -255,14 +255,14 @@ class DatabaseSchemaSource(BaseModel): status: str -class Type(StrEnum): +class Type(str, Enum): POSTHOG = "posthog" DATA_WAREHOUSE = "data_warehouse" VIEW = "view" BATCH_EXPORT = "batch_export" -class DatabaseSerializedFieldType(StrEnum): +class DatabaseSerializedFieldType(str, Enum): INTEGER = "integer" FLOAT = "float" STRING = "string" @@ -301,13 +301,13 @@ class Day(RootModel[int]): root: int -class DurationType(StrEnum): +class DurationType(str, Enum): DURATION = "duration" ACTIVE_SECONDS = "active_seconds" INACTIVE_SECONDS = "inactive_seconds" -class Key(StrEnum): +class Key(str, Enum): TAG_NAME = "tag_name" TEXT = "text" HREF = "href" @@ -336,14 +336,14 @@ class EmptyPropertyFilter(BaseModel): ) -class EntityType(StrEnum): +class EntityType(str, Enum): ACTIONS = "actions" EVENTS = "events" DATA_WAREHOUSE = "data_warehouse" NEW_ENTITY = "new_entity" -class ErrorTrackingOrder(StrEnum): +class ErrorTrackingOrder(str, Enum): LAST_SEEN = "last_seen" FIRST_SEEN = "first_seen" UNIQUE_OCCURRENCES = "unique_occurrences" @@ -360,7 +360,7 @@ class EventDefinition(BaseModel): properties: dict[str, Any] -class CorrelationType(StrEnum): +class CorrelationType(str, Enum): SUCCESS = "success" FAILURE = "failure" @@ -418,12 +418,12 @@ class EventsQueryPersonColumn(BaseModel): uuid: str -class FilterLogicalOperator(StrEnum): +class FilterLogicalOperator(str, Enum): AND_ = "AND" OR_ = "OR" -class FunnelConversionWindowTimeUnit(StrEnum): +class FunnelConversionWindowTimeUnit(str, Enum): SECOND = "second" MINUTE = "minute" HOUR = "hour" @@ -440,7 +440,7 @@ class FunnelCorrelationResult(BaseModel): skewed: bool -class FunnelCorrelationResultsType(StrEnum): +class FunnelCorrelationResultsType(str, Enum): EVENTS = "events" PROPERTIES = "properties" EVENT_WITH_PROPERTIES = "event_with_properties" @@ -468,18 +468,18 @@ class FunnelExclusionSteps(BaseModel): funnelToStep: int -class FunnelLayout(StrEnum): +class FunnelLayout(str, Enum): HORIZONTAL = "horizontal" VERTICAL = "vertical" -class FunnelPathType(StrEnum): +class FunnelPathType(str, Enum): FUNNEL_PATH_BEFORE_STEP = "funnel_path_before_step" FUNNEL_PATH_BETWEEN_STEPS = "funnel_path_between_steps" FUNNEL_PATH_AFTER_STEP = "funnel_path_after_step" -class FunnelStepReference(StrEnum): +class FunnelStepReference(str, Enum): TOTAL = "total" PREVIOUS = "previous" @@ -492,7 +492,7 @@ class FunnelTimeToConvertResults(BaseModel): bins: list[list[int]] -class FunnelVizType(StrEnum): +class FunnelVizType(str, Enum): STEPS = "steps" TIME_TO_CONVERT = "time_to_convert" TRENDS = "trends" @@ -516,37 +516,37 @@ class HogQLNotice(BaseModel): start: Optional[int] = None -class BounceRatePageViewMode(StrEnum): +class BounceRatePageViewMode(str, Enum): COUNT_PAGEVIEWS = "count_pageviews" UNIQ_URLS = "uniq_urls" -class InCohortVia(StrEnum): +class InCohortVia(str, Enum): AUTO = "auto" LEFTJOIN = "leftjoin" SUBQUERY = "subquery" LEFTJOIN_CONJOINED = "leftjoin_conjoined" -class MaterializationMode(StrEnum): +class MaterializationMode(str, Enum): AUTO = "auto" LEGACY_NULL_AS_STRING = "legacy_null_as_string" LEGACY_NULL_AS_NULL = "legacy_null_as_null" DISABLED = "disabled" -class PersonsArgMaxVersion(StrEnum): +class PersonsArgMaxVersion(str, Enum): AUTO = "auto" V1 = "v1" V2 = "v2" -class PersonsJoinMode(StrEnum): +class PersonsJoinMode(str, Enum): INNER = "inner" LEFT = "left" -class PersonsOnEventsMode(StrEnum): +class PersonsOnEventsMode(str, Enum): DISABLED = "disabled" PERSON_ID_NO_OVERRIDE_PROPERTIES_ON_EVENTS = "person_id_no_override_properties_on_events" PERSON_ID_OVERRIDE_PROPERTIES_ON_EVENTS = "person_id_override_properties_on_events" @@ -579,7 +579,7 @@ class HogQueryResponse(BaseModel): stdout: Optional[str] = None -class Compare(StrEnum): +class Compare(str, Enum): CURRENT = "current" PREVIOUS = "previous" @@ -619,7 +619,7 @@ class InsightDateRange(BaseModel): ) -class InsightFilterProperty(StrEnum): +class InsightFilterProperty(str, Enum): TRENDS_FILTER = "trendsFilter" FUNNELS_FILTER = "funnelsFilter" RETENTION_FILTER = "retentionFilter" @@ -628,7 +628,7 @@ class InsightFilterProperty(StrEnum): LIFECYCLE_FILTER = "lifecycleFilter" -class InsightNodeKind(StrEnum): +class InsightNodeKind(str, Enum): TRENDS_QUERY = "TrendsQuery" FUNNELS_QUERY = "FunnelsQuery" RETENTION_QUERY = "RetentionQuery" @@ -637,7 +637,7 @@ class InsightNodeKind(StrEnum): LIFECYCLE_QUERY = "LifecycleQuery" -class InsightType(StrEnum): +class InsightType(str, Enum): TRENDS = "TRENDS" STICKINESS = "STICKINESS" LIFECYCLE = "LIFECYCLE" @@ -649,7 +649,7 @@ class InsightType(StrEnum): HOG = "HOG" -class IntervalType(StrEnum): +class IntervalType(str, Enum): MINUTE = "minute" HOUR = "hour" DAY = "day" @@ -657,14 +657,14 @@ class IntervalType(StrEnum): MONTH = "month" -class LifecycleToggle(StrEnum): +class LifecycleToggle(str, Enum): NEW = "new" RESURRECTING = "resurrecting" RETURNING = "returning" DORMANT = "dormant" -class NodeKind(StrEnum): +class NodeKind(str, Enum): EVENTS_NODE = "EventsNode" ACTIONS_NODE = "ActionsNode" DATA_WAREHOUSE_NODE = "DataWarehouseNode" @@ -709,7 +709,7 @@ class PathCleaningFilter(BaseModel): regex: Optional[str] = None -class PathType(StrEnum): +class PathType(str, Enum): FIELD_PAGEVIEW = "$pageview" FIELD_SCREEN = "$screen" CUSTOM_EVENT = "custom_event" @@ -758,7 +758,7 @@ class PathsFilterLegacy(BaseModel): step_limit: Optional[int] = None -class PropertyFilterType(StrEnum): +class PropertyFilterType(str, Enum): META = "meta" EVENT = "event" PERSON = "person" @@ -773,7 +773,7 @@ class PropertyFilterType(StrEnum): DATA_WAREHOUSE_PERSON_PROPERTY = "data_warehouse_person_property" -class PropertyMathType(StrEnum): +class PropertyMathType(str, Enum): AVG = "avg" SUM = "sum" MIN = "min" @@ -784,7 +784,7 @@ class PropertyMathType(StrEnum): P99 = "p99" -class PropertyOperator(StrEnum): +class PropertyOperator(str, Enum): EXACT = "exact" IS_NOT = "is_not" ICONTAINS = "icontains" @@ -900,7 +900,7 @@ class RecordingPropertyFilter(BaseModel): value: Optional[Union[str, float, list[Union[str, float]]]] = None -class Kind1(StrEnum): +class Kind1(str, Enum): ACTIONS_NODE = "ActionsNode" EVENTS_NODE = "EventsNode" @@ -918,19 +918,19 @@ class RetentionEntity(BaseModel): uuid: Optional[str] = None -class RetentionReference(StrEnum): +class RetentionReference(str, Enum): TOTAL = "total" PREVIOUS = "previous" -class RetentionPeriod(StrEnum): +class RetentionPeriod(str, Enum): HOUR = "Hour" DAY = "Day" WEEK = "Week" MONTH = "Month" -class RetentionType(StrEnum): +class RetentionType(str, Enum): RETENTION_RECURRING = "retention_recurring" RETENTION_FIRST_TIME = "retention_first_time" @@ -961,7 +961,7 @@ class SessionPropertyFilter(BaseModel): value: Optional[Union[str, float, list[Union[str, float]]]] = None -class StepOrderValue(StrEnum): +class StepOrderValue(str, Enum): STRICT = "strict" UNORDERED = "unordered" ORDERED = "ordered" @@ -1175,7 +1175,7 @@ class VizSpecificOptions(BaseModel): RETENTION: Optional[RETENTION] = None -class Kind2(StrEnum): +class Kind2(str, Enum): UNIT = "unit" DURATION_S = "duration_s" PERCENTAGE = "percentage" @@ -1222,7 +1222,7 @@ class WebOverviewQueryResponse(BaseModel): ) -class WebStatsBreakdown(StrEnum): +class WebStatsBreakdown(str, Enum): PAGE = "Page" INITIAL_PAGE = "InitialPage" EXIT_PAGE = "ExitPage" diff --git a/posthog/session_recordings/session_recording_api.py b/posthog/session_recordings/session_recording_api.py index e4ecc1ccfe37a..e0ac5d701a3eb 100644 --- a/posthog/session_recordings/session_recording_api.py +++ b/posthog/session_recordings/session_recording_api.py @@ -1,7 +1,7 @@ import os import time from contextlib import contextmanager -from datetime import datetime, timedelta, UTC +from datetime import datetime, timedelta, timezone from prometheus_client import Histogram import json from typing import Any, cast @@ -430,7 +430,7 @@ def _gather_session_recording_sources(self, recording: SessionRecording) -> Resp # Keys are like 1619712000-1619712060 blob_key = full_key.replace(blob_prefix.rstrip("/") + "/", "") blob_key_base = blob_key.split(".")[0] # Remove the extension if it exists - time_range = [datetime.fromtimestamp(int(x) / 1000, tz=UTC) for x in blob_key_base.split("-")] + time_range = [datetime.fromtimestamp(int(x) / 1000, tz=timezone.utc) for x in blob_key_base.split("-")] sources.append( { @@ -446,7 +446,7 @@ def _gather_session_recording_sources(self, recording: SessionRecording) -> Resp newest_timestamp = min(sources, key=lambda k: k["end_timestamp"])["end_timestamp"] if might_have_realtime: - might_have_realtime = oldest_timestamp + timedelta(hours=24) > datetime.now(UTC) + might_have_realtime = oldest_timestamp + timedelta(hours=24) > datetime.now(timezone.utc) if might_have_realtime: sources.append( { diff --git a/posthog/session_recordings/session_recording_helpers.py b/posthog/session_recordings/session_recording_helpers.py index c54117603c92d..8dfb1c0ad2396 100644 --- a/posthog/session_recordings/session_recording_helpers.py +++ b/posthog/session_recordings/session_recording_helpers.py @@ -2,7 +2,7 @@ import gzip import json from collections import defaultdict -from datetime import datetime, UTC +from datetime import datetime, timezone from typing import Any from collections.abc import Callable, Generator @@ -268,7 +268,7 @@ def is_active_event(event: SessionRecordingEventSummary) -> bool: def parse_snapshot_timestamp(timestamp: int): - return datetime.fromtimestamp(timestamp / 1000, UTC) + return datetime.fromtimestamp(timestamp / 1000, timezone.utc) def convert_to_timestamp(source: str) -> int: diff --git a/posthog/session_recordings/test/test_session_recordings.py b/posthog/session_recordings/test/test_session_recordings.py index bed84f6be517a..eee3c288c3be9 100644 --- a/posthog/session_recordings/test/test_session_recordings.py +++ b/posthog/session_recordings/test/test_session_recordings.py @@ -1,7 +1,7 @@ import json import time import uuid -from datetime import datetime, timedelta, UTC +from datetime import datetime, timedelta, timezone from unittest.mock import ANY, patch, MagicMock, call from urllib.parse import urlencode @@ -395,7 +395,7 @@ def test_get_single_session_recording_metadata(self): "distinct_id": "d1", "viewed": False, "recording_duration": 30, - "start_time": base_time.replace(tzinfo=UTC).strftime("%Y-%m-%dT%H:%M:%SZ"), + "start_time": base_time.replace(tzinfo=timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ"), "end_time": (base_time + relativedelta(seconds=30)).strftime("%Y-%m-%dT%H:%M:%SZ"), "click_count": 0, "keypress_count": 0, diff --git a/posthog/tasks/test/test_process_scheduled_changes.py b/posthog/tasks/test/test_process_scheduled_changes.py index 452c97a6e24e1..0e1fb9b9db3f8 100644 --- a/posthog/tasks/test/test_process_scheduled_changes.py +++ b/posthog/tasks/test/test_process_scheduled_changes.py @@ -1,4 +1,4 @@ -from datetime import datetime, timedelta, UTC +from datetime import datetime, timedelta, timezone from posthog.models import ScheduledChange, FeatureFlag from posthog.test.base import APIBaseTest, QueryMatchingTest, snapshot_postgres_queries from posthog.tasks.process_scheduled_changes import process_scheduled_changes @@ -21,7 +21,7 @@ def test_schedule_feature_flag_set_active(self) -> None: record_id=feature_flag.id, model_name="FeatureFlag", payload={"operation": "update_status", "value": True}, - scheduled_at=(datetime.now(UTC) - timedelta(seconds=30)).isoformat(), + scheduled_at=(datetime.now(timezone.utc) - timedelta(seconds=30)).isoformat(), ) process_scheduled_changes() @@ -55,7 +55,7 @@ def test_schedule_feature_flag_add_release_condition(self) -> None: record_id=feature_flag.id, model_name="FeatureFlag", payload=payload, - scheduled_at=(datetime.now(UTC) - timedelta(seconds=30)), + scheduled_at=(datetime.now(timezone.utc) - timedelta(seconds=30)), ) process_scheduled_changes() @@ -105,7 +105,7 @@ def test_schedule_feature_flag_add_release_condition_preserve_variants(self) -> record_id=feature_flag.id, model_name="FeatureFlag", payload=payload, - scheduled_at=(datetime.now(UTC) - timedelta(seconds=30)), + scheduled_at=(datetime.now(timezone.utc) - timedelta(seconds=30)), ) process_scheduled_changes() @@ -131,7 +131,7 @@ def test_schedule_feature_flag_invalid_payload(self) -> None: record_id=feature_flag.id, model_name="FeatureFlag", payload=payload, - scheduled_at=(datetime.now(UTC) - timedelta(seconds=30)), + scheduled_at=(datetime.now(timezone.utc) - timedelta(seconds=30)), ) process_scheduled_changes() @@ -169,11 +169,11 @@ def test_schedule_feature_flag_multiple_changes(self) -> None: "operation": "add_release_condition", "value": {"groups": [change_past_condition], "multivariate": None, "payloads": {}}, }, - scheduled_at=(datetime.now(UTC) - timedelta(hours=1)), + scheduled_at=(datetime.now(timezone.utc) - timedelta(hours=1)), ) # 2. Due in the past and already executed - change_past_executed_at = datetime.now(UTC) - timedelta(hours=5) + change_past_executed_at = datetime.now(timezone.utc) - timedelta(hours=5) change_past_executed = ScheduledChange.objects.create( team=self.team, record_id=feature_flag.id, @@ -197,7 +197,7 @@ def test_schedule_feature_flag_multiple_changes(self) -> None: "operation": "add_release_condition", "value": {"groups": [change_due_now_condition], "multivariate": None, "payloads": {}}, }, - scheduled_at=datetime.now(UTC), + scheduled_at=datetime.now(timezone.utc), ) # 4. Due in the future @@ -206,7 +206,7 @@ def test_schedule_feature_flag_multiple_changes(self) -> None: record_id=feature_flag.id, model_name="FeatureFlag", payload={"operation": "update_status", "value": False}, - scheduled_at=(datetime.now(UTC) + timedelta(hours=1)), + scheduled_at=(datetime.now(timezone.utc) + timedelta(hours=1)), ) process_scheduled_changes() diff --git a/posthog/temporal/batch_exports/backfill_batch_export.py b/posthog/temporal/batch_exports/backfill_batch_export.py index c7e6d53c47ad5..75df851caefdc 100644 --- a/posthog/temporal/batch_exports/backfill_batch_export.py +++ b/posthog/temporal/batch_exports/backfill_batch_export.py @@ -114,7 +114,7 @@ class BackfillScheduleInputs: def get_utcnow(): """Return the current time in UTC. This function is only required for mocking during tests, because mocking the global datetime breaks Temporal.""" - return dt.datetime.now(dt.UTC) + return dt.datetime.now(dt.timezone.utc) @temporalio.activity.defn diff --git a/posthog/temporal/batch_exports/squash_person_overrides.py b/posthog/temporal/batch_exports/squash_person_overrides.py index 69ecd87c0da96..eac97a38a6fb6 100644 --- a/posthog/temporal/batch_exports/squash_person_overrides.py +++ b/posthog/temporal/batch_exports/squash_person_overrides.py @@ -5,7 +5,7 @@ import json import typing from dataclasses import dataclass, field -from datetime import date, datetime, timedelta, timezone, UTC +from datetime import date, datetime, timedelta, timezone from temporalio import activity, workflow from temporalio.common import RetryPolicy @@ -14,7 +14,7 @@ from posthog.temporal.common.clickhouse import get_client from posthog.temporal.common.heartbeat import Heartbeater -EPOCH = datetime(1970, 1, 1, 0, 0, tzinfo=UTC) +EPOCH = datetime(1970, 1, 1, 0, 0, tzinfo=timezone.utc) CREATE_TABLE_PERSON_DISTINCT_ID_OVERRIDES_JOIN = """ @@ -174,7 +174,7 @@ } -def parse_clickhouse_timestamp(s: str, tzinfo: timezone = UTC) -> datetime: +def parse_clickhouse_timestamp(s: str, tzinfo: timezone = timezone.utc) -> datetime: """Parse a timestamp from ClickHouse.""" return datetime.strptime(s.strip(), "%Y-%m-%d %H:%M:%S.%f").replace(tzinfo=tzinfo) diff --git a/posthog/temporal/tests/batch_exports/test_backfill_batch_export.py b/posthog/temporal/tests/batch_exports/test_backfill_batch_export.py index e0eb79ab10cd0..f8823710c27fd 100644 --- a/posthog/temporal/tests/batch_exports/test_backfill_batch_export.py +++ b/posthog/temporal/tests/batch_exports/test_backfill_batch_export.py @@ -60,66 +60,66 @@ async def temporal_schedule(temporal_client, team): "start_at,end_at,step,expected", [ ( - dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.UTC), - dt.datetime(2023, 1, 2, 0, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 1, 2, 0, 0, 0, tzinfo=dt.timezone.utc), dt.timedelta(days=1), [ ( - dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.UTC), - dt.datetime(2023, 1, 2, 0, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 1, 2, 0, 0, 0, tzinfo=dt.timezone.utc), ) ], ), ( - dt.datetime(2023, 1, 1, 10, 0, 0, tzinfo=dt.UTC), - dt.datetime(2023, 1, 1, 12, 20, 0, tzinfo=dt.UTC), + dt.datetime(2023, 1, 1, 10, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 1, 1, 12, 20, 0, tzinfo=dt.timezone.utc), dt.timedelta(hours=1), [ ( - dt.datetime(2023, 1, 1, 10, 0, 0, tzinfo=dt.UTC), - dt.datetime(2023, 1, 1, 11, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 1, 1, 10, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 1, 1, 11, 0, 0, tzinfo=dt.timezone.utc), ), ( - dt.datetime(2023, 1, 1, 11, 0, 0, tzinfo=dt.UTC), - dt.datetime(2023, 1, 1, 12, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 1, 1, 11, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 1, 1, 12, 0, 0, tzinfo=dt.timezone.utc), ), ], ), ( - dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.UTC), - dt.datetime(2023, 1, 2, 0, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 1, 2, 0, 0, 0, tzinfo=dt.timezone.utc), dt.timedelta(hours=12), [ ( - dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.UTC), - dt.datetime(2023, 1, 1, 12, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 1, 1, 12, 0, 0, tzinfo=dt.timezone.utc), ), ( - dt.datetime(2023, 1, 1, 12, 0, 0, tzinfo=dt.UTC), - dt.datetime(2023, 1, 2, 0, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 1, 1, 12, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 1, 2, 0, 0, 0, tzinfo=dt.timezone.utc), ), ], ), ( - dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.UTC), - dt.datetime(2023, 1, 5, 0, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 1, 5, 0, 0, 0, tzinfo=dt.timezone.utc), dt.timedelta(days=1), [ ( - dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.UTC), - dt.datetime(2023, 1, 2, 0, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 1, 2, 0, 0, 0, tzinfo=dt.timezone.utc), ), ( - dt.datetime(2023, 1, 2, 0, 0, 0, tzinfo=dt.UTC), - dt.datetime(2023, 1, 3, 0, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 1, 2, 0, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 1, 3, 0, 0, 0, tzinfo=dt.timezone.utc), ), ( - dt.datetime(2023, 1, 3, 0, 0, 0, tzinfo=dt.UTC), - dt.datetime(2023, 1, 4, 0, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 1, 3, 0, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 1, 4, 0, 0, 0, tzinfo=dt.timezone.utc), ), ( - dt.datetime(2023, 1, 4, 0, 0, 0, tzinfo=dt.UTC), - dt.datetime(2023, 1, 5, 0, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 1, 4, 0, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 1, 5, 0, 0, 0, tzinfo=dt.timezone.utc), ), ], ), @@ -145,8 +145,8 @@ async def test_get_schedule_frequency(activity_environment, temporal_worker, tem @pytest.mark.django_db(transaction=True) async def test_backfill_schedule_activity(activity_environment, temporal_worker, temporal_client, temporal_schedule): """Test backfill_schedule activity schedules all backfill runs.""" - start_at = dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.UTC) - end_at = dt.datetime(2023, 1, 1, 0, 10, 0, tzinfo=dt.UTC) + start_at = dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc) + end_at = dt.datetime(2023, 1, 1, 0, 10, 0, tzinfo=dt.timezone.utc) desc = await temporal_schedule.describe() inputs = BackfillScheduleInputs( @@ -199,8 +199,8 @@ async def test_backfill_schedule_activity(activity_environment, temporal_worker, @pytest.mark.django_db(transaction=True) async def test_backfill_batch_export_workflow(temporal_worker, temporal_schedule, temporal_client, team): """Test BackfillBatchExportWorkflow executes all backfill runs and updates model.""" - start_at = dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.UTC) - end_at = dt.datetime(2023, 1, 1, 0, 10, 0, tzinfo=dt.UTC) + start_at = dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc) + end_at = dt.datetime(2023, 1, 1, 0, 10, 0, tzinfo=dt.timezone.utc) desc = await temporal_schedule.describe() @@ -275,9 +275,9 @@ async def test_backfill_batch_export_workflow_no_end_at( """Test BackfillBatchExportWorkflow executes all backfill runs and updates model.""" # Note the mocked time here, we should stop backfilling at 8 minutes and unpause the job. - mock_utcnow.return_value = dt.datetime(2023, 1, 1, 0, 8, 12, tzinfo=dt.UTC) + mock_utcnow.return_value = dt.datetime(2023, 1, 1, 0, 8, 12, tzinfo=dt.timezone.utc) - start_at = dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.UTC) + start_at = dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc) end_at = None desc = await temporal_schedule.describe() @@ -356,8 +356,8 @@ async def test_backfill_batch_export_workflow_fails_when_schedule_deleted( temporal_worker, temporal_schedule, temporal_client, team ): """Test BackfillBatchExportWorkflow fails when its underlying Temporal Schedule is deleted.""" - start_at = dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.UTC) - end_at = dt.datetime(2023, 1, 1, 0, 10, 0, tzinfo=dt.UTC) + start_at = dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc) + end_at = dt.datetime(2023, 1, 1, 0, 10, 0, tzinfo=dt.timezone.utc) desc = await temporal_schedule.describe() @@ -398,8 +398,8 @@ async def test_backfill_batch_export_workflow_fails_when_schedule_deleted_after_ In this test, in contrats to the previous one, we wait until we have started running some backfill runs before cancelling. """ - start_at = dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.UTC) - end_at = dt.datetime(2023, 1, 1, 0, 10, 0, tzinfo=dt.UTC) + start_at = dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc) + end_at = dt.datetime(2023, 1, 1, 0, 10, 0, tzinfo=dt.timezone.utc) desc = await temporal_schedule.describe() @@ -471,8 +471,8 @@ async def test_backfill_batch_export_workflow_is_cancelled_on_repeated_failures( temporal_worker, failing_s3_batch_export, temporal_client, ateam, clickhouse_client ): """Test BackfillBatchExportWorkflow will be cancelled on repeated failures.""" - start_at = dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.UTC) - end_at = dt.datetime(2023, 1, 1, 1, 0, 0, tzinfo=dt.UTC) + start_at = dt.datetime(2023, 1, 1, 0, 0, 0, tzinfo=dt.timezone.utc) + end_at = dt.datetime(2023, 1, 1, 1, 0, 0, tzinfo=dt.timezone.utc) # We need some data otherwise the S3 batch export will not fail as it short-circuits. for d in date_range(start_at, end_at, dt.timedelta(minutes=5)): diff --git a/posthog/temporal/tests/batch_exports/test_batch_exports.py b/posthog/temporal/tests/batch_exports/test_batch_exports.py index 90e660a06adbe..b146352c74958 100644 --- a/posthog/temporal/tests/batch_exports/test_batch_exports.py +++ b/posthog/temporal/tests/batch_exports/test_batch_exports.py @@ -40,7 +40,9 @@ def assert_records_match_events(records, events): key in ("timestamp", "_inserted_at", "created_at") and expected.get(key.removeprefix("_"), None) is not None ): - assert value == dt.datetime.fromisoformat(expected[key.removeprefix("_")]).replace(tzinfo=dt.UTC), msg + assert value == dt.datetime.fromisoformat(expected[key.removeprefix("_")]).replace( + tzinfo=dt.timezone.utc + ), msg elif isinstance(expected[key], dict): assert value == json.dumps(expected[key]), msg else: @@ -287,7 +289,7 @@ async def test_iter_records_with_single_field_and_alias(clickhouse_client, field if isinstance(result, dt.datetime): # Event generation function returns datetimes as strings. - expected_value = dt.datetime.fromisoformat(expected_value).replace(tzinfo=dt.UTC) + expected_value = dt.datetime.fromisoformat(expected_value).replace(tzinfo=dt.timezone.utc) assert result == expected_value @@ -386,16 +388,16 @@ async def test_iter_records_uses_extra_query_parameters(clickhouse_client): "hour", "2023-08-01T00:00:00+00:00", ( - dt.datetime(2023, 7, 31, 23, 0, 0, tzinfo=dt.UTC), - dt.datetime(2023, 8, 1, 0, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 7, 31, 23, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 8, 1, 0, 0, 0, tzinfo=dt.timezone.utc), ), ), ( "day", "2023-08-01T00:00:00+00:00", ( - dt.datetime(2023, 7, 31, 0, 0, 0, tzinfo=dt.UTC), - dt.datetime(2023, 8, 1, 0, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 7, 31, 0, 0, 0, tzinfo=dt.timezone.utc), + dt.datetime(2023, 8, 1, 0, 0, 0, tzinfo=dt.timezone.utc), ), ), ], diff --git a/posthog/temporal/tests/batch_exports/test_bigquery_batch_export_workflow.py b/posthog/temporal/tests/batch_exports/test_bigquery_batch_export_workflow.py index 9296ea2fdfc87..1aaa3cba863f4 100644 --- a/posthog/temporal/tests/batch_exports/test_bigquery_batch_export_workflow.py +++ b/posthog/temporal/tests/batch_exports/test_bigquery_batch_export_workflow.py @@ -48,7 +48,7 @@ pytestmark = [SKIP_IF_MISSING_GOOGLE_APPLICATION_CREDENTIALS, pytest.mark.asyncio, pytest.mark.django_db] -TEST_TIME = dt.datetime.now(dt.UTC) +TEST_TIME = dt.datetime.now(dt.timezone.utc) def assert_clickhouse_records_in_bigquery( @@ -133,7 +133,7 @@ def assert_clickhouse_records_in_bigquery( if k in json_columns and v is not None: expected_record[k] = json.loads(v) elif isinstance(v, dt.datetime): - expected_record[k] = v.replace(tzinfo=dt.UTC) + expected_record[k] = v.replace(tzinfo=dt.timezone.utc) else: expected_record[k] = v @@ -250,8 +250,8 @@ async def test_insert_into_bigquery_activity_inserts_data_into_bigquery_table( Once we have these events, we pass them to the assert_events_in_bigquery function to check that they appear in the expected BigQuery table. """ - data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.UTC) - data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.UTC) + data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.timezone.utc) + data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.timezone.utc) # Generate a random team id integer. There's still a chance of a collision, # but it's very small. @@ -311,7 +311,7 @@ async def test_insert_into_bigquery_activity_inserts_data_into_bigquery_table( with freeze_time(TEST_TIME) as frozen_time: await activity_environment.run(insert_into_bigquery_activity, insert_inputs) - ingested_timestamp = frozen_time().replace(tzinfo=dt.UTC) + ingested_timestamp = frozen_time().replace(tzinfo=dt.timezone.utc) assert_clickhouse_records_in_bigquery( bigquery_client=bigquery_client, @@ -455,7 +455,7 @@ async def test_bigquery_export_workflow( assert run.status == "Completed" assert run.records_completed == 100 - ingested_timestamp = frozen_time().replace(tzinfo=dt.UTC) + ingested_timestamp = frozen_time().replace(tzinfo=dt.timezone.utc) assert_clickhouse_records_in_bigquery( bigquery_client=bigquery_client, clickhouse_client=clickhouse_client, @@ -691,7 +691,7 @@ async def never_finish_activity(_: BigQueryInsertInputs) -> str: ([{"test": 6.0}], [bigquery.SchemaField("test", "FLOAT64")]), ([{"test": True}], [bigquery.SchemaField("test", "BOOL")]), ([{"test": dt.datetime.now()}], [bigquery.SchemaField("test", "TIMESTAMP")]), - ([{"test": dt.datetime.now(tz=dt.UTC)}], [bigquery.SchemaField("test", "TIMESTAMP")]), + ([{"test": dt.datetime.now(tz=dt.timezone.utc)}], [bigquery.SchemaField("test", "TIMESTAMP")]), ( [ { @@ -701,7 +701,7 @@ async def never_finish_activity(_: BigQueryInsertInputs) -> str: "test_float": 6.0, "test_bool": False, "test_timestamp": dt.datetime.now(), - "test_timestamptz": dt.datetime.now(tz=dt.UTC), + "test_timestamptz": dt.datetime.now(tz=dt.timezone.utc), } ], [ diff --git a/posthog/temporal/tests/batch_exports/test_http_batch_export_workflow.py b/posthog/temporal/tests/batch_exports/test_http_batch_export_workflow.py index 5821a8a98a90a..4dfb8563ff943 100644 --- a/posthog/temporal/tests/batch_exports/test_http_batch_export_workflow.py +++ b/posthog/temporal/tests/batch_exports/test_http_batch_export_workflow.py @@ -99,7 +99,7 @@ async def assert_clickhouse_records_in_mock_server( if k == "properties": expected_record[k] = json.loads(v) if v else {} elif isinstance(v, dt.datetime): - expected_record[k] = v.replace(tzinfo=dt.UTC).isoformat() + expected_record[k] = v.replace(tzinfo=dt.timezone.utc).isoformat() else: expected_record[k] = v @@ -134,8 +134,8 @@ async def test_insert_into_http_activity_inserts_data_into_http_endpoint( * Are not duplicates of other events that are in the same batch. * Do not have an event name contained in the batch export's exclude_events. """ - data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.UTC) - data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.UTC) + data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.timezone.utc) + data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.timezone.utc) # Generate a random team id integer. There's still a chance of a collision, # but it's very small. @@ -211,8 +211,8 @@ async def test_insert_into_http_activity_throws_on_bad_http_status( clickhouse_client, activity_environment, http_config, exclude_events ): """Test that the insert_into_http_activity function throws on status >= 400""" - data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.UTC) - data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.UTC) + data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.timezone.utc) + data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.timezone.utc) # Generate a random team id integer. There's still a chance of a collision, # but it's very small. diff --git a/posthog/temporal/tests/batch_exports/test_logger.py b/posthog/temporal/tests/batch_exports/test_logger.py index 3ee605882e349..4ee3ca9a014aa 100644 --- a/posthog/temporal/tests/batch_exports/test_logger.py +++ b/posthog/temporal/tests/batch_exports/test_logger.py @@ -211,13 +211,13 @@ def activity_environment(request): "activity_environment", [ ActivityInfo( - workflow_id=f"{BATCH_EXPORT_ID}-{dt.datetime.now(dt.UTC)}", + workflow_id=f"{BATCH_EXPORT_ID}-{dt.datetime.now(dt.timezone.utc)}", workflow_type="s3-export", workflow_run_id=str(uuid.uuid4()), attempt=random.randint(1, 10000), ), ActivityInfo( - workflow_id=f"{BATCH_EXPORT_ID}-Backfill-{dt.datetime.now(dt.UTC)}", + workflow_id=f"{BATCH_EXPORT_ID}-Backfill-{dt.datetime.now(dt.timezone.utc)}", workflow_type="backfill-batch-export", workflow_run_id=str(uuid.uuid4()), attempt=random.randint(1, 10000), @@ -262,13 +262,13 @@ async def log_activity(): "activity_environment", [ ActivityInfo( - workflow_id=f"{BATCH_EXPORT_ID}-{dt.datetime.now(dt.UTC)}", + workflow_id=f"{BATCH_EXPORT_ID}-{dt.datetime.now(dt.timezone.utc)}", workflow_type="s3-export", workflow_run_id=str(uuid.uuid4()), attempt=random.randint(1, 10000), ), ActivityInfo( - workflow_id=f"{BATCH_EXPORT_ID}-Backfill-{dt.datetime.now(dt.UTC)}", + workflow_id=f"{BATCH_EXPORT_ID}-Backfill-{dt.datetime.now(dt.timezone.utc)}", workflow_type="backfill-batch-export", workflow_run_id=str(uuid.uuid4()), attempt=random.randint(1, 10000), @@ -324,13 +324,13 @@ def log_entries_table(): "activity_environment", [ ActivityInfo( - workflow_id=f"{BATCH_EXPORT_ID}-{dt.datetime.now(dt.UTC)}", + workflow_id=f"{BATCH_EXPORT_ID}-{dt.datetime.now(dt.timezone.utc)}", workflow_type="s3-export", workflow_run_id=str(uuid.uuid4()), attempt=random.randint(1, 10000), ), ActivityInfo( - workflow_id=f"{BATCH_EXPORT_ID}-Backfill-{dt.datetime.now(dt.UTC)}", + workflow_id=f"{BATCH_EXPORT_ID}-Backfill-{dt.datetime.now(dt.timezone.utc)}", workflow_type="backfill-batch-export", workflow_run_id=str(uuid.uuid4()), attempt=random.randint(1, 10000), diff --git a/posthog/temporal/tests/batch_exports/test_postgres_batch_export_workflow.py b/posthog/temporal/tests/batch_exports/test_postgres_batch_export_workflow.py index 54f638a68d688..3d4722fe6db7d 100644 --- a/posthog/temporal/tests/batch_exports/test_postgres_batch_export_workflow.py +++ b/posthog/temporal/tests/batch_exports/test_postgres_batch_export_workflow.py @@ -117,7 +117,7 @@ async def assert_clickhouse_records_in_postgres( if k in {"properties", "set", "set_once", "person_properties"} and v is not None: expected_record[k] = json.loads(v) elif isinstance(v, dt.datetime): - expected_record[k] = v.replace(tzinfo=dt.UTC) + expected_record[k] = v.replace(tzinfo=dt.timezone.utc) else: expected_record[k] = v @@ -201,8 +201,8 @@ async def test_insert_into_postgres_activity_inserts_data_into_postgres_table( development postgres instance for testing. But we setup and manage our own database to avoid conflicting with PostHog itself. """ - data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.UTC) - data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.UTC) + data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.timezone.utc) + data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.timezone.utc) # Generate a random team id integer. There's still a chance of a collision, # but it's very small. diff --git a/posthog/temporal/tests/batch_exports/test_redshift_batch_export_workflow.py b/posthog/temporal/tests/batch_exports/test_redshift_batch_export_workflow.py index 40071bd153b53..db8257a7ee583 100644 --- a/posthog/temporal/tests/batch_exports/test_redshift_batch_export_workflow.py +++ b/posthog/temporal/tests/batch_exports/test_redshift_batch_export_workflow.py @@ -130,7 +130,7 @@ async def assert_clickhouse_records_in_redshfit( remove_escaped_whitespace_recursive(json.loads(v)), ensure_ascii=False ) elif isinstance(v, dt.datetime): - expected_record[k] = v.replace(tzinfo=dt.UTC) # type: ignore + expected_record[k] = v.replace(tzinfo=dt.timezone.utc) # type: ignore else: expected_record[k] = v @@ -242,8 +242,8 @@ async def test_insert_into_redshift_activity_inserts_data_into_redshift_table( Once we have these events, we pass them to the assert_events_in_redshift function to check that they appear in the expected Redshift table. """ - data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.UTC) - data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.UTC) + data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.timezone.utc) + data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.timezone.utc) # Generate a random team id integer. There's still a chance of a collision, # but it's very small. diff --git a/posthog/temporal/tests/batch_exports/test_run_updates.py b/posthog/temporal/tests/batch_exports/test_run_updates.py index 649585f52836b..1e50e13325b82 100644 --- a/posthog/temporal/tests/batch_exports/test_run_updates.py +++ b/posthog/temporal/tests/batch_exports/test_run_updates.py @@ -85,8 +85,8 @@ async def test_start_batch_export_run(activity_environment, team, batch_export): We check if a 'BatchExportRun' is created after the activity runs. """ - start = dt.datetime(2023, 4, 24, tzinfo=dt.UTC) - end = dt.datetime(2023, 4, 25, tzinfo=dt.UTC) + start = dt.datetime(2023, 4, 24, tzinfo=dt.timezone.utc) + end = dt.datetime(2023, 4, 25, tzinfo=dt.timezone.utc) inputs = StartBatchExportRunInputs( team_id=team.id, @@ -110,8 +110,8 @@ async def test_start_batch_export_run(activity_environment, team, batch_export): @pytest.mark.asyncio async def test_finish_batch_export_run(activity_environment, team, batch_export): """Test the export_run_status activity.""" - start = dt.datetime(2023, 4, 24, tzinfo=dt.UTC) - end = dt.datetime(2023, 4, 25, tzinfo=dt.UTC) + start = dt.datetime(2023, 4, 24, tzinfo=dt.timezone.utc) + end = dt.datetime(2023, 4, 25, tzinfo=dt.timezone.utc) inputs = StartBatchExportRunInputs( team_id=team.id, @@ -145,8 +145,8 @@ async def test_finish_batch_export_run(activity_environment, team, batch_export) @pytest.mark.asyncio async def test_finish_batch_export_run_pauses_if_reaching_failure_threshold(activity_environment, team, batch_export): """Test if 'finish_batch_export_run' will pause a batch export upon reaching failure_threshold.""" - start = dt.datetime(2023, 4, 24, tzinfo=dt.UTC) - end = dt.datetime(2023, 4, 25, tzinfo=dt.UTC) + start = dt.datetime(2023, 4, 24, tzinfo=dt.timezone.utc) + end = dt.datetime(2023, 4, 25, tzinfo=dt.timezone.utc) inputs = StartBatchExportRunInputs( team_id=team.id, @@ -183,8 +183,8 @@ async def test_finish_batch_export_run_pauses_if_reaching_failure_threshold(acti @pytest.mark.asyncio async def test_finish_batch_export_run_never_pauses_with_small_check_window(activity_environment, team, batch_export): """Test if 'finish_batch_export_run' will never pause a batch export with a small check window.""" - start = dt.datetime(2023, 4, 24, tzinfo=dt.UTC) - end = dt.datetime(2023, 4, 25, tzinfo=dt.UTC) + start = dt.datetime(2023, 4, 24, tzinfo=dt.timezone.utc) + end = dt.datetime(2023, 4, 25, tzinfo=dt.timezone.utc) inputs = StartBatchExportRunInputs( team_id=team.id, diff --git a/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py b/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py index c4847e45a752a..9467b294b7107 100644 --- a/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py +++ b/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py @@ -296,8 +296,8 @@ async def test_insert_into_s3_activity_puts_data_into_s3( Once we have these events, we pass them to the assert_clickhouse_records_in_s3 function to check that they appear in the expected S3 bucket and key. """ - data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.UTC) - data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.UTC) + data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.timezone.utc) + data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.timezone.utc) # Generate a random team id integer. There's still a chance of a collision, # but it's very small. diff --git a/posthog/temporal/tests/batch_exports/test_snowflake_batch_export_workflow.py b/posthog/temporal/tests/batch_exports/test_snowflake_batch_export_workflow.py index 1462fd03b0b35..41863344d84c7 100644 --- a/posthog/temporal/tests/batch_exports/test_snowflake_batch_export_workflow.py +++ b/posthog/temporal/tests/batch_exports/test_snowflake_batch_export_workflow.py @@ -981,8 +981,8 @@ async def test_insert_into_snowflake_activity_inserts_data_into_snowflake_table( that they appear in the expected Snowflake table. This function runs against a real Snowflake instance, so the environment should be populated with the necessary credentials. """ - data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.UTC) - data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.UTC) + data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.timezone.utc) + data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.timezone.utc) team_id = random.randint(1, 1000000) await generate_test_events_in_clickhouse( diff --git a/posthog/temporal/tests/persons_on_events_squash/test_squash_person_overrides_workflow.py b/posthog/temporal/tests/persons_on_events_squash/test_squash_person_overrides_workflow.py index 71a5bff99c508..19bf42bad8f5f 100644 --- a/posthog/temporal/tests/persons_on_events_squash/test_squash_person_overrides_workflow.py +++ b/posthog/temporal/tests/persons_on_events_squash/test_squash_person_overrides_workflow.py @@ -1,7 +1,7 @@ import operator import random from collections import defaultdict -from datetime import datetime, UTC +from datetime import datetime, timezone from typing import NamedTuple, TypedDict from uuid import UUID, uuid4 @@ -862,7 +862,7 @@ async def test_delete_person_overrides_mutation_within_grace_period( activity_environment, events_to_override, person_overrides_data, clickhouse_client ): """Test we do not delete person overrides if they are within the grace period.""" - now = datetime.now(tz=UTC) + now = datetime.now(tz=timezone.utc) override_timestamp = int(now.timestamp()) team_id, person_override = next(iter(person_overrides_data.items())) distinct_id, _ = next(iter(person_override)) @@ -914,7 +914,7 @@ async def test_delete_person_overrides_mutation_within_grace_period( assert int(row[0]) == not_deleted_person["team_id"] assert row[1] == not_deleted_person["distinct_id"] assert UUID(row[2]) == UUID(not_deleted_person["person_id"]) - _timestamp = datetime.strptime(row[3], "%Y-%m-%d %H:%M:%S").replace(tzinfo=UTC) + _timestamp = datetime.strptime(row[3], "%Y-%m-%d %H:%M:%S").replace(tzinfo=timezone.utc) # _timestamp is up to second precision assert _timestamp == now.replace(microsecond=0) diff --git a/posthog/temporal/tests/test_clickhouse.py b/posthog/temporal/tests/test_clickhouse.py index 79003f718e682..0d02dcd5bf790 100644 --- a/posthog/temporal/tests/test_clickhouse.py +++ b/posthog/temporal/tests/test_clickhouse.py @@ -23,12 +23,12 @@ (("; DROP TABLE events --",), b"('; DROP TABLE events --')"), (("'a'); DROP TABLE events --",), b"('\\'a\\'); DROP TABLE events --')"), ( - dt.datetime(2023, 7, 14, 0, 0, 0, tzinfo=dt.UTC), + dt.datetime(2023, 7, 14, 0, 0, 0, tzinfo=dt.timezone.utc), b"toDateTime('2023-07-14 00:00:00', 'UTC')", ), (dt.datetime(2023, 7, 14, 0, 0, 0), b"toDateTime('2023-07-14 00:00:00')"), ( - dt.datetime(2023, 7, 14, 0, 0, 0, 5555, tzinfo=dt.UTC), + dt.datetime(2023, 7, 14, 0, 0, 0, 5555, tzinfo=dt.timezone.utc), b"toDateTime64('2023-07-14 00:00:00.005555', 6, 'UTC')", ), ], diff --git a/posthog/temporal/tests/utils/datetimes.py b/posthog/temporal/tests/utils/datetimes.py index d5a3f747bf874..c168e885a3e8d 100644 --- a/posthog/temporal/tests/utils/datetimes.py +++ b/posthog/temporal/tests/utils/datetimes.py @@ -16,4 +16,4 @@ def to_isoformat(d: str | None) -> str | None: """Parse a string and return it as default isoformatted.""" if d is None: return None - return dt.datetime.fromisoformat(d).replace(tzinfo=dt.UTC).isoformat() + return dt.datetime.fromisoformat(d).replace(tzinfo=dt.timezone.utc).isoformat() diff --git a/posthog/test/test_datetime.py b/posthog/test/test_datetime.py index 9365cffb085a8..2b8e6b087e5fb 100644 --- a/posthog/test/test_datetime.py +++ b/posthog/test/test_datetime.py @@ -1,4 +1,4 @@ -from datetime import datetime, UTC +from datetime import datetime, timezone from posthog.datetime import ( start_of_hour, @@ -23,7 +23,7 @@ def test_start_of_day(): def test_end_of_day(): assert end_of_day(datetime.fromisoformat("2023-02-08T12:05:23+00:00")) == datetime( - 2023, 2, 8, 23, 59, 59, 999999, tzinfo=UTC + 2023, 2, 8, 23, 59, 59, 999999, tzinfo=timezone.utc ) diff --git a/posthog/utils.py b/posthog/utils.py index a8faf24b19e5c..18f271c4a5d56 100644 --- a/posthog/utils.py +++ b/posthog/utils.py @@ -1289,12 +1289,12 @@ async def wait_for_parallel_celery_group(task: Any, expires: Optional[datetime.d default_expires = datetime.timedelta(minutes=5) if not expires: - expires = datetime.datetime.now(tz=datetime.UTC) + default_expires + expires = datetime.datetime.now(tz=datetime.timezone.utc) + default_expires sleep_generator = sleep_time_generator() while not task.ready(): - if datetime.datetime.now(tz=datetime.UTC) > expires: + if datetime.datetime.now(tz=datetime.timezone.utc) > expires: child_states = [] child: AsyncResult children = task.children or [] diff --git a/posthog/warehouse/external_data_source/workspace.py b/posthog/warehouse/external_data_source/workspace.py index f7e80761eb1d3..0a9f9436bab47 100644 --- a/posthog/warehouse/external_data_source/workspace.py +++ b/posthog/warehouse/external_data_source/workspace.py @@ -27,7 +27,7 @@ def get_or_create_workspace(team_id: int): workspace_id = create_workspace(team_id) team.external_data_workspace_id = workspace_id # start tracking from now - team.external_data_workspace_last_synced_at = datetime.datetime.now(datetime.UTC) + team.external_data_workspace_last_synced_at = datetime.datetime.now(datetime.timezone.utc) team.save() return team.external_data_workspace_id diff --git a/production.Dockerfile b/production.Dockerfile index 30fa7146a77e9..1e3eb2d11551f 100644 --- a/production.Dockerfile +++ b/production.Dockerfile @@ -83,7 +83,7 @@ RUN corepack enable && \ # # --------------------------------------------------------- # -FROM python:3.11.9-slim-bookworm AS posthog-build +FROM python:3.10.10-slim-bullseye AS posthog-build WORKDIR /code SHELL ["/bin/bash", "-e", "-o", "pipefail", "-c"] @@ -139,7 +139,104 @@ RUN apt-get update && \ # # --------------------------------------------------------- # -FROM unit:python3.11 +# Build a version of the unit docker image for python3.10 +# We can remove this step once we are on python3.11 +FROM unit:python3.11 as unit +FROM python:3.10-bullseye as unit-131-python-310 + +# copied from https://github.com/nginx/unit/blob/master/pkg/docker/Dockerfile.python3.11 +LABEL org.opencontainers.image.title="Unit (python3.10)" +LABEL org.opencontainers.image.description="Official build of Unit for Docker." +LABEL org.opencontainers.image.url="https://unit.nginx.org" +LABEL org.opencontainers.image.source="https://github.com/nginx/unit" +LABEL org.opencontainers.image.documentation="https://unit.nginx.org/installation/#docker-images" +LABEL org.opencontainers.image.vendor="NGINX Docker Maintainers " +LABEL org.opencontainers.image.version="1.31.1" + +RUN set -ex \ + && savedAptMark="$(apt-mark showmanual)" \ + && apt-get update \ + && apt-get install --no-install-recommends --no-install-suggests -y ca-certificates mercurial build-essential libssl-dev libpcre2-dev curl pkg-config \ + && mkdir -p /usr/lib/unit/modules /usr/lib/unit/debug-modules \ + && mkdir -p /usr/src/unit \ + && cd /usr/src/unit \ + && hg clone -u 1.31.1-1 https://hg.nginx.org/unit \ + && cd unit \ + && NCPU="$(getconf _NPROCESSORS_ONLN)" \ + && DEB_HOST_MULTIARCH="$(dpkg-architecture -q DEB_HOST_MULTIARCH)" \ + && CC_OPT="$(DEB_BUILD_MAINT_OPTIONS="hardening=+all,-pie" DEB_CFLAGS_MAINT_APPEND="-Wp,-D_FORTIFY_SOURCE=2 -fPIC" dpkg-buildflags --get CFLAGS)" \ + && LD_OPT="$(DEB_BUILD_MAINT_OPTIONS="hardening=+all,-pie" DEB_LDFLAGS_MAINT_APPEND="-Wl,--as-needed -pie" dpkg-buildflags --get LDFLAGS)" \ + && CONFIGURE_ARGS_MODULES="--prefix=/usr \ + --statedir=/var/lib/unit \ + --control=unix:/var/run/control.unit.sock \ + --runstatedir=/var/run \ + --pid=/var/run/unit.pid \ + --logdir=/var/log \ + --log=/var/log/unit.log \ + --tmpdir=/var/tmp \ + --user=unit \ + --group=unit \ + --openssl \ + --libdir=/usr/lib/$DEB_HOST_MULTIARCH" \ + && CONFIGURE_ARGS="$CONFIGURE_ARGS_MODULES \ + --njs" \ + && make -j $NCPU -C pkg/contrib .njs \ + && export PKG_CONFIG_PATH=$(pwd)/pkg/contrib/njs/build \ + && ./configure $CONFIGURE_ARGS --cc-opt="$CC_OPT" --ld-opt="$LD_OPT" --modulesdir=/usr/lib/unit/debug-modules --debug \ + && make -j $NCPU unitd \ + && install -pm755 build/sbin/unitd /usr/sbin/unitd-debug \ + && make clean \ + && ./configure $CONFIGURE_ARGS --cc-opt="$CC_OPT" --ld-opt="$LD_OPT" --modulesdir=/usr/lib/unit/modules \ + && make -j $NCPU unitd \ + && install -pm755 build/sbin/unitd /usr/sbin/unitd \ + && make clean \ + && /bin/true \ + && ./configure $CONFIGURE_ARGS_MODULES --cc-opt="$CC_OPT" --modulesdir=/usr/lib/unit/debug-modules --debug \ + && ./configure python --config=/usr/local/bin/python3-config \ + && make -j $NCPU python3-install \ + && make clean \ + && ./configure $CONFIGURE_ARGS_MODULES --cc-opt="$CC_OPT" --modulesdir=/usr/lib/unit/modules \ + && ./configure python --config=/usr/local/bin/python3-config \ + && make -j $NCPU python3-install \ + && cd \ + && rm -rf /usr/src/unit \ + && for f in /usr/sbin/unitd /usr/lib/unit/modules/*.unit.so; do \ + ldd $f | awk '/=>/{print $(NF-1)}' | while read n; do dpkg-query -S $n; done | sed 's/^\([^:]\+\):.*$/\1/' | sort | uniq >> /requirements.apt; \ + done \ + && apt-mark showmanual | xargs apt-mark auto > /dev/null \ + && { [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; } \ + && /bin/true \ + && mkdir -p /var/lib/unit/ \ + && mkdir -p /docker-entrypoint.d/ \ + && groupadd --gid 998 unit \ + && useradd \ + --uid 998 \ + --gid unit \ + --no-create-home \ + --home /nonexistent \ + --comment "unit user" \ + --shell /bin/false \ + unit \ + && apt-get update \ + && apt-get --no-install-recommends --no-install-suggests -y install curl $(cat /requirements.apt) \ + && apt-get purge -y --auto-remove build-essential \ + && rm -rf /var/lib/apt/lists/* \ + && rm -f /requirements.apt \ + && ln -sf /dev/stdout /var/log/unit.log + +COPY --from=unit /usr/local/bin/docker-entrypoint.sh /usr/local/bin/ +COPY --from=unit /usr/share/unit/welcome/welcome.* /usr/share/unit/welcome/ + +STOPSIGNAL SIGTERM + +ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] +EXPOSE 80 +CMD ["unitd", "--no-daemon", "--control", "unix:/var/run/control.unit.sock"] + +# +# --------------------------------------------------------- +# +FROM unit-131-python-310 WORKDIR /code SHELL ["/bin/bash", "-e", "-o", "pipefail", "-c"] ENV PYTHONUNBUFFERED 1 @@ -168,7 +265,7 @@ RUN apt-get install -y --no-install-recommends \ # Install and use a non-root user. RUN groupadd -g 1000 posthog && \ - useradd -r -g posthog posthog && \ + useradd -u 999 -r -g posthog posthog && \ chown posthog:posthog /code USER posthog diff --git a/pyproject.toml b/pyproject.toml index 57d7560e99d0a..cb19ccadb8178 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,9 +1,9 @@ [project] -requires-python = ">=3.11" +requires-python = ">=3.10" [tool.black] line-length = 120 -target-version = ['py311'] +target-version = ['py310'] [tool.isort] profile = "black" diff --git a/requirements-dev.in b/requirements-dev.in index 61efe698ecf3b..35ad7044d22dd 100644 --- a/requirements-dev.in +++ b/requirements-dev.in @@ -11,7 +11,7 @@ -c requirements.txt -ruff~=0.4.10 +ruff~=0.4.3 mypy~=1.10.0 mypy-baseline~=0.7.0 mypy-extensions==1.0.0 diff --git a/requirements-dev.txt b/requirements-dev.txt index c534a931f0c92..dbf468cd45bb2 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -288,7 +288,8 @@ ruamel-yaml==0.18.6 # via prance ruamel-yaml-clib==0.2.8 # via ruamel-yaml -ruff==0.4.10 +ruff==0.4.3 + # via -r requirements-dev.in six==1.16.0 # via # -c requirements.txt diff --git a/requirements.in b/requirements.in index 77c1d947c7341..c69879077458d 100644 --- a/requirements.in +++ b/requirements.in @@ -29,7 +29,7 @@ django-redis==5.2.0 django-statsd==2.5.2 django-structlog==2.1.3 django-revproxy==0.12.0 -djangorestframework==3.15.1 +djangorestframework==3.14.0 djangorestframework-csv==2.1.1 djangorestframework-dataclasses==1.2.0 django-fernet-encrypted-fields==0.1.3 @@ -58,9 +58,9 @@ psycopg2-binary==2.9.7 psycopg[binary]==3.1.18 pyarrow==15.0.0 pydantic==2.5.3 -pyjwt==2.7.0 +pyjwt==2.4.0 python-dateutil>=2.8.2 -python3-saml==1.16.0 +python3-saml==1.12.0 pytz==2023.3 redis==4.5.4 retry==0.9.2 @@ -74,8 +74,8 @@ scikit-learn==1.4.0 slack_sdk==3.17.1 snowflake-connector-python==3.6.0 snowflake-sqlalchemy==1.5.3 -social-auth-app-django==5.4.1 -social-auth-core==4.5.0 +social-auth-app-django==5.0.0 +social-auth-core==4.3.0 sqlalchemy==1.4.52 sshtunnel==0.4.0 statshog==1.0.6 @@ -96,5 +96,5 @@ nh3==0.2.14 hogql-parser==1.0.21 zxcvbn==4.4.28 zstd==1.5.5.1 -xmlsec==1.3.14 -lxml==5.2.2 +xmlsec==1.3.13 +lxml==4.9.4 diff --git a/requirements.txt b/requirements.txt index 9aaa81c170ee7..fff1929966e12 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,12 +1,8 @@ -# -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile requirements.in -# +# This file was autogenerated by uv via the following command: +# uv pip compile requirements.in -o requirements.txt aioboto3==12.0.0 # via -r requirements.in -aiobotocore[boto3]==2.7.0 +aiobotocore==2.7.0 # via # aioboto3 # s3fs @@ -160,7 +156,6 @@ django==4.2.11 # djangorestframework-dataclasses # drf-spectacular # sentry-sdk - # social-auth-app-django django-axes==5.9.0 # via -r requirements.in django-cors-headers==3.5.0 @@ -199,7 +194,7 @@ django-structlog==2.1.3 # via -r requirements.in django-two-factor-auth==1.14.0 # via -r requirements.in -djangorestframework==3.15.1 +djangorestframework==3.14.0 # via # -r requirements.in # djangorestframework-csv @@ -243,7 +238,7 @@ gitpython==3.1.40 # via dlt giturlparse==0.12.0 # via dlt -google-api-core[grpc]==2.11.1 +google-api-core==2.11.1 # via # google-cloud-bigquery # google-cloud-core @@ -263,6 +258,8 @@ googleapis-common-protos==1.60.0 # via # google-api-core # grpcio-status +greenlet==3.0.3 + # via sqlalchemy grpcio==1.57.0 # via # google-api-core @@ -323,7 +320,7 @@ kombu==5.3.2 # via # -r requirements.in # celery -lxml==5.2.2 +lxml==4.9.4 # via # -r requirements.in # python3-saml @@ -415,7 +412,7 @@ protobuf==4.22.1 # grpcio-status # proto-plus # temporalio -psycopg[binary]==3.1.18 +psycopg==3.1.18 # via -r requirements.in psycopg-binary==3.1.18 # via psycopg @@ -439,7 +436,7 @@ pydantic==2.5.3 # openai pydantic-core==2.14.6 # via pydantic -pyjwt==2.7.0 +pyjwt==2.4.0 # via # -r requirements.in # snowflake-connector-python @@ -470,12 +467,13 @@ python-statsd==2.1.0 # via django-statsd python3-openid==3.1.0 # via social-auth-core -python3-saml==1.16.0 +python3-saml==1.12.0 # via -r requirements.in pytz==2023.3 # via # -r requirements.in # clickhouse-driver + # djangorestframework # dlt # infi-clickhouse-orm # pandas @@ -541,8 +539,13 @@ semantic-version==2.8.5 # via -r requirements.in semver==3.0.2 # via dlt -sentry-sdk[celery,clickhouse-driver,django,openai]==1.44.1 +sentry-sdk==1.44.1 # via -r requirements.in +setuptools==70.1.0 + # via + # dlt + # gunicorn + # infi-clickhouse-orm simplejson==3.19.2 # via dlt six==1.16.0 @@ -569,9 +572,9 @@ snowflake-connector-python==3.6.0 # snowflake-sqlalchemy snowflake-sqlalchemy==1.5.3 # via -r requirements.in -social-auth-app-django==5.4.1 +social-auth-app-django==5.0.0 # via -r requirements.in -social-auth-core==4.5.0 +social-auth-core==4.3.0 # via # -r requirements.in # social-auth-app-django @@ -651,7 +654,7 @@ unicodecsv==0.14.1 # via djangorestframework-csv uritemplate==4.1.1 # via drf-spectacular -urllib3[secure,socks]==1.26.18 +urllib3==1.26.18 # via # botocore # django-revproxy @@ -679,7 +682,7 @@ wrapt==1.15.0 # via aiobotocore wsproto==1.1.0 # via trio-websocket -xmlsec==1.3.14 +xmlsec==1.3.13 # via # -r requirements.in # python3-saml @@ -689,6 +692,3 @@ zstd==1.5.5.1 # via -r requirements.in zxcvbn==4.4.28 # via -r requirements.in - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/unit.json.tpl b/unit.json.tpl index 42f23a75a0374..ef1ba4b3ffec6 100644 --- a/unit.json.tpl +++ b/unit.json.tpl @@ -39,7 +39,7 @@ }, "applications": { "posthog": { - "type": "python 3.11", + "type": "python 3.10", "processes": $NGINX_UNIT_APP_PROCESSES, "working_directory": "/code", "path": ".", @@ -51,7 +51,7 @@ } }, "metrics": { - "type": "python 3.11", + "type": "python 3.10", "processes": 1, "working_directory": "/code/bin", "path": ".", From f49e0af963c420041547a8c9023657ef3b62b449 Mon Sep 17 00:00:00 2001 From: Dylan Martin Date: Mon, 24 Jun 2024 19:07:42 -0400 Subject: [PATCH 16/24] feat(surveys): add configurable delay to popup surveys (#22780) * initial commit * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) * fixing the ui a bit * write tests for the survey_popup_delay api * remove todos that were todone * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) * Update frontend/src/scenes/surveys/SurveyCustomization.tsx Co-authored-by: Phani Raj * Update frontend/src/types.ts Co-authored-by: Phani Raj * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (2) * code review feedback * add hour max to survey delay * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (2) * not sure how this was reverted, but it's back now * was this it? * was this it? * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) * Update query snapshots * Update query snapshots * Update query snapshots * Update query snapshots * use latest version of posthog-js to activate the survey popup delay features * forgot to commit the lockfile * Update query snapshots * Update UI snapshots for `chromium` (2) * Update query snapshots * Update UI snapshots for `chromium` (2) * Update query snapshots * Update query snapshots * Update query snapshots * Update query snapshots * Update query snapshots * Update query snapshots * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) * Update query snapshots * Update query snapshots --------- Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Phani Raj --- ...-funnel-top-to-bottom-breakdown--light.png | Bin 110400 -> 109778 bytes ...nel-top-to-bottom-breakdown-edit--dark.png | Bin 184787 -> 185206 bytes ...el-top-to-bottom-breakdown-edit--light.png | Bin 182777 -> 182814 bytes ...new-survey-customisation-section--dark.png | Bin 85157 -> 89269 bytes ...ew-survey-customisation-section--light.png | Bin 86471 -> 90520 bytes .../scenes/surveys/SurveyCustomization.tsx | 35 ++++++++++++++++++ frontend/src/types.ts | 3 +- package.json | 2 +- pnpm-lock.yaml | 8 ++-- posthog/api/survey.py | 15 +++++--- .../test_properties_timeline.ambr | 8 ++-- posthog/api/test/test_survey.py | 35 +++++++++++++++++- 12 files changed, 89 insertions(+), 17 deletions(-) diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown--light.png b/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown--light.png index 4bc0d3a54c2ef9a737105ff561527bf39a6c4919..643ed8a4088bcbbe45375a7501e5069b248f8f67 100644 GIT binary patch delta 73606 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

M# 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 delta 133319 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 Cu}b^^ 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 f65369bb2629d4d9f30e905c62f2a8455c8a9435..a00206db7778114e57e06b85bcd891665654cb9d 100644 GIT binary patch delta 43654 zcmb5W1yEJ(7e0y@s2~U`9f}Ad9nztKbgQ&e@n zj^Fpq|2KF3b7$_EVf4T`d%v;Xwbt{jXYGS<+{6gnSMSagVt*z>dX+wJzq@RdIwqqoL6qF3(fD z=77IoWNPiYDksI+HCpy0O>VgB{MumN+g;R%A!qE$&T?O-X-!Hz#XZ%m7pDS?WgBhL zJ?In>!5PKO8jpibyA5Reu|yzg-RrYBDmZ;9nA8*c8lxjAMHpZ!iQSl>Gj6dY@h{s=RxD zKV`5j|&Sz0B*x?TtG{jM=| zXR5JD1d&IkiiCf;?%?KWyc2KYgx8m;mad#4vAr@BK3?VCQ*5PGy79F^P1p1NkR|=C zTd#9#&>tmfJbQK43c5sY)6%|)V$o75GVhb4COosg#pQrTjx`Jn4LK8-eSA7ccI{@!B{I78|!k;q`T_aFpB6UA7p=xuaX{fk(>zs!Q}Vo9J&DL@B?UKim={W!J-kmCt8Gy!U_LvME(KSrM~pH*e0hWjsm8 zXRBPt#v)^9@o*BM-gyaAmw!Acgcj8 z;@Y~`&xVHIpN&bE`*Uf{*H~#&oH%XJmaP#i^{{_`_AMEFP6M!IqrBP&n5sXyY#8L= z&*dQL4!3A&JDoUH zAGr<#m&MfRKfjXCdLC{k!!l&4=e-ej-~A4kb&oyVSuU^~;%tp%lGM|?$z|FpXUFqM z#!f&?A^23a!T*Ng$>EO2;bJ{Ll6;d6@?aX# zMC+<7%G+=29=N#h-MV#adwC!vCWcfsTXXKiU72i@R_dN`^avF;JyL3`987%_-KJ)6 zu=h(uW?YL$YzLn*aJn^e<<8kF7tTKRzuuurkwbLtTD?VX^_f~ORMPy(-bB&b*5>AC zR5-IeuW&N%&(eS~vh@wHr=_`W&9^5C$JL+@19F~MoTd8> zdGk+C(i7eM_a=~}APU~@Y%N}9Vq927*%BSq;Lws1UZgFWt*NQWr`q#~(_`P(d>|)b z1%*q-pS$Q8V)P|9E50W%_|_dCe5%jlenh)p8bfbOhDGwbZQmU&{lyIK;}m^lQ;w2Z z^6>CLJ!uG`SI0nYxCU;_@r_P!#j*m1R?~AmbY5l&JGorD&`kI zl8K=GBF^Y_vcsDuAMi;5b@(pgZbN_e2xp;a3;gqExCrO|H&LnB?qqH&qQ>^v0%b? z?K7K_5~5Trcj!#slkYqcY*})P)>ZQ5OKyl9pOumy#q-&{0o#S(Ap!el+&>>c6kHn;;&Zxm}~B9{k=h zF|w3`UVI~5m$5uNJG#l#Ic|H8i!H*FAYF zz+-Rh!mzW8_ue=~f_WKipZ%X-J3nO>yHin@Djb)qQx(^|c8l;UtEy1B>pPp92Ai{& zxCtywY#0`QRG1aeXK7VX^YZeJj*hD5za+eG{#4Ofw3bBIqk)Nypip!gnV*|8UOS!g zp)nXg9@=e?eWGb`lY=94LC|q(At|>e^ykL&DsvHPO53wDwbRv@k8;Sa;)(+ zdNg8s)eqcuR}@@ax~`9OEpaT4mR;LgV6!D9sLjm9r>)#WY^zFX&UaJZaTwaIxbrNFg}RXCe=#`CXC)FgfVdUw7v!2+TCqF?Xb z9>=Tbht0rF9u&dikaV&Y$&|M;RuYgs;1#X7T)#5+ATRrjUk+F*qZZ>X~1V(;SNhylHPyg^MV z0l`|!E=ub(v%->Nq{QZqP^GEAmFYqZvsQ6Dzk?~}s&PE0=AsOQgj`(QhO}HWtui$l zR-%58TF8$yVW}6GB-D#Q@F{nk!2XrB+Zfx(u;#XDUVy0c31im7!qHYCY`Ze{*jo0 zI(>o0o}Qk5F`RWNw`SwpiDU52^1w`XiO<>ZwhuSa*8SfcnM5?%qsh3^f9E`>fLxB6 zni`LE|MIBIn59h5tixf!g}SDcB~Df& zSnC72h+tN1f#WidLOkE=xHyVz&5}YJMK{Xio~^E-Yu}7pqiz{Aazk)<=&}|O&NGz# z-&$#5a?^L0uEntHV?!i%bmVj9hFI9*-lmcw@mwa7S@JdZ`;GPWc2y*fnmY0NU8R_? zJ8h7VJ(r1McGv20?TD7g8@adBMs*l^WQW3Xo<2o;q?dE+#?EBrv#$t za}P#%Lhg+0{YeSIvIVzyeQlKC(#7?KP)YLcufLI8HerW(JkgWw@Dqpj)T}B^yF+IIlgm@xTKN?;hbuN{14(DenRvRK zB;x69(4eAACVG$4|BkGPeotD*%2-9$l!hl3g@#t=UBRZGBO@bI1<}#bCl&#HVaezM z&Ybq`<-nQ#;^!1jYvc9bo@KgDyfs_Pk8b4-Y@vBIvUF(LwasR7iF0)6=oTM(?<6 z^}Mh&c`bI+PNB~!ioZ(jZXZ_l`n(U|+?#)0I6KcF9o92ruX&U*F!IO;7SN+5gV#x*ba2G9EUSg;~)T zCa-;cM>~FKzS}^+5Y#J7sKk7#y_0lXxj017E|+e5*Sv@P;dJE~H@rpM_P5?HYOD#e z2vi8xsO3cU3D!B1D^8k~kdaJJ)*)n~`jm=q`Xc-s+o~ZG&XHVhE0=GQ)fOf zUkbaC!$&V|Z?D~HSpz;7&i2`3^brlfh{T!S1Bht=x6L^B5Hk)|!B9IU0gK&LtPdKx zl3OJb(Gge7Zu#e8wMOKj1x3LVHF0q|#dc=)*wOFmoV(U92nowhG?@Kj&1yW)6sdh+F~mtbp+{lSj(_$fUQWd zn{zs{vT(x?w2G%tE8m0uU@l_EQ?H(U8}CH7MGCdE>T3lf1Igp31?UwNf!+b4c*`0|Fw9q z5KnBAu0Uny>}(3Lk5t$kkAzJJdvbm1_BQ^SWLIL<;^;vGclh}RBtTcUO>bj5b@ydd1kCfVr}VzUVqJ=uH{5!J#5xLfAHZ0Q6P;d zF+e}noMUes^S(QU9(T<9vg%tSC&19^O6}GNiBx`=#<^HS!yg zW;M~yvT(ai%}FpAHH`;5&rl|*4P=x7SXsKr9?PCuj>L-tnL_g+Z%wnx!jpZCrMCw`){RR8Dq?I+n=!^>h9*T%wsyvKDw4c`x@l0WGSgu|;r70on)tmLWg z=Gu6kyCoe$Jr=`@@LVD9O@Htjn~si7DN9{B(d`h)(kTf0c;Dj7@IPCRMQUKsWojWk z{pZi^2$m;9jCJt>o|JJN{zGh7ii&GO8$y}Bh_8{Z!SwyfBNgiQGq{>9j4w;Tr2r$F#uFv`1#}$Xy>Pz=s@#)1y zKk)L#ZN$tP++0V4?1DCxH(bZ}3#}p@E-aj_gM+gpDGWe%bWB)E%GUw&2HyG$ zg))EFWC3$h^8q|x26xlX`xC^A`J?NzL@CI4|GuQglZ_xA{C)A+Iyhp56<_pWb6*-`u1_UVB8` z^CXaX`}!>oL4^R_KX++Cu9$e8W|&m(+dmgATNLFY3{8Qq>j5ECG|wsm~LPcO21d9cZ$6hIq6N!0_kOwiB1RNHn7tG2udm#{s8J)%`HYsVC=R zcLk_Im6d1NkPk_KOlLJc82v=3JDN)*f9DzEG*8_C?_N{2>`1ZIi($IJ>Jzt~a%5*mFwYf5IzgUP@P)TCen~AKJTlkM zriQKEk=qw9N*z6V**rM_mNua+Pb^LoGG9-S9vTz#V#4Xzg_}6@y)JSR1V0_s!oS0s zCm-e#QELCJ?&#X* zcpC>Ky4^(@<^ zr>84WdZjK?v zg?6XPVlcSncx8i`XCUPPF^r+1IW#3t9bpC^4wLGD>~Ev`BLD>})T+LNSBV&ba64R`WAeHacv_(}9AwiA3e|^(XX-sk#&B2!zd&*d8E*F{II*zTln+Lq{E(?%p*hQ!4`>9k<5)W#nY<=LvkUjRf7c#VLt7<5(oH_WA*J`Y00cG9+iMl!?VpE|0FptHe;Suwwh!AsrvCR)?>qRi9%;G`&uhq zY3?vNFK-+G!MNCSbZ5097dxCm@zbOCN{8ECerwf7B2Stw-ZVIrle4zQSl)0E&1?{_ z_tspru5me)8ZcO;WvQadZDS{HWC0CfxQKFUN7q1fj2s;*BdUpc<<>&<5r(*9He-_?0F|8#cq+X4z>xcPoBl2LUskP`o5{9 zDxfYLZ#2;Z@Lh_?n{Oj&-bF=YFa^%(Ni^bgeD;C1N9B`YMU}5g4;zEsLk4u+&%Vl= z8E?xgy4-H!@U2ORWqf=*qd$(*_}-0s?>No3rSLACy+Zx1Yh&g&)Sd>X>>`0`U2ps~ zu#!YTCD3kYr8z>g{8bCdWlc<^jwSEvm^cenr4$&4<>)?c55KJ21#SW{AREqs|MEkHkTqH;0*Ax9gt@m9;7Eh!HYuZiA#`%DqE>Dx*z~UFCoD+ zlSKoRNgDW9SZq$q)$^8de?4#cNwcs>cGzeuaxnWO@p$4Ix5xgiANB6t^Lb4P{pgO% zH;{YH5d;kS?4e0CJ_bIIGjBSCNtv&44gv(B(RBw3!TsLN34ZKDx6m5TNr4Xj5zCpW;7~x&w6Y; zo;N-BG<(U#8cLgWn{!E~UsuOG>XN7suWGNKjXIsS2f$Gud)zO00280Jwv(jCm5FA3 zoQ-3?*}~A)9L+`pv2c3PR7EF(DU)QBC+-SGF?ZYSHns`S=J&gVwyv)Qx>3A(i*wrX z8x3r-L*Yrh0Xyl}od@#Xc+@c&Zf9|-AE~Q5RG(U(h1iJGlP2*CBCaMLayYywU93#IG*8k9ll{r)@X5 z+{pm3XS)WX0|>AAVjb(_g9n%R{NN`!WQoR4;?7I&X* zRQqFykX_spC_19|4Y_WtW$IySj+oLMDrrvwg~;b+L;Z>0V?5s#cdjj3me+ekzWcN* zZi0FGTM6y{Sm}CKvz7s?PURmZNsLjhdN|LvW50@GsdsVsskJh6t)n8+HGgL4<<(aG0Uj0C`3?K4yMLc35_rHS@`<<8+49p>~cCT2{n@>A=0s&sh2KZ)I(Q>sK~vb z;|E;q4?-*M?WRuF|~>-Hi|zNsRe=V9ef zHVQ<)_iKsSaF(E zC9356%%8cOR@uoViM&MybZEj>PDyGVx`bsP{kVStpR%0>u{3~ra21wLp_b;x3Lf_`G`m5L6MNl|vJ%m)A@A8fBnKJo8b>l^7 zew_H~kmA9w?i~EvlA|q#6$uH#4pGPFH%CNkHX7Nh_m7znC)9Z2jHge;-N&cVM`Qhd zSs|i2KXz+Mw#JXv(ll0qY7iPpzSeVF1ZV`hfoWO!HsTNt^X+CMT)A=caKo)!6O zjh&(=M_rw31g6L1zQH1&Cxij|*-P3tPVhUg7y>)YQDE9Nce2;`JH?du-k39uva-8I zxe-~m7E3?4Dj&XqtQ3zlP;o<-y;# zqm4O6vz=dz9#Tif#Kc&>KOA{(VDLFp?89}T(_;tiGLQGL8E+PQOs-zP{u5TU?Ni-Z zZK`3b6zeeo(kl|XG<+XS_`_S8YagCnUtdR>;T9?f=+;2$`}AVQ%e~p*GaDFSDm89r z`aEd-;q(lV?N&vBf}*ze8_Z3>5PQ~AMYi2DLSzp`J?K!lD1iV0vg>aFv<|f4X7)`leaEaEFtk)91APn6X>ZoH_c7Ta zr4({>22-O$TXb~V^#)~CtcCLQ*QlviU0mI!y+ilkodc-zoGR*{n|={%c_Y+3G113vC*&1QYm$x(gC;QnCki`t2auKzQ>LX(Ho&q{625LprD3^9|A%8>?M00zSB zLdu!9aen7A&u4Z>BqKl0Yg2{&b9JLvCd9M)Kw8gsr;@Th54^?7I#uj}SJ&2d_7n^0 z_=~~?-OsZb{~TbZqDeG8-y(aKs)du z2p1Y{@|RzsrG0g4l`k#3Dvwld(EoI;hH4|71NpgHzwO|_e5Id{9&cLFfNzJY@h554 zGlp_HYr@d>ZZKZVE7qWX+f)%xQdGWrxm8(Cl(*@sv(OOhO!9fs)1@TATmHUA;ZP_0 z`_U+`AFr4s!%!+e9*A3$V3-Ja8GXop@HS3V|F8hZ`?hS}9CB4o=M+_Lk6iER(ziXh zdfjC(`O4qRQOCGH4DdC2{qN<-j54aOYoUknN945Xr=~^K&Dk8KNJ*!I4Tnj+Q;kTn z_FlgHYIy9-+Bmj0t2qioP5p-~lDa_FiS{q*ue?rlp=#2cI|?WI)$gsEO*;m5D@(s3 zIV5XOXkifPU!<{T!Aw;pACo+Y)4i3e5q`h1XZpQA{%!UHswPh@_lMftQNtN`@DBB> z_739ANhgON2cCMJ8??8(PD{J^5AARLdRSpRrNBkTTxK9kabev+Am zq7hARHrMJ48x{9QuJ(oOWhxW(_I_pb4m2!d~iqoL8r?>nedtGmeln7p1A#F7_@-=t!gRzHK&_!e~i#;@P~K)_~`i`R>xf+}K*R%A){6!H1(#-5Paz^>h1R^ zT;cd zG~MC8w3-hcn6qn)nJlkmU3Q)->HPOG+j(9&EuC7G<=d9$$@%&Z3UJg7^7`WmyyMWv z#f{IA+dr;EnLqg+iH}q3aud5pRLsGRkCrw=CBIfWN4r|)(Ie~z*>e>F*IPbAszO9U z($$A#Zsg!&n7+-s^?6t(Yss6% zAMn-11keNHXfsk?=QlqG<7r}in^_{5ZNqxfyNIq%t}U_C#T}n?#EUpK{v{cubevE` zX+hcF=W+vzHr0Ked-sSM92QVS;gF;vVeGz5Dh|Q*f!J6?ta^v3ENP;Nc7v8e)kGyl zH#n>oy{D#k<0-=by+diK%W=C`4!&4^OV^65cDxDZbV~^k8FHL#lJ-9e(aR7R(vP0% zbtWzGHpCp1VXg#K$iCboRd|O=F{P705-iAr~NZ`i^k0hu!{1)3$ z_;UZUH3ERj?JbA|eZREYPiT=cN1u-9ZPq#|N-|R)aA+SM)u5=)=Q5n9)_!Am`ttkO zORgUUSj8Uqzn}3gy{0b4wOcN(rFX>?)|5`Zy!-}+sBO8a6>uCJ}c(qSWS24#QUO)eHJrJ}W{6(~wi`adFh|6WQ^fFC8A<+;O zLcyE(fhd(!)XTuTHH1bq6yD@NGXc&5Lk?mpM1Yyk{3?_t1zBKWbc>waU*||0Rsd|T zAwFQpWHH7{&L%{%E$7}2B-`>v*?_x#NOZ5mHm$^S##$MiD9!V(R_5 z8iiO1Ag@+NDhRq`@7vBcE4x?uU8BDS3=mZ7^4D}roP;~#ioR$M`Ey$i#=OTR=IK8o~C871{L;el0rDX!IDuxO(dcw06ZPzDju<*!` zb?yHw>RXXP~?>WL0(FdjsYn59(Sn?mary=`yfZxeP+{LdQ<=@KCE+e7|q``f# z_1$D;xGaE55S>>N9?B`*Zo>6{XbS=1|4%j{1~C3$+kLCycf8)!NR+|Rzm~z%!CWd! z*FpPLxjaqho|Ds`{Qft=-b~f(Z}kg-5iQbjyjJ>qtHPsdd6zMj zy@tzs1qKZ=_!D6-8K0FK3A6 zdhMdFF({Y-XvK)bKnA9iqpeYFJvOi8Jkno7DPsC1kV_+5)u#*eR!t@a$_1+O5JRvi zc#dBs<=O-{-27*3CBF?XI=@ElTlAk<@7KEh;@79@lL;-GAS^x9@D5hxuT(BU=hf*s z^jY-+H{u$21LpL(?n)hr zu2;fsj(-eqGzbn2Zq}j6{l@{ssVb>Ql*MY_UedrD<33&lO6V@f8^wVh3oKqoD1yUX zR7itCvT5!rz9XkfqXxag;VV!n_GFscfPtRpB{qrwze1%2DZIbaqIJG4Cbx26DQrvq zzgXldr8cdWRjKA|;zrg zEonc+ae1_gb*}#NIs1_(5QShPHtZnch~-N!DE)KQ7VLC?KR-vui(&H71_nU0!C(LW zl@YE06-KEN)uUBzC#a831X5FoJ754Q3F)bn=q;e;@) z%Bo8Cp}?OEbXT9UH}~m-o0|O!6)Mij$U2a_ota!*l!kzfscqGqj&~j(;Ktq;d~@&F zsdeQrnyFO=QbY-~s*82)Jc&R)KQ8xM-XE6$1pSp!5InpgH+4_-xQri8VB zC#!24ku3lxJ{!D?Dw*gJtfawW(e(aZgXp$KvnhIb2-O^KGNnia=}(M%zVs-*26AY6 zKEA=eTMJ|u@iUY~KrbJYDOR?;2zNq+vNa~fU%y6c7igB66zIL=(q~^sqMp@=du`FVqjqC7lJ54)imsaq9Q>%+Uwk0 zmrq3nS`aFZ306BxMe#zeVV^$T^uFRQ+`xH&JG;=3^W0^*BQ#69%-^{w&|bZZ0i;bJ zW!Y+DtFb@aCc8|``~aN);&=*Ea&j`h)gAc--NTlqX67L{6X5C^olp92gB5fU=2wr+$%A#3N>MlJ=$7 zlxz9R#rRbhPQje4-MH9YnEUe?w3v^4{Y2(`a3<)DteMGyASH1fvd$ z7qKu>t8Fu`eW=!#zFZ`FfBD82ofEgpZ53S~jdP3%0fGHDLIZ#IDdXEZJKsjo9rch^6$VV;rd&(w_pR8C=xwyMKAS;7*QEaF2kxXhF zuAApR`rMaQwOJiK_*d^*Sy}mg$dYXQw1Gr-1N6&z>daU!uC95&6RibOc65na8G+u_ zj2;il|4?rZI6mHzz=D(L7gW_gFRwLNX@>jzH^ZNyf{H3st;cI^KBP`ZlwJ3xj!uTC z*2g}>e8jDf9NHRQL3R!jpyQ*pTbN3#omwu@c!k=x6Juj-jYZx}6a$7V0x|jw=+m<_ zs_2JeRC6`YJ_sW317+zI3a`lq)-ljNyrWpae8MCDC7CFC{hF>u8fs?<$D%*WVbHW-NWElL3kz)6VgkMTXHN>0A;~`E-(A~mFeBTW z$W1Y5xEzl_;5B=4TLr}?==hk<_#X&3dIuuZl?UkKSY)e9a*G5uS1dN)7^pq}6ILsr zi-ERF1F`AP#>UOxk^y0TsG&?jMWNrFB4=w|+R7FFe~3%({lC?vSkY{{^R=(v#)?o6 z3DZBXa7>mCm%zHtsPZmaO%eMx0%9gi5@Bs^jS&J>pZrR$$9n08=7&rW?*RMszEjsyvT|DY&kX^LY4v`gBS?lKu2R1PjWU?P;PshDAEa`Gcyx zaWRlGc6$Wg{JR;h1|8Tbzuz?&)ERX%Ed%9!;V>3qnb_ z#$MlJu&O!0w-1XWk&=@(KS~LaJPUMp^!j>rM!zUj?Hl}4t6x2TYII#T%Hs!=poS`( zlRQ0N)A3kl^vlaS1^bnhl+-W84Lts?&O){%$~4m|SJTO7Z8cJaNe{C$i#|e25A`bq zv>tH<7r!4Z25*wqCy9=Juw|7P%@L5p$~Fd$?M1Wd#`1jp5yz488nQb%%tT| zwz+bZuuKb-Ca-)XmvFuPq&n|{I`r};MjhH=f9cXCN`Cu@+mgYxY7Rxli4s*c-~>Y{kFj2IcNm=JR$3;UizZCXS%(^FpMs}X)bGb zq|hv=PEQY$QvyQ^Ix`12nUGXN4(@bUEBVpg39k}wXe5bF>-Y$Pxdn>z?d$qBn}2T0 z50*P>eLFGwZ{Qc#38q!rT|u_OrKBk?ZtZMmr*;Xs*bJyxd{sc7<;OnQQr7c=;AAn~ z`mQdv274N$@*QFQ#1D|YBTne|Ek?AZFW8TER}Dc(x+{rgU2HSqh4m)jf*{K{u)%hK z8v>KqgBg-Mgk-G(DFmsZusRb`GIx?^2z=@*3au6KOPeS%`b z7*v@MM*)asevWm#1r3qWr$P{~bh17d2=Vb@FsZ?UJj{OJ60U_r@}u{lGG+$oV(o8? zk@Cb3Ih=XX_wD@&;cG;aTm-K+y-h^csqRIdx;lDs0ZZsmN-VuWtLC9Fma0b;=TJ4Y zJbhn^>w`*N+90f3)Zyy9vKm3ll$?H97=JS34_hWU(~8<18Q)fYcRw>X zSMAs8MlrszLXt>FQvflS(+UoLQnE7mgAqxS?Ik;in7uCy9hP}Ja%qvvJS z5mJ2QpS3ghPH=v^RJ+7%8m#flOy`?VV0I5!nxQ;+q8*VI25#A*iqa`&c z7y?=xBNuf!%)o~T{jRna>jIv~kj~ygX95(M?{IR4ReK&fO#i%urI08jJt1=97Z~^x z8jKKyF42WT7eU7*U#O!15~=;8Y*^~DL4@T)K$Gn3A_{#R@(Z18X|d3jczoCu2lBAt zWoTx4`}*vKbWMi4e-1}zq4jZrd&U8yu8p)S`*uRiqBYoM2nZb0_ypuSzA;PSP4<26z~y^A10{i`PZo0z^i`CK6tO56UCYU=wN z4=JfjjUhC$HC~{;J=ov3ool^;B_t$73etr~k7W1|mVW5cslenJj=x6Ev)th=l-3Qb}Q;VjFGCO?;YPd+hGu~BPE~)NK2r=i2 zbu1l^jrT@#AimA#VpS`m0p;)Q5FVp35bqV5^#}~{<6drU`k;oxv6SHK=Np5x1dF1@BAKz+kIozH_Rxf300n<4XicBy>LeU&iA<*_@qiU6 z1Cep}dHHqdy-4ZVqT1NoQ&eSx=&l-39!*AAu#YMcJ24T|n>R140My20P>86FmhOzp$`~?g7kY0FrdM*xU zuj^!y76oJ{aZZ#D=g1eg$U2@ z@rS*@qyx~3DS81)9CUC0!-MHZ|7k@vNs<2%i?)0c+TuC)7ciDNKn2z>J)Hr>-O#=G z-Dr^()><2?9Y!DiGJ61^dmIz{fC8#oi z&ss1QS!kT=j#3Uc(3??sgT`CxC=@xX$K>DrEO+HlSkp7P_ z6^Jee5V21}BhH{D4n-f7FFhH9RrX!45x0>=5w5o1FYCqU!L{I;BBMC#dF&B?7wx5&1 zQq58iweWOW>^={X3Dk&YgWqpqLHI?IH404r50@yOFVpe{Zx~uY-FH`#A>^)%SH(eZ z)0|8Vh}V*V9)ZpTe-KkahnR=!|B{JiM|U+oJOo~|7RW^C+nJi03Y}hg11AK)*o`-D z-!6_<399Albf}QMf)e^5jUv#bLJyIL55*rpekf3I0iQ<1GItMsv~~?jlz!HBX$A?1g%65f%Uqp{{1E>IArpYU<%40ner!QkvT=5kO?|v z)z4hdDB3z$NCIZ@Iouqi|E$n9>6(wWp&H2^fz{k!uP3-fK!7lS#X#eU=n&sOdrY@% zJz`W>)YW)Zw5Xz9bY$bMWm8I+m2=}~AJAmpze3La3CxZA#jjVOX&lx+1s6)jXL}QN z!W24Y0Z?&3MkyC9ZNFBvmk+JOSeX7;$oKEU4wTywGpn;}2!qxTtNLhFP{3&gk%AU% zE|d08&|-^6&g~0AJHbK@i+<*BYPp@2u3PKi*!r6=H{mq82shUQG2m_!owcKdASRW9 zpQkz6v4ETHCp`Cl7g?zFXKO{TmRjF;-86y@shIl~#Lxt7I9dC8_deCXGjt!-rm96j zTSdL)1X7&A=)SHpAF%G8+6ecG8G`HTd zM}Ty5QoRubH*dBCuD^BJW%eiTIExoH08a<7WuA#xU5lShkykbBWUlF5zLMaqK(@JW z6fx0wCC)Z;!OzG2Y@&#(`L7c)nI+Qbb#3f>wEO#$)6;JNHZ*QtH&f($tlT}9s`zo# zz`)=Uv}O;L*d#>@J;!DiJc)^myLP=$v~7gEo@Bg`1F#$r>&|m#avG6w919ZT{QRrl z!3e_vC{SPpcvSBzXQ<(&b(gKCW~&h5S+4ysVe&BA4ey) zmvd`O%Ado-7%pDAbc>Pk5*HU2L_y#JQla;5iCa}w6*9$d6Q>6h3rU(=GFl<}`ubpn zjIwiAA6*o~G+Ip7iABHE!M=;2S+u^^aFJ>q6gAw%lhvYI?l?5|z^(hvSt;Jl^-o)~mZ?<8~%zi?c4cXtQR)((&5 z=xqZXOEZ`Q^n^2k8p0UbbYHFvhJseggmDeihQBe5JjQ%kN$IMXH{KK+}I zWB~#Ez6q|sI8wqkkn?;7rmUK7_UqFbQS|<8kZ`fY@mPI^VQ5lpK}v-A6x<;d{4Gcz zX||zJ=AXI3DQXyPk01986D@corkFWkcGNcu#6kp9oJXeWuW`ha+hUjqtBF$qkDB{w zf;BLA-0Pcl4P``V7EQa^W{x1Cd#Ybs0l8=BWD{Sh^eFW>xcqvHSSi*1ibv&1sqGYr z;~_&x61#b?`ckh``WuTI0?tb^F8gD6hEi09{-79sGLdqIwKH;mcBZS;fk8X>m@D6X zPq8-xmGisI69Irq*~VwL+^B=l`5Xi;=ZlXbV=O$lli$CJj#chWnPM3ZKOu0K{LD(+B%A9g7nMzHYIr`ej% zmdgRP-&?CWtv)<~$5ljP-a#YFQ@5R^RFKd~F=`fmZR9!pBApEhLn}DYm#jTez$U9h zXv|UhEPiPYeR8yf%t0>pl$`s;r--}CkL(;BpFs@x1|p|F?My6@GO6&a0kw>$8DT2< zM$)MOg<9ds3HMt=l|`TdTMe*91hit@g%jQi4`#XF@8jdcbmq(%89$;s5ikx$c=o~* zsG5c5R04hb44O33B3QIkGgPxb=0gK+0>`oe@^wq`;>MwNjU9*NsdMV_X=IO(icZzh zw#wn|a*BA9&@;E)rR43!5v?jhOw#mq9h z2K{vP@$uj9nRFy(JO!!mP?39u{ai>uYwNSNNJvc>aqur>Y<({(f-A4&An-sHjZ{b$ z{4+B%Iqhd{=cZG2BXgb$GI@DbFL@SQ9lh?(a(!}Vf3~Z&LAK@|=8-bpx@=g>9ITpgm0RA10X6F7U5ui3>oQfz_jCEFkWRGyPl_XUYpW}(HNez{u^m_U2tRuC|kpDicQDVt4w zvaQ38nUS#f-+KOp>n@dEiFKA}65d(X`6=pORaHgAhvaM?HRwiA3zsvZM6IJyE|ykS zks%`8feSN=!|82nb@dm623N2&^3Am8;k^@}&-HPMOjz#}2FPcZQ9P7jjUbWDUrF zvGInoujCzQ z#i#=M2gy%lXdq-Mo0HtMe>Q`)pBs0B{`&Rnf1h@+9s2#XDDY37sukG1f4ALVD7D>@ zl7ENycWQU(wo3EY$LD+3Nw{_ueq*+GsSnVOoWk7N0rQkS8vPdDB(DRtUfuekAs$UK zKuI{pFe|f;3$9xe+`hZ+-R{$yoj$;r9!9Q@aSs`e3)|tfISdww<83yI>fddaA%7Dl z;N_4}QdUOy_{gPOtk`nECNcI!rOCkm47(Qx{k&V&%mDgIYTj$7PaGW_&|wi=Tq1*k z=QI5~@HQs$jX^P%4AhNMD)xVP8d;Cd)KyM?H~cr|$0T(1#>EI&IweU(Jb_@E3UxB< zKDxE;*9xE{&lbjg@_B%f{SUkNmoJd|Vsw6ePsoI;h3?;g9ff};KlCi^4`*r3)^^xK zkM`~IK|4)(Yirk+oMjexT}%aEw|$<92WBr6^f#d`^+hQ?%#deoCE8Yv zCp&*wMxjxdvpqMOl+C$02)AsBtJqIXE1(@CKp$ujGoZNxCc_N|)f~iCr{1$GQIfF1 zmn>@F+ZD<>V?w+FAbY%~Q%TFx3ibDY^t|)b#Fk(oFh)E=kq#fNHR{lf-F`g6Y3I<_ z*xeo2!RL}VuuH3L)h!ck{Q20~iTD-;MI+Q^An5~{vEy@y|1l#A3YWyin{tz4R(bVx z#xs8Jm2Jrw_oX3oZZSM9UGa?zW91a!fECK3`)p2)|MrFx^Pda4f5S#TUH<+KkIm57 zGntWsZ(Cxf=ADcT54VkdCOWO-lnol6sF=K&yVqY}zvS7{*ccV|g^34Q2mHafXg^c^NbcYL?R9{dFS^Vybe>ONgjIlA0 zS$LE1_J;rs@;?e_oku-y$I)xl6Tf9E~7n&QW1k zuK2f=4LnHSNsu*pqfe0jO)w6Gf^YiL?xX3p)Af>0hiV?A_0k0Ge8OiGK>;h#$wRc| z-Fjl_D4P6XCmb;0BjSLJ7tk%bUEM^|On|{g+CT3hg)YAH= z$0DjPUMz=HGnx(~6&=1Y<&bE4iY80SsH&=VmP%5CIIX2ah+=+i%n<;hFliDl66x`> zCDO^m9g+f!Gu|{-TMMA`w{FHZ4&- zoSEk2hv@4+8*nBPG{Jl9xMu-*D4@k6^D>%hNd7LLb!0~WKcTh2G@f2r*hLWOOyU4` z!fbPh5TqJvzS9q|=3~B{`8A2zwD+u#vk3=N=bvR;_nDhf)X(AJNcZt;gXOjq*NE+MUvFZF`ra1y`hBi91yPF$ zpz`R6cVx0Y)G4Zm)*WlDhfm!|`8f#ZU}krNfq@~M+2s}(U!e@=x17rLzB!n=W#kkU z8JxHmdK2@6*3^6g-9!W=c&x7{{jqfy#*&jo$xjaVezdj*->iMM4fTOhZ$^93s!&Qx ztlDWA@VNsfScTA$q2w*k6hjyj)yIq1YFOj$$BX*TLHz4Y(+s+T+t^ho*-lYt{JEl# zY_Au9j`r}}c#v3;q9ZRD{)Md>V{lXN?%qH6YD#jrb2RZu-DXKJc_+dAzsb7XpDqbK z3W(65VbUfT%xaA7eedw<06c$dW0M3x3s3X2&l!-J5y8YufL5kGnJ3O&EVI!Hw@T*- z(z%;NM6omcZm(!OKiCRuH+U0?V4e425NqOMVUe3@{M^~u^Jk?iN-_*#3+p$*phU(F zz0M!q2m~&@wyyTa-vajCil9;Z`T1sTPB9Zyxu)Pr+Kb$9@x#Hx! z8K7%FL93W^C-h)D*>Thzr*sZ{74OwG;*#MCLn*k$OG^2a;McDY#U4;zL+E31Z09N| z?d#FSIuURr5SgqvfOX=A9PORex3~Mcq7e7%BvS7&Fugg~iz&%r{n?|l9PjV>lMOy3 zczJnuDQT~W$k_pil#`bi$b;?nqtfXh5b)5A*(Ti9wzgbmj{Ar8SQ;7{TfFS>(PD=0 zp_Zk5+AtnDf&*BosFfn#13LT%Nl8%pLa>*GT3*Woc`(lU`}c2Eb#?ig?pt$nlGD;s zy?&xM;gxRi@_<$vUMv$6lh0qi{HUwDaG&-{y3;`pa8a^rZ<(`+{HSZi##K-Nm@RUk z>z`Lpy2-J$Eu-YQd3nEwhkp%^c=hVdm(Noot2rKdd%WRz|5&GoMk40+X4s!r=KGt zhKxswah@#bSmBah{b$f{VH2<~b5=%UKq7J*=0g~`xIqI&+LUg;yuBIFPsI&KbhVM9 zcxoOQkUBZ7K8uy>&*g`{oeI;7tyOu!gMBt&|B067wWBVqjy=mydUy^{oVv-!!hMS$ zKgv$eta^A^-WN1GqupB@`=~;7Q@*I$W|bJ9UU6=J6W5OGPd(Jf(Qw-Zn7c5yfS8i-_pTqt{|I5U}0cqm`3+>{%~pSBnylaJ(4~myQ}Z z|Mv7J(E}OcY^`F*@*wAZHL$h{eKt0mR=a{P(4zyHF>;|jt|e=1!0)$M70Ej(|TFVoW-L)gpYFfHGucvHuPJpQV+6QCv)kvWm$Ld9m_RQq{Km}htU zm8c(i)5_4cYOz_R))C>83X+8UM}ME-Z4N#@J}7;gn}R4&(fs&N_Q=P$ky8x7J%Hix z4p|$u2Sp$s7Q@4bx%v5+;2k-Q$EcxNY4&F!pf^<^icX1+&1&!^fH5#TV2*eb#Yb?i zNU6H#x|Hit0^0f=iq+$Zvyga&d8Sf8J2Ky3;n94(sSWd{Fsa2zs;oa2x<-oAFpe!->?!rl>^u?Ho*Chq?Kc>5S8n_V&>5@cE14#&6y4^qt4LnP`A2 zp@=#E=&VIQiWNfIH*VGznC6mNBnT6+o&!7S&f(D4ULRE{cMFfO-DZz z`*EQF$cDiXIyhP%v2$>EJ=XsJNkHClh$4J^FETPShYn{r*TyRw7kdl=sZ$Q!qR|{a zcgaKEn}X}hUn%3{tKY4C=F`H?fVFm=EmvVvaC&~NJSqV}Ewyaycgy6g47H<}e$%Qo zA^*~g-j6SD8u+(k{9Wyvq8r95UJ{A&ehfJU1qoV}Wp;KYy88Nw)=@e|$bXx&-f_v5 zQsOvBc$T>`^c#K0_BoAyf+;~yH8R04_ew|S=l6Q75|@*U5TbIN>Loy}Z`R3OZnN4t z`Q!X$Y>m(6@ejO-1bq8V#|^vht;)KU*l!cq0w*;dXL?m1a1QooY!OdI-DjpX+TPy0 z0#_DMVzGUTXm?ltUGOtKJv-m+zw?V()O|meiVDjutkMjFJgnUe;~IjVdEb8UXP?J0 z_drWHPxiD?0Lr{CEsa+HH7xl+S}_FByZjY;tAA8;suo zX>O>iyO%AD|LE(|PPzZyKF&nu0e)93TW;x$Jw>i^z(NFkqOn_Z+jXARY z10E2t*^QBYYy|}ca72UFe#|!Sy#NW|Spu@21Z_h!8VlNa{qQ0%<+57py`rL`0w}ex zynMH@kJ5i{wtHLC@CV2?_n}uc1f3BSpvnAp8+U5|(C#&P4FE&LxdQg;8$!p-V`Vdq ze%p}mC%-uDdPZ>*EL#z{GHr$6e@Bh--OmMHEO~Aop42lLfyY|S8;8Jso}8VnxN7i7_FhD0^uYYdFeWLXMG1)zZxDq0FIsvn>qvAeqq?HRD~xg4`&2W$eg-J`4r51H0)+(R~I6Z}`#kg4c5B zRvM_$ad#Fz!Y^3tHeRlcmI_1X;4^G95H!HXR@Rslh;DO}KRzPde0=$UHnz65s^;oo z!d$t}%S%j6O%00GXtQ$gCPbIouphg_EWbe^s0ZLV*vj5^1+x(h^m;(~cr8HfQj>oD zg4S4QfV#x9j}Z|>5I6MpH>P-(-@*U!=#{ZW~17TMX1loL;y64V%WQA_tzAXl}XhRkDY>;qY1i#U1DDaC2hPE#Y81`9>z|yC1g~~eD zanB6sNtbGXf%!aDap}4%pe{ZM3HQL?vUemFnmAD6TFf+D%gD$`QAqX`9S72~PDiZ3 zlCMXr`>yT!cnrKJeB9-l8;H>HBXHQfM#7l@7YByJ9-y6%fv?>h|>X{Mp+Z z3@y{77q;8Kr2!n1e)~43-?Sx!-s8)cCgZpq`Tv$;Kar;4dtjvi6TCNF#SddmqO zcEQ7&QL{OFn^vCp0)Qr7up)|zirn1XP#Z_cdiD8En10Yzs|DTm!L%3CZ2<@N3gRaJ z{y&R7=b)IwgtfLb2c;+>3XE+~>|k;{Rs^YcuUJolI4+7@(CHT#O4EYZFzki10Mr22 zGXxkV(`#!oLwWi7byJi%wTpA z9Z+M2Mlq-9a2?zT^p&oo6Bc3)I!#_^fMt$^(JEX-5X2`8qDKX>&jtjbT=NM;5Zz^k zCC}8%&_vz?0-Q&$|Q%`{p_?TEaizm@8cj%s{-#!K1pl;0GksA zxY>P#nc?{z6d?{fdC?LihCe=F_OT!dqn*L21?>E7fHnmPGZuQD!qjYm4k$XHL8GpI zbTk^4!4BG?CIP|_+He~jcXv!N;c=+=VS^UtToROXA|i5MADvt3&rElDCoCm}4JBf1 zSr8R9IEjNbQZf&6%8!Eh-#E&Dkdr*>xiMxtu?d{|=lKTGncFuL5M~aJL|AJVE?rW9 zgu|*>Y_=s#cG(6pWZ>xEf+lw5v#0;AFSlQOqFi}*fFS{wfP3rK2T19F45B3aG{pcN!?Jx6wylwhy_32vLc#grz4Ip^Sg(1{_i1{%TAJ)NxsdQxm}Cm%uKi%s-I zQ4tTq^LOoP7eINo!Bv(842&UouonU2nF#&^OyDXE&BYflUI4*0X|wke0BQHJv?MiUeOgD`+Cez70(!UY^09DlO| z=%;@1MSR;g0=)m*e!acKty+6p&C3QTSy@R5=Z)OG#43~rvb7s)YtL&5#Qf;$V(Bqu z)GVumEId^${{d_;iI5zq_te+b<$w=5xLAl~YgN9ruwbz}hElS}Cn^k}grIo-yHvH7 z(H?)dH5S&oJ<|B{YmX}g$q+sp#fjL?GHc^X-m54mRT@Aj&;-%7)a8U1{4u$?xxxB| zC@>H$PrJj<9}O8qynO1ycxAa2-oMYKj^rsX*0>x5SSoh*;Qf8O;et1{&^OO7aBhp_ zu&}by1FW8u-|o3?`$d$bq$Kz*19RsgjYdh%dnBIlzl<#^A%Bug3EV1AVW%RUd!?%@ z3>~^R6IB90-dSp7i;RevT3865ntAv?OM(lE0Uj``6a-KpZs65_^Mn~E-jVpjKU?^E z9?%ko3XN^GJYelN0(gu5`Ma@yxe3Tr**pChZAYm?*4_QQpSj*a4K00%teF$$Edf-G zS}iW-<0TR4M@`1=bo2f{YKd6wxMj(OSX51hzNL?Oo;78}#tL|S7uo*fM>sI>zZnfM zUU@NoIBNI*g#*@agSB5Ir}2lNp0mvn^Xi^NOD{22bk0f1q+bfx-;Lw!tydP-P_;P#S{5at&b&v zgwW}4l(=<@@cyjqGHDL5DJ$;iB)wo?0p9u6buk}eB?q8T?TW2&T6eUWMiY8_#jL3i0m2( z`*&!St5;8iR+}Xv4xI>8_%q8Rcq(Dd`v)Al(7|S7=vf;Rk^{T|7#Ec*fT#jqGTon9 z-P@v^ttEM$i2^$CQxo4q8ZyrfyI@K=J3bYi>uUu65L68XqM^hjc~IzBd*}m>?OruC zm`m1Eby5FK4n-|~6|x8hTdi<#RyUr-B_U~fe{yNx?1UKDzgRUj z?}ee#kBCj-gIAmY&}aEOAwX8!DmKAN^ZL+#rQm^vH|k`b`(zC#khGD9MY zP0VvsgALbJXwH2F=>1AgQ*+S0HiJq#0bH6HTlV5aqi@%8TeEfMVY7|;C3 zrqgA#(FVW3^4!VdGM(#t)?A;Js9$BZTywa9mig3~XlV<<_9<8xJ;(c`FBt~1Yizrn zl;1%9PwC-$E&J1K~khvJA$b{vxWBbUpdVF(Pfe;0olm18%*}Vr~_b3dUL+58!emjO8}w)SR5k@z)iMy9-#NIH`-ljjWy7qT7!7`3td!babBW zF=d-`D%$8!k%&kP!I*OI9A*^Fdrx0PyI5~y%;y;I*?=i35ubrm*(#eCb)n6wQ1{@# zG3I-R#*AgvMY@lS!-Beb>d184T|XH-bOe_Z7ZZCqxIxKoG<&{=I<8=T>Z1pPW?rtbl3`rj^!vde3tHV%oMGg7+!4=RrD?)wwFoJRA`@*c6yiF}z3< zVVo_-9a`Ei`Yp;}qr}B-I=qh@h>Ef?XDt#CcS4%u0>sbjsMm5_^=nVCZq+qm#lgFbGA8^*?37) zgHIF-SIhpgi-GCGhnlM%D)U?6EL0X2*5_U>`^->Who@U5!77^RJec2|4FO4+n{I#?Gk?k1YImidNcu`UGevOVD2 zp&n-d>;;YM#LrAkWo?f4qzkr$KD>l(k2m^J^mLX#E@MyS!*aDEY!5~LA5Hc>x``ux z=Pf*@>_g&_-t6^nr+lD002M?xEV|aVvpo&~ycR36tF5E@p`YX~9z=~pMAQV{)a_gN zlD+nV@LCv1;t@zi@|7F2e-1B<$W6`;7mCk`o*z$}t z6o9Nl>E{JGc(M6ed_Y4Z^@&KbAft8}#-m#Irp8ieSsmM-NQ7>S51sx3t)NC>B-T7~ zZW1iT7Q6eilyE_#rEv}rT#=%!slHzx1gC97AW}@0iTzplfxfG&OEFzJBu}3#U-6>z z5;*(B0gBZVk2sne^`|{9OjFu4UP-U|-10fAC^R%{H|Valheu4zLl%~f9mZtJktd!o z%h4w)oO?KegEQ$@jbK?PYub!hivFQ3&$9dT&Aj!HG<`+vgh+Sc5VzskKihf0GGwt+ zef41>At4QAfWZPl)vp@5>t!G>e+!zW*{6t1)t=C5#$-}b*?N{@s-n~G5Fx*xefuTT zk;z3R3dq(3*Y`sj1PfRBGXH^LvvV2l3z|CpKYR9@2BC&B3E1|P*`P|041MQUww3G{>F}J9lG7RHAfGNDO4%Fe?!~@edtTl zxP6kDajJg5i~MXqPgIZ-khWz8Bl1bXd3C(e4U(M3JN>+&`<8MU3Lhxg@I9Zt_C1ufGO@W ztYnBrLbbiq)Bow4 zZ$tg5B6EUa7vb+eRrQd8;Wbfbp!4ISA;N;V8^c9igXVHk--#`WQPJ3fB7JE}=W>b| zFK4^_ko{&lE#jQ1Ug`}gU(VYuCkPISh4GJ|VL+d*d%kzCXk>UejZX-w9IQthUuKWC zWuq_4gvm>qGZ>>J^0eg-IWMH z@-C1>tqAxs^BtheRN`CBn{h$QP$alA)ccWJ-^9lkc{zz;2A;3p5k1^?uPKZN?#r5$ z*vk61-?lC+>}53;8VcC`ARkxcuWVpS1*ba+ogL%)9jM zTS}^?6>m%JUNr=p*MBEUF!+T)osu<)%1tnCJup3C?Hx!35#de+U_?<>g&GDfIr4XC^orf8f3m! z89KuOM3GacBL((xu>wapgd~l;XTKwlR>y)YkeLU89jp{tSy_Mw_G>d#7_=1IEKk>3c5{uVnN zb=C@r?f!PhGEk#~!uPAaUdd)3k_uY6eG?YVaT=0<24b|CHn6Ct(wWM0Ocs%Ma8{HG zY!f0TCJd{?&M5)yUAfr6J=wNCdyGxN;{8DSn7w~wa1aL{U%G?bnPz>ZZUPx=S02g_ zl3jXn6Z|M_K^x#6uN%QopDn8i?W^$kXTBDT-TJ#LS3to`r%~eX6!r9ky*Mx-F+DRe zRPCtg`iM>uVE1qLH{_7f(IvSAu_>vMC+ZP}KFb5~rghM&-JP8J>K3iN-q8+upm>{*|^4}Pc;N-3NtX#3^Y3-kJ4Fj4j|*b$t+5nIzk zV@Hl|9Y6LFw^>UxewQRG_@<-6-g2)7Ud^#fHGFtYD*V@Q9Ax6;jDlkFni{*l5hjs{=o=;?7V}9L<;gz3wlPgmJIlmF#90Kh^rAu7FZ@Z02YZy?$=15RhcCS`X8dz!9a$t*95oMb1F z<5J=`;IaGv=(NZ`VDl{hhxt(D;?o=Cn+WQKOF%x=`?)W^f515hr%N5!G(FjIGlNjh zpkCpM9=-4Os1}tBJxCvjR%rJi-DwQG?*(|k@6pn2JbHuL{VTeQAe!fuhJ(!D3uV6k ze&x|B=P1BxUg|47qKX4UpQ*(Ney*pmMZDjhPZ$YoLTi{ndd9765D<_p-c6 zghZ*vGKScIe|s0*F!Lg0N@_8zZ%zcQfk)Vo4+f2ZtkCM*T+37R?fv{z#jebAp|3TRBIf>j16Z8d9Ht>7QBA@koa(zT2Bcz)B z|FoH;{es<-X>hhNv}T>Mu2W*Smp$5&G#k40bK@T_29bcg0Rt;5f1~~7TFAnQ+ail* zW%jjsduTnM0NhJJa7NOP4|#X2fP>}YmU%X1cZLEUCUCNWiR?*`DoXIVc%+SltM3Y~ zguB~C0J9gv7JV^TROaYaZnNmz1`bK7^AW`Z*+>cK0sR>~+<|AobbUog4Bp(u$9bEV zbTbm|`lF4AuT>ZkO`5Zl0WaX29~VH6ELTpwBx3y@UDgd_J-p9(eViUU%)$@jHezV_ z?2)UGu*bFb<<5eo{h=^b_20Tbem(-ZP1wNH=Yh$gd>Ytb?h6XOcXbVIJvMOA^0?=Q zqqZeF=8i)c=OkN#W1e;wld@W0>ltNTl&qQXUkKz^IAzs*1q&{zpjUt|#^&#!ZPkB( zlFbLqha)%uRWM~~85}PlYLw$Nuw3S?13onQY5&dY;SF?kd#SJ#>Gqk_d9T)u%HWw5y!WeU@1p!WOQqg4IOf&+ZnMev|M@wk z8w*Qw`-iYEO@5KM)0!LnoTWYg^vW+Il-{4ZtO;m5vD*mNV+~nYk$-s?KkcB!^|;k* zHe&jdT^NnT*5&j6q0SdY`_#V5|G+9ec~lV}+xVdP+`qs1WemT;p{maCw2k&={5uXf zPi~)&Ut|!I2o%5e$?hg~@zlSUv=!TBMes`(x%Elxf$6{3A28sZlz&HtoQ(Q{*o*&O zeh&R|yNH3CmtT=4JpAv~k#bf9b=1Guet#1CM$=^aAC|Y}2|u6R5f~mgJN_ua$Vtp( z-XY<{rpo~IYI~CC_nE2$Vo}Q13bIDZ4M}#EL#Pp!uAEEv=$42~UpSJmcNA-WmwHF@ zPhsn&w5jxbE1u^Fm!2_QtJk*BsR$V7pNiQ*gYF zMa=m^=(4HMH>*`Gv?n{=wG&_A?e%0wK9>6U0dpaZtH|lkK_#R2#`#_LWWG2*U4b9; zsHx#o7d5VD?(DKqic)_tMi22#E-Ml`k2JiBzL?ho4~LeRbLh36oY=zYh~Bq3LIP?X ztCeCf^+{Xg3XP<%lO2Cq6S$NXR&BS5d%V7{<%#q4s@7e5-ibhacWig|8EXiG3`tNl!W0jUp7n=fJ-_4;`= zMyG#&X}XReiX+munFz z??zBV-XyL^ZV{uH09UrjIyDkMn0iuS*yJwGgn35w7!AHh?v+O!otxWh*u;aM*pfe1Z{X?>jbl&?7D}%*XuZ7{|KoVblP# z?e5cy*NGa(&%Xkrbipr}+sV0aY9(S=lICE}hB2KrR60&A>3iH*{ie3v5A+CqW1)!p zSak#Ii~eBa+i;D3-(Z)u=-BS_;2@z?3_HKqGx_46AJ2xW&8a)$8ecQ``T5QNn!4jl zdVP9Mvh5je-P32e$b^hc48K9AYIn0t6neIgKSju+!RGW9qoNV--E85TJc_0Dw=+yh zOD*gSv^?&*F{9#3u2J#{XEmB<{H#%)=XqO!3Z*;}GaA0Qt$pLw!E37AddF9%#~5S0 z#k#u{_;?SE;#Fcn#w6oQP5T9^&0x@70!Qy zV!{9w%&35Xf$Q5)rWlWB&gLeoo(hQ)*JM0MlUJX`S@6zs$CUli-)>L>?TdeKa2*pM zIu4^!-@nJ+gwAb?>y2D`tq)g%et)lUkaCkq)M=VlYmKQU&c0ZM;^q#1wN&t_HG<>4 zueQ|yaXcpw-jfV69Y_UBJY+NvaVRJ{zQotw5UCJxK-hW=XHlY1e^>CFGHSXBqUbeH8K0wA-7PsF2 z@S{qxRq(^*U`BIcvA`?W0kE&2BG(pr(&mS;&5Ql&PNH$q%${cL+c&(dFy2pQ{UKH& z;gJTFwKd)R?++eZhj$;|xj-9EHZH9bC7Y|5<$pFs92<6Rw!?VrAV-?YW<@Yd#p6f& zSW~qLFr2b9E9>euKSppF-l7tfR!SCkzUd;gMJ^jB_|0tWkobW8^N&02k4|jgD66;7x3vTI=rbG5J{2!Et}iSW;Bmk|6*^tr!t=-Wsx zzO-k(oR7=*nT*vB<3_0N!P{%VwdCLD3cNAGu5*+XmzztQ#MaR(dud;Y+7Oi_O_tiF z_LT`27k6i3Tu^#(q?~FBu{FabIl>sY8nS6L*|^v_10;ayo|FjQ)#*eM9$U^}Tput&d$0eu$*B-5~m)@GmFBV23hMOX2pqCm zrqdx4Q+a(ZhCX4LMog|)>%@u-vtp?RVrTf7<+~=NZ?HAL>%l)eKF-hQXkx03%cHfS zSrt!$+?P5OxQf;L@p%?^v-TdeGOPy#Pkbr~tX%9iCAvW|nyj4Zu(335rAaQhPw0A2 z>6UHn*{go+*!5)$O4rPH(re{ zWD{}NT9c=yIpfq%g+3RMOk2yGvLzD{IeGR)$jZZDYR3 zSP(wc2|0b%BB9zr*WRl-VXwC9gl<93q3vVzZCJOP8g5{$1}Lu zrB|q2X4qZ~c>dY8_y2Cb-ktZA&U~~?boSf&_D@$AVkL~~Tm-&;QqhCGDS$N6T;yvJ z3BWni)w%mOjr`>e$T0ep?_wtqst*n>>EyF)1U1m&;I+y3uFvTwEH#hS$szwBRx24!yt!+WA@H3*J_BO?lx4%Waa3t}8= zMndR8`$!DCgAVBPq2K>v#^xLlsL+SBgX%sfKYs>@9ry0v&(&+X1r2{RR0_vyqh&$R z+*8YU2fhfJ$OU3+U^+<`uS0KsYIRjQRX!0;SL-3x9%gNe;R^!A$$nh0>NtGIh;z8q*Vj#W=EqDyrpPlTfmA<>r$jAt0EKxZ*%+^%^ z(Y^PLFvqoT031rXi0B|Na%fu72Jc@5$^nTwEH}JK6Dn*OQ>HuP=i}2@W)p)GdG! z2Q4faD1T9CY8j}C^qT_jFR=>>3PKZ6l`0OXEv&#~+c|<}NKc6cq6-fd%QZcn{%Ch~ z2FOPsyFi~dk9LeelP22t;E*RcY-4?iAI@=>1g8_Qz+eREVgK;(-TJsdKe#Whk5{rW z1Oe9wO6GH4wJIIZR6lTHeGbzM%qIRm^*p^RK-%6vI{UewdzfMR60c{wgX1D6^m6eRmDxg#WF6ey)_W}9<;Z(kJ z^6qQeK$$|o;elVX3OW;@gg^fXs8bx>5mC#hky>Epu`>Y;%8Qf0u0o-u_2BJ=2SL?Z z3;rF$dE-l_$H&L)qIke}@&u;aTOdlJnXDlD-`w8rA^HeBSp&rwOw^~0J5%>l6z$2r z;AH!y(yF$k{N?eQgC~GGvVMkaPGiEC#4S*ivyVe!BPBn!mn@&!tr?xH@p_rnWRRKD zZ1fkRmSM@uXs)|faH$f}uXJip5cnjV<}`vm0p z(?IJRt#l-WqZZLD5%Ai(LC*gb6tEyerj%s4LWztsith0xrPAURwZnq4tGxQ6MFXv7 zc&gkB5dsbsOhcqEp~;Y!ZjdL~tPT^u>4@P=-V_AtBTVAd3Gj!Ag=qCvV#l}-9$4fX zY@p=Kc`;SpVP^IRj*lFWBYk#YrAQU8153%cA{)*q@%%oyw&n|mmy#po0^3(3^W5IKna*zXzK!}{V5NVks=?k39GJj^z+Rt+Y>sCh!_=q!g|I1 z@)a6N4djXcivSEQ98VhMM>XH0g+Ga=g+BlHYh5H~4%DU4F7@GBMC#`=r=9WJ}4?KREQ z2d(2r_S)b_*9%s0*+7#c9wz6rk&@-#MBL!nrZkc}N-ZufM)KR|Eg!=v-yxx)Nwc$h zK!6mN71#-8Wn;@$6^6(8XE8a>2t2RUOW!5JY{8ybINL3*?t=)u1M|@sriX-#j52Wc zzxjc?$s1Uhhi&FA@jfJ6M&lLs#6m6=uwF+dI}Ct%C?PAW^6njyhyHx(Si2|CYU_tn zm=}$D^7JKl7JHt73cr`kc9c?c^b&+-EOcPwu-llt=yzjscrxVGdq&1*8#`qpw_F`D z_j8X?C|CFWgAODMSd}!)%+KMG4L~@Vo1agHk52=dm3vXp1L?pv1BG|*@__rC32rl` zoCsHMea=hRj3lI`mE`3Eo12^2EvD<}`#0M8)@kVIBxq@A)l1%fi*?>rJ2*TnYZrnO z&JVZa&N4a#kEHwr4^vib%BS2l1A!Ww1d!SCLRY+mghV%_Xn$sdWQ~A@d+pQ&{YzNN zOK_O09DGQ3cXt5A4+a{aPhG zI-0@STQWnq<RjasN%( zuyYy%qnqob*{5scCZRut6Du${`RfYn;p-=tucA;J7h#c=!Dba79E@kZKCX#=Y|!!H zFzTg|4ZDaUpXq}qBPhedDn&;V+H4Y=b@4U7koE@*6skfTZXM{f*+6=i#Ufw;n`O5L zh;(EESQpusv7%^`|2nbR({mmX+WPHn2VC_^ z%zG!Ra$X~%T6@j}BY!~9@dEm9z-C`l^=n$&)RV-k8-u< z-kl|a&hX}ieI+xUUl-j`D2<4rM%hn16Lfd<{F5c$li=x51ULOGlblrV%s}8xl(^oU z5+Y1P&Gg8MZ}Vi0Ss1AddG+Nz=BWGmsqZK-f>O7>khxTa2%%74UFamRte0wx#&Bd+ z-#+BF2J%`kfdl$_-b%Y+3f23NpiqytCrL;t8%x;}&F$qh*H4*b!#;{~|JlTnKegS$ z^8I5)iyEDb#KuAo5yJ2G)LKreL|Bc8VsZHc>6l#$O<@I#+&M}vyE69P$8Wl-75$x` zCs#ShCRx5Q8YwGeyil-XrG^@H%|VYJIqsNlK|A?a%I=T*ykX^%&$yhRn}spdEWxiy zyj0U6B=%6fKr#J}$K4O4&9vJCJ_6($|L3cbz8x)nJ?F%`mZ^8Gp58ncnDIF91Nx;I zTlT*{J&sYj*{Q{4RXWmxdG77`*yHQ)k$#@lj-gx5=G}`mRcW6W9%APFt{l4jSyAMv zdCb;&;s;l5>*IRM*sRO0QOx;&uaQt_wPZZ@Hv|LV4V;M2wC8q7#G;&^(1U_pXeC!$=GRX?s;3asSl>2LI zs}xU+jCf!Zq9?DR5e-)C>5%0#>9N|EDWV1dmwyD~t)!^&)t}&@fF_L5qj-FL!e2U^ zO%p;nUCx@tuYQ0RNk~{&GO+nHf@bWaMn^T^)cPj}2M1-_?R*@1zi`05Srk5UXlRHR zc+IePB}0zYhE zwdL>T*C&L2n=)G*P*jXwH<7x;!=ncNN(-Sn@F%>sYZ>sl;DArY^X@5uSN%ihGet;| zg5kRU{IP?VrKNBF`F2GON4uZp8>8TJRj+aj%#y6T*^7jc6k{*gs4Yd5cxt zN|Q3J#D=xIK9LQVA}+6`6$>Mi460xiW0esfXJ@nh8>HNKqS}%+-tHwZs-$JpHkNk} z#wsc+!>Q4s2rXO+kWs5mM*RJ81h#%rp?5+^c(b6B#igct0Tp(2nyCnhB= zQJn2RE1Us&gR+H1uDpUmwtNVB4!TO(BTA~z@vrmmjas@7C`m|4YEDE;%2&Ibu!A9( zy5I6N*Q#>55@fFfZCn!>XQ%6DoTMGUeldGnEOb(i*^HQipM4kjFgVhLvc~Lp;dQYXJ?by4Phkd@6FfmiXRc9D}lj#i83x$gG z9dN@0db^wfVvzK+ww41N(LQ;2Ebnj5KoVhF2rk}b^RbQ^*)!AAz2M}g?x(%R-9lOdptl-e&Rf@vR;H-YQg%_r>8rM{mKy1*(&sY$W8~ zLyeN>5X(AuOXp*IAVtx5{6xBE+nD62Xv9nb#tX#%sbFBB1#fb=lHYN!2_LzqC=SUD z_;3}1;>>8>8Pc0~+@z6ghQ4slMH<}pn;O@1!{C($nYz-9BdGF&hfI{A8cd4;qkwQ2 z`S=(<+kQJ!sP^<(BmUIh5bCvqjTUwytBMBFXzmv_)-XXsGgx9f)l*Ikn;hofEud75x(+8RhlU%~iDm2S9N`VRz6Eq@<*X z6_392f~zrq?O3{}g?||ihLwbw3bfcmFrc_Ees(-BWK23@!r8KD)xUo`4~lGf>N0&F z0_b4O1Mii`Xf~aLYnwFM_DrS(EfH$(?9AR?Mf66H_DcCZqrG-m`D4E? zU*w=N$8H1yyMpcrR2~rP=VoV9fM&mwb^tl-JKmVAHb(S?ASe|-l~#rltJEKGSi;(2 zDi{F9_1bBgaxMFmegV;4`MpK-vcD$|bND%EFA}|E+5Hosijt7eR9IM+e+KI5M9JM7 zgRrpgfeF2G)+X^xcW!#<-IdYO9u67lSC9J~vk%u3*H7k!&Pwks3Y~2Wq31S;bR?=z zk)3RG3T`y@I0Qlh=A}!^aCtjfLiF^KV3}xkz<_>|sGS+5SC1tmJo~e?*AF9jtvMqh=Z?7|UYGnQc~75B3#hYErH;L%g?cB(q%rDNJUrUs*3G zu-L`BLAa3te`^GEBP6TiYtow|Yo(q+CCQstuU`EFf0_!^S&lWT9J@^&A5xxfrIC*} z1Q#6EVbS|H>2*soRVGjhyT67tN6cjweY)WxRPrP^jy0-nX{@{$d0a z@>(w?R66d_v9iiDRqcO&bwyOTmvc9f?TS&P(j9U1kKVm|r^gzBmS43+ur(sqYrcGI zoe)#|ip{lw%WZqOR=&;-tHX4>qO@QCa@oG29q99%q3-N!zXleAwH`OJZJeNFqobpH zXZr36`i@G{8)M-e?EV?WTMgP~r88Zx85Q3j)?OZO5!ne)N3DaiT1 zPF3i96lTu^!Dl(Ae+AfcTzmYZ&p$jo1(1-}KyYjR^$X2??M;#f3RB%LvtoMCFRQ7c z%Q48VI^+EWC7%C%3gk~!-})f*G&G$694Wze3<3Bx970W=3L7Ok2tNDZSb~g)FNzdL zj=Lr%v;`b@dvjjZ;t>-s1rVdx4k|>|-8H@4AfJ|=zGWvx)T{pc;NT#y(DUPI(E~CFf)s*89puz&mFeDKQS;7qkxW?v|76lQJPsx(! zP$dENIstHcCyX2VTT~6cos#NX*mYqoLr|w>V2}b6I7m8ClNaybzfT9Z0nS6gv9Vb& z*&NF5!3Su#4=@OGTP^rA5O|?&;b3pV#Y5F_+@qlp10pBDWKpdK`G74Uvx|Z7_iu@` zZW6#jLr)-UgP6JtS-tCneh>}wkY11Bx9{#rgg^R90DlA%oBrd+|K@lF z_XfEtYU6sCa~Z~6q%)%yBfU?3rURhPd*TpvdqEPhu*jNyHN7tl?vV3P8f5 zAl-nBK&(5QMYjOdY_+nW+_^6f6x|*WXN@heEIClQ6q*eRq*BH$?rfBzUr|$7*Vu!} z-j7aZU-StYL$XQsPXiioag2ho9>|uYVxb2Xh7j`IXgWi_<6BjX{2DNy*@j zB_Jd%McR3KU(jBM#p4c=a9~U%^Q#ZtJv}>N)yE=07VQV6?4MS)4zWP=D1gLTEYM+Z zEfc<=;pQ$;j|(#{hU^VyCoLGqm{%Pn-MV!vI5;=~D8v2B&QNkEA41xY2|{M$#qLD# zNAyoZWaF{`3@jbafMNo+RrP|`0l;Nsha}1w1b|uF*;R*W;E-GZ;5|AmL>KSlz}p%) zaPKdJcnwSA4JZN24t_`Nz?IQFe3;oDM}b=Bc=huFI^hIa9p{CMlA#P;a2z^^PTghc zaONNJ91vJ)P9jfO-4K9AjUfnR4WP3M2n@!i2xtM(+27krw4#dxY@-M8MquOB1bu8^ zLQT!1fm-Djk=id|ayMO~dsafoc zv$=6!_u&*j7ej$>o786p3zeZEy7h2wR~{NkK$z->PL{A(&~t$$23P}Hzq>0)8=%}V z6D63E^IqwP)7aDv=Pl;@pCm93xt-ZqQ1ejgwgF|w|GXhN1JtUYJ)3;e6LoMcaIPwuybV@qZ zBE{pUZ*6i5$4;)oPrIRJz%~cC|iK*t3))FAm%KEB9F*1hp| zI=#09ne7k;Z}Oxb-T{woT)wjlh4Rk=@24uwyNiw|k_-DC zJEc%~Gx2my)F7DzkdH*Y#}lh_=G`q{a_#2jX(2spJJxD|iNYW4b%fn{GfPx_Vzyu4 z0*xD9K2|{6R?X7bQx-1{<@AySu9Iu%Rdn59Kd*-p5vJ?R53BOpCg~%SmYX)|rZY=77jh*k2L~U7oV$4O@FvmrI4grptfse6TRJ7w$D|j*6%VYsXrBYO~8y84l<+Dv*DzkFgF*}8~8pJ zjp4D#9oD3_rhoY0EpHs`l%Ae`?!tvO)UKqYrQcn5fFbEb?*K7e9k$GVgAuK#AaFMG~nO_wZ_cIxim%5&>y1Ug%kxV;099&MU`;2{SI3Z$H3xafemZPpROnXT=i(~|+ z)CY$?(fnUkF2aUcRL5d@?Xb5eZ+A$6fR9u#F7Jrn8jX&<335HD7#X>Mqp*AFzHOc8 zA1eJ(YP-quPMEW)r_JofKRw&HHyZ2N z43gX)wWxMvAW9U6veOSDGBcgw;sAodnJH?V^QD$_-)pH5O`GtYSDhVP+hviR^)~2j z6yd`Y;!YC^le&4O)UI%I)t;s>=D3xC9_0cCVRPyYc+TC|WJFZx(VBU?ZK= zFIm+J{`#{?2)J$Q%N=7mJgK;*!3ODEb0&wyn%l`=kimCeX&>^?p2J^(K~@V5u>v|BWuPV%&U^GUwTLt1U)tg>jcJEK9_u> zq1`>ILl@7$XgkxHlo5YHpk@#}T2|?B%!La}9`TUWl869vz5_e!)!5jPlA3{IgObEl z2oiM;+`YXBuz~iO^vtuzlf{0tRgKfI$P5y=<=>IS2Nel%wp&JtNux(R)y6UrKbI+! zMsYpAcT9UuOmGIx^brPL?U!HfcTYnM@UA=3(*q2kpGmlbe~~o^2>3#wSW>CCo;6}o z851y1Y~X%972Fgj0I)b9BmqIY%)dt1tf|WSR8>1)QNVLQsmVUX@bc*w_KTf;@02L&4nV=p-_Y z?e>Q+hXWKl6qh1}0gXmIaG*l|Q{0(RJ)h3|Cg{wM)-ccK!z2DdyQJMOA?9bLW7PcQ+KXRz)ugjh{o2p4t zuRg^`Hxox``y)}EFi*{`StmkrLp?n`zs)p>HMqS;IlbzZTug&|*9fi2YVpgDN+Nd_ zDjV^7pJKM$#6b&3z#^-lpfY4a1oY_IZwL`mwY0n8ww@Jo><;)dv?Hafu^8a|-fBOs zRaf(&+SUJxhvvp$EGy6LnjzD2e7>w_v9pdErDi2&%gy>c3b_$y#HJ%Er0L zl!&*YIYdQ9RdQH(IE1e1x^=02TzDWlU>&GC>UdMOo|nExSU9U_WD7LI!=0>prpO^_ zx=n7Z^=cds_%rFB9*^hQwHG$9`&4Wiez8MwcAi%;pGjF|Uj#FXM}%XZM*{M((kwy7 z&=jcSr6ifSzwP(^0$EYsKgAT6)9K1Jy3{XE*j7H05H>gsLCT1-$)p}MEc#vQ?-^Ft$Dxw{rfq9Lluqtjmm zcY&>kli4mUFasiRB1i)zlB6nT@%5i>JlEVcw=Y=4raj0ddVSuNIgq&{vnLJ{8}#G_ zE-b~mmoqD)>sHqenQ7KiiHU)0xVw%NdZdRvOgWtPif2qsPq&|r{R?c#9QA11L2ZlF z_n#@sIgukJFK_kUxE5OJ$os?E9?uEYwO1%vj{Ti!sJud`EiZF-uY$)tzuSwGjsz8T z2P+1n1jkIYaYHB6@RN2r4l@n+6mrPwt^zT40EdqP&Zz%iewFprB39oTTY=b;B~*9! z6ig}GF{6D0hN>0Q90&LD%w^L{yNI8yo`uG|h*E=_R~pUs$;*IH;hK4sn;VON*PT`U z?RoKcqN3IS#P^U~4*?+G3!uYqO2#PYbp9Lsc-99FT!#Ht+pFUtEY=Fy6S?*Ed;FE& z^ys^uQhF0#Ur!6(X6l^pyE3)1^3{KbM5x%tQ#vW%a2T-{JZ#nBdhGHDIv%_7DXuW*FwEo2l zpSBxSRX-26=emX*-7ZvAmRKvHs;^(OPyui!I3;F(P zTwLZxi6D|}tk+U{et*%S|B;U~hHG=z#=c&@kShskIfja^`h_`j5{Vy4j>*YLR{PCw zry*9fclNc6nvf#Dcy^4#$YQ_QTx|2M^8vpkg+zJ8Uo0=}ZuM!m(Xlbk9m6v;WL08I z{rlgYJ$TTjS7&^se(>uXIXUIre=Z;G=WUBV)ZLeaBV_;e19)vP_4w|#a#s#h$L9KA zf@bYS{?rl?sA#!$-19;qow+VL1 z7CSFSwVO)xE(kY#YZ8saRx4y=QZ8M(p5w4)gqRa4|A z*&>@2wSCm-><50*!SA~m+e)9xZ7Dclf-@1Ku%?ipXJu)yLL81+Ns?=eZDQB7?*@y0 z)pxRguSRig}eQ zUAq!~R)0IDpmP36t$eSrQ1*#{Ghy}h8fo$4yC@Q2p?MQ0Dflj~L1CC^G}R`+}|iX{snjt?=k=Y delta 43589 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

dVV`t3lTIzXqQ}V@E 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 delta 19021 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�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 diff --git a/frontend/src/scenes/surveys/SurveyCustomization.tsx b/frontend/src/scenes/surveys/SurveyCustomization.tsx index 76fb35c4fc6e0..20e29c274c19c 100644 --- a/frontend/src/scenes/surveys/SurveyCustomization.tsx +++ b/frontend/src/scenes/surveys/SurveyCustomization.tsx @@ -2,6 +2,7 @@ import { LemonButton, LemonCheckbox, LemonDialog, LemonInput, LemonSelect } from import { useActions, useValues } from 'kea' import { PayGateMini } from 'lib/components/PayGateMini/PayGateMini' import { upgradeModalLogic } from 'lib/components/UpgradeModal/upgradeModalLogic' +import { LemonField } from 'lib/lemon-ui/LemonField' import { surveyLogic } from 'scenes/surveys/surveyLogic' import { @@ -162,6 +163,40 @@ export function Customization({ appearance, surveyQuestionItem, onAppearanceChan checked={appearance?.shuffleQuestions} />

+
+ +
+ { + const surveyPopupDelaySeconds = checked ? 5 : undefined + onAppearanceChange({ ...appearance, surveyPopupDelaySeconds }) + }} + /> + Delay survey popup after page load by at least{' '} + { + if (newValue && newValue > 0) { + onAppearanceChange({ ...appearance, surveyPopupDelaySeconds: newValue }) + } else { + onAppearanceChange({ + ...appearance, + surveyPopupDelaySeconds: undefined, + }) + } + }} + className="w-12" + />{' '} + seconds. +
+
+
) diff --git a/frontend/src/types.ts b/frontend/src/types.ts index 9b14ea8d07f3a..a171f6daeec28 100644 --- a/frontend/src/types.ts +++ b/frontend/src/types.ts @@ -2653,12 +2653,13 @@ export interface SurveyAppearance { thankYouMessageDescriptionContentType?: SurveyQuestionDescriptionContentType autoDisappear?: boolean position?: string + shuffleQuestions?: boolean + surveyPopupDelaySeconds?: number // widget only widgetType?: 'button' | 'tab' | 'selector' widgetSelector?: string widgetLabel?: string widgetColor?: string - shuffleQuestions?: boolean } export interface SurveyQuestionBase { diff --git a/package.json b/package.json index 2903873485f24..1f3a0788af5d8 100644 --- a/package.json +++ b/package.json @@ -146,7 +146,7 @@ "pmtiles": "^2.11.0", "postcss": "^8.4.31", "postcss-preset-env": "^9.3.0", - "posthog-js": "1.140.1", + "posthog-js": "1.141.0", "posthog-js-lite": "3.0.0", "prettier": "^2.8.8", "prop-types": "^15.7.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1466d663e04e3..b15a8fad0a46d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -260,8 +260,8 @@ dependencies: specifier: ^9.3.0 version: 9.3.0(postcss@8.4.31) posthog-js: - specifier: 1.140.1 - version: 1.140.1 + specifier: 1.141.0 + version: 1.141.0 posthog-js-lite: specifier: 3.0.0 version: 3.0.0 @@ -17706,8 +17706,8 @@ packages: resolution: {integrity: sha512-dyajjnfzZD1tht4N7p7iwf7nBnR1MjVaVu+MKr+7gBgA39bn28wizCIJZztZPtHy4PY0YwtSGgwfBCuG/hnHgA==} dev: false - /posthog-js@1.140.1: - resolution: {integrity: sha512-UeKuAtQSvbzmTCzNVaauku8F194EYwAP33WrRrWZlDlMNbMy7GKcZOgKbr7jZqnha7FlVlHrWk+Rpyr1zCFhPQ==} + /posthog-js@1.141.0: + resolution: {integrity: sha512-EuVCq86izPX7+1eD/o87lF1HalRD6Nk5735w+FKZJ5KAPwoQjr5FCaL2V8Ed36DyQQz4gQj+PEx5i6DFKCiDzA==} dependencies: fflate: 0.4.8 preact: 10.22.0 diff --git a/posthog/api/survey.py b/posthog/api/survey.py index 1203b4ab47292..4065c0874191a 100644 --- a/posthog/api/survey.py +++ b/posthog/api/survey.py @@ -5,8 +5,10 @@ import nh3 from django.db.models import Min from django.http import JsonResponse +from django.utils.text import slugify from django.views.decorators.csrf import csrf_exempt -from rest_framework import status +from nanoid import generate +from rest_framework import request, serializers, status, viewsets from rest_framework.decorators import action from rest_framework.request import Request from rest_framework.response import Response @@ -20,13 +22,10 @@ from posthog.api.shared import UserBasicSerializer from posthog.api.utils import get_token from posthog.client import sync_execute -from posthog.exceptions import generate_exception_response -from posthog.models.feedback.survey import Survey -from django.utils.text import slugify -from nanoid import generate -from rest_framework import request, serializers, viewsets from posthog.constants import AvailableFeature +from posthog.exceptions import generate_exception_response from posthog.models.feature_flag.feature_flag import FeatureFlag +from posthog.models.feedback.survey import Survey from posthog.models.team.team import Team from posthog.utils_cors import cors_response @@ -134,6 +133,10 @@ def validate_appearance(self, value): "You need to upgrade to PostHog Enterprise to use HTML in survey thank you message" ) + survey_popup_delay_seconds = value.get("surveyPopupDelaySeconds") + if survey_popup_delay_seconds and survey_popup_delay_seconds < 0: + raise serializers.ValidationError("Survey popup delay seconds must be a positive integer") + return value def validate_questions(self, value): diff --git a/posthog/api/test/__snapshots__/test_properties_timeline.ambr b/posthog/api/test/__snapshots__/test_properties_timeline.ambr index ac8cf04120ea6..670ac0cd349e4 100644 --- a/posthog/api/test/__snapshots__/test_properties_timeline.ambr +++ b/posthog/api/test/__snapshots__/test_properties_timeline.ambr @@ -446,7 +446,7 @@ ORDER BY timestamp ASC ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) AS end_event_number FROM (SELECT timestamp, person_properties AS properties, - array(replaceRegexpAll(JSONExtractRaw(person_properties, 'bar'), '^"|"$', ''), replaceRegexpAll(JSONExtractRaw(person_properties, 'foo'), '^"|"$', '')) AS relevant_property_values, + array(replaceRegexpAll(JSONExtractRaw(person_properties, 'foo'), '^"|"$', ''), replaceRegexpAll(JSONExtractRaw(person_properties, 'bar'), '^"|"$', '')) AS relevant_property_values, lagInFrame(relevant_property_values) OVER ( ORDER BY timestamp ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS previous_relevant_property_values, row_number() OVER ( @@ -482,7 +482,7 @@ ORDER BY timestamp ASC ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) AS end_event_number FROM (SELECT timestamp, person_properties AS properties, - array("mat_pp_bar", "mat_pp_foo") AS relevant_property_values, + array("mat_pp_foo", "mat_pp_bar") AS relevant_property_values, lagInFrame(relevant_property_values) OVER ( ORDER BY timestamp ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS previous_relevant_property_values, row_number() OVER ( @@ -522,7 +522,7 @@ ORDER BY timestamp ASC ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) AS end_event_number FROM (SELECT timestamp, person_properties AS properties, - array(replaceRegexpAll(JSONExtractRaw(person_properties, 'bar'), '^"|"$', ''), replaceRegexpAll(JSONExtractRaw(person_properties, 'foo'), '^"|"$', '')) AS relevant_property_values, + array(replaceRegexpAll(JSONExtractRaw(person_properties, 'foo'), '^"|"$', ''), replaceRegexpAll(JSONExtractRaw(person_properties, 'bar'), '^"|"$', '')) AS relevant_property_values, lagInFrame(relevant_property_values) OVER ( ORDER BY timestamp ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS previous_relevant_property_values, row_number() OVER ( @@ -558,7 +558,7 @@ ORDER BY timestamp ASC ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) AS end_event_number FROM (SELECT timestamp, person_properties AS properties, - array("mat_pp_bar", "mat_pp_foo") AS relevant_property_values, + array("mat_pp_foo", "mat_pp_bar") AS relevant_property_values, lagInFrame(relevant_property_values) OVER ( ORDER BY timestamp ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS previous_relevant_property_values, row_number() OVER ( diff --git a/posthog/api/test/test_survey.py b/posthog/api/test/test_survey.py index 67ed3722eb226..363688915daf5 100644 --- a/posthog/api/test/test_survey.py +++ b/posthog/api/test/test_survey.py @@ -9,7 +9,6 @@ from posthog.api.survey import nh3_clean_with_allow_list from posthog.models.cohort.cohort import Cohort from nanoid import generate - from rest_framework import status from posthog.constants import AvailableFeature @@ -1249,6 +1248,7 @@ def test_create_basic_survey_question_validation(self): "thankYouMessageHeader": "Thanks for your feedback!", "thankYouMessageDescription": "We'll use it to make notebooks better.", "shuffleQuestions": True, + "surveyPopupDelaySeconds": 60, }, }, format="json", @@ -1271,6 +1271,7 @@ def test_create_basic_survey_question_validation(self): "thankYouMessageHeader": "Thanks for your feedback!", "thankYouMessageDescription": "We'll use it to make notebooks better.", "shuffleQuestions": True, + "surveyPopupDelaySeconds": 60, } assert response_data["created_by"]["id"] == self.user.id @@ -1676,6 +1677,38 @@ def test_validate_thank_you_description_content_type(self): assert response.status_code == status.HTTP_400_BAD_REQUEST, response_data assert response_data["detail"] == "thankYouMessageDescriptionContentType must be one of ['text', 'html']" + def test_create_survey_with_survey_popup_delay(self): + response = self.client.post( + f"/api/projects/{self.team.id}/surveys/", + data={ + "name": "Notebooks beta release survey", + "type": "popover", + "appearance": { + "surveyPopupDelaySeconds": 6000, + }, + }, + format="json", + ) + response_data = response.json() + assert response.status_code == status.HTTP_201_CREATED, response_data + assert response_data["appearance"]["surveyPopupDelaySeconds"] == 6000 + + def test_validate_survey_popup_delay(self): + response = self.client.post( + f"/api/projects/{self.team.id}/surveys/", + data={ + "name": "Notebooks beta release survey", + "type": "popover", + "appearance": { + "surveyPopupDelaySeconds": -100, + }, + }, + format="json", + ) + response_data = response.json() + assert response.status_code == status.HTTP_400_BAD_REQUEST, response_data + assert response_data["detail"] == "Survey popup delay seconds must be a positive integer" + def test_create_survey_with_valid_question_description_content_type_html(self): response = self.client.post( f"/api/projects/{self.team.id}/surveys/", From a902636c9df7efd4c83ee4b45939342dee4a7d14 Mon Sep 17 00:00:00 2001 From: Eric Duong Date: Tue, 25 Jun 2024 04:20:18 -0400 Subject: [PATCH 17/24] fix(spacing): add spacing to table descrip (#23214) * use p tag * Update UI snapshots for `chromium` (1) --------- Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- ...-pipeline--pipeline-landing-page--dark.png | Bin 88655 -> 88972 bytes ...pipeline--pipeline-landing-page--light.png | Bin 88903 -> 89225 bytes ...-landing-page-iff-legacy-sources--dark.png | Bin 89357 -> 89675 bytes ...landing-page-iff-legacy-sources--light.png | Bin 89624 -> 89951 bytes ...pipeline--pipeline-overview-page--dark.png | Bin 88655 -> 88972 bytes ...ipeline--pipeline-overview-page--light.png | Bin 88903 -> 89225 bytes .../data-warehouse/new/NewSourceWizard.tsx | 8 ++++---- frontend/src/scenes/pipeline/Overview.tsx | 14 ++++++++------ 8 files changed, 12 insertions(+), 10 deletions(-) diff --git a/frontend/__snapshots__/scenes-app-pipeline--pipeline-landing-page--dark.png b/frontend/__snapshots__/scenes-app-pipeline--pipeline-landing-page--dark.png index 023c3569170cdc3539d3d06bb0c12cc7c14d551d..cbaafb7f3456526a7202c34c41e5978f7780d2c6 100644 GIT binary patch delta 70509 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 delta 70277 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
eS)+30K==2FI#8H)06P9z>7(zbt<^0@^Zy1I-Yr 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 diff --git a/frontend/__snapshots__/scenes-app-pipeline--pipeline-landing-page--light.png b/frontend/__snapshots__/scenes-app-pipeline--pipeline-landing-page--light.png index 6525eabe68ea89da88150a8ac02d29c57f7fc332..011c702ddcb41a8e71a04ba135655c6c35dd628e 100644 GIT binary patch delta 71376 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

*3*n?iD2&b4~+qg6_Qr?}(hlPRHyYT!-ZW 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 delta 71167 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

onA3X}ybtW^KdTWY>}o<2+qK@H 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

j)jf4!qD;^6}x;)2lFPAb;p8 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%0D_nc5!oKv^9WZfSA^ms;Xr72YV1Q(^~ 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 diff --git a/frontend/__snapshots__/scenes-app-pipeline--pipeline-landing-page-iff-legacy-sources--light.png b/frontend/__snapshots__/scenes-app-pipeline--pipeline-landing-page-iff-legacy-sources--light.png index 3ae106ea2bc72081c6f24e34ec65da50ce03c1b4..c3adfbba0722f14df38a97bc880b8163c9cc7e5e 100644 GIT binary patch delta 72287 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 F{txRnxEufg delta 72108 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 diff --git a/frontend/__snapshots__/scenes-app-pipeline--pipeline-overview-page--dark.png b/frontend/__snapshots__/scenes-app-pipeline--pipeline-overview-page--dark.png index 023c3569170cdc3539d3d06bb0c12cc7c14d551d..cbaafb7f3456526a7202c34c41e5978f7780d2c6 100644 GIT binary patch delta 70509 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 delta 70277 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 diff --git a/frontend/__snapshots__/scenes-app-pipeline--pipeline-overview-page--light.png b/frontend/__snapshots__/scenes-app-pipeline--pipeline-overview-page--light.png index 6525eabe68ea89da88150a8ac02d29c57f7fc332..011c702ddcb41a8e71a04ba135655c6c35dd628e 100644 GIT binary patch delta 71376 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

*3*n?iD2&b4~+qg6_Qr?}(hlPRHyYT!-ZW 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 delta 71167 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

onA3X}ybtW^KdTWY>}o<2+qK@H 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

Managed by PostHog

- +

Data will be synced to PostHog and regularly refreshed.{' '} Learn more - +

Self Managed
- +

Data will be queried directly from your data source that you manage.{' '} Learn more - +

Transformations

- Showing only enabled, go to - Transformations tab - {' '} - to see all. +

+ Showing only enabled, go to{' '} + Transformations tab to see all. +

Destinations

- Showing only active, go to Destinations tab to see - all. +

+ Showing only active, go to Destinations tab to + see all. +

) From 51170cb188fedd5995e10794e6aef9bf592eedac Mon Sep 17 00:00:00 2001 From: David Newell Date: Tue, 25 Jun 2024 09:55:52 +0100 Subject: [PATCH 18/24] fix: notebook migration json parsing (#23050) --- .../notebooks/Notebook/migrations/migrate.ts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/frontend/src/scenes/notebooks/Notebook/migrations/migrate.ts b/frontend/src/scenes/notebooks/Notebook/migrations/migrate.ts index bf450125d0506..2874216d3345a 100644 --- a/frontend/src/scenes/notebooks/Notebook/migrations/migrate.ts +++ b/frontend/src/scenes/notebooks/Notebook/migrations/migrate.ts @@ -82,11 +82,28 @@ function convertInsightQueryStringsToObjects(content: JSONContent[]): JSONConten return node } + let query + + try { + query = JSON.parse(node.attrs.query) + } catch (e) { + query = { + kind: NodeKind.DataTableNode, + source: { + kind: NodeKind.EventsQuery, + select: ['*', 'event', 'person', 'timestamp'], + orderBy: ['timestamp DESC'], + after: '-24h', + limit: 100, + }, + } + } + return { ...node, attrs: { ...node.attrs, - query: JSON.parse(node.attrs.query), + query, }, } }) From f2379816a59d66c12bf5f0f891712d2733014d6f Mon Sep 17 00:00:00 2001 From: Nikita Vorobev Date: Tue, 25 Jun 2024 10:12:20 +0100 Subject: [PATCH 19/24] fix(insights): support editing insights by updating source (#23092) --- cypress/e2e/insights.cy.ts | 27 +++++++++++++++++------- frontend/src/queries/Query/Query.tsx | 4 ++-- frontend/src/scenes/insights/Insight.tsx | 4 ++-- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/cypress/e2e/insights.cy.ts b/cypress/e2e/insights.cy.ts index 1bbfa1adfdfc5..c01d8faf4ce8d 100644 --- a/cypress/e2e/insights.cy.ts +++ b/cypress/e2e/insights.cy.ts @@ -114,13 +114,24 @@ describe('Insights', () => { cy.get('[data-attr=insight-tags]').should('not.exist') }) - describe('view source', () => { - it('can open the query editor', () => { - insight.newInsight('TRENDS') - insight.save() - cy.get('[data-attr="more-button"]').click() - cy.get('[data-attr="show-insight-source"]').click() - cy.get('[data-attr="query-editor"]').should('exist') - }) + it('can edit via the query editor', () => { + insight.newInsight('TRENDS') + insight.save() + cy.get('[data-attr="more-button"]').click() + cy.get('[data-attr="show-insight-source"]').click() + // Find "day" + cy.get('.monaco-editor') + .click() + // change subject to currently focused element + .focused() + .type('{ctrl}f') + .focused() + .type('day') + + // Remove day and add hour + cy.get('.monaco-editor').click().focused().type('{leftArrow}{leftArrow}{backspace}{backspace}{backspace}hour') + cy.get('[data-attr=query-editor-save]').click() + + cy.get('[data-attr="interval-filter').contains('hour').should('exist') }) }) diff --git a/frontend/src/queries/Query/Query.tsx b/frontend/src/queries/Query/Query.tsx index d565f29d6d9ac..3215e3bdb8cd4 100644 --- a/frontend/src/queries/Query/Query.tsx +++ b/frontend/src/queries/Query/Query.tsx @@ -31,7 +31,7 @@ export interface QueryProps { /** The query to render */ query: Q | string | null /** Set this if you're controlling the query parameter */ - setQuery?: (query: Q) => void + setQuery?: (query: Q, isSourceUpdate?: boolean) => void /** Custom components passed down to a few query nodes (e.g. custom table columns) */ context?: QueryContext @@ -134,7 +134,7 @@ export function Query(props: QueryProps): JSX.Element | null <> setQuery?.(JSON.parse(stringQuery))} + setQuery={(stringQuery) => setQuery?.(JSON.parse(stringQuery), true)} context={queryContext} />
diff --git a/frontend/src/scenes/insights/Insight.tsx b/frontend/src/scenes/insights/Insight.tsx index 071015465baa7..17d05aee1f686 100644 --- a/frontend/src/scenes/insights/Insight.tsx +++ b/frontend/src/scenes/insights/Insight.tsx @@ -42,8 +42,8 @@ export function Insight({ insightId }: InsightSceneProps): JSX.Element { const actuallyShowQueryEditor = insightMode === ItemMode.Edit && showQueryEditor - const setQuery = (query: Node): void => { - if (!isInsightVizNode(query)) { + const setQuery = (query: Node, isSourceUpdate?: boolean): void => { + if (!isInsightVizNode(query) || isSourceUpdate) { setInsightQuery(query) } } From ae3f5a00538461fe391d16d9affda2eac1db5fa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Tue, 25 Jun 2024 11:14:30 +0200 Subject: [PATCH 20/24] feat: Support multiple models in S3 batch export (#23105) * refactor: Update metrics to fetch counts at request time * fix: Move import to method * fix: Add function * feat: Custom schemas for batch exports * feat: Frontend support for model field * fix: Clean-up * fix: Add missing migration * fix: Make new field nullable * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * fix: Bump migration number * fix: Bump migration number * refactor: Update metrics to fetch counts at request time * refactor: Switch to counting runs * refactor: Support batch export models as views * fix: Merge conflict * fix: Quality check fixes * refactor: Update metrics to fetch counts at request time * fix: Move import to method * fix: Add function * fix: Typing fixes * feat: Custom schemas for batch exports * feat: Frontend support for model field * fix: Clean-up * fix: Add missing migration * fix: Make new field nullable * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * fix: Bump migration number * fix: Clean-up unused code * fix: Clean-up unused function * fix: Only run extra clickhouse queries in batch exports tests * feat: Support multiple models in all batch export destinations This commit introduces a new `batch_export_model` input for all batch export destinations. This input is of type `BatchExportModel` which can be used to indicate which model a batch export is supposed to target. This opens the door to creating "persons" model exports, and eventually extending this further with more changes. The change was done in a backwards compatible way, so `batch_export_schema` was not removed, and existing export configurations should continue to work (as evidenced by unit tests passing without changes). However, moving forward all batch exports will be created with `batch_export_schema` set to `None` and `batch_export_model` defined in its place. After updating existing exports, `batch_export_schema` and any other code associated with backwards compatibility can be deleted. * fix: Add additional type hints and update tests * chore: Add test utilities for multi-model batch exports * fix: Pass properties included as keyword arguments * fix: Support custom key prefixes for multi-model * feat: Unit testing for S3 batch exports with multi-model support * fix: Add and correct type hints * fix: Typo in parameter * fix: API tests now work with model parameter * fix: Re-add hosts to docker-compose * fix: Use UTC timezone alias * fix: Add missing test column * revert: Python 3.11 alias --------- Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- posthog/api/test/batch_exports/test_create.py | 2 +- posthog/api/test/batch_exports/test_update.py | 37 +- posthog/batch_exports/http.py | 2 +- posthog/batch_exports/service.py | 37 +- .../temporal/batch_exports/batch_exports.py | 59 ++- .../batch_exports/bigquery_batch_export.py | 26 +- .../batch_exports/http_batch_export.py | 9 +- .../batch_exports/postgres_batch_export.py | 28 +- .../batch_exports/redshift_batch_export.py | 30 +- .../temporal/batch_exports/s3_batch_export.py | 32 +- .../batch_exports/snowflake_batch_export.py | 24 +- .../temporal/tests/batch_exports/conftest.py | 24 +- .../tests/batch_exports/test_batch_exports.py | 4 +- .../test_s3_batch_export_workflow.py | 478 +++++++++--------- posthog/temporal/tests/utils/persons.py | 239 +++++++++ 15 files changed, 680 insertions(+), 351 deletions(-) create mode 100644 posthog/temporal/tests/utils/persons.py diff --git a/posthog/api/test/batch_exports/test_create.py b/posthog/api/test/batch_exports/test_create.py index 2bc22b56d0b25..0728ac6bdfa4e 100644 --- a/posthog/api/test/batch_exports/test_create.py +++ b/posthog/api/test/batch_exports/test_create.py @@ -294,7 +294,7 @@ def test_create_batch_export_with_custom_schema(client: HttpClient): } assert batch_export.schema == expected_schema - assert args["batch_export_schema"] == expected_schema + assert args["batch_export_model"] == {"name": "events", "schema": expected_schema} @pytest.mark.parametrize( diff --git a/posthog/api/test/batch_exports/test_update.py b/posthog/api/test/batch_exports/test_update.py index 30333c206f953..7b749c62dc24f 100644 --- a/posthog/api/test/batch_exports/test_update.py +++ b/posthog/api/test/batch_exports/test_update.py @@ -315,23 +315,26 @@ def test_can_patch_hogql_query(client: HttpClient): args = json.loads(decoded_payload[0].data) assert args["bucket_name"] == "my-production-s3-bucket" assert args["interval"] == "hour" - assert args["batch_export_schema"] == { - "fields": [ - { - "alias": "uuid", - "expression": "toString(events.uuid)", - }, - { - "alias": "test", - "expression": "%(hogql_val_0)s", - }, - { - "alias": "n", - "expression": "accurateCastOrNull(plus(1, 1), %(hogql_val_1)s)", - }, - ], - "values": {"hogql_val_0": "test", "hogql_val_1": "Int64"}, - "hogql_query": "SELECT toString(uuid) AS uuid, 'test' AS test, toInt(plus(1, 1)) AS n FROM events", + assert args["batch_export_model"] == { + "name": "events", + "schema": { + "fields": [ + { + "alias": "uuid", + "expression": "toString(events.uuid)", + }, + { + "alias": "test", + "expression": "%(hogql_val_0)s", + }, + { + "alias": "n", + "expression": "accurateCastOrNull(plus(1, 1), %(hogql_val_1)s)", + }, + ], + "values": {"hogql_val_0": "test", "hogql_val_1": "Int64"}, + "hogql_query": "SELECT toString(uuid) AS uuid, 'test' AS test, toInt(plus(1, 1)) AS n FROM events", + }, } diff --git a/posthog/batch_exports/http.py b/posthog/batch_exports/http.py index 9977b3bc75729..98a97a74b3f4a 100644 --- a/posthog/batch_exports/http.py +++ b/posthog/batch_exports/http.py @@ -5,7 +5,7 @@ import structlog from django.db import transaction from django.utils.timezone import now -from rest_framework import request, response, serializers, viewsets, filters +from rest_framework import filters, request, response, serializers, viewsets from rest_framework.decorators import action from rest_framework.exceptions import ( NotAuthenticated, diff --git a/posthog/batch_exports/service.py b/posthog/batch_exports/service.py index 89992d2228f75..2483738cefbc0 100644 --- a/posthog/batch_exports/service.py +++ b/posthog/batch_exports/service.py @@ -54,9 +54,15 @@ class BatchExportSchema(typing.TypedDict): values: dict[str, str] +@dataclass +class BatchExportModel: + name: str + schema: BatchExportSchema | None + + class BatchExportsInputsProtocol(typing.Protocol): team_id: int - batch_export_schema: BatchExportSchema | None = None + batch_export_model: BatchExportModel | None = None is_backfill: bool = False @@ -90,10 +96,11 @@ class S3BatchExportInputs: include_events: list[str] | None = None encryption: str | None = None kms_key_id: str | None = None - batch_export_schema: BatchExportSchema | None = None endpoint_url: str | None = None file_format: str = "JSONLines" is_backfill: bool = False + batch_export_model: BatchExportModel | None = None + batch_export_schema: BatchExportSchema | None = None @dataclass @@ -114,8 +121,9 @@ class SnowflakeBatchExportInputs: role: str | None = None exclude_events: list[str] | None = None include_events: list[str] | None = None - batch_export_schema: BatchExportSchema | None = None is_backfill: bool = False + batch_export_model: BatchExportModel | None = None + batch_export_schema: BatchExportSchema | None = None @dataclass @@ -136,8 +144,9 @@ class PostgresBatchExportInputs: data_interval_end: str | None = None exclude_events: list[str] | None = None include_events: list[str] | None = None - batch_export_schema: BatchExportSchema | None = None is_backfill: bool = False + batch_export_model: BatchExportModel | None = None + batch_export_schema: BatchExportSchema | None = None @dataclass @@ -165,8 +174,9 @@ class BigQueryBatchExportInputs: exclude_events: list[str] | None = None include_events: list[str] | None = None use_json_type: bool = False - batch_export_schema: BatchExportSchema | None = None is_backfill: bool = False + batch_export_model: BatchExportModel | None = None + batch_export_schema: BatchExportSchema | None = None @dataclass @@ -181,8 +191,9 @@ class HttpBatchExportInputs: data_interval_end: str | None = None exclude_events: list[str] | None = None include_events: list[str] | None = None - batch_export_schema: BatchExportSchema | None = None is_backfill: bool = False + batch_export_model: BatchExportModel | None = None + batch_export_schema: BatchExportSchema | None = None @dataclass @@ -193,8 +204,9 @@ class NoOpInputs: team_id: int interval: str = "hour" arg: str = "" - batch_export_schema: BatchExportSchema | None = None is_backfill: bool = False + batch_export_model: BatchExportModel | None = None + batch_export_schema: BatchExportSchema | None = None DESTINATION_WORKFLOWS = { @@ -609,7 +621,16 @@ def sync_batch_export(batch_export: BatchExport, created: bool): team_id=batch_export.team.id, batch_export_id=str(batch_export.id), interval=str(batch_export.interval), - batch_export_schema=batch_export.schema, + batch_export_model=BatchExportModel( + name=batch_export.model or "events", + schema=batch_export.schema, + ), + # TODO: This field is deprecated, but we still set it for backwards compatibility. + # New exports created will always have `batch_export_schema` set to `None`, but existing + # batch exports may still be using it. + # This assignment should be removed after updating all existing exports to use + # `batch_export_model` instead. + batch_export_schema=None, **destination_config, ) ), diff --git a/posthog/temporal/batch_exports/batch_exports.py b/posthog/temporal/batch_exports/batch_exports.py index 04e9a7fa000f0..3b4e5e0b435c9 100644 --- a/posthog/temporal/batch_exports/batch_exports.py +++ b/posthog/temporal/batch_exports/batch_exports.py @@ -13,6 +13,8 @@ from posthog.batch_exports.models import BatchExportBackfill, BatchExportRun from posthog.batch_exports.service import ( BatchExportField, + BatchExportModel, + BatchExportSchema, acount_failed_batch_export_runs, acreate_batch_export_backfill, acreate_batch_export_run, @@ -111,26 +113,53 @@ def default_fields() -> list[BatchExportField]: ] -DEFAULT_MODELS = {"events", "persons"} - - async def iter_model_records( - client: ClickHouseClient, model: str, team_id: int, is_backfill: bool, **parameters + client: ClickHouseClient, + model: BatchExportModel | BatchExportSchema | None, + team_id: int, + is_backfill: bool, + destination_default_fields: list[BatchExportField] | None = None, + **parameters, ) -> AsyncRecordsGenerator: - if model in DEFAULT_MODELS: + if destination_default_fields is None: + batch_export_default_fields = default_fields() + else: + batch_export_default_fields = destination_default_fields + + if isinstance(model, BatchExportModel): async for record in iter_records_from_model_view( - client=client, model=model, team_id=team_id, is_backfill=is_backfill, **parameters + client=client, + model_name=model.name, + team_id=team_id, + is_backfill=is_backfill, + fields=model.schema["fields"] if model.schema is not None else batch_export_default_fields, + extra_query_parameters=model.schema["values"] if model.schema is not None else None, + **parameters, ): yield record + else: - for record in iter_records(client, team_id=team_id, is_backfill=is_backfill, **parameters): + for record in iter_records( + client, + team_id=team_id, + is_backfill=is_backfill, + fields=model["fields"] if model is not None else batch_export_default_fields, + extra_query_parameters=model["values"] if model is not None else None, + **parameters, + ): yield record async def iter_records_from_model_view( - client: ClickHouseClient, model: str, is_backfill: bool, team_id: int, **parameters + client: ClickHouseClient, + model_name: str, + is_backfill: bool, + team_id: int, + interval_start: str, + interval_end: str, + **parameters, ) -> AsyncRecordsGenerator: - if model == "persons": + if model_name == "persons": view = SELECT_FROM_PERSONS_VIEW else: # TODO: Let this model be exported by `astream_query_as_arrow`. @@ -138,10 +167,20 @@ async def iter_records_from_model_view( # without battle testing it first. # There are already changes going out to the queries themselves that will impact events in a # positive way. So, we can come back later and drop this block. - for record_batch in iter_records(client, team_id=team_id, is_backfill=is_backfill, **parameters): + for record_batch in iter_records( + client, + team_id=team_id, + is_backfill=is_backfill, + interval_start=interval_start, + interval_end=interval_end, + **parameters, + ): yield record_batch return + parameters["team_id"] = team_id + parameters["interval_start"] = dt.datetime.fromisoformat(interval_start).strftime("%Y-%m-%d %H:%M:%S") + parameters["interval_end"] = dt.datetime.fromisoformat(interval_end).strftime("%Y-%m-%d %H:%M:%S") async for record_batch in client.astream_query_as_arrow(view, query_parameters=parameters): yield record_batch diff --git a/posthog/temporal/batch_exports/bigquery_batch_export.py b/posthog/temporal/batch_exports/bigquery_batch_export.py index 85385b1c80108..af46bef7e4576 100644 --- a/posthog/temporal/batch_exports/bigquery_batch_export.py +++ b/posthog/temporal/batch_exports/bigquery_batch_export.py @@ -14,6 +14,7 @@ from posthog.batch_exports.models import BatchExportRun from posthog.batch_exports.service import ( BatchExportField, + BatchExportModel, BatchExportSchema, BigQueryBatchExportInputs, ) @@ -150,9 +151,11 @@ class BigQueryInsertInputs: exclude_events: list[str] | None = None include_events: list[str] | None = None use_json_type: bool = False - batch_export_schema: BatchExportSchema | None = None run_id: str | None = None is_backfill: bool = False + batch_export_model: BatchExportModel | None = None + # TODO: Remove after updating existing batch exports + batch_export_schema: BatchExportSchema | None = None @contextlib.contextmanager @@ -230,24 +233,23 @@ async def insert_into_bigquery_activity(inputs: BigQueryInsertInputs) -> Records if not await client.is_alive(): raise ConnectionError("Cannot establish connection to ClickHouse") - if inputs.batch_export_schema is None: - fields = bigquery_default_fields() - query_parameters = None - + model: BatchExportModel | BatchExportSchema | None = None + if inputs.batch_export_schema is None and "batch_export_model" in { + field.name for field in dataclasses.fields(inputs) + }: + model = inputs.batch_export_model else: - fields = inputs.batch_export_schema["fields"] - query_parameters = inputs.batch_export_schema["values"] + model = inputs.batch_export_schema records_iterator = iter_model_records( client=client, - model="events", + model=model, team_id=inputs.team_id, interval_start=data_interval_start, interval_end=inputs.data_interval_end, exclude_events=inputs.exclude_events, include_events=inputs.include_events, - fields=fields, - extra_query_parameters=query_parameters, + destination_default_fields=bigquery_default_fields(), is_backfill=inputs.is_backfill, ) @@ -408,9 +410,11 @@ async def run(self, inputs: BigQueryBatchExportInputs): exclude_events=inputs.exclude_events, include_events=inputs.include_events, use_json_type=inputs.use_json_type, - batch_export_schema=inputs.batch_export_schema, run_id=run_id, is_backfill=inputs.is_backfill, + batch_export_model=inputs.batch_export_model, + # TODO: Remove after updating existing batch exports. + batch_export_schema=inputs.batch_export_schema, ) await execute_batch_export_insert_activity( diff --git a/posthog/temporal/batch_exports/http_batch_export.py b/posthog/temporal/batch_exports/http_batch_export.py index cf0e9b485f376..38e54c836653d 100644 --- a/posthog/temporal/batch_exports/http_batch_export.py +++ b/posthog/temporal/batch_exports/http_batch_export.py @@ -1,8 +1,8 @@ import asyncio +import dataclasses import datetime as dt import io import json -from dataclasses import dataclass import aiohttp from django.conf import settings @@ -11,6 +11,7 @@ from posthog.batch_exports.service import ( BatchExportField, + BatchExportModel, BatchExportSchema, HttpBatchExportInputs, ) @@ -92,7 +93,7 @@ def from_activity_details(cls, details) -> "HeartbeatDetails": return HeartbeatDetails(last_uploaded_timestamp) -@dataclass +@dataclasses.dataclass class HttpInsertInputs: """Inputs for HTTP insert activity.""" @@ -104,8 +105,9 @@ class HttpInsertInputs: exclude_events: list[str] | None = None include_events: list[str] | None = None run_id: str | None = None - batch_export_schema: BatchExportSchema | None = None is_backfill: bool = False + batch_export_model: BatchExportModel | None = None + batch_export_schema: BatchExportSchema | None = None async def maybe_resume_from_heartbeat(inputs: HttpInsertInputs) -> str: @@ -357,6 +359,7 @@ async def run(self, inputs: HttpBatchExportInputs): batch_export_schema=inputs.batch_export_schema, run_id=run_id, is_backfill=inputs.is_backfill, + batch_export_model=inputs.batch_export_model, ) await execute_batch_export_insert_activity( diff --git a/posthog/temporal/batch_exports/postgres_batch_export.py b/posthog/temporal/batch_exports/postgres_batch_export.py index 54eb667062fbc..02f0634bd1540 100644 --- a/posthog/temporal/batch_exports/postgres_batch_export.py +++ b/posthog/temporal/batch_exports/postgres_batch_export.py @@ -1,10 +1,10 @@ import collections.abc import contextlib import csv +import dataclasses import datetime as dt import json import typing -from dataclasses import dataclass import psycopg import pyarrow as pa @@ -16,6 +16,7 @@ from posthog.batch_exports.models import BatchExportRun from posthog.batch_exports.service import ( BatchExportField, + BatchExportModel, BatchExportSchema, PostgresBatchExportInputs, ) @@ -220,7 +221,7 @@ def get_postgres_fields_from_record_schema( return pg_schema -@dataclass +@dataclasses.dataclass class PostgresInsertInputs: """Inputs for Postgres insert activity.""" @@ -237,9 +238,10 @@ class PostgresInsertInputs: port: int = 5432 exclude_events: list[str] | None = None include_events: list[str] | None = None - batch_export_schema: BatchExportSchema | None = None run_id: str | None = None is_backfill: bool = False + batch_export_model: BatchExportModel | None = None + batch_export_schema: BatchExportSchema | None = None @activity.defn @@ -262,24 +264,23 @@ async def insert_into_postgres_activity(inputs: PostgresInsertInputs) -> Records if not await client.is_alive(): raise ConnectionError("Cannot establish connection to ClickHouse") - if inputs.batch_export_schema is None: - fields = postgres_default_fields() - query_parameters = None - + model: BatchExportModel | BatchExportSchema | None = None + if inputs.batch_export_schema is None and "batch_export_model" in { + field.name for field in dataclasses.fields(inputs) + }: + model = inputs.batch_export_model else: - fields = inputs.batch_export_schema["fields"] - query_parameters = inputs.batch_export_schema["values"] + model = inputs.batch_export_schema record_iterator = iter_model_records( client=client, - model="events", + model=model, team_id=inputs.team_id, interval_start=inputs.data_interval_start, interval_end=inputs.data_interval_end, exclude_events=inputs.exclude_events, include_events=inputs.include_events, - fields=fields, - extra_query_parameters=query_parameters, + destination_default_fields=postgres_default_fields(), is_backfill=inputs.is_backfill, ) first_record_batch, record_iterator = await apeek_first_and_rewind(record_iterator) @@ -424,8 +425,9 @@ async def run(self, inputs: PostgresBatchExportInputs): data_interval_end=data_interval_end.isoformat(), exclude_events=inputs.exclude_events, include_events=inputs.include_events, - batch_export_schema=inputs.batch_export_schema, run_id=run_id, + batch_export_model=inputs.batch_export_model, + batch_export_schema=inputs.batch_export_schema, ) await execute_batch_export_insert_activity( diff --git a/posthog/temporal/batch_exports/redshift_batch_export.py b/posthog/temporal/batch_exports/redshift_batch_export.py index 52ce4e9db32cc..180e9fc18fd1e 100644 --- a/posthog/temporal/batch_exports/redshift_batch_export.py +++ b/posthog/temporal/batch_exports/redshift_batch_export.py @@ -1,9 +1,9 @@ import collections.abc import contextlib +import dataclasses import datetime as dt import json import typing -from dataclasses import dataclass import psycopg import pyarrow as pa @@ -12,7 +12,12 @@ from temporalio.common import RetryPolicy from posthog.batch_exports.models import BatchExportRun -from posthog.batch_exports.service import BatchExportField, RedshiftBatchExportInputs +from posthog.batch_exports.service import ( + BatchExportField, + BatchExportModel, + BatchExportSchema, + RedshiftBatchExportInputs, +) from posthog.temporal.batch_exports.base import PostHogWorkflow from posthog.temporal.batch_exports.batch_exports import ( FinishBatchExportRunInputs, @@ -262,7 +267,7 @@ async def async_client_cursor_from_connection( psycopg_connection.cursor_factory = current_factory -@dataclass +@dataclasses.dataclass class RedshiftInsertInputs(PostgresInsertInputs): """Inputs for Redshift insert activity. @@ -307,24 +312,24 @@ async def insert_into_redshift_activity(inputs: RedshiftInsertInputs) -> Records if not await client.is_alive(): raise ConnectionError("Cannot establish connection to ClickHouse") - if inputs.batch_export_schema is None: - fields = redshift_default_fields() - query_parameters = None + model: BatchExportModel | BatchExportSchema | None = None + if inputs.batch_export_schema is None and "batch_export_model" in { + field.name for field in dataclasses.fields(inputs) + }: + model = inputs.batch_export_model else: - fields = inputs.batch_export_schema["fields"] - query_parameters = inputs.batch_export_schema["values"] + model = inputs.batch_export_schema record_iterator = iter_model_records( client=client, - model="events", + model=model, team_id=inputs.team_id, interval_start=inputs.data_interval_start, interval_end=inputs.data_interval_end, exclude_events=inputs.exclude_events, include_events=inputs.include_events, - fields=fields, - extra_query_parameters=query_parameters, + destination_default_fields=redshift_default_fields(), is_backfill=inputs.is_backfill, ) first_record_batch, record_iterator = await apeek_first_and_rewind(record_iterator) @@ -462,9 +467,10 @@ async def run(self, inputs: RedshiftBatchExportInputs): exclude_events=inputs.exclude_events, include_events=inputs.include_events, properties_data_type=inputs.properties_data_type, - batch_export_schema=inputs.batch_export_schema, run_id=run_id, is_backfill=inputs.is_backfill, + batch_export_model=inputs.batch_export_model, + batch_export_schema=inputs.batch_export_schema, ) await execute_batch_export_insert_activity( diff --git a/posthog/temporal/batch_exports/s3_batch_export.py b/posthog/temporal/batch_exports/s3_batch_export.py index 7f460cb12fa7b..fa629f705abc9 100644 --- a/posthog/temporal/batch_exports/s3_batch_export.py +++ b/posthog/temporal/batch_exports/s3_batch_export.py @@ -1,11 +1,11 @@ import collections.abc import contextlib +import dataclasses import datetime as dt import io import json import posixpath import typing -from dataclasses import dataclass import aioboto3 import orjson @@ -17,6 +17,7 @@ from posthog.batch_exports.models import BatchExportRun from posthog.batch_exports.service import ( BatchExportField, + BatchExportModel, BatchExportSchema, S3BatchExportInputs, ) @@ -61,7 +62,7 @@ def get_allowed_template_variables(inputs) -> dict[str, str]: "year": f"{export_datetime:%Y}", "data_interval_start": inputs.data_interval_start, "data_interval_end": inputs.data_interval_end, - "table": "events", + "table": inputs.batch_export_model.name if inputs.batch_export_model is not None else "events", } @@ -315,7 +316,7 @@ def from_activity_details(cls, details): return cls(last_uploaded_part_timestamp, upload_state) -@dataclass +@dataclasses.dataclass class S3InsertInputs: """Inputs for S3 exports.""" @@ -336,12 +337,14 @@ class S3InsertInputs: include_events: list[str] | None = None encryption: str | None = None kms_key_id: str | None = None - batch_export_schema: BatchExportSchema | None = None endpoint_url: str | None = None # TODO: In Python 3.11, this could be a enum.StrEnum. file_format: str = "JSONLines" run_id: str | None = None is_backfill: bool = False + batch_export_model: BatchExportModel | None = None + # TODO: Remove after updating existing batch exports + batch_export_schema: BatchExportSchema | None = None async def initialize_and_resume_multipart_upload(inputs: S3InsertInputs) -> tuple[S3MultiPartUpload, str]: @@ -444,25 +447,24 @@ async def insert_into_s3_activity(inputs: S3InsertInputs) -> RecordsCompleted: s3_upload, interval_start = await initialize_and_resume_multipart_upload(inputs) - if inputs.batch_export_schema is None: - fields = s3_default_fields() - query_parameters = None - + model: BatchExportModel | BatchExportSchema | None = None + if inputs.batch_export_schema is None and "batch_export_model" in { + field.name for field in dataclasses.fields(inputs) + }: + model = inputs.batch_export_model else: - fields = inputs.batch_export_schema["fields"] - query_parameters = inputs.batch_export_schema["values"] + model = inputs.batch_export_schema record_iterator = iter_model_records( - model="events", + model=model, client=client, team_id=inputs.team_id, interval_start=interval_start, interval_end=inputs.data_interval_end, exclude_events=inputs.exclude_events, include_events=inputs.include_events, - fields=fields, - extra_query_parameters=query_parameters, is_backfill=inputs.is_backfill, + destination_default_fields=s3_default_fields(), ) first_record_batch, record_iterator = await apeek_first_and_rewind(record_iterator) @@ -674,10 +676,12 @@ async def run(self, inputs: S3BatchExportInputs): include_events=inputs.include_events, encryption=inputs.encryption, kms_key_id=inputs.kms_key_id, - batch_export_schema=inputs.batch_export_schema, file_format=inputs.file_format, run_id=run_id, is_backfill=inputs.is_backfill, + batch_export_model=inputs.batch_export_model, + # TODO: Remove after updating existing batch exports. + batch_export_schema=inputs.batch_export_schema, ) await execute_batch_export_insert_activity( diff --git a/posthog/temporal/batch_exports/snowflake_batch_export.py b/posthog/temporal/batch_exports/snowflake_batch_export.py index 374248e83aff5..4d966fc4e00a4 100644 --- a/posthog/temporal/batch_exports/snowflake_batch_export.py +++ b/posthog/temporal/batch_exports/snowflake_batch_export.py @@ -17,6 +17,7 @@ from posthog.batch_exports.models import BatchExportRun from posthog.batch_exports.service import ( BatchExportField, + BatchExportModel, BatchExportSchema, SnowflakeBatchExportInputs, ) @@ -114,9 +115,10 @@ class SnowflakeInsertInputs: role: str | None = None exclude_events: list[str] | None = None include_events: list[str] | None = None - batch_export_schema: BatchExportSchema | None = None run_id: str | None = None is_backfill: bool = False + batch_export_model: BatchExportModel | None = None + batch_export_schema: BatchExportSchema | None = None def use_namespace(connection: SnowflakeConnection, database: str, schema: str) -> None: @@ -448,24 +450,23 @@ async def flush_to_snowflake( rows_exported.add(file.records_since_last_reset) bytes_exported.add(file.bytes_since_last_reset) - if inputs.batch_export_schema is None: - fields = snowflake_default_fields() - query_parameters = None - + model: BatchExportModel | BatchExportSchema | None = None + if inputs.batch_export_schema is None and "batch_export_model" in { + field.name for field in dataclasses.fields(inputs) + }: + model = inputs.batch_export_model else: - fields = inputs.batch_export_schema["fields"] - query_parameters = inputs.batch_export_schema["values"] + model = inputs.batch_export_schema record_iterator = iter_model_records( client=client, - model="events", + model=model, team_id=inputs.team_id, interval_start=data_interval_start, interval_end=inputs.data_interval_end, exclude_events=inputs.exclude_events, include_events=inputs.include_events, - fields=fields, - extra_query_parameters=query_parameters, + destination_default_fields=snowflake_default_fields(), is_backfill=inputs.is_backfill, ) first_record_batch, record_iterator = await apeek_first_and_rewind(record_iterator) @@ -601,9 +602,10 @@ async def run(self, inputs: SnowflakeBatchExportInputs): role=inputs.role, exclude_events=inputs.exclude_events, include_events=inputs.include_events, - batch_export_schema=inputs.batch_export_schema, run_id=run_id, is_backfill=inputs.is_backfill, + batch_export_model=inputs.batch_export_model, + batch_export_schema=inputs.batch_export_schema, ) await execute_batch_export_insert_activity( diff --git a/posthog/temporal/tests/batch_exports/conftest.py b/posthog/temporal/tests/batch_exports/conftest.py index deebf15349e3a..da5598f9d8ca0 100644 --- a/posthog/temporal/tests/batch_exports/conftest.py +++ b/posthog/temporal/tests/batch_exports/conftest.py @@ -46,6 +46,17 @@ async def truncate_events(clickhouse_client): await clickhouse_client.execute_query("TRUNCATE TABLE IF EXISTS `sharded_events`") +@pytest_asyncio.fixture(autouse=True) +async def truncate_persons(clickhouse_client): + """Fixture to automatically truncate person and person_distinct_id2 after a test. + + This is useful if during the test setup we insert a lot of persons we wish to clean-up. + """ + yield + await clickhouse_client.execute_query("TRUNCATE TABLE IF EXISTS `person`") + await clickhouse_client.execute_query("TRUNCATE TABLE IF EXISTS `person_distinct_id2`") + + @pytest.fixture def batch_export_schema(request) -> dict | None: """A parametrizable fixture to configure a batch export schema. @@ -135,7 +146,7 @@ async def create_clickhouse_tables_and_views(clickhouse_client, django_db_setup) CREATE_EVENTS_BATCH_EXPORT_VIEW_UNBOUNDED, CREATE_PERSONS_BATCH_EXPORT_VIEW, ) - from posthog.clickhouse.schema import CREATE_KAFKA_TABLE_QUERIES + from posthog.clickhouse.schema import CREATE_KAFKA_TABLE_QUERIES, build_query create_view_queries = ( CREATE_EVENTS_BATCH_EXPORT_VIEW, @@ -145,11 +156,18 @@ async def create_clickhouse_tables_and_views(clickhouse_client, django_db_setup) ) clickhouse_tasks = set() - for query in create_view_queries + CREATE_KAFKA_TABLE_QUERIES: + for query in create_view_queries + tuple(map(build_query, CREATE_KAFKA_TABLE_QUERIES)): task = asyncio.create_task(clickhouse_client.execute_query(query)) clickhouse_tasks.add(task) task.add_done_callback(clickhouse_tasks.discard) - await asyncio.wait(clickhouse_tasks) + done, pending = await asyncio.wait(clickhouse_tasks) + + if len(pending) > 0: + raise ValueError("Not all required tables and views were created in time") + + for task in done: + if exc := task.exception(): + raise exc return diff --git a/posthog/temporal/tests/batch_exports/test_batch_exports.py b/posthog/temporal/tests/batch_exports/test_batch_exports.py index b146352c74958..2634da9c1dff9 100644 --- a/posthog/temporal/tests/batch_exports/test_batch_exports.py +++ b/posthog/temporal/tests/batch_exports/test_batch_exports.py @@ -6,6 +6,7 @@ import pytest from django.test import override_settings +from posthog.batch_exports.service import BatchExportModel from posthog.temporal.batch_exports.batch_exports import ( get_data_interval, iter_model_records, @@ -266,12 +267,11 @@ async def test_iter_records_with_single_field_and_alias(clickhouse_client, field record async for record_batch in iter_model_records( client=clickhouse_client, - model="events", + model=BatchExportModel(name="events", schema={"fields": [field], "values": {}}), team_id=team_id, is_backfill=False, interval_start=data_interval_start.isoformat(), interval_end=data_interval_end.isoformat(), - fields=[field], ) for record in record_batch.to_pylist() ] diff --git a/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py b/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py index 9467b294b7107..ad33a48cd6149 100644 --- a/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py +++ b/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py @@ -3,9 +3,7 @@ import functools import json import os -from random import randint -from unittest import skip -from uuid import uuid4 +import uuid import aioboto3 import botocore.exceptions @@ -19,10 +17,10 @@ from temporalio.testing import WorkflowEnvironment from temporalio.worker import UnsandboxedWorkflowRunner, Worker -from posthog.batch_exports.service import BatchExportSchema +from posthog.batch_exports.service import BatchExportModel, BatchExportSchema from posthog.temporal.batch_exports.batch_exports import ( finish_batch_export_run, - iter_records, + iter_model_records, start_batch_export_run, ) from posthog.temporal.batch_exports.s3_batch_export import ( @@ -45,6 +43,10 @@ adelete_batch_export, afetch_batch_export_runs, ) +from posthog.temporal.tests.utils.persons import ( + generate_test_person_distinct_id2_in_clickhouse, + generate_test_persons_in_clickhouse, +) from posthog.temporal.tests.utils.s3 import read_parquet_from_s3, read_s3_data_as_json pytestmark = [pytest.mark.asyncio, pytest.mark.django_db] @@ -100,13 +102,16 @@ def bucket_name(request) -> str: try: return request.param except AttributeError: - return f"{TEST_ROOT_BUCKET}-{str(uuid4())}" + return f"{TEST_ROOT_BUCKET}-{str(uuid.uuid4())}" @pytest.fixture -def s3_key_prefix(): +def s3_key_prefix(request): """An S3 key prefix to use when putting files in a bucket.""" - return f"posthog-events-{str(uuid4())}" + try: + return request.param + except AttributeError: + return f"posthog-data-{str(uuid.uuid4())}" @pytest.fixture @@ -181,9 +186,10 @@ async def assert_clickhouse_records_in_s3( data_interval_end: dt.datetime, exclude_events: list[str] | None = None, include_events: list[str] | None = None, - batch_export_schema: BatchExportSchema | None = None, + batch_export_model: BatchExportModel | BatchExportSchema | None = None, compression: str | None = None, file_format: str = "JSONLines", + is_backfill: bool = False, ): """Assert ClickHouse records are written to JSON in key_prefix in S3 bucket_name. @@ -210,21 +216,29 @@ async def assert_clickhouse_records_in_s3( json_columns=json_columns, ) - if batch_export_schema is not None: - schema_column_names = [field["alias"] for field in batch_export_schema["fields"]] - else: - schema_column_names = [field["alias"] for field in s3_default_fields()] + schema_column_names = [field["alias"] for field in s3_default_fields()] + if batch_export_model is not None: + if isinstance(batch_export_model, BatchExportModel): + batch_export_schema = batch_export_model.schema + else: + batch_export_schema = batch_export_model + + if batch_export_schema is not None: + schema_column_names = [field["alias"] for field in batch_export_schema["fields"]] + elif isinstance(batch_export_model, BatchExportModel) and batch_export_model.name == "persons": + schema_column_names = ["team_id", "distinct_id", "person_id", "properties", "version", "_inserted_at"] expected_records = [] - for record_batch in iter_records( + async for record_batch in iter_model_records( client=clickhouse_client, + model=batch_export_model, team_id=team_id, interval_start=data_interval_start.isoformat(), interval_end=data_interval_end.isoformat(), exclude_events=exclude_events, include_events=include_events, - fields=batch_export_schema["fields"] if batch_export_schema is not None else s3_default_fields(), - extra_query_parameters=batch_export_schema["values"] if batch_export_schema is not None else None, + destination_default_fields=s3_default_fields(), + is_backfill=is_backfill, ): for record in record_batch.to_pylist(): expected_record = {} @@ -243,12 +257,29 @@ async def assert_clickhouse_records_in_s3( expected_records.append(expected_record) - assert len(s3_data) == len(expected_records) - assert s3_data[0] == expected_records[0] - assert s3_data == expected_records, f"Not all s3 records match expected records. Not printing due to large size." - + if "team_id" in schema_column_names: + assert all(record["team_id"] == team_id for record in s3_data) -TEST_S3_SCHEMAS: list[BatchExportSchema | None] = [ + assert s3_data[0] == expected_records[0] + assert len(s3_data) == len(expected_records) + assert s3_data == expected_records + + +TEST_S3_MODELS: list[BatchExportModel | BatchExportSchema | None] = [ + BatchExportModel( + name="a-custom-model", + schema={ + "fields": [ + {"expression": "event", "alias": "my_event_name"}, + {"expression": "nullIf(JSONExtractString(properties, %(hogql_val_0)s), '')", "alias": "browser"}, + {"expression": "nullIf(JSONExtractString(properties, %(hogql_val_1)s), '')", "alias": "os"}, + {"expression": "nullIf(properties, '')", "alias": "all_properties"}, + ], + "values": {"hogql_val_0": "$browser", "hogql_val_1": "$os"}, + }, + ), + BatchExportModel(name="events", schema=None), + BatchExportModel(name="persons", schema=None), { "fields": [ {"expression": "event", "alias": "my_event_name"}, @@ -258,57 +289,42 @@ async def assert_clickhouse_records_in_s3( ], "values": {"hogql_val_0": "$browser", "hogql_val_1": "$os"}, }, - { - "fields": [ - {"expression": "event", "alias": "my_event_name"}, - {"expression": "1 + 1", "alias": "two"}, - ], - "values": {}, - }, None, ] -@pytest.mark.parametrize("compression", [None, "gzip", "brotli"], indirect=True) -@pytest.mark.parametrize("exclude_events", [None, ["test-exclude"]], indirect=True) -@pytest.mark.parametrize("batch_export_schema", TEST_S3_SCHEMAS) -@pytest.mark.parametrize("file_format", FILE_FORMAT_EXTENSIONS.keys()) -async def test_insert_into_s3_activity_puts_data_into_s3( - clickhouse_client, - bucket_name, - minio_client, - activity_environment, - compression, - exclude_events, - file_format, - batch_export_schema: BatchExportSchema | None, -): - """Test that the insert_into_s3_activity function ends up with data into S3. +@pytest.fixture +def data_interval_start(data_interval_end, interval): + if interval == "hour": + interval_time_delta = dt.timedelta(hours=1) + elif interval == "day": + interval_time_delta = dt.timedelta(days=1) + elif interval == "week": + interval_time_delta = dt.timedelta(weeks=1) + elif interval.startswith("every"): + _, value, unit = interval.split(" ") + kwargs = {unit: int(value)} + interval_time_delta = dt.timedelta(**kwargs) + else: + raise ValueError(f"Invalid interval: '{interval}'") - We use the generate_test_events_in_clickhouse function to generate several sets - of events. Some of these sets are expected to be exported, and others not. Expected - events are those that: - * Are created for the team_id of the batch export. - * Are created in the date range of the batch export. - * Are not duplicates of other events that are in the same batch. - * Do not have an event name contained in the batch export's exclude_events. + return data_interval_end - interval_time_delta - Once we have these events, we pass them to the assert_clickhouse_records_in_s3 function to check - that they appear in the expected S3 bucket and key. - """ - data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.timezone.utc) - data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.timezone.utc) - # Generate a random team id integer. There's still a chance of a collision, - # but it's very small. - team_id = randint(1, 1000000) +@pytest.fixture +def data_interval_end(interval): + return dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.timezone.utc) + +@pytest_asyncio.fixture +async def generate_test_data(ateam, clickhouse_client, exclude_events, data_interval_start, data_interval_end): + """Generate test data in ClickHouse.""" await generate_test_events_in_clickhouse( client=clickhouse_client, - team_id=team_id, + team_id=ateam.pk, start_time=data_interval_start, end_time=data_interval_end, - count=10000, + count=1000, count_outside_range=10, count_other_team=10, duplicate=True, @@ -318,7 +334,7 @@ async def test_insert_into_s3_activity_puts_data_into_s3( await generate_test_events_in_clickhouse( client=clickhouse_client, - team_id=team_id, + team_id=ateam.pk, start_time=data_interval_start, end_time=data_interval_end, count=5, @@ -327,12 +343,13 @@ async def test_insert_into_s3_activity_puts_data_into_s3( properties=None, person_properties=None, ) + events_to_export_created = 1005 if exclude_events: for event_name in exclude_events: await generate_test_events_in_clickhouse( client=clickhouse_client, - team_id=team_id, + team_id=ateam.pk, start_time=data_interval_start, end_time=data_interval_end, count=5, @@ -341,15 +358,78 @@ async def test_insert_into_s3_activity_puts_data_into_s3( event_name=event_name, ) - # Make a random string to prefix the S3 keys with. This allows us to ensure - # isolation of the test, and also to check that the data is being written. - prefix = str(uuid4()) + persons, _ = await generate_test_persons_in_clickhouse( + client=clickhouse_client, + team_id=ateam.pk, + start_time=data_interval_start, + end_time=data_interval_end, + count=100, + count_other_team=10, + properties={"utm_medium": "referral", "$initial_os": "Linux"}, + ) + + for person in persons: + await generate_test_person_distinct_id2_in_clickhouse( + client=clickhouse_client, + team_id=ateam.pk, + person_id=uuid.UUID(person["id"]), + distinct_id=f"distinct-id-{uuid.UUID(person['id'])}", + timestamp=dt.datetime.fromisoformat(person["_timestamp"]), + ) + + persons_to_export_created = 100 + + return (events_to_export_created, persons_to_export_created) + + +@pytest.mark.parametrize("compression", [None, "gzip", "brotli"], indirect=True) +@pytest.mark.parametrize("exclude_events", [None, ["test-exclude"]], indirect=True) +@pytest.mark.parametrize("model", TEST_S3_MODELS) +@pytest.mark.parametrize("file_format", FILE_FORMAT_EXTENSIONS.keys()) +async def test_insert_into_s3_activity_puts_data_into_s3( + clickhouse_client, + bucket_name, + minio_client, + activity_environment, + compression, + exclude_events, + file_format, + data_interval_start, + data_interval_end, + model: BatchExportModel | BatchExportSchema | None, + generate_test_data, + ateam, +): + """Test that the insert_into_s3_activity function ends up with data into S3. + + We use the generate_test_events_in_clickhouse function to generate several sets + of events. Some of these sets are expected to be exported, and others not. Expected + events are those that: + * Are created for the team_id of the batch export. + * Are created in the date range of the batch export. + * Are not duplicates of other events that are in the same batch. + * Do not have an event name contained in the batch export's exclude_events. + + Once we have these events, we pass them to the assert_clickhouse_records_in_s3 function to check + that they appear in the expected S3 bucket and key. + """ + data_interval_start = dt.datetime(2023, 4, 20, 14, 0, 0, tzinfo=dt.timezone.utc) + data_interval_end = dt.datetime(2023, 4, 25, 15, 0, 0, tzinfo=dt.timezone.utc) + + prefix = str(uuid.uuid4()) + + batch_export_schema: BatchExportSchema | None = None + batch_export_model: BatchExportModel | None = None + if isinstance(model, BatchExportModel): + batch_export_model = model + elif model is not None: + batch_export_schema = model insert_inputs = S3InsertInputs( bucket_name=bucket_name, region="us-east-1", prefix=prefix, - team_id=team_id, + team_id=ateam.pk, data_interval_start=data_interval_start.isoformat(), data_interval_end=data_interval_end.isoformat(), aws_access_key_id="object_storage_root_user", @@ -357,8 +437,9 @@ async def test_insert_into_s3_activity_puts_data_into_s3( endpoint_url=settings.OBJECT_STORAGE_ENDPOINT, compression=compression, exclude_events=exclude_events, - batch_export_schema=batch_export_schema, file_format=file_format, + batch_export_schema=batch_export_schema, + batch_export_model=batch_export_model, ) with override_settings( @@ -366,21 +447,23 @@ async def test_insert_into_s3_activity_puts_data_into_s3( ): # 5MB, the minimum for Multipart uploads records_exported = await activity_environment.run(insert_into_s3_activity, insert_inputs) - assert records_exported == 10005 + (events_to_export_created, persons_to_export_created) = generate_test_data + assert records_exported == events_to_export_created or records_exported == persons_to_export_created await assert_clickhouse_records_in_s3( s3_compatible_client=minio_client, clickhouse_client=clickhouse_client, bucket_name=bucket_name, key_prefix=prefix, - team_id=team_id, + team_id=ateam.pk, data_interval_start=data_interval_start, data_interval_end=data_interval_end, - batch_export_schema=batch_export_schema, + batch_export_model=model, exclude_events=exclude_events, include_events=None, compression=compression, file_format=file_format, + is_backfill=False, ) @@ -434,7 +517,7 @@ async def s3_batch_export( @pytest.mark.parametrize("interval", ["hour", "day"], indirect=True) @pytest.mark.parametrize("compression", [None, "gzip", "brotli"], indirect=True) @pytest.mark.parametrize("exclude_events", [None, ["test-exclude"]], indirect=True) -@pytest.mark.parametrize("batch_export_schema", TEST_S3_SCHEMAS) +@pytest.mark.parametrize("model", TEST_S3_MODELS) @pytest.mark.parametrize("file_format", FILE_FORMAT_EXTENSIONS.keys(), indirect=True) async def test_s3_export_workflow_with_minio_bucket( clickhouse_client, @@ -446,8 +529,11 @@ async def test_s3_export_workflow_with_minio_bucket( compression, exclude_events, s3_key_prefix, - batch_export_schema, file_format, + data_interval_start, + data_interval_end, + model: BatchExportModel | BatchExportSchema | None, + generate_test_data, ): """Test S3BatchExport Workflow end-to-end by using a local MinIO bucket instead of S3. @@ -458,41 +544,24 @@ async def test_s3_export_workflow_with_minio_bucket( will require its prescense in the database when running. This model is indirectly parametrized by several fixtures. Refer to them for more information. """ - data_interval_end = dt.datetime.fromisoformat("2023-04-25T14:30:00.000000+00:00") - data_interval_start = data_interval_end - s3_batch_export.interval_time_delta - - await generate_test_events_in_clickhouse( - client=clickhouse_client, - team_id=ateam.pk, - start_time=data_interval_start, - end_time=data_interval_end, - count=100, - count_outside_range=10, - count_other_team=10, - duplicate=True, - properties={"$browser": "Chrome", "$os": "Mac OS X"}, - person_properties={"utm_medium": "referral", "$initial_os": "Linux"}, - ) - - if exclude_events: - for event_name in exclude_events: - await generate_test_events_in_clickhouse( - client=clickhouse_client, - team_id=ateam.pk, - start_time=data_interval_start, - end_time=data_interval_end, - count=5, - count_outside_range=0, - count_other_team=0, - event_name=event_name, - ) - - workflow_id = str(uuid4()) + if isinstance(model, BatchExportModel) and model.name == "person" and exclude_events is not None: + # Eventually, this setting should be part of the model via some "filters" attribute. + pytest.skip("Unnecessary test case as person batch export is not affected by 'exclude_events'") + + batch_export_schema: BatchExportSchema | None = None + batch_export_model: BatchExportModel | None = None + if isinstance(model, BatchExportModel): + batch_export_model = model + elif model is not None: + batch_export_schema = model + + workflow_id = str(uuid.uuid4()) inputs = S3BatchExportInputs( team_id=ateam.pk, batch_export_id=str(s3_batch_export.id), data_interval_end=data_interval_end.isoformat(), interval=interval, + batch_export_model=batch_export_model, batch_export_schema=batch_export_schema, **s3_batch_export.destination.config, ) @@ -532,7 +601,7 @@ async def test_s3_export_workflow_with_minio_bucket( team_id=ateam.pk, data_interval_start=data_interval_start, data_interval_end=data_interval_end, - batch_export_schema=batch_export_schema, + batch_export_model=model, exclude_events=exclude_events, compression=compression, file_format=file_format, @@ -542,7 +611,7 @@ async def test_s3_export_workflow_with_minio_bucket( @pytest.mark.parametrize("interval", ["hour"], indirect=True) @pytest.mark.parametrize("compression", [None], indirect=True) @pytest.mark.parametrize("exclude_events", [None], indirect=True) -@pytest.mark.parametrize("batch_export_schema", TEST_S3_SCHEMAS) +@pytest.mark.parametrize("model", TEST_S3_MODELS) async def test_s3_export_workflow_with_minio_bucket_without_events( clickhouse_client, minio_client, @@ -553,21 +622,29 @@ async def test_s3_export_workflow_with_minio_bucket_without_events( compression, exclude_events, s3_key_prefix, - batch_export_schema, + model, + data_interval_start, + data_interval_end, ): """Test S3BatchExport Workflow end-to-end without any events to export. The workflow should update the batch export run status to completed and set 0 as `records_completed`. """ - data_interval_end = dt.datetime.fromisoformat("2023-04-25T14:30:00.000000+00:00") - - workflow_id = str(uuid4()) + batch_export_schema: BatchExportSchema | None = None + batch_export_model: BatchExportModel | None = None + if isinstance(model, BatchExportModel): + batch_export_model = model + elif model is not None: + batch_export_schema = model + + workflow_id = str(uuid.uuid4()) inputs = S3BatchExportInputs( team_id=ateam.pk, batch_export_id=str(s3_batch_export.id), data_interval_end=data_interval_end.isoformat(), interval=interval, batch_export_schema=batch_export_schema, + batch_export_model=batch_export_model, **s3_batch_export.destination.config, ) @@ -628,7 +705,7 @@ async def s3_client(bucket_name, s3_key_prefix): @pytest.mark.parametrize("exclude_events", [None, ["test-exclude"]], indirect=True) @pytest.mark.parametrize("encryption", [None, "AES256", "aws:kms"], indirect=True) @pytest.mark.parametrize("bucket_name", [os.getenv("S3_TEST_BUCKET")], indirect=True) -@pytest.mark.parametrize("batch_export_schema", TEST_S3_SCHEMAS) +@pytest.mark.parametrize("model", TEST_S3_MODELS) @pytest.mark.parametrize("file_format", FILE_FORMAT_EXTENSIONS.keys(), indirect=True) async def test_s3_export_workflow_with_s3_bucket( s3_client, @@ -641,8 +718,11 @@ async def test_s3_export_workflow_with_s3_bucket( encryption, exclude_events, ateam, - batch_export_schema, file_format, + data_interval_start, + data_interval_end, + model: BatchExportModel | BatchExportSchema | None, + generate_test_data, ): """Test S3 Export Workflow end-to-end by using an S3 bucket. @@ -657,36 +737,17 @@ async def test_s3_export_workflow_with_s3_bucket( will require its prescense in the database when running. This model is indirectly parametrized by several fixtures. Refer to them for more information. """ - data_interval_end = dt.datetime.fromisoformat("2023-04-25T14:30:00.000000") - data_interval_start = data_interval_end - s3_batch_export.interval_time_delta + if isinstance(model, BatchExportModel) and model.name == "person" and exclude_events is not None: + pytest.skip("Unnecessary test case as person batch export is not affected by 'exclude_events'") - await generate_test_events_in_clickhouse( - client=clickhouse_client, - team_id=ateam.pk, - start_time=data_interval_start, - end_time=data_interval_end, - count=100, - count_outside_range=10, - count_other_team=10, - duplicate=True, - properties={"$browser": "Chrome", "$os": "Mac OS X"}, - person_properties={"utm_medium": "referral", "$initial_os": "Linux"}, - ) - - if exclude_events: - for event_name in exclude_events: - await generate_test_events_in_clickhouse( - client=clickhouse_client, - team_id=ateam.pk, - start_time=data_interval_start, - end_time=data_interval_end, - count=5, - count_outside_range=0, - count_other_team=0, - event_name=event_name, - ) + batch_export_schema: BatchExportSchema | None = None + batch_export_model: BatchExportModel | None = None + if isinstance(model, BatchExportModel): + batch_export_model = model + elif model is not None: + batch_export_schema = model - workflow_id = str(uuid4()) + workflow_id = str(uuid.uuid4()) destination_config = s3_batch_export.destination.config | { "endpoint_url": None, "aws_access_key_id": os.getenv("AWS_ACCESS_KEY_ID"), @@ -698,6 +759,7 @@ async def test_s3_export_workflow_with_s3_bucket( data_interval_end=data_interval_end.isoformat(), interval=interval, batch_export_schema=batch_export_schema, + batch_export_model=batch_export_model, **destination_config, ) @@ -736,7 +798,7 @@ async def test_s3_export_workflow_with_s3_bucket( team_id=ateam.pk, data_interval_start=data_interval_start, data_interval_end=data_interval_end, - batch_export_schema=batch_export_schema, + batch_export_model=model, exclude_events=exclude_events, include_events=None, compression=compression, @@ -744,88 +806,6 @@ async def test_s3_export_workflow_with_s3_bucket( ) -@skip("Failing in CI, skip for now") -async def test_s3_export_workflow_with_minio_bucket_and_a_lot_of_data( - clickhouse_client, - minio_client, - bucket_name, - ateam, - compression, - exclude_events, - s3_key_prefix, - interval, - s3_batch_export, -): - """Test the S3BatchExport Workflow end-to-end by using a local MinIO bucket instead of S3. - - This test is the same as test_s3_export_workflow_with_minio_bucket, but we significantly increase the number - of rows generated to export to provide some guidance on whether we can perform under load. - """ - data_interval_end = dt.datetime.fromisoformat("2023-04-25T14:30:00.000000+00:00") - data_interval_start = data_interval_end - s3_batch_export.interval_time_delta - - await generate_test_events_in_clickhouse( - client=clickhouse_client, - team_id=ateam.pk, - start_time=data_interval_start, - end_time=data_interval_end, - count=100000, - count_outside_range=1000, - count_other_team=1000, - duplicate=True, - properties={"$browser": "Chrome", "$os": "Mac OS X"}, - person_properties={"utm_medium": "referral", "$initial_os": "Linux"}, - ) - - workflow_id = str(uuid4()) - inputs = S3BatchExportInputs( - team_id=ateam.pk, - batch_export_id=str(s3_batch_export.id), - data_interval_end=data_interval_end.isoformat(), - interval=interval, - **s3_batch_export.destination.config, - ) - - async with await WorkflowEnvironment.start_time_skipping() as activity_environment: - async with Worker( - activity_environment.client, - task_queue=settings.TEMPORAL_TASK_QUEUE, - workflows=[S3BatchExportWorkflow], - activities=[ - start_batch_export_run, - insert_into_s3_activity, - finish_batch_export_run, - ], - workflow_runner=UnsandboxedWorkflowRunner(), - ): - await activity_environment.client.execute_workflow( - S3BatchExportWorkflow.run, - inputs, - id=workflow_id, - task_queue=settings.TEMPORAL_TASK_QUEUE, - retry_policy=RetryPolicy(maximum_attempts=1), - execution_timeout=dt.timedelta(seconds=360), - ) - - runs = await afetch_batch_export_runs(batch_export_id=s3_batch_export.id) - assert len(runs) == 1 - - run = runs[0] - assert run.status == "Completed" - - await assert_clickhouse_records_in_s3( - s3_compatible_client=minio_client, - clickhouse_client=clickhouse_client, - bucket_name=bucket_name, - key_prefix=s3_key_prefix, - team_id=ateam.pk, - data_interval_start=data_interval_start, - data_interval_end=data_interval_end, - exclude_events=exclude_events, - compression=compression, - ) - - @pytest.mark.parametrize( "s3_key_prefix", [ @@ -837,8 +817,20 @@ async def test_s3_export_workflow_with_minio_bucket_and_a_lot_of_data( ], indirect=True, ) +@pytest.mark.parametrize("model", [TEST_S3_MODELS[1], TEST_S3_MODELS[2], None]) async def test_s3_export_workflow_with_minio_bucket_and_custom_key_prefix( - clickhouse_client, ateam, minio_client, bucket_name, compression, interval, s3_batch_export, s3_key_prefix + clickhouse_client, + ateam, + minio_client, + bucket_name, + compression, + interval, + s3_batch_export, + s3_key_prefix, + data_interval_end, + data_interval_start, + model: BatchExportModel | BatchExportSchema | None, + generate_test_data, ): """Test the S3BatchExport Workflow end-to-end by specifying a custom key prefix. @@ -846,27 +838,20 @@ async def test_s3_export_workflow_with_minio_bucket_and_custom_key_prefix( inserted_at to assert we properly default to _timestamp. This is relevant for rows inserted before inserted_at was added. """ - data_interval_end = dt.datetime.fromisoformat("2023-04-25T14:30:00.000000+00:00") - data_interval_start = data_interval_end - s3_batch_export.interval_time_delta - - await generate_test_events_in_clickhouse( - client=clickhouse_client, - team_id=ateam.pk, - start_time=data_interval_start, - end_time=data_interval_end, - count=100, - count_outside_range=10, - count_other_team=10, - duplicate=True, - properties={"$browser": "Chrome", "$os": "Mac OS X"}, - person_properties={"utm_medium": "referral", "$initial_os": "Linux"}, - ) - - workflow_id = str(uuid4()) + batch_export_schema: BatchExportSchema | None = None + batch_export_model: BatchExportModel | None = None + if isinstance(model, BatchExportModel): + batch_export_model = model + elif model is not None: + batch_export_schema = model + + workflow_id = str(uuid.uuid4()) inputs = S3BatchExportInputs( team_id=ateam.pk, batch_export_id=str(s3_batch_export.id), data_interval_end=data_interval_end.isoformat(), + batch_export_model=batch_export_model, + batch_export_schema=batch_export_schema, interval=interval, **s3_batch_export.destination.config, ) @@ -896,11 +881,12 @@ async def test_s3_export_workflow_with_minio_bucket_and_custom_key_prefix( assert len(runs) == 1 run = runs[0] + (events_to_export_created, persons_to_export_created) = generate_test_data assert run.status == "Completed" - assert run.records_completed == 100 + assert run.records_completed == events_to_export_created or run.records_completed == persons_to_export_created expected_key_prefix = s3_key_prefix.format( - table="events", + table=batch_export_model.name if batch_export_model is not None else "events", year=data_interval_end.year, # All of these must include leading 0s. month=data_interval_end.strftime("%m"), @@ -909,6 +895,7 @@ async def test_s3_export_workflow_with_minio_bucket_and_custom_key_prefix( minute=data_interval_end.strftime("%M"), second=data_interval_end.strftime("%S"), ) + objects = await minio_client.list_objects_v2(Bucket=bucket_name, Prefix=expected_key_prefix) key = objects["Contents"][0].get("Key") assert len(objects.get("Contents", [])) == 1 @@ -918,11 +905,12 @@ async def test_s3_export_workflow_with_minio_bucket_and_custom_key_prefix( s3_compatible_client=minio_client, clickhouse_client=clickhouse_client, bucket_name=bucket_name, - key_prefix=s3_key_prefix, + key_prefix=expected_key_prefix, team_id=ateam.pk, data_interval_start=data_interval_start, data_interval_end=data_interval_end, compression=compression, + batch_export_model=model, ) @@ -933,7 +921,7 @@ async def test_s3_export_workflow_handles_insert_activity_errors(ateam, s3_batch """ data_interval_end = dt.datetime.fromisoformat("2023-04-25T14:30:00.000000+00:00") - workflow_id = str(uuid4()) + workflow_id = str(uuid.uuid4()) inputs = S3BatchExportInputs( team_id=ateam.pk, batch_export_id=str(s3_batch_export.id), @@ -983,7 +971,7 @@ async def test_s3_export_workflow_handles_insert_activity_non_retryable_errors(a """ data_interval_end = dt.datetime.fromisoformat("2023-04-25T14:30:00.000000+00:00") - workflow_id = str(uuid4()) + workflow_id = str(uuid.uuid4()) inputs = S3BatchExportInputs( team_id=ateam.pk, batch_export_id=str(s3_batch_export.id), @@ -1036,7 +1024,7 @@ async def test_s3_export_workflow_handles_cancellation(ateam, s3_batch_export, i """ data_interval_end = dt.datetime.fromisoformat("2023-04-25T14:30:00.000000+00:00") - workflow_id = str(uuid4()) + workflow_id = str(uuid.uuid4()) inputs = S3BatchExportInputs( team_id=ateam.pk, batch_export_id=str(s3_batch_export.id), diff --git a/posthog/temporal/tests/utils/persons.py b/posthog/temporal/tests/utils/persons.py new file mode 100644 index 0000000000000..0a63a96d98fe5 --- /dev/null +++ b/posthog/temporal/tests/utils/persons.py @@ -0,0 +1,239 @@ +"""Test utilities that deal with test person generation.""" + +import datetime as dt +import json +import random +import typing +import uuid + +from posthog.temporal.common.clickhouse import ClickHouseClient +from posthog.temporal.tests.utils.datetimes import date_range + + +class PersonValues(typing.TypedDict): + """Person values to be inserted for testing.""" + + id: str + created_at: str + team_id: int + properties: dict | None + is_identified: bool + is_deleted: bool + version: int + _timestamp: str + + +def generate_test_persons( + count: int, + team_id: int, + timestamp_start: dt.datetime, + timestamp_end: dt.datetime, + person_id: uuid.UUID | None = None, + version: int = 1, + properties: dict | None = None, + is_identified: bool = True, + is_deleted: bool = False, + start: int = 0, +) -> list[PersonValues]: + """Generate a list of persons for testing.""" + timestamps = random.sample( + list(date_range(timestamp_start + dt.timedelta(seconds=1) * start, timestamp_end, dt.timedelta(seconds=1))), + k=count, + ) + + persons: list[PersonValues] = [] + for _ in range(start, count + start): + timestamp = timestamps.pop() + person: PersonValues = { + "id": str(person_id) if person_id else str(uuid.uuid4()), + "created_at": timestamp.strftime("%Y-%m-%d %H:%M:%S.%f"), + "team_id": team_id, + "properties": properties, + "is_identified": is_identified, + "is_deleted": is_deleted, + "version": version, + "_timestamp": timestamp.strftime("%Y-%m-%d %H:%M:%S"), + } + persons.append(person) + + return persons + + +async def insert_person_values_in_clickhouse(client: ClickHouseClient, persons: list[PersonValues]): + """Execute an insert query to insert provided PersonValues into person.""" + await client.execute_query( + f""" + INSERT INTO `person` ( + id, + team_id, + created_at, + properties, + is_identified, + is_deleted, + version, + _timestamp + ) + VALUES + """, + *[ + ( + person["id"], + person["team_id"], + person["created_at"], + json.dumps(person["properties"]) if isinstance(person["properties"], dict) else person["properties"], + person["is_identified"], + person["is_deleted"], + person["version"], + person["_timestamp"], + ) + for person in persons + ], + ) + + +async def generate_test_persons_in_clickhouse( + client: ClickHouseClient, + team_id: int, + start_time: dt.datetime, + end_time: dt.datetime, + count: int = 100, + count_other_team: int = 0, + person_id: uuid.UUID | None = None, + version: int = 1, + properties: dict | None = None, + is_identified: bool = True, + is_deleted: bool = False, + batch_size: int = 10000, +) -> tuple[list[PersonValues], list[PersonValues]]: + persons: list[PersonValues] = [] + while len(persons) < count: + persons_to_insert = generate_test_persons( + count=min(count - len(persons), batch_size), + team_id=team_id, + timestamp_start=start_time, + timestamp_end=end_time, + person_id=person_id, + properties=properties, + is_identified=is_identified, + is_deleted=is_deleted, + version=version, + start=len(persons), + ) + + await insert_person_values_in_clickhouse(client=client, persons=persons_to_insert) + + persons.extend(persons_to_insert) + + persons_from_other_team = generate_test_persons( + count=count_other_team, + team_id=team_id + random.randint(1, 1000), + timestamp_start=start_time, + timestamp_end=end_time, + person_id=person_id, + properties=properties, + is_identified=is_identified, + is_deleted=is_deleted, + version=version, + start=len(persons), + ) + + await insert_person_values_in_clickhouse(client=client, persons=persons_from_other_team) + return (persons, persons_from_other_team) + + +class PersonDistinctId2Values(typing.TypedDict): + """Values to be inserted in person_distinct_id2 for testing.""" + + team_id: int + distinct_id: str + person_id: str + is_deleted: bool + version: int + _timestamp: str + + +def generate_test_person_distinct_id2( + count: int, + team_id: int, + timestamp: dt.datetime, + distinct_id: str, + person_id: uuid.UUID | None = None, + version: int = 1, + is_deleted: bool = False, +) -> PersonDistinctId2Values: + """Generate a row of person_distinct_id2 values for testing.""" + person: PersonDistinctId2Values = { + "team_id": team_id, + "distinct_id": distinct_id, + "person_id": str(person_id) if person_id else str(uuid.uuid4()), + "is_deleted": is_deleted, + "version": version, + "_timestamp": timestamp.strftime("%Y-%m-%d %H:%M:%S"), + } + + return person + + +async def insert_person_distinct_id2_values_in_clickhouse( + client: ClickHouseClient, persons: list[PersonDistinctId2Values] +): + """Execute an insert query to insert provided PersonDistinctId2Values into person.""" + await client.execute_query( + f""" + INSERT INTO `person_distinct_id2` ( + team_id, + distinct_id, + person_id, + is_deleted, + version, + _timestamp + ) + VALUES + """, + *[ + ( + person["team_id"], + person["distinct_id"], + person["person_id"], + person["is_deleted"], + person["version"], + person["_timestamp"], + ) + for person in persons + ], + ) + + +async def generate_test_person_distinct_id2_in_clickhouse( + client: ClickHouseClient, + team_id: int, + distinct_id: str, + timestamp: dt.datetime, + person_id: uuid.UUID | None = None, + version: int = 1, + is_deleted: bool = False, +) -> tuple[PersonDistinctId2Values, PersonDistinctId2Values]: + person = generate_test_person_distinct_id2( + count=1, + team_id=team_id, + timestamp=timestamp, + distinct_id=distinct_id, + person_id=person_id, + is_deleted=is_deleted, + version=version, + ) + + await insert_person_distinct_id2_values_in_clickhouse(client=client, persons=[person]) + + person_from_other_team = generate_test_person_distinct_id2( + count=1, + team_id=team_id + random.randint(1, 1000), + timestamp=timestamp, + distinct_id=distinct_id, + person_id=person_id, + is_deleted=is_deleted, + version=version, + ) + + await insert_person_distinct_id2_values_in_clickhouse(client=client, persons=[person_from_other_team]) + return (person, person_from_other_team) From 5450f6a4ea85488cac58ab0b4dda3156abd1303f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Oberm=C3=BCller?= Date: Tue, 25 Jun 2024 11:22:11 +0200 Subject: [PATCH 21/24] refactor(insights): query based `allEventNames` selector (#23202) --- .../src/queries/nodes/InsightViz/utils.ts | 27 ++++++++++-------- .../TaxonomicBreakdownPopover.tsx | 4 ++- frontend/src/scenes/insights/insightLogic.ts | 28 ++----------------- .../scenes/insights/insightVizDataLogic.ts | 8 ++++++ 4 files changed, 29 insertions(+), 38 deletions(-) diff --git a/frontend/src/queries/nodes/InsightViz/utils.ts b/frontend/src/queries/nodes/InsightViz/utils.ts index 7fea5968515d3..d3f0146339fca 100644 --- a/frontend/src/queries/nodes/InsightViz/utils.ts +++ b/frontend/src/queries/nodes/InsightViz/utils.ts @@ -1,27 +1,32 @@ import equal from 'fast-deep-equal' import { getEventNamesForAction, isEmptyObject } from 'lib/utils' -import { InsightQueryNode, InsightVizNode, Node, NodeKind, TrendsQuery } from '~/queries/schema' +import { InsightQueryNode, InsightVizNode, Node, NodeKind } from '~/queries/schema' +import { isInsightQueryWithSeries } from '~/queries/utils' import { ActionType, FilterType, InsightModel, QueryBasedInsightModel } from '~/types' import { filtersToQueryNode } from '../InsightQuery/utils/filtersToQueryNode' -import { seriesToActionsAndEvents } from '../InsightQuery/utils/queryNodeToFilter' export const getAllEventNames = (query: InsightQueryNode, allActions: ActionType[]): string[] => { - const { actions, events } = seriesToActionsAndEvents((query as TrendsQuery).series || []) - - // If there's a "All events" entity, don't filter by event names. - if (events.find((e) => e.id === null)) { + if (!isInsightQueryWithSeries(query)) { return [] } - const allEvents = [ - ...events.map((e) => String(e.id)), - ...actions.flatMap((action) => getEventNamesForAction(action.id as string | number, allActions)), - ] + const allEvents = query.series.flatMap((e) => { + if (e.kind == NodeKind.EventsNode) { + return e.event + } else if (e.kind == NodeKind.ActionsNode) { + return getEventNamesForAction(e.id, allActions) + } + }) + + // has one "all events" event + if (allEvents.some((e) => e === null)) { + return [] + } // remove duplicates and empty events - return Array.from(new Set(allEvents.filter((a): a is string => !!a))) + return Array.from(new Set(allEvents.filter((e): e is string => !!e))) } export const getCachedResults = ( diff --git a/frontend/src/scenes/insights/filters/BreakdownFilter/TaxonomicBreakdownPopover.tsx b/frontend/src/scenes/insights/filters/BreakdownFilter/TaxonomicBreakdownPopover.tsx index bef4815fe3b9e..50324ab358ba0 100644 --- a/frontend/src/scenes/insights/filters/BreakdownFilter/TaxonomicBreakdownPopover.tsx +++ b/frontend/src/scenes/insights/filters/BreakdownFilter/TaxonomicBreakdownPopover.tsx @@ -3,6 +3,7 @@ import { TaxonomicFilter } from 'lib/components/TaxonomicFilter/TaxonomicFilter' import { TaxonomicFilterGroupType, TaxonomicFilterValue } from 'lib/components/TaxonomicFilter/types' import { Popover } from 'lib/lemon-ui/Popover/Popover' import { insightLogic } from 'scenes/insights/insightLogic' +import { insightVizDataLogic } from 'scenes/insights/insightVizDataLogic' import { groupsModel } from '~/models/groupsModel' @@ -15,7 +16,8 @@ type TaxonomicBreakdownPopoverProps = { } export const TaxonomicBreakdownPopover = ({ open, setOpen, children }: TaxonomicBreakdownPopoverProps): JSX.Element => { - const { allEventNames } = useValues(insightLogic) + const { insightProps } = useValues(insightLogic) + const { allEventNames } = useValues(insightVizDataLogic(insightProps)) const { groupsTaxonomicTypes } = useValues(groupsModel) const { taxonomicBreakdownType, includeSessions } = useValues(taxonomicBreakdownFilterLogic) diff --git a/frontend/src/scenes/insights/insightLogic.ts b/frontend/src/scenes/insights/insightLogic.ts index 37d0edebc6651..1585c4775cc09 100644 --- a/frontend/src/scenes/insights/insightLogic.ts +++ b/frontend/src/scenes/insights/insightLogic.ts @@ -6,7 +6,7 @@ import api from 'lib/api' import { TriggerExportProps } from 'lib/components/ExportButton/exporter' import { DashboardPrivilegeLevel } from 'lib/constants' import { lemonToast } from 'lib/lemon-ui/LemonToast/LemonToast' -import { getEventNamesForAction, objectsEqual, toParams } from 'lib/utils' +import { objectsEqual, toParams } from 'lib/utils' import { eventUsageLogic, InsightEventSource } from 'lib/utils/eventUsageLogic' import { insightSceneLogic } from 'scenes/insights/insightSceneLogic' import { @@ -26,7 +26,6 @@ import { mathsLogic } from 'scenes/trends/mathsLogic' import { urls } from 'scenes/urls' import { userLogic } from 'scenes/userLogic' -import { actionsModel } from '~/models/actionsModel' import { cohortsModel } from '~/models/cohortsModel' import { dashboardsModel } from '~/models/dashboardsModel' import { groupsModel } from '~/models/groupsModel' @@ -36,15 +35,7 @@ import { getQueryBasedInsightModel } from '~/queries/nodes/InsightViz/utils' import { queryExportContext } from '~/queries/query' import { InsightVizNode } from '~/queries/schema' import { isInsightVizNode } from '~/queries/utils' -import { - ActionType, - FilterType, - InsightLogicProps, - InsightModel, - InsightShortId, - ItemMode, - SetInsightOptions, -} from '~/types' +import { FilterType, InsightLogicProps, InsightModel, InsightShortId, ItemMode, SetInsightOptions } from '~/types' import { teamLogic } from '../teamLogic' import type { insightLogicType } from './insightLogicType' @@ -383,21 +374,6 @@ export const insightLogic = kea([ ) }, ], - allEventNames: [ - (s) => [s.filters, actionsModel.selectors.actions], - (filters, actions: ActionType[]) => { - const allEvents = [ - ...(filters.events || []).map((e) => e.id), - ...(filters.actions || []).flatMap((action) => getEventNamesForAction(action.id, actions)), - ] - // Has one "all events" event. - if (allEvents.some((e) => e === null)) { - return [] - } - // remove duplicates and empty events - return Array.from(new Set(allEvents.filter((a): a is string => !!a))) - }, - ], filtersKnown: [ (s) => [s.insight], ({ filters }) => { diff --git a/frontend/src/scenes/insights/insightVizDataLogic.ts b/frontend/src/scenes/insights/insightVizDataLogic.ts index d9ba949df9c4c..89c6dd73c1338 100644 --- a/frontend/src/scenes/insights/insightVizDataLogic.ts +++ b/frontend/src/scenes/insights/insightVizDataLogic.ts @@ -14,7 +14,9 @@ import { sceneLogic } from 'scenes/sceneLogic' import { filterTestAccountsDefaultsLogic } from 'scenes/settings/project/filterTestAccountDefaultsLogic' import { BASE_MATH_DEFINITIONS } from 'scenes/trends/mathsLogic' +import { actionsModel } from '~/models/actionsModel' import { queryNodeToFilter, seriesNodeToFilter } from '~/queries/nodes/InsightQuery/utils/queryNodeToFilter' +import { getAllEventNames } from '~/queries/nodes/InsightViz/utils' import { BreakdownFilter, CompareFilter, @@ -358,6 +360,12 @@ export const insightVizDataLogic = kea([ })), }), ], + + // all events used in the insight (useful for fetching only relevant property definitions) + allEventNames: [ + (s) => [s.querySource, actionsModel.selectors.actions], + (querySource, actions) => (querySource ? getAllEventNames(querySource, actions) : []), + ], }), listeners(({ actions, values, props }) => ({ From a09ff9a9e5f5c4a4d69c1d179abf29d7abbb216d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Oberm=C3=BCller?= Date: Tue, 25 Jun 2024 11:25:20 +0200 Subject: [PATCH 22/24] refactor(insights): query based `intervalUnit` (#23203) --- .../AnnotationsOverlay/annotationsOverlayLogic.test.ts | 4 +--- .../AnnotationsOverlay/annotationsOverlayLogic.ts | 6 +++++- frontend/src/scenes/insights/insightLogic.ts | 1 - 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/frontend/src/lib/components/AnnotationsOverlay/annotationsOverlayLogic.test.ts b/frontend/src/lib/components/AnnotationsOverlay/annotationsOverlayLogic.test.ts index dd053493edc87..b44bf59516142 100644 --- a/frontend/src/lib/components/AnnotationsOverlay/annotationsOverlayLogic.test.ts +++ b/frontend/src/lib/components/AnnotationsOverlay/annotationsOverlayLogic.test.ts @@ -125,9 +125,7 @@ function useInsightMocks(interval: string = 'day', timezone: string = 'UTC'): vo result: {}, id: MOCK_INSIGHT_NUMERIC_ID, short_id: MOCK_INSIGHT_SHORT_ID, - filters: { - interval, - }, + filters: { insight: 'TRENDS', interval }, timezone, } useMocks({ diff --git a/frontend/src/lib/components/AnnotationsOverlay/annotationsOverlayLogic.ts b/frontend/src/lib/components/AnnotationsOverlay/annotationsOverlayLogic.ts index 881beaf6e3590..84c3adf0de250 100644 --- a/frontend/src/lib/components/AnnotationsOverlay/annotationsOverlayLogic.ts +++ b/frontend/src/lib/components/AnnotationsOverlay/annotationsOverlayLogic.ts @@ -3,6 +3,7 @@ import { actions, connect, kea, key, listeners, path, props, reducers, selectors import { Dayjs, dayjsLocalToTimezone } from 'lib/dayjs' import { groupBy } from 'lib/utils' import { insightLogic } from 'scenes/insights/insightLogic' +import { insightVizDataLogic } from 'scenes/insights/insightVizDataLogic' import { teamLogic } from 'scenes/teamLogic' import { AnnotationDataWithoutInsight, annotationsModel } from '~/models/annotationsModel' @@ -39,7 +40,9 @@ export const annotationsOverlayLogic = kea([ connect(() => ({ values: [ insightLogic, - ['intervalUnit', 'insightId'], + ['insightId'], + insightVizDataLogic, + ['interval'], annotationsModel, ['annotations', 'annotationsLoading'], teamLogic, @@ -92,6 +95,7 @@ export const annotationsOverlayLogic = kea([ }, })), selectors({ + intervalUnit: [(s) => [s.interval], (interval) => interval || 'day'], pointsPerTick: [ (_, p) => [p.ticks], (ticks): number => { diff --git a/frontend/src/scenes/insights/insightLogic.ts b/frontend/src/scenes/insights/insightLogic.ts index 1585c4775cc09..34511e64cc551 100644 --- a/frontend/src/scenes/insights/insightLogic.ts +++ b/frontend/src/scenes/insights/insightLogic.ts @@ -381,7 +381,6 @@ export const insightLogic = kea([ return 'insight' in (filters ?? {}) }, ], - intervalUnit: [(s) => [s.filters], (filters) => filters?.interval || 'day'], exporterResourceParams: [ (s) => [s.filters, s.currentTeamId, s.insight], ( From 6eddc70624a413c8081a7690d21880e4bdbc053b Mon Sep 17 00:00:00 2001 From: Julian Bez Date: Tue, 25 Jun 2024 10:30:08 +0100 Subject: [PATCH 23/24] fix(exports): Fix export current columns by using person id column (#23191) --- .../src/queries/nodes/DataTable/DataTableExport.tsx | 9 +++++++-- posthog/tasks/exports/csv_exporter.py | 11 +++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/frontend/src/queries/nodes/DataTable/DataTableExport.tsx b/frontend/src/queries/nodes/DataTable/DataTableExport.tsx index c391496a4c188..80fd74804cd9a 100644 --- a/frontend/src/queries/nodes/DataTable/DataTableExport.tsx +++ b/frontend/src/queries/nodes/DataTable/DataTableExport.tsx @@ -22,6 +22,8 @@ import { dataTableLogic, DataTableRow } from './dataTableLogic' // Sync with posthog/hogql/constants.py export const MAX_SELECT_RETURNED_ROWS = 50000 +const columnDisallowList = ['person.$delete', '*'] + export async function startDownload( query: DataTableNode, onlySelectedColumns: boolean, @@ -51,6 +53,9 @@ export async function startDownload( removeExpressionComment(c) === 'person' ? 'email' : c ) } + if (exportContext['columns'].includes('person')) { + exportContext['columns'] = exportContext['columns'].map((c: string) => (c === 'person' ? 'person.id' : c)) + } exportContext['columns'] = exportContext['columns'].filter((n: string) => !columnDisallowList.includes(n)) } exportCall({ @@ -59,7 +64,6 @@ export async function startDownload( }) } -const columnDisallowList = ['person.$delete', '*'] const getCsvTableData = (dataTableRows: DataTableRow[], columns: string[], query: DataTableNode): string[][] => { if (isPersonsNode(query.source)) { const filteredColumns = columns.filter((n) => !columnDisallowList.includes(n)) @@ -196,7 +200,8 @@ export function DataTableExport({ query }: DataTableExportProps): JSX.Element | (isEventsQuery(source) || isPersonsNode(source) ? source.properties?.length || 0 : 0) + (isEventsQuery(source) && source.event ? 1 : 0) + (isPersonsNode(source) && source.search ? 1 : 0) - const canExportAllColumns = (isEventsQuery(source) && source.select.includes('*')) || isPersonsNode(source) + const canExportAllColumns = + (isEventsQuery(source) && source.select.includes('*')) || isPersonsNode(source) || isActorsQuery(source) const showExportClipboardButtons = isPersonsNode(source) || isEventsQuery(source) || isHogQLQuery(source) return ( diff --git a/posthog/tasks/exports/csv_exporter.py b/posthog/tasks/exports/csv_exporter.py index 9110a1e57f800..fe33c8e846879 100644 --- a/posthog/tasks/exports/csv_exporter.py +++ b/posthog/tasks/exports/csv_exporter.py @@ -30,6 +30,9 @@ logger = structlog.get_logger(__name__) +RESULT_LIMIT_KEYS = ("distinct_ids",) +RESULT_LIMIT_LENGTH = 10 + # SUPPORTED CSV TYPES @@ -94,6 +97,14 @@ def _convert_response_to_csv_data(data: Any) -> Generator[Any, None, None]: for row in results: row_dict = {} for idx, x in enumerate(row): + if isinstance(x, dict): + for key in filter( + lambda y: y in RESULT_LIMIT_KEYS and len(x[y]) > RESULT_LIMIT_LENGTH, x.keys() + ): + total = len(x[key]) + x[key] = x[key][:RESULT_LIMIT_LENGTH] + row_dict[f"{key}.total"] = f"Note: {total} {key} in total" + if not data.get("columns"): row_dict[f"column_{idx}"] = x else: From 9b3942ae62f5b85b31c90fded9e46deb24a063ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Oberm=C3=BCller?= Date: Tue, 25 Jun 2024 11:41:45 +0200 Subject: [PATCH 24/24] refactor(insights): remove more filter based selectors (#23194) --- .../AddToDashboard/AddToDashboardModal.tsx | 39 ++--- .../addToDashboardModalLogic.ts | 97 +++++------- .../Cards/InsightCard/InsightMeta.tsx | 10 +- .../nodes/InsightViz/EditorFilterGroup.tsx | 3 +- .../nodes/InsightViz/EditorFilters.tsx | 3 +- .../nodes/SavedInsight/SavedInsight.tsx | 6 +- frontend/src/scenes/insights/Insight.tsx | 4 +- .../src/scenes/insights/InsightPageHeader.tsx | 7 +- frontend/src/scenes/insights/InsightScene.tsx | 2 +- .../src/scenes/insights/insightDataLogic.tsx | 34 ++-- .../src/scenes/insights/insightLogic.test.ts | 69 +++++--- frontend/src/scenes/insights/insightLogic.ts | 149 ++++++------------ .../src/scenes/insights/insightSceneLogic.tsx | 30 ++-- .../src/scenes/insights/insightUsageLogic.ts | 2 +- frontend/src/scenes/insights/utils.tsx | 2 +- .../views/InsightsTable/InsightsTable.tsx | 4 +- .../insights/views/LineGraph/LineGraph.tsx | 4 +- frontend/src/scenes/paths/Paths.tsx | 4 +- 18 files changed, 217 insertions(+), 252 deletions(-) diff --git a/frontend/src/lib/components/AddToDashboard/AddToDashboardModal.tsx b/frontend/src/lib/components/AddToDashboard/AddToDashboardModal.tsx index 088787c302c49..57554a8ff6f32 100644 --- a/frontend/src/lib/components/AddToDashboard/AddToDashboardModal.tsx +++ b/frontend/src/lib/components/AddToDashboard/AddToDashboardModal.tsx @@ -14,18 +14,11 @@ import { List, ListRowProps, ListRowRenderer } from 'react-virtualized/dist/es/L import { teamLogic } from 'scenes/teamLogic' import { urls } from 'scenes/urls' -import { DashboardBasicType, InsightModel } from '~/types' - -interface SaveToDashboardModalProps { - isOpen: boolean - closeModal: () => void - insight: Partial - canEditInsight: boolean -} +import { DashboardBasicType, InsightLogicProps } from '~/types' interface DashboardRelationRowProps { dashboard: DashboardBasicType - insight: Partial + insightProps: InsightLogicProps canEditInsight: boolean isHighlighted: boolean isAlreadyOnDashboard: boolean @@ -37,14 +30,11 @@ const DashboardRelationRow = ({ isHighlighted, isAlreadyOnDashboard, dashboard, - insight, + insightProps, canEditInsight, }: DashboardRelationRowProps): JSX.Element => { - const logic = addToDashboardModalLogic({ - insight: insight, - }) - const { addToDashboard, removeFromDashboard } = useActions(logic) - const { dashboardWithActiveAPICall } = useValues(logic) + const { addToDashboard, removeFromDashboard } = useActions(addToDashboardModalLogic(insightProps)) + const { dashboardWithActiveAPICall } = useValues(addToDashboardModalLogic(insightProps)) const { currentTeam } = useValues(teamLogic) const isPrimary = dashboard.id === currentTeam?.primary_dashboard @@ -84,9 +74,7 @@ const DashboardRelationRow = ({ size="small" onClick={(e) => { e.preventDefault() - isAlreadyOnDashboard - ? removeFromDashboard(insight, dashboard.id) - : addToDashboard(insight, dashboard.id) + isAlreadyOnDashboard ? removeFromDashboard(dashboard.id) : addToDashboard(dashboard.id) }} > {isAlreadyOnDashboard ? 'Remove from dashboard' : 'Add to dashboard'} @@ -95,15 +83,20 @@ const DashboardRelationRow = ({ ) } +interface SaveToDashboardModalProps { + isOpen: boolean + closeModal: () => void + insightProps: InsightLogicProps + canEditInsight: boolean +} + export function AddToDashboardModal({ isOpen, closeModal, - insight, + insightProps, canEditInsight, }: SaveToDashboardModalProps): JSX.Element { - const logic = addToDashboardModalLogic({ - insight: insight, - }) + const logic = addToDashboardModalLogic(insightProps) const { searchQuery, currentDashboards, orderedDashboards, scrollIndex } = useValues(logic) const { setSearchQuery, addNewDashboard } = useActions(logic) @@ -113,7 +106,7 @@ export function AddToDashboardModal({ -} - // Helping kea-typegen navigate the exported default class for Fuse - export interface Fuse extends FuseClass {} export const addToDashboardModalLogic = kea([ - props({} as AddToDashboardModalLogicProps), - key(({ insight }) => { - if (!insight.short_id) { - throw Error('must provide an insight with a short id') - } - return insight.short_id - }), - path(['lib', 'components', 'AddToDashboard', 'saveToDashboardModalLogic']), - connect((props: AddToDashboardModalLogicProps) => { - const builtInsightLogic = insightLogic({ - dashboardItemId: props.insight.short_id, - cachedInsight: props.insight, - }) - return { - values: [builtInsightLogic, ['insight']], - actions: [ - builtInsightLogic, - ['updateInsight', 'updateInsightSuccess', 'updateInsightFailure'], - eventUsageLogic, - [ - 'reportSavedInsightToDashboard', - 'reportRemovedInsightFromDashboard', - 'reportCreatedDashboardFromModal', - ], - newDashboardLogic, - ['showNewDashboardModal'], - ], - } - }), + props({} as InsightLogicProps), + key(keyForInsightLogicProps('new')), + path((key) => ['lib', 'components', 'AddToDashboard', 'saveToDashboardModalLogic', key]), + connect((props: InsightLogicProps) => ({ + values: [insightLogic(props), ['queryBasedInsight', 'legacyInsight']], + actions: [ + insightLogic(props), + ['updateInsight', 'updateInsightSuccess', 'updateInsightFailure'], + eventUsageLogic, + ['reportSavedInsightToDashboard', 'reportRemovedInsightFromDashboard', 'reportCreatedDashboardFromModal'], + newDashboardLogic, + ['showNewDashboardModal'], + ], + })), actions({ addNewDashboard: true, setSearchQuery: (query: string) => ({ query }), - setInsight: (insight: InsightType) => ({ insight }), setScrollIndex: (index: number) => ({ index }), - addToDashboard: (insight: Partial, dashboardId: number) => ({ insight, dashboardId }), - removeFromDashboard: (insight: Partial, dashboardId: number) => ({ insight, dashboardId }), + addToDashboard: (dashboardId: number) => ({ dashboardId }), + removeFromDashboard: (dashboardId: number) => ({ dashboardId }), }), reducers({ searchQuery: ['', { setSearchQuery: (_, { query }) => query }], @@ -89,7 +69,7 @@ export const addToDashboardModalLogic = kea([ : nameSortedDashboards, ], currentDashboards: [ - (s) => [s.filteredDashboards, s.insight], + (s) => [s.filteredDashboards, s.queryBasedInsight], (filteredDashboards, insight): DashboardBasicType[] => filteredDashboards.filter((d) => insight.dashboard_tiles?.map((dt) => dt.dashboard_id)?.includes(d.id)), ], @@ -106,37 +86,42 @@ export const addToDashboardModalLogic = kea([ ], ], }), - listeners(({ actions, values, props }) => ({ + listeners(({ actions, values }) => ({ addNewDashboard: async () => { actions.showNewDashboardModal() }, [dashboardsModel.actionTypes.addDashboardSuccess]: async ({ dashboard }) => { actions.reportCreatedDashboardFromModal() - actions.addToDashboard(props.insight, dashboard.id) + actions.addToDashboard(dashboard.id) actions.setScrollIndex(values.orderedDashboards.findIndex((d) => d.id === dashboard.id)) }, - addToDashboard: async ({ insight, dashboardId }) => { + addToDashboard: async ({ dashboardId }) => { // TODO be able to update not by patching `dashboards` against insight // either patch dashboard_tiles on the insight or add a dashboard_tiles API - actions.updateInsight({ ...insight, dashboards: [...(insight.dashboards || []), dashboardId] }, () => { - actions.reportSavedInsightToDashboard() - dashboardsModel.actions.tileAddedToDashboard(dashboardId) - lemonToast.success('Insight added to dashboard', { - button: { - label: 'View dashboard', - action: () => router.actions.push(urls.dashboard(dashboardId)), - }, - }) - }) + actions.updateInsight( + { ...values.legacyInsight, dashboards: [...(values.legacyInsight.dashboards || []), dashboardId] }, + () => { + actions.reportSavedInsightToDashboard() + dashboardsModel.actions.tileAddedToDashboard(dashboardId) + lemonToast.success('Insight added to dashboard', { + button: { + label: 'View dashboard', + action: () => router.actions.push(urls.dashboard(dashboardId)), + }, + }) + } + ) }, - removeFromDashboard: async ({ insight, dashboardId }): Promise => { + removeFromDashboard: async ({ dashboardId }): Promise => { actions.updateInsight( { - ...insight, - dashboards: (insight.dashboards || []).filter((d) => d !== dashboardId), - dashboard_tiles: (insight.dashboard_tiles || []).filter((dt) => dt.dashboard_id !== dashboardId), + ...values.legacyInsight, + dashboards: (values.legacyInsight.dashboards || []).filter((d) => d !== dashboardId), + dashboard_tiles: (values.legacyInsight.dashboard_tiles || []).filter( + (dt) => dt.dashboard_id !== dashboardId + ), }, () => { actions.reportRemovedInsightFromDashboard() diff --git a/frontend/src/lib/components/Cards/InsightCard/InsightMeta.tsx b/frontend/src/lib/components/Cards/InsightCard/InsightMeta.tsx index f9d965781175a..f84ccda9da906 100644 --- a/frontend/src/lib/components/Cards/InsightCard/InsightMeta.tsx +++ b/frontend/src/lib/components/Cards/InsightCard/InsightMeta.tsx @@ -15,6 +15,7 @@ import { Splotch, SplotchColor } from 'lib/lemon-ui/Splotch' import { Tooltip } from 'lib/lemon-ui/Tooltip' import { capitalizeFirstLetter } from 'lib/utils' import React from 'react' +import { insightDataLogic } from 'scenes/insights/insightDataLogic' import { insightLogic } from 'scenes/insights/insightLogic' import { insightVizDataLogic } from 'scenes/insights/insightVizDataLogic' import { useSummarizeInsight } from 'scenes/insights/summarizeInsight' @@ -67,7 +68,8 @@ export function InsightMeta({ moreButtons, }: InsightMetaProps): JSX.Element { const { short_id, name, dashboards } = insight - const { exporterResourceParams, insightProps } = useValues(insightLogic) + const { insightProps } = useValues(insightLogic) + const { exportContext } = useValues(insightDataLogic(insightProps)) const { samplingFactor } = useValues(insightVizDataLogic(insightProps)) const { nameSortedDashboards } = useValues(dashboardsModel) @@ -208,7 +210,7 @@ export function InsightMeta({ > Duplicate - {exporterResourceParams ? ( + {exportContext ? ( <> diff --git a/frontend/src/queries/nodes/InsightViz/EditorFilterGroup.tsx b/frontend/src/queries/nodes/InsightViz/EditorFilterGroup.tsx index 506c9a988f924..8b91a8976e1a6 100644 --- a/frontend/src/queries/nodes/InsightViz/EditorFilterGroup.tsx +++ b/frontend/src/queries/nodes/InsightViz/EditorFilterGroup.tsx @@ -8,11 +8,10 @@ import { slugify } from 'lib/utils' import { Fragment, useState } from 'react' import { InsightQueryNode } from '~/queries/schema' -import type { InsightEditorFilterGroup, InsightLogicProps, InsightModel } from '~/types' +import type { InsightEditorFilterGroup, InsightLogicProps } from '~/types' export interface EditorFilterGroupProps { editorFilterGroup: InsightEditorFilterGroup - insight: Partial insightProps: InsightLogicProps query: InsightQueryNode } diff --git a/frontend/src/queries/nodes/InsightViz/EditorFilters.tsx b/frontend/src/queries/nodes/InsightViz/EditorFilters.tsx index e2ad4a230eece..e608fb1d7d574 100644 --- a/frontend/src/queries/nodes/InsightViz/EditorFilters.tsx +++ b/frontend/src/queries/nodes/InsightViz/EditorFilters.tsx @@ -48,7 +48,7 @@ export interface EditorFiltersProps { export function EditorFilters({ query, showing, embedded }: EditorFiltersProps): JSX.Element | null { const { hasAvailableFeature } = useValues(userLogic) - const { insight, insightProps } = useValues(insightLogic) + const { insightProps } = useValues(insightLogic) const { isTrends, isFunnels, @@ -290,7 +290,6 @@ export function EditorFilters({ query, showing, embedded }: EditorFiltersProps): diff --git a/frontend/src/queries/nodes/SavedInsight/SavedInsight.tsx b/frontend/src/queries/nodes/SavedInsight/SavedInsight.tsx index 4f78be8de7e78..997e9e1ade448 100644 --- a/frontend/src/queries/nodes/SavedInsight/SavedInsight.tsx +++ b/frontend/src/queries/nodes/SavedInsight/SavedInsight.tsx @@ -16,7 +16,7 @@ interface InsightProps { export function SavedInsight({ query: propsQuery, context }: InsightProps): JSX.Element { const insightProps: InsightLogicProps = { dashboardItemId: propsQuery.shortId } - const { insight, insightLoading } = useValues(insightLogic(insightProps)) + const { queryBasedInsight: insight, insightLoading } = useValues(insightLogic(insightProps)) const { query: dataQuery } = useValues(insightDataLogic(insightProps)) if (insightLoading) { @@ -27,10 +27,6 @@ export function SavedInsight({ query: propsQuery, context }: InsightProps): JSX. ) } - if (!insight.filters) { - throw new Error('InsightNode expects an insight with filters') - } - const query = { ...propsQuery, ...dataQuery, full: propsQuery.full } return diff --git a/frontend/src/scenes/insights/Insight.tsx b/frontend/src/scenes/insights/Insight.tsx index 17d05aee1f686..17191bb83a23e 100644 --- a/frontend/src/scenes/insights/Insight.tsx +++ b/frontend/src/scenes/insights/Insight.tsx @@ -18,12 +18,12 @@ export interface InsightSceneProps { export function Insight({ insightId }: InsightSceneProps): JSX.Element { // insightSceneLogic - const { insightMode, insight } = useValues(insightSceneLogic) + const { insightMode, legacyInsight } = useValues(insightSceneLogic) // insightLogic const logic = insightLogic({ dashboardItemId: insightId || 'new', - cachedInsight: insight?.short_id === insightId ? insight : null, + cachedInsight: legacyInsight?.short_id === insightId ? legacyInsight : null, }) const { insightProps, insightLoading, filtersKnown } = useValues(logic) diff --git a/frontend/src/scenes/insights/InsightPageHeader.tsx b/frontend/src/scenes/insights/InsightPageHeader.tsx index cbbbc230b29f0..be616af51e52d 100644 --- a/frontend/src/scenes/insights/InsightPageHeader.tsx +++ b/frontend/src/scenes/insights/InsightPageHeader.tsx @@ -28,7 +28,6 @@ import { teamLogic } from 'scenes/teamLogic' import { urls } from 'scenes/urls' import { tagsModel } from '~/models/tagsModel' -import { getQueryBasedInsightModel } from '~/queries/nodes/InsightViz/utils' import { DataTableNode, NodeKind } from '~/queries/schema' import { ExporterFormat, InsightLogicProps, InsightModel, InsightShortId, ItemMode, NotebookNodeType } from '~/types' @@ -41,13 +40,13 @@ export function InsightPageHeader({ insightLogicProps }: { insightLogicProps: In const { insightProps, canEditInsight, - insight: legacyInsight, + queryBasedInsight: insight, + legacyInsight, insightChanged, insightSaving, hasDashboardItemId, } = useValues(insightLogic(insightLogicProps)) const { setInsightMetadata } = useActions(insightLogic(insightLogicProps)) - const insight = getQueryBasedInsightModel(legacyInsight) // savedInsightsLogic const { duplicateInsight, loadInsights } = useActions(savedInsightsLogic) @@ -85,7 +84,7 @@ export function InsightPageHeader({ insightLogicProps }: { insightLogicProps: In setAddToDashboardModalOpenModal(false)} - insight={legacyInsight} + insightProps={insightProps} canEditInsight={canEditInsight} /> diff --git a/frontend/src/scenes/insights/insightDataLogic.tsx b/frontend/src/scenes/insights/insightDataLogic.tsx index dd30e1df0387d..90aa7ff4f75fa 100644 --- a/frontend/src/scenes/insights/insightDataLogic.tsx +++ b/frontend/src/scenes/insights/insightDataLogic.tsx @@ -43,7 +43,7 @@ export const insightDataLogic = kea([ connect((props: InsightLogicProps) => ({ values: [ insightLogic, - ['filters', 'insight', 'savedInsight'], + ['filters', 'legacyInsight', 'queryBasedInsight', 'savedInsight'], dataNodeLogic({ key: insightVizDataNodeKey(props), loadPriority: props.loadPriority, @@ -109,7 +109,7 @@ export const insightDataLogic = kea([ ], query: [ - (s) => [s.propsQuery, s.filters, s.insight, s.internalQuery, s.filterTestAccountsDefault], + (s) => [s.propsQuery, s.filters, s.legacyInsight, s.internalQuery, s.filterTestAccountsDefault], (propsQuery, filters, insight, internalQuery, filterTestAccountsDefault) => propsQuery || internalQuery || @@ -132,7 +132,7 @@ export const insightDataLogic = kea([ ], exportContext: [ - (s) => [s.query, s.insight], + (s) => [s.query, s.queryBasedInsight], (query, insight) => { if (!query) { // if we're here without a query then an empty query context is not the problem @@ -153,10 +153,10 @@ export const insightDataLogic = kea([ ], queryChanged: [ - (s) => [s.isQueryBasedInsight, s.query, s.insight, s.savedInsight, s.currentTeam], - (isQueryBasedInsight, query, insight, savedInsight, currentTeam) => { + (s) => [s.isQueryBasedInsight, s.query, s.legacyInsight, s.savedInsight, s.currentTeam], + (isQueryBasedInsight, query, legacyInsight, savedInsight, currentTeam) => { if (isQueryBasedInsight) { - return !objectsEqual(query, insight.query) + return !objectsEqual(query, legacyInsight.query) } const currentFilters = queryNodeToFilter((query as InsightVizNode).source) @@ -205,16 +205,16 @@ export const insightDataLogic = kea([ actions.setInsightData({ ...values.insightData, result }) } }, - loadInsightSuccess: ({ insight }) => { - if (insight.query) { - actions.setQuery(insight.query) - } else if (!!insight.filters && !!Object.keys(insight.filters).length) { - const query = queryFromFilters(insight.filters) + loadInsightSuccess: ({ legacyInsight }) => { + if (legacyInsight.query) { + actions.setQuery(legacyInsight.query) + } else if (!!legacyInsight.filters && !!Object.keys(legacyInsight.filters).length) { + const query = queryFromFilters(legacyInsight.filters) actions.setQuery(query) } }, saveInsight: ({ redirectToViewMode }) => { - let filters = values.insight.filters + let filters = values.legacyInsight.filters if (isInsightVizNode(values.query)) { const querySource = values.query.source filters = queryNodeToFilter(querySource) @@ -229,7 +229,7 @@ export const insightDataLogic = kea([ actions.setInsight( { - ...values.insight, + ...values.legacyInsight, filters: filters, query: query ?? undefined, }, @@ -241,7 +241,9 @@ export const insightDataLogic = kea([ saveAs: async () => { LemonDialog.openForm({ title: 'Save as new insight', - initialValues: { insightName: `${values.insight.name || values.insight.derived_name} (copy)` }, + initialValues: { + insightName: `${values.queryBasedInsight.name || values.queryBasedInsight.derived_name} (copy)`, + }, content: ( @@ -254,7 +256,7 @@ export const insightDataLogic = kea([ }) }, saveAsNamingSuccess: ({ name }) => { - let filters = values.insight.filters + let filters = values.legacyInsight.filters if (isInsightVizNode(values.query)) { const querySource = values.query.source filters = queryNodeToFilter(querySource) @@ -269,7 +271,7 @@ export const insightDataLogic = kea([ actions.setInsight( { - ...values.insight, + ...values.legacyInsight, filters: filters, query: query ?? undefined, }, diff --git a/frontend/src/scenes/insights/insightLogic.test.ts b/frontend/src/scenes/insights/insightLogic.test.ts index a525473853d21..ececc9c4f5818 100644 --- a/frontend/src/scenes/insights/insightLogic.test.ts +++ b/frontend/src/scenes/insights/insightLogic.test.ts @@ -269,7 +269,15 @@ describe('insightLogic', () => { it('no query to load results', async () => { await expectLogic(logic) .toMatchValues({ - insight: partial({ short_id: Insight42, results: ['cached result'] }), + legacyInsight: partial({ short_id: Insight42, results: ['cached result'] }), + queryBasedInsight: { + short_id: Insight42, + results: ['cached result'], + query: { + kind: 'InsightVizNode', + source: partial({ kind: 'TrendsQuery', series: [partial({ event: 2 })] }), + }, + }, filters: partial({ events: [{ id: 2 }], properties: [partial({ type: PropertyFilterType.Person })], @@ -300,7 +308,12 @@ describe('insightLogic', () => { it('no query to load results', async () => { await expectLogic(logic) .toMatchValues({ - insight: partial({ + legacyInsight: partial({ + short_id: Insight42, + results: ['cached result'], + query: { kind: NodeKind.TimeToSeeDataSessionsQuery }, + }), + queryBasedInsight: partial({ short_id: Insight42, results: ['cached result'], query: { kind: NodeKind.TimeToSeeDataSessionsQuery }, @@ -327,7 +340,14 @@ describe('insightLogic', () => { await expectLogic(logic) .toDispatchActions([]) .toMatchValues({ - insight: partial({ short_id: Insight42, query: { kind: NodeKind.TimeToSeeDataSessionsQuery } }), + legacyInsight: partial({ + short_id: Insight42, + query: { kind: NodeKind.TimeToSeeDataSessionsQuery }, + }), + queryBasedInsight: partial({ + short_id: Insight42, + query: { kind: NodeKind.TimeToSeeDataSessionsQuery }, + }), filters: {}, }) .delay(1) @@ -362,7 +382,7 @@ describe('insightLogic', () => { await expectLogic(logic) .toMatchValues({ - insight: insight, + legacyInsight: insight, filters: partial({ events: [partial({ id: 3 })], properties: [partial({ value: 'a' })], @@ -379,7 +399,7 @@ describe('insightLogic', () => { expectLogic(logicUnderTest) .toDispatchActions(['loadInsight']) .toMatchValues({ - insight: partial({ + queryBasedInsight: partial({ short_id: '42', }), }) @@ -442,7 +462,7 @@ describe('insightLogic', () => { } await expectLogic(logic).toMatchValues({ - insight: partial(expectedPartialInsight), + legacyInsight: partial(expectedPartialInsight), savedInsight: {}, insightChanged: false, }) @@ -466,7 +486,7 @@ describe('insightLogic', () => { }, } await expectLogic(logic).toMatchValues({ - insight: partial(expectedPartialInsight), + legacyInsight: partial(expectedPartialInsight), savedInsight: partial(expectedPartialInsight), insightChanged: false, }) @@ -474,7 +494,7 @@ describe('insightLogic', () => { await expectLogic(logic, () => { logic.actions.setInsightMetadata({ name: 'Foobar 43', description: 'Lorem ipsum.', tags: ['good'] }) }).toMatchValues({ - insight: partial({ name: 'Foobar 43', description: 'Lorem ipsum.', tags: ['good'] }), + legacyInsight: partial({ name: 'Foobar 43', description: 'Lorem ipsum.', tags: ['good'] }), savedInsight: partial({ name: '', description: '', tags: [] }), insightChanged: true, }) @@ -484,7 +504,7 @@ describe('insightLogic', () => { }).toFinishAllListeners() await expectLogic(logic).toMatchValues({ - insight: partial({ name: 'Foobar 43', description: 'Lorem ipsum.', tags: ['good'] }), + legacyInsight: partial({ name: 'Foobar 43', description: 'Lorem ipsum.', tags: ['good'] }), savedInsight: partial({ name: 'Foobar 43', description: 'Lorem ipsum.', tags: ['good'] }), insightChanged: false, }) @@ -564,7 +584,8 @@ describe('insightLogic', () => { .toMatchValues({ savedInsight: partial({ filters: partial({ insight: InsightType.FUNNELS }) }), filters: partial({ insight: InsightType.FUNNELS }), - insight: partial({ id: 12, short_id: Insight12, name: 'New Insight (copy)' }), + legacyInsight: partial({ id: 12, short_id: Insight12, name: 'New Insight (copy)' }), + queryBasedInsight: partial({ id: 12, short_id: Insight12, name: 'New Insight (copy)' }), insightChanged: false, }) @@ -638,7 +659,10 @@ describe('insightLogic', () => { }) .toFinishAllListeners() .toMatchValues({ - insight: truth(({ name }) => { + legacyInsight: truth(({ name }) => { + return name === 'new name' + }), + queryBasedInsight: truth(({ name }) => { return name === 'new name' }), }) @@ -658,7 +682,10 @@ describe('insightLogic', () => { }) .toFinishAllListeners() .toMatchValues({ - insight: truth(({ name }) => { + legacyInsight: truth(({ name }) => { + return name === 'original name' + }), + queryBasedInsight: truth(({ name }) => { return name === 'original name' }), }) @@ -673,7 +700,8 @@ describe('insightLogic', () => { }) .toFinishAllListeners() .toMatchValues({ - insight: expect.objectContaining({ dashboards: [1, 2] }), + legacyInsight: expect.objectContaining({ dashboards: [1, 2] }), + queryBasedInsight: expect.objectContaining({ dashboards: [1, 2] }), }) }) @@ -686,7 +714,8 @@ describe('insightLogic', () => { }) .toFinishAllListeners() .toMatchValues({ - insight: expect.objectContaining({ dashboards: [1, 2, 3] }), + legacyInsight: expect.objectContaining({ dashboards: [1, 2, 3] }), + queryBasedInsight: expect.objectContaining({ dashboards: [1, 2, 3] }), }) }) @@ -696,7 +725,8 @@ describe('insightLogic', () => { }) .toFinishAllListeners() .toMatchValues({ - insight: expect.objectContaining({ dashboards: [1, 2] }), + legacyInsight: expect.objectContaining({ dashboards: [1, 2] }), + queryBasedInsight: expect.objectContaining({ dashboards: [1, 2] }), }) }) @@ -706,7 +736,8 @@ describe('insightLogic', () => { }) .toFinishAllListeners() .toMatchValues({ - insight: expect.objectContaining({ dashboards: [1, 2, 3] }), + legacyInsight: expect.objectContaining({ dashboards: [1, 2, 3] }), + queryBasedInsight: expect.objectContaining({ dashboards: [1, 2, 3] }), }) }) @@ -716,7 +747,8 @@ describe('insightLogic', () => { }) .toFinishAllListeners() .toMatchValues({ - insight: expect.objectContaining({ dashboards: [1, 2, 3, 1234] }), + legacyInsight: expect.objectContaining({ dashboards: [1, 2, 3, 1234] }), + queryBasedInsight: expect.objectContaining({ dashboards: [1, 2, 3, 1234] }), }) }) @@ -726,7 +758,8 @@ describe('insightLogic', () => { }) .toFinishAllListeners() .toMatchValues({ - insight: expect.objectContaining({ dashboards: [1, 2, 3] }), + legacyInsight: expect.objectContaining({ dashboards: [1, 2, 3] }), + queryBasedInsight: expect.objectContaining({ dashboards: [1, 2, 3] }), }) }) }) diff --git a/frontend/src/scenes/insights/insightLogic.ts b/frontend/src/scenes/insights/insightLogic.ts index 34511e64cc551..ea6128d70a5cb 100644 --- a/frontend/src/scenes/insights/insightLogic.ts +++ b/frontend/src/scenes/insights/insightLogic.ts @@ -3,22 +3,12 @@ import { actions, connect, events, kea, key, listeners, path, props, reducers, s import { loaders } from 'kea-loaders' import { router } from 'kea-router' import api from 'lib/api' -import { TriggerExportProps } from 'lib/components/ExportButton/exporter' import { DashboardPrivilegeLevel } from 'lib/constants' import { lemonToast } from 'lib/lemon-ui/LemonToast/LemonToast' -import { objectsEqual, toParams } from 'lib/utils' +import { objectsEqual } from 'lib/utils' import { eventUsageLogic, InsightEventSource } from 'lib/utils/eventUsageLogic' import { insightSceneLogic } from 'scenes/insights/insightSceneLogic' -import { - filterTrendsClientSideParams, - isFunnelsFilter, - isLifecycleFilter, - isPathsFilter, - isRetentionFilter, - isStickinessFilter, - isTrendsFilter, - keyForInsightLogicProps, -} from 'scenes/insights/sharedUtils' +import { keyForInsightLogicProps } from 'scenes/insights/sharedUtils' import { summarizeInsight } from 'scenes/insights/summarizeInsight' import { cleanFilters } from 'scenes/insights/utils/cleanFilters' import { savedInsightsLogic } from 'scenes/saved-insights/savedInsightsLogic' @@ -32,9 +22,7 @@ import { groupsModel } from '~/models/groupsModel' import { insightsModel } from '~/models/insightsModel' import { tagsModel } from '~/models/tagsModel' import { getQueryBasedInsightModel } from '~/queries/nodes/InsightViz/utils' -import { queryExportContext } from '~/queries/query' import { InsightVizNode } from '~/queries/schema' -import { isInsightVizNode } from '~/queries/utils' import { FilterType, InsightLogicProps, InsightModel, InsightShortId, ItemMode, SetInsightOptions } from '~/types' import { teamLogic } from '../teamLogic' @@ -111,7 +99,7 @@ export const insightLogic = kea([ highlightSeries: (seriesIndex: number | null) => ({ seriesIndex }), }), loaders(({ actions, values, props }) => ({ - insight: [ + legacyInsight: [ props.cachedInsight ?? createEmptyInsight( props.dashboardItemId || 'new', @@ -128,7 +116,7 @@ export const insightLogic = kea([ }, updateInsight: async ({ insight, callback }, breakpoint) => { if (!Object.entries(insight).length) { - return values.insight + return values.legacyInsight } if ('filters' in insight && !insight.query && emptyFilters(insight.filters)) { @@ -137,24 +125,24 @@ export const insightLogic = kea([ extra: { filters: JSON.stringify(insight.filters), insight: JSON.stringify(insight), - valuesInsight: JSON.stringify(values.insight), + valuesInsight: JSON.stringify(values.legacyInsight), }, }) throw error } const response = await api.update( - `api/projects/${teamLogic.values.currentTeamId}/insights/${values.insight.id}`, + `api/projects/${teamLogic.values.currentTeamId}/insights/${values.legacyInsight.id}`, insight ) breakpoint() const updatedInsight: InsightModel = { ...response, - result: response.result || values.insight.result, + result: response.result || values.legacyInsight.result, } callback?.(updatedInsight) - const removedDashboards = (values.insight.dashboards || []).filter( + const removedDashboards = (values.legacyInsight.dashboards || []).filter( (d) => !updatedInsight.dashboards?.includes(d) ) dashboardsModel.actions.updateDashboardInsight(updatedInsight, removedDashboards) @@ -163,21 +151,16 @@ export const insightLogic = kea([ setInsightMetadata: async ({ metadata }, breakpoint) => { const editMode = insightSceneLogic.isMounted() && - insightSceneLogic.values.insight === values.insight && + insightSceneLogic.values.legacyInsight === values.legacyInsight && insightSceneLogic.values.insightMode === ItemMode.Edit if (editMode) { - return { ...values.insight, ...metadata } + return { ...values.legacyInsight, ...metadata } } - if (metadata.filters) { - const error = new Error(`Will not override filters in setInsightMetadata`) - captureException(error, { - extra: { - filters: JSON.stringify(values.insight.filters), - insight: JSON.stringify(values.insight), - }, - }) + if (metadata.filters || metadata.query) { + const error = new Error(`Will not override filters or query in setInsightMetadata`) + captureException(error) throw error } @@ -187,13 +170,13 @@ export const insightLogic = kea([ } const response = await api.update( - `api/projects/${teamLogic.values.currentTeamId}/insights/${values.insight.id}`, + `api/projects/${teamLogic.values.currentTeamId}/insights/${values.legacyInsight.id}`, metadata ) breakpoint() // only update the fields that we changed - const updatedInsight = { ...values.insight } as InsightModel + const updatedInsight = { ...values.legacyInsight } as InsightModel for (const key of Object.keys(metadata)) { updatedInsight[key] = response[key] } @@ -208,11 +191,11 @@ export const insightLogic = kea([ dataAttr: 'edit-insight-undo', action: async () => { const response = await api.update( - `api/projects/${teamLogic.values.currentTeamId}/insights/${values.insight.id}`, + `api/projects/${teamLogic.values.currentTeamId}/insights/${values.queryBasedInsight.id}`, beforeUpdates ) // only update the fields that we changed - const revertedInsight = { ...values.insight } as InsightModel + const revertedInsight = { ...values.legacyInsight } as InsightModel for (const key of Object.keys(beforeUpdates)) { revertedInsight[key] = response[key] } @@ -235,7 +218,7 @@ export const insightLogic = kea([ highlightSeries: (_, { seriesIndex }) => seriesIndex, }, ], - insight: { + legacyInsight: { loadInsight: (state, { shortId }) => shortId === state.short_id ? state @@ -297,8 +280,8 @@ export const insightLogic = kea([ setFilters: (_, { filters }) => cleanFilters(filters), setInsight: (state, { insight: { filters }, options: { overrideFilter } }) => overrideFilter ? cleanFilters(filters || {}) : state, - loadInsightSuccess: (state, { insight }) => - Object.keys(state).length === 0 && insight.filters ? insight.filters : state, + loadInsightSuccess: (state, { legacyInsight }) => + Object.keys(state).length === 0 && legacyInsight.filters ? legacyInsight.filters : state, }, ], /** The insight's state as it is in the database. */ @@ -307,10 +290,13 @@ export const insightLogic = kea([ { setInsight: (state, { insight, options: { fromPersistentApi } }) => fromPersistentApi ? { ...insight, filters: cleanFilters(insight.filters || {}) } : state, - loadInsightSuccess: (_, { insight }) => ({ ...insight, filters: cleanFilters(insight.filters || {}) }), - updateInsightSuccess: (_, { insight }) => ({ - ...insight, - filters: cleanFilters(insight.filters || {}), + loadInsightSuccess: (_, { legacyInsight }) => ({ + ...legacyInsight, + filters: cleanFilters(legacyInsight.filters || {}), + }), + updateInsightSuccess: (_, { legacyInsight }) => ({ + ...legacyInsight, + filters: cleanFilters(legacyInsight.filters || {}), }), }, ], @@ -333,7 +319,7 @@ export const insightLogic = kea([ ], })), selectors({ - queryBasedInsight: [(s) => [s.insight], (legacyInsight) => getQueryBasedInsightModel(legacyInsight)], + queryBasedInsight: [(s) => [s.legacyInsight], (legacyInsight) => getQueryBasedInsightModel(legacyInsight)], insightProps: [() => [(_, props) => props], (props): InsightLogicProps => props], isInDashboardContext: [() => [(_, props) => props], ({ dashboardId }) => !!dashboardId], hasDashboardItemId: [ @@ -354,18 +340,20 @@ export const insightLogic = kea([ mathDefinitions, }).slice(0, 400), ], - insightName: [(s) => [s.insight, s.derivedName], (insight, derivedName) => insight.name || derivedName], - insightId: [(s) => [s.insight], (insight) => insight?.id || null], - isQueryBasedInsight: [(s) => [s.insight], (insight) => !!insight.query], - isInsightVizQuery: [(s) => [s.insight], (insight) => isInsightVizNode(insight.query)], + insightName: [ + (s) => [s.queryBasedInsight, s.derivedName], + (insight, derivedName) => insight.name || derivedName, + ], + insightId: [(s) => [s.queryBasedInsight], (insight) => insight?.id || null], + isQueryBasedInsight: [(s) => [s.legacyInsight], (insight) => !!insight.query], canEditInsight: [ - (s) => [s.insight], + (s) => [s.queryBasedInsight], (insight) => insight.effective_privilege_level == undefined || insight.effective_privilege_level >= DashboardPrivilegeLevel.CanEdit, ], insightChanged: [ - (s) => [s.insight, s.savedInsight], + (s) => [s.queryBasedInsight, s.savedInsight], (insight, savedInsight): boolean => { return ( (insight.name || '') !== (savedInsight.name || '') || @@ -375,67 +363,20 @@ export const insightLogic = kea([ }, ], filtersKnown: [ - (s) => [s.insight], + (s) => [s.legacyInsight], ({ filters }) => { // any real filter will have the `insight` key in it return 'insight' in (filters ?? {}) }, ], - exporterResourceParams: [ - (s) => [s.filters, s.currentTeamId, s.insight], - ( - filters: Partial, - currentTeamId: number | null, - insight: Partial - ): TriggerExportProps['export_context'] | null => { - if (!currentTeamId) { - return null - } - - const params = { ...filters } - - const filename = ['export', insight.name || insight.derived_name].join('-') - - if (insight.query) { - return { ...queryExportContext(insight.query, undefined, undefined), filename } - } - if (isTrendsFilter(filters) || isStickinessFilter(filters) || isLifecycleFilter(filters)) { - return { - path: `api/projects/${currentTeamId}/insights/trend/?${toParams( - filterTrendsClientSideParams(params) - )}`, - filename, - } - } else if (isRetentionFilter(filters)) { - return { - filename, - path: `api/projects/${currentTeamId}/insights/retention/?${toParams(params)}`, - } - } else if (isFunnelsFilter(filters)) { - return { - filename, - method: 'POST', - path: `api/projects/${currentTeamId}/insights/funnel`, - body: params, - } - } else if (isPathsFilter(filters)) { - return { - filename, - method: 'POST', - path: `api/projects/${currentTeamId}/insights/path`, - body: params, - } - } - return null - }, - ], showPersonsModal: [() => [(_, p) => p.query], (query?: InsightVizNode) => !query || !query.hidePersonsModal], }), listeners(({ actions, values }) => ({ saveInsight: async ({ redirectToViewMode }) => { const insightNumericId = - values.insight.id || (values.insight.short_id ? await getInsightId(values.insight.short_id) : undefined) - const { name, description, favorited, filters, query, deleted, dashboards, tags } = values.insight + values.legacyInsight.id || + (values.legacyInsight.short_id ? await getInsightId(values.legacyInsight.short_id) : undefined) + const { name, description, favorited, filters, query, deleted, dashboards, tags } = values.legacyInsight let savedInsight: InsightModel try { @@ -468,7 +409,7 @@ export const insightLogic = kea([ // the backend can't return the result for a query based insight, // and so we shouldn't copy the result from `values.insight` as it might be stale - const result = savedInsight.result || (query ? values.insight.result : null) + const result = savedInsight.result || (query ? values.legacyInsight.result : null) actions.setInsight({ ...savedInsight, result: result }, { fromPersistentApi: true, overrideFilter: true }) eventUsageLogic.actions.reportInsightSaved(filters || {}, insightNumericId === undefined) lemonToast.success(`Insight saved${dashboards?.length === 1 ? ' & added to dashboard' : ''}`, { @@ -500,10 +441,14 @@ export const insightLogic = kea([ const insight: InsightModel = await api.create(`api/projects/${teamLogic.values.currentTeamId}/insights/`, { name, filters: values.filters, - query: values.insight.query, + query: values.legacyInsight.query, saved: true, }) - lemonToast.info(`You're now working on a copy of ${values.insight.name ?? values.insight.derived_name}`) + lemonToast.info( + `You're now working on a copy of ${ + values.queryBasedInsight.name ?? values.queryBasedInsight.derived_name + }` + ) actions.setInsight(insight, { fromPersistentApi: true, overrideFilter: true }) savedInsightsLogic.findMounted()?.actions.loadInsights() // Load insights afresh router.actions.push(urls.insightEdit(insight.short_id)) diff --git a/frontend/src/scenes/insights/insightSceneLogic.tsx b/frontend/src/scenes/insights/insightSceneLogic.tsx index 1f0c062895f74..6ca705fb5863d 100644 --- a/frontend/src/scenes/insights/insightSceneLogic.tsx +++ b/frontend/src/scenes/insights/insightSceneLogic.tsx @@ -17,7 +17,6 @@ import { ActivityFilters } from '~/layout/navigation-3000/sidepanel/panels/activ import { cohortsModel } from '~/models/cohortsModel' import { groupsModel } from '~/models/groupsModel' import { examples } from '~/queries/examples' -import { getQueryBasedInsightModel } from '~/queries/nodes/InsightViz/utils' import { ActivityScope, Breadcrumb, FilterType, InsightShortId, InsightType, ItemMode } from '~/types' import { insightDataLogic } from './insightDataLogic' @@ -92,18 +91,31 @@ export const insightSceneLogic = kea([ ], }), selectors(() => ({ - insightSelector: [(s) => [s.insightLogicRef], (insightLogicRef) => insightLogicRef?.logic.selectors.insight], - insight: [(s) => [(state, props) => s.insightSelector?.(state, props)?.(state, props)], (insight) => insight], + legacyInsightSelector: [ + (s) => [s.insightLogicRef], + (insightLogicRef) => insightLogicRef?.logic.selectors.legacyInsight, + ], + legacyInsight: [ + (s) => [(state, props) => s.legacyInsightSelector?.(state, props)?.(state, props)], + (insight) => insight, + ], + queryBasedInsightSelector: [ + (s) => [s.insightLogicRef], + (insightLogicRef) => insightLogicRef?.logic.selectors.queryBasedInsight, + ], + queryBasedInsight: [ + (s) => [(state, props) => s.queryBasedInsightSelector?.(state, props)?.(state, props)], + (insight) => insight, + ], breadcrumbs: [ (s) => [ s.insightLogicRef, - s.insight, + s.queryBasedInsight, groupsModel.selectors.aggregationLabel, cohortsModel.selectors.cohortsById, mathsLogic.selectors.mathDefinitions, ], - (insightLogicRef, legacyInsight, aggregationLabel, cohortsById, mathDefinitions): Breadcrumb[] => { - const insight = legacyInsight ? getQueryBasedInsightModel(legacyInsight) : null + (insightLogicRef, insight, aggregationLabel, cohortsById, mathDefinitions): Breadcrumb[] => { return [ { key: Scene.SavedInsights, @@ -127,7 +139,7 @@ export const insightSceneLogic = kea([ }, ], activityFilters: [ - (s) => [s.insight], + (s) => [s.queryBasedInsight], (insight): ActivityFilters | null => { return insight ? { @@ -140,7 +152,7 @@ export const insightSceneLogic = kea([ })), sharedListeners(({ actions, values }) => ({ reloadInsightLogic: () => { - const logicInsightId = values.insight?.short_id ?? null + const logicInsightId = values.queryBasedInsight?.short_id ?? null const insightId = values.insightId ?? null if (logicInsightId !== insightId) { @@ -166,7 +178,7 @@ export const insightSceneLogic = kea([ if (oldRef2) { oldRef2.unmount() } - } else if (insightId && !values.insight?.result) { + } else if (insightId && !values.queryBasedInsight?.result) { values.insightLogicRef?.logic.actions.loadInsight(insightId as InsightShortId) } }, diff --git a/frontend/src/scenes/insights/insightUsageLogic.ts b/frontend/src/scenes/insights/insightUsageLogic.ts index 9db58b7ca3cf5..bc36fbbc2d9f2 100644 --- a/frontend/src/scenes/insights/insightUsageLogic.ts +++ b/frontend/src/scenes/insights/insightUsageLogic.ts @@ -50,7 +50,7 @@ export const insightUsageLogic = kea([ if ( !insightSceneLogic.isMounted() || insightSceneLogic.values.activeScene !== 'Insight' || - insightSceneLogic.values.insight?.short_id !== values.queryBasedInsight?.short_id + insightSceneLogic.values.queryBasedInsight?.short_id !== values.queryBasedInsight?.short_id ) { return } diff --git a/frontend/src/scenes/insights/utils.tsx b/frontend/src/scenes/insights/utils.tsx index 21a691a3d85a3..7d7cce393dbb9 100644 --- a/frontend/src/scenes/insights/utils.tsx +++ b/frontend/src/scenes/insights/utils.tsx @@ -122,7 +122,7 @@ export function extractObjectDiffKeys( } export async function getInsightId(shortId: InsightShortId): Promise { - const insightId = insightLogic.findMounted({ dashboardItemId: shortId })?.values?.insight?.id + const insightId = insightLogic.findMounted({ dashboardItemId: shortId })?.values?.queryBasedInsight?.id return insightId ? insightId diff --git a/frontend/src/scenes/insights/views/InsightsTable/InsightsTable.tsx b/frontend/src/scenes/insights/views/InsightsTable/InsightsTable.tsx index 42ca752f1f804..239c2b4c42246 100644 --- a/frontend/src/scenes/insights/views/InsightsTable/InsightsTable.tsx +++ b/frontend/src/scenes/insights/views/InsightsTable/InsightsTable.tsx @@ -48,7 +48,7 @@ export function InsightsTable({ isMainInsightView = false, }: InsightsTableProps): JSX.Element { const { insightMode } = useValues(insightSceneLogic) - const { insightProps, isInDashboardContext, insight } = useValues(insightLogic) + const { insightProps, isInDashboardContext, queryBasedInsight } = useValues(insightLogic) const { insightDataLoading, indexedResults, @@ -217,7 +217,7 @@ export function InsightsTable({ return ( (null) @@ -754,7 +754,7 @@ export function LineGraph_({ dates={datasets[0]?.days || []} chartWidth={chartWidth} chartHeight={chartHeight} - insightNumericId={insight.id || 'new'} + insightNumericId={queryBasedInsight.id || 'new'} /> ) : null}
diff --git a/frontend/src/scenes/paths/Paths.tsx b/frontend/src/scenes/paths/Paths.tsx index bb40f2c1701de..80ff6b74866e7 100644 --- a/frontend/src/scenes/paths/Paths.tsx +++ b/frontend/src/scenes/paths/Paths.tsx @@ -24,12 +24,12 @@ export function Paths(): JSX.Element { useResizeObserver({ ref: canvasRef }) const [nodeCards, setNodeCards] = useState([]) - const { insight, insightProps } = useValues(insightLogic) + const { queryBasedInsight, insightProps } = useValues(insightLogic) const { insightQuery, paths, pathsFilter, funnelPathsFilter, insightDataLoading, insightDataError } = useValues( pathsDataLogic(insightProps) ) - const id = `'${insight?.short_id || DEFAULT_PATHS_ID}'` + const id = `'${queryBasedInsight?.short_id || DEFAULT_PATHS_ID}'` useEffect(() => { setNodeCards([])