72 lines
3.2 KiB
Python
72 lines
3.2 KiB
Python
from typing import TypedDict, Optional, Any, Dict, Union, Tuple, Type
|
|
from types import TracebackType
|
|
from typing_extensions import NotRequired # For Python < 3.11 compatibility
|
|
from datetime import datetime
|
|
import numbers
|
|
from uuid import UUID
|
|
|
|
from posthog.types import SendFeatureFlagsOptions
|
|
|
|
ID_TYPES = Union[numbers.Number, str, UUID, int]
|
|
|
|
|
|
class OptionalCaptureArgs(TypedDict):
|
|
"""Optional arguments for the capture method.
|
|
|
|
Args:
|
|
distinct_id: Unique identifier for the person associated with this event. If not set, the context
|
|
distinct_id is used, if available, otherwise a UUID is generated, and the event is marked
|
|
as personless. Setting context-level distinct_id's is recommended.
|
|
properties: Dictionary of properties to track with the event
|
|
timestamp: When the event occurred (defaults to current time)
|
|
uuid: Unique identifier for this specific event. If not provided, one is generated. The event
|
|
UUID is returned, so you can correlate it with actions in your app (like showing users an
|
|
error ID if you capture an exception).
|
|
groups: Group identifiers to associate with this event (format: {group_type: group_key})
|
|
send_feature_flags: Whether to include currently active feature flags in the event properties.
|
|
Can be a boolean (True/False) or a SendFeatureFlagsOptions object for advanced configuration.
|
|
Defaults to False.
|
|
disable_geoip: Whether to disable GeoIP lookup for this event. Defaults to False.
|
|
"""
|
|
|
|
distinct_id: NotRequired[Optional[ID_TYPES]]
|
|
properties: NotRequired[Optional[Dict[str, Any]]]
|
|
timestamp: NotRequired[Optional[Union[datetime, str]]]
|
|
uuid: NotRequired[Optional[str]]
|
|
groups: NotRequired[Optional[Dict[str, str]]]
|
|
send_feature_flags: NotRequired[
|
|
Optional[Union[bool, SendFeatureFlagsOptions]]
|
|
] # Updated to support both boolean and options object
|
|
disable_geoip: NotRequired[
|
|
Optional[bool]
|
|
] # As above, optional so we can tell if the user is intentionally overriding a client setting or not
|
|
|
|
|
|
class OptionalSetArgs(TypedDict):
|
|
"""Optional arguments for the set method.
|
|
|
|
Args:
|
|
distinct_id: Unique identifier for the user to set properties on. If not set, the context
|
|
distinct_id is used, if available, otherwise this function does nothing. Setting
|
|
context-level distinct_id's is recommended.
|
|
properties: Dictionary of properties to set on the person
|
|
timestamp: When the properties were set (defaults to current time)
|
|
uuid: Unique identifier for this operation. If not provided, one is generated. This
|
|
UUID is returned, so you can correlate it with actions in your app.
|
|
disable_geoip: Whether to disable GeoIP lookup for this operation. Defaults to False.
|
|
"""
|
|
|
|
distinct_id: NotRequired[Optional[ID_TYPES]]
|
|
properties: NotRequired[Optional[Dict[str, Any]]]
|
|
timestamp: NotRequired[Optional[Union[datetime, str]]]
|
|
uuid: NotRequired[Optional[str]]
|
|
disable_geoip: NotRequired[Optional[bool]]
|
|
|
|
|
|
ExcInfo = Union[
|
|
Tuple[Type[BaseException], BaseException, Optional[TracebackType]],
|
|
Tuple[None, None, None],
|
|
]
|
|
|
|
ExceptionArg = Union[BaseException, ExcInfo]
|