🔍 Code Extractor

class StatisticalSession_v1

Maturity: 46

A dataclass representing a statistical analysis session that tracks user data analysis workflows, including data sources, configurations, and execution status.

File:
/tf/active/vicechatdev/smartstat/models.py
Lines:
111 - 143
Complexity:
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

  • datetime
  • typing
  • dataclasses
  • enum

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

Similar Components

AI-powered semantic similarity - components with related functionality:

  • class StatisticalSession 95.6% similar

    A dataclass representing a statistical analysis session that tracks metadata, configuration, and status of data analysis operations.

    From: /tf/active/vicechatdev/vice_ai/smartstat_models.py
  • class DataAnalysisSession_v1 87.2% similar

    A dataclass representing a statistical analysis session that is linked to specific document sections, managing analysis state, messages, plots, and configuration.

    From: /tf/active/vicechatdev/vice_ai/models.py
  • class DataAnalysisSession 79.4% similar

    A dataclass representing a data analysis session that is linked to a specific text section within a document, managing conversation messages, analysis results, plots, and configuration.

    From: /tf/active/vicechatdev/vice_ai/models.py
  • class SmartStatSession 77.7% similar

    A session management class that encapsulates a SmartStat statistical analysis session, tracking data, analysis history, plots, and reports for a specific data section.

    From: /tf/active/vicechatdev/vice_ai/smartstat_service.py
  • class AnalysisStep 66.5% similar

    A dataclass representing an individual step in an analysis process, tracking execution details, scripts, outputs, and metadata for each step in a data analysis workflow.

    From: /tf/active/vicechatdev/vice_ai/smartstat_models.py
← Back to Browse