"""
FileDummy Sample Python File
A comprehensive example covering common Python constructs.
"""

from __future__ import annotations

import os
import json
from dataclasses import dataclass, field
from typing import Optional
from datetime import datetime


@dataclass
class User:
    """Represents a user in the system."""
    id: int
    name: str
    email: str
    role: str = "user"
    active: bool = True
    metadata: dict = field(default_factory=dict)

    def __post_init__(self) -> None:
        if not self.email or "@" not in self.email:
            raise ValueError(f"Invalid email: {self.email}")

    def to_dict(self) -> dict:
        return {
            "id": self.id,
            "name": self.name,
            "email": self.email,
            "role": self.role,
            "active": self.active,
        }


class UserManager:
    """Manages a collection of users."""

    def __init__(self) -> None:
        self._users: dict[int, User] = {}

    def add_user(self, user: User) -> None:
        if user.id in self._users:
            raise ValueError(f"User {user.id} already exists")
        self._users[user.id] = user

    def find_user(self, user_id: int) -> Optional[User]:
        return self._users.get(user_id)

    def get_active_users(self) -> list[User]:
        return [u for u in self._users.values() if u.active]

    @property
    def count(self) -> int:
        return len(self._users)


async def fetch_data(url: str) -> dict:
    """Async data fetcher (simulated)."""
    import aiohttp
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as resp:
            return await resp.json()


def main() -> None:
    manager = UserManager()
    manager.add_user(User(1, "Alice", "alice@example.com", "admin"))
    manager.add_user(User(2, "Bob", "bob@example.com"))

    print(f"Total users: {manager.count}")
    for user in manager.get_active_users():
        print(f"  {user.id}: {user.name} ({user.role})")


if __name__ == "__main__":
    main()
