class StatisticalSession_v1
A dataclass representing a statistical analysis session that tracks user data analysis workflows, including data sources, configurations, and execution status.
/tf/active/vicechatdev/smartstat/models.py
111 - 143
simple
Purpose
StatisticalSession serves as a container for managing the complete lifecycle of a statistical analysis workflow. It stores metadata about the session (ID, user, timestamps), references to data sources and analysis configurations, and tracks the current status of the analysis. This class is designed to be serializable for persistence and provides methods for converting to dictionary format for storage or API responses.
Source Code
class StatisticalSession:
"""Statistical analysis session"""
session_id: str
user_id: str = "default"
created_at: datetime = None
updated_at: datetime = None
title: str = ""
description: str = ""
data_source: DataSource = None
analysis_config: AnalysisConfiguration = None
status: AnalysisStatus = AnalysisStatus.PENDING
def __post_init__(self):
if self.created_at is None:
self.created_at = datetime.now()
if self.updated_at is None:
self.updated_at = datetime.now()
# Don't create default objects here to avoid initialization issues
# They will be set when data is actually loaded
def to_dict(self) -> Dict[str, Any]:
"""Convert to dictionary with proper serialization"""
return {
'session_id': self.session_id,
'user_id': self.user_id,
'created_at': self.created_at.isoformat() if self.created_at else None,
'updated_at': self.updated_at.isoformat() if self.updated_at else None,
'title': self.title,
'description': self.description,
'data_source': self.data_source.to_dict() if self.data_source else None,
'analysis_config': self.analysis_config.to_dict() if self.analysis_config else None,
'status': self.status.value
}
Parameters
| Name | Type | Default | Kind |
|---|---|---|---|
bases |
- | - |
Parameter Details
session_id: Unique identifier for the statistical session. Required field that should be a unique string (typically UUID).
user_id: Identifier for the user who owns this session. Defaults to 'default' if not specified.
created_at: Timestamp when the session was created. Automatically set to current datetime in __post_init__ if None.
updated_at: Timestamp when the session was last modified. Automatically set to current datetime in __post_init__ if None.
title: Human-readable title for the session. Defaults to empty string.
description: Detailed description of the session's purpose or contents. Defaults to empty string.
data_source: DataSource object containing information about the data being analyzed. Can be None initially.
analysis_config: AnalysisConfiguration object specifying the analysis parameters and settings. Can be None initially.
status: Current status of the analysis using AnalysisStatus enum. Defaults to AnalysisStatus.PENDING.
Return Value
Instantiation returns a StatisticalSession object with all attributes initialized. The to_dict() method returns a dictionary with string keys and serialized values, where datetime objects are converted to ISO format strings, nested objects are converted to dictionaries, and the status enum is converted to its value.
Class Interface
Methods
__post_init__(self) -> None
Purpose: Post-initialization hook that sets default values for created_at and updated_at timestamps if they are None
Returns: None - modifies instance attributes in place
to_dict(self) -> Dict[str, Any]
Purpose: Converts the session object to a dictionary with proper serialization of complex types (datetime to ISO format, enums to values, nested objects to dicts)
Returns: Dictionary with string keys containing all session attributes in serialized form, suitable for JSON encoding or database storage
Attributes
| Name | Type | Description | Scope |
|---|---|---|---|
session_id |
str | Unique identifier for the statistical analysis session | instance |
user_id |
str | Identifier for the user who owns this session, defaults to 'default' | instance |
created_at |
datetime | Timestamp when the session was created, automatically set if None | instance |
updated_at |
datetime | Timestamp when the session was last updated, automatically set if None | instance |
title |
str | Human-readable title for the session, defaults to empty string | instance |
description |
str | Detailed description of the session's purpose or contents, defaults to empty string | instance |
data_source |
DataSource | DataSource object containing information about the data being analyzed, can be None | instance |
analysis_config |
AnalysisConfiguration | AnalysisConfiguration object specifying analysis parameters and settings, can be None | instance |
status |
AnalysisStatus | Current status of the analysis using AnalysisStatus enum, defaults to PENDING | instance |
Dependencies
datetimetypingdataclassesenum
Required Imports
from datetime import datetime
from typing import Dict, Any
from dataclasses import dataclass
from enum import Enum
Usage Example
from datetime import datetime
from dataclasses import dataclass
from enum import Enum
from typing import Dict, Any
# Assuming DataSource, AnalysisConfiguration, and AnalysisStatus are defined
# Create a new session
session = StatisticalSession(
session_id='abc-123-def',
user_id='user_001',
title='Sales Data Analysis',
description='Quarterly sales trend analysis'
)
# Access attributes
print(session.session_id) # 'abc-123-def'
print(session.status) # AnalysisStatus.PENDING
print(session.created_at) # datetime object
# Update session
session.title = 'Updated Sales Analysis'
session.updated_at = datetime.now()
# Convert to dictionary for serialization
session_dict = session.to_dict()
print(session_dict['created_at']) # ISO format string
# Set data source and config (after they're created)
session.data_source = DataSource(...)
session.analysis_config = AnalysisConfiguration(...)
session.status = AnalysisStatus.RUNNING
Best Practices
- Always provide a unique session_id when creating instances (consider using uuid.uuid4().hex)
- The created_at and updated_at timestamps are automatically set if None, but should be manually updated when modifying the session
- data_source and analysis_config are intentionally left as None initially to avoid initialization issues - set them explicitly when data is loaded
- Use to_dict() method for serialization before storing in databases or sending via APIs
- The status field should be updated as the analysis progresses through different stages
- When deserializing from dictionary, datetime strings need to be converted back using datetime.fromisoformat()
- This is a dataclass, so equality comparison is based on all fields by default
- Consider implementing a from_dict() class method for deserialization if needed
Tags
Similar Components
AI-powered semantic similarity - components with related functionality:
-
class StatisticalSession 95.6% similar
-
class DataAnalysisSession_v1 87.2% similar
-
class DataAnalysisSession 79.4% similar
-
class SmartStatSession 77.7% similar
-
class AnalysisStep 66.5% similar