From 41273becc4579440a45084e710c85c052492089a Mon Sep 17 00:00:00 2001 From: Dmytro Nedavnii Date: Thu, 22 Jan 2026 23:35:24 +0200 Subject: [PATCH 01/17] feat: add dweller death/revival system with tiered costs and permanent death - Backend: death_service with mark_as_dead, revive_dweller, get_revival_cost - API endpoints: POST /revive, GET /dead, GET /graveyard, GET /statistics - Tiered revival costs: level 1-5 (50-250), 6-10 (450-750), 11+ (1100-2000 max) - Permanent death after 7 days configurable - User profile tracks births/deaths by cause - Frontend: death store actions, DeadDwellerCard, RevivalSection, LifeDeathStatistics - Death triggers: health<=0, radiation>=1000, incident, exploration - All tests passing --- ...add_death_system_fields_to_dweller_and_.py | 68 ++++ backend/app/api/v1/endpoints/dweller.py | 107 ++++++ backend/app/api/v1/endpoints/game_control.py | 10 + backend/app/api/v1/endpoints/user.py | 24 ++ backend/app/core/game_config.py | 57 +++ backend/app/crud/dweller.py | 82 +++++ backend/app/models/dweller.py | 9 +- backend/app/models/user_profile.py | 9 + backend/app/schemas/common.py | 8 + backend/app/schemas/dweller.py | 38 ++ backend/app/services/breeding_service.py | 8 + backend/app/services/death_service.py | 334 ++++++++++++++++++ .../app/services/exploration/coordinator.py | 20 +- backend/app/services/game_loop.py | 23 +- backend/app/services/incident_service.py | 11 + backend/coverage.json | 2 +- .../components/death/DeadDwellerCard.vue | 160 +++++++++ .../components/death/LifeDeathStatistics.vue | 142 ++++++++ .../components/death/RevivalSection.vue | 129 +++++++ .../dwellers/components/death/index.ts | 3 + .../src/modules/dwellers/models/dweller.ts | 6 + frontend/src/modules/dwellers/models/index.ts | 7 +- .../src/modules/dwellers/stores/dweller.ts | 129 ++++++- .../src/modules/profile/stores/profile.ts | 34 ++ 24 files changed, 1410 insertions(+), 10 deletions(-) create mode 100644 backend/app/alembic/versions/2026_01_22_2259-f36f5baa7bb2_add_death_system_fields_to_dweller_and_.py create mode 100644 backend/app/services/death_service.py create mode 100644 frontend/src/modules/dwellers/components/death/DeadDwellerCard.vue create mode 100644 frontend/src/modules/dwellers/components/death/LifeDeathStatistics.vue create mode 100644 frontend/src/modules/dwellers/components/death/RevivalSection.vue create mode 100644 frontend/src/modules/dwellers/components/death/index.ts diff --git a/backend/app/alembic/versions/2026_01_22_2259-f36f5baa7bb2_add_death_system_fields_to_dweller_and_.py b/backend/app/alembic/versions/2026_01_22_2259-f36f5baa7bb2_add_death_system_fields_to_dweller_and_.py new file mode 100644 index 00000000..cc5d24a4 --- /dev/null +++ b/backend/app/alembic/versions/2026_01_22_2259-f36f5baa7bb2_add_death_system_fields_to_dweller_and_.py @@ -0,0 +1,68 @@ +"""add death system fields to dweller and user_profile + +Revision ID: f36f5baa7bb2 +Revises: 34f9ec11db72 +Create Date: 2026-01-22 22:59:33.818004 + +""" + +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa +import sqlmodel +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision: str = "f36f5baa7bb2" +down_revision: Union[str, None] = "34f9ec11db72" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # Create the DeathCauseEnum type first + death_cause_enum = sa.Enum("HEALTH", "RADIATION", "INCIDENT", "EXPLORATION", "COMBAT", name="deathcauseenum") + death_cause_enum.create(op.get_bind(), checkfirst=True) + + # Add death system fields to dweller table + op.add_column("dweller", sa.Column("is_dead", sa.Boolean(), nullable=False, server_default="false")) + op.add_column("dweller", sa.Column("death_timestamp", sa.DateTime(), nullable=True)) + op.add_column("dweller", sa.Column("death_cause", death_cause_enum, nullable=True)) + op.add_column("dweller", sa.Column("is_permanently_dead", sa.Boolean(), nullable=False, server_default="false")) + op.add_column("dweller", sa.Column("epitaph", sqlmodel.sql.sqltypes.AutoString(length=255), nullable=True)) + op.create_index(op.f("ix_dweller_is_dead"), "dweller", ["is_dead"], unique=False) + op.create_index(op.f("ix_dweller_is_permanently_dead"), "dweller", ["is_permanently_dead"], unique=False) + + # Add life/death statistics to userprofile table + op.add_column("userprofile", sa.Column("total_dwellers_born", sa.Integer(), nullable=False, server_default="0")) + op.add_column("userprofile", sa.Column("total_dwellers_died", sa.Integer(), nullable=False, server_default="0")) + op.add_column("userprofile", sa.Column("deaths_by_health", sa.Integer(), nullable=False, server_default="0")) + op.add_column("userprofile", sa.Column("deaths_by_radiation", sa.Integer(), nullable=False, server_default="0")) + op.add_column("userprofile", sa.Column("deaths_by_incident", sa.Integer(), nullable=False, server_default="0")) + op.add_column("userprofile", sa.Column("deaths_by_exploration", sa.Integer(), nullable=False, server_default="0")) + op.add_column("userprofile", sa.Column("deaths_by_combat", sa.Integer(), nullable=False, server_default="0")) + + +def downgrade() -> None: + # Remove life/death statistics from userprofile + op.drop_column("userprofile", "deaths_by_combat") + op.drop_column("userprofile", "deaths_by_exploration") + op.drop_column("userprofile", "deaths_by_incident") + op.drop_column("userprofile", "deaths_by_radiation") + op.drop_column("userprofile", "deaths_by_health") + op.drop_column("userprofile", "total_dwellers_died") + op.drop_column("userprofile", "total_dwellers_born") + + # Remove death system fields from dweller + op.drop_index(op.f("ix_dweller_is_permanently_dead"), table_name="dweller") + op.drop_index(op.f("ix_dweller_is_dead"), table_name="dweller") + op.drop_column("dweller", "epitaph") + op.drop_column("dweller", "is_permanently_dead") + op.drop_column("dweller", "death_cause") + op.drop_column("dweller", "death_timestamp") + op.drop_column("dweller", "is_dead") + + # Drop the DeathCauseEnum type + death_cause_enum = sa.Enum("HEALTH", "RADIATION", "INCIDENT", "EXPLORATION", "COMBAT", name="deathcauseenum") + death_cause_enum.drop(op.get_bind(), checkfirst=True) diff --git a/backend/app/api/v1/endpoints/dweller.py b/backend/app/api/v1/endpoints/dweller.py index 21cde425..9321224f 100644 --- a/backend/app/api/v1/endpoints/dweller.py +++ b/backend/app/api/v1/endpoints/dweller.py @@ -13,12 +13,15 @@ DwellerCreate, DwellerCreateCommonOverride, DwellerCreateWithoutVaultID, + DwellerDeadRead, DwellerRead, DwellerReadFull, DwellerReadLess, DwellerReadWithRoomID, + DwellerReviveResponse, DwellerUpdate, DwellerVisualAttributesInput, + RevivalCostResponse, ) from app.services.dweller_ai import dweller_ai @@ -257,3 +260,107 @@ async def auto_assign_to_room( """Auto-assign dweller to the best matching production room based on their highest SPECIAL stat.""" await verify_dweller_access(dweller_id, user, db_session) return await crud.dweller.auto_assign_to_best_room(db_session, dweller_id) + + +# ============================================ +# Death System Endpoints +# ============================================ + + +@router.get("/vault/{vault_id}/dead", response_model=list[DwellerDeadRead]) +async def get_dead_dwellers( + vault_id: UUID4, + user: CurrentActiveUser, + db_session: Annotated[AsyncSession, Depends(get_async_session)], + skip: int = 0, + limit: int = 100, +): + """Get all dead dwellers (revivable) for a vault.""" + from app.services.death_service import death_service + + await get_user_vault_or_403(vault_id, user, db_session) + dwellers = await crud.dweller.get_dead_dwellers( + db_session, vault_id, include_permanent=False, skip=skip, limit=limit + ) + + # Enrich with days_until_permanent + result = [] + for dweller in dwellers: + dweller_data = DwellerDeadRead.model_validate(dweller) + dweller_data.days_until_permanent = death_service.get_days_until_permanent(dweller) + result.append(dweller_data) + + return result + + +@router.get("/vault/{vault_id}/graveyard", response_model=list[DwellerDeadRead]) +async def get_graveyard( + vault_id: UUID4, + user: CurrentActiveUser, + db_session: Annotated[AsyncSession, Depends(get_async_session)], + skip: int = 0, + limit: int = 100, +): + """Get permanently dead dwellers (graveyard) for a vault.""" + await get_user_vault_or_403(vault_id, user, db_session) + dwellers = await crud.dweller.get_graveyard(db_session, vault_id, skip=skip, limit=limit) + return [DwellerDeadRead.model_validate(dweller) for dweller in dwellers] + + +@router.get("/{dweller_id}/revival_cost", response_model=RevivalCostResponse) +async def get_revival_cost( + dweller_id: UUID4, + user: CurrentActiveUser, + db_session: Annotated[AsyncSession, Depends(get_async_session)], +): + """Get the revival cost for a dead dweller.""" + from app.services.death_service import death_service + + await verify_dweller_access(dweller_id, user, db_session) + dweller = await crud.dweller.get(db_session, dweller_id) + + if not dweller.is_dead: + from app.utils.exceptions import ContentNoChangeException + + raise ContentNoChangeException(detail="Dweller is not dead") + + vault = await crud.vault.get(db_session, dweller.vault_id) + revival_cost = death_service.get_revival_cost(dweller.level) + + return RevivalCostResponse( + dweller_id=dweller.id, + dweller_name=f"{dweller.first_name} {dweller.last_name or ''}".strip(), + level=dweller.level, + revival_cost=revival_cost, + days_until_permanent=death_service.get_days_until_permanent(dweller), + can_afford=vault.caps >= revival_cost, + vault_caps=vault.caps, + ) + + +@router.post("/{dweller_id}/revive", response_model=DwellerReviveResponse) +async def revive_dweller( + dweller_id: UUID4, + user: CurrentActiveUser, + db_session: Annotated[AsyncSession, Depends(get_async_session)], +): + """Revive a dead dweller by paying the revival cost in caps.""" + from app.services.death_service import death_service + + await verify_dweller_access(dweller_id, user, db_session) + + # Get dweller to calculate cost before revival + dweller = await crud.dweller.get(db_session, dweller_id) + revival_cost = death_service.get_revival_cost(dweller.level) + + # Perform revival + revived_dweller = await death_service.revive_dweller(db_session, dweller_id, user.id) + + # Get updated vault caps + vault = await crud.vault.get(db_session, revived_dweller.vault_id) + + return DwellerReviveResponse( + dweller=DwellerRead.model_validate(revived_dweller), + caps_spent=revival_cost, + remaining_caps=vault.caps, + ) diff --git a/backend/app/api/v1/endpoints/game_control.py b/backend/app/api/v1/endpoints/game_control.py index 347efa44..734c3821 100644 --- a/backend/app/api/v1/endpoints/game_control.py +++ b/backend/app/api/v1/endpoints/game_control.py @@ -50,6 +50,16 @@ async def get_game_balance_settings() -> dict[str, Any]: "breeding": game_config.breeding.model_dump(), "leveling": game_config.leveling.model_dump(), "radio": game_config.radio.model_dump(), + "death": { + **game_config.death.model_dump(), + "revival_cost_examples": { + "level_1": game_config.death.calculate_revival_cost(1), + "level_5": game_config.death.calculate_revival_cost(5), + "level_10": game_config.death.calculate_revival_cost(10), + "level_25": game_config.death.calculate_revival_cost(25), + "level_50": game_config.death.calculate_revival_cost(50), + }, + }, } diff --git a/backend/app/api/v1/endpoints/user.py b/backend/app/api/v1/endpoints/user.py index 94bd5f55..204f52b8 100644 --- a/backend/app/api/v1/endpoints/user.py +++ b/backend/app/api/v1/endpoints/user.py @@ -262,3 +262,27 @@ async def update_my_profile( except Exception as e: logger.exception("Failed to update profile for user %s", user.id) raise HTTPException(status_code=500, detail=str(e)) from e + + +@router.get("/me/profile/statistics") +async def get_death_statistics( + *, + db_session: Annotated[AsyncSession, Depends(get_async_session)], + user: CurrentActiveUser, +) -> dict: + """ + Get life/death statistics for the current user. + + Returns statistics about dwellers born, died, and breakdown by cause of death, + as well as counts of currently revivable and permanently dead dwellers. + + :param db_session: Database session + :type db_session: AsyncSession + :param user: Current authenticated active user + :type user: CurrentActiveUser + :returns: Life/death statistics dictionary + :rtype: dict + """ + from app.services.death_service import death_service + + return await death_service.get_death_statistics(db_session, user.id) diff --git a/backend/app/core/game_config.py b/backend/app/core/game_config.py index 1904783d..d480139d 100644 --- a/backend/app/core/game_config.py +++ b/backend/app/core/game_config.py @@ -375,6 +375,62 @@ def get_tier_multiplier(self, tier: int) -> float: return multipliers.get(tier, 1.0) +class DeathConfig(BaseSettings): + """Death and revival system configuration.""" + + model_config = SettingsConfigDict(env_prefix="DEATH_") + + # Permanent death timing + permanent_death_days: int = Field( + default=7, + description="Days after death before permanent (cannot revive)", + ge=1, + le=30, + ) + + # Tiered revival cost (Option B) + # Levels 1-5: level x tier_1_multiplier + # Levels 6-10: level x tier_2_multiplier + # Levels 11+: level x tier_3_multiplier, capped at max + revival_cost_tier_1_multiplier: int = Field(default=50, description="Caps per level for levels 1-5", ge=1) + revival_cost_tier_2_multiplier: int = Field(default=75, description="Caps per level for levels 6-10", ge=1) + revival_cost_tier_3_multiplier: int = Field(default=100, description="Caps per level for levels 11+", ge=1) + revival_cost_max: int = Field(default=2000, description="Maximum revival cost cap", ge=100) + + # Health after revival + revival_health_percent: float = Field( + default=0.5, + description="Health restored as percentage of max (50%)", + ge=0.1, + le=1.0, + ) + + # Radiation threshold for death + radiation_death_threshold: int = Field( + default=1000, + description="Radiation level that causes death", + ge=100, + le=1000, + ) + + def calculate_revival_cost(self, level: int) -> int: + """ + Calculate revival cost based on dweller level (tiered). + + Levels 1-5: level x 50 (50-250 caps) + Levels 6-10: level x 75 (450-750 caps) + Levels 11+: level x 100 (1100-2000 caps, capped) + """ + if level <= 5: + cost = level * self.revival_cost_tier_1_multiplier + elif level <= 10: + cost = level * self.revival_cost_tier_2_multiplier + else: + cost = level * self.revival_cost_tier_3_multiplier + + return min(cost, self.revival_cost_max) + + class ExplorationConfig(BaseSettings): """Wasteland exploration configuration.""" @@ -443,6 +499,7 @@ class GameConfig(BaseSettings): leveling: LevelingConfig = Field(default_factory=LevelingConfig) radio: RadioConfig = Field(default_factory=RadioConfig) exploration: ExplorationConfig = Field(default_factory=ExplorationConfig) + death: DeathConfig = Field(default_factory=DeathConfig) # Singleton instance diff --git a/backend/app/crud/dweller.py b/backend/app/crud/dweller.py index 360618e6..4866461a 100644 --- a/backend/app/crud/dweller.py +++ b/backend/app/crud/dweller.py @@ -282,6 +282,88 @@ async def use_radaway(self, db_session: AsyncSession, dweller_id: UUID4) -> Dwel db_session, dweller_id, DwellerUpdate(radiation=new_radiation, radaway=dweller_obj.radaway - 1) ) + async def get_dead_dwellers( + self, + db_session: AsyncSession, + vault_id: UUID4, + include_permanent: bool = False, + skip: int = 0, + limit: int = 100, + ) -> Sequence[Dweller]: + """ + Get dead dwellers for a vault. + + :param db_session: Database session + :param vault_id: Vault ID to filter by + :param include_permanent: If True, include permanently dead dwellers + :param skip: Number of records to skip + :param limit: Maximum number of records to return + :returns: List of dead dwellers + """ + query = select(self.model).where(self.model.vault_id == vault_id).where(self.model.is_dead.is_(True)) + + if not include_permanent: + query = query.where(self.model.is_permanently_dead.is_(False)) + + query = query.order_by(self.model.death_timestamp.desc()).offset(skip).limit(limit) + response = await db_session.execute(query) + return response.scalars().all() + + async def get_revivable_dwellers( + self, + db_session: AsyncSession, + vault_id: UUID4, + skip: int = 0, + limit: int = 100, + ) -> Sequence[Dweller]: + """ + Get dwellers that can be revived (dead but not permanently dead). + + :param db_session: Database session + :param vault_id: Vault ID to filter by + :param skip: Number of records to skip + :param limit: Maximum number of records to return + :returns: List of revivable dwellers + """ + query = ( + select(self.model) + .where(self.model.vault_id == vault_id) + .where(self.model.is_dead.is_(True)) + .where(self.model.is_permanently_dead.is_(False)) + .order_by(self.model.death_timestamp.desc()) + .offset(skip) + .limit(limit) + ) + response = await db_session.execute(query) + return response.scalars().all() + + async def get_graveyard( + self, + db_session: AsyncSession, + vault_id: UUID4, + skip: int = 0, + limit: int = 100, + ) -> Sequence[Dweller]: + """ + Get permanently dead dwellers (graveyard). + + :param db_session: Database session + :param vault_id: Vault ID to filter by + :param skip: Number of records to skip + :param limit: Maximum number of records to return + :returns: List of permanently dead dwellers + """ + query = ( + select(self.model) + .where(self.model.vault_id == vault_id) + .where(self.model.is_permanently_dead.is_(True)) + .order_by(self.model.death_timestamp.desc()) + .offset(skip) + .limit(limit) + ) + response = await db_session.execute(query) + return response.scalars().all() + async def auto_assign_to_best_room( self, db_session: AsyncSession, dweller_id: UUID4 ) -> DwellerReadWithRoomID | None: diff --git a/backend/app/models/dweller.py b/backend/app/models/dweller.py index 8bcbc936..b2f8bdfb 100644 --- a/backend/app/models/dweller.py +++ b/backend/app/models/dweller.py @@ -7,7 +7,7 @@ from sqlmodel import Field, Relationship, SQLModel from app.models.base import BaseUUIDModel, SPECIALModel, TimeStampMixin -from app.schemas.common import AgeGroupEnum, DwellerStatusEnum, GenderEnum, RarityEnum +from app.schemas.common import AgeGroupEnum, DeathCauseEnum, DwellerStatusEnum, GenderEnum, RarityEnum if TYPE_CHECKING: from app.models.notification import Notification @@ -49,6 +49,13 @@ class DwellerBaseWithoutStats(SQLModel): # Status status: DwellerStatusEnum = Field(default=DwellerStatusEnum.IDLE, index=True) + # Death system + is_dead: bool = Field(default=False, index=True) + death_timestamp: datetime | None = Field(default=None) + death_cause: DeathCauseEnum | None = Field(default=None) + is_permanently_dead: bool = Field(default=False, index=True) + epitaph: str | None = Field(default=None, max_length=255) + # TBD # job: str | None diff --git a/backend/app/models/user_profile.py b/backend/app/models/user_profile.py index a3fe271d..27ad7873 100644 --- a/backend/app/models/user_profile.py +++ b/backend/app/models/user_profile.py @@ -22,6 +22,15 @@ class UserProfileBase(SQLModel): total_explorations: int = Field(default=0, ge=0) total_rooms_built: int = Field(default=0, ge=0) + # Life & Death Statistics + total_dwellers_born: int = Field(default=0, ge=0, description="Total dwellers born via breeding") + total_dwellers_died: int = Field(default=0, ge=0, description="Total dweller deaths") + deaths_by_health: int = Field(default=0, ge=0, description="Deaths from health reaching 0") + deaths_by_radiation: int = Field(default=0, ge=0, description="Deaths from radiation threshold") + deaths_by_incident: int = Field(default=0, ge=0, description="Deaths from vault incidents") + deaths_by_exploration: int = Field(default=0, ge=0, description="Deaths during wasteland exploration") + deaths_by_combat: int = Field(default=0, ge=0, description="Deaths from combat encounters") + class UserProfile(BaseUUIDModel, UserProfileBase, TimeStampMixin, table=True): user_id: UUID4 = Field(foreign_key="user.id", unique=True, index=True, ondelete="CASCADE") diff --git a/backend/app/schemas/common.py b/backend/app/schemas/common.py index 00f2643a..f342eb17 100644 --- a/backend/app/schemas/common.py +++ b/backend/app/schemas/common.py @@ -29,6 +29,14 @@ class DwellerStatusEnum(CaseInsensitiveEnum): DEAD = "dead" +class DeathCauseEnum(CaseInsensitiveEnum): + HEALTH = "health" + RADIATION = "radiation" + INCIDENT = "incident" + EXPLORATION = "exploration" + COMBAT = "combat" + + class RarityEnum(CaseInsensitiveEnum): COMMON = "common" RARE = "rare" diff --git a/backend/app/schemas/dweller.py b/backend/app/schemas/dweller.py index fb99737f..194f3b2a 100644 --- a/backend/app/schemas/dweller.py +++ b/backend/app/schemas/dweller.py @@ -7,6 +7,7 @@ from app.schemas.common import ( STATE_OF_BEING_TYPE, AgeGroupEnum, + DeathCauseEnum, DwellerStatusEnum, FactionEnum, GenderEnum, @@ -158,3 +159,40 @@ class DwellerReadFull(DwellerRead): class DwellerUpdate(DwellerBase): room_id: UUID4 | None = None visual_attributes: DwellerVisualAttributesInput | None = Field(default=None) + + +class DwellerDeadRead(SQLModel): + """Schema for dead dweller list items.""" + + id: UUID4 + first_name: str + last_name: str | None + level: int + thumbnail_url: str | None + death_timestamp: datetime | None + death_cause: DeathCauseEnum | None + is_permanently_dead: bool + epitaph: str | None + days_until_permanent: int | None = None + + model_config = ConfigDict(from_attributes=True) + + +class DwellerReviveResponse(SQLModel): + """Response schema for dweller revival.""" + + dweller: DwellerRead + caps_spent: int + remaining_caps: int + + +class RevivalCostResponse(SQLModel): + """Response schema for revival cost check.""" + + dweller_id: UUID4 + dweller_name: str + level: int + revival_cost: int + days_until_permanent: int | None + can_afford: bool + vault_caps: int diff --git a/backend/app/services/breeding_service.py b/backend/app/services/breeding_service.py index 9bc6473e..8b64e313 100644 --- a/backend/app/services/breeding_service.py +++ b/backend/app/services/breeding_service.py @@ -287,6 +287,14 @@ async def deliver_baby( logger.info(f"Baby delivered: {child.first_name} {child.last_name}, Mother={mother.id}, Father={father.id}") + # Increment birth statistics for the vault owner + from app.crud.user_profile import profile_crud + from app.crud.vault import vault as vault_crud + + vault = await vault_crud.get(db_session, mother.vault_id) + if vault and vault.user_id: + await profile_crud.increment_statistic(db_session, vault.user_id, "total_dwellers_born") + return child @staticmethod diff --git a/backend/app/services/death_service.py b/backend/app/services/death_service.py new file mode 100644 index 00000000..b832afe9 --- /dev/null +++ b/backend/app/services/death_service.py @@ -0,0 +1,334 @@ +"""Death service for handling dweller death, revival, and life/death statistics.""" + +import logging +from datetime import UTC, datetime, timedelta + +from pydantic import UUID4 +from sqlmodel import select +from sqlmodel.ext.asyncio.session import AsyncSession + +from app.core.game_config import game_config +from app.crud.dweller import dweller as dweller_crud +from app.crud.user_profile import profile_crud +from app.crud.vault import vault as vault_crud +from app.models.dweller import Dweller +from app.schemas.common import DeathCauseEnum, DwellerStatusEnum +from app.schemas.dweller import DwellerUpdate +from app.utils.exceptions import ContentNoChangeException, InsufficientResourcesException, ResourceNotFoundException + +logger = logging.getLogger(__name__) + + +class DeathService: + """Service for handling dweller death and revival mechanics.""" + + async def mark_as_dead( + self, + db_session: AsyncSession, + dweller: Dweller, + cause: DeathCauseEnum, + epitaph: str | None = None, + ) -> Dweller: + """ + Mark a dweller as dead. + + :param db_session: Database session + :param dweller: Dweller to mark as dead + :param cause: Cause of death + :param epitaph: Optional memorial message + :returns: Updated dweller + :raises ContentNoChangeException: If dweller is already dead + """ + if dweller.is_dead: + raise ContentNoChangeException(detail="Dweller is already dead") + + # Generate default epitaph if not provided + if not epitaph: + epitaph = self._generate_epitaph(dweller, cause) + + # Update dweller death state + updated_dweller = await dweller_crud.update( + db_session, + dweller.id, + DwellerUpdate( + is_dead=True, + death_timestamp=datetime.now(UTC), + death_cause=cause, + epitaph=epitaph, + status=DwellerStatusEnum.DEAD, + health=0, + room_id=None, # Remove from room + ), + ) + + # Increment death statistics + await self._increment_death_stats(db_session, dweller.vault_id, cause) + + logger.info( + "Dweller %s (%s %s) died from %s", + dweller.id, + dweller.first_name, + dweller.last_name or "", + cause.value, + ) + + return updated_dweller + + async def revive_dweller( + self, + db_session: AsyncSession, + dweller_id: UUID4, + user_id: UUID4, + ) -> Dweller: + """ + Revive a dead dweller by paying the revival cost. + + :param db_session: Database session + :param dweller_id: ID of the dweller to revive + :param user_id: ID of the user attempting revival + :returns: Revived dweller + :raises ResourceNotFoundException: If dweller not found + :raises ContentNoChangeException: If dweller is not dead or permanently dead + :raises InsufficientResourcesException: If not enough caps + """ + dweller = await dweller_crud.get(db_session, dweller_id) + + if not dweller.is_dead: + raise ContentNoChangeException(detail="Dweller is not dead") + + if dweller.is_permanently_dead: + raise ContentNoChangeException(detail="Dweller is permanently dead and cannot be revived") + + # Get vault and check caps + vault = await vault_crud.get(db_session, dweller.vault_id) + if vault.user_id != user_id: + raise ResourceNotFoundException(Dweller, identifier=dweller_id) + + revival_cost = self.get_revival_cost(dweller.level) + if vault.caps < revival_cost: + raise InsufficientResourcesException( + resource_name="caps", + resource_amount=revival_cost - vault.caps, + ) + + # Deduct caps + from app.crud.vault import vault as vault_crud_instance + + await vault_crud_instance.update( + db_session, + vault.id, + {"caps": vault.caps - revival_cost}, + ) + + # Calculate health after revival + revival_health = int(dweller.max_health * game_config.death.revival_health_percent) + + # Revive dweller + revived_dweller = await dweller_crud.update( + db_session, + dweller.id, + DwellerUpdate( + is_dead=False, + death_timestamp=None, + death_cause=None, + is_permanently_dead=False, + status=DwellerStatusEnum.IDLE, + health=revival_health, + ), + ) + + logger.info( + "Dweller %s (%s %s) revived for %d caps", + dweller.id, + dweller.first_name, + dweller.last_name or "", + revival_cost, + ) + + return revived_dweller + + def get_revival_cost(self, level: int) -> int: + """ + Calculate the revival cost for a dweller based on their level. + + Tiered pricing: + - Levels 1-5: level x 50 (50-250 caps) + - Levels 6-10: level x 75 (450-750 caps) + - Levels 11+: level x 100 (1100-2000 caps, capped) + + :param level: Dweller level + :returns: Revival cost in caps + """ + return game_config.death.calculate_revival_cost(level) + + def get_days_until_permanent(self, dweller: Dweller) -> int | None: + """ + Calculate days until dweller's death becomes permanent. + + :param dweller: Dead dweller to check + :returns: Days remaining, or None if not dead or already permanent + """ + if not dweller.is_dead or dweller.is_permanently_dead or not dweller.death_timestamp: + return None + + permanent_date = dweller.death_timestamp + timedelta(days=game_config.death.permanent_death_days) + now = datetime.now(UTC) + + if now >= permanent_date: + return 0 + + return (permanent_date - now).days + + async def check_and_mark_permanent_deaths(self, db_session: AsyncSession) -> int: + """ + Check all dead dwellers and mark those past the threshold as permanently dead. + + This should be called by a scheduled task (cron job). + + :param db_session: Database session + :returns: Number of dwellers marked as permanently dead + """ + cutoff_date = datetime.now(UTC) - timedelta(days=game_config.death.permanent_death_days) + + # Find dead dwellers past the threshold + query = ( + select(Dweller) + .where(Dweller.is_dead == True) + .where(Dweller.is_permanently_dead == False) + .where(Dweller.death_timestamp <= cutoff_date) + ) + + result = await db_session.execute(query) + dwellers_to_mark = result.scalars().all() + + count = 0 + for dweller in dwellers_to_mark: + await dweller_crud.update( + db_session, + dweller.id, + DwellerUpdate(is_permanently_dead=True), + ) + logger.info( + "Dweller %s (%s %s) marked as permanently dead", + dweller.id, + dweller.first_name, + dweller.last_name or "", + ) + count += 1 + + return count + + async def get_death_statistics(self, db_session: AsyncSession, user_id: UUID4) -> dict: + """ + Get life/death statistics for a user. + + :param db_session: Database session + :param user_id: User ID + :returns: Dictionary with death statistics + """ + profile = await profile_crud.get_by_user_id(db_session, user_id) + if not profile: + return { + "total_dwellers_born": 0, + "total_dwellers_died": 0, + "deaths_by_cause": { + "health": 0, + "radiation": 0, + "incident": 0, + "exploration": 0, + "combat": 0, + }, + "revivable_count": 0, + "permanently_dead_count": 0, + } + + # Get revivable and permanent counts + revivable_count, permanent_count = await self._get_dead_dweller_counts(db_session, user_id) + + return { + "total_dwellers_born": profile.total_dwellers_born, + "total_dwellers_died": profile.total_dwellers_died, + "deaths_by_cause": { + "health": profile.deaths_by_health, + "radiation": profile.deaths_by_radiation, + "incident": profile.deaths_by_incident, + "exploration": profile.deaths_by_exploration, + "combat": profile.deaths_by_combat, + }, + "revivable_count": revivable_count, + "permanently_dead_count": permanent_count, + } + + async def _get_dead_dweller_counts(self, db_session: AsyncSession, user_id: UUID4) -> tuple[int, int]: + """Get counts of revivable and permanently dead dwellers for a user.""" + from app.models.vault import Vault + + # Get user's vaults + vault_query = select(Vault.id).where(Vault.user_id == user_id) + vault_result = await db_session.execute(vault_query) + vault_ids = [row[0] for row in vault_result.all()] + + if not vault_ids: + return 0, 0 + + # Count revivable (dead but not permanent) + revivable_query = ( + select(Dweller) + .where(Dweller.vault_id.in_(vault_ids)) + .where(Dweller.is_dead == True) + .where(Dweller.is_permanently_dead == False) + ) + revivable_result = await db_session.execute(revivable_query) + revivable_count = len(revivable_result.scalars().all()) + + # Count permanently dead + permanent_query = ( + select(Dweller).where(Dweller.vault_id.in_(vault_ids)).where(Dweller.is_permanently_dead == True) + ) + permanent_result = await db_session.execute(permanent_query) + permanent_count = len(permanent_result.scalars().all()) + + return revivable_count, permanent_count + + async def _increment_death_stats( + self, + db_session: AsyncSession, + vault_id: UUID4, + cause: DeathCauseEnum, + ) -> None: + """Increment death statistics for the vault owner.""" + vault = await vault_crud.get(db_session, vault_id) + if not vault or not vault.user_id: + return + + # Map cause to stat field + cause_to_field = { + DeathCauseEnum.HEALTH: "deaths_by_health", + DeathCauseEnum.RADIATION: "deaths_by_radiation", + DeathCauseEnum.INCIDENT: "deaths_by_incident", + DeathCauseEnum.EXPLORATION: "deaths_by_exploration", + DeathCauseEnum.COMBAT: "deaths_by_combat", + } + + stat_field = cause_to_field.get(cause) + if stat_field: + await profile_crud.increment_statistic(db_session, vault.user_id, stat_field) + await profile_crud.increment_statistic(db_session, vault.user_id, "total_dwellers_died") + + def _generate_epitaph(self, dweller: Dweller, cause: DeathCauseEnum) -> str: + """Generate a default epitaph based on death cause.""" + name = f"{dweller.first_name} {dweller.last_name or ''}".strip() + + epitaphs = { + DeathCauseEnum.HEALTH: f"{name} succumbed to their wounds. Rest in peace.", + DeathCauseEnum.RADIATION: f"{name} was claimed by the wasteland's radiation. Never forgotten.", + DeathCauseEnum.INCIDENT: f"{name} fell defending the vault. A true hero.", + DeathCauseEnum.EXPLORATION: f"{name} was lost in the wasteland. Their sacrifice is remembered.", + DeathCauseEnum.COMBAT: f"{name} died bravely in combat. Glory to the fallen.", + } + + return epitaphs.get(cause, f"In memory of {name}.") + + +# Singleton instance +death_service = DeathService() diff --git a/backend/app/services/exploration/coordinator.py b/backend/app/services/exploration/coordinator.py index 8e3d825a..df93734b 100644 --- a/backend/app/services/exploration/coordinator.py +++ b/backend/app/services/exploration/coordinator.py @@ -96,12 +96,26 @@ async def _handle_loot_event(self, _db_session: AsyncSession, exploration: Explo exploration.total_distance += random.randint(1, 5) async def _apply_health_loss(self, db_session: AsyncSession, exploration: Exploration, damage: int) -> None: - """Apply health loss to dweller.""" + """ + Apply health loss to dweller. + + If damage would be fatal (health <= 0), the dweller dies from exploration. + """ from app.crud.dweller import dweller as dweller_crud dweller_obj = await dweller_crud.get(db_session, exploration.dweller_id) - dweller_obj.health = max(1, dweller_obj.health - damage) # Don't let health go to 0 - db_session.add(dweller_obj) + new_health = dweller_obj.health - damage + + if new_health <= 0 and not dweller_obj.is_dead: + # Dweller dies in the wasteland + from app.schemas.common import DeathCauseEnum + from app.services.death_service import death_service + + await death_service.mark_as_dead(db_session, dweller_obj, DeathCauseEnum.EXPLORATION) + else: + # Just apply damage (cap at 1 to give player chance to recall) + dweller_obj.health = max(1, new_health) + db_session.add(dweller_obj) async def _apply_health_restoration(self, db_session: AsyncSession, exploration: Exploration, healing: int) -> None: """Apply health restoration to dweller.""" diff --git a/backend/app/services/game_loop.py b/backend/app/services/game_loop.py index ebee21c1..54b1c273 100644 --- a/backend/app/services/game_loop.py +++ b/backend/app/services/game_loop.py @@ -332,18 +332,20 @@ async def _process_dwellers(self, db_session: AsyncSession, vault_id: UUID4) -> - Award work XP to dwellers in production rooms - Check for level-ups - - Update health and needs (future) + - Check for deaths (health <= 0 or radiation threshold) """ from sqlalchemy.exc import SQLAlchemyError from app.models.dweller import Dweller from app.models.room import Room - from app.schemas.common import DwellerStatusEnum + from app.schemas.common import DeathCauseEnum, DwellerStatusEnum + from app.services.death_service import death_service stats = { "health_updated": 0, "leveled_up": 0, "xp_awarded": 0, + "deaths": 0, } try: @@ -365,6 +367,23 @@ async def _process_dwellers(self, db_session: AsyncSession, vault_id: UUID4) -> # Process each dweller for dweller in dwellers: try: + # Skip already dead dwellers + if dweller.is_dead: + continue + + # Check for death conditions + if dweller.health <= 0: + await death_service.mark_as_dead(db_session, dweller, DeathCauseEnum.HEALTH) + stats["deaths"] += 1 + self.logger.info(f"Dweller {dweller.first_name} {dweller.last_name} died from health depletion") + continue + + if dweller.radiation >= game_config.death.radiation_death_threshold: + await death_service.mark_as_dead(db_session, dweller, DeathCauseEnum.RADIATION) + stats["deaths"] += 1 + self.logger.info(f"Dweller {dweller.first_name} {dweller.last_name} died from radiation") + continue + # Award work XP for dwellers in production rooms if dweller.status == DwellerStatusEnum.WORKING and dweller.room_id: # Get room from pre-fetched map diff --git a/backend/app/services/incident_service.py b/backend/app/services/incident_service.py index 839f68f0..d79851c3 100644 --- a/backend/app/services/incident_service.py +++ b/backend/app/services/incident_service.py @@ -233,6 +233,7 @@ async def process_incident( # Apply damage to dwellers damaged_count = 0 + deaths_count = 0 for dweller in dwellers: damage_per_dweller = damage_to_dwellers / len(dwellers) new_health = max(0, dweller.health - int(damage_per_dweller)) @@ -243,6 +244,15 @@ async def process_incident( db_session.add(dweller) damaged_count += 1 + # Check for death from incident + if new_health <= 0 and not dweller.is_dead: + from app.schemas.common import DeathCauseEnum + from app.services.death_service import death_service + + await death_service.mark_as_dead(db_session, dweller, DeathCauseEnum.INCIDENT) + deaths_count += 1 + self.logger.info(f"Dweller {dweller.first_name} {dweller.last_name} died during incident") + # Track total damage dealt by raiders incident.damage_dealt += int(damage_to_dwellers) @@ -274,6 +284,7 @@ async def process_incident( "damage_to_dwellers": damage_to_dwellers, "damage_to_raiders": damage_to_raiders, "dwellers_damaged": damaged_count, + "dwellers_killed": deaths_count, "enemies_defeated": enemies_this_tick, "caps_earned": caps_earned, # Return for batch update } diff --git a/backend/coverage.json b/backend/coverage.json index e800db25..6a0424a1 100644 --- a/backend/coverage.json +++ b/backend/coverage.json @@ -1 +1 @@ -{"meta": {"format": 3, "version": "7.13.1", "timestamp": "2026-01-20T00:20:06.721904", "branch_coverage": false, "show_contexts": false}, "files": {"app\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\admin\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\admin\\auth.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 10, 11, 41, 46], "summary": {"covered_lines": 10, "num_statements": 31, "percent_covered": 32.25806451612903, "percent_covered_display": "32.26", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 32.25806451612903, "percent_statements_covered_display": "32.26"}, "missing_lines": [12, 13, 14, 17, 25, 27, 34, 36, 37, 39, 43, 44, 47, 49, 50, 53, 62, 63, 64, 65, 67], "excluded_lines": [], "functions": {"AdminAuth.login": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [12, 13, 14, 17, 25, 27, 34, 36, 37, 39], "excluded_lines": [], "start_line": 11}, "AdminAuth.logout": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [43, 44], "excluded_lines": [], "start_line": 41}, "AdminAuth.authenticate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [47, 49, 50, 53, 62, 63, 64, 65, 67], "excluded_lines": [], "start_line": 46}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 10, 11, 41, 46], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AdminAuth": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [12, 13, 14, 17, 25, 27, 34, 36, 37, 39, 43, 44, 47, 49, 50, 53, 62, 63, 64, 65, 67], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 10, 11, 41, 46], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\admin\\views.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 25, 26, 35, 37, 39, 40, 41, 42, 45, 46, 59, 60, 62, 64, 65, 68, 69, 80, 83, 84, 91, 94, 95, 112, 118, 121, 122, 124, 125, 127, 130, 131, 140, 143, 144, 153, 154, 155, 157, 159, 160, 161, 162, 165, 166, 171, 172, 174, 176, 177, 178, 179, 182, 183, 193, 196, 197, 209, 212, 213, 219, 222, 223, 224, 225, 233, 236, 237, 247, 248, 249, 251, 252, 255, 256, 267, 268, 269, 271, 272, 275, 276, 293, 294, 295, 297, 298, 299, 302, 303, 318, 319, 320, 322, 323, 324, 327, 328, 343, 344, 345, 347, 348, 349, 352, 353, 364, 365, 366, 368, 376, 377, 378, 380, 381, 382, 385, 386, 400, 401, 402, 404, 410, 411, 412, 414, 415, 416], "summary": {"covered_lines": 148, "num_statements": 148, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 25, 26, 35, 37, 39, 40, 41, 42, 45, 46, 59, 60, 62, 64, 65, 68, 69, 80, 83, 84, 91, 94, 95, 112, 118, 121, 122, 124, 125, 127, 130, 131, 140, 143, 144, 153, 154, 155, 157, 159, 160, 161, 162, 165, 166, 171, 172, 174, 176, 177, 178, 179, 182, 183, 193, 196, 197, 209, 212, 213, 219, 222, 223, 224, 225, 233, 236, 237, 247, 248, 249, 251, 252, 255, 256, 267, 268, 269, 271, 272, 275, 276, 293, 294, 295, 297, 298, 299, 302, 303, 318, 319, 320, 322, 323, 324, 327, 328, 343, 344, 345, 347, 348, 349, 352, 353, 364, 365, 366, 368, 376, 377, 378, 380, 381, 382, 385, 386, 400, 401, 402, 404, 410, 411, 412, 414, 415, 416], "summary": {"covered_lines": 148, "num_statements": 148, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"UserAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "UserProfileAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "VaultAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "StorageAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "DwellerAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 94}, "JunkAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 121}, "OutfitAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 130}, "QuestAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 143}, "ObjectiveAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 165}, "RoomAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 182}, "WeaponAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 196}, "PromptAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 212}, "LLInteractionAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 222}, "RelationshipAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 236}, "PregnancyAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 255}, "TrainingAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 275}, "IncidentAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 302}, "ExplorationAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 327}, "ChatMessageAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 352}, "NotificationAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 385}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 25, 26, 35, 37, 39, 40, 41, 42, 45, 46, 59, 60, 62, 64, 65, 68, 69, 80, 83, 84, 91, 94, 95, 112, 118, 121, 122, 124, 125, 127, 130, 131, 140, 143, 144, 153, 154, 155, 157, 159, 160, 161, 162, 165, 166, 171, 172, 174, 176, 177, 178, 179, 182, 183, 193, 196, 197, 209, 212, 213, 219, 222, 223, 224, 225, 233, 236, 237, 247, 248, 249, 251, 252, 255, 256, 267, 268, 269, 271, 272, 275, 276, 293, 294, 295, 297, 298, 299, 302, 303, 318, 319, 320, 322, 323, 324, 327, 328, 343, 344, 345, 347, 348, 349, 352, 353, 364, 365, 366, 368, 376, 377, 378, 380, 381, 382, 385, 386, 400, 401, 402, 404, 410, 411, 412, 414, 415, 416], "summary": {"covered_lines": 148, "num_statements": 148, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\agents\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\agents\\deps.py": {"executed_lines": [3, 5, 8, 9, 12, 13, 14, 15, 18, 19, 22, 25, 26, 29, 30, 31, 32], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 5, 8, 9, 12, 13, 14, 15, 18, 19, 22, 25, 26, 29, 30, 31, 32], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"BackstoryDeps": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "ExtendBioDeps": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "VisualAttributesDeps": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "": {"executed_lines": [3, 5, 8, 9, 12, 13, 14, 15, 18, 19, 22, 25, 26, 29, 30, 31, 32], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\agents\\dweller_agents.py": {"executed_lines": [3, 5, 6, 7, 8, 11, 13, 19, 22, 36, 37, 51, 64, 65, 76, 100, 101], "summary": {"covered_lines": 17, "num_statements": 23, "percent_covered": 73.91304347826087, "percent_covered_display": "73.91", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 73.91304347826087, "percent_statements_covered_display": "73.91"}, "missing_lines": [39, 40, 67, 103, 104, 106], "excluded_lines": [], "functions": {"backstory_system_prompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [39, 40], "excluded_lines": [], "start_line": 37}, "bio_extension_system_prompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [67], "excluded_lines": [], "start_line": 65}, "visual_attributes_system_prompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [103, 104, 106], "excluded_lines": [], "start_line": 101}, "": {"executed_lines": [3, 5, 6, 7, 8, 11, 13, 19, 22, 36, 37, 51, 64, 65, 76, 100, 101], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 11, 13, 19, 22, 36, 37, 51, 64, 65, 76, 100, 101], "summary": {"covered_lines": 17, "num_statements": 23, "percent_covered": 73.91304347826087, "percent_covered_display": "73.91", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 73.91304347826087, "percent_statements_covered_display": "73.91"}, "missing_lines": [39, 40, 67, 103, 104, 106], "excluded_lines": [], "start_line": 1}}}, "app\\api\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\api\\celery_task.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 55, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 55, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 3, 4, 6, 8, 9, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26, 29, 30, 35, 36, 38, 40, 42, 44, 50, 52, 53, 54, 55, 57, 58, 59, 60, 62, 63, 66, 67, 72, 73, 75, 77, 79, 81, 87, 89, 90, 91, 92, 94, 95, 96, 97, 99, 100], "excluded_lines": [], "functions": {"create_task": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20, 21], "excluded_lines": [], "start_line": 19}, "generate_dweller_attributes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [26], "excluded_lines": [], "start_line": 25}, "game_tick_task": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [35, 36, 38, 57, 58, 59, 60, 62, 63], "excluded_lines": [], "start_line": 30}, "game_tick_task.run_tick": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40, 42, 44, 50, 52, 53, 54, 55], "excluded_lines": [], "start_line": 38}, "process_vault_tick_task": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [72, 73, 75, 94, 95, 96, 97, 99, 100], "excluded_lines": [], "start_line": 67}, "process_vault_tick_task.run_vault_tick": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [77, 79, 81, 87, 89, 90, 91, 92], "excluded_lines": [], "start_line": 75}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 3, 4, 6, 8, 9, 11, 14, 15, 18, 19, 24, 25, 29, 30, 66, 67], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 55, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 55, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 3, 4, 6, 8, 9, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26, 29, 30, 35, 36, 38, 40, 42, 44, 50, 52, 53, 54, 55, 57, 58, 59, 60, 62, 63, 66, 67, 72, 73, 75, 77, 79, 81, 87, 89, 90, 91, 92, 94, 95, 96, 97, 99, 100], "excluded_lines": [], "start_line": 1}}}, "app\\api\\deps.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 23, 24, 25, 26, 28, 31, 54, 57, 63, 66, 75, 78, 103, 116, 129], "summary": {"covered_lines": 30, "num_statements": 68, "percent_covered": 44.11764705882353, "percent_covered_display": "44.12", "missing_lines": 38, "excluded_lines": 0, "percent_statements_covered": 44.11764705882353, "percent_statements_covered_display": "44.12"}, "missing_lines": [35, 36, 41, 42, 43, 44, 48, 49, 50, 51, 58, 59, 60, 67, 68, 72, 89, 90, 91, 94, 95, 100, 109, 110, 111, 113, 122, 123, 124, 126, 135, 137, 138, 139, 142, 143, 144, 146], "excluded_lines": [], "functions": {"get_redis_client": {"executed_lines": [24, 25, 26, 28], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "get_current_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [35, 36, 41, 42, 43, 44, 48, 49, 50, 51], "excluded_lines": [], "start_line": 31}, "get_current_active_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [58, 59, 60], "excluded_lines": [], "start_line": 57}, "get_current_active_superuser": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [67, 68, 72], "excluded_lines": [], "start_line": 66}, "get_user_vault_or_403": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [89, 90, 91, 94, 95, 100], "excluded_lines": [], "start_line": 78}, "verify_dweller_access": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [109, 110, 111, 113], "excluded_lines": [], "start_line": 103}, "verify_room_access": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [122, 123, 124, 126], "excluded_lines": [], "start_line": 116}, "verify_exploration_access": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [135, 137, 138, 139, 142, 143, 144, 146], "excluded_lines": [], "start_line": 129}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 23, 31, 54, 57, 63, 66, 75, 78, 103, 116, 129], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 23, 24, 25, 26, 28, 31, 54, 57, 63, 66, 75, 78, 103, 116, 129], "summary": {"covered_lines": 30, "num_statements": 68, "percent_covered": 44.11764705882353, "percent_covered_display": "44.12", "missing_lines": 38, "excluded_lines": 0, "percent_statements_covered": 44.11764705882353, "percent_statements_covered_display": "44.12"}, "missing_lines": [35, 36, 41, 42, 43, 44, 48, 49, 50, 51, 58, 59, 60, 67, 68, 72, 89, 90, 91, 94, 95, 100, 109, 110, 111, 113, 122, 123, 124, 126, 135, 137, 138, 139, 142, 143, 144, 146], "excluded_lines": [], "start_line": 1}}}, "app\\api\\game_data_deps.py": {"executed_lines": [1, 4], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [12], "excluded_lines": [], "functions": {"get_static_game_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [12], "excluded_lines": [], "start_line": 4}, "": {"executed_lines": [1, 4], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 4], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [12], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\api.py": {"executed_lines": [1, 3, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\auth.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 19, 22, 23, 31, 44, 58, 59, 93, 94, 102, 103, 134, 135, 189, 190, 220, 221, 254, 255], "summary": {"covered_lines": 34, "num_statements": 113, "percent_covered": 30.088495575221238, "percent_covered_display": "30.09", "missing_lines": 79, "excluded_lines": 0, "percent_statements_covered": 30.088495575221238, "percent_statements_covered_display": "30.09"}, "missing_lines": [36, 37, 38, 39, 41, 42, 67, 68, 69, 71, 72, 73, 74, 75, 77, 78, 84, 86, 98, 99, 110, 113, 114, 117, 120, 121, 122, 125, 131, 145, 146, 147, 150, 151, 152, 155, 156, 158, 160, 161, 162, 164, 165, 166, 169, 172, 173, 175, 178, 181, 186, 201, 202, 205, 206, 209, 212, 217, 229, 230, 231, 234, 235, 236, 239, 240, 243, 244, 247, 248, 249, 251, 263, 264, 267, 270, 271, 274, 280], "excluded_lines": [], "functions": {"login_access_token": {"executed_lines": [31, 44], "summary": {"covered_lines": 2, "num_statements": 8, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [36, 37, 38, 39, 41, 42], "excluded_lines": [], "start_line": 23}, "refresh_access_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [67, 68, 69, 71, 72, 73, 74, 75, 77, 78, 84, 86], "excluded_lines": [], "start_line": 59}, "logout": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [98, 99], "excluded_lines": [], "start_line": 94}, "forgot_password": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [110, 113, 114, 117, 120, 121, 122, 125, 131], "excluded_lines": [], "start_line": 103}, "reset_password": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 22, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [145, 146, 147, 150, 151, 152, 155, 156, 158, 160, 161, 162, 164, 165, 166, 169, 172, 173, 175, 178, 181, 186], "excluded_lines": [], "start_line": 135}, "change_password": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [201, 202, 205, 206, 209, 212, 217], "excluded_lines": [], "start_line": 190}, "verify_email": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [229, 230, 231, 234, 235, 236, 239, 240, 243, 244, 247, 248, 249, 251], "excluded_lines": [], "start_line": 221}, "resend_verification_email": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [263, 264, 267, 270, 271, 274, 280], "excluded_lines": [], "start_line": 255}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 19, 22, 23, 58, 59, 93, 94, 102, 103, 134, 135, 189, 190, 220, 221, 254, 255], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 19, 22, 23, 31, 44, 58, 59, 93, 94, 102, 103, 134, 135, 189, 190, 220, 221, 254, 255], "summary": {"covered_lines": 34, "num_statements": 113, "percent_covered": 30.088495575221238, "percent_covered_display": "30.09", "missing_lines": 79, "excluded_lines": 0, "percent_statements_covered": 30.088495575221238, "percent_statements_covered_display": "30.09"}, "missing_lines": [36, 37, 38, 39, 41, 42, 67, 68, 69, 71, 72, 73, 74, 75, 77, 78, 84, 86, 98, 99, 110, 113, 114, 117, 120, 121, 122, 125, 131, 145, 146, 147, 150, 151, 152, 155, 156, 158, 160, 161, 162, 164, 165, 166, 169, 172, 173, 175, 178, 181, 186, 201, 202, 205, 206, 209, 212, 217, 229, 230, 231, 234, 235, 236, 239, 240, 243, 244, 247, 248, 249, 251, 263, 264, 267, 270, 271, 274, 280], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\chat.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 26, 27, 28, 29, 30, 31, 32, 35, 36, 91, 92, 95, 96, 156, 157, 178, 179], "summary": {"covered_lines": 37, "num_statements": 78, "percent_covered": 47.43589743589744, "percent_covered_display": "47.44", "missing_lines": 41, "excluded_lines": 0, "percent_statements_covered": 47.43589743589744, "percent_statements_covered_display": "47.44"}, "missing_lines": [40, 68, 70, 72, 74, 75, 82, 83, 86, 87, 88, 102, 103, 104, 107, 110, 111, 119, 125, 131, 142, 153, 165, 166, 167, 169, 206, 208, 210, 211, 212, 215, 218, 227, 228, 239, 246, 247, 248, 249, 250], "excluded_lines": [], "functions": {"generate_objectives": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40, 68, 70, 72, 74, 75, 82, 83, 86, 87, 88], "excluded_lines": [], "start_line": 36}, "chat_with_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [102, 103, 104, 107, 110, 111, 119, 125, 131, 142, 153], "excluded_lines": [], "start_line": 96}, "get_chat_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [165, 166, 167, 169], "excluded_lines": [], "start_line": 157}, "voice_chat_with_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [206, 208, 210, 211, 212, 215, 218, 227, 228, 239, 246, 247, 248, 249, 250], "excluded_lines": [], "start_line": 179}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 26, 27, 28, 29, 30, 31, 32, 35, 36, 91, 92, 95, 96, 156, 157, 178, 179], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ObjectiveKindEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "ChatMessage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 91}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 26, 27, 28, 29, 30, 31, 32, 35, 36, 91, 92, 95, 96, 156, 157, 178, 179], "summary": {"covered_lines": 37, "num_statements": 78, "percent_covered": 47.43589743589744, "percent_covered_display": "47.44", "missing_lines": 41, "excluded_lines": 0, "percent_statements_covered": 47.43589743589744, "percent_statements_covered_display": "47.44"}, "missing_lines": [40, 68, 70, 72, 74, 75, 82, 83, 86, 87, 88, 102, 103, 104, 107, 110, 111, 119, 125, 131, 142, 153, 165, 166, 167, 169, 206, 208, 210, 211, 212, 215, 218, 227, 228, 239, 246, 247, 248, 249, 250], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\dweller.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 23, 25, 28, 29, 37, 38, 48, 49, 58, 59, 88, 89, 95, 96, 121, 122, 132, 133, 143, 144, 152, 153, 161, 162, 170, 171, 180, 181, 192, 193, 211, 212, 216, 217, 227, 228, 238, 239, 251, 252], "summary": {"covered_lines": 50, "num_statements": 89, "percent_covered": 56.17977528089887, "percent_covered_display": "56.18", "missing_lines": 39, "excluded_lines": 0, "percent_statements_covered": 56.17977528089887, "percent_statements_covered_display": "56.18"}, "missing_lines": [34, 45, 54, 55, 65, 67, 70, 72, 74, 77, 78, 79, 80, 81, 83, 85, 92, 108, 109, 128, 129, 139, 140, 149, 158, 167, 177, 187, 201, 213, 223, 224, 234, 235, 245, 247, 248, 258, 259], "excluded_lines": [], "functions": {"create_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [34], "excluded_lines": [], "start_line": 29}, "read_dweller_list": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [45], "excluded_lines": [], "start_line": 38}, "read_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [54, 55], "excluded_lines": [], "start_line": 49}, "update_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [65, 67, 70, 72, 74, 77, 78, 79, 80, 81, 83, 85], "excluded_lines": [], "start_line": 59}, "delete_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [92], "excluded_lines": [], "start_line": 89}, "read_dwellers_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [108, 109], "excluded_lines": [], "start_line": 96}, "move_dweller_to_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [128, 129], "excluded_lines": [], "start_line": 122}, "create_random_common_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [139, 140], "excluded_lines": [], "start_line": 133}, "generate_backstory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [149], "excluded_lines": [], "start_line": 144}, "generate_visual_attributes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [158], "excluded_lines": [], "start_line": 153}, "generate_photo": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [167], "excluded_lines": [], "start_line": 162}, "generate_audio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [177], "excluded_lines": [], "start_line": 171}, "generate_data_with_ai": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [187], "excluded_lines": [], "start_line": 181}, "generate_dweller_avatar": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [201], "excluded_lines": [], "start_line": 193}, "read_dwellers_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [213], "excluded_lines": [], "start_line": 212}, "use_stimpack": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [223, 224], "excluded_lines": [], "start_line": 217}, "use_radaway": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [234, 235], "excluded_lines": [], "start_line": 228}, "get_happiness_modifiers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [245, 247, 248], "excluded_lines": [], "start_line": 239}, "auto_assign_to_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [258, 259], "excluded_lines": [], "start_line": 252}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 23, 25, 28, 29, 37, 38, 48, 49, 58, 59, 88, 89, 95, 96, 121, 122, 132, 133, 143, 144, 152, 153, 161, 162, 170, 171, 180, 181, 192, 193, 211, 212, 216, 217, 227, 228, 238, 239, 251, 252], "summary": {"covered_lines": 50, "num_statements": 50, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 23, 25, 28, 29, 37, 38, 48, 49, 58, 59, 88, 89, 95, 96, 121, 122, 132, 133, 143, 144, 152, 153, 161, 162, 170, 171, 180, 181, 192, 193, 211, 212, 216, 217, 227, 228, 238, 239, 251, 252], "summary": {"covered_lines": 50, "num_statements": 89, "percent_covered": 56.17977528089887, "percent_covered_display": "56.18", "missing_lines": 39, "excluded_lines": 0, "percent_statements_covered": 56.17977528089887, "percent_statements_covered_display": "56.18"}, "missing_lines": [34, 45, 54, 55, 65, 67, 70, 72, 74, 77, 78, 79, 80, 81, 83, 85, 92, 108, 109, 128, 129, 139, 140, 149, 158, 167, 177, 187, 201, 213, 223, 224, 234, 235, 245, 247, 248, 258, 259], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\exploration.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 19, 21, 24, 25, 44, 45, 68, 69, 79, 80, 90, 91, 108, 109, 126, 127], "summary": {"covered_lines": 24, "num_statements": 55, "percent_covered": 43.63636363636363, "percent_covered_display": "43.64", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 43.63636363636363, "percent_statements_covered_display": "43.64"}, "missing_lines": [32, 33, 34, 40, 41, 52, 53, 54, 60, 65, 75, 76, 86, 87, 97, 98, 99, 100, 104, 105, 115, 116, 117, 118, 122, 123, 133, 134, 135, 136, 137], "excluded_lines": [], "functions": {"send_dweller_to_wasteland": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [32, 33, 34, 40, 41], "excluded_lines": [], "start_line": 25}, "list_explorations_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [52, 53, 54, 60, 65], "excluded_lines": [], "start_line": 45}, "get_exploration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [75, 76], "excluded_lines": [], "start_line": 69}, "get_exploration_progress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [86, 87], "excluded_lines": [], "start_line": 80}, "recall_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [97, 98, 99, 100, 104, 105], "excluded_lines": [], "start_line": 91}, "complete_exploration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [115, 116, 117, 118, 122, 123], "excluded_lines": [], "start_line": 109}, "generate_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [133, 134, 135, 136, 137], "excluded_lines": [], "start_line": 127}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 19, 21, 24, 25, 44, 45, 68, 69, 79, 80, 90, 91, 108, 109, 126, 127], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 19, 21, 24, 25, 44, 45, 68, 69, 79, 80, 90, 91, 108, 109, 126, 127], "summary": {"covered_lines": 24, "num_statements": 55, "percent_covered": 43.63636363636363, "percent_covered_display": "43.64", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 43.63636363636363, "percent_statements_covered_display": "43.64"}, "missing_lines": [32, 33, 34, 40, 41, 52, 53, 54, 60, 65, 75, 76, 86, 87, 97, 98, 99, 100, 104, 105, 115, 116, 117, 118, 122, 123, 133, 134, 135, 136, 137], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\game_control.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 15, 18, 19, 44, 45, 70, 71, 89, 90, 127, 128, 167, 168, 199, 200, 233, 234, 281, 282, 306, 307], "summary": {"covered_lines": 30, "num_statements": 120, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 90, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [27, 28, 29, 31, 32, 34, 36, 53, 54, 55, 57, 58, 60, 62, 79, 80, 81, 83, 84, 86, 98, 99, 100, 102, 103, 105, 107, 137, 138, 139, 141, 142, 144, 145, 146, 148, 183, 184, 185, 187, 188, 191, 193, 215, 216, 217, 219, 220, 223, 224, 225, 227, 228, 229, 230, 246, 249, 250, 251, 253, 254, 257, 258, 259, 260, 261, 262, 267, 269, 270, 272, 290, 291, 292, 294, 295, 297, 299, 316, 317, 318, 320, 321, 324, 325, 326, 328, 330, 331, 333], "excluded_lines": [], "functions": {"pause_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [27, 28, 29, 31, 32, 34, 36], "excluded_lines": [], "start_line": 19}, "resume_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [53, 54, 55, 57, 58, 60, 62], "excluded_lines": [], "start_line": 45}, "get_game_state": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [79, 80, 81, 83, 84, 86], "excluded_lines": [], "start_line": 71}, "list_incidents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [98, 99, 100, 102, 103, 105, 107], "excluded_lines": [], "start_line": 90}, "get_incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [137, 138, 139, 141, 142, 144, 145, 146, 148], "excluded_lines": [], "start_line": 128}, "manual_tick": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [183, 184, 185, 187, 188, 191, 193], "excluded_lines": [], "start_line": 168}, "resolve_incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [215, 216, 217, 219, 220, 223, 224, 225, 227, 228, 229, 230], "excluded_lines": [], "start_line": 200}, "spawn_debug_incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [246, 249, 250, 251, 253, 254, 257, 258, 259, 260, 261, 262, 267, 269, 270, 272], "excluded_lines": [], "start_line": 234}, "delete_all_incidents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [290, 291, 292, 294, 295, 297, 299], "excluded_lines": [], "start_line": 282}, "delete_incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [316, 317, 318, 320, 321, 324, 325, 326, 328, 330, 331, 333], "excluded_lines": [], "start_line": 307}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 15, 18, 19, 44, 45, 70, 71, 89, 90, 127, 128, 167, 168, 199, 200, 233, 234, 281, 282, 306, 307], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 15, 18, 19, 44, 45, 70, 71, 89, 90, 127, 128, 167, 168, 199, 200, 233, 234, 281, 282, 306, 307], "summary": {"covered_lines": 30, "num_statements": 120, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 90, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [27, 28, 29, 31, 32, 34, 36, 53, 54, 55, 57, 58, 60, 62, 79, 80, 81, 83, 84, 86, 98, 99, 100, 102, 103, 105, 107, 137, 138, 139, 141, 142, 144, 145, 146, 148, 183, 184, 185, 187, 188, 191, 193, 215, 216, 217, 219, 220, 223, 224, 225, 227, 228, 229, 230, 246, 249, 250, 251, 253, 254, 257, 258, 259, 260, 261, 262, 267, 269, 270, 272, 290, 291, 292, 294, 295, 297, 299, 316, 317, 318, 320, 321, 324, 325, 326, 328, 330, 331, 333], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\junk.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 20, 21, 27, 28, 32, 33, 39, 40, 44, 45, 49, 50], "summary": {"covered_lines": 23, "num_statements": 30, "percent_covered": 76.66666666666667, "percent_covered_display": "76.67", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 76.66666666666667, "percent_statements_covered_display": "76.67"}, "missing_lines": [17, 24, 29, 36, 41, 46, 51], "excluded_lines": [], "functions": {"create_junk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [17], "excluded_lines": [], "start_line": 16}, "read_junk_list": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24], "excluded_lines": [], "start_line": 21}, "read_junk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [29], "excluded_lines": [], "start_line": 28}, "update_junk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36], "excluded_lines": [], "start_line": 33}, "delete_junk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [41], "excluded_lines": [], "start_line": 40}, "sell_junk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [46], "excluded_lines": [], "start_line": 45}, "read_junk_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [51], "excluded_lines": [], "start_line": 50}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 20, 21, 27, 28, 32, 33, 39, 40, 44, 45, 49, 50], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 20, 21, 27, 28, 32, 33, 39, 40, 44, 45, 49, 50], "summary": {"covered_lines": 23, "num_statements": 30, "percent_covered": 76.66666666666667, "percent_covered_display": "76.67", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 76.66666666666667, "percent_statements_covered_display": "76.67"}, "missing_lines": [17, 24, 29, 36, 41, 46, 51], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\notifications.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 33, 34, 43, 44, 53, 54, 66, 67, 76, 77], "summary": {"covered_lines": 21, "num_statements": 35, "percent_covered": 60.0, "percent_covered_display": "60.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00"}, "missing_lines": [24, 39, 40, 50, 60, 61, 62, 63, 72, 73, 83, 84, 85, 86], "excluded_lines": [], "functions": {"get_notifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24], "excluded_lines": [], "start_line": 16}, "get_unread_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [39, 40], "excluded_lines": [], "start_line": 34}, "create_notification": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [50], "excluded_lines": [], "start_line": 44}, "mark_notification_as_read": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [60, 61, 62, 63], "excluded_lines": [], "start_line": 54}, "mark_all_notifications_as_read": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [72, 73], "excluded_lines": [], "start_line": 67}, "dismiss_notification": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [83, 84, 85, 86], "excluded_lines": [], "start_line": 77}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 33, 34, 43, 44, 53, 54, 66, 67, 76, 77], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 33, 34, 43, 44, 53, 54, 66, 67, 76, 77], "summary": {"covered_lines": 21, "num_statements": 35, "percent_covered": 60.0, "percent_covered_display": "60.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00"}, "missing_lines": [24, 39, 40, 50, 60, 61, 62, 63, 72, 73, 83, 84, 85, 86], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\objective.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 22, 23, 32, 33, 37, 38, 45, 46], "summary": {"covered_lines": 19, "num_statements": 24, "percent_covered": 79.16666666666667, "percent_covered_display": "79.17", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 79.16666666666667, "percent_statements_covered_display": "79.17"}, "missing_lines": [19, 29, 34, 42, 53], "excluded_lines": [], "functions": {"create_objective": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [19], "excluded_lines": [], "start_line": 16}, "read_objective_list": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [29], "excluded_lines": [], "start_line": 23}, "read_objective": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [34], "excluded_lines": [], "start_line": 33}, "complete_objective": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42], "excluded_lines": [], "start_line": 38}, "update_objective_progress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [53], "excluded_lines": [], "start_line": 46}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 22, 23, 32, 33, 37, 38, 45, 46], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 22, 23, 32, 33, 37, 38, 45, 46], "summary": {"covered_lines": 19, "num_statements": 24, "percent_covered": 79.16666666666667, "percent_covered_display": "79.17", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 79.16666666666667, "percent_statements_covered_display": "79.17"}, "missing_lines": [19, 29, 34, 42, 53], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\outfit.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 28, 29, 33, 34, 42, 43, 47, 48, 54, 55, 59, 60, 64, 65, 69, 70], "summary": {"covered_lines": 30, "num_statements": 40, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [18, 25, 30, 39, 44, 51, 56, 61, 66, 71], "excluded_lines": [], "functions": {"create_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [18], "excluded_lines": [], "start_line": 17}, "read_outfit_list": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [25], "excluded_lines": [], "start_line": 22}, "read_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [30], "excluded_lines": [], "start_line": 29}, "update_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [39], "excluded_lines": [], "start_line": 34}, "delete_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [44], "excluded_lines": [], "start_line": 43}, "equip_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [51], "excluded_lines": [], "start_line": 48}, "unequip_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [56], "excluded_lines": [], "start_line": 55}, "scrap_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [61], "excluded_lines": [], "start_line": 60}, "sell_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [66], "excluded_lines": [], "start_line": 65}, "read_outfits_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [71], "excluded_lines": [], "start_line": 70}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 28, 29, 33, 34, 42, 43, 47, 48, 54, 55, 59, 60, 64, 65, 69, 70], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 28, 29, 33, 34, 42, 43, 47, 48, 54, 55, 59, 60, 64, 65, 69, 70], "summary": {"covered_lines": 30, "num_statements": 40, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [18, 25, 30, 39, 44, 51, 56, 61, 66, 71], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\pregnancy.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 21, 51, 52, 88, 89], "summary": {"covered_lines": 18, "num_statements": 53, "percent_covered": 33.9622641509434, "percent_covered_display": "33.96", "missing_lines": 35, "excluded_lines": 0, "percent_statements_covered": 33.9622641509434, "percent_statements_covered_display": "33.96"}, "missing_lines": [27, 29, 35, 58, 59, 60, 62, 63, 66, 67, 69, 70, 73, 75, 96, 97, 98, 100, 101, 104, 105, 107, 108, 111, 114, 115, 117, 120, 121, 123, 124, 125, 135, 140, 141], "excluded_lines": [], "functions": {"get_vault_pregnancies": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [27, 29, 35], "excluded_lines": [], "start_line": 21}, "get_pregnancy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [58, 59, 60, 62, 63, 66, 67, 69, 70, 73, 75], "excluded_lines": [], "start_line": 52}, "deliver_baby": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [96, 97, 98, 100, 101, 104, 105, 107, 108, 111, 114, 115, 117, 120, 121, 123, 124, 125, 135, 140, 141], "excluded_lines": [], "start_line": 89}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 21, 51, 52, 88, 89], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 21, 51, 52, 88, 89], "summary": {"covered_lines": 18, "num_statements": 53, "percent_covered": 33.9622641509434, "percent_covered_display": "33.96", "missing_lines": 35, "excluded_lines": 0, "percent_statements_covered": 33.9622641509434, "percent_statements_covered_display": "33.96"}, "missing_lines": [27, 29, 35, 58, 59, 60, 62, 63, 66, 67, 69, 70, 73, 75, 96, 97, 98, 100, 101, 104, 105, 107, 108, 111, 114, 115, 117, 120, 121, 123, 124, 125, 135, 140, 141], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\profile.py": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 11, 14, 15, 28, 29], "summary": {"covered_lines": 12, "num_statements": 20, "percent_covered": 60.0, "percent_covered_display": "60.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00"}, "missing_lines": [21, 22, 24, 25, 36, 37, 38, 40], "excluded_lines": [], "functions": {"get_my_profile": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [21, 22, 24, 25], "excluded_lines": [], "start_line": 15}, "update_my_profile": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36, 37, 38, 40], "excluded_lines": [], "start_line": 29}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 11, 14, 15, 28, 29], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 11, 14, 15, 28, 29], "summary": {"covered_lines": 12, "num_statements": 20, "percent_covered": 60.0, "percent_covered_display": "60.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00"}, "missing_lines": [21, 22, 24, 25, 36, 37, 38, 40], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\quest.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 16, 19, 20, 30, 31, 39, 40, 51, 52, 61, 62, 70, 71, 75, 76, 92, 93], "summary": {"covered_lines": 25, "num_statements": 33, "percent_covered": 75.75757575757575, "percent_covered_display": "75.76", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 75.75757575757575, "percent_statements_covered_display": "75.76"}, "missing_lines": [27, 36, 48, 58, 67, 72, 87, 102], "excluded_lines": [], "functions": {"read_all_quests": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [27], "excluded_lines": [], "start_line": 20}, "create_quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36], "excluded_lines": [], "start_line": 31}, "read_vault_quests": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [48], "excluded_lines": [], "start_line": 40}, "read_quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [58], "excluded_lines": [], "start_line": 52}, "update_quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [67], "excluded_lines": [], "start_line": 62}, "delete_quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [72], "excluded_lines": [], "start_line": 71}, "assign_quest_to_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [87], "excluded_lines": [], "start_line": 76}, "complete_quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [102], "excluded_lines": [], "start_line": 93}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 16, 19, 20, 30, 31, 39, 40, 51, 52, 61, 62, 70, 71, 75, 76, 92, 93], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 16, 19, 20, 30, 31, 39, 40, 51, 52, 61, 62, 70, 71, 75, 76, 92, 93], "summary": {"covered_lines": 25, "num_statements": 33, "percent_covered": 75.75757575757575, "percent_covered_display": "75.76", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 75.75757575757575, "percent_statements_covered_display": "75.76"}, "missing_lines": [27, 36, 48, 58, 67, 72, 87, 102], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\radio.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 34, 35, 78, 79, 95, 96], "summary": {"covered_lines": 21, "num_statements": 52, "percent_covered": 40.38461538461539, "percent_covered_display": "40.38", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 40.38461538461539, "percent_statements_covered_display": "40.38"}, "missing_lines": [28, 30, 31, 42, 44, 45, 47, 54, 55, 57, 60, 61, 69, 74, 75, 86, 89, 90, 92, 104, 107, 108, 111, 112, 114, 115, 118, 119, 121, 122, 124], "excluded_lines": [], "functions": {"get_radio_stats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [28, 30, 31], "excluded_lines": [], "start_line": 22}, "manual_recruit_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42, 44, 45, 47, 54, 55, 57, 60, 61, 69, 74, 75], "excluded_lines": [], "start_line": 35}, "set_radio_mode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [86, 89, 90, 92], "excluded_lines": [], "start_line": 79}, "set_radio_speedup": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [104, 107, 108, 111, 112, 114, 115, 118, 119, 121, 122, 124], "excluded_lines": [], "start_line": 96}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 34, 35, 78, 79, 95, 96], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 34, 35, 78, 79, 95, 96], "summary": {"covered_lines": 21, "num_statements": 52, "percent_covered": 40.38461538461539, "percent_covered_display": "40.38", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 40.38461538461539, "percent_statements_covered_display": "40.38"}, "missing_lines": [28, 30, 31, 42, 44, 45, 47, 54, 55, 57, 60, 61, 69, 74, 75, 86, 89, 90, 92, 104, 107, 108, 111, 112, 114, 115, 118, 119, 121, 122, 124], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\relationship.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 17, 19, 22, 23, 37, 38, 58, 59, 75, 76, 108, 109, 141, 142, 172, 173, 199, 200, 218, 219], "summary": {"covered_lines": 28, "num_statements": 95, "percent_covered": 29.473684210526315, "percent_covered_display": "29.47", "missing_lines": 67, "excluded_lines": 0, "percent_statements_covered": 29.473684210526315, "percent_statements_covered_display": "29.47"}, "missing_lines": [29, 32, 34, 44, 45, 47, 48, 49, 50, 53, 55, 66, 67, 70, 82, 84, 87, 88, 89, 91, 92, 95, 98, 99, 104, 105, 115, 117, 120, 121, 122, 124, 125, 128, 131, 132, 137, 138, 148, 150, 153, 154, 155, 157, 158, 161, 164, 165, 166, 167, 169, 188, 191, 192, 193, 194, 196, 208, 209, 212, 213, 214, 215, 232, 234, 237, 239], "excluded_lines": [], "functions": {"get_vault_relationships": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [29, 32, 34], "excluded_lines": [], "start_line": 23}, "get_relationship": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [44, 45, 47, 48, 49, 50, 53, 55], "excluded_lines": [], "start_line": 38}, "create_relationship": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [66, 67, 70], "excluded_lines": [], "start_line": 59}, "initiate_romance": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [82, 84, 87, 88, 89, 91, 92, 95, 98, 99, 104, 105], "excluded_lines": [], "start_line": 76}, "make_partners": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [115, 117, 120, 121, 122, 124, 125, 128, 131, 132, 137, 138], "excluded_lines": [], "start_line": 109}, "break_up_relationship": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [148, 150, 153, 154, 155, 157, 158, 161, 164, 165, 166, 167, 169], "excluded_lines": [], "start_line": 142}, "quick_pair_dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [188, 191, 192, 193, 194, 196], "excluded_lines": [], "start_line": 173}, "calculate_compatibility": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [208, 209, 212, 213, 214, 215], "excluded_lines": [], "start_line": 200}, "process_vault_breeding": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [232, 234, 237, 239], "excluded_lines": [], "start_line": 219}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 17, 19, 22, 23, 37, 38, 58, 59, 75, 76, 108, 109, 141, 142, 172, 173, 199, 200, 218, 219], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 17, 19, 22, 23, 37, 38, 58, 59, 75, 76, 108, 109, 141, 142, 172, 173, 199, 200, 218, 219], "summary": {"covered_lines": 28, "num_statements": 95, "percent_covered": 29.473684210526315, "percent_covered_display": "29.47", "missing_lines": 67, "excluded_lines": 0, "percent_statements_covered": 29.473684210526315, "percent_statements_covered_display": "29.47"}, "missing_lines": [29, 32, 34, 44, 45, 47, 48, 49, 50, 53, 55, 66, 67, 70, 82, 84, 87, 88, 89, 91, 92, 95, 98, 99, 104, 105, 115, 117, 120, 121, 122, 124, 125, 128, 131, 132, 137, 138, 148, 150, 153, 154, 155, 157, 158, 161, 164, 165, 166, 167, 169, 188, 191, 192, 193, 194, 196, 208, 209, 212, 213, 214, 215, 232, 234, 237, 239], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\room.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 28, 29, 40, 41, 48, 49, 59, 60, 67, 68, 72, 73, 80, 81, 88, 89], "summary": {"covered_lines": 30, "num_statements": 54, "percent_covered": 55.55555555555556, "percent_covered_display": "55.56", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 55.55555555555556, "percent_statements_covered_display": "55.56"}, "missing_lines": [18, 25, 36, 37, 44, 45, 55, 56, 63, 64, 69, 76, 77, 84, 85, 92, 94, 96, 97, 98, 99, 100, 101, 102], "excluded_lines": [], "functions": {"create_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [18], "excluded_lines": [], "start_line": 17}, "read_room_list": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [25], "excluded_lines": [], "start_line": 22}, "read_rooms_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36, 37], "excluded_lines": [], "start_line": 29}, "read_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [44, 45], "excluded_lines": [], "start_line": 41}, "update_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [55, 56], "excluded_lines": [], "start_line": 49}, "delete_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [63, 64], "excluded_lines": [], "start_line": 60}, "read_room_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [69], "excluded_lines": [], "start_line": 68}, "build_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [76, 77], "excluded_lines": [], "start_line": 73}, "destroy_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [84, 85], "excluded_lines": [], "start_line": 81}, "upgrade_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [92, 94, 96, 97, 98, 99, 100, 101, 102], "excluded_lines": [], "start_line": 89}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 28, 29, 40, 41, 48, 49, 59, 60, 67, 68, 72, 73, 80, 81, 88, 89], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 28, 29, 40, 41, 48, 49, 59, 60, 67, 68, 72, 73, 80, 81, 88, 89], "summary": {"covered_lines": 30, "num_statements": 54, "percent_covered": 55.55555555555556, "percent_covered_display": "55.56", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 55.55555555555556, "percent_statements_covered_display": "55.56"}, "missing_lines": [18, 25, 36, 37, 44, 45, 55, 56, 63, 64, 69, 76, 77, 84, 85, 92, 94, 96, 97, 98, 99, 100, 101, 102], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\settings.py": {"executed_lines": [3, 5, 7, 8, 10, 13, 14], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50"}, "missing_lines": [24], "excluded_lines": [], "functions": {"get_game_balance_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24], "excluded_lines": [], "start_line": 14}, "": {"executed_lines": [3, 5, 7, 8, 10, 13, 14], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 7, 8, 10, 13, 14], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50"}, "missing_lines": [24], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\training.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 70, 71, 97, 98, 119, 120, 155, 156, 191, 192], "summary": {"covered_lines": 25, "num_statements": 70, "percent_covered": 35.714285714285715, "percent_covered_display": "35.71", "missing_lines": 45, "excluded_lines": 0, "percent_statements_covered": 35.714285714285715, "percent_statements_covered_display": "35.71"}, "missing_lines": [46, 47, 48, 50, 53, 54, 55, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67, 88, 89, 90, 92, 94, 114, 116, 136, 137, 138, 141, 144, 147, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 209, 210, 211, 213, 215], "excluded_lines": [], "functions": {"start_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [46, 47, 48, 50, 53, 54, 55, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67], "excluded_lines": [], "start_line": 22}, "get_dweller_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [88, 89, 90, 92, 94], "excluded_lines": [], "start_line": 71}, "list_vault_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [114, 116], "excluded_lines": [], "start_line": 98}, "get_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [136, 137, 138, 141, 144, 147], "excluded_lines": [], "start_line": 120}, "cancel_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [176, 177, 178, 181, 183, 184, 185, 186, 187, 188], "excluded_lines": [], "start_line": 156}, "list_room_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [209, 210, 211, 213, 215], "excluded_lines": [], "start_line": 192}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 70, 71, 97, 98, 119, 120, 155, 156, 191, 192], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 70, 71, 97, 98, 119, 120, 155, 156, 191, 192], "summary": {"covered_lines": 25, "num_statements": 70, "percent_covered": 35.714285714285715, "percent_covered_display": "35.71", "missing_lines": 45, "excluded_lines": 0, "percent_statements_covered": 35.714285714285715, "percent_statements_covered_display": "35.71"}, "missing_lines": [46, 47, 48, 50, 53, 54, 55, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67, 88, 89, 90, 92, 94, 114, 116, 136, 137, 138, 141, 144, 147, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 209, 210, 211, 213, 215], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\user.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 20, 21, 40, 41, 54, 55, 77, 78, 85, 86, 141, 142, 162, 163], "summary": {"covered_lines": 28, "num_statements": 72, "percent_covered": 38.888888888888886, "percent_covered_display": "38.89", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 38.888888888888886, "percent_statements_covered_display": "38.89"}, "missing_lines": [30, 31, 32, 37, 51, 66, 67, 68, 69, 70, 71, 72, 73, 74, 82, 97, 98, 102, 103, 104, 108, 109, 112, 113, 114, 115, 118, 119, 124, 126, 128, 130, 131, 133, 151, 152, 153, 154, 155, 159, 173, 174, 175, 179], "excluded_lines": [], "functions": {"create_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [30, 31, 32, 37], "excluded_lines": [], "start_line": 21}, "read_users": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [51], "excluded_lines": [], "start_line": 41}, "update_user_me": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [66, 67, 68, 69, 70, 71, 72, 73, 74], "excluded_lines": [], "start_line": 55}, "read_user_me": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [82], "excluded_lines": [], "start_line": 78}, "create_user_open": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [97, 98, 102, 103, 104, 108, 109, 112, 113, 114, 115, 118, 119, 124, 126, 128, 130, 131, 133], "excluded_lines": [], "start_line": 86}, "read_user_by_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [151, 152, 153, 154, 155, 159], "excluded_lines": [], "start_line": 142}, "update_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [173, 174, 175, 179], "excluded_lines": [], "start_line": 163}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 20, 21, 40, 41, 54, 55, 77, 78, 85, 86, 141, 142, 162, 163], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 20, 21, 40, 41, 54, 55, 77, 78, 85, 86, 141, 142, 162, 163], "summary": {"covered_lines": 28, "num_statements": 72, "percent_covered": 38.888888888888886, "percent_covered_display": "38.89", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 38.888888888888886, "percent_statements_covered_display": "38.89"}, "missing_lines": [30, 31, 32, 37, 51, 66, 67, 68, 69, 70, 71, 72, 73, 74, 82, 97, 98, 102, 103, 104, 108, 109, 112, 113, 114, 115, 118, 119, 124, 126, 128, 130, 131, 133, 151, 152, 153, 154, 155, 159, 173, 174, 175, 179], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\vault.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 17, 18, 27, 28, 38, 39, 47, 48, 65, 66, 79, 80, 92, 93, 102, 103, 114, 115], "summary": {"covered_lines": 29, "num_statements": 49, "percent_covered": 59.183673469387756, "percent_covered_display": "59.18", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 59.183673469387756, "percent_statements_covered_display": "59.18"}, "missing_lines": [24, 35, 44, 54, 55, 56, 59, 60, 62, 73, 74, 75, 76, 86, 87, 88, 89, 99, 109, 121], "excluded_lines": [], "functions": {"create_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24], "excluded_lines": [], "start_line": 18}, "read_vault_list": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [35], "excluded_lines": [], "start_line": 28}, "read_my_vaults": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [44], "excluded_lines": [], "start_line": 39}, "read_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [54, 55, 56, 59, 60, 62], "excluded_lines": [], "start_line": 48}, "update_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [73, 74, 75, 76], "excluded_lines": [], "start_line": 66}, "delete_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [86, 87, 88, 89], "excluded_lines": [], "start_line": 80}, "toggle_game_state": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [99], "excluded_lines": [], "start_line": 93}, "start_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [109], "excluded_lines": [], "start_line": 103}, "update_vault_resources": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [121], "excluded_lines": [], "start_line": 115}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 17, 18, 27, 28, 38, 39, 47, 48, 65, 66, 79, 80, 92, 93, 102, 103, 114, 115], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 17, 18, 27, 28, 38, 39, 47, 48, 65, 66, 79, 80, 92, 93, 102, 103, 114, 115], "summary": {"covered_lines": 29, "num_statements": 49, "percent_covered": 59.183673469387756, "percent_covered_display": "59.18", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 59.183673469387756, "percent_statements_covered_display": "59.18"}, "missing_lines": [24, 35, 44, 54, 55, 56, 59, 60, 62, 73, 74, 75, 76, 86, 87, 88, 89, 99, 109, 121], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\weapon.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 28, 29, 33, 34, 42, 43, 47, 48, 54, 55, 59, 60, 64, 65, 69, 70], "summary": {"covered_lines": 30, "num_statements": 40, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [18, 25, 30, 39, 44, 51, 56, 61, 66, 71], "excluded_lines": [], "functions": {"create_weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [18], "excluded_lines": [], "start_line": 17}, "read_weapon_list": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [25], "excluded_lines": [], "start_line": 22}, "read_weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [30], "excluded_lines": [], "start_line": 29}, "update_weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [39], "excluded_lines": [], "start_line": 34}, "delete_weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [44], "excluded_lines": [], "start_line": 43}, "equip_weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [51], "excluded_lines": [], "start_line": 48}, "unequip_weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [56], "excluded_lines": [], "start_line": 55}, "scrap_weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [61], "excluded_lines": [], "start_line": 60}, "sell_weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [66], "excluded_lines": [], "start_line": 65}, "read_weapons_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [71], "excluded_lines": [], "start_line": 70}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 28, 29, 33, 34, 42, 43, 47, 48, 54, 55, 59, 60, 64, 65, 69, 70], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 28, 29, 33, 34, 42, 43, 47, 48, 54, 55, 59, 60, 64, 65, 69, 70], "summary": {"covered_lines": 30, "num_statements": 40, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [18, 25, 30, 39, 44, 51, 56, 61, 66, 71], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\websocket.py": {"executed_lines": [1, 2, 4, 5, 7, 9, 10, 13, 14, 45, 46], "summary": {"covered_lines": 11, "num_statements": 34, "percent_covered": 32.35294117647059, "percent_covered_display": "32.35", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 32.35294117647059, "percent_statements_covered_display": "32.35"}, "missing_lines": [35, 37, 39, 40, 42, 79, 80, 83, 84, 85, 86, 88, 89, 91, 93, 94, 98, 102, 107, 109, 110, 112, 113], "excluded_lines": [], "functions": {"websocket_endpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [35, 37, 39, 40, 42], "excluded_lines": [], "start_line": 14}, "chat_websocket_endpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [79, 80, 83, 84, 85, 86, 88, 89, 91, 93, 94, 98, 102, 107, 109, 110, 112, 113], "excluded_lines": [], "start_line": 46}, "": {"executed_lines": [1, 2, 4, 5, 7, 9, 10, 13, 14, 45, 46], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 7, 9, 10, 13, 14, 45, 46], "summary": {"covered_lines": 11, "num_statements": 34, "percent_covered": 32.35294117647059, "percent_covered_display": "32.35", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 32.35294117647059, "percent_statements_covered_display": "32.35"}, "missing_lines": [35, 37, 39, 40, 42, 79, 80, 83, 84, 85, 86, 88, 89, 91, 93, 94, 98, 102, 107, 109, 110, 112, 113], "excluded_lines": [], "start_line": 1}}}, "app\\cli\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\cli\\app\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\cli\\app\\manage.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 2, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 5, 8, 10, 11, 12, 13, 15, 18, 20, 21, 22, 25, 26, 30, 44, 47, 65, 68, 78, 81, 82, 84, 106, 109, 114, 116], "excluded_lines": [119, 120], "functions": {"create_file_with_boilerplate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [10, 11, 12, 13, 15], "excluded_lines": [], "start_line": 8}, "append_to_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20, 21, 22], "excluded_lines": [], "start_line": 18}, "startapp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [30, 44, 47, 65, 68, 78, 81, 82, 84, 106, 109, 114, 116], "excluded_lines": [], "start_line": 26}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 2, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 5, 8, 18, 25, 26], "excluded_lines": [119, 120], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 2, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 5, 8, 10, 11, 12, 13, 15, 18, 20, 21, 22, 25, 26, 30, 44, 47, 65, 68, 78, 81, 82, 84, 106, 109, 114, 116], "excluded_lines": [119, 120], "start_line": 1}}}, "app\\cli\\migrations\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\cli\\migrations\\cli.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 44, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 15, 16, 24, 25, 27, 29, 31, 37, 38, 41, 42, 43, 44, 45, 46, 49, 50, 63, 64, 78, 79, 81, 83, 86, 95, 96, 105, 106, 114, 115, 118, 119, 127, 128], "excluded_lines": [], "functions": {"init": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24, 25, 27, 29, 31, 37, 38, 41, 42, 43, 44, 45, 46], "excluded_lines": [], "start_line": 16}, "revision": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [63, 64], "excluded_lines": [], "start_line": 50}, "show": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [81, 83], "excluded_lines": [], "start_line": 79}, "merge": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [95, 96], "excluded_lines": [], "start_line": 86}, "upgrade": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [114, 115], "excluded_lines": [], "start_line": 106}, "downgrade": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [127, 128], "excluded_lines": [], "start_line": 119}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 15, 16, 49, 50, 78, 79, 86, 105, 106, 118, 119], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 44, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 15, 16, 24, 25, 27, 29, 31, 37, 38, 41, 42, 43, 44, 45, 46, 49, 50, 63, 64, 78, 79, 81, 83, 86, 95, 96, 105, 106, 114, 115, 118, 119, 127, 128], "excluded_lines": [], "start_line": 1}}}, "app\\core\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\core\\celery.py": {"executed_lines": [1, 3, 4, 7, 8, 10, 12, 19, 22, 30, 32], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 7, 8, 10, 12, 19, 22, 30, 32], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 7, 8, 10, 12, 19, 22, 30, 32], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\core\\config.py": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 53, 54, 65, 66, 73, 74, 75, 76, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 107, 109, 110, 111, 112, 121, 123, 124, 125, 127, 130, 132, 133, 134, 135, 144, 146, 147, 148, 149, 158, 161], "summary": {"covered_lines": 90, "num_statements": 98, "percent_covered": 91.83673469387755, "percent_covered_display": "91.84", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 91.83673469387755, "percent_statements_covered_display": "91.84"}, "missing_lines": [56, 68, 69, 71, 119, 128, 142, 156], "excluded_lines": [], "functions": {"Settings.minio_enabled": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [56], "excluded_lines": [], "start_line": 54}, "Settings.minio_public_base_url": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [68, 69, 71], "excluded_lines": [], "start_line": 66}, "Settings.redis_url": {"executed_lines": [107], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 106}, "Settings.assemble_db_connection": {"executed_lines": [111, 112], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [119], "excluded_lines": [], "start_line": 110}, "Settings.assemble_celery_db_connection": {"executed_lines": [125, 127], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [128], "excluded_lines": [], "start_line": 124}, "Settings.assemble_celery_beat_db_connection": {"executed_lines": [134, 135], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [142], "excluded_lines": [], "start_line": 133}, "Settings.assemble_async_celery_beat_db_connection": {"executed_lines": [148, 149], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [156], "excluded_lines": [], "start_line": 147}, "": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 53, 54, 65, 66, 73, 74, 75, 76, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 109, 110, 121, 123, 124, 130, 132, 133, 144, 146, 147, 158, 161], "summary": {"covered_lines": 81, "num_statements": 81, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"Settings": {"executed_lines": [107, 111, 112, 125, 127, 134, 135, 148, 149], "summary": {"covered_lines": 9, "num_statements": 17, "percent_covered": 52.94117647058823, "percent_covered_display": "52.94", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 52.94117647058823, "percent_statements_covered_display": "52.94"}, "missing_lines": [56, 68, 69, 71, 119, 128, 142, 156], "excluded_lines": [], "start_line": 8}, "": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 53, 54, 65, 66, 73, 74, 75, 76, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 109, 110, 121, 123, 124, 130, 132, 133, 144, 146, 147, 158, 161], "summary": {"covered_lines": 81, "num_statements": 81, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\core\\email.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 11, 14, 15, 21, 62, 70, 92, 115], "summary": {"covered_lines": 15, "num_statements": 45, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [30, 31, 32, 33, 36, 37, 39, 41, 46, 47, 48, 50, 51, 52, 53, 55, 56, 57, 58, 59, 66, 67, 74, 76, 85, 96, 98, 108, 119, 128], "excluded_lines": [], "functions": {"send_email": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 20, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [30, 31, 32, 33, 36, 37, 39, 41, 46, 47, 48, 50, 51, 52, 53, 55, 56, 57, 58, 59], "excluded_lines": [], "start_line": 21}, "render_email_template": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [66, 67], "excluded_lines": [], "start_line": 62}, "send_verification_email": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [74, 76, 85], "excluded_lines": [], "start_line": 70}, "send_password_reset_email": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [96, 98, 108], "excluded_lines": [], "start_line": 92}, "send_password_changed_email": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [119, 128], "excluded_lines": [], "start_line": 115}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 11, 14, 15, 21, 62, 70, 92, 115], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 11, 14, 15, 21, 62, 70, 92, 115], "summary": {"covered_lines": 15, "num_statements": 45, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [30, 31, 32, 33, 36, 37, 39, 41, 46, 47, 48, 50, 51, 52, 53, 55, 56, 57, 58, 59, 66, 67, 74, 76, 85, 96, 98, 108, 119, 128], "excluded_lines": [], "start_line": 1}}}, "app\\core\\game_config.py": {"executed_lines": [14, 16, 17, 19, 21, 24, 27, 29, 35, 43, 46, 48, 54, 59, 64, 70, 76, 84, 85, 86, 87, 88, 89, 92, 93, 94, 95, 96, 97, 99, 111, 122, 123, 132, 135, 137, 138, 139, 140, 141, 144, 145, 146, 147, 150, 151, 152, 155, 156, 159, 162, 164, 165, 166, 167, 170, 173, 176, 177, 178, 179, 180, 183, 184, 185, 188, 189, 190, 193, 194, 197, 198, 201, 202, 205, 208, 210, 211, 214, 215, 216, 219, 220, 222, 232, 235, 238, 239, 240, 241, 244, 245, 246, 249, 250, 252, 262, 265, 267, 268, 269, 272, 273, 274, 275, 277, 278, 279, 281, 287, 288, 290, 293, 296, 298, 304, 305, 306, 314, 315, 316, 324, 327, 330, 331, 333, 334, 337, 338, 339, 340, 341, 343, 344, 347, 350, 352, 357, 358, 359, 362, 363, 364, 366, 368, 378, 381, 384, 385, 388, 389, 390, 391, 394, 395, 397, 398, 400, 403, 404, 405, 408, 409, 410, 413, 414, 415, 418, 419, 420, 421, 424, 425, 428, 431, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 449, 452, 453, 454, 455, 456, 457], "summary": {"covered_lines": 194, "num_statements": 205, "percent_covered": 94.63414634146342, "percent_covered_display": "94.63", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 94.63414634146342, "percent_statements_covered_display": "94.63"}, "missing_lines": [101, 109, 113, 125, 224, 229, 254, 259, 289, 370, 375], "excluded_lines": [], "functions": {"IncidentConfig.get_difficulty_range": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [101, 109], "excluded_lines": [], "start_line": 99}, "IncidentConfig.get_spawn_weights": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [113], "excluded_lines": [], "start_line": 111}, "IncidentConfig.vault_door_incidents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [125], "excluded_lines": [], "start_line": 123}, "TrainingConfig.get_tier_multiplier": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [224, 229], "excluded_lines": [], "start_line": 222}, "ResourceConfig.get_tier_multiplier": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [254, 259], "excluded_lines": [], "start_line": 252}, "RelationshipConfig.validate_weights_sum": {"executed_lines": [281, 287, 288, 290], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [289], "excluded_lines": [], "start_line": 279}, "RadioConfig.get_tier_multiplier": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [370, 375], "excluded_lines": [], "start_line": 368}, "": {"executed_lines": [14, 16, 17, 19, 21, 24, 27, 29, 35, 43, 46, 48, 54, 59, 64, 70, 76, 84, 85, 86, 87, 88, 89, 92, 93, 94, 95, 96, 97, 99, 111, 122, 123, 132, 135, 137, 138, 139, 140, 141, 144, 145, 146, 147, 150, 151, 152, 155, 156, 159, 162, 164, 165, 166, 167, 170, 173, 176, 177, 178, 179, 180, 183, 184, 185, 188, 189, 190, 193, 194, 197, 198, 201, 202, 205, 208, 210, 211, 214, 215, 216, 219, 220, 222, 232, 235, 238, 239, 240, 241, 244, 245, 246, 249, 250, 252, 262, 265, 267, 268, 269, 272, 273, 274, 275, 277, 278, 279, 293, 296, 298, 304, 305, 306, 314, 315, 316, 324, 327, 330, 331, 333, 334, 337, 338, 339, 340, 341, 343, 344, 347, 350, 352, 357, 358, 359, 362, 363, 364, 366, 368, 378, 381, 384, 385, 388, 389, 390, 391, 394, 395, 397, 398, 400, 403, 404, 405, 408, 409, 410, 413, 414, 415, 418, 419, 420, 421, 424, 425, 428, 431, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 449, 452, 453, 454, 455, 456, 457], "summary": {"covered_lines": 190, "num_statements": 190, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"GameLoopConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "IncidentConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [101, 109, 113, 125], "excluded_lines": [], "start_line": 43}, "CombatConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 132}, "HealthConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 159}, "HappinessConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 170}, "TrainingConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [224, 229], "excluded_lines": [], "start_line": 205}, "ResourceConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [254, 259], "excluded_lines": [], "start_line": 232}, "RelationshipConfig": {"executed_lines": [281, 287, 288, 290], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [289], "excluded_lines": [], "start_line": 262}, "BreedingConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 293}, "LevelingConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 324}, "RadioConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [370, 375], "excluded_lines": [], "start_line": 347}, "ExplorationConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 378}, "GameConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 428}, "": {"executed_lines": [14, 16, 17, 19, 21, 24, 27, 29, 35, 43, 46, 48, 54, 59, 64, 70, 76, 84, 85, 86, 87, 88, 89, 92, 93, 94, 95, 96, 97, 99, 111, 122, 123, 132, 135, 137, 138, 139, 140, 141, 144, 145, 146, 147, 150, 151, 152, 155, 156, 159, 162, 164, 165, 166, 167, 170, 173, 176, 177, 178, 179, 180, 183, 184, 185, 188, 189, 190, 193, 194, 197, 198, 201, 202, 205, 208, 210, 211, 214, 215, 216, 219, 220, 222, 232, 235, 238, 239, 240, 241, 244, 245, 246, 249, 250, 252, 262, 265, 267, 268, 269, 272, 273, 274, 275, 277, 278, 279, 293, 296, 298, 304, 305, 306, 314, 315, 316, 324, 327, 330, 331, 333, 334, 337, 338, 339, 340, 341, 343, 344, 347, 350, 352, 357, 358, 359, 362, 363, 364, 366, 368, 378, 381, 384, 385, 388, 389, 390, 391, 394, 395, 397, 398, 400, 403, 404, 405, 408, 409, 410, 413, 414, 415, 418, 419, 420, 421, 424, 425, 428, 431, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 449, 452, 453, 454, 455, 456, 457], "summary": {"covered_lines": 190, "num_statements": 190, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\core\\logging.py": {"executed_lines": [3, 4, 5, 6, 8, 11, 14, 17, 18, 19, 22, 25, 50, 64, 65, 68, 71, 72, 75, 76, 79, 84, 88, 89, 92, 100, 101, 102, 103, 106, 119, 121, 124], "summary": {"covered_lines": 33, "num_statements": 52, "percent_covered": 63.46153846153846, "percent_covered_display": "63.46", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 63.46153846153846, "percent_statements_covered_display": "63.46"}, "missing_lines": [31, 34, 35, 36, 37, 38, 41, 42, 43, 46, 47, 81, 93, 94, 95, 96, 97, 116, 126], "excluded_lines": [], "functions": {"RequestIdFilter.filter": {"executed_lines": [18, 19], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "CustomJsonFormatter.add_fields": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 34, 35, 36, 37, 38, 41, 42, 43, 46, 47], "excluded_lines": [], "start_line": 25}, "setup_logging": {"executed_lines": [64, 65, 68, 71, 72, 75, 76, 79, 84, 88, 89, 92, 100, 101, 102, 103], "summary": {"covered_lines": 16, "num_statements": 22, "percent_covered": 72.72727272727273, "percent_covered_display": "72.73", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 72.72727272727273, "percent_statements_covered_display": "72.73"}, "missing_lines": [81, 93, 94, 95, 96, 97], "excluded_lines": [], "start_line": 50}, "get_logger": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [116], "excluded_lines": [], "start_line": 106}, "set_request_id": {"executed_lines": [121], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 119}, "get_request_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [126], "excluded_lines": [], "start_line": 124}, "": {"executed_lines": [3, 4, 5, 6, 8, 11, 14, 17, 22, 25, 50, 106, 119, 124], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RequestIdFilter": {"executed_lines": [18, 19], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "CustomJsonFormatter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 34, 35, 36, 37, 38, 41, 42, 43, 46, 47], "excluded_lines": [], "start_line": 22}, "": {"executed_lines": [3, 4, 5, 6, 8, 11, 14, 17, 22, 25, 50, 64, 65, 68, 71, 72, 75, 76, 79, 84, 88, 89, 92, 100, 101, 102, 103, 106, 119, 121, 124], "summary": {"covered_lines": 31, "num_statements": 39, "percent_covered": 79.48717948717949, "percent_covered_display": "79.49", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 79.48717948717949, "percent_statements_covered_display": "79.49"}, "missing_lines": [81, 93, 94, 95, 96, 97, 116, 126], "excluded_lines": [], "start_line": 1}}}, "app\\core\\security.py": {"executed_lines": [1, 2, 3, 5, 6, 7, 9, 11, 13, 16, 20, 21, 26, 27, 30, 31, 34, 35, 38, 43, 44, 48, 49, 51, 55, 60, 74, 79, 88, 101, 110], "summary": {"covered_lines": 31, "num_statements": 65, "percent_covered": 47.69230769230769, "percent_covered_display": "47.69", "missing_lines": 34, "excluded_lines": 0, "percent_statements_covered": 47.69230769230769, "percent_statements_covered_display": "47.69"}, "missing_lines": [23, 46, 57, 61, 62, 63, 65, 66, 67, 68, 69, 71, 75, 76, 83, 84, 85, 92, 93, 94, 95, 96, 97, 98, 105, 106, 107, 114, 115, 116, 117, 118, 119, 120], "excluded_lines": [], "functions": {"create_access_token": {"executed_lines": [20, 21, 26, 27], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [23], "excluded_lines": [], "start_line": 16}, "verify_password": {"executed_lines": [31], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "get_password_hash": {"executed_lines": [35], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "create_refresh_token": {"executed_lines": [43, 44, 48, 49, 51, 55], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [46, 57], "excluded_lines": [], "start_line": 38}, "verify_refresh_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [61, 62, 63, 65, 66, 67, 68, 69, 71], "excluded_lines": [], "start_line": 60}, "invalidate_refresh_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [75, 76], "excluded_lines": [], "start_line": 74}, "create_email_verification_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [83, 84, 85], "excluded_lines": [], "start_line": 79}, "verify_email_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [92, 93, 94, 95, 96, 97, 98], "excluded_lines": [], "start_line": 88}, "create_password_reset_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [105, 106, 107], "excluded_lines": [], "start_line": 101}, "verify_password_reset_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [114, 115, 116, 117, 118, 119, 120], "excluded_lines": [], "start_line": 110}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 9, 11, 13, 16, 30, 34, 38, 60, 74, 79, 88, 101, 110], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 5, 6, 7, 9, 11, 13, 16, 20, 21, 26, 27, 30, 31, 34, 35, 38, 43, 44, 48, 49, 51, 55, 60, 74, 79, 88, 101, 110], "summary": {"covered_lines": 31, "num_statements": 65, "percent_covered": 47.69230769230769, "percent_covered_display": "47.69", "missing_lines": 34, "excluded_lines": 0, "percent_statements_covered": 47.69230769230769, "percent_statements_covered_display": "47.69"}, "missing_lines": [23, 46, 57, 61, 62, 63, 65, 66, 67, 68, 69, 71, 75, 76, 83, 84, 85, 92, 93, 94, 95, 96, 97, 98, 105, 106, 107, 114, 115, 116, 117, 118, 119, 120], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\__init__.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\base.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 12, 13, 14, 17, 24, 25, 27, 43, 56, 66, 82, 101, 119, 144, 173, 185], "summary": {"covered_lines": 24, "num_statements": 87, "percent_covered": 27.586206896551722, "percent_covered_display": "27.59", "missing_lines": 63, "excluded_lines": 0, "percent_statements_covered": 27.586206896551722, "percent_statements_covered_display": "27.59"}, "missing_lines": [36, 37, 38, 39, 40, 41, 53, 54, 63, 64, 78, 79, 80, 91, 92, 93, 94, 95, 96, 97, 98, 99, 110, 111, 112, 113, 114, 115, 116, 117, 133, 134, 136, 137, 139, 140, 141, 142, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 166, 167, 169, 170, 171, 181, 182, 183, 197, 198, 199, 200, 201, 202, 203], "excluded_lines": [], "functions": {"CRUDBase.__init__": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "CRUDBase.get": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36, 37, 38, 39, 40, 41], "excluded_lines": [], "start_line": 27}, "CRUDBase.get_by_ids": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [53, 54], "excluded_lines": [], "start_line": 43}, "CRUDBase.get_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [63, 64], "excluded_lines": [], "start_line": 56}, "CRUDBase.get_multi": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [78, 79, 80], "excluded_lines": [], "start_line": 66}, "CRUDBase.create": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [91, 92, 93, 94, 95, 96, 97, 98, 99], "excluded_lines": [], "start_line": 82}, "CRUDBase.create_all": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [110, 111, 112, 113, 114, 115, 116, 117], "excluded_lines": [], "start_line": 101}, "CRUDBase.update": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [133, 134, 136, 137, 139, 140, 141, 142], "excluded_lines": [], "start_line": 119}, "CRUDBase.upsert": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 166, 167, 169, 170, 171], "excluded_lines": [], "start_line": 144}, "CRUDBase.exists": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [181, 182, 183], "excluded_lines": [], "start_line": 173}, "CRUDBase.delete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [197, 198, 199, 200, 201, 202, 203], "excluded_lines": [], "start_line": 185}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 12, 13, 14, 17, 24, 27, 43, 56, 66, 82, 101, 119, 144, 173, 185], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDBase": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 64, "percent_covered": 1.5625, "percent_covered_display": "1.56", "missing_lines": 63, "excluded_lines": 0, "percent_statements_covered": 1.5625, "percent_statements_covered_display": "1.56"}, "missing_lines": [36, 37, 38, 39, 40, 41, 53, 54, 63, 64, 78, 79, 80, 91, 92, 93, 94, 95, 96, 97, 98, 99, 110, 111, 112, 113, 114, 115, 116, 117, 133, 134, 136, 137, 139, 140, 141, 142, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 166, 167, 169, 170, 171, 181, 182, 183, 197, 198, 199, 200, 201, 202, 203], "excluded_lines": [], "start_line": 17}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 12, 13, 14, 17, 24, 27, 43, 56, 66, 82, 101, 119, 144, 173, 185], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\chat_message.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 63, 74, 84], "summary": {"covered_lines": 10, "num_statements": 22, "percent_covered": 45.45454545454545, "percent_covered_display": "45.45", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 45.45454545454545, "percent_statements_covered_display": "45.45"}, "missing_lines": [26, 27, 28, 42, 43, 58, 60, 61, 65, 71, 72, 81], "excluded_lines": [], "functions": {"CRUDChatMessage.get_conversation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [26, 27, 28, 42, 43, 58, 60, 61], "excluded_lines": [], "start_line": 11}, "CRUDChatMessage.get_recent_conversations": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [65, 71, 72], "excluded_lines": [], "start_line": 63}, "CRUDChatMessage.create_message": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [81], "excluded_lines": [], "start_line": 74}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 63, 74, 84], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDChatMessage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [26, 27, 28, 42, 43, 58, 60, 61, 65, 71, 72, 81], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 63, 74, 84], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\dweller.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 22, 23, 25, 28, 29, 49, 92, 111, 112, 130, 131, 135, 136, 139, 174, 180, 219, 228, 232, 249, 267, 285, 351], "summary": {"covered_lines": 36, "num_statements": 164, "percent_covered": 21.951219512195124, "percent_covered_display": "21.95", "missing_lines": 128, "excluded_lines": 0, "percent_statements_covered": 21.951219512195124, "percent_statements_covered_display": "21.95"}, "missing_lines": [31, 33, 43, 44, 45, 46, 47, 61, 64, 65, 68, 69, 70, 75, 77, 78, 80, 81, 82, 83, 84, 86, 88, 89, 90, 101, 108, 109, 116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 127, 128, 133, 137, 141, 143, 144, 145, 146, 148, 149, 150, 151, 153, 158, 160, 161, 162, 172, 176, 177, 178, 184, 187, 188, 190, 193, 194, 196, 199, 202, 204, 205, 206, 207, 210, 213, 215, 217, 221, 222, 223, 226, 230, 234, 244, 245, 247, 251, 253, 254, 256, 257, 260, 261, 263, 269, 271, 272, 274, 275, 278, 279, 281, 289, 290, 292, 295, 305, 308, 314, 315, 317, 318, 323, 324, 325, 326, 331, 332, 334, 335, 336, 339, 340, 341, 342, 344, 345, 348], "excluded_lines": [], "functions": {"CRUDDweller.get": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 33, 43, 44, 45, 46, 47], "excluded_lines": [], "start_line": 29}, "CRUDDweller.get_multi_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [61, 64, 65, 68, 69, 70, 75, 77, 78, 80, 81, 82, 83, 84, 86, 88, 89, 90], "excluded_lines": [], "start_line": 49}, "CRUDDweller.get_by_status": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [101, 108, 109], "excluded_lines": [], "start_line": 92}, "CRUDDweller.create_random": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 127, 128], "excluded_lines": [], "start_line": 112}, "CRUDDweller.calculate_experience_required": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [133], "excluded_lines": [], "start_line": 131}, "CRUDDweller.is_alive": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [137], "excluded_lines": [], "start_line": 136}, "CRUDDweller.add_experience": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [141, 143, 144, 145, 146, 148, 149, 150, 151, 153, 158, 160, 161, 162, 172], "excluded_lines": [], "start_line": 139}, "CRUDDweller.get_dweller_by_name": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [176, 177, 178], "excluded_lines": [], "start_line": 174}, "CRUDDweller.move_to_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [184, 187, 188, 190, 193, 194, 196, 199, 202, 204, 205, 206, 207, 210, 213, 215, 217], "excluded_lines": [], "start_line": 180}, "CRUDDweller.reanimate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [221, 222, 223, 226], "excluded_lines": [], "start_line": 219}, "CRUDDweller.mark_as_dead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [230], "excluded_lines": [], "start_line": 228}, "CRUDDweller.get_full_info": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [234, 244, 245, 247], "excluded_lines": [], "start_line": 232}, "CRUDDweller.use_stimpack": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [251, 253, 254, 256, 257, 260, 261, 263], "excluded_lines": [], "start_line": 249}, "CRUDDweller.use_radaway": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [269, 271, 272, 274, 275, 278, 279, 281], "excluded_lines": [], "start_line": 267}, "CRUDDweller.auto_assign_to_best_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 26, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [289, 290, 292, 295, 305, 308, 314, 315, 317, 318, 323, 324, 325, 326, 331, 332, 334, 335, 336, 339, 340, 341, 342, 344, 345, 348], "excluded_lines": [], "start_line": 285}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 22, 23, 25, 28, 29, 49, 92, 111, 112, 130, 131, 135, 136, 139, 174, 180, 219, 228, 232, 249, 267, 285, 351], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDDweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 128, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 128, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 33, 43, 44, 45, 46, 47, 61, 64, 65, 68, 69, 70, 75, 77, 78, 80, 81, 82, 83, 84, 86, 88, 89, 90, 101, 108, 109, 116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 127, 128, 133, 137, 141, 143, 144, 145, 146, 148, 149, 150, 151, 153, 158, 160, 161, 162, 172, 176, 177, 178, 184, 187, 188, 190, 193, 194, 196, 199, 202, 204, 205, 206, 207, 210, 213, 215, 217, 221, 222, 223, 226, 230, 234, 244, 245, 247, 251, 253, 254, 256, 257, 260, 261, 263, 269, 271, 272, 274, 275, 278, 279, 281, 289, 290, 292, 295, 305, 308, 314, 315, 317, 318, 323, 324, 325, 326, 331, 332, 334, 335, 336, 339, 340, 341, 342, 344, 345, 348], "excluded_lines": [], "start_line": 28}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 22, 23, 25, 28, 29, 49, 92, 111, 112, 130, 131, 135, 136, 139, 174, 180, 219, 228, 232, 249, 267, 285, 351], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\exploration.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 15, 18, 66, 80, 94, 102, 116, 130, 147, 164, 188], "summary": {"covered_lines": 19, "num_statements": 72, "percent_covered": 26.38888888888889, "percent_covered_display": "26.39", "missing_lines": 53, "excluded_lines": 0, "percent_statements_covered": 26.38888888888889, "percent_statements_covered_display": "26.39"}, "missing_lines": [31, 32, 34, 41, 53, 56, 57, 58, 60, 62, 63, 64, 73, 78, 87, 92, 99, 100, 109, 110, 111, 112, 113, 114, 123, 124, 125, 126, 127, 128, 140, 141, 142, 143, 144, 145, 157, 158, 159, 160, 161, 162, 174, 175, 176, 177, 178, 179, 180, 182, 183, 184, 185], "excluded_lines": [], "functions": {"CRUDExploration.create_with_dweller_stats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 32, 34, 41, 53, 56, 57, 58, 60, 62, 63, 64], "excluded_lines": [], "start_line": 18}, "CRUDExploration.get_active_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [73, 78], "excluded_lines": [], "start_line": 66}, "CRUDExploration.get_by_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [87, 92], "excluded_lines": [], "start_line": 80}, "CRUDExploration.get_all_active": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [99, 100], "excluded_lines": [], "start_line": 94}, "CRUDExploration.complete_exploration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [109, 110, 111, 112, 113, 114], "excluded_lines": [], "start_line": 102}, "CRUDExploration.recall_exploration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [123, 124, 125, 126, 127, 128], "excluded_lines": [], "start_line": 116}, "CRUDExploration.add_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [140, 141, 142, 143, 144, 145], "excluded_lines": [], "start_line": 130}, "CRUDExploration.add_loot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [157, 158, 159, 160, 161, 162], "excluded_lines": [], "start_line": 147}, "CRUDExploration.update_stats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [174, 175, 176, 177, 178, 179, 180, 182, 183, 184, 185], "excluded_lines": [], "start_line": 164}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 15, 18, 66, 80, 94, 102, 116, 130, 147, 164, 188], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDExploration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 53, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 53, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 32, 34, 41, 53, 56, 57, 58, 60, 62, 63, 64, 73, 78, 87, 92, 99, 100, 109, 110, 111, 112, 113, 114, 123, 124, 125, 126, 127, 128, 140, 141, 142, 143, 144, 145, 157, 158, 159, 160, 161, 162, 174, 175, 176, 177, 178, 179, 180, 182, 183, 184, 185], "excluded_lines": [], "start_line": 15}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 15, 18, 66, 80, 94, 102, 116, 130, 147, 164, 188], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\game_state.py": {"executed_lines": [3, 4, 5, 7, 10, 13, 14, 20, 21, 33, 34, 43, 44, 53, 54, 63, 64, 72], "summary": {"covered_lines": 18, "num_statements": 49, "percent_covered": 36.734693877551024, "percent_covered_display": "36.73", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 36.734693877551024, "percent_statements_covered_display": "36.73"}, "missing_lines": [16, 17, 18, 23, 25, 26, 27, 28, 29, 31, 36, 37, 38, 39, 40, 41, 46, 47, 48, 49, 50, 51, 56, 57, 58, 59, 60, 61, 66, 67, 68], "excluded_lines": [], "functions": {"CRUDGameState.get_by_vault_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [16, 17, 18], "excluded_lines": [], "start_line": 14}, "CRUDGameState.get_or_create": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [23, 25, 26, 27, 28, 29, 31], "excluded_lines": [], "start_line": 21}, "CRUDGameState.pause": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36, 37, 38, 39, 40, 41], "excluded_lines": [], "start_line": 34}, "CRUDGameState.resume": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [46, 47, 48, 49, 50, 51], "excluded_lines": [], "start_line": 44}, "CRUDGameState.update_tick": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [56, 57, 58, 59, 60, 61], "excluded_lines": [], "start_line": 54}, "CRUDGameState.get_all_active": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [66, 67, 68], "excluded_lines": [], "start_line": 64}, "": {"executed_lines": [3, 4, 5, 7, 10, 13, 14, 20, 21, 33, 34, 43, 44, 53, 54, 63, 64, 72], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDGameState": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 31, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [16, 17, 18, 23, 25, 26, 27, 28, 29, 31, 36, 37, 38, 39, 40, 41, 46, 47, 48, 49, 50, 51, 56, 57, 58, 59, 60, 61, 66, 67, 68], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [3, 4, 5, 7, 10, 13, 14, 20, 21, 33, 34, 43, 44, 53, 54, 63, 64, 72], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\incident.py": {"executed_lines": [3, 4, 5, 7, 10, 13, 14, 37, 38, 44, 45, 53, 54, 62, 63, 71, 72, 80, 81, 91, 92, 102, 103, 112, 113, 122, 123, 136], "summary": {"covered_lines": 28, "num_statements": 80, "percent_covered": 35.0, "percent_covered_display": "35.00", "missing_lines": 52, "excluded_lines": 0, "percent_statements_covered": 35.0, "percent_statements_covered_display": "35.00"}, "missing_lines": [24, 32, 33, 34, 35, 40, 41, 42, 47, 50, 51, 56, 59, 60, 65, 68, 69, 74, 77, 78, 83, 84, 85, 86, 87, 88, 89, 94, 95, 96, 97, 98, 99, 100, 105, 106, 107, 110, 115, 116, 117, 118, 119, 120, 125, 126, 127, 128, 129, 130, 131, 132], "excluded_lines": [], "functions": {"CRUDIncident.create": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24, 32, 33, 34, 35], "excluded_lines": [], "start_line": 14}, "CRUDIncident.get": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40, 41, 42], "excluded_lines": [], "start_line": 38}, "CRUDIncident.get_active_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [47, 50, 51], "excluded_lines": [], "start_line": 45}, "CRUDIncident.get_by_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [56, 59, 60], "excluded_lines": [], "start_line": 54}, "CRUDIncident.get_active_incident_types_in_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [65, 68, 69], "excluded_lines": [], "start_line": 63}, "CRUDIncident.get_rooms_with_active_incidents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [74, 77, 78], "excluded_lines": [], "start_line": 72}, "CRUDIncident.resolve": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [83, 84, 85, 86, 87, 88, 89], "excluded_lines": [], "start_line": 81}, "CRUDIncident.spread_to_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [94, 95, 96, 97, 98, 99, 100], "excluded_lines": [], "start_line": 92}, "CRUDIncident.get_spreading_incidents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [105, 106, 107, 110], "excluded_lines": [], "start_line": 103}, "CRUDIncident.remove": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [115, 116, 117, 118, 119, 120], "excluded_lines": [], "start_line": 113}, "CRUDIncident.remove_all_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [125, 126, 127, 128, 129, 130, 131, 132], "excluded_lines": [], "start_line": 123}, "": {"executed_lines": [3, 4, 5, 7, 10, 13, 14, 37, 38, 44, 45, 53, 54, 62, 63, 71, 72, 80, 81, 91, 92, 102, 103, 112, 113, 122, 123, 136], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDIncident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 52, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 52, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24, 32, 33, 34, 35, 40, 41, 42, 47, 50, 51, 56, 59, 60, 65, 68, 69, 74, 77, 78, 83, 84, 85, 86, 87, 88, 89, 94, 95, 96, 97, 98, 99, 100, 105, 106, 107, 110, 115, 116, 117, 118, 119, 120, 125, 126, 127, 128, 129, 130, 131, 132], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [3, 4, 5, 7, 10, 13, 14, 37, 38, 44, 45, 53, 54, 62, 63, 71, 72, 80, 81, 91, 92, 102, 103, 112, 113, 122, 123, 136], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\item_base.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 13, 14, 15, 16, 17, 19, 20, 23, 27, 33, 43, 91, 92, 118, 119, 122, 123, 130, 131, 135, 148, 149, 190, 200, 201, 211], "summary": {"covered_lines": 34, "num_statements": 124, "percent_covered": 27.419354838709676, "percent_covered_display": "27.42", "missing_lines": 90, "excluded_lines": 0, "percent_statements_covered": 27.419354838709676, "percent_statements_covered_display": "27.42"}, "missing_lines": [28, 29, 30, 31, 39, 40, 41, 44, 47, 49, 55, 56, 58, 59, 61, 63, 65, 66, 67, 69, 71, 72, 73, 75, 76, 77, 80, 81, 82, 84, 85, 86, 87, 89, 95, 97, 107, 108, 110, 111, 113, 114, 116, 120, 126, 132, 133, 136, 138, 139, 141, 143, 144, 146, 154, 157, 158, 159, 163, 164, 168, 169, 170, 171, 172, 175, 177, 178, 179, 188, 191, 192, 193, 195, 196, 197, 198, 203, 204, 205, 207, 208, 209, 212, 213, 214, 216, 218, 219, 220], "excluded_lines": [], "functions": {"CRUDItem.create": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [28, 29, 30, 31], "excluded_lines": [], "start_line": 27}, "CRUDItem.update": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [39, 40, 41], "excluded_lines": [], "start_line": 33}, "CRUDItem.equip": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 27, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [44, 47, 49, 55, 56, 58, 59, 61, 63, 65, 66, 67, 69, 71, 72, 73, 75, 76, 77, 80, 81, 82, 84, 85, 86, 87, 89], "excluded_lines": [], "start_line": 43}, "CRUDItem._fetch_unequip_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [95, 97, 107, 108, 110, 111, 113, 114, 116], "excluded_lines": [], "start_line": 92}, "CRUDItem._get_item_model": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [120], "excluded_lines": [], "start_line": 119}, "CRUDItem._update_item": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [126], "excluded_lines": [], "start_line": 123}, "CRUDItem._update_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [132, 133], "excluded_lines": [], "start_line": 131}, "CRUDItem.unequip": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [136, 138, 139, 141, 143, 144, 146], "excluded_lines": [], "start_line": 135}, "CRUDItem.convert_to_junk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [154, 157, 158, 159, 163, 164, 168, 169, 170, 171, 172, 175, 177, 178, 179, 188], "excluded_lines": [], "start_line": 149}, "CRUDItem.scrap": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [191, 192, 193, 195, 196, 197, 198], "excluded_lines": [], "start_line": 190}, "CRUDItem.add_caps_to_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [203, 204, 205, 207, 208, 209], "excluded_lines": [], "start_line": 201}, "CRUDItem.sell": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [212, 213, 214, 216, 218, 219, 220], "excluded_lines": [], "start_line": 211}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 13, 14, 15, 16, 17, 19, 20, 23, 27, 33, 43, 91, 92, 118, 119, 122, 123, 130, 131, 135, 148, 149, 190, 200, 201, 211], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDItem": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 90, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 90, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [28, 29, 30, 31, 39, 40, 41, 44, 47, 49, 55, 56, 58, 59, 61, 63, 65, 66, 67, 69, 71, 72, 73, 75, 76, 77, 80, 81, 82, 84, 85, 86, 87, 89, 95, 97, 107, 108, 110, 111, 113, 114, 116, 120, 126, 132, 133, 136, 138, 139, 141, 143, 144, 146, 154, 157, 158, 159, 163, 164, 168, 169, 170, 171, 172, 175, 177, 178, 179, 188, 191, 192, 193, 195, 196, 197, 198, 203, 204, 205, 207, 208, 209, 212, 213, 214, 216, 218, 219, 220], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 13, 14, 15, 16, 17, 19, 20, 23, 27, 33, 43, 91, 92, 118, 119, 122, 123, 130, 131, 135, 148, 149, 190, 200, 201, 211], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\junk.py": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDJunk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 6}, "": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\llm_interaction.py": {"executed_lines": [1, 2, 5, 6, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 5, 6, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDLLMInteraction": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 5}, "": {"executed_lines": [1, 2, 5, 6, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\mixins.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 10, 13, 14, 16, 28, 40, 50], "summary": {"covered_lines": 13, "num_statements": 28, "percent_covered": 46.42857142857143, "percent_covered_display": "46.43", "missing_lines": 15, "excluded_lines": 1, "percent_statements_covered": 46.42857142857143, "percent_statements_covered_display": "46.43"}, "missing_lines": [17, 20, 21, 23, 24, 26, 31, 34, 36, 38, 47, 51, 52, 53, 55], "excluded_lines": [48], "functions": {"CompletionMixin.get_link": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [17, 20, 21, 23, 24, 26], "excluded_lines": [], "start_line": 16}, "CompletionMixin._mark_as_complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 34, 36, 38], "excluded_lines": [], "start_line": 28}, "CompletionMixin._handle_completion_cascade": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 1, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [47], "excluded_lines": [48], "start_line": 40}, "CompletionMixin.complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [51, 52, 53, 55], "excluded_lines": [], "start_line": 50}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 10, 13, 14, 16, 28, 40, 50], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CompletionMixin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 1, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [17, 20, 21, 23, 24, 26, 31, 34, 36, 38, 47, 51, 52, 53, 55], "excluded_lines": [48], "start_line": 13}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 10, 13, 14, 16, 28, 40, 50], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\notification.py": {"executed_lines": [1, 2, 4, 5, 7, 8, 11, 12, 31, 42, 54, 70, 82], "summary": {"covered_lines": 13, "num_statements": 50, "percent_covered": 26.0, "percent_covered_display": "26.00", "missing_lines": 37, "excluded_lines": 0, "percent_statements_covered": 26.0, "percent_statements_covered_display": "26.00"}, "missing_lines": [22, 24, 25, 27, 28, 29, 33, 39, 40, 44, 45, 46, 47, 48, 49, 50, 51, 52, 56, 57, 58, 60, 61, 62, 63, 64, 65, 67, 68, 72, 73, 74, 75, 76, 77, 78, 79], "excluded_lines": [], "functions": {"CRUDNotification.get_user_notifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [22, 24, 25, 27, 28, 29], "excluded_lines": [], "start_line": 12}, "CRUDNotification.get_unread_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [33, 39, 40], "excluded_lines": [], "start_line": 31}, "CRUDNotification.mark_as_read": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [44, 45, 46, 47, 48, 49, 50, 51, 52], "excluded_lines": [], "start_line": 42}, "CRUDNotification.mark_all_as_read": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [56, 57, 58, 60, 61, 62, 63, 64, 65, 67, 68], "excluded_lines": [], "start_line": 54}, "CRUDNotification.dismiss": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [72, 73, 74, 75, 76, 77, 78, 79], "excluded_lines": [], "start_line": 70}, "": {"executed_lines": [1, 2, 4, 5, 7, 8, 11, 12, 31, 42, 54, 70, 82], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDNotification": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 37, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 37, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [22, 24, 25, 27, 28, 29, 33, 39, 40, 44, 45, 46, 47, 48, 49, 50, 51, 52, 56, 57, 58, 60, 61, 62, 63, 64, 65, 67, 68, 72, 73, 74, 75, 76, 77, 78, 79], "excluded_lines": [], "start_line": 11}, "": {"executed_lines": [1, 2, 4, 5, 7, 8, 11, 12, 31, 42, 54, 70, 82], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\objective.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 18, 19, 20, 22, 34, 59, 63, 99, 137], "summary": {"covered_lines": 19, "num_statements": 54, "percent_covered": 35.18518518518518, "percent_covered_display": "35.19", "missing_lines": 35, "excluded_lines": 0, "percent_statements_covered": 35.18518518518518, "percent_statements_covered_display": "35.19"}, "missing_lines": [23, 24, 26, 27, 29, 30, 32, 37, 44, 45, 47, 76, 79, 82, 83, 85, 87, 88, 91, 92, 94, 95, 97, 115, 118, 119, 121, 123, 124, 127, 129, 130, 132, 133, 134], "excluded_lines": [], "functions": {"CRUDObjective.__init__": {"executed_lines": [19, 20], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "CRUDObjective.create_for_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [23, 24, 26, 27, 29, 30, 32], "excluded_lines": [], "start_line": 22}, "CRUDObjective.get_multi_for_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [37, 44, 45, 47], "excluded_lines": [], "start_line": 34}, "CRUDObjective._handle_completion_cascade": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 59}, "CRUDObjective.complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [76, 79, 82, 83, 85, 87, 88, 91, 92, 94, 95, 97], "excluded_lines": [], "start_line": 63}, "CRUDObjective.update_progress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [115, 118, 119, 121, 123, 124, 127, 129, 130, 132, 133, 134], "excluded_lines": [], "start_line": 99}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 18, 22, 34, 59, 63, 99, 137], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDObjective": {"executed_lines": [19, 20], "summary": {"covered_lines": 2, "num_statements": 37, "percent_covered": 5.405405405405405, "percent_covered_display": "5.41", "missing_lines": 35, "excluded_lines": 0, "percent_statements_covered": 5.405405405405405, "percent_statements_covered_display": "5.41"}, "missing_lines": [23, 24, 26, 27, 29, 30, 32, 37, 44, 45, 47, 76, 79, 82, 83, 85, 87, 88, 91, 92, 94, 95, 97, 115, 118, 119, 121, 123, 124, 127, 129, 130, 132, 133, 134], "excluded_lines": [], "start_line": 14}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 18, 22, 34, 59, 63, 99, 137], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\outfit.py": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDOutfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 6}, "": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\prompt.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 4, 5, 8, 9, 10, 11, 12, 15], "excluded_lines": [], "functions": {"CRUDPrompt.get_prompt_by_name": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [10, 11, 12], "excluded_lines": [], "start_line": 9}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 4, 5, 8, 9, 15], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDPrompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [10, 11, 12], "excluded_lines": [], "start_line": 8}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 4, 5, 8, 9, 15], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\quest.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 21, 22, 24, 60, 61, 75, 79, 121], "summary": {"covered_lines": 22, "num_statements": 48, "percent_covered": 45.833333333333336, "percent_covered_display": "45.83", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 45.833333333333336, "percent_statements_covered_display": "45.83"}, "missing_lines": [30, 41, 42, 44, 62, 70, 71, 72, 73, 77, 95, 96, 97, 100, 103, 104, 106, 108, 109, 110, 111, 114, 115, 116, 117, 118], "excluded_lines": [], "functions": {"CRUDQuest.__init__": {"executed_lines": [21, 22], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "CRUDQuest.get_multi_for_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [30, 41, 42, 44], "excluded_lines": [], "start_line": 24}, "CRUDQuest.create_quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [62, 70, 71, 72, 73], "excluded_lines": [], "start_line": 61}, "CRUDQuest._handle_completion_cascade": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [77], "excluded_lines": [], "start_line": 75}, "CRUDQuest.assign_to_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [95, 96, 97, 100, 103, 104, 106, 108, 109, 110, 111, 114, 115, 116, 117, 118], "excluded_lines": [], "start_line": 79}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 24, 60, 61, 75, 79, 121], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDQuest": {"executed_lines": [21, 22], "summary": {"covered_lines": 2, "num_statements": 28, "percent_covered": 7.142857142857143, "percent_covered_display": "7.14", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 7.142857142857143, "percent_statements_covered_display": "7.14"}, "missing_lines": [30, 41, 42, 44, 62, 70, 71, 72, 73, 77, 95, 96, 97, 100, 103, 104, 106, 108, 109, 110, 111, 114, 115, 116, 117, 118], "excluded_lines": [], "start_line": 17}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 24, 60, 61, 75, 79, 121], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\relationship.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 18, 21, 45, 66, 88, 112, 132, 155, 189], "summary": {"covered_lines": 17, "num_statements": 40, "percent_covered": 42.5, "percent_covered_display": "42.50", "missing_lines": 23, "excluded_lines": 2, "percent_statements_covered": 42.5, "percent_statements_covered_display": "42.50"}, "missing_lines": [38, 42, 43, 60, 63, 64, 83, 85, 86, 103, 109, 110, 129, 130, 147, 149, 152, 153, 176, 182, 183, 184, 185], "excluded_lines": [14, 15], "functions": {"CRUDRelationship.get_by_dweller_pair": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [38, 42, 43], "excluded_lines": [], "start_line": 21}, "CRUDRelationship.get_by_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [60, 63, 64], "excluded_lines": [], "start_line": 45}, "CRUDRelationship.get_by_type": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [83, 85, 86], "excluded_lines": [], "start_line": 66}, "CRUDRelationship.get_partners": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [103, 109, 110], "excluded_lines": [], "start_line": 88}, "CRUDRelationship.exists_between": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [129, 130], "excluded_lines": [], "start_line": 112}, "CRUDRelationship.get_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [147, 149, 152, 153], "excluded_lines": [], "start_line": 132}, "CRUDRelationship.create_with_defaults": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [176, 182, 183, 184, 185], "excluded_lines": [], "start_line": 155}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 18, 21, 45, 66, 88, 112, 132, 155, 189], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [14, 15], "start_line": 1}}, "classes": {"CRUDRelationship": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 23, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [38, 42, 43, 60, 63, 64, 83, 85, 86, 103, 109, 110, 129, 130, 147, 149, 152, 153, 176, 182, 183, 184, 185], "excluded_lines": [], "start_line": 18}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 18, 21, 45, 66, 88, 112, 132, 155, 189], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [14, 15], "start_line": 1}}}, "app\\crud\\room.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 16, 19, 20, 21, 26, 27, 35, 36, 44, 45, 56, 57, 73, 74, 83, 95, 96, 102, 140, 154, 222], "summary": {"covered_lines": 32, "num_statements": 121, "percent_covered": 26.446280991735538, "percent_covered_display": "26.45", "missing_lines": 89, "excluded_lines": 0, "percent_statements_covered": 26.446280991735538, "percent_statements_covered_display": "26.45"}, "missing_lines": [23, 24, 28, 29, 30, 31, 32, 33, 37, 38, 39, 40, 41, 42, 49, 54, 63, 66, 68, 69, 70, 71, 76, 77, 80, 81, 85, 86, 87, 88, 89, 90, 93, 98, 104, 106, 109, 111, 115, 116, 117, 118, 120, 121, 123, 124, 126, 128, 129, 131, 133, 134, 138, 141, 142, 143, 147, 148, 152, 156, 157, 160, 163, 164, 165, 168, 169, 170, 171, 173, 174, 177, 180, 183, 187, 188, 190, 193, 194, 196, 198, 199, 202, 209, 210, 213, 214, 218, 219], "excluded_lines": [], "functions": {"CRUDRoom.get_multy_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [23, 24], "excluded_lines": [], "start_line": 21}, "CRUDRoom.evaluate_capacity_formula": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [28, 29, 30, 31, 32, 33], "excluded_lines": [], "start_line": 27}, "CRUDRoom.evaluate_output_formula": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [37, 38, 39, 40, 41, 42], "excluded_lines": [], "start_line": 36}, "CRUDRoom.get_room_by_coordinates": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [49, 54], "excluded_lines": [], "start_line": 45}, "CRUDRoom.get_room_build_price": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [63, 66, 68, 69, 70, 71], "excluded_lines": [], "start_line": 57}, "CRUDRoom.check_is_unique_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [76, 77, 80, 81], "excluded_lines": [], "start_line": 74}, "CRUDRoom.expand_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [85, 86, 87, 88, 89, 90, 93], "excluded_lines": [], "start_line": 83}, "CRUDRoom.requires_recalculation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [98], "excluded_lines": [], "start_line": 96}, "CRUDRoom.build": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [104, 106, 109, 111, 115, 116, 117, 118, 120, 121, 123, 124, 126, 128, 129, 131, 133, 134, 138], "excluded_lines": [], "start_line": 102}, "CRUDRoom.destroy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [141, 142, 143, 147, 148, 152], "excluded_lines": [], "start_line": 140}, "CRUDRoom.upgrade": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 30, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [156, 157, 160, 163, 164, 165, 168, 169, 170, 171, 173, 174, 177, 180, 183, 187, 188, 190, 193, 194, 196, 198, 199, 202, 209, 210, 213, 214, 218, 219], "excluded_lines": [], "start_line": 154}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 16, 19, 20, 21, 26, 27, 35, 36, 44, 45, 56, 57, 73, 74, 83, 95, 96, 102, 140, 154, 222], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDRoom": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 89, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 89, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [23, 24, 28, 29, 30, 31, 32, 33, 37, 38, 39, 40, 41, 42, 49, 54, 63, 66, 68, 69, 70, 71, 76, 77, 80, 81, 85, 86, 87, 88, 89, 90, 93, 98, 104, 106, 109, 111, 115, 116, 117, 118, 120, 121, 123, 124, 126, 128, 129, 131, 133, 134, 138, 141, 142, 143, 147, 148, 152, 156, 157, 160, 163, 164, 165, 168, 169, 170, 171, 173, 174, 177, 180, 183, 187, 188, 190, 193, 194, 196, 198, 199, 202, 209, 210, 213, 214, 218, 219], "excluded_lines": [], "start_line": 19}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 16, 19, 20, 21, 26, 27, 35, 36, 44, 45, 56, 57, 73, 74, 83, 95, 96, 102, 140, 154, 222], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\training.py": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 13, 16, 27, 38, 49, 74, 100], "summary": {"covered_lines": 14, "num_statements": 31, "percent_covered": 45.16129032258065, "percent_covered_display": "45.16", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 45.16129032258065, "percent_statements_covered_display": "45.16"}, "missing_lines": [22, 25, 33, 36, 44, 47, 66, 68, 69, 71, 72, 89, 90, 92, 94, 95, 97], "excluded_lines": [], "functions": {"CRUDTraining.get_active_by_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [22, 25], "excluded_lines": [], "start_line": 16}, "CRUDTraining.get_active_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [33, 36], "excluded_lines": [], "start_line": 27}, "CRUDTraining.get_active_by_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [44, 47], "excluded_lines": [], "start_line": 38}, "CRUDTraining.get_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [66, 68, 69, 71, 72], "excluded_lines": [], "start_line": 49}, "CRUDTraining.get_dwellers_for_trainings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [89, 90, 92, 94, 95, 97], "excluded_lines": [], "start_line": 74}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 13, 16, 27, 38, 49, 74, 100], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDTraining": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [22, 25, 33, 36, 44, 47, 66, 68, 69, 71, 72, 89, 90, 92, 94, 95, 97], "excluded_lines": [], "start_line": 13}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 13, 16, 27, 38, 49, 74, 100], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\user.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 16, 17, 18, 21, 25, 26, 32, 33, 34, 35, 38, 39, 40, 47, 49, 62, 63, 70, 71, 72, 74, 75, 79], "summary": {"covered_lines": 34, "num_statements": 52, "percent_covered": 65.38461538461539, "percent_covered_display": "65.38", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 65.38461538461539, "percent_statements_covered_display": "65.38"}, "missing_lines": [19, 22, 23, 41, 42, 43, 55, 56, 57, 58, 59, 60, 64, 65, 66, 67, 68, 76], "excluded_lines": [], "functions": {"CRUDUser.get_by_email": {"executed_lines": [18], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [19], "excluded_lines": [], "start_line": 17}, "CRUDUser.get_by_username": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [22, 23], "excluded_lines": [], "start_line": 21}, "CRUDUser.create": {"executed_lines": [26, 32, 33, 34, 35, 38, 39, 40, 47], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [41, 42, 43], "excluded_lines": [], "start_line": 25}, "CRUDUser.update": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [55, 56, 57, 58, 59, 60], "excluded_lines": [], "start_line": 49}, "CRUDUser.authenticate": {"executed_lines": [63], "summary": {"covered_lines": 1, "num_statements": 6, "percent_covered": 16.666666666666668, "percent_covered_display": "16.67", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 16.666666666666668, "percent_statements_covered_display": "16.67"}, "missing_lines": [64, 65, 66, 67, 68], "excluded_lines": [], "start_line": 62}, "CRUDUser.is_active": {"executed_lines": [72], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "CRUDUser.is_superuser": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [76], "excluded_lines": [], "start_line": 75}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 16, 17, 21, 25, 49, 62, 70, 71, 74, 75, 79], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDUser": {"executed_lines": [18, 26, 32, 33, 34, 35, 38, 39, 40, 47, 63, 72], "summary": {"covered_lines": 12, "num_statements": 30, "percent_covered": 40.0, "percent_covered_display": "40.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40.00"}, "missing_lines": [19, 22, 23, 41, 42, 43, 55, 56, 57, 58, 59, 60, 64, 65, 66, 67, 68, 76], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 16, 17, 21, 25, 49, 62, 70, 71, 74, 75, 79], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\user_profile.py": {"executed_lines": [1, 2, 3, 5, 6, 7, 10, 11, 16, 24, 42, 56], "summary": {"covered_lines": 12, "num_statements": 30, "percent_covered": 40.0, "percent_covered_display": "40.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40.00"}, "missing_lines": [13, 14, 18, 19, 20, 21, 22, 32, 33, 34, 36, 37, 38, 40, 49, 50, 51, 53], "excluded_lines": [], "functions": {"CRUDUserProfile.get_by_user_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [13, 14], "excluded_lines": [], "start_line": 11}, "CRUDUserProfile.create_for_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [18, 19, 20, 21, 22], "excluded_lines": [], "start_line": 16}, "CRUDUserProfile.increment_statistic": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [32, 33, 34, 36, 37, 38, 40], "excluded_lines": [], "start_line": 24}, "CRUDUserProfile.update_statistics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [49, 50, 51, 53], "excluded_lines": [], "start_line": 42}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 10, 11, 16, 24, 42, 56], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDUserProfile": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [13, 14, 18, 19, 20, 21, 22, 32, 33, 34, 36, 37, 38, 40, 49, 50, 51, 53], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 10, 11, 16, 24, 42, 56], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\vault.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 17, 18, 22, 23, 31, 97, 98, 102, 103, 107, 113, 139, 163, 164, 170, 178, 189, 190, 219, 223, 230, 243], "summary": {"covered_lines": 34, "num_statements": 134, "percent_covered": 25.37313432835821, "percent_covered_display": "25.37", "missing_lines": 100, "excluded_lines": 0, "percent_statements_covered": 25.37313432835821, "percent_statements_covered_display": "25.37"}, "missing_lines": [19, 20, 24, 25, 26, 27, 28, 29, 38, 39, 41, 42, 43, 45, 46, 48, 49, 50, 51, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 70, 71, 72, 73, 76, 77, 79, 81, 84, 85, 87, 90, 91, 92, 93, 95, 99, 100, 104, 105, 108, 109, 110, 111, 116, 129, 130, 142, 155, 156, 157, 165, 166, 167, 168, 173, 174, 175, 176, 184, 185, 186, 187, 196, 204, 205, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 221, 225, 226, 227, 228, 233, 234, 235, 236, 237, 240], "excluded_lines": [], "functions": {"CRUDVault.get_by_user_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [19, 20], "excluded_lines": [], "start_line": 18}, "CRUDVault._calculate_new_capacity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24, 25, 26, 27, 28, 29], "excluded_lines": [], "start_line": 23}, "CRUDVault.recalculate_vault_attributes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 32, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 32, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [38, 41, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 70, 71, 72, 73, 76, 77, 79, 81, 84, 85, 87, 90, 91, 92, 93, 95], "excluded_lines": [], "start_line": 31}, "CRUDVault.recalculate_vault_attributes._update_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [39], "excluded_lines": [], "start_line": 38}, "CRUDVault.recalculate_vault_attributes._update_storage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42, 43, 45, 46, 48, 49, 50, 51], "excluded_lines": [], "start_line": 41}, "CRUDVault.get_population": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [99, 100], "excluded_lines": [], "start_line": 98}, "CRUDVault.get_rooms_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [104, 105], "excluded_lines": [], "start_line": 103}, "CRUDVault.toggle_game_state": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [108, 109, 110, 111], "excluded_lines": [], "start_line": 107}, "CRUDVault.get_vaults_with_room_and_dweller_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [116, 129, 130], "excluded_lines": [], "start_line": 113}, "CRUDVault.get_vault_with_room_and_dweller_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [142, 155, 156, 157], "excluded_lines": [], "start_line": 139}, "CRUDVault.create_storage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [165, 166, 167, 168], "excluded_lines": [], "start_line": 164}, "CRUDVault.create_with_user_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [173, 174, 175, 176], "excluded_lines": [], "start_line": 170}, "CRUDVault.is_enough_dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [184, 185, 186, 187], "excluded_lines": [], "start_line": 178}, "CRUDVault.is_enough_population_space": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [196, 204, 205, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217], "excluded_lines": [], "start_line": 190}, "CRUDVault.deposit_caps": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [221], "excluded_lines": [], "start_line": 219}, "CRUDVault.withdraw_caps": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [225, 226, 227, 228], "excluded_lines": [], "start_line": 223}, "CRUDVault.delete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [233, 234, 235, 236, 237, 240], "excluded_lines": [], "start_line": 230}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 17, 18, 22, 23, 31, 97, 98, 102, 103, 107, 113, 139, 163, 164, 170, 178, 189, 190, 219, 223, 230, 243], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDVault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 100, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 100, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [19, 20, 24, 25, 26, 27, 28, 29, 38, 39, 41, 42, 43, 45, 46, 48, 49, 50, 51, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 70, 71, 72, 73, 76, 77, 79, 81, 84, 85, 87, 90, 91, 92, 93, 95, 99, 100, 104, 105, 108, 109, 110, 111, 116, 129, 130, 142, 155, 156, 157, 165, 166, 167, 168, 173, 174, 175, 176, 184, 185, 186, 187, 196, 204, 205, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 221, 225, 226, 227, 228, 233, 234, 235, 236, 237, 240], "excluded_lines": [], "start_line": 17}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 17, 18, 22, 23, 31, 97, 98, 102, 103, 107, 113, 139, 163, 164, 170, 178, 189, 190, 219, 223, 230, 243], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\vault_mixin.py": {"executed_lines": [1, 2, 4, 5, 6, 8, 9, 11, 14, 15, 17, 29], "summary": {"covered_lines": 12, "num_statements": 25, "percent_covered": 48.0, "percent_covered_display": "48.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 48.0, "percent_statements_covered_display": "48.00"}, "missing_lines": [20, 21, 22, 23, 24, 25, 26, 27, 32, 33, 34, 36, 37], "excluded_lines": [], "functions": {"VaultActionsMixin.get_for_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20, 21, 22, 23, 24, 25, 26, 27], "excluded_lines": [], "start_line": 17}, "VaultActionsMixin.get_multi_for_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [32, 33, 34, 36, 37], "excluded_lines": [], "start_line": 29}, "": {"executed_lines": [1, 2, 4, 5, 6, 8, 9, 11, 14, 15, 17, 29], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"VaultActionsMixin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20, 21, 22, 23, 24, 25, 26, 27, 32, 33, 34, 36, 37], "excluded_lines": [], "start_line": 14}, "": {"executed_lines": [1, 2, 4, 5, 6, 8, 9, 11, 14, 15, 17, 29], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\weapon.py": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDWeapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 6}, "": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\db\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\db\\init_db.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 43, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 35, 36, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "excluded_lines": [], "functions": {"locate_quest_files": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36], "excluded_lines": [], "start_line": 35}, "init_db": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "excluded_lines": [], "start_line": 39}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 35, 39], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 43, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 35, 36, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "excluded_lines": [], "start_line": 1}}}, "app\\db\\session.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 24, 33], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [34, 35], "excluded_lines": [], "functions": {"get_async_session": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [34, 35], "excluded_lines": [], "start_line": 33}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 24, 33], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 9, 24, 33], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [34, 35], "excluded_lines": [], "start_line": 1}}}, "app\\middleware\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\middleware\\request_id.py": {"executed_lines": [3, 5, 7, 10, 13, 20, 22, 31, 36, 37, 38, 43, 44, 47, 50, 51, 52, 54, 62], "summary": {"covered_lines": 19, "num_statements": 28, "percent_covered": 67.85714285714286, "percent_covered_display": "67.86", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 67.85714285714286, "percent_statements_covered_display": "67.86"}, "missing_lines": [32, 33, 39, 40, 56, 57, 58, 59, 60], "excluded_lines": [], "functions": {"RequestIdMiddleware.__init__": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "RequestIdMiddleware.__call__": {"executed_lines": [31, 36, 37, 38, 43, 44, 47, 50, 51, 52, 54, 62], "summary": {"covered_lines": 12, "num_statements": 16, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [32, 33, 39, 40], "excluded_lines": [], "start_line": 22}, "RequestIdMiddleware.__call__.send_with_request_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [56, 57, 58, 59, 60], "excluded_lines": [], "start_line": 54}, "": {"executed_lines": [3, 5, 7, 10, 13, 22], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RequestIdMiddleware": {"executed_lines": [20, 31, 36, 37, 38, 43, 44, 47, 50, 51, 52, 54, 62], "summary": {"covered_lines": 13, "num_statements": 22, "percent_covered": 59.09090909090909, "percent_covered_display": "59.09", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 59.09090909090909, "percent_statements_covered_display": "59.09"}, "missing_lines": [32, 33, 39, 40, 56, 57, 58, 59, 60], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [3, 5, 7, 10, 13, 22], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\middleware\\security.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 9, 10, 12, 14, 17, 25, 26, 27, 28, 29, 30, 31, 33, 61, 72], "excluded_lines": [], "functions": {"create_security_config": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [25, 26, 27, 28, 29, 30, 31, 33, 61, 72], "excluded_lines": [], "start_line": 17}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 9, 10, 12, 14, 17], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 9, 10, 12, 14, 17, 25, 26, 27, 28, 29, 30, 31, 33, 61, 72], "excluded_lines": [], "start_line": 1}}}, "app\\models\\__init__.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\base.py": {"executed_lines": [1, 2, 4, 5, 8, 9, 10, 16, 17, 25, 26, 27, 29, 34, 40, 41, 42, 43, 44, 45, 46, 47, 49], "summary": {"covered_lines": 23, "num_statements": 27, "percent_covered": 85.18518518518519, "percent_covered_display": "85.19", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 85.18518518518519, "percent_statements_covered_display": "85.19"}, "missing_lines": [31, 32, 36, 37], "excluded_lines": [], "functions": {"SoftDeleteMixin.soft_delete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 32], "excluded_lines": [], "start_line": 29}, "SoftDeleteMixin.restore": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36, 37], "excluded_lines": [], "start_line": 34}, "": {"executed_lines": [1, 2, 4, 5, 8, 9, 10, 16, 17, 25, 26, 27, 29, 34, 40, 41, 42, 43, 44, 45, 46, 47, 49], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TimeStampMixin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 8}, "BaseUUIDModel": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "SoftDeleteMixin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 32, 36, 37], "excluded_lines": [], "start_line": 25}, "SPECIALModel": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "": {"executed_lines": [1, 2, 4, 5, 8, 9, 10, 16, 17, 25, 26, 27, 29, 34, 40, 41, 42, 43, 44, 45, 46, 47, 49], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\chat_message.py": {"executed_lines": [1, 2, 3, 5, 7, 16, 17, 20, 21, 24, 25, 27, 30, 33, 34, 35, 38, 39, 42, 43, 49, 55, 61, 67, 70, 71, 74, 75, 76], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 5, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11, 12, 13], "functions": {"": {"executed_lines": [1, 2, 3, 5, 7, 16, 17, 20, 21, 24, 25, 27, 30, 33, 34, 35, 38, 39, 42, 43, 49, 55, 61, 67, 70, 71, 74, 75, 76], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 5, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11, 12, 13], "start_line": 1}}, "classes": {"ChatMessageBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "ChatMessage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "ChatMessageCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 70}, "ChatMessageRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 74}, "": {"executed_lines": [1, 2, 3, 5, 7, 16, 17, 20, 21, 24, 25, 27, 30, 33, 34, 35, 38, 39, 42, 43, 49, 55, 61, 67, 70, 71, 74, 75, 76], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 5, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11, 12, 13], "start_line": 1}}}, "app\\models\\dweller.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 9, 10, 21, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 43, 46, 47, 50, 56, 57, 60, 61, 67, 68, 78, 79, 95, 96, 97, 99, 100, 103, 107, 111, 117, 118, 121, 124], "summary": {"covered_lines": 49, "num_statements": 65, "percent_covered": 75.38461538461539, "percent_covered_display": "75.38", "missing_lines": 16, "excluded_lines": 7, "percent_statements_covered": 75.38461538461539, "percent_statements_covered_display": "75.38"}, "missing_lines": [58, 63, 65, 70, 71, 73, 74, 76, 81, 83, 84, 86, 87, 89, 90, 92], "excluded_lines": [12, 13, 14, 15, 16, 17, 18], "functions": {"DwellerBase.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [58], "excluded_lines": [], "start_line": 57}, "DwellerBase.current_level_xp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [63, 65], "excluded_lines": [], "start_line": 61}, "DwellerBase.next_level_xp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [70, 71, 73, 74, 76], "excluded_lines": [], "start_line": 68}, "DwellerBase.xp_progress_percentage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [81, 83, 84, 86, 87, 89, 90, 92], "excluded_lines": [], "start_line": 79}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 9, 10, 21, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 43, 46, 47, 50, 56, 57, 60, 61, 67, 68, 78, 79, 95, 96, 97, 99, 100, 103, 107, 111, 117, 118, 121, 124], "summary": {"covered_lines": 49, "num_statements": 49, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 7, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [12, 13, 14, 15, 16, 17, 18], "start_line": 1}}, "classes": {"DwellerBaseWithoutStats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "DwellerBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [58, 63, 65, 70, 71, 73, 74, 76, 81, 83, 84, 86, 87, 89, 90, 92], "excluded_lines": [], "start_line": 56}, "Dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 95}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 9, 10, 21, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 43, 46, 47, 50, 56, 57, 60, 61, 67, 68, 78, 79, 95, 96, 97, 99, 100, 103, 107, 111, 117, 118, 121, 124], "summary": {"covered_lines": 49, "num_statements": 49, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 7, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [12, 13, 14, 15, 16, 17, 18], "start_line": 1}}}, "app\\models\\exploration.py": {"executed_lines": [3, 4, 6, 7, 8, 9, 10, 12, 15, 20, 23, 24, 25, 28, 31, 32, 33, 34, 37, 38, 41, 42, 43, 44, 45, 46, 47, 50, 51, 52, 55, 58, 59, 61, 65, 69, 74, 82, 90, 103, 108, 113, 127], "summary": {"covered_lines": 43, "num_statements": 76, "percent_covered": 56.578947368421055, "percent_covered_display": "56.58", "missing_lines": 33, "excluded_lines": 0, "percent_statements_covered": 56.578947368421055, "percent_statements_covered_display": "56.58"}, "missing_lines": [17, 63, 67, 71, 72, 76, 77, 78, 79, 80, 84, 85, 86, 87, 88, 92, 93, 95, 97, 99, 100, 101, 105, 106, 110, 111, 115, 121, 122, 123, 125, 129, 139], "excluded_lines": [], "functions": {"get_utc_now": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [17], "excluded_lines": [], "start_line": 15}, "Exploration.is_active": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [63], "excluded_lines": [], "start_line": 61}, "Exploration.is_completed": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [67], "excluded_lines": [], "start_line": 65}, "Exploration.elapsed_time_seconds": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [71, 72], "excluded_lines": [], "start_line": 69}, "Exploration.progress_percentage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [76, 77, 78, 79, 80], "excluded_lines": [], "start_line": 74}, "Exploration.time_remaining_seconds": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [84, 85, 86, 87, 88], "excluded_lines": [], "start_line": 82}, "Exploration.should_generate_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [92, 93, 95, 97, 99, 100, 101], "excluded_lines": [], "start_line": 90}, "Exploration.complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [105, 106], "excluded_lines": [], "start_line": 103}, "Exploration.recall": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [110, 111], "excluded_lines": [], "start_line": 108}, "Exploration.add_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [115, 121, 122, 123, 125], "excluded_lines": [], "start_line": 113}, "Exploration.add_loot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [129, 139], "excluded_lines": [], "start_line": 127}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 10, 12, 15, 20, 23, 24, 25, 28, 31, 32, 33, 34, 37, 38, 41, 42, 43, 44, 45, 46, 47, 50, 51, 52, 55, 58, 59, 61, 65, 69, 74, 82, 90, 103, 108, 113, 127], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ExplorationStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "ExplorationBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "Exploration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 32, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 32, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [63, 67, 71, 72, 76, 77, 78, 79, 80, 84, 85, 86, 87, 88, 92, 93, 95, 97, 99, 100, 101, 105, 106, 110, 111, 115, 121, 122, 123, 125, 129, 139], "excluded_lines": [], "start_line": 55}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 10, 12, 15, 20, 23, 24, 25, 28, 31, 32, 33, 34, 37, 38, 41, 42, 43, 44, 45, 46, 47, 50, 51, 52, 55, 58, 59, 61, 65, 69, 74, 82, 90, 103, 108, 113, 127], "summary": {"covered_lines": 43, "num_statements": 44, "percent_covered": 97.72727272727273, "percent_covered_display": "97.73", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.72727272727273, "percent_statements_covered_display": "97.73"}, "missing_lines": [17], "excluded_lines": [], "start_line": 1}}}, "app\\models\\game_state.py": {"executed_lines": [3, 5, 6, 8, 11, 14, 15, 16, 17, 18, 19, 22, 25, 27, 31, 36, 41], "summary": {"covered_lines": 17, "num_statements": 24, "percent_covered": 70.83333333333333, "percent_covered_display": "70.83", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 70.83333333333333, "percent_statements_covered_display": "70.83"}, "missing_lines": [29, 33, 34, 38, 39, 43, 44], "excluded_lines": [], "functions": {"GameState.calculate_offline_time": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [29], "excluded_lines": [], "start_line": 27}, "GameState.pause": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [33, 34], "excluded_lines": [], "start_line": 31}, "GameState.resume": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [38, 39], "excluded_lines": [], "start_line": 36}, "GameState.update_tick": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [43, 44], "excluded_lines": [], "start_line": 41}, "": {"executed_lines": [3, 5, 6, 8, 11, 14, 15, 16, 17, 18, 19, 22, 25, 27, 31, 36, 41], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"GameStateBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "GameState": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [29, 33, 34, 38, 39, 43, 44], "excluded_lines": [], "start_line": 22}, "": {"executed_lines": [3, 5, 6, 8, 11, 14, 15, 16, 17, 18, 19, 22, 25, 27, 31, 36, 41], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\incident.py": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 14, 17, 18, 19, 20, 21, 22, 25, 28, 29, 30, 31, 34, 37, 38, 39, 40, 41, 42, 45, 46, 49, 52, 53, 56, 59, 60, 62, 66, 70, 74, 79], "summary": {"covered_lines": 39, "num_statements": 48, "percent_covered": 81.25, "percent_covered_display": "81.25", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 81.25, "percent_statements_covered_display": "81.25"}, "missing_lines": [64, 68, 72, 76, 77, 81, 82, 83, 84], "excluded_lines": [], "functions": {"Incident.is_active": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [64], "excluded_lines": [], "start_line": 62}, "Incident.elapsed_time": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [68], "excluded_lines": [], "start_line": 66}, "Incident.should_spread": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [72], "excluded_lines": [], "start_line": 70}, "Incident.resolve": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [76, 77], "excluded_lines": [], "start_line": 74}, "Incident.spread_to_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [81, 82, 83, 84], "excluded_lines": [], "start_line": 79}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 14, 17, 18, 19, 20, 21, 22, 25, 28, 29, 30, 31, 34, 37, 38, 39, 40, 41, 42, 45, 46, 49, 52, 53, 56, 59, 60, 62, 66, 70, 74, 79], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"IncidentType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "IncidentStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "IncidentBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "Incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [64, 68, 72, 76, 77, 81, 82, 83, 84], "excluded_lines": [], "start_line": 56}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 14, 17, 18, 19, 20, 21, 22, 25, 28, 29, 30, 31, 34, 37, 38, 39, 40, 41, 42, 45, 46, 49, 52, 53, 56, 59, 60, 62, 66, 70, 74, 79], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\item.py": {"executed_lines": [1, 2, 4, 7, 8, 9, 10, 11, 13, 19, 20, 21], "summary": {"covered_lines": 12, "num_statements": 15, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [22, 23, 24], "excluded_lines": [], "functions": {"ItemBase.set_default_value": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [22, 23, 24], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [1, 2, 4, 7, 8, 9, 10, 11, 13, 19, 20, 21], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ItemBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [22, 23, 24], "excluded_lines": [], "start_line": 7}, "": {"executed_lines": [1, 2, 4, 7, 8, 9, 10, 11, 13, 19, 20, 21], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\junk.py": {"executed_lines": [1, 3, 4, 6, 7, 8, 14, 15, 16, 18, 25, 26, 27, 29], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 93.33333333333333, "percent_covered_display": "93.33", "missing_lines": 1, "excluded_lines": 2, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93.33"}, "missing_lines": [30], "excluded_lines": [10, 11], "functions": {"Junk.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [30], "excluded_lines": [], "start_line": 29}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 14, 15, 16, 18, 25, 26, 27, 29], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}, "classes": {"JunkBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "Junk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [30], "excluded_lines": [], "start_line": 25}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 14, 15, 16, 18, 25, 26, 27, 29], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}}, "app\\models\\llm_interaction.py": {"executed_lines": [1, 2, 3, 5, 7, 14, 16, 17, 18, 20, 21, 24, 25, 27, 28, 30], "summary": {"covered_lines": 16, "num_statements": 17, "percent_covered": 94.11764705882354, "percent_covered_display": "94.12", "missing_lines": 1, "excluded_lines": 3, "percent_statements_covered": 94.11764705882354, "percent_statements_covered_display": "94.12"}, "missing_lines": [31], "excluded_lines": [9, 10, 11], "functions": {"LLMInteraction.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31], "excluded_lines": [], "start_line": 30}, "": {"executed_lines": [1, 2, 3, 5, 7, 14, 16, 17, 18, 20, 21, 24, 25, 27, 28, 30], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11], "start_line": 1}}, "classes": {"LLMInteractionBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "LLMInteraction": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31], "excluded_lines": [], "start_line": 24}, "": {"executed_lines": [1, 2, 3, 5, 7, 14, 16, 17, 18, 20, 21, 24, 25, 27, 28, 30], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11], "start_line": 1}}}, "app\\models\\notification.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 15, 19, 20, 21, 22, 23, 26, 27, 28, 31, 32, 33, 34, 37, 38, 39, 42, 43, 44, 47, 48, 49, 50, 51, 54, 55, 56, 59, 61, 62, 64, 65, 67, 68, 71, 74, 76, 77, 80, 85, 86, 89, 90, 91, 92, 93, 96, 97, 98, 99], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12], "functions": {"": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 15, 19, 20, 21, 22, 23, 26, 27, 28, 31, 32, 33, 34, 37, 38, 39, 42, 43, 44, 47, 48, 49, 50, 51, 54, 55, 56, 59, 61, 62, 64, 65, 67, 68, 71, 74, 76, 77, 80, 85, 86, 89, 90, 91, 92, 93, 96, 97, 98, 99], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12], "start_line": 1}}, "classes": {"NotificationType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "NotificationPriority": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 47}, "NotificationBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "Notification": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "NotificationCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 85}, "NotificationRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 89}, "NotificationUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 96}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 15, 19, 20, 21, 22, 23, 26, 27, 28, 31, 32, 33, 34, 37, 38, 39, 42, 43, 44, 47, 48, 49, 50, 51, 54, 55, 56, 59, 61, 62, 64, 65, 67, 68, 71, 74, 76, 77, 80, 85, 86, 89, 90, 91, 92, 93, 96, 97, 98, 99], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12], "start_line": 1}}}, "app\\models\\objective.py": {"executed_lines": [1, 3, 5, 6, 12, 13, 14, 16, 20, 21], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 90.9090909090909, "percent_covered_display": "90.91", "missing_lines": 1, "excluded_lines": 2, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "90.91"}, "missing_lines": [17], "excluded_lines": [8, 9], "functions": {"ObjectiveBase.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [17], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [1, 3, 5, 6, 12, 13, 14, 16, 20, 21], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [8, 9], "start_line": 1}}, "classes": {"ObjectiveBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [17], "excluded_lines": [], "start_line": 12}, "Objective": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "": {"executed_lines": [1, 3, 5, 6, 12, 13, 14, 16, 20, 21], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [8, 9], "start_line": 1}}}, "app\\models\\outfit.py": {"executed_lines": [1, 3, 4, 6, 7, 8, 15, 16, 17, 19, 23, 24, 25, 26, 27], "summary": {"covered_lines": 15, "num_statements": 16, "percent_covered": 93.75, "percent_covered_display": "93.75", "missing_lines": 1, "excluded_lines": 3, "percent_statements_covered": 93.75, "percent_statements_covered_display": "93.75"}, "missing_lines": [20], "excluded_lines": [10, 11, 12], "functions": {"OutfitBase.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20], "excluded_lines": [], "start_line": 19}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 15, 16, 17, 19, 23, 24, 25, 26, 27], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11, 12], "start_line": 1}}, "classes": {"OutfitBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20], "excluded_lines": [], "start_line": 15}, "Outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 15, 16, 17, 19, 23, 24, 25, 26, 27], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11, 12], "start_line": 1}}}, "app\\models\\pregnancy.py": {"executed_lines": [1, 2, 4, 5, 6, 8, 9, 15, 16, 17, 18, 19, 20, 23, 26, 32, 39, 42, 43, 48, 49, 62, 63], "summary": {"covered_lines": 23, "num_statements": 37, "percent_covered": 62.16216216216216, "percent_covered_display": "62.16", "missing_lines": 14, "excluded_lines": 2, "percent_statements_covered": 62.16216216216216, "percent_statements_covered_display": "62.16"}, "missing_lines": [40, 45, 46, 51, 52, 54, 55, 57, 58, 60, 65, 66, 68, 69], "excluded_lines": [11, 12], "functions": {"Pregnancy.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40], "excluded_lines": [], "start_line": 39}, "Pregnancy.is_due": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [45, 46], "excluded_lines": [], "start_line": 43}, "Pregnancy.progress_percentage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [51, 52, 54, 55, 57, 58, 60], "excluded_lines": [], "start_line": 49}, "Pregnancy.time_remaining_seconds": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [65, 66, 68, 69], "excluded_lines": [], "start_line": 63}, "": {"executed_lines": [1, 2, 4, 5, 6, 8, 9, 15, 16, 17, 18, 19, 20, 23, 26, 32, 39, 42, 43, 48, 49, 62, 63], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12], "start_line": 1}}, "classes": {"PregnancyBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "Pregnancy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40, 45, 46, 51, 52, 54, 55, 57, 58, 60, 65, 66, 68, 69], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [1, 2, 4, 5, 6, 8, 9, 15, 16, 17, 18, 19, 20, 23, 26, 32, 39, 42, 43, 48, 49, 62, 63], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12], "start_line": 1}}}, "app\\models\\prompt.py": {"executed_lines": [1, 2, 4, 5, 7, 13, 15, 16, 17, 18, 20, 26, 30, 31], "summary": {"covered_lines": 14, "num_statements": 16, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 2, "excluded_lines": 2, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50"}, "missing_lines": [24, 27], "excluded_lines": [9, 10], "functions": {"PromptBase.generate_prompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24], "excluded_lines": [], "start_line": 20}, "PromptBase.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [27], "excluded_lines": [], "start_line": 26}, "": {"executed_lines": [1, 2, 4, 5, 7, 13, 15, 16, 17, 18, 20, 26, 30, 31], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10], "start_line": 1}}, "classes": {"PromptBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24, 27], "excluded_lines": [], "start_line": 13}, "Prompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "": {"executed_lines": [1, 2, 4, 5, 7, 13, 15, 16, 17, 18, 20, 26, 30, 31], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10], "start_line": 1}}}, "app\\models\\quest.py": {"executed_lines": [1, 3, 5, 6, 14, 15, 16, 17, 18, 19, 22, 23], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "functions": {"": {"executed_lines": [1, 3, 5, 6, 14, 15, 16, 17, 18, 19, 22, 23], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}, "classes": {"QuestBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "Quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 16, 17, 18, 19, 22, 23], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}}, "app\\models\\relationship.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 14, 15, 16, 17, 18, 21, 24, 30, 37], "summary": {"covered_lines": 15, "num_statements": 16, "percent_covered": 93.75, "percent_covered_display": "93.75", "missing_lines": 1, "excluded_lines": 2, "percent_statements_covered": 93.75, "percent_statements_covered_display": "93.75"}, "missing_lines": [38], "excluded_lines": [10, 11], "functions": {"Relationship.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [38], "excluded_lines": [], "start_line": 37}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 14, 15, 16, 17, 18, 21, 24, 30, 37], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}, "classes": {"RelationshipBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "Relationship": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [38], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 14, 15, 16, 17, 18, 21, 24, 30, 37], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}}, "app\\models\\room.py": {"executed_lines": [1, 3, 4, 6, 7, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 38, 39, 48, 49, 50, 52, 54], "summary": {"covered_lines": 33, "num_statements": 40, "percent_covered": 82.5, "percent_covered_display": "82.50", "missing_lines": 7, "excluded_lines": 3, "percent_statements_covered": 82.5, "percent_statements_covered_display": "82.50"}, "missing_lines": [36, 41, 42, 43, 44, 45, 55], "excluded_lines": [9, 10, 11], "functions": {"RoomBase.is_unique": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36], "excluded_lines": [], "start_line": 35}, "RoomBase.max_tier": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [41, 42, 43, 44, 45], "excluded_lines": [], "start_line": 39}, "Room.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [55], "excluded_lines": [], "start_line": 54}, "": {"executed_lines": [1, 3, 4, 6, 7, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 38, 39, 48, 49, 50, 52, 54], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11], "start_line": 1}}, "classes": {"RoomBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36, 41, 42, 43, 44, 45], "excluded_lines": [], "start_line": 14}, "Room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [55], "excluded_lines": [], "start_line": 48}, "": {"executed_lines": [1, 3, 4, 6, 7, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 38, 39, 48, 49, 50, 52, 54], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11], "start_line": 1}}}, "app\\models\\storage.py": {"executed_lines": [1, 3, 4, 6, 15, 16, 17, 20, 21, 22, 24, 25, 26, 28], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 93.33333333333333, "percent_covered_display": "93.33", "missing_lines": 1, "excluded_lines": 5, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93.33"}, "missing_lines": [29], "excluded_lines": [8, 9, 10, 11, 12], "functions": {"Storage.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [29], "excluded_lines": [], "start_line": 28}, "": {"executed_lines": [1, 3, 4, 6, 15, 16, 17, 20, 21, 22, 24, 25, 26, 28], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 5, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [8, 9, 10, 11, 12], "start_line": 1}}, "classes": {"StorageBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "Storage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [29], "excluded_lines": [], "start_line": 20}, "": {"executed_lines": [1, 3, 4, 6, 15, 16, 17, 20, 21, 22, 24, 25, 26, 28], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 5, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [8, 9, 10, 11, 12], "start_line": 1}}}, "app\\models\\training.py": {"executed_lines": [3, 4, 5, 7, 8, 10, 11, 19, 22, 23, 24, 27, 30, 31, 32, 34, 35, 36, 38, 40, 41, 42, 44, 47, 51, 52, 53, 55, 59, 63, 67, 71, 88], "summary": {"covered_lines": 33, "num_statements": 47, "percent_covered": 70.2127659574468, "percent_covered_display": "70.21", "missing_lines": 14, "excluded_lines": 4, "percent_statements_covered": 70.2127659574468, "percent_statements_covered_display": "70.21"}, "missing_lines": [57, 61, 65, 69, 78, 79, 81, 82, 83, 85, 86, 90, 91, 92], "excluded_lines": [13, 14, 15, 16], "functions": {"Training.is_active": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [57], "excluded_lines": [], "start_line": 55}, "Training.is_completed": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [61], "excluded_lines": [], "start_line": 59}, "Training.is_cancelled": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [65], "excluded_lines": [], "start_line": 63}, "Training.progress_percentage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [69], "excluded_lines": [], "start_line": 67}, "Training.time_remaining_seconds": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [78, 79, 81, 82, 83, 85, 86], "excluded_lines": [], "start_line": 71}, "Training.is_ready_to_complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [90, 91, 92], "excluded_lines": [], "start_line": 88}, "": {"executed_lines": [3, 4, 5, 7, 8, 10, 11, 19, 22, 23, 24, 27, 30, 31, 32, 34, 35, 36, 38, 40, 41, 42, 44, 47, 51, 52, 53, 55, 59, 63, 67, 71, 88], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [13, 14, 15, 16], "start_line": 1}}, "classes": {"TrainingStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "TrainingBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "Training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [57, 61, 65, 69, 78, 79, 81, 82, 83, 85, 86, 90, 91, 92], "excluded_lines": [], "start_line": 47}, "": {"executed_lines": [3, 4, 5, 7, 8, 10, 11, 19, 22, 23, 24, 27, 30, 31, 32, 34, 35, 36, 38, 40, 41, 42, 44, 47, 51, 52, 53, 55, 59, 63, 67, 71, 88], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [13, 14, 15, 16], "start_line": 1}}}, "app\\models\\user.py": {"executed_lines": [1, 2, 4, 5, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 27, 29, 32, 33, 35], "summary": {"covered_lines": 20, "num_statements": 21, "percent_covered": 95.23809523809524, "percent_covered_display": "95.24", "missing_lines": 1, "excluded_lines": 4, "percent_statements_covered": 95.23809523809524, "percent_statements_covered_display": "95.24"}, "missing_lines": [36], "excluded_lines": [9, 10, 11, 12], "functions": {"User.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36], "excluded_lines": [], "start_line": 35}, "": {"executed_lines": [1, 2, 4, 5, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 27, 29, 32, 33, 35], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11, 12], "start_line": 1}}, "classes": {"UserBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "User": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36], "excluded_lines": [], "start_line": 26}, "": {"executed_lines": [1, 2, 4, 5, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 27, 29, 32, 33, 35], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11, 12], "start_line": 1}}}, "app\\models\\user_profile.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 14, 15, 16, 17, 20, 21, 22, 23, 26, 27, 28, 30], "summary": {"covered_lines": 18, "num_statements": 19, "percent_covered": 94.73684210526316, "percent_covered_display": "94.74", "missing_lines": 1, "excluded_lines": 2, "percent_statements_covered": 94.73684210526316, "percent_statements_covered_display": "94.74"}, "missing_lines": [31], "excluded_lines": [10, 11], "functions": {"UserProfile.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31], "excluded_lines": [], "start_line": 30}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 14, 15, 16, 17, 20, 21, 22, 23, 26, 27, 28, 30], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}, "classes": {"UserProfileBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "UserProfile": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31], "excluded_lines": [], "start_line": 26}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 14, 15, 16, 17, 20, 21, 22, 23, 26, 27, 28, 30], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}}, "app\\models\\uuid_types.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 27, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 27, "excluded_lines": 3, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 8, 9, 11, 18, 30, 31, 37, 42, 43, 49, 51, 52, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 81, 84, 94, 98], "excluded_lines": [13, 14, 15], "functions": {"UUID7.__get_pydantic_core_schema__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [37], "excluded_lines": [], "start_line": 31}, "UUID7.__get_pydantic_json_schema__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [49], "excluded_lines": [], "start_line": 43}, "UUID7._validate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [64, 65, 66, 67, 68, 69, 70, 71], "excluded_lines": [], "start_line": 52}, "UUID7.timestamp_ms": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [81], "excluded_lines": [], "start_line": 74}, "uuid7": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [94], "excluded_lines": [], "start_line": 84}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 3, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 8, 9, 11, 18, 30, 31, 42, 43, 51, 52, 73, 74, 84, 98], "excluded_lines": [13, 14, 15], "start_line": 1}}, "classes": {"UUID7": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [37, 49, 64, 65, 66, 67, 68, 69, 70, 71, 81], "excluded_lines": [], "start_line": 18}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 3, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 8, 9, 11, 18, 30, 31, 42, 43, 51, 52, 73, 74, 84, 94, 98], "excluded_lines": [13, 14, 15], "start_line": 1}}}, "app\\models\\vault.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 22, 24, 25, 26, 29, 30, 31, 32, 33, 34, 37, 41, 46, 50, 51, 52, 54, 55, 56, 58, 63], "summary": {"covered_lines": 28, "num_statements": 29, "percent_covered": 96.55172413793103, "percent_covered_display": "96.55", "missing_lines": 1, "excluded_lines": 7, "percent_statements_covered": 96.55172413793103, "percent_statements_covered_display": "96.55"}, "missing_lines": [47], "excluded_lines": [13, 14, 15, 16, 17, 18, 19], "functions": {"VaultBase.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [47], "excluded_lines": [], "start_line": 46}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 22, 24, 25, 26, 29, 30, 31, 32, 33, 34, 37, 41, 46, 50, 51, 52, 54, 55, 56, 58, 63], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 7, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [13, 14, 15, 16, 17, 18, 19], "start_line": 1}}, "classes": {"VaultBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [47], "excluded_lines": [], "start_line": 22}, "Vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 50}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 22, 24, 25, 26, 29, 30, 31, 32, 33, 34, 37, 41, 46, 50, 51, 52, 54, 55, 56, 58, 63], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 7, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [13, 14, 15, 16, 17, 18, 19], "start_line": 1}}}, "app\\models\\vault_objective.py": {"executed_lines": [1, 2, 5, 6, 7, 8, 9, 10], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 5, 6, 7, 8, 9, 10], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"VaultObjectiveProgressLink": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 5}, "": {"executed_lines": [1, 2, 5, 6, 7, 8, 9, 10], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\vault_quest.py": {"executed_lines": [1, 2, 5, 6, 7, 8, 9], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 5, 6, 7, 8, 9], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"VaultQuestCompletionLink": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 5}, "": {"executed_lines": [1, 2, 5, 6, 7, 8, 9], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\weapon.py": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 51, 55, 56, 57, 58, 59], "summary": {"covered_lines": 26, "num_statements": 43, "percent_covered": 60.46511627906977, "percent_covered_display": "60.47", "missing_lines": 17, "excluded_lines": 3, "percent_statements_covered": 60.46511627906977, "percent_statements_covered_display": "60.47"}, "missing_lines": [31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 49, 52], "excluded_lines": [11, 12, 13], "functions": {"WeaponBase.validate_weapon_subtype": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 49], "excluded_lines": [], "start_line": 30}, "WeaponBase.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [52], "excluded_lines": [], "start_line": 51}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 51, 55, 56, 57, 58, 59], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12, 13], "start_line": 1}}, "classes": {"WeaponBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 49, 52], "excluded_lines": [], "start_line": 16}, "Weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 55}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 51, 55, 56, 57, 58, 59], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12, 13], "start_line": 1}}}, "app\\schemas\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\common.py": {"executed_lines": [1, 4, 5, 6, 13, 14, 15, 18, 19, 20, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 43, 44, 45, 48, 49, 50, 53, 54, 55, 56, 59, 60, 61, 62, 63, 64, 67, 68, 69, 70, 73, 74, 75, 76, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 95, 96, 97, 98, 101, 102, 103, 104, 107, 108, 109, 110, 113, 114, 115, 116, 119, 120, 121, 122, 123, 124, 125, 126, 129, 130, 131, 132, 133, 134, 137, 138, 139, 140, 143, 144, 145, 146, 147, 148, 149, 150, 153, 154, 155, 156, 157, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 172, 173, 174, 175, 178], "summary": {"covered_lines": 126, "num_statements": 130, "percent_covered": 96.92307692307692, "percent_covered_display": "96.92", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 96.92307692307692, "percent_statements_covered_display": "96.92"}, "missing_lines": [7, 8, 9, 10], "excluded_lines": [], "functions": {"CaseInsensitiveEnum._missing_": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 8, 9, 10], "excluded_lines": [], "start_line": 6}, "": {"executed_lines": [1, 4, 5, 6, 13, 14, 15, 18, 19, 20, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 43, 44, 45, 48, 49, 50, 53, 54, 55, 56, 59, 60, 61, 62, 63, 64, 67, 68, 69, 70, 73, 74, 75, 76, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 95, 96, 97, 98, 101, 102, 103, 104, 107, 108, 109, 110, 113, 114, 115, 116, 119, 120, 121, 122, 123, 124, 125, 126, 129, 130, 131, 132, 133, 134, 137, 138, 139, 140, 143, 144, 145, 146, 147, 148, 149, 150, 153, 154, 155, 156, 157, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 172, 173, 174, 175, 178], "summary": {"covered_lines": 126, "num_statements": 126, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CaseInsensitiveEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 8, 9, 10], "excluded_lines": [], "start_line": 4}, "GameStatusEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "RadioModeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "DwellerStatusEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "RarityEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "SPECIALEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "GenderEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "AgeGroupEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 53}, "RelationshipTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 59}, "PregnancyStatusEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 67}, "RaceEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 73}, "FactionEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 80}, "SynthTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 95}, "GhoulFeralnessEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 101}, "SuperMutantMutationEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 107}, "ItemTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 113}, "JunkTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 119}, "OutfitTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 129}, "RoomActionEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 137}, "RoomTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 143}, "WeaponTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 153}, "WeaponSubtypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 160}, "AIModelType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 172}, "": {"executed_lines": [1, 4, 5, 6, 13, 14, 15, 18, 19, 20, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 43, 44, 45, 48, 49, 50, 53, 54, 55, 56, 59, 60, 61, 62, 63, 64, 67, 68, 69, 70, 73, 74, 75, 76, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 95, 96, 97, 98, 101, 102, 103, 104, 107, 108, 109, 110, 113, 114, 115, 116, 119, 120, 121, 122, 123, 124, 125, 126, 129, 130, 131, 132, 133, 134, 137, 138, 139, 140, 143, 144, 145, 146, 147, 148, 149, 150, 153, 154, 155, 156, 157, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 172, 173, 174, 175, 178], "summary": {"covered_lines": 126, "num_statements": 126, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\dweller.py": {"executed_lines": [1, 3, 4, 6, 7, 17, 18, 19, 20, 21, 23, 33, 40, 41, 42, 44, 47, 48, 51, 52, 53, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 69, 70, 76, 77, 80, 85, 88, 91, 92, 93, 94, 95, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 115, 116, 117, 118, 119, 120, 121, 124, 125, 126, 132, 133, 134, 135, 138, 139, 142, 143, 145, 148, 149, 150, 151, 152, 154, 157, 158, 159, 160], "summary": {"covered_lines": 88, "num_statements": 88, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 6, 7, 17, 18, 19, 20, 21, 23, 33, 40, 41, 42, 44, 47, 48, 51, 52, 53, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 69, 70, 76, 77, 80, 85, 88, 91, 92, 93, 94, 95, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 115, 116, 117, 118, 119, 120, 121, 124, 125, 126, 132, 133, 134, 135, 138, 139, 142, 143, 145, 148, 149, 150, 151, 152, 154, 157, 158, 159, 160], "summary": {"covered_lines": 88, "num_statements": 88, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"DwellerCreateWithoutVaultID": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "DwellerCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 47}, "DwellerVisualAttributesInput": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 51}, "DwellerCreateCommonOverride": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 88}, "DwellerReadLess": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 98}, "DwellerRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 132}, "DwellerReadWithVaultID": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 138}, "DwellerReadWithRoomID": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 142}, "DwellerReadFull": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 148}, "DwellerUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 158}, "": {"executed_lines": [1, 3, 4, 6, 7, 17, 18, 19, 20, 21, 23, 33, 40, 41, 42, 44, 47, 48, 51, 52, 53, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 69, 70, 76, 77, 80, 85, 88, 91, 92, 93, 94, 95, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 115, 116, 117, 118, 119, 120, 121, 124, 125, 126, 132, 133, 134, 135, 138, 139, 142, 143, 145, 148, 149, 150, 151, 152, 154, 157, 158, 159, 160], "summary": {"covered_lines": 88, "num_statements": 88, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\dweller_ai.py": {"executed_lines": [3, 6, 9, 15, 18, 24, 28, 29, 30, 31, 32, 33, 34, 35, 41, 42, 45], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 6, 9, 15, 18, 24, 28, 29, 30, 31, 32, 33, 34, 35, 41, 42, 45], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"DwellerBackstory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 6}, "ExtendedBio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "DwellerVisualAttributes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "": {"executed_lines": [3, 6, 9, 15, 18, 24, 28, 29, 30, 31, 32, 33, 34, 35, 41, 42, 45], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\exploration.py": {"executed_lines": [3, 5, 6, 8, 11, 14, 17, 20, 21, 22, 25, 28, 29, 30, 31, 32, 35, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 58, 59, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, 80, 81, 82, 83, 84, 85, 86, 89, 92, 93, 94, 95, 96, 99, 102, 103, 106, 109, 112, 115, 116], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 5, 6, 8, 11, 14, 17, 20, 21, 22, 25, 28, 29, 30, 31, 32, 35, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 58, 59, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, 80, 81, 82, 83, 84, 85, 86, 89, 92, 93, 94, 95, 96, 99, 102, 103, 106, 109, 112, 115, 116], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ExplorationBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "ExplorationCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "ExplorationUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "ExplorationRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "ExplorationReadShort": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 62}, "ExplorationProgress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 77}, "ExplorationEvent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 89}, "ExplorationSendRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "ExplorationRecallRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 106}, "ExplorationCompleteResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 112}, "": {"executed_lines": [3, 5, 6, 8, 11, 14, 17, 20, 21, 22, 25, 28, 29, 30, 31, 32, 35, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 58, 59, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, 80, 81, 82, 83, 84, 85, 86, 89, 92, 93, 94, 95, 96, 99, 102, 103, 106, 109, 112, 115, 116], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\exploration_event.py": {"executed_lines": [3, 5, 8, 11, 12, 13, 16, 19, 20, 21, 22, 23, 26, 29, 32, 37, 40, 43, 44, 45, 48, 51, 52, 53, 54, 57, 60, 61, 62, 63, 64, 67, 70, 71, 72, 75, 78, 79, 80, 83, 86, 87, 88, 91, 94, 95, 96, 99, 102, 103, 104, 105, 106, 107, 108, 109, 113], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 5, 8, 11, 12, 13, 16, 19, 20, 21, 22, 23, 26, 29, 32, 37, 40, 43, 44, 45, 48, 51, 52, 53, 54, 57, 60, 61, 62, 63, 64, 67, 70, 71, 72, 75, 78, 79, 80, 83, 86, 87, 88, 91, 94, 95, 96, 99, 102, 103, 104, 105, 106, 107, 108, 109, 113], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ItemSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 8}, "WeaponSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "OutfitSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "JunkSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "LootSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "EnemySchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "CombatEventSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "LootEventSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 67}, "DangerEventSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 75}, "RestEventSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "CombatOutcomeSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 91}, "RewardsSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "": {"executed_lines": [3, 5, 8, 11, 12, 13, 16, 19, 20, 21, 22, 23, 26, 29, 32, 37, 40, 43, 44, 45, 48, 51, 52, 53, 54, 57, 60, 61, 62, 63, 64, 67, 70, 71, 72, 75, 78, 79, 80, 83, 86, 87, 88, 91, 94, 95, 96, 99, 102, 103, 104, 105, 106, 107, 108, 109, 113], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\incident.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [3, 5, 7, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 34, 37, 40, 41, 42, 43, 44], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [3, 5, 7, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 34, 37, 40, 41, 42, 43, 44], "excluded_lines": [], "start_line": 1}}, "classes": {"IncidentRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "IncidentResolveRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "IncidentResolveResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 37}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [3, 5, 7, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 34, 37, 40, 41, 42, 43, 44], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\item.py": {"executed_lines": [1, 3, 4, 7, 8, 11, 12, 15, 16, 17], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 7, 8, 11, 12, 15, 16, 17], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ItemCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 7}, "ItemRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "ItemUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [1, 3, 4, 7, 8, 11, 12, 15, 16, 17], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\junk.py": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 14, 15, 16, 17, 20, 21, 22], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 14, 15, 16, 17, 20, 21, 22], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"JunkCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "JunkRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "JunkUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 14, 15, 16, 17, 20, 21, 22], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\llm_interaction.py": {"executed_lines": [1, 3, 5, 8, 9, 12, 13, 14, 15], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 8, 9, 12, 13, 14, 15], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"LLMInteractionCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 8}, "LLMInteractionRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "": {"executed_lines": [1, 3, 5, 8, 9, 12, 13, 14, 15], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\objective.py": {"executed_lines": [1, 3, 4, 7, 8, 11, 12, 13, 14, 15, 18, 19, 20], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 7, 8, 11, 12, 13, 14, 15, 18, 19, 20], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ObjectiveCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 7}, "ObjectiveRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "ObjectiveUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "": {"executed_lines": [1, 3, 4, 7, 8, 11, 12, 13, 14, 15, 18, 19, 20], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\outfit.py": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 24, 25, 26, 27, 30, 31, 32, 33], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 24, 25, 26, 27, 30, 31, 32, 33], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"SPECIALOutfitCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "OutfitCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "OutfitRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "OutfitUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 24, 25, 26, 27, 30, 31, 32, 33], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\pregnancy.py": {"executed_lines": [3, 5, 6, 8, 9, 12, 15, 16, 19, 22, 23, 24, 25, 27, 30, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 46, 49, 50, 51], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 5, 6, 8, 9, 12, 15, 16, 19, 22, 23, 24, 25, 27, 30, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 46, 49, 50, 51], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"PregnancyCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "PregnancyRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "PregnancyProgress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "DeliveryResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "": {"executed_lines": [3, 5, 6, 8, 9, 12, 15, 16, 19, 22, 23, 24, 25, 27, 30, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 46, 49, 50, 51], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\prompt.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 4, 7, 8, 11, 12, 15, 16, 17], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 4, 7, 8, 11, 12, 15, 16, 17], "excluded_lines": [], "start_line": 1}}, "classes": {"PromptCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 7}, "PromptRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "PromptUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 4, 7, 8, 11, 12, 15, 16, 17], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\quest.py": {"executed_lines": [1, 2, 4, 5, 8, 9, 12, 13, 14, 15, 18, 19, 20, 21, 24, 25, 26, 29, 32, 35, 38, 39, 40, 41, 42, 44, 47, 50, 51], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 4, 5, 8, 9, 12, 13, 14, 15, 18, 19, 20, 21, 24, 25, 26, 29, 32, 35, 38, 39, 40, 41, 42, 44, 47, 50, 51], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"QuestCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 8}, "QuestRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "QuestReadShort": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "QuestUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "QuestObjectiveJSON": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "QuestJSON": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "QuestChainJSON": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 47}, "": {"executed_lines": [1, 2, 4, 5, 8, 9, 12, 13, 14, 15, 18, 19, 20, 21, 24, 25, 26, 29, 32, 35, 38, 39, 40, 41, 42, 44, 47, 50, 51], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\radio.py": {"executed_lines": [3, 4, 6, 9, 12, 13, 16, 19, 20, 21, 22, 23, 24, 25, 26, 29, 32, 37, 40, 41, 42], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 4, 6, 9, 12, 13, 16, 19, 20, 21, 22, 23, 24, 25, 26, 29, 32, 37, 40, 41, 42], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"SpeedupMultiplier": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "RadioStatsRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "ManualRecruitRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "RecruitmentResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 37}, "": {"executed_lines": [3, 4, 6, 9, 12, 13, 16, 19, 20, 21, 22, 23, 24, 25, 26, 29, 32, 37, 40, 41, 42], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\relationship.py": {"executed_lines": [3, 4, 6, 7, 10, 13, 14, 17, 20, 21, 23, 26, 29, 31, 34, 37, 38, 39, 40, 41, 42, 43, 46, 49], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 4, 6, 7, 10, 13, 14, 17, 20, 21, 23, 26, 29, 31, 34, 37, 38, 39, 40, 41, 42, 43, 46, 49], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RelationshipCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "RelationshipUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "RelationshipRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "CompatibilityScore": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "RelationshipAction": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "": {"executed_lines": [3, 4, 6, 7, 10, 13, 14, 17, 20, 21, 23, 26, 29, 31, 34, 37, 38, 39, 40, 41, 42, 43, 46, 49], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\room.py": {"executed_lines": [1, 3, 5, 6, 9, 10, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 9, 10, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RoomCreateWithoutVaultID": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "RoomCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "RoomRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "RoomUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "": {"executed_lines": [1, 3, 5, 6, 9, 10, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\token.py": {"executed_lines": [1, 4, 5, 6, 7, 10, 11], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 4, 5, 6, 7, 10, 11], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"Token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 4}, "TokenPayload": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [1, 4, 5, 6, 7, 10, 11], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\training.py": {"executed_lines": [3, 5, 7, 10, 14, 18, 21, 22, 23, 25, 26, 29, 32, 33, 36, 39, 40, 41, 42, 44, 45], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 5, 7, 10, 14, 18, 21, 22, 23, 25, 26, 29, 32, 33, 36, 39, 40, 41, 42, 44, 45], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TrainingCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "TrainingUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "TrainingRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "TrainingRead.Config": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "TrainingStartRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "TrainingProgress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 36}, "TrainingProgress.Config": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 44}, "": {"executed_lines": [3, 5, 7, 10, 14, 18, 21, 22, 23, 25, 26, 29, 32, 33, 36, 39, 40, 41, 42, 44, 45], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\user.py": {"executed_lines": [1, 2, 4, 6, 7, 13, 14, 17, 18, 19, 20, 23, 24, 25, 26, 29, 30, 33, 34, 35], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10], "functions": {"": {"executed_lines": [1, 2, 4, 6, 7, 13, 14, 17, 18, 19, 20, 23, 24, 25, 26, 29, 30, 33, 34, 35], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10], "start_line": 1}}, "classes": {"UserCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "UserRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "UserWithTokens": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "UserReadWithVaults": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "UserUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "": {"executed_lines": [1, 2, 4, 6, 7, 13, 14, 17, 18, 19, 20, 23, 24, 25, 26, 29, 30, 33, 34, 35], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10], "start_line": 1}}}, "app\\schemas\\user_profile.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 27, 28, 29, 30], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 27, 28, 29, 30], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ProfileRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "ProfileUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "ProfileUpdateStatistics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 27, 28, 29, 30], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\vault.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 14, 15, 18, 19, 22, 23, 24, 25, 28, 29, 32, 33, 34, 37, 38, 39], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 14, 15, 18, 19, 22, 23, 24, 25, 28, 29, 32, 33, 34, 37, 38, 39], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"VaultCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "VaultCreateWithUserID": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "VaultNumber": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "VaultRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "VaultReadWithUser": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "VaultReadWithNumbers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "VaultUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 14, 15, 18, 19, 22, 23, 24, 25, 28, 29, 32, 33, 34, 37, 38, 39], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\weapon.py": {"executed_lines": [1, 3, 5, 6, 9, 10, 13, 14, 15, 16, 19, 20, 21, 22], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 9, 10, 13, 14, 15, 16, 19, 20, 21, 22], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"WeaponCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "WeaponRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "WeaponUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "": {"executed_lines": [1, 3, 5, 6, 9, 10, 13, 14, 15, 16, 19, 20, 21, 22], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\breeding_service.py": {"executed_lines": [3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 22, 24, 27, 30, 31, 143, 144, 179, 180, 204, 205, 292, 293, 328, 329, 354, 355, 406, 407, 431], "summary": {"covered_lines": 31, "num_statements": 160, "percent_covered": 19.375, "percent_covered_display": "19.38", "missing_lines": 129, "excluded_lines": 0, "percent_statements_covered": 19.375, "percent_statements_covered_display": "19.38"}, "missing_lines": [46, 49, 51, 52, 54, 57, 64, 67, 68, 70, 71, 73, 75, 76, 79, 80, 83, 84, 85, 86, 89, 90, 92, 93, 96, 97, 100, 101, 104, 106, 110, 111, 115, 116, 118, 121, 123, 124, 125, 127, 128, 131, 136, 137, 141, 160, 161, 163, 171, 172, 173, 175, 177, 194, 202, 223, 224, 226, 227, 228, 230, 231, 232, 235, 236, 238, 239, 241, 242, 243, 246, 247, 248, 251, 252, 255, 257, 273, 274, 277, 278, 279, 280, 283, 284, 285, 286, 288, 290, 304, 306, 307, 308, 309, 312, 315, 318, 321, 322, 324, 326, 341, 343, 344, 346, 349, 350, 352, 369, 371, 379, 381, 382, 384, 387, 388, 389, 390, 391, 392, 394, 395, 397, 399, 401, 402, 404, 421, 428], "excluded_lines": [], "functions": {"BreedingService.check_for_conception": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 45, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 45, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [46, 49, 51, 52, 54, 57, 64, 67, 68, 70, 71, 73, 75, 76, 79, 80, 83, 84, 85, 86, 89, 90, 92, 93, 96, 97, 100, 101, 104, 106, 110, 111, 115, 116, 118, 121, 123, 124, 125, 127, 128, 131, 136, 137, 141], "excluded_lines": [], "start_line": 31}, "BreedingService.create_pregnancy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [160, 161, 163, 171, 172, 173, 175, 177], "excluded_lines": [], "start_line": 144}, "BreedingService.check_due_pregnancies": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [194, 202], "excluded_lines": [], "start_line": 180}, "BreedingService.deliver_baby": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 34, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 34, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [223, 224, 226, 227, 228, 230, 231, 232, 235, 236, 238, 239, 241, 242, 243, 246, 247, 248, 251, 252, 255, 257, 273, 274, 277, 278, 279, 280, 283, 284, 285, 286, 288, 290], "excluded_lines": [], "start_line": 205}, "BreedingService._calculate_inherited_stats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [304, 306, 307, 308, 309, 312, 315, 318, 321, 322, 324, 326], "excluded_lines": [], "start_line": 293}, "BreedingService._calculate_inherited_rarity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [341, 343, 344, 346, 349, 350, 352], "excluded_lines": [], "start_line": 329}, "BreedingService.age_children": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [369, 371, 379, 381, 382, 384, 387, 388, 389, 390, 391, 392, 394, 395, 397, 399, 401, 402, 404], "excluded_lines": [], "start_line": 355}, "BreedingService.get_active_pregnancies": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [421, 428], "excluded_lines": [], "start_line": 407}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 22, 24, 27, 30, 31, 143, 144, 179, 180, 204, 205, 292, 293, 328, 329, 354, 355, 406, 407, 431], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"BreedingService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 129, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 129, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [46, 49, 51, 52, 54, 57, 64, 67, 68, 70, 71, 73, 75, 76, 79, 80, 83, 84, 85, 86, 89, 90, 92, 93, 96, 97, 100, 101, 104, 106, 110, 111, 115, 116, 118, 121, 123, 124, 125, 127, 128, 131, 136, 137, 141, 160, 161, 163, 171, 172, 173, 175, 177, 194, 202, 223, 224, 226, 227, 228, 230, 231, 232, 235, 236, 238, 239, 241, 242, 243, 246, 247, 248, 251, 252, 255, 257, 273, 274, 277, 278, 279, 280, 283, 284, 285, 286, 288, 290, 304, 306, 307, 308, 309, 312, 315, 318, 321, 322, 324, 326, 341, 343, 344, 346, 349, 350, 352, 369, 371, 379, 381, 382, 384, 387, 388, 389, 390, 391, 392, 394, 395, 397, 399, 401, 402, 404, 421, 428], "excluded_lines": [], "start_line": 27}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 22, 24, 27, 30, 31, 143, 144, 179, 180, 204, 205, 292, 293, 328, 329, 354, 355, 406, 407, 431], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\conversation_service.py": {"executed_lines": [3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 24, 30, 33, 34, 35, 37, 38, 53, 54, 93, 218], "summary": {"covered_lines": 27, "num_statements": 61, "percent_covered": 44.26229508196721, "percent_covered_display": "44.26", "missing_lines": 34, "excluded_lines": 0, "percent_statements_covered": 44.26229508196721, "percent_statements_covered_display": "44.26"}, "missing_lines": [48, 49, 51, 65, 66, 73, 77, 114, 115, 116, 117, 120, 121, 122, 125, 126, 127, 128, 137, 140, 143, 144, 152, 153, 154, 161, 162, 163, 164, 173, 179, 182, 196, 208], "excluded_lines": [], "functions": {"ConversationService.__init__": {"executed_lines": [34, 35], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "ConversationService._select_voice_for_gender": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [48, 49, 51], "excluded_lines": [], "start_line": 38}, "ConversationService._build_dweller_prompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [65, 66, 73, 77], "excluded_lines": [], "start_line": 54}, "ConversationService.process_audio_message": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 27, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [114, 115, 116, 117, 120, 121, 122, 125, 126, 127, 128, 137, 140, 143, 144, 152, 153, 154, 161, 162, 163, 164, 173, 179, 182, 196, 208], "excluded_lines": [], "start_line": 93}, "": {"executed_lines": [3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 24, 30, 33, 37, 38, 53, 54, 93, 218], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ConversationService": {"executed_lines": [34, 35], "summary": {"covered_lines": 2, "num_statements": 36, "percent_covered": 5.555555555555555, "percent_covered_display": "5.56", "missing_lines": 34, "excluded_lines": 0, "percent_statements_covered": 5.555555555555555, "percent_statements_covered_display": "5.56"}, "missing_lines": [48, 49, 51, 65, 66, 73, 77, 114, 115, 116, 117, 120, 121, 122, 125, 126, 127, 128, 137, 140, 143, 144, 152, 153, 154, 161, 162, 163, 164, 173, 179, 182, 196, 208], "excluded_lines": [], "start_line": 30}, "": {"executed_lines": [3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 24, 30, 33, 37, 38, 53, 54, 93, 218], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\dweller_ai.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 28, 31, 32, 33, 34, 36, 86, 116, 160, 213, 274, 315, 341], "summary": {"covered_lines": 31, "num_statements": 116, "percent_covered": 26.724137931034484, "percent_covered_display": "26.72", "missing_lines": 85, "excluded_lines": 0, "percent_statements_covered": 26.724137931034484, "percent_statements_covered_display": "26.72"}, "missing_lines": [46, 47, 48, 50, 51, 54, 62, 63, 66, 67, 68, 69, 71, 73, 79, 84, 88, 89, 90, 93, 96, 97, 99, 101, 103, 109, 114, 125, 126, 127, 130, 138, 143, 145, 147, 153, 158, 169, 170, 171, 173, 174, 175, 180, 188, 189, 192, 196, 200, 206, 211, 226, 227, 228, 230, 231, 232, 237, 238, 239, 240, 241, 242, 244, 251, 252, 253, 255, 261, 267, 272, 285, 290, 306, 308, 323, 324, 325, 327, 328, 331, 332, 335, 336, 338], "excluded_lines": [], "functions": {"DwellerAIService.__init__": {"executed_lines": [33, 34], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "DwellerAIService.generate_backstory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [46, 47, 48, 50, 51, 54, 62, 63, 66, 67, 68, 69, 71, 73, 79, 84], "excluded_lines": [], "start_line": 36}, "DwellerAIService.extend_bio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [88, 89, 90, 93, 96, 97, 99, 101, 103, 109, 114], "excluded_lines": [], "start_line": 86}, "DwellerAIService.generate_visual_attributes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [125, 126, 127, 130, 138, 143, 145, 147, 153, 158], "excluded_lines": [], "start_line": 116}, "DwellerAIService.generate_photo": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [169, 170, 171, 173, 174, 175, 180, 188, 189, 192, 196, 200, 206, 211], "excluded_lines": [], "start_line": 160}, "DwellerAIService.generate_audio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 20, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [226, 227, 228, 230, 231, 232, 237, 238, 239, 240, 241, 242, 244, 251, 252, 253, 255, 261, 267, 272], "excluded_lines": [], "start_line": 213}, "DwellerAIService.generate_dweller_avatar": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [285, 290, 306, 308], "excluded_lines": [], "start_line": 274}, "DwellerAIService.dweller_generate_pipeline": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [323, 324, 325, 327, 328, 331, 332, 335, 336, 338], "excluded_lines": [], "start_line": 315}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 28, 31, 32, 36, 86, 116, 160, 213, 274, 315, 341], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"DwellerAIService": {"executed_lines": [33, 34], "summary": {"covered_lines": 2, "num_statements": 87, "percent_covered": 2.2988505747126435, "percent_covered_display": "2.30", "missing_lines": 85, "excluded_lines": 0, "percent_statements_covered": 2.2988505747126435, "percent_statements_covered_display": "2.30"}, "missing_lines": [46, 47, 48, 50, 51, 54, 62, 63, 66, 67, 68, 69, 71, 73, 79, 84, 88, 89, 90, 93, 96, 97, 99, 101, 103, 109, 114, 125, 126, 127, 130, 138, 143, 145, 147, 153, 158, 169, 170, 171, 173, 174, 175, 180, 188, 189, 192, 196, 200, 206, 211, 226, 227, 228, 230, 231, 232, 237, 238, 239, 240, 241, 242, 244, 251, 252, 253, 255, 261, 267, 272, 285, 290, 306, 308, 323, 324, 325, 327, 328, 331, 332, 335, 336, 338], "excluded_lines": [], "start_line": 31}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 28, 31, 32, 36, 86, 116, 160, 213, 274, 315, 341], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\__init__.py": {"executed_lines": [3, 6, 8], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 6, 8], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 6, 8], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\combat_calculator.py": {"executed_lines": [3, 5, 6, 7, 8, 11, 14, 37, 74], "summary": {"covered_lines": 9, "num_statements": 29, "percent_covered": 31.03448275862069, "percent_covered_display": "31.03", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 31.03448275862069, "percent_statements_covered_display": "31.03"}, "missing_lines": [24, 25, 26, 29, 30, 32, 33, 35, 49, 52, 53, 58, 60, 62, 63, 64, 67, 68, 69, 70], "excluded_lines": [], "functions": {"CombatCalculator.select_enemy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24, 25, 26, 29, 30, 32, 33, 35], "excluded_lines": [], "start_line": 14}, "CombatCalculator.calculate_combat_outcome": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [49, 52, 53, 58, 60, 62, 63, 64, 67, 68, 69, 70], "excluded_lines": [], "start_line": 37}, "": {"executed_lines": [3, 5, 6, 7, 8, 11, 14, 37, 74], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CombatCalculator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 20, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24, 25, 26, 29, 30, 32, 33, 35, 49, 52, 53, 58, 60, 62, 63, 64, 67, 68, 69, 70], "excluded_lines": [], "start_line": 11}, "": {"executed_lines": [3, 5, 6, 7, 8, 11, 14, 37, 74], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\coordinator.py": {"executed_lines": [3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 24, 27, 79, 98, 106, 114, 139, 170, 195, 235, 302], "summary": {"covered_lines": 26, "num_statements": 130, "percent_covered": 20.0, "percent_covered_display": "20.00", "missing_lines": 104, "excluded_lines": 0, "percent_statements_covered": 20.0, "percent_statements_covered_display": "20.00"}, "missing_lines": [38, 40, 41, 45, 46, 47, 49, 54, 57, 58, 60, 61, 63, 64, 67, 70, 71, 74, 75, 76, 77, 81, 82, 83, 84, 87, 95, 96, 100, 102, 103, 104, 108, 110, 111, 112, 125, 127, 128, 131, 134, 137, 150, 152, 153, 156, 159, 162, 165, 168, 172, 173, 174, 176, 178, 180, 182, 183, 184, 185, 186, 188, 191, 193, 199, 200, 203, 206, 207, 208, 209, 212, 213, 215, 216, 219, 222, 224, 226, 237, 238, 241, 244, 245, 247, 248, 249, 250, 253, 254, 255, 256, 258, 260, 261, 262, 273, 275, 277, 278, 279, 287, 291, 298], "excluded_lines": [], "functions": {"ExplorationCoordinator.process_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [38, 40, 41, 45, 46, 47, 49, 54, 57, 58, 60, 61, 63, 64, 67, 70, 71, 74, 75, 76, 77], "excluded_lines": [], "start_line": 27}, "ExplorationCoordinator._handle_loot_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [81, 82, 83, 84, 87, 95, 96], "excluded_lines": [], "start_line": 79}, "ExplorationCoordinator._apply_health_loss": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [100, 102, 103, 104], "excluded_lines": [], "start_line": 98}, "ExplorationCoordinator._apply_health_restoration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [108, 110, 111, 112], "excluded_lines": [], "start_line": 106}, "ExplorationCoordinator.complete_exploration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [125, 127, 128, 131, 134, 137], "excluded_lines": [], "start_line": 114}, "ExplorationCoordinator.recall_exploration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [150, 152, 153, 156, 159, 162, 165, 168], "excluded_lines": [], "start_line": 139}, "ExplorationCoordinator._update_dweller_status_after_return": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [172, 173, 174, 176, 178, 180, 182, 183, 184, 185, 186, 188, 191, 193], "excluded_lines": [], "start_line": 170}, "ExplorationCoordinator._apply_rewards": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [199, 200, 203, 206, 207, 208, 209, 212, 213, 215, 216, 219, 222, 224, 226], "excluded_lines": [], "start_line": 195}, "ExplorationCoordinator._transfer_loot_to_storage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 25, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 25, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [237, 238, 241, 244, 245, 247, 248, 249, 250, 253, 254, 255, 256, 258, 260, 261, 262, 273, 275, 277, 278, 279, 287, 291, 298], "excluded_lines": [], "start_line": 235}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 24, 27, 79, 98, 106, 114, 139, 170, 195, 235, 302], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ExplorationCoordinator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 104, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 104, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [38, 40, 41, 45, 46, 47, 49, 54, 57, 58, 60, 61, 63, 64, 67, 70, 71, 74, 75, 76, 77, 81, 82, 83, 84, 87, 95, 96, 100, 102, 103, 104, 108, 110, 111, 112, 125, 127, 128, 131, 134, 137, 150, 152, 153, 156, 159, 162, 165, 168, 172, 173, 174, 176, 178, 180, 182, 183, 184, 185, 186, 188, 191, 193, 199, 200, 203, 206, 207, 208, 209, 212, 213, 215, 216, 219, 222, 224, 226, 237, 238, 241, 244, 245, 247, 248, 249, 250, 253, 254, 255, 256, 258, 260, 261, 262, 273, 275, 277, 278, 279, 287, 291, 298], "excluded_lines": [], "start_line": 24}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 24, 27, 79, 98, 106, 114, 139, 170, 195, 235, 302], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\data_loader.py": {"executed_lines": [3, 4, 5, 7, 10, 11, 12, 15, 16, 28, 29, 39, 40, 50, 51, 61, 62, 76, 87], "summary": {"covered_lines": 19, "num_statements": 50, "percent_covered": 38.0, "percent_covered_display": "38.00", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 38.0, "percent_statements_covered_display": "38.00"}, "missing_lines": [18, 19, 20, 22, 23, 25, 31, 32, 33, 35, 36, 42, 43, 44, 46, 47, 53, 54, 55, 57, 58, 64, 65, 66, 68, 69, 70, 71, 73, 78, 89], "excluded_lines": [], "functions": {"load_enemies": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [18, 19, 20, 22, 23, 25], "excluded_lines": [], "start_line": 16}, "load_event_templates": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 32, 33, 35, 36], "excluded_lines": [], "start_line": 29}, "load_junk_items": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42, 43, 44, 46, 47], "excluded_lines": [], "start_line": 40}, "load_weapons": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [53, 54, 55, 57, 58], "excluded_lines": [], "start_line": 51}, "load_outfits": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [64, 65, 66, 68, 69, 70, 71, 73], "excluded_lines": [], "start_line": 62}, "_get_fallback_enemies": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [78], "excluded_lines": [], "start_line": 76}, "_get_fallback_templates": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [89], "excluded_lines": [], "start_line": 87}, "": {"executed_lines": [3, 4, 5, 7, 10, 11, 12, 15, 16, 28, 29, 39, 40, 50, 51, 61, 62, 76, 87], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 4, 5, 7, 10, 11, 12, 15, 16, 28, 29, 39, 40, 50, 51, 61, 62, 76, 87], "summary": {"covered_lines": 19, "num_statements": 50, "percent_covered": 38.0, "percent_covered_display": "38.00", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 38.0, "percent_statements_covered_display": "38.00"}, "missing_lines": [18, 19, 20, 22, 23, 25, 31, 32, 33, 35, 36, 42, 43, 44, 46, 47, 53, 54, 55, 57, 58, 64, 65, 66, 68, 69, 70, 71, 73, 78, 89], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\event_generator.py": {"executed_lines": [3, 4, 6, 7, 8, 16, 17, 18, 21, 24, 54, 91, 104, 122, 133, 150], "summary": {"covered_lines": 16, "num_statements": 66, "percent_covered": 24.242424242424242, "percent_covered_display": "24.24", "missing_lines": 50, "excluded_lines": 0, "percent_statements_covered": 24.242424242424242, "percent_statements_covered_display": "24.24"}, "missing_lines": [34, 35, 37, 40, 41, 42, 43, 45, 47, 50, 51, 52, 64, 65, 68, 69, 76, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 97, 106, 107, 110, 111, 113, 114, 115, 117, 124, 125, 127, 128, 129, 131, 135, 136, 139, 140, 142, 143, 144, 146], "excluded_lines": [], "functions": {"EventGenerator.can_generate_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [34, 35, 37, 40, 41, 42, 43, 45, 47, 50, 51, 52], "excluded_lines": [], "start_line": 24}, "EventGenerator.generate_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [64, 65, 68, 69, 76, 83, 84, 85, 86, 87, 88, 89], "excluded_lines": [], "start_line": 54}, "EventGenerator._generate_combat_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [93, 94, 95, 97], "excluded_lines": [], "start_line": 91}, "EventGenerator._generate_loot_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [106, 107, 110, 111, 113, 114, 115, 117], "excluded_lines": [], "start_line": 104}, "EventGenerator._generate_danger_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [124, 125, 127, 128, 129, 131], "excluded_lines": [], "start_line": 122}, "EventGenerator._generate_rest_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [135, 136, 139, 140, 142, 143, 144, 146], "excluded_lines": [], "start_line": 133}, "": {"executed_lines": [3, 4, 6, 7, 8, 16, 17, 18, 21, 24, 54, 91, 104, 122, 133, 150], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"EventGenerator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 50, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 50, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [34, 35, 37, 40, 41, 42, 43, 45, 47, 50, 51, 52, 64, 65, 68, 69, 76, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 97, 106, 107, 110, 111, 113, 114, 115, 117, 124, 125, 127, 128, 129, 131, 135, 136, 139, 140, 142, 143, 144, 146], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [3, 4, 6, 7, 8, 16, 17, 18, 21, 24, 54, 91, 104, 122, 133, 150], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\loot_calculator.py": {"executed_lines": [3, 5, 6, 7, 10, 13, 27, 52, 80, 99, 118, 155, 172], "summary": {"covered_lines": 13, "num_statements": 65, "percent_covered": 20.0, "percent_covered_display": "20.00", "missing_lines": 52, "excluded_lines": 0, "percent_statements_covered": 20.0, "percent_statements_covered_display": "20.00"}, "missing_lines": [23, 25, 37, 40, 41, 42, 43, 44, 45, 50, 54, 55, 56, 67, 68, 74, 75, 76, 78, 82, 83, 84, 86, 87, 93, 94, 95, 97, 101, 102, 103, 105, 106, 112, 113, 114, 116, 128, 131, 132, 133, 134, 136, 142, 148, 149, 150, 151, 153, 166, 167, 168], "excluded_lines": [], "functions": {"LootCalculator.calculate_luck_multiplier": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [23, 25], "excluded_lines": [], "start_line": 13}, "LootCalculator.get_rarity_weights": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [37, 40, 41, 42, 43, 44, 45, 50], "excluded_lines": [], "start_line": 27}, "LootCalculator.select_random_weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [54, 55, 56, 67, 68, 74, 75, 76, 78], "excluded_lines": [], "start_line": 52}, "LootCalculator.select_random_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [82, 83, 84, 86, 87, 93, 94, 95, 97], "excluded_lines": [], "start_line": 80}, "LootCalculator.select_random_junk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [101, 102, 103, 105, 106, 112, 113, 114, 116], "excluded_lines": [], "start_line": 99}, "LootCalculator.select_random_loot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [128, 131, 132, 133, 134, 136, 142, 148, 149, 150, 151, 153], "excluded_lines": [], "start_line": 118}, "LootCalculator.calculate_caps_found": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [166, 167, 168], "excluded_lines": [], "start_line": 155}, "": {"executed_lines": [3, 5, 6, 7, 10, 13, 27, 52, 80, 99, 118, 155, 172], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"LootCalculator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 52, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 52, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [23, 25, 37, 40, 41, 42, 43, 44, 45, 50, 54, 55, 56, 67, 68, 74, 75, 76, 78, 82, 83, 84, 86, 87, 93, 94, 95, 97, 101, 102, 103, 105, 106, 112, 113, 114, 116, 128, 131, 132, 133, 134, 136, 142, 148, 149, 150, 151, 153, 166, 167, 168], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [3, 5, 6, 7, 10, 13, 27, 52, 80, 99, 118, 155, 172], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\rewards_calculator.py": {"executed_lines": [3, 4, 7, 10, 49], "summary": {"covered_lines": 5, "num_statements": 16, "percent_covered": 31.25, "percent_covered_display": "31.25", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 31.25, "percent_statements_covered_display": "31.25"}, "missing_lines": [26, 29, 30, 31, 33, 36, 37, 38, 41, 43, 45], "excluded_lines": [], "functions": {"RewardsCalculator.calculate_exploration_xp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [26, 29, 30, 31, 33, 36, 37, 38, 41, 43, 45], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [3, 4, 7, 10, 49], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RewardsCalculator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [26, 29, 30, 31, 33, 36, 37, 38, 41, 43, 45], "excluded_lines": [], "start_line": 7}, "": {"executed_lines": [3, 4, 7, 10, 49], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration_service.py": {"executed_lines": [7, 8, 10, 11, 12, 13, 14, 15, 18, 26, 38, 51, 64, 77, 109, 132, 152, 172, 195], "summary": {"covered_lines": 19, "num_statements": 39, "percent_covered": 48.717948717948715, "percent_covered_display": "48.72", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 48.717948717948715, "percent_statements_covered_display": "48.72"}, "missing_lines": [36, 49, 62, 75, 96, 98, 99, 102, 120, 122, 148, 149, 150, 168, 169, 170, 186, 188, 189, 191], "excluded_lines": [], "functions": {"ExplorationService.generate_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36], "excluded_lines": [], "start_line": 26}, "ExplorationService.process_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [49], "excluded_lines": [], "start_line": 38}, "ExplorationService.complete_exploration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [62], "excluded_lines": [], "start_line": 51}, "ExplorationService.recall_exploration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [75], "excluded_lines": [], "start_line": 64}, "ExplorationService.send_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [96, 98, 99, 102], "excluded_lines": [], "start_line": 77}, "ExplorationService.get_exploration_progress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [120, 122], "excluded_lines": [], "start_line": 109}, "ExplorationService.complete_exploration_with_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [148, 149, 150], "excluded_lines": [], "start_line": 132}, "ExplorationService.recall_exploration_with_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [168, 169, 170], "excluded_lines": [], "start_line": 152}, "ExplorationService.process_event_for_exploration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [186, 188, 189, 191], "excluded_lines": [], "start_line": 172}, "": {"executed_lines": [7, 8, 10, 11, 12, 13, 14, 15, 18, 26, 38, 51, 64, 77, 109, 132, 152, 172, 195], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ExplorationService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 20, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36, 49, 62, 75, 96, 98, 99, 102, 120, 122, 148, 149, 150, 168, 169, 170, 186, 188, 189, 191], "excluded_lines": [], "start_line": 18}, "": {"executed_lines": [7, 8, 10, 11, 12, 13, 14, 15, 18, 26, 38, 51, 64, 77, 109, 132, 152, 172, 195], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\game_loop.py": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 26, 27, 28, 30, 68, 165, 176, 187, 200, 216, 231, 285, 329, 386, 444, 455, 534, 640, 684, 713, 741], "summary": {"covered_lines": 37, "num_statements": 352, "percent_covered": 10.511363636363637, "percent_covered_display": "10.51", "missing_lines": 315, "excluded_lines": 0, "percent_statements_covered": 10.511363636363637, "percent_statements_covered_display": "10.51"}, "missing_lines": [37, 44, 47, 49, 51, 52, 53, 54, 55, 56, 57, 59, 61, 66, 80, 83, 84, 85, 88, 91, 92, 95, 98, 100, 107, 109, 111, 112, 117, 119, 126, 127, 128, 131, 132, 135, 136, 139, 140, 143, 144, 147, 148, 151, 152, 156, 159, 160, 161, 163, 167, 168, 169, 170, 171, 173, 174, 178, 179, 180, 181, 182, 184, 185, 189, 191, 203, 204, 205, 207, 208, 211, 212, 213, 214, 218, 219, 220, 222, 223, 224, 225, 226, 227, 229, 238, 240, 242, 248, 250, 255, 257, 258, 260, 262, 263, 264, 267, 270, 271, 272, 273, 275, 277, 279, 280, 281, 283, 297, 298, 299, 301, 303, 304, 307, 310, 311, 313, 314, 317, 318, 319, 322, 323, 324, 325, 327, 337, 339, 340, 341, 343, 349, 351, 352, 353, 356, 359, 360, 361, 362, 363, 366, 367, 369, 371, 372, 373, 374, 375, 377, 379, 381, 382, 384, 394, 396, 397, 398, 400, 406, 408, 409, 412, 414, 415, 417, 420, 424, 427, 428, 429, 434, 436, 438, 439, 440, 442, 453, 464, 466, 467, 469, 477, 479, 480, 481, 482, 483, 484, 487, 488, 491, 494, 495, 496, 498, 499, 501, 504, 505, 506, 509, 510, 511, 512, 514, 516, 519, 520, 521, 522, 525, 526, 528, 529, 530, 532, 545, 547, 548, 549, 550, 551, 553, 555, 557, 558, 559, 561, 562, 565, 566, 567, 568, 569, 572, 575, 578, 579, 582, 583, 584, 585, 586, 587, 590, 591, 592, 593, 596, 597, 599, 600, 602, 604, 610, 611, 612, 616, 617, 620, 623, 624, 625, 627, 628, 631, 633, 634, 635, 636, 638, 651, 653, 655, 658, 659, 660, 661, 662, 663, 664, 665, 666, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 682, 695, 697, 699, 701, 702, 703, 704, 705, 706, 707, 708, 709, 711, 723, 726, 729, 732], "excluded_lines": [], "functions": {"GameLoopService.__init__": {"executed_lines": [27, 28], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "GameLoopService.process_game_tick": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [37, 44, 47, 49, 51, 52, 53, 54, 55, 56, 57, 59, 61, 66], "excluded_lines": [], "start_line": 30}, "GameLoopService.process_vault_tick": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 36, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 36, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [80, 83, 84, 85, 88, 91, 92, 95, 98, 100, 107, 109, 111, 112, 117, 119, 126, 127, 128, 131, 132, 135, 136, 139, 140, 143, 144, 147, 148, 151, 152, 156, 159, 160, 161, 163], "excluded_lines": [], "start_line": 68}, "GameLoopService.pause_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [167, 168, 169, 170, 171, 173, 174], "excluded_lines": [], "start_line": 165}, "GameLoopService.resume_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [178, 179, 180, 181, 182, 184, 185], "excluded_lines": [], "start_line": 176}, "GameLoopService.get_vault_status": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [189, 191], "excluded_lines": [], "start_line": 187}, "GameLoopService._get_active_vaults": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [203, 204, 205, 207, 208, 211, 212, 213, 214], "excluded_lines": [], "start_line": 200}, "GameLoopService._get_or_create_game_state": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [218, 219, 220, 222, 223, 224, 225, 226, 227, 229], "excluded_lines": [], "start_line": 216}, "GameLoopService._process_explorations": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 23, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [238, 240, 242, 248, 250, 255, 257, 258, 260, 262, 263, 264, 267, 270, 271, 272, 273, 275, 277, 279, 280, 281, 283], "excluded_lines": [], "start_line": 231}, "GameLoopService._award_work_xp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [297, 298, 299, 301, 303, 304, 307, 310, 311, 313, 314, 317, 318, 319, 322, 323, 324, 325, 327], "excluded_lines": [], "start_line": 285}, "GameLoopService._process_dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [337, 339, 340, 341, 343, 349, 351, 352, 353, 356, 359, 360, 361, 362, 363, 366, 367, 369, 371, 372, 373, 374, 375, 377, 379, 381, 382, 384], "excluded_lines": [], "start_line": 329}, "GameLoopService._process_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 23, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [394, 396, 397, 398, 400, 406, 408, 409, 412, 414, 415, 417, 420, 424, 427, 428, 429, 434, 436, 438, 439, 440, 442], "excluded_lines": [], "start_line": 386}, "GameLoopService._process_happiness": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [453], "excluded_lines": [], "start_line": 444}, "GameLoopService._process_incidents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 39, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 39, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [464, 466, 467, 469, 477, 479, 480, 481, 482, 483, 484, 487, 488, 491, 494, 495, 496, 498, 499, 501, 504, 505, 506, 509, 510, 511, 512, 514, 516, 519, 520, 521, 522, 525, 526, 528, 529, 530, 532], "excluded_lines": [], "start_line": 455}, "GameLoopService._update_room_relationships": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 55, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 55, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [545, 547, 548, 549, 550, 551, 553, 555, 557, 558, 559, 561, 562, 565, 566, 567, 568, 569, 572, 575, 578, 579, 582, 583, 584, 585, 586, 587, 590, 591, 592, 593, 596, 597, 599, 600, 602, 604, 610, 611, 612, 616, 617, 620, 623, 624, 625, 627, 628, 631, 633, 634, 635, 636, 638], "excluded_lines": [], "start_line": 534}, "GameLoopService._process_pregnancies_and_births": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 25, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 25, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [651, 653, 655, 658, 659, 660, 661, 662, 663, 664, 665, 666, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 682], "excluded_lines": [], "start_line": 640}, "GameLoopService._age_children": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [695, 697, 699, 701, 702, 703, 704, 705, 706, 707, 708, 709, 711], "excluded_lines": [], "start_line": 684}, "GameLoopService._process_breeding": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [723, 726, 729, 732], "excluded_lines": [], "start_line": 713}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 26, 30, 68, 165, 176, 187, 200, 216, 231, 285, 329, 386, 444, 455, 534, 640, 684, 713, 741], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"GameLoopService": {"executed_lines": [27, 28], "summary": {"covered_lines": 2, "num_statements": 317, "percent_covered": 0.6309148264984227, "percent_covered_display": "0.63", "missing_lines": 315, "excluded_lines": 0, "percent_statements_covered": 0.6309148264984227, "percent_statements_covered_display": "0.63"}, "missing_lines": [37, 44, 47, 49, 51, 52, 53, 54, 55, 56, 57, 59, 61, 66, 80, 83, 84, 85, 88, 91, 92, 95, 98, 100, 107, 109, 111, 112, 117, 119, 126, 127, 128, 131, 132, 135, 136, 139, 140, 143, 144, 147, 148, 151, 152, 156, 159, 160, 161, 163, 167, 168, 169, 170, 171, 173, 174, 178, 179, 180, 181, 182, 184, 185, 189, 191, 203, 204, 205, 207, 208, 211, 212, 213, 214, 218, 219, 220, 222, 223, 224, 225, 226, 227, 229, 238, 240, 242, 248, 250, 255, 257, 258, 260, 262, 263, 264, 267, 270, 271, 272, 273, 275, 277, 279, 280, 281, 283, 297, 298, 299, 301, 303, 304, 307, 310, 311, 313, 314, 317, 318, 319, 322, 323, 324, 325, 327, 337, 339, 340, 341, 343, 349, 351, 352, 353, 356, 359, 360, 361, 362, 363, 366, 367, 369, 371, 372, 373, 374, 375, 377, 379, 381, 382, 384, 394, 396, 397, 398, 400, 406, 408, 409, 412, 414, 415, 417, 420, 424, 427, 428, 429, 434, 436, 438, 439, 440, 442, 453, 464, 466, 467, 469, 477, 479, 480, 481, 482, 483, 484, 487, 488, 491, 494, 495, 496, 498, 499, 501, 504, 505, 506, 509, 510, 511, 512, 514, 516, 519, 520, 521, 522, 525, 526, 528, 529, 530, 532, 545, 547, 548, 549, 550, 551, 553, 555, 557, 558, 559, 561, 562, 565, 566, 567, 568, 569, 572, 575, 578, 579, 582, 583, 584, 585, 586, 587, 590, 591, 592, 593, 596, 597, 599, 600, 602, 604, 610, 611, 612, 616, 617, 620, 623, 624, 625, 627, 628, 631, 633, 634, 635, 636, 638, 651, 653, 655, 658, 659, 660, 661, 662, 663, 664, 665, 666, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 682, 695, 697, 699, 701, 702, 703, 704, 705, 706, 707, 708, 709, 711, 723, 726, 729, 732], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 26, 30, 68, 165, 176, 187, 200, 216, 231, 285, 329, 386, 444, 455, 534, 640, 684, 713, 741], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\happiness_service.py": {"executed_lines": [4, 5, 8, 9, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 27, 30, 33, 34, 130, 131, 177, 178, 289, 290, 385], "summary": {"covered_lines": 25, "num_statements": 150, "percent_covered": 16.666666666666668, "percent_covered_display": "16.67", "missing_lines": 125, "excluded_lines": 2, "percent_statements_covered": 16.666666666666668, "percent_statements_covered_display": "16.67"}, "missing_lines": [51, 52, 53, 56, 58, 59, 62, 65, 68, 70, 78, 80, 82, 83, 84, 87, 95, 96, 97, 100, 101, 102, 103, 104, 106, 109, 112, 113, 114, 117, 118, 120, 128, 144, 145, 146, 148, 154, 161, 162, 164, 165, 167, 197, 200, 205, 206, 207, 208, 211, 212, 215, 216, 219, 220, 221, 222, 223, 226, 227, 232, 233, 236, 237, 241, 242, 243, 245, 246, 248, 249, 252, 253, 256, 257, 260, 262, 263, 265, 268, 269, 272, 277, 280, 281, 284, 285, 287, 304, 305, 306, 309, 310, 311, 314, 317, 319, 321, 328, 329, 331, 332, 334, 335, 337, 338, 342, 343, 344, 345, 346, 348, 349, 352, 353, 357, 358, 365, 366, 368, 369, 371, 374, 375, 382], "excluded_lines": [24, 25], "functions": {"HappinessService.update_vault_happiness": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 33, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 33, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [51, 52, 53, 56, 58, 59, 62, 65, 68, 70, 78, 80, 82, 83, 84, 87, 95, 96, 97, 100, 101, 102, 103, 104, 106, 109, 112, 113, 114, 117, 118, 120, 128], "excluded_lines": [], "start_line": 34}, "HappinessService._calculate_vault_factors": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [144, 145, 146, 148, 154, 161, 162, 164, 165, 167], "excluded_lines": [], "start_line": 131}, "HappinessService._calculate_happiness_change": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 45, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 45, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [197, 200, 205, 206, 207, 208, 211, 212, 215, 216, 219, 220, 221, 222, 223, 226, 227, 232, 233, 236, 237, 241, 242, 243, 245, 246, 248, 249, 252, 253, 256, 257, 260, 262, 263, 265, 268, 269, 272, 277, 280, 281, 284, 285, 287], "excluded_lines": [], "start_line": 178}, "HappinessService.get_happiness_modifiers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 37, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 37, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [304, 305, 306, 309, 310, 311, 314, 317, 319, 321, 328, 329, 331, 332, 334, 335, 337, 338, 342, 343, 344, 345, 346, 348, 349, 352, 353, 357, 358, 365, 366, 368, 369, 371, 374, 375, 382], "excluded_lines": [], "start_line": 290}, "": {"executed_lines": [4, 5, 8, 9, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 27, 30, 33, 34, 130, 131, 177, 178, 289, 290, 385], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [24, 25], "start_line": 1}}, "classes": {"HappinessService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 125, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 125, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [51, 52, 53, 56, 58, 59, 62, 65, 68, 70, 78, 80, 82, 83, 84, 87, 95, 96, 97, 100, 101, 102, 103, 104, 106, 109, 112, 113, 114, 117, 118, 120, 128, 144, 145, 146, 148, 154, 161, 162, 164, 165, 167, 197, 200, 205, 206, 207, 208, 211, 212, 215, 216, 219, 220, 221, 222, 223, 226, 227, 232, 233, 236, 237, 241, 242, 243, 245, 246, 248, 249, 252, 253, 256, 257, 260, 262, 263, 265, 268, 269, 272, 277, 280, 281, 284, 285, 287, 304, 305, 306, 309, 310, 311, 314, 317, 319, 321, 328, 329, 331, 332, 334, 335, 337, 338, 342, 343, 344, 345, 346, 348, 349, 352, 353, 357, 358, 365, 366, 368, 369, 371, 374, 375, 382], "excluded_lines": [], "start_line": 30}, "": {"executed_lines": [4, 5, 8, 9, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 27, 30, 33, 34, 130, 131, 177, 178, 289, 290, 385], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [24, 25], "start_line": 1}}}, "app\\services\\health_check.py": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 17, 18, 22, 25, 28, 29, 30, 33, 34, 37, 38, 39, 40, 43, 46, 47, 75, 76, 105, 106, 157, 158, 213, 214, 304, 305, 368, 419, 420], "summary": {"covered_lines": 40, "num_statements": 162, "percent_covered": 24.691358024691358, "percent_covered_display": "24.69", "missing_lines": 122, "excluded_lines": 0, "percent_statements_covered": 24.691358024691358, "percent_statements_covered_display": "24.69"}, "missing_lines": [19, 20, 57, 58, 59, 60, 66, 67, 68, 83, 84, 85, 86, 87, 93, 94, 95, 102, 103, 113, 114, 121, 123, 124, 125, 127, 128, 135, 136, 138, 148, 149, 150, 166, 167, 174, 175, 183, 184, 186, 196, 197, 198, 204, 205, 206, 222, 223, 230, 231, 233, 235, 236, 237, 238, 241, 242, 244, 245, 255, 268, 274, 275, 276, 277, 278, 285, 286, 287, 288, 293, 294, 295, 297, 312, 313, 319, 322, 323, 325, 327, 339, 340, 341, 347, 348, 349, 359, 360, 361, 388, 391, 392, 395, 396, 399, 400, 403, 404, 405, 408, 409, 410, 413, 414, 415, 417, 430, 432, 433, 434, 436, 437, 438, 440, 449, 450, 452, 454, 455, 457, 459], "excluded_lines": [], "functions": {"HealthCheckService.check_postgres": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [57, 58, 59, 60, 66, 67, 68], "excluded_lines": [], "start_line": 47}, "HealthCheckService.check_redis": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [83, 84, 85, 86, 87, 93, 94, 95, 102, 103], "excluded_lines": [], "start_line": 76}, "HealthCheckService.check_celery": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [113, 114, 121, 123, 124, 125, 127, 128, 135, 136, 138, 148, 149, 150], "excluded_lines": [], "start_line": 106}, "HealthCheckService.check_minio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [166, 167, 174, 175, 183, 184, 186, 196, 197, 198, 204, 205, 206], "excluded_lines": [], "start_line": 158}, "HealthCheckService.check_ollama": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [222, 223, 230, 231, 233, 235, 236, 237, 238, 241, 242, 244, 245, 255, 268, 274, 275, 276, 277, 278, 285, 286, 287, 288, 293, 294, 295, 297], "excluded_lines": [], "start_line": 214}, "HealthCheckService.check_smtp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [312, 313, 319, 322, 323, 325, 327, 339, 340, 341, 347, 348, 349, 359, 360, 361], "excluded_lines": [], "start_line": 305}, "HealthCheckService.check_all_services": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [388, 391, 392, 395, 396, 399, 400, 403, 404, 405, 408, 409, 410, 413, 414, 415, 417], "excluded_lines": [], "start_line": 368}, "HealthCheckService.log_health_check_results": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [430, 432, 433, 434, 436, 437, 438, 440, 449, 450, 452, 454, 455, 457, 459], "excluded_lines": [], "start_line": 420}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 17, 18, 22, 25, 28, 29, 30, 33, 34, 37, 38, 39, 40, 43, 46, 47, 75, 76, 105, 106, 157, 158, 213, 214, 304, 305, 368, 419, 420], "summary": {"covered_lines": 40, "num_statements": 42, "percent_covered": 95.23809523809524, "percent_covered_display": "95.24", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 95.23809523809524, "percent_statements_covered_display": "95.24"}, "missing_lines": [19, 20], "excluded_lines": [], "start_line": 1}}, "classes": {"ServiceStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "HealthCheckResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "HealthCheckService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 120, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 120, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [57, 58, 59, 60, 66, 67, 68, 83, 84, 85, 86, 87, 93, 94, 95, 102, 103, 113, 114, 121, 123, 124, 125, 127, 128, 135, 136, 138, 148, 149, 150, 166, 167, 174, 175, 183, 184, 186, 196, 197, 198, 204, 205, 206, 222, 223, 230, 231, 233, 235, 236, 237, 238, 241, 242, 244, 245, 255, 268, 274, 275, 276, 277, 278, 285, 286, 287, 288, 293, 294, 295, 297, 312, 313, 319, 322, 323, 325, 327, 339, 340, 341, 347, 348, 349, 359, 360, 361, 388, 391, 392, 395, 396, 399, 400, 403, 404, 405, 408, 409, 410, 413, 414, 415, 417, 430, 432, 433, 434, 436, 437, 438, 440, 449, 450, 452, 454, 455, 457, 459], "excluded_lines": [], "start_line": 43}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 17, 18, 22, 25, 28, 29, 30, 33, 34, 37, 38, 39, 40, 43, 46, 47, 75, 76, 105, 106, 157, 158, 213, 214, 304, 305, 368, 419, 420], "summary": {"covered_lines": 40, "num_statements": 42, "percent_covered": 95.23809523809524, "percent_covered_display": "95.24", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 95.23809523809524, "percent_statements_covered_display": "95.24"}, "missing_lines": [19, 20], "excluded_lines": [], "start_line": 1}}}, "app\\services\\incident_service.py": {"executed_lines": [3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 21, 24, 25, 27, 77, 186, 281, 348, 411, 434, 438, 444, 449, 482, 502], "summary": {"covered_lines": 28, "num_statements": 192, "percent_covered": 14.583333333333334, "percent_covered_display": "14.58", "missing_lines": 164, "excluded_lines": 0, "percent_statements_covered": 14.583333333333334, "percent_statements_covered_display": "14.58"}, "missing_lines": [40, 42, 43, 44, 46, 47, 50, 52, 53, 54, 57, 58, 60, 61, 66, 67, 68, 71, 72, 75, 98, 101, 102, 104, 107, 111, 112, 113, 116, 119, 121, 124, 125, 127, 128, 129, 132, 133, 134, 137, 147, 148, 151, 153, 154, 158, 161, 164, 171, 180, 184, 200, 201, 204, 206, 214, 215, 217, 219, 223, 224, 227, 228, 231, 232, 235, 236, 237, 238, 240, 242, 243, 244, 247, 250, 251, 254, 255, 257, 259, 260, 263, 266, 268, 270, 271, 273, 298, 299, 300, 302, 303, 306, 307, 308, 309, 310, 313, 314, 317, 318, 319, 321, 324, 325, 326, 328, 329, 331, 332, 333, 334, 336, 340, 351, 352, 353, 355, 356, 359, 363, 382, 383, 386, 388, 390, 393, 403, 404, 406, 413, 414, 416, 423, 424, 425, 428, 430, 432, 436, 441, 442, 446, 447, 458, 460, 461, 464, 467, 469, 470, 473, 475, 476, 477, 480, 484, 489, 491, 492, 493, 494, 496, 498], "excluded_lines": [], "functions": {"IncidentService.__init__": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "IncidentService.should_spawn_incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 20, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40, 42, 43, 44, 46, 47, 50, 52, 53, 54, 57, 58, 60, 61, 66, 67, 68, 71, 72, 75], "excluded_lines": [], "start_line": 27}, "IncidentService.spawn_incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 31, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [98, 101, 102, 104, 107, 111, 112, 113, 116, 119, 121, 124, 125, 127, 128, 129, 132, 133, 134, 137, 147, 148, 151, 153, 154, 158, 161, 164, 171, 180, 184], "excluded_lines": [], "start_line": 77}, "IncidentService.process_incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 36, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 36, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [200, 201, 204, 206, 214, 215, 217, 219, 223, 224, 227, 228, 231, 232, 235, 236, 237, 238, 240, 242, 243, 244, 247, 250, 251, 254, 255, 257, 259, 260, 263, 266, 268, 270, 271, 273], "excluded_lines": [], "start_line": 186}, "IncidentService.resolve_incident_manually": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 27, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [298, 299, 300, 302, 303, 306, 307, 308, 309, 310, 313, 314, 317, 318, 319, 321, 324, 325, 326, 328, 329, 331, 332, 333, 334, 336, 340], "excluded_lines": [], "start_line": 281}, "IncidentService._spread_incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [351, 352, 353, 355, 356, 359, 363, 382, 383, 386, 388, 390, 393, 403, 404, 406], "excluded_lines": [], "start_line": 348}, "IncidentService._calculate_dweller_combat_power": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [413, 414, 416, 423, 424, 425, 428, 430, 432], "excluded_lines": [], "start_line": 411}, "IncidentService._calculate_raider_power": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [436], "excluded_lines": [], "start_line": 434}, "IncidentService._calculate_damage_to_dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [441, 442], "excluded_lines": [], "start_line": 438}, "IncidentService._calculate_damage_to_raiders": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [446, 447], "excluded_lines": [], "start_line": 444}, "IncidentService._award_combat_xp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [458, 460, 461, 464, 467, 469, 470, 473, 475, 476, 477, 480], "excluded_lines": [], "start_line": 449}, "IncidentService._generate_loot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [484, 489, 491, 492, 493, 494, 496, 498], "excluded_lines": [], "start_line": 482}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 21, 24, 27, 77, 186, 281, 348, 411, 434, 438, 444, 449, 482, 502], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"IncidentService": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 165, "percent_covered": 0.6060606060606061, "percent_covered_display": "0.61", "missing_lines": 164, "excluded_lines": 0, "percent_statements_covered": 0.6060606060606061, "percent_statements_covered_display": "0.61"}, "missing_lines": [40, 42, 43, 44, 46, 47, 50, 52, 53, 54, 57, 58, 60, 61, 66, 67, 68, 71, 72, 75, 98, 101, 102, 104, 107, 111, 112, 113, 116, 119, 121, 124, 125, 127, 128, 129, 132, 133, 134, 137, 147, 148, 151, 153, 154, 158, 161, 164, 171, 180, 184, 200, 201, 204, 206, 214, 215, 217, 219, 223, 224, 227, 228, 231, 232, 235, 236, 237, 238, 240, 242, 243, 244, 247, 250, 251, 254, 255, 257, 259, 260, 263, 266, 268, 270, 271, 273, 298, 299, 300, 302, 303, 306, 307, 308, 309, 310, 313, 314, 317, 318, 319, 321, 324, 325, 326, 328, 329, 331, 332, 333, 334, 336, 340, 351, 352, 353, 355, 356, 359, 363, 382, 383, 386, 388, 390, 393, 403, 404, 406, 413, 414, 416, 423, 424, 425, 428, 430, 432, 436, 441, 442, 446, 447, 458, 460, 461, 464, 467, 469, 470, 473, 475, 476, 477, 480, 484, 489, 491, 492, 493, 494, 496, 498], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 21, 24, 27, 77, 186, 281, 348, 411, 434, 438, 444, 449, 482, 502], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\leveling_service.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 43, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [3, 5, 6, 7, 10, 13, 14, 33, 34, 35, 37, 38, 49, 50, 51, 55, 66, 67, 69, 70, 73, 74, 75, 76, 77, 79, 81, 82, 83, 85, 87, 104, 105, 108, 109, 112, 113, 116, 119, 121, 128, 130, 134], "excluded_lines": [], "functions": {"LevelingService.calculate_xp_required": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [33, 34, 35], "excluded_lines": [], "start_line": 14}, "LevelingService.calculate_xp_for_level_range": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [49, 50, 51], "excluded_lines": [], "start_line": 38}, "LevelingService.check_level_up": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [66, 67, 69, 70, 73, 74, 75, 76, 77, 79, 81, 82, 83, 85], "excluded_lines": [], "start_line": 55}, "LevelingService.level_up_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [104, 105, 108, 109, 112, 113, 116, 119, 121, 128, 130], "excluded_lines": [], "start_line": 87}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [3, 5, 6, 7, 10, 13, 14, 37, 38, 55, 87, 134], "excluded_lines": [], "start_line": 1}}, "classes": {"LevelingService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 31, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [33, 34, 35, 49, 50, 51, 66, 67, 69, 70, 73, 74, 75, 76, 77, 79, 81, 82, 83, 85, 104, 105, 108, 109, 112, 113, 116, 119, 121, 128, 130], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [3, 5, 6, 7, 10, 13, 14, 37, 38, 55, 87, 134], "excluded_lines": [], "start_line": 1}}}, "app\\services\\minio.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 10, 11, 13, 37, 40, 41, 63, 64, 70, 80, 106, 136, 140, 154, 164, 165, 166], "summary": {"covered_lines": 24, "num_statements": 105, "percent_covered": 22.857142857142858, "percent_covered_display": "22.86", "missing_lines": 81, "excluded_lines": 0, "percent_statements_covered": 22.857142857142858, "percent_statements_covered_display": "22.86"}, "missing_lines": [42, 43, 44, 46, 47, 48, 54, 55, 56, 57, 58, 59, 61, 65, 66, 67, 68, 71, 72, 73, 74, 75, 76, 77, 78, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 99, 100, 101, 102, 103, 104, 109, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 125, 126, 127, 132, 133, 134, 137, 138, 141, 142, 143, 144, 146, 147, 148, 149, 150, 151, 152, 155, 156, 157, 159, 160, 161], "excluded_lines": [], "functions": {"MinioService.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42, 43, 44, 46, 47, 48, 54, 55, 56, 57, 58, 59, 61], "excluded_lines": [], "start_line": 41}, "MinioService._get_public_policy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [65, 66, 67, 68], "excluded_lines": [], "start_line": 64}, "MinioService._ensure_bucket_exists": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [71, 72, 73, 74, 75, 76, 77, 78], "excluded_lines": [], "start_line": 70}, "MinioService._ensure_bucket_policy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 99, 100, 101, 102, 103, 104], "excluded_lines": [], "start_line": 80}, "MinioService.upload_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [109, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 125, 126, 127, 132, 133, 134], "excluded_lines": [], "start_line": 106}, "MinioService.upload_thumbnail": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [137, 138], "excluded_lines": [], "start_line": 136}, "MinioService.download_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [141, 142, 143, 144, 146, 147, 148, 149, 150, 151, 152], "excluded_lines": [], "start_line": 140}, "MinioService.public_url": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [155, 156, 157, 159, 160, 161], "excluded_lines": [], "start_line": 154}, "get_minio_client": {"executed_lines": [166], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 165}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 10, 11, 13, 37, 40, 41, 63, 64, 70, 80, 106, 136, 140, 154, 164, 165], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"MinioService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 81, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 81, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42, 43, 44, 46, 47, 48, 54, 55, 56, 57, 58, 59, 61, 65, 66, 67, 68, 71, 72, 73, 74, 75, 76, 77, 78, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 99, 100, 101, 102, 103, 104, 109, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 125, 126, 127, 132, 133, 134, 137, 138, 141, 142, 143, 144, 146, 147, 148, 149, 150, 151, 152, 155, 156, 157, 159, 160, 161], "excluded_lines": [], "start_line": 40}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 10, 11, 13, 37, 40, 41, 63, 64, 70, 80, 106, 136, 140, 154, 164, 165, 166], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\notification_service.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 37, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 37, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 4, 6, 7, 8, 11, 14, 15, 29, 44, 60, 64, 65, 75, 87, 88, 97, 109, 110, 120, 132, 133, 143, 155, 156, 166, 178, 179, 189, 200, 201, 211, 223, 224, 232, 245], "excluded_lines": [], "functions": {"NotificationService.create_and_send": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [29, 44, 60], "excluded_lines": [], "start_line": 15}, "NotificationService.notify_exploration_update": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [75], "excluded_lines": [], "start_line": 65}, "NotificationService.notify_exploration_complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [97], "excluded_lines": [], "start_line": 88}, "NotificationService.notify_level_up": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [120], "excluded_lines": [], "start_line": 110}, "NotificationService.notify_training_complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [143], "excluded_lines": [], "start_line": 133}, "NotificationService.notify_baby_born": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [166], "excluded_lines": [], "start_line": 156}, "NotificationService.notify_resource_low": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [189], "excluded_lines": [], "start_line": 179}, "NotificationService.notify_combat_victory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [211], "excluded_lines": [], "start_line": 201}, "NotificationService.notify_radio_new_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [232], "excluded_lines": [], "start_line": 224}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 26, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 4, 6, 7, 8, 11, 14, 15, 64, 65, 87, 88, 109, 110, 132, 133, 155, 156, 178, 179, 200, 201, 223, 224, 245], "excluded_lines": [], "start_line": 1}}, "classes": {"NotificationService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [29, 44, 60, 75, 97, 120, 143, 166, 189, 211, 232], "excluded_lines": [], "start_line": 11}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 26, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 4, 6, 7, 8, 11, 14, 15, 64, 65, 87, 88, 109, 110, 132, 133, 155, 156, 178, 179, 200, 201, 223, 224, 245], "excluded_lines": [], "start_line": 1}}}, "app\\services\\open_ai.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 13, 16, 17, 18, 20, 22, 23, 25, 26, 28, 30, 31, 36, 38, 41, 53, 70, 77, 93, 102, 131, 165, 166, 167], "summary": {"covered_lines": 33, "num_statements": 78, "percent_covered": 42.30769230769231, "percent_covered_display": "42.31", "missing_lines": 45, "excluded_lines": 0, "percent_statements_covered": 42.30769230769231, "percent_statements_covered_display": "42.31"}, "missing_lines": [27, 29, 32, 33, 34, 39, 42, 49, 51, 58, 59, 64, 65, 66, 67, 68, 71, 75, 78, 91, 94, 99, 100, 113, 115, 117, 118, 121, 125, 126, 127, 128, 129, 142, 145, 146, 147, 148, 149, 150, 151, 154, 157, 160, 162], "excluded_lines": [], "functions": {"AIService.__init__": {"executed_lines": [18, 20], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "AIService.get_model": {"executed_lines": [25, 26, 28, 30, 31, 36], "summary": {"covered_lines": 6, "num_statements": 11, "percent_covered": 54.54545454545455, "percent_covered_display": "54.55", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 54.54545454545455, "percent_statements_covered_display": "54.55"}, "missing_lines": [27, 29, 32, 33, 34], "excluded_lines": [], "start_line": 23}, "AIService.get_chatgpt_client": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [39], "excluded_lines": [], "start_line": 38}, "AIService.generate_image": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42, 49, 51], "excluded_lines": [], "start_line": 41}, "AIService.generate_audio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [58, 59, 64, 65, 66, 67, 68], "excluded_lines": [], "start_line": 53}, "AIService.generate_completion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [71, 75], "excluded_lines": [], "start_line": 70}, "AIService.generate_completion_json": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [78, 91], "excluded_lines": [], "start_line": 77}, "AIService.generate_speech_from_text": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [94, 99, 100], "excluded_lines": [], "start_line": 93}, "AIService.transcribe_audio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [113, 115, 117, 118, 121, 125, 126, 127, 128, 129], "excluded_lines": [], "start_line": 102}, "AIService.chat_completion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [142, 145, 146, 147, 148, 149, 150, 151, 154, 157, 160, 162], "excluded_lines": [], "start_line": 131}, "get_ai_service": {"executed_lines": [167], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 166}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 13, 16, 17, 22, 23, 38, 41, 53, 70, 77, 93, 102, 131, 165, 166], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AIService": {"executed_lines": [18, 20, 25, 26, 28, 30, 31, 36], "summary": {"covered_lines": 8, "num_statements": 53, "percent_covered": 15.09433962264151, "percent_covered_display": "15.09", "missing_lines": 45, "excluded_lines": 0, "percent_statements_covered": 15.09433962264151, "percent_statements_covered_display": "15.09"}, "missing_lines": [27, 29, 32, 33, 34, 39, 42, 49, 51, 58, 59, 64, 65, 66, 67, 68, 71, 75, 78, 91, 94, 99, 100, 113, 115, 117, 118, 121, 125, 126, 127, 128, 129, 142, 145, 146, 147, 148, 149, 150, 151, 154, 157, 160, 162], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 13, 16, 17, 22, 23, 38, 41, 53, 70, 77, 93, 102, 131, 165, 166, 167], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\radio_service.py": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 23, 24, 44, 45, 93, 94, 138, 139, 166, 167, 223, 224, 291], "summary": {"covered_lines": 26, "num_statements": 94, "percent_covered": 27.659574468085108, "percent_covered_display": "27.66", "missing_lines": 68, "excluded_lines": 0, "percent_statements_covered": 27.659574468085108, "percent_statements_covered_display": "27.66"}, "missing_lines": [40, 42, 61, 62, 64, 65, 68, 71, 72, 73, 76, 80, 81, 83, 84, 85, 88, 89, 91, 109, 110, 112, 113, 116, 117, 120, 122, 123, 126, 129, 130, 131, 134, 136, 156, 162, 164, 189, 190, 192, 193, 194, 196, 197, 200, 201, 202, 203, 206, 207, 208, 211, 212, 215, 217, 221, 239, 240, 242, 243, 255, 257, 258, 270, 273, 274, 277, 279], "excluded_lines": [], "functions": {"RadioService.get_radio_rooms": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40, 42], "excluded_lines": [], "start_line": 24}, "RadioService.calculate_recruitment_rate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [61, 62, 64, 65, 68, 71, 72, 73, 76, 80, 81, 83, 84, 85, 88, 89, 91], "excluded_lines": [], "start_line": 45}, "RadioService.check_for_recruitment": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [109, 110, 112, 113, 116, 117, 120, 122, 123, 126, 129, 130, 131, 134, 136], "excluded_lines": [], "start_line": 94}, "RadioService.recruit_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [156, 162, 164], "excluded_lines": [], "start_line": 139}, "RadioService.manual_recruit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [189, 190, 192, 193, 194, 196, 197, 200, 201, 202, 203, 206, 207, 208, 211, 212, 215, 217, 221], "excluded_lines": [], "start_line": 167}, "RadioService.get_recruitment_stats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [239, 240, 242, 243, 255, 257, 258, 270, 273, 274, 277, 279], "excluded_lines": [], "start_line": 224}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 23, 24, 44, 45, 93, 94, 138, 139, 166, 167, 223, 224, 291], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RadioService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 68, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 68, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40, 42, 61, 62, 64, 65, 68, 71, 72, 73, 76, 80, 81, 83, 84, 85, 88, 89, 91, 109, 110, 112, 113, 116, 117, 120, 122, 123, 126, 129, 130, 131, 134, 136, 156, 162, 164, 189, 190, 192, 193, 194, 196, 197, 200, 201, 202, 203, 206, 207, 208, 211, 212, 215, 217, 221, 239, 240, 242, 243, 255, 257, 258, 270, 273, 274, 277, 279], "excluded_lines": [], "start_line": 20}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 23, 24, 44, 45, 93, 94, 138, 139, 166, 167, 223, 224, 291], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\relationship_service.py": {"executed_lines": [4, 5, 6, 9, 10, 11, 14, 15, 16, 17, 18, 19, 20, 21, 27, 30, 33, 34, 52, 53, 82, 83, 126, 127, 165, 166, 208, 209, 244, 245, 299, 300, 353], "summary": {"covered_lines": 33, "num_statements": 128, "percent_covered": 25.78125, "percent_covered_display": "25.78", "missing_lines": 95, "excluded_lines": 2, "percent_statements_covered": 25.78125, "percent_statements_covered_display": "25.78"}, "missing_lines": [50, 70, 71, 72, 75, 79, 80, 101, 102, 103, 104, 106, 107, 110, 112, 113, 114, 116, 119, 121, 124, 146, 147, 148, 149, 151, 152, 155, 157, 160, 162, 163, 185, 186, 187, 188, 190, 191, 192, 194, 197, 200, 201, 202, 203, 205, 206, 221, 222, 223, 224, 225, 228, 229, 230, 231, 232, 235, 240, 242, 259, 262, 268, 269, 271, 272, 273, 276, 277, 279, 280, 281, 284, 285, 288, 293, 296, 297, 309, 310, 312, 313, 314, 317, 318, 319, 320, 323, 324, 327, 328, 329, 332, 335, 342], "excluded_lines": [24, 25], "functions": {"RelationshipService.get_relationship": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [50], "excluded_lines": [], "start_line": 34}, "RelationshipService.get_or_create_relationship": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [70, 71, 72, 75, 79, 80], "excluded_lines": [], "start_line": 53}, "RelationshipService.increase_affinity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [101, 102, 103, 104, 106, 107, 110, 112, 113, 114, 116, 119, 121, 124], "excluded_lines": [], "start_line": 83}, "RelationshipService.initiate_romance": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [146, 147, 148, 149, 151, 152, 155, 157, 160, 162, 163], "excluded_lines": [], "start_line": 127}, "RelationshipService.make_partners": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [185, 186, 187, 188, 190, 191, 192, 194, 197, 200, 201, 202, 203, 205, 206], "excluded_lines": [], "start_line": 166}, "RelationshipService.break_up": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [221, 222, 223, 224, 225, 228, 229, 230, 231, 232, 235, 240, 242], "excluded_lines": [], "start_line": 209}, "RelationshipService.quick_pair_dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [259, 262, 268, 269, 271, 272, 273, 276, 277, 279, 280, 281, 284, 285, 288, 293, 296, 297], "excluded_lines": [], "start_line": 245}, "RelationshipService.calculate_compatibility_score": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [309, 310, 312, 313, 314, 317, 318, 319, 320, 323, 324, 327, 328, 329, 332, 335, 342], "excluded_lines": [], "start_line": 300}, "": {"executed_lines": [4, 5, 6, 9, 10, 11, 14, 15, 16, 17, 18, 19, 20, 21, 27, 30, 33, 34, 52, 53, 82, 83, 126, 127, 165, 166, 208, 209, 244, 245, 299, 300, 353], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [24, 25], "start_line": 1}}, "classes": {"RelationshipService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 95, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 95, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [50, 70, 71, 72, 75, 79, 80, 101, 102, 103, 104, 106, 107, 110, 112, 113, 114, 116, 119, 121, 124, 146, 147, 148, 149, 151, 152, 155, 157, 160, 162, 163, 185, 186, 187, 188, 190, 191, 192, 194, 197, 200, 201, 202, 203, 205, 206, 221, 222, 223, 224, 225, 228, 229, 230, 231, 232, 235, 240, 242, 259, 262, 268, 269, 271, 272, 273, 276, 277, 279, 280, 281, 284, 285, 288, 293, 296, 297, 309, 310, 312, 313, 314, 317, 318, 319, 320, 323, 324, 327, 328, 329, 332, 335, 342], "excluded_lines": [], "start_line": 30}, "": {"executed_lines": [4, 5, 6, 9, 10, 11, 14, 15, 16, 17, 18, 19, 20, 21, 27, 30, 33, 34, 52, 53, 82, 83, 126, 127, 165, 166, 208, 209, 244, 245, 299, 300, 353], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [24, 25], "start_line": 1}}}, "app\\services\\resource_manager.py": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 12, 13, 15, 18, 19, 20, 23, 24, 27, 28, 31, 34, 35, 37, 55, 98, 114, 132, 145, 146, 159, 160, 170, 171, 189, 197, 198, 236], "summary": {"covered_lines": 35, "num_statements": 101, "percent_covered": 34.65346534653465, "percent_covered_display": "34.65", "missing_lines": 66, "excluded_lines": 0, "percent_statements_covered": 34.65346534653465, "percent_statements_covered_display": "34.65"}, "missing_lines": [46, 49, 53, 69, 72, 73, 76, 77, 80, 83, 84, 87, 89, 102, 105, 106, 108, 118, 120, 121, 122, 125, 127, 128, 130, 134, 135, 136, 138, 143, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 164, 173, 175, 181, 182, 183, 184, 185, 187, 191, 206, 207, 209, 210, 213, 214, 217, 222, 225, 228, 229, 230, 231, 232, 234, 243], "excluded_lines": [], "functions": {"ResourceManager.__init__": {"executed_lines": [35], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "ResourceManager.process_vault_resources": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [46, 49, 53], "excluded_lines": [], "start_line": 37}, "ResourceManager._calculate_net_resource_change": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [69, 72, 73, 76, 77, 80, 83, 84, 87, 89], "excluded_lines": [], "start_line": 55}, "ResourceManager._calculate_consumption": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [102, 105, 106, 108], "excluded_lines": [], "start_line": 98}, "ResourceManager._calculate_production": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [118, 120, 121, 122, 125, 127, 128, 130], "excluded_lines": [], "start_line": 114}, "ResourceManager._calculate_room_production": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [134, 135, 136, 138, 143], "excluded_lines": [], "start_line": 132}, "ResourceManager._apply_room_production": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [148, 149, 150, 151, 152, 153, 154, 155, 156, 157], "excluded_lines": [], "start_line": 146}, "ResourceManager._apply_resource_changes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [164], "excluded_lines": [], "start_line": 160}, "ResourceManager._check_resource_warnings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [173, 175, 181, 182, 183, 184, 185, 187], "excluded_lines": [], "start_line": 171}, "ResourceManager._log_resource_changes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [191], "excluded_lines": [], "start_line": 189}, "ResourceManager._get_vault_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [206, 207, 209, 210, 213, 214, 217, 222, 225, 228, 229, 230, 231, 232, 234], "excluded_lines": [], "start_line": 198}, "ResourceManager.check_resource_availability": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [243], "excluded_lines": [], "start_line": 236}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 12, 13, 15, 18, 19, 20, 23, 24, 27, 28, 31, 34, 37, 55, 98, 114, 132, 145, 146, 159, 160, 170, 171, 189, 197, 198, 236], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ResourceManager": {"executed_lines": [35], "summary": {"covered_lines": 1, "num_statements": 67, "percent_covered": 1.492537313432836, "percent_covered_display": "1.49", "missing_lines": 66, "excluded_lines": 0, "percent_statements_covered": 1.492537313432836, "percent_statements_covered_display": "1.49"}, "missing_lines": [46, 49, 53, 69, 72, 73, 76, 77, 80, 83, 84, 87, 89, 102, 105, 106, 108, 118, 120, 121, 122, 125, 127, 128, 130, 134, 135, 136, 138, 143, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 164, 173, 175, 181, 182, 183, 184, 185, 187, 191, 206, 207, 209, 210, 213, 214, 217, 222, 225, 228, 229, 230, 231, 232, 234, 243], "excluded_lines": [], "start_line": 31}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 12, 13, 15, 18, 19, 20, 23, 24, 27, 28, 31, 34, 37, 55, 98, 114, 132, 145, 146, 159, 160, 170, 171, 189, 197, 198, 236], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\training_service.py": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 23, 24, 26, 27, 59, 109, 194, 234, 297, 353], "summary": {"covered_lines": 24, "num_statements": 130, "percent_covered": 18.46153846153846, "percent_covered_display": "18.46", "missing_lines": 106, "excluded_lines": 0, "percent_statements_covered": 18.46153846153846, "percent_statements_covered_display": "18.46"}, "missing_lines": [48, 49, 51, 54, 55, 57, 77, 78, 81, 82, 83, 86, 87, 90, 91, 93, 94, 96, 98, 99, 103, 104, 105, 107, 132, 133, 134, 137, 139, 140, 141, 144, 145, 146, 147, 148, 151, 152, 154, 155, 156, 159, 162, 163, 176, 177, 178, 181, 183, 187, 192, 212, 213, 215, 218, 219, 222, 223, 224, 227, 228, 229, 230, 232, 255, 256, 257, 259, 260, 263, 264, 265, 266, 269, 270, 271, 273, 274, 277, 278, 279, 280, 283, 285, 287, 288, 290, 295, 319, 320, 321, 323, 324, 327, 328, 329, 330, 333, 334, 335, 338, 340, 342, 343, 345, 349], "excluded_lines": [], "functions": {"TrainingService.__init__": {"executed_lines": [24], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "TrainingService.calculate_training_duration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [48, 49, 51, 54, 55, 57], "excluded_lines": [], "start_line": 27}, "TrainingService.can_start_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [77, 78, 81, 82, 83, 86, 87, 90, 91, 93, 94, 96, 98, 99, 103, 104, 105, 107], "excluded_lines": [], "start_line": 59}, "TrainingService.start_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 27, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [132, 133, 134, 137, 139, 140, 141, 144, 145, 146, 147, 148, 151, 152, 154, 155, 156, 159, 162, 163, 176, 177, 178, 181, 183, 187, 192], "excluded_lines": [], "start_line": 109}, "TrainingService.update_training_progress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [212, 213, 215, 218, 219, 222, 223, 224, 227, 228, 229, 230, 232], "excluded_lines": [], "start_line": 194}, "TrainingService.complete_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 24, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [255, 256, 257, 259, 260, 263, 264, 265, 266, 269, 270, 271, 273, 274, 277, 278, 279, 280, 283, 285, 287, 288, 290, 295], "excluded_lines": [], "start_line": 234}, "TrainingService.cancel_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [319, 320, 321, 323, 324, 327, 328, 329, 330, 333, 334, 335, 338, 340, 342, 343, 345, 349], "excluded_lines": [], "start_line": 297}, "": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 23, 26, 27, 59, 109, 194, 234, 297, 353], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TrainingService": {"executed_lines": [24], "summary": {"covered_lines": 1, "num_statements": 107, "percent_covered": 0.9345794392523364, "percent_covered_display": "0.93", "missing_lines": 106, "excluded_lines": 0, "percent_statements_covered": 0.9345794392523364, "percent_statements_covered_display": "0.93"}, "missing_lines": [48, 49, 51, 54, 55, 57, 77, 78, 81, 82, 83, 86, 87, 90, 91, 93, 94, 96, 98, 99, 103, 104, 105, 107, 132, 133, 134, 137, 139, 140, 141, 144, 145, 146, 147, 148, 151, 152, 154, 155, 156, 159, 162, 163, 176, 177, 178, 181, 183, 187, 192, 212, 213, 215, 218, 219, 222, 223, 224, 227, 228, 229, 230, 232, 255, 256, 257, 259, 260, 263, 264, 265, 266, 269, 270, 271, 273, 274, 277, 278, 279, 280, 283, 285, 287, 288, 290, 295, 319, 320, 321, 323, 324, 327, 328, 329, 330, 333, 334, 335, 338, 340, 342, 343, 345, 349], "excluded_lines": [], "start_line": 20}, "": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 23, 26, 27, 59, 109, 194, 234, 297, 353], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\vault_service.py": {"executed_lines": [4, 5, 8, 9, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 34, 37, 38, 39, 41, 42, 69, 132, 197, 261, 318, 336, 402, 412], "summary": {"covered_lines": 34, "num_statements": 176, "percent_covered": 19.318181818181817, "percent_covered_display": "19.32", "missing_lines": 142, "excluded_lines": 2, "percent_statements_covered": 19.318181818181817, "percent_statements_covered_display": "19.32"}, "missing_lines": [43, 44, 47, 48, 51, 52, 55, 56, 58, 67, 77, 78, 79, 82, 83, 84, 87, 88, 92, 95, 96, 97, 98, 105, 106, 109, 110, 111, 114, 115, 116, 125, 128, 130, 144, 145, 148, 149, 151, 153, 154, 155, 157, 159, 160, 163, 164, 165, 166, 169, 170, 171, 172, 173, 174, 175, 176, 179, 180, 183, 184, 185, 186, 188, 191, 192, 193, 195, 207, 209, 218, 219, 220, 223, 228, 231, 232, 242, 243, 244, 245, 246, 250, 255, 257, 258, 259, 269, 270, 272, 274, 276, 278, 281, 282, 283, 284, 285, 288, 290, 291, 293, 295, 296, 298, 301, 302, 303, 309, 310, 311, 313, 314, 315, 316, 320, 322, 325, 326, 329, 331, 332, 333, 334, 360, 361, 362, 365, 366, 367, 372, 377, 378, 379, 380, 387, 392, 395, 398, 400, 404, 408], "excluded_lines": [30, 31], "functions": {"VaultService.__init__": {"executed_lines": [38, 39], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 37}, "VaultService._prepare_room_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [43, 44, 47, 48, 51, 52, 55, 56, 58, 67], "excluded_lines": [], "start_line": 42}, "VaultService._prepare_initial_rooms": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 24, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [77, 78, 79, 82, 83, 84, 87, 88, 92, 95, 96, 97, 98, 105, 106, 109, 110, 111, 114, 115, 116, 125, 128, 130], "excluded_lines": [], "start_line": 69}, "VaultService._create_initial_rooms": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 34, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 34, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [144, 145, 148, 149, 151, 153, 154, 155, 157, 159, 160, 163, 164, 165, 166, 169, 170, 171, 172, 173, 174, 175, 176, 179, 180, 183, 184, 185, 186, 188, 191, 192, 193, 195], "excluded_lines": [], "start_line": 132}, "VaultService._create_initial_dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [207, 209, 218, 219, 220, 223, 228, 231, 232, 242, 243, 244, 245, 246, 250, 255, 257, 258, 259], "excluded_lines": [], "start_line": 197}, "VaultService._start_training_sessions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [269, 270, 272, 274, 276, 278, 281, 282, 283, 284, 285, 288, 290, 291, 293, 295, 296, 298, 301, 302, 303, 309, 310, 311, 313, 314, 315, 316], "excluded_lines": [], "start_line": 261}, "VaultService._assign_initial_objectives": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [320, 322, 325, 326, 329, 331, 332, 333, 334], "excluded_lines": [], "start_line": 318}, "VaultService.initiate_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [360, 361, 362, 365, 366, 367, 372, 377, 378, 379, 380, 387, 392, 395, 398, 400], "excluded_lines": [], "start_line": 336}, "VaultService.update_vault_resources": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [404, 408], "excluded_lines": [], "start_line": 402}, "": {"executed_lines": [4, 5, 8, 9, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 34, 37, 41, 42, 69, 132, 197, 261, 318, 336, 402, 412], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [30, 31], "start_line": 1}}, "classes": {"VaultService": {"executed_lines": [38, 39], "summary": {"covered_lines": 2, "num_statements": 144, "percent_covered": 1.3888888888888888, "percent_covered_display": "1.39", "missing_lines": 142, "excluded_lines": 0, "percent_statements_covered": 1.3888888888888888, "percent_statements_covered_display": "1.39"}, "missing_lines": [43, 44, 47, 48, 51, 52, 55, 56, 58, 67, 77, 78, 79, 82, 83, 84, 87, 88, 92, 95, 96, 97, 98, 105, 106, 109, 110, 111, 114, 115, 116, 125, 128, 130, 144, 145, 148, 149, 151, 153, 154, 155, 157, 159, 160, 163, 164, 165, 166, 169, 170, 171, 172, 173, 174, 175, 176, 179, 180, 183, 184, 185, 186, 188, 191, 192, 193, 195, 207, 209, 218, 219, 220, 223, 228, 231, 232, 242, 243, 244, 245, 246, 250, 255, 257, 258, 259, 269, 270, 272, 274, 276, 278, 281, 282, 283, 284, 285, 288, 290, 291, 293, 295, 296, 298, 301, 302, 303, 309, 310, 311, 313, 314, 315, 316, 320, 322, 325, 326, 329, 331, 332, 333, 334, 360, 361, 362, 365, 366, 367, 372, 377, 378, 379, 380, 387, 392, 395, 398, 400, 404, 408], "excluded_lines": [], "start_line": 34}, "": {"executed_lines": [4, 5, 8, 9, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 34, 37, 41, 42, 69, 132, 197, 261, 318, 336, 402, 412], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [30, 31], "start_line": 1}}}, "app\\services\\websocket_manager.py": {"executed_lines": [1, 2, 4, 7, 10, 12, 14, 16, 23, 32, 48, 53, 61, 71, 86, 96], "summary": {"covered_lines": 16, "num_statements": 58, "percent_covered": 27.586206896551722, "percent_covered_display": "27.59", "missing_lines": 42, "excluded_lines": 0, "percent_statements_covered": 27.586206896551722, "percent_statements_covered_display": "27.59"}, "missing_lines": [18, 19, 20, 21, 25, 26, 27, 29, 30, 34, 36, 37, 38, 39, 40, 42, 45, 46, 50, 51, 55, 56, 57, 58, 59, 63, 64, 65, 66, 68, 69, 73, 74, 75, 76, 77, 78, 79, 80, 83, 84, 88], "excluded_lines": [], "functions": {"ConnectionManager.__init__": {"executed_lines": [12, 14], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "ConnectionManager.connect": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [18, 19, 20, 21], "excluded_lines": [], "start_line": 16}, "ConnectionManager.disconnect": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [25, 26, 27, 29, 30], "excluded_lines": [], "start_line": 23}, "ConnectionManager.send_personal_message": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [34, 36, 37, 38, 39, 40, 42, 45, 46], "excluded_lines": [], "start_line": 32}, "ConnectionManager.broadcast_to_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [50, 51], "excluded_lines": [], "start_line": 48}, "ConnectionManager.connect_chat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [55, 56, 57, 58, 59], "excluded_lines": [], "start_line": 53}, "ConnectionManager.disconnect_chat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [63, 64, 65, 66, 68, 69], "excluded_lines": [], "start_line": 61}, "ConnectionManager.send_chat_message": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [73, 74, 75, 76, 77, 78, 79, 80, 83, 84], "excluded_lines": [], "start_line": 71}, "ConnectionManager.send_typing_indicator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [88], "excluded_lines": [], "start_line": 86}, "": {"executed_lines": [1, 2, 4, 7, 10, 16, 23, 32, 48, 53, 61, 71, 86, 96], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ConnectionManager": {"executed_lines": [12, 14], "summary": {"covered_lines": 2, "num_statements": 44, "percent_covered": 4.545454545454546, "percent_covered_display": "4.55", "missing_lines": 42, "excluded_lines": 0, "percent_statements_covered": 4.545454545454546, "percent_statements_covered_display": "4.55"}, "missing_lines": [18, 19, 20, 21, 25, 26, 27, 29, 30, 34, 36, 37, 38, 39, 40, 42, 45, 46, 50, 51, 55, 56, 57, 58, 59, 63, 64, 65, 66, 68, 69, 73, 74, 75, 76, 77, 78, 79, 80, 83, 84, 88], "excluded_lines": [], "start_line": 7}, "": {"executed_lines": [1, 2, 4, 7, 10, 16, 23, 32, 48, 53, 61, 71, 86, 96], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\exceptions.py": {"executed_lines": [1, 2, 4, 5, 7, 10, 18, 24, 34, 45, 54, 64, 72, 76, 84, 92, 100, 109, 117, 125, 130, 136, 144, 151, 160, 172, 180, 187, 191, 195, 199], "summary": {"covered_lines": 31, "num_statements": 54, "percent_covered": 57.407407407407405, "percent_covered_display": "57.41", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 57.407407407407405, "percent_statements_covered_display": "57.41"}, "missing_lines": [21, 41, 42, 60, 61, 73, 89, 105, 106, 122, 133, 145, 146, 147, 148, 166, 167, 168, 169, 181, 182, 183, 184], "excluded_lines": [], "functions": {"AccessDeniedException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [21], "excluded_lines": [], "start_line": 18}, "ResourceNotFoundException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [41, 42], "excluded_lines": [], "start_line": 34}, "ResourceAlreadyExistsException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [60, 61], "excluded_lines": [], "start_line": 54}, "ResourceConflictException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [73], "excluded_lines": [], "start_line": 72}, "ContentNoChangeException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [89], "excluded_lines": [], "start_line": 84}, "InvalidItemAssignmentException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [105, 106], "excluded_lines": [], "start_line": 100}, "InvalidVaultTransferException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [122], "excluded_lines": [], "start_line": 117}, "VaultOperationException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [133], "excluded_lines": [], "start_line": 130}, "NoSpaceAvailableException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [145, 146, 147, 148], "excluded_lines": [], "start_line": 144}, "InsufficientResourcesException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [166, 167, 168, 169], "excluded_lines": [], "start_line": 160}, "UniqueRoomViolationException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [181, 182, 183, 184], "excluded_lines": [], "start_line": 180}, "": {"executed_lines": [1, 2, 4, 5, 7, 10, 18, 24, 34, 45, 54, 64, 72, 76, 84, 92, 100, 109, 117, 125, 130, 136, 144, 151, 160, 172, 180, 187, 191, 195, 199], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AccessDeniedException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [21], "excluded_lines": [], "start_line": 10}, "ResourceNotFoundException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [41, 42], "excluded_lines": [], "start_line": 24}, "ResourceAlreadyExistsException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [60, 61], "excluded_lines": [], "start_line": 45}, "ResourceConflictException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [73], "excluded_lines": [], "start_line": 64}, "ContentNoChangeException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [89], "excluded_lines": [], "start_line": 76}, "InvalidItemAssignmentException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [105, 106], "excluded_lines": [], "start_line": 92}, "InvalidVaultTransferException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [122], "excluded_lines": [], "start_line": 109}, "VaultOperationException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [133], "excluded_lines": [], "start_line": 125}, "NoSpaceAvailableException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [145, 146, 147, 148], "excluded_lines": [], "start_line": 136}, "InsufficientResourcesException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [166, 167, 168, 169], "excluded_lines": [], "start_line": 151}, "UniqueRoomViolationException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [181, 182, 183, 184], "excluded_lines": [], "start_line": 172}, "MinioError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 187}, "BucketNotFoundError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 191}, "FileUploadError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 195}, "FileDownloadError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 199}, "": {"executed_lines": [1, 2, 4, 5, 7, 10, 18, 24, 34, 45, 54, 64, 72, 76, 84, 92, 100, 109, 117, 125, 130, 136, 144, 151, 160, 172, 180, 187, 191, 195, 199], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\image_processing.py": {"executed_lines": [1, 2, 4, 5, 7, 10, 23], "summary": {"covered_lines": 7, "num_statements": 20, "percent_covered": 35.0, "percent_covered_display": "35.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 35.0, "percent_statements_covered_display": "35.00"}, "missing_lines": [12, 13, 14, 15, 16, 17, 18, 20, 25, 26, 27, 28, 29], "excluded_lines": [], "functions": {"image_url_to_bytes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [12, 13, 14, 15, 16, 17, 18, 20], "excluded_lines": [], "start_line": 10}, "generate_thumbnail": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [25, 26, 27, 28, 29], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [1, 2, 4, 5, 7, 10, 23], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 7, 10, 23], "summary": {"covered_lines": 7, "num_statements": 20, "percent_covered": 35.0, "percent_covered_display": "35.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 35.0, "percent_statements_covered_display": "35.00"}, "missing_lines": [12, 13, 14, 15, 16, 17, 18, 20, 25, 26, 27, 28, 29], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\load_quests.py": {"executed_lines": [1, 2, 3, 5, 7, 10, 34], "summary": {"covered_lines": 7, "num_statements": 31, "percent_covered": 22.580645161290324, "percent_covered_display": "22.58", "missing_lines": 24, "excluded_lines": 6, "percent_statements_covered": 22.580645161290324, "percent_statements_covered_display": "22.58"}, "missing_lines": [20, 21, 22, 23, 24, 27, 30, 31, 45, 47, 48, 50, 52, 53, 54, 56, 57, 58, 59, 60, 63, 64, 66, 67], "excluded_lines": [70, 71, 73, 74, 75, 76], "functions": {"load_quest_chain_from_json": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20, 21, 22, 23, 24, 27, 30, 31], "excluded_lines": [], "start_line": 10}, "load_all_quest_chain_files": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [45, 47, 48, 50, 52, 53, 54, 56, 57, 58, 59, 60, 63, 64, 66, 67], "excluded_lines": [], "start_line": 34}, "": {"executed_lines": [1, 2, 3, 5, 7, 10, 34], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 6, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [70, 71, 73, 74, 75, 76], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 5, 7, 10, 34], "summary": {"covered_lines": 7, "num_statements": 31, "percent_covered": 22.580645161290324, "percent_covered_display": "22.58", "missing_lines": 24, "excluded_lines": 6, "percent_statements_covered": 22.580645161290324, "percent_statements_covered_display": "22.58"}, "missing_lines": [20, 21, 22, 23, 24, 27, 30, 31, 45, 47, 48, 50, 52, 53, 54, 56, 57, 58, 59, 60, 63, 64, 66, 67], "excluded_lines": [70, 71, 73, 74, 75, 76], "start_line": 1}}}, "app\\utils\\partial.py": {"executed_lines": [5, 6, 7, 9, 10, 12, 15, 21, 22, 24, 25, 27, 28, 29, 30, 31, 33, 36, 47], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 95.0, "percent_covered_display": "95.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95.00"}, "missing_lines": [34], "excluded_lines": [], "functions": {"optional": {"executed_lines": [21, 22, 24, 47], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "optional.wrapper": {"executed_lines": [25, 27, 33, 36], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [34], "excluded_lines": [], "start_line": 24}, "optional.wrapper.make_field_optional": {"executed_lines": [28, 29, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "": {"executed_lines": [5, 6, 7, 9, 10, 12, 15], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [5, 6, 7, 9, 10, 12, 15, 21, 22, 24, 25, 27, 28, 29, 30, 31, 33, 36, 47], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 95.0, "percent_covered_display": "95.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95.00"}, "missing_lines": [34], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\seed_objectives.py": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 13, 16], "summary": {"covered_lines": 9, "num_statements": 48, "percent_covered": 18.75, "percent_covered_display": "18.75", "missing_lines": 39, "excluded_lines": 0, "percent_statements_covered": 18.75, "percent_statements_covered_display": "18.75"}, "missing_lines": [27, 28, 29, 31, 32, 33, 36, 37, 38, 39, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 53, 56, 57, 60, 61, 62, 63, 67, 68, 69, 71, 72, 73, 75, 76, 77, 78, 79, 80], "excluded_lines": [], "functions": {"seed_objectives_from_json": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 39, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 39, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [27, 28, 29, 31, 32, 33, 36, 37, 38, 39, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 53, 56, 57, 60, 61, 62, 63, 67, 68, 69, 71, 72, 73, 75, 76, 77, 78, 79, 80], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 13, 16], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 13, 16], "summary": {"covered_lines": 9, "num_statements": 48, "percent_covered": 18.75, "percent_covered_display": "18.75", "missing_lines": 39, "excluded_lines": 0, "percent_statements_covered": 18.75, "percent_statements_covered_display": "18.75"}, "missing_lines": [27, 28, 29, 31, 32, 33, 36, 37, 38, 39, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 53, 56, 57, 60, 61, 62, 63, 67, 68, 69, 71, 72, 73, 75, 76, 77, 78, 79, 80], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\seed_quests.py": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 13, 16], "summary": {"covered_lines": 9, "num_statements": 33, "percent_covered": 27.272727272727273, "percent_covered_display": "27.27", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 27.272727272727273, "percent_statements_covered_display": "27.27"}, "missing_lines": [27, 29, 32, 33, 34, 36, 39, 40, 43, 44, 46, 47, 56, 57, 58, 60, 61, 62, 64, 65, 66, 67, 68, 69], "excluded_lines": [], "functions": {"seed_quests_from_json": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 24, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [27, 29, 32, 33, 34, 36, 39, 40, 43, 44, 46, 47, 56, 57, 58, 60, 61, 62, 64, 65, 66, 67, 68, 69], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 13, 16], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 13, 16], "summary": {"covered_lines": 9, "num_statements": 33, "percent_covered": 27.272727272727273, "percent_covered_display": "27.27", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 27.272727272727273, "percent_statements_covered_display": "27.27"}, "missing_lines": [27, 29, 32, 33, 34, 36, 39, 40, 43, 44, 46, 47, 56, 57, 58, 60, 61, 62, 64, 65, 66, 67, 68, 69], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\static_data.py": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 38, 39, 44, 45, 55, 56, 61, 62, 67, 68, 80, 81, 97, 98, 108], "summary": {"covered_lines": 40, "num_statements": 88, "percent_covered": 45.45454545454545, "percent_covered_display": "45.45", "missing_lines": 48, "excluded_lines": 0, "percent_statements_covered": 45.45454545454545, "percent_statements_covered_display": "45.45"}, "missing_lines": [32, 33, 34, 35, 36, 40, 41, 42, 46, 47, 48, 49, 50, 51, 52, 53, 57, 58, 59, 63, 64, 65, 70, 71, 73, 74, 75, 76, 77, 78, 83, 84, 85, 86, 87, 88, 89, 90, 93, 94, 95, 99, 100, 101, 102, 103, 104, 105], "excluded_lines": [], "functions": {"StaticGameData.__init__": {"executed_lines": [22, 23, 24, 25, 26, 27, 28], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "StaticGameData.dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [32, 33, 34, 35, 36], "excluded_lines": [], "start_line": 31}, "StaticGameData.junk_items": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40, 41, 42], "excluded_lines": [], "start_line": 39}, "StaticGameData.outfits": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [46, 47, 48, 49, 50, 51, 52, 53], "excluded_lines": [], "start_line": 45}, "StaticGameData.weapons": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [57, 58, 59], "excluded_lines": [], "start_line": 56}, "StaticGameData.rooms": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [63, 64, 65], "excluded_lines": [], "start_line": 62}, "StaticGameData.quests": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [70, 71, 73, 74, 75, 76, 77, 78], "excluded_lines": [], "start_line": 68}, "StaticGameData.objectives": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [83, 84, 85, 86, 87, 88, 89, 90, 93, 94, 95], "excluded_lines": [], "start_line": 81}, "StaticGameData.load_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [99, 100, 101, 102, 103, 104, 105], "excluded_lines": [], "start_line": 98}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 20, 21, 30, 31, 38, 39, 44, 45, 55, 56, 61, 62, 67, 68, 80, 81, 97, 98, 108], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"StaticGameData": {"executed_lines": [22, 23, 24, 25, 26, 27, 28], "summary": {"covered_lines": 7, "num_statements": 55, "percent_covered": 12.727272727272727, "percent_covered_display": "12.73", "missing_lines": 48, "excluded_lines": 0, "percent_statements_covered": 12.727272727272727, "percent_statements_covered_display": "12.73"}, "missing_lines": [32, 33, 34, 35, 36, 40, 41, 42, 46, 47, 48, 49, 50, 51, 52, 53, 57, 58, 59, 63, 64, 65, 70, 71, 73, 74, 75, 76, 77, 78, 83, 84, 85, 86, 87, 88, 89, 90, 93, 94, 95, 99, 100, 101, 102, 103, 104, 105], "excluded_lines": [], "start_line": 20}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 20, 21, 30, 31, 38, 39, 44, 45, 55, 56, 61, 62, 67, 68, 80, 81, 97, 98, 108], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}}, "totals": {"covered_lines": 3531, "num_statements": 7721, "percent_covered": 45.73241808055951, "percent_covered_display": "45.73", "missing_lines": 4190, "excluded_lines": 82, "percent_statements_covered": 45.73241808055951, "percent_statements_covered_display": "45.73"}} +{"meta": {"format": 3, "version": "7.13.1", "timestamp": "2026-01-22T23:14:10.778323", "branch_coverage": false, "show_contexts": false}, "files": {"app\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\admin\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\admin\\auth.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 10, 11, 41, 46], "summary": {"covered_lines": 10, "num_statements": 31, "percent_covered": 32.25806451612903, "percent_covered_display": "32.26", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 32.25806451612903, "percent_statements_covered_display": "32.26"}, "missing_lines": [12, 13, 14, 17, 25, 27, 34, 36, 37, 39, 43, 44, 47, 49, 50, 53, 62, 63, 64, 65, 67], "excluded_lines": [], "functions": {"AdminAuth.login": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [12, 13, 14, 17, 25, 27, 34, 36, 37, 39], "excluded_lines": [], "start_line": 11}, "AdminAuth.logout": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [43, 44], "excluded_lines": [], "start_line": 41}, "AdminAuth.authenticate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [47, 49, 50, 53, 62, 63, 64, 65, 67], "excluded_lines": [], "start_line": 46}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 10, 11, 41, 46], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AdminAuth": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [12, 13, 14, 17, 25, 27, 34, 36, 37, 39, 43, 44, 47, 49, 50, 53, 62, 63, 64, 65, 67], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 10, 11, 41, 46], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\admin\\views.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 25, 26, 35, 37, 39, 40, 41, 42, 45, 46, 59, 60, 62, 64, 65, 68, 69, 80, 83, 84, 91, 94, 95, 112, 118, 121, 122, 124, 125, 127, 130, 131, 140, 143, 144, 153, 154, 155, 157, 159, 160, 161, 162, 165, 166, 171, 172, 174, 176, 177, 178, 179, 182, 183, 193, 196, 197, 209, 212, 213, 219, 222, 223, 224, 225, 233, 236, 237, 247, 248, 249, 251, 252, 255, 256, 267, 268, 269, 271, 272, 275, 276, 293, 294, 295, 297, 298, 299, 302, 303, 318, 319, 320, 322, 323, 324, 327, 328, 343, 344, 345, 347, 348, 349, 352, 353, 364, 365, 366, 368, 376, 377, 378, 380, 381, 382, 385, 386, 400, 401, 402, 404, 410, 411, 412, 414, 415, 416], "summary": {"covered_lines": 148, "num_statements": 148, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 25, 26, 35, 37, 39, 40, 41, 42, 45, 46, 59, 60, 62, 64, 65, 68, 69, 80, 83, 84, 91, 94, 95, 112, 118, 121, 122, 124, 125, 127, 130, 131, 140, 143, 144, 153, 154, 155, 157, 159, 160, 161, 162, 165, 166, 171, 172, 174, 176, 177, 178, 179, 182, 183, 193, 196, 197, 209, 212, 213, 219, 222, 223, 224, 225, 233, 236, 237, 247, 248, 249, 251, 252, 255, 256, 267, 268, 269, 271, 272, 275, 276, 293, 294, 295, 297, 298, 299, 302, 303, 318, 319, 320, 322, 323, 324, 327, 328, 343, 344, 345, 347, 348, 349, 352, 353, 364, 365, 366, 368, 376, 377, 378, 380, 381, 382, 385, 386, 400, 401, 402, 404, 410, 411, 412, 414, 415, 416], "summary": {"covered_lines": 148, "num_statements": 148, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"UserAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "UserProfileAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "VaultAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "StorageAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "DwellerAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 94}, "JunkAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 121}, "OutfitAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 130}, "QuestAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 143}, "ObjectiveAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 165}, "RoomAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 182}, "WeaponAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 196}, "PromptAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 212}, "LLInteractionAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 222}, "RelationshipAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 236}, "PregnancyAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 255}, "TrainingAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 275}, "IncidentAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 302}, "ExplorationAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 327}, "ChatMessageAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 352}, "NotificationAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 385}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 25, 26, 35, 37, 39, 40, 41, 42, 45, 46, 59, 60, 62, 64, 65, 68, 69, 80, 83, 84, 91, 94, 95, 112, 118, 121, 122, 124, 125, 127, 130, 131, 140, 143, 144, 153, 154, 155, 157, 159, 160, 161, 162, 165, 166, 171, 172, 174, 176, 177, 178, 179, 182, 183, 193, 196, 197, 209, 212, 213, 219, 222, 223, 224, 225, 233, 236, 237, 247, 248, 249, 251, 252, 255, 256, 267, 268, 269, 271, 272, 275, 276, 293, 294, 295, 297, 298, 299, 302, 303, 318, 319, 320, 322, 323, 324, 327, 328, 343, 344, 345, 347, 348, 349, 352, 353, 364, 365, 366, 368, 376, 377, 378, 380, 381, 382, 385, 386, 400, 401, 402, 404, 410, 411, 412, 414, 415, 416], "summary": {"covered_lines": 148, "num_statements": 148, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\agents\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\agents\\deps.py": {"executed_lines": [3, 5, 8, 9, 12, 13, 14, 15, 18, 19, 22, 25, 26, 29, 30, 31, 32], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 5, 8, 9, 12, 13, 14, 15, 18, 19, 22, 25, 26, 29, 30, 31, 32], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"BackstoryDeps": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "ExtendBioDeps": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "VisualAttributesDeps": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "": {"executed_lines": [3, 5, 8, 9, 12, 13, 14, 15, 18, 19, 22, 25, 26, 29, 30, 31, 32], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\agents\\dweller_agents.py": {"executed_lines": [3, 5, 6, 7, 8, 11, 13, 19, 22, 36, 37, 51, 64, 65, 76, 100, 101], "summary": {"covered_lines": 17, "num_statements": 23, "percent_covered": 73.91304347826087, "percent_covered_display": "73.91", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 73.91304347826087, "percent_statements_covered_display": "73.91"}, "missing_lines": [39, 40, 67, 103, 104, 106], "excluded_lines": [], "functions": {"backstory_system_prompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [39, 40], "excluded_lines": [], "start_line": 37}, "bio_extension_system_prompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [67], "excluded_lines": [], "start_line": 65}, "visual_attributes_system_prompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [103, 104, 106], "excluded_lines": [], "start_line": 101}, "": {"executed_lines": [3, 5, 6, 7, 8, 11, 13, 19, 22, 36, 37, 51, 64, 65, 76, 100, 101], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 11, 13, 19, 22, 36, 37, 51, 64, 65, 76, 100, 101], "summary": {"covered_lines": 17, "num_statements": 23, "percent_covered": 73.91304347826087, "percent_covered_display": "73.91", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 73.91304347826087, "percent_statements_covered_display": "73.91"}, "missing_lines": [39, 40, 67, 103, 104, 106], "excluded_lines": [], "start_line": 1}}}, "app\\api\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\api\\celery_task.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 55, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 55, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 3, 4, 6, 8, 9, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26, 29, 30, 35, 36, 38, 40, 42, 44, 50, 52, 53, 54, 55, 57, 58, 59, 60, 62, 63, 66, 67, 72, 73, 75, 77, 79, 81, 87, 89, 90, 91, 92, 94, 95, 96, 97, 99, 100], "excluded_lines": [], "functions": {"create_task": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20, 21], "excluded_lines": [], "start_line": 19}, "generate_dweller_attributes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [26], "excluded_lines": [], "start_line": 25}, "game_tick_task": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [35, 36, 38, 57, 58, 59, 60, 62, 63], "excluded_lines": [], "start_line": 30}, "game_tick_task.run_tick": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40, 42, 44, 50, 52, 53, 54, 55], "excluded_lines": [], "start_line": 38}, "process_vault_tick_task": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [72, 73, 75, 94, 95, 96, 97, 99, 100], "excluded_lines": [], "start_line": 67}, "process_vault_tick_task.run_vault_tick": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [77, 79, 81, 87, 89, 90, 91, 92], "excluded_lines": [], "start_line": 75}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 3, 4, 6, 8, 9, 11, 14, 15, 18, 19, 24, 25, 29, 30, 66, 67], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 55, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 55, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 3, 4, 6, 8, 9, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26, 29, 30, 35, 36, 38, 40, 42, 44, 50, 52, 53, 54, 55, 57, 58, 59, 60, 62, 63, 66, 67, 72, 73, 75, 77, 79, 81, 87, 89, 90, 91, 92, 94, 95, 96, 97, 99, 100], "excluded_lines": [], "start_line": 1}}}, "app\\api\\deps.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 23, 24, 25, 26, 28, 31, 35, 36, 41, 42, 48, 54, 57, 58, 60, 63, 66, 67, 68, 72, 75, 78, 89, 103, 109, 116, 122, 129, 135, 137], "summary": {"covered_lines": 45, "num_statements": 68, "percent_covered": 66.17647058823529, "percent_covered_display": "66.18", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 66.17647058823529, "percent_statements_covered_display": "66.18"}, "missing_lines": [43, 44, 49, 50, 51, 59, 90, 91, 94, 95, 100, 110, 111, 113, 123, 124, 126, 138, 139, 142, 143, 144, 146], "excluded_lines": [], "functions": {"get_redis_client": {"executed_lines": [24, 25, 26, 28], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "get_current_user": {"executed_lines": [35, 36, 41, 42, 48], "summary": {"covered_lines": 5, "num_statements": 10, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [43, 44, 49, 50, 51], "excluded_lines": [], "start_line": 31}, "get_current_active_user": {"executed_lines": [58, 60], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [59], "excluded_lines": [], "start_line": 57}, "get_current_active_superuser": {"executed_lines": [67, 68, 72], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 66}, "get_user_vault_or_403": {"executed_lines": [89], "summary": {"covered_lines": 1, "num_statements": 6, "percent_covered": 16.666666666666668, "percent_covered_display": "16.67", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 16.666666666666668, "percent_statements_covered_display": "16.67"}, "missing_lines": [90, 91, 94, 95, 100], "excluded_lines": [], "start_line": 78}, "verify_dweller_access": {"executed_lines": [109], "summary": {"covered_lines": 1, "num_statements": 4, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [110, 111, 113], "excluded_lines": [], "start_line": 103}, "verify_room_access": {"executed_lines": [122], "summary": {"covered_lines": 1, "num_statements": 4, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [123, 124, 126], "excluded_lines": [], "start_line": 116}, "verify_exploration_access": {"executed_lines": [135, 137], "summary": {"covered_lines": 2, "num_statements": 8, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [138, 139, 142, 143, 144, 146], "excluded_lines": [], "start_line": 129}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 23, 31, 54, 57, 63, 66, 75, 78, 103, 116, 129], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 23, 24, 25, 26, 28, 31, 35, 36, 41, 42, 48, 54, 57, 58, 60, 63, 66, 67, 68, 72, 75, 78, 89, 103, 109, 116, 122, 129, 135, 137], "summary": {"covered_lines": 45, "num_statements": 68, "percent_covered": 66.17647058823529, "percent_covered_display": "66.18", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 66.17647058823529, "percent_statements_covered_display": "66.18"}, "missing_lines": [43, 44, 49, 50, 51, 59, 90, 91, 94, 95, 100, 110, 111, 113, 123, 124, 126, 138, 139, 142, 143, 144, 146], "excluded_lines": [], "start_line": 1}}}, "app\\api\\game_data_deps.py": {"executed_lines": [1, 4, 12], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"get_static_game_data": {"executed_lines": [12], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 4}, "": {"executed_lines": [1, 4], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 4, 12], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\api.py": {"executed_lines": [1, 3, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\auth.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 19, 22, 23, 31, 44, 58, 59, 67, 68, 71, 86, 93, 94, 102, 103, 110, 134, 135, 145, 146, 147, 150, 189, 190, 201, 202, 205, 206, 220, 221, 229, 230, 231, 234, 254, 255, 263, 264, 267, 270, 271, 274, 280], "summary": {"covered_lines": 58, "num_statements": 113, "percent_covered": 51.32743362831859, "percent_covered_display": "51.33", "missing_lines": 55, "excluded_lines": 0, "percent_statements_covered": 51.32743362831859, "percent_statements_covered_display": "51.33"}, "missing_lines": [36, 37, 38, 39, 41, 42, 69, 72, 73, 74, 75, 77, 78, 84, 98, 99, 113, 114, 117, 120, 121, 122, 125, 131, 151, 152, 155, 156, 158, 160, 161, 162, 164, 165, 166, 169, 172, 173, 175, 178, 181, 186, 209, 212, 217, 235, 236, 239, 240, 243, 244, 247, 248, 249, 251], "excluded_lines": [], "functions": {"login_access_token": {"executed_lines": [31, 44], "summary": {"covered_lines": 2, "num_statements": 8, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [36, 37, 38, 39, 41, 42], "excluded_lines": [], "start_line": 23}, "refresh_access_token": {"executed_lines": [67, 68, 71, 86], "summary": {"covered_lines": 4, "num_statements": 12, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [69, 72, 73, 74, 75, 77, 78, 84], "excluded_lines": [], "start_line": 59}, "logout": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [98, 99], "excluded_lines": [], "start_line": 94}, "forgot_password": {"executed_lines": [110], "summary": {"covered_lines": 1, "num_statements": 9, "percent_covered": 11.11111111111111, "percent_covered_display": "11.11", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 11.11111111111111, "percent_statements_covered_display": "11.11"}, "missing_lines": [113, 114, 117, 120, 121, 122, 125, 131], "excluded_lines": [], "start_line": 103}, "reset_password": {"executed_lines": [145, 146, 147, 150], "summary": {"covered_lines": 4, "num_statements": 22, "percent_covered": 18.181818181818183, "percent_covered_display": "18.18", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 18.181818181818183, "percent_statements_covered_display": "18.18"}, "missing_lines": [151, 152, 155, 156, 158, 160, 161, 162, 164, 165, 166, 169, 172, 173, 175, 178, 181, 186], "excluded_lines": [], "start_line": 135}, "change_password": {"executed_lines": [201, 202, 205, 206], "summary": {"covered_lines": 4, "num_statements": 7, "percent_covered": 57.142857142857146, "percent_covered_display": "57.14", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57.14"}, "missing_lines": [209, 212, 217], "excluded_lines": [], "start_line": 190}, "verify_email": {"executed_lines": [229, 230, 231, 234], "summary": {"covered_lines": 4, "num_statements": 14, "percent_covered": 28.571428571428573, "percent_covered_display": "28.57", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 28.571428571428573, "percent_statements_covered_display": "28.57"}, "missing_lines": [235, 236, 239, 240, 243, 244, 247, 248, 249, 251], "excluded_lines": [], "start_line": 221}, "resend_verification_email": {"executed_lines": [263, 264, 267, 270, 271, 274, 280], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 255}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 19, 22, 23, 58, 59, 93, 94, 102, 103, 134, 135, 189, 190, 220, 221, 254, 255], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 19, 22, 23, 31, 44, 58, 59, 67, 68, 71, 86, 93, 94, 102, 103, 110, 134, 135, 145, 146, 147, 150, 189, 190, 201, 202, 205, 206, 220, 221, 229, 230, 231, 234, 254, 255, 263, 264, 267, 270, 271, 274, 280], "summary": {"covered_lines": 58, "num_statements": 113, "percent_covered": 51.32743362831859, "percent_covered_display": "51.33", "missing_lines": 55, "excluded_lines": 0, "percent_statements_covered": 51.32743362831859, "percent_statements_covered_display": "51.33"}, "missing_lines": [36, 37, 38, 39, 41, 42, 69, 72, 73, 74, 75, 77, 78, 84, 98, 99, 113, 114, 117, 120, 121, 122, 125, 131, 151, 152, 155, 156, 158, 160, 161, 162, 164, 165, 166, 169, 172, 173, 175, 178, 181, 186, 209, 212, 217, 235, 236, 239, 240, 243, 244, 247, 248, 249, 251], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\chat.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 26, 27, 28, 29, 30, 31, 32, 35, 36, 91, 92, 95, 96, 102, 156, 157, 178, 179, 206, 208, 210, 215, 218], "summary": {"covered_lines": 43, "num_statements": 78, "percent_covered": 55.12820512820513, "percent_covered_display": "55.13", "missing_lines": 35, "excluded_lines": 0, "percent_statements_covered": 55.12820512820513, "percent_statements_covered_display": "55.13"}, "missing_lines": [40, 68, 70, 72, 74, 75, 82, 83, 86, 87, 88, 103, 104, 107, 110, 111, 119, 125, 131, 142, 153, 165, 166, 167, 169, 211, 212, 227, 228, 239, 246, 247, 248, 249, 250], "excluded_lines": [], "functions": {"generate_objectives": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40, 68, 70, 72, 74, 75, 82, 83, 86, 87, 88], "excluded_lines": [], "start_line": 36}, "chat_with_dweller": {"executed_lines": [102], "summary": {"covered_lines": 1, "num_statements": 11, "percent_covered": 9.090909090909092, "percent_covered_display": "9.09", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 9.090909090909092, "percent_statements_covered_display": "9.09"}, "missing_lines": [103, 104, 107, 110, 111, 119, 125, 131, 142, 153], "excluded_lines": [], "start_line": 96}, "get_chat_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [165, 166, 167, 169], "excluded_lines": [], "start_line": 157}, "voice_chat_with_dweller": {"executed_lines": [206, 208, 210, 215, 218], "summary": {"covered_lines": 5, "num_statements": 15, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [211, 212, 227, 228, 239, 246, 247, 248, 249, 250], "excluded_lines": [], "start_line": 179}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 26, 27, 28, 29, 30, 31, 32, 35, 36, 91, 92, 95, 96, 156, 157, 178, 179], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ObjectiveKindEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "ChatMessage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 91}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 26, 27, 28, 29, 30, 31, 32, 35, 36, 91, 92, 95, 96, 102, 156, 157, 178, 179, 206, 208, 210, 215, 218], "summary": {"covered_lines": 43, "num_statements": 78, "percent_covered": 55.12820512820513, "percent_covered_display": "55.13", "missing_lines": 35, "excluded_lines": 0, "percent_statements_covered": 55.12820512820513, "percent_statements_covered_display": "55.13"}, "missing_lines": [40, 68, 70, 72, 74, 75, 82, 83, 86, 87, 88, 103, 104, 107, 110, 111, 119, 125, 131, 142, 153, 165, 166, 167, 169, 211, 212, 227, 228, 239, 246, 247, 248, 249, 250], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\dweller.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 26, 28, 31, 32, 37, 40, 41, 48, 51, 52, 57, 61, 62, 68, 91, 92, 95, 98, 99, 111, 124, 125, 135, 136, 146, 147, 155, 156, 164, 165, 173, 174, 183, 184, 195, 196, 214, 215, 219, 220, 230, 231, 241, 242, 254, 255, 270, 271, 296, 297, 310, 311, 341, 342], "summary": {"covered_lines": 64, "num_statements": 125, "percent_covered": 51.2, "percent_covered_display": "51.20", "missing_lines": 61, "excluded_lines": 0, "percent_statements_covered": 51.2, "percent_statements_covered_display": "51.20"}, "missing_lines": [58, 70, 73, 75, 77, 80, 81, 82, 83, 84, 86, 88, 112, 131, 132, 142, 143, 152, 161, 170, 180, 190, 204, 216, 226, 227, 237, 238, 248, 250, 251, 261, 262, 279, 281, 282, 287, 288, 289, 290, 291, 293, 305, 306, 307, 317, 319, 320, 322, 323, 325, 327, 328, 330, 348, 350, 353, 354, 357, 360, 362], "excluded_lines": [], "functions": {"create_dweller": {"executed_lines": [37], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "read_dweller_list": {"executed_lines": [48], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "read_dweller": {"executed_lines": [57], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [58], "excluded_lines": [], "start_line": 52}, "update_dweller": {"executed_lines": [68], "summary": {"covered_lines": 1, "num_statements": 12, "percent_covered": 8.333333333333334, "percent_covered_display": "8.33", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 8.333333333333334, "percent_statements_covered_display": "8.33"}, "missing_lines": [70, 73, 75, 77, 80, 81, 82, 83, 84, 86, 88], "excluded_lines": [], "start_line": 62}, "delete_dweller": {"executed_lines": [95], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 92}, "read_dwellers_by_vault": {"executed_lines": [111], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [112], "excluded_lines": [], "start_line": 99}, "move_dweller_to_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [131, 132], "excluded_lines": [], "start_line": 125}, "create_random_common_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [142, 143], "excluded_lines": [], "start_line": 136}, "generate_backstory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [152], "excluded_lines": [], "start_line": 147}, "generate_visual_attributes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [161], "excluded_lines": [], "start_line": 156}, "generate_photo": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [170], "excluded_lines": [], "start_line": 165}, "generate_audio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [180], "excluded_lines": [], "start_line": 174}, "generate_data_with_ai": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [190], "excluded_lines": [], "start_line": 184}, "generate_dweller_avatar": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [204], "excluded_lines": [], "start_line": 196}, "read_dwellers_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [216], "excluded_lines": [], "start_line": 215}, "use_stimpack": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [226, 227], "excluded_lines": [], "start_line": 220}, "use_radaway": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [237, 238], "excluded_lines": [], "start_line": 231}, "get_happiness_modifiers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [248, 250, 251], "excluded_lines": [], "start_line": 242}, "auto_assign_to_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [261, 262], "excluded_lines": [], "start_line": 255}, "get_dead_dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [279, 281, 282, 287, 288, 289, 290, 291, 293], "excluded_lines": [], "start_line": 271}, "get_graveyard": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [305, 306, 307], "excluded_lines": [], "start_line": 297}, "get_revival_cost": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [317, 319, 320, 322, 323, 325, 327, 328, 330], "excluded_lines": [], "start_line": 311}, "revive_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [348, 350, 353, 354, 357, 360, 362], "excluded_lines": [], "start_line": 342}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 26, 28, 31, 32, 40, 41, 51, 52, 61, 62, 91, 92, 98, 99, 124, 125, 135, 136, 146, 147, 155, 156, 164, 165, 173, 174, 183, 184, 195, 196, 214, 215, 219, 220, 230, 231, 241, 242, 254, 255, 270, 271, 296, 297, 310, 311, 341, 342], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 26, 28, 31, 32, 37, 40, 41, 48, 51, 52, 57, 61, 62, 68, 91, 92, 95, 98, 99, 111, 124, 125, 135, 136, 146, 147, 155, 156, 164, 165, 173, 174, 183, 184, 195, 196, 214, 215, 219, 220, 230, 231, 241, 242, 254, 255, 270, 271, 296, 297, 310, 311, 341, 342], "summary": {"covered_lines": 64, "num_statements": 125, "percent_covered": 51.2, "percent_covered_display": "51.20", "missing_lines": 61, "excluded_lines": 0, "percent_statements_covered": 51.2, "percent_statements_covered_display": "51.20"}, "missing_lines": [58, 70, 73, 75, 77, 80, 81, 82, 83, 84, 86, 88, 112, 131, 132, 142, 143, 152, 161, 170, 180, 190, 204, 216, 226, 227, 237, 238, 248, 250, 251, 261, 262, 279, 281, 282, 287, 288, 289, 290, 291, 293, 305, 306, 307, 317, 319, 320, 322, 323, 325, 327, 328, 330, 348, 350, 353, 354, 357, 360, 362], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\exploration.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 19, 21, 24, 25, 32, 44, 45, 52, 68, 69, 75, 79, 80, 86, 90, 91, 97, 108, 109, 115, 126, 127, 133], "summary": {"covered_lines": 31, "num_statements": 55, "percent_covered": 56.36363636363637, "percent_covered_display": "56.36", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 56.36363636363637, "percent_statements_covered_display": "56.36"}, "missing_lines": [33, 34, 40, 41, 53, 54, 60, 65, 76, 87, 98, 99, 100, 104, 105, 116, 117, 118, 122, 123, 134, 135, 136, 137], "excluded_lines": [], "functions": {"send_dweller_to_wasteland": {"executed_lines": [32], "summary": {"covered_lines": 1, "num_statements": 5, "percent_covered": 20.0, "percent_covered_display": "20.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 20.0, "percent_statements_covered_display": "20.00"}, "missing_lines": [33, 34, 40, 41], "excluded_lines": [], "start_line": 25}, "list_explorations_by_vault": {"executed_lines": [52], "summary": {"covered_lines": 1, "num_statements": 5, "percent_covered": 20.0, "percent_covered_display": "20.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 20.0, "percent_statements_covered_display": "20.00"}, "missing_lines": [53, 54, 60, 65], "excluded_lines": [], "start_line": 45}, "get_exploration": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [76], "excluded_lines": [], "start_line": 69}, "get_exploration_progress": {"executed_lines": [86], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [87], "excluded_lines": [], "start_line": 80}, "recall_dweller": {"executed_lines": [97], "summary": {"covered_lines": 1, "num_statements": 6, "percent_covered": 16.666666666666668, "percent_covered_display": "16.67", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 16.666666666666668, "percent_statements_covered_display": "16.67"}, "missing_lines": [98, 99, 100, 104, 105], "excluded_lines": [], "start_line": 91}, "complete_exploration": {"executed_lines": [115], "summary": {"covered_lines": 1, "num_statements": 6, "percent_covered": 16.666666666666668, "percent_covered_display": "16.67", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 16.666666666666668, "percent_statements_covered_display": "16.67"}, "missing_lines": [116, 117, 118, 122, 123], "excluded_lines": [], "start_line": 109}, "generate_event": {"executed_lines": [133], "summary": {"covered_lines": 1, "num_statements": 5, "percent_covered": 20.0, "percent_covered_display": "20.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 20.0, "percent_statements_covered_display": "20.00"}, "missing_lines": [134, 135, 136, 137], "excluded_lines": [], "start_line": 127}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 19, 21, 24, 25, 44, 45, 68, 69, 79, 80, 90, 91, 108, 109, 126, 127], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 19, 21, 24, 25, 32, 44, 45, 52, 68, 69, 75, 79, 80, 86, 90, 91, 97, 108, 109, 115, 126, 127, 133], "summary": {"covered_lines": 31, "num_statements": 55, "percent_covered": 56.36363636363637, "percent_covered_display": "56.36", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 56.36363636363637, "percent_statements_covered_display": "56.36"}, "missing_lines": [33, 34, 40, 41, 53, 54, 60, 65, 76, 87, 98, 99, 100, 104, 105, 116, 117, 118, 122, 123, 134, 135, 136, 137], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\game_control.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 20, 21, 66, 67, 75, 92, 93, 101, 118, 119, 127, 137, 138, 175, 176, 215, 216, 231, 247, 248, 281, 282, 308, 309, 310, 329, 330, 354, 355], "summary": {"covered_lines": 41, "num_statements": 125, "percent_covered": 32.8, "percent_covered_display": "32.80", "missing_lines": 84, "excluded_lines": 0, "percent_statements_covered": 32.8, "percent_statements_covered_display": "32.80"}, "missing_lines": [31, 76, 77, 79, 80, 82, 84, 102, 103, 105, 106, 108, 110, 128, 129, 131, 132, 134, 146, 147, 148, 150, 151, 153, 155, 185, 186, 187, 189, 190, 192, 193, 194, 196, 232, 233, 235, 236, 239, 241, 263, 264, 265, 267, 268, 271, 272, 273, 275, 276, 277, 278, 294, 297, 298, 299, 301, 302, 305, 306, 307, 315, 317, 318, 320, 338, 339, 340, 342, 343, 345, 347, 364, 365, 366, 368, 369, 372, 373, 374, 376, 378, 379, 381], "excluded_lines": [], "functions": {"get_game_balance_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31], "excluded_lines": [], "start_line": 21}, "pause_vault": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 7, "percent_covered": 14.285714285714286, "percent_covered_display": "14.29", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 14.285714285714286, "percent_statements_covered_display": "14.29"}, "missing_lines": [76, 77, 79, 80, 82, 84], "excluded_lines": [], "start_line": 67}, "resume_vault": {"executed_lines": [101], "summary": {"covered_lines": 1, "num_statements": 7, "percent_covered": 14.285714285714286, "percent_covered_display": "14.29", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 14.285714285714286, "percent_statements_covered_display": "14.29"}, "missing_lines": [102, 103, 105, 106, 108, 110], "excluded_lines": [], "start_line": 93}, "get_game_state": {"executed_lines": [127], "summary": {"covered_lines": 1, "num_statements": 6, "percent_covered": 16.666666666666668, "percent_covered_display": "16.67", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 16.666666666666668, "percent_statements_covered_display": "16.67"}, "missing_lines": [128, 129, 131, 132, 134], "excluded_lines": [], "start_line": 119}, "list_incidents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [146, 147, 148, 150, 151, 153, 155], "excluded_lines": [], "start_line": 138}, "get_incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [185, 186, 187, 189, 190, 192, 193, 194, 196], "excluded_lines": [], "start_line": 176}, "manual_tick": {"executed_lines": [231], "summary": {"covered_lines": 1, "num_statements": 7, "percent_covered": 14.285714285714286, "percent_covered_display": "14.29", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 14.285714285714286, "percent_statements_covered_display": "14.29"}, "missing_lines": [232, 233, 235, 236, 239, 241], "excluded_lines": [], "start_line": 216}, "resolve_incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [263, 264, 265, 267, 268, 271, 272, 273, 275, 276, 277, 278], "excluded_lines": [], "start_line": 248}, "spawn_debug_incident": {"executed_lines": [308, 309, 310], "summary": {"covered_lines": 3, "num_statements": 16, "percent_covered": 18.75, "percent_covered_display": "18.75", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 18.75, "percent_statements_covered_display": "18.75"}, "missing_lines": [294, 297, 298, 299, 301, 302, 305, 306, 307, 315, 317, 318, 320], "excluded_lines": [], "start_line": 282}, "delete_all_incidents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [338, 339, 340, 342, 343, 345, 347], "excluded_lines": [], "start_line": 330}, "delete_incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [364, 365, 366, 368, 369, 372, 373, 374, 376, 378, 379, 381], "excluded_lines": [], "start_line": 355}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 20, 21, 66, 67, 92, 93, 118, 119, 137, 138, 175, 176, 215, 216, 247, 248, 281, 282, 329, 330, 354, 355], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 20, 21, 66, 67, 75, 92, 93, 101, 118, 119, 127, 137, 138, 175, 176, 215, 216, 231, 247, 248, 281, 282, 308, 309, 310, 329, 330, 354, 355], "summary": {"covered_lines": 41, "num_statements": 125, "percent_covered": 32.8, "percent_covered_display": "32.80", "missing_lines": 84, "excluded_lines": 0, "percent_statements_covered": 32.8, "percent_statements_covered_display": "32.80"}, "missing_lines": [31, 76, 77, 79, 80, 82, 84, 102, 103, 105, 106, 108, 110, 128, 129, 131, 132, 134, 146, 147, 148, 150, 151, 153, 155, 185, 186, 187, 189, 190, 192, 193, 194, 196, 232, 233, 235, 236, 239, 241, 263, 264, 265, 267, 268, 271, 272, 273, 275, 276, 277, 278, 294, 297, 298, 299, 301, 302, 305, 306, 307, 315, 317, 318, 320, 338, 339, 340, 342, 343, 345, 347, 364, 365, 366, 368, 369, 372, 373, 374, 376, 378, 379, 381], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\junk.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 17, 20, 21, 24, 27, 28, 29, 32, 33, 36, 39, 40, 41, 44, 45, 49, 50], "summary": {"covered_lines": 28, "num_statements": 30, "percent_covered": 93.33333333333333, "percent_covered_display": "93.33", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93.33"}, "missing_lines": [46, 51], "excluded_lines": [], "functions": {"create_junk": {"executed_lines": [17], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "read_junk_list": {"executed_lines": [24], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "read_junk": {"executed_lines": [29], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "update_junk": {"executed_lines": [36], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "delete_junk": {"executed_lines": [41], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "sell_junk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [46], "excluded_lines": [], "start_line": 45}, "read_junk_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [51], "excluded_lines": [], "start_line": 50}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 20, 21, 27, 28, 32, 33, 39, 40, 44, 45, 49, 50], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 17, 20, 21, 24, 27, 28, 29, 32, 33, 36, 39, 40, 41, 44, 45, 49, 50], "summary": {"covered_lines": 28, "num_statements": 30, "percent_covered": 93.33333333333333, "percent_covered_display": "93.33", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93.33"}, "missing_lines": [46, 51], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\notifications.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 33, 34, 43, 44, 53, 54, 66, 67, 76, 77], "summary": {"covered_lines": 21, "num_statements": 35, "percent_covered": 60.0, "percent_covered_display": "60.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00"}, "missing_lines": [24, 39, 40, 50, 60, 61, 62, 63, 72, 73, 83, 84, 85, 86], "excluded_lines": [], "functions": {"get_notifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24], "excluded_lines": [], "start_line": 16}, "get_unread_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [39, 40], "excluded_lines": [], "start_line": 34}, "create_notification": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [50], "excluded_lines": [], "start_line": 44}, "mark_notification_as_read": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [60, 61, 62, 63], "excluded_lines": [], "start_line": 54}, "mark_all_notifications_as_read": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [72, 73], "excluded_lines": [], "start_line": 67}, "dismiss_notification": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [83, 84, 85, 86], "excluded_lines": [], "start_line": 77}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 33, 34, 43, 44, 53, 54, 66, 67, 76, 77], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 33, 34, 43, 44, 53, 54, 66, 67, 76, 77], "summary": {"covered_lines": 21, "num_statements": 35, "percent_covered": 60.0, "percent_covered_display": "60.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00"}, "missing_lines": [24, 39, 40, 50, 60, 61, 62, 63, 72, 73, 83, 84, 85, 86], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\objective.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 22, 23, 32, 33, 37, 38, 45, 46], "summary": {"covered_lines": 19, "num_statements": 24, "percent_covered": 79.16666666666667, "percent_covered_display": "79.17", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 79.16666666666667, "percent_statements_covered_display": "79.17"}, "missing_lines": [19, 29, 34, 42, 53], "excluded_lines": [], "functions": {"create_objective": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [19], "excluded_lines": [], "start_line": 16}, "read_objective_list": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [29], "excluded_lines": [], "start_line": 23}, "read_objective": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [34], "excluded_lines": [], "start_line": 33}, "complete_objective": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42], "excluded_lines": [], "start_line": 38}, "update_objective_progress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [53], "excluded_lines": [], "start_line": 46}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 22, 23, 32, 33, 37, 38, 45, 46], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 22, 23, 32, 33, 37, 38, 45, 46], "summary": {"covered_lines": 19, "num_statements": 24, "percent_covered": 79.16666666666667, "percent_covered_display": "79.17", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 79.16666666666667, "percent_statements_covered_display": "79.17"}, "missing_lines": [19, 29, 34, 42, 53], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\outfit.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 18, 21, 22, 25, 28, 29, 30, 33, 34, 39, 42, 43, 44, 47, 48, 54, 55, 59, 60, 64, 65, 69, 70], "summary": {"covered_lines": 35, "num_statements": 40, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50"}, "missing_lines": [51, 56, 61, 66, 71], "excluded_lines": [], "functions": {"create_outfit": {"executed_lines": [18], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "read_outfit_list": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "read_outfit": {"executed_lines": [30], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "update_outfit": {"executed_lines": [39], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "delete_outfit": {"executed_lines": [44], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "equip_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [51], "excluded_lines": [], "start_line": 48}, "unequip_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [56], "excluded_lines": [], "start_line": 55}, "scrap_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [61], "excluded_lines": [], "start_line": 60}, "sell_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [66], "excluded_lines": [], "start_line": 65}, "read_outfits_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [71], "excluded_lines": [], "start_line": 70}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 28, 29, 33, 34, 42, 43, 47, 48, 54, 55, 59, 60, 64, 65, 69, 70], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 18, 21, 22, 25, 28, 29, 30, 33, 34, 39, 42, 43, 44, 47, 48, 54, 55, 59, 60, 64, 65, 69, 70], "summary": {"covered_lines": 35, "num_statements": 40, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50"}, "missing_lines": [51, 56, 61, 66, 71], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\pregnancy.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 21, 27, 51, 52, 58, 59, 88, 89, 96, 97], "summary": {"covered_lines": 23, "num_statements": 53, "percent_covered": 43.39622641509434, "percent_covered_display": "43.40", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 43.39622641509434, "percent_statements_covered_display": "43.40"}, "missing_lines": [29, 35, 60, 62, 63, 66, 67, 69, 70, 73, 75, 98, 100, 101, 104, 105, 107, 108, 111, 114, 115, 117, 120, 121, 123, 124, 125, 135, 140, 141], "excluded_lines": [], "functions": {"get_vault_pregnancies": {"executed_lines": [27], "summary": {"covered_lines": 1, "num_statements": 3, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [29, 35], "excluded_lines": [], "start_line": 21}, "get_pregnancy": {"executed_lines": [58, 59], "summary": {"covered_lines": 2, "num_statements": 11, "percent_covered": 18.181818181818183, "percent_covered_display": "18.18", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 18.181818181818183, "percent_statements_covered_display": "18.18"}, "missing_lines": [60, 62, 63, 66, 67, 69, 70, 73, 75], "excluded_lines": [], "start_line": 52}, "deliver_baby": {"executed_lines": [96, 97], "summary": {"covered_lines": 2, "num_statements": 21, "percent_covered": 9.523809523809524, "percent_covered_display": "9.52", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 9.523809523809524, "percent_statements_covered_display": "9.52"}, "missing_lines": [98, 100, 101, 104, 105, 107, 108, 111, 114, 115, 117, 120, 121, 123, 124, 125, 135, 140, 141], "excluded_lines": [], "start_line": 89}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 21, 51, 52, 88, 89], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 21, 27, 51, 52, 58, 59, 88, 89, 96, 97], "summary": {"covered_lines": 23, "num_statements": 53, "percent_covered": 43.39622641509434, "percent_covered_display": "43.40", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 43.39622641509434, "percent_statements_covered_display": "43.40"}, "missing_lines": [29, 35, 60, 62, 63, 66, 67, 69, 70, 73, 75, 98, 100, 101, 104, 105, 107, 108, 111, 114, 115, 117, 120, 121, 123, 124, 125, 135, 140, 141], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\quest.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 16, 19, 20, 30, 31, 39, 40, 51, 52, 61, 62, 70, 71, 75, 76, 92, 93], "summary": {"covered_lines": 25, "num_statements": 33, "percent_covered": 75.75757575757575, "percent_covered_display": "75.76", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 75.75757575757575, "percent_statements_covered_display": "75.76"}, "missing_lines": [27, 36, 48, 58, 67, 72, 87, 102], "excluded_lines": [], "functions": {"read_all_quests": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [27], "excluded_lines": [], "start_line": 20}, "create_quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36], "excluded_lines": [], "start_line": 31}, "read_vault_quests": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [48], "excluded_lines": [], "start_line": 40}, "read_quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [58], "excluded_lines": [], "start_line": 52}, "update_quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [67], "excluded_lines": [], "start_line": 62}, "delete_quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [72], "excluded_lines": [], "start_line": 71}, "assign_quest_to_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [87], "excluded_lines": [], "start_line": 76}, "complete_quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [102], "excluded_lines": [], "start_line": 93}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 16, 19, 20, 30, 31, 39, 40, 51, 52, 61, 62, 70, 71, 75, 76, 92, 93], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 16, 19, 20, 30, 31, 39, 40, 51, 52, 61, 62, 70, 71, 75, 76, 92, 93], "summary": {"covered_lines": 25, "num_statements": 33, "percent_covered": 75.75757575757575, "percent_covered_display": "75.76", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 75.75757575757575, "percent_statements_covered_display": "75.76"}, "missing_lines": [27, 36, 48, 58, 67, 72, 87, 102], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\radio.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 28, 34, 35, 42, 78, 79, 86, 95, 96, 104], "summary": {"covered_lines": 25, "num_statements": 52, "percent_covered": 48.07692307692308, "percent_covered_display": "48.08", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 48.07692307692308, "percent_statements_covered_display": "48.08"}, "missing_lines": [30, 31, 44, 45, 47, 54, 55, 57, 60, 61, 69, 74, 75, 89, 90, 92, 107, 108, 111, 112, 114, 115, 118, 119, 121, 122, 124], "excluded_lines": [], "functions": {"get_radio_stats": {"executed_lines": [28], "summary": {"covered_lines": 1, "num_statements": 3, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [30, 31], "excluded_lines": [], "start_line": 22}, "manual_recruit_dweller": {"executed_lines": [42], "summary": {"covered_lines": 1, "num_statements": 12, "percent_covered": 8.333333333333334, "percent_covered_display": "8.33", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 8.333333333333334, "percent_statements_covered_display": "8.33"}, "missing_lines": [44, 45, 47, 54, 55, 57, 60, 61, 69, 74, 75], "excluded_lines": [], "start_line": 35}, "set_radio_mode": {"executed_lines": [86], "summary": {"covered_lines": 1, "num_statements": 4, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [89, 90, 92], "excluded_lines": [], "start_line": 79}, "set_radio_speedup": {"executed_lines": [104], "summary": {"covered_lines": 1, "num_statements": 12, "percent_covered": 8.333333333333334, "percent_covered_display": "8.33", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 8.333333333333334, "percent_statements_covered_display": "8.33"}, "missing_lines": [107, 108, 111, 112, 114, 115, 118, 119, 121, 122, 124], "excluded_lines": [], "start_line": 96}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 34, 35, 78, 79, 95, 96], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 28, 34, 35, 42, 78, 79, 86, 95, 96, 104], "summary": {"covered_lines": 25, "num_statements": 52, "percent_covered": 48.07692307692308, "percent_covered_display": "48.08", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 48.07692307692308, "percent_statements_covered_display": "48.08"}, "missing_lines": [30, 31, 44, 45, 47, 54, 55, 57, 60, 61, 69, 74, 75, 89, 90, 92, 107, 108, 111, 112, 114, 115, 118, 119, 121, 122, 124], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\relationship.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 16, 18, 21, 22, 28, 36, 37, 43, 44, 46, 47, 57, 58, 65, 74, 75, 81, 83, 86, 87, 107, 108, 114, 116, 119, 120, 140, 141, 147, 149, 152, 153, 171, 172, 198, 199, 207, 216, 217], "summary": {"covered_lines": 46, "num_statements": 91, "percent_covered": 50.54945054945055, "percent_covered_display": "50.55", "missing_lines": 45, "excluded_lines": 0, "percent_statements_covered": 50.54945054945055, "percent_statements_covered_display": "50.55"}, "missing_lines": [31, 33, 48, 49, 52, 54, 66, 69, 88, 90, 91, 94, 97, 98, 103, 104, 121, 123, 124, 127, 130, 131, 136, 137, 154, 156, 157, 160, 163, 164, 165, 166, 168, 187, 190, 191, 192, 193, 195, 208, 213, 230, 232, 235, 237], "excluded_lines": [], "functions": {"get_vault_relationships": {"executed_lines": [28], "summary": {"covered_lines": 1, "num_statements": 3, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [31, 33], "excluded_lines": [], "start_line": 22}, "get_relationship": {"executed_lines": [43, 44, 46, 47], "summary": {"covered_lines": 4, "num_statements": 8, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [48, 49, 52, 54], "excluded_lines": [], "start_line": 37}, "create_relationship": {"executed_lines": [65], "summary": {"covered_lines": 1, "num_statements": 3, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [66, 69], "excluded_lines": [], "start_line": 58}, "initiate_romance": {"executed_lines": [81, 83, 86, 87], "summary": {"covered_lines": 4, "num_statements": 12, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [88, 90, 91, 94, 97, 98, 103, 104], "excluded_lines": [], "start_line": 75}, "make_partners": {"executed_lines": [114, 116, 119, 120], "summary": {"covered_lines": 4, "num_statements": 12, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [121, 123, 124, 127, 130, 131, 136, 137], "excluded_lines": [], "start_line": 108}, "break_up_relationship": {"executed_lines": [147, 149, 152, 153], "summary": {"covered_lines": 4, "num_statements": 13, "percent_covered": 30.76923076923077, "percent_covered_display": "30.77", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 30.76923076923077, "percent_statements_covered_display": "30.77"}, "missing_lines": [154, 156, 157, 160, 163, 164, 165, 166, 168], "excluded_lines": [], "start_line": 141}, "quick_pair_dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [187, 190, 191, 192, 193, 195], "excluded_lines": [], "start_line": 172}, "calculate_compatibility": {"executed_lines": [207], "summary": {"covered_lines": 1, "num_statements": 3, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [208, 213], "excluded_lines": [], "start_line": 199}, "process_vault_breeding": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [230, 232, 235, 237], "excluded_lines": [], "start_line": 217}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 16, 18, 21, 22, 36, 37, 57, 58, 74, 75, 107, 108, 140, 141, 171, 172, 198, 199, 216, 217], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 16, 18, 21, 22, 28, 36, 37, 43, 44, 46, 47, 57, 58, 65, 74, 75, 81, 83, 86, 87, 107, 108, 114, 116, 119, 120, 140, 141, 147, 149, 152, 153, 171, 172, 198, 199, 207, 216, 217], "summary": {"covered_lines": 46, "num_statements": 91, "percent_covered": 50.54945054945055, "percent_covered_display": "50.55", "missing_lines": 45, "excluded_lines": 0, "percent_statements_covered": 50.54945054945055, "percent_statements_covered_display": "50.55"}, "missing_lines": [31, 33, 48, 49, 52, 54, 66, 69, 88, 90, 91, 94, 97, 98, 103, 104, 121, 123, 124, 127, 130, 131, 136, 137, 154, 156, 157, 160, 163, 164, 165, 166, 168, 187, 190, 191, 192, 193, 195, 208, 213, 230, 232, 235, 237], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\room.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 25, 28, 29, 40, 41, 44, 48, 49, 55, 59, 60, 63, 67, 68, 72, 73, 86, 92, 93, 100, 101, 108, 109, 112, 114, 116], "summary": {"covered_lines": 40, "num_statements": 59, "percent_covered": 67.79661016949153, "percent_covered_display": "67.80", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 67.79661016949153, "percent_statements_covered_display": "67.80"}, "missing_lines": [18, 36, 37, 45, 56, 64, 69, 88, 89, 96, 97, 104, 105, 117, 118, 119, 120, 121, 122], "excluded_lines": [], "functions": {"create_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [18], "excluded_lines": [], "start_line": 17}, "read_room_list": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "read_rooms_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36, 37], "excluded_lines": [], "start_line": 29}, "read_room": {"executed_lines": [44], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [45], "excluded_lines": [], "start_line": 41}, "update_room": {"executed_lines": [55], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [56], "excluded_lines": [], "start_line": 49}, "delete_room": {"executed_lines": [63], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [64], "excluded_lines": [], "start_line": 60}, "read_room_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [69], "excluded_lines": [], "start_line": 68}, "get_buildable_rooms": {"executed_lines": [86], "summary": {"covered_lines": 1, "num_statements": 3, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [88, 89], "excluded_lines": [], "start_line": 73}, "build_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [96, 97], "excluded_lines": [], "start_line": 93}, "destroy_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [104, 105], "excluded_lines": [], "start_line": 101}, "upgrade_room": {"executed_lines": [112, 114, 116], "summary": {"covered_lines": 3, "num_statements": 9, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [117, 118, 119, 120, 121, 122], "excluded_lines": [], "start_line": 109}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 28, 29, 40, 41, 48, 49, 59, 60, 67, 68, 72, 73, 92, 93, 100, 101, 108, 109], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 25, 28, 29, 40, 41, 44, 48, 49, 55, 59, 60, 63, 67, 68, 72, 73, 86, 92, 93, 100, 101, 108, 109, 112, 114, 116], "summary": {"covered_lines": 40, "num_statements": 59, "percent_covered": 67.79661016949153, "percent_covered_display": "67.80", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 67.79661016949153, "percent_statements_covered_display": "67.80"}, "missing_lines": [18, 36, 37, 45, 56, 64, 69, 88, 89, 96, 97, 104, 105, 117, 118, 119, 120, 121, 122], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\system.py": {"executed_lines": [8, 9, 11, 12, 14, 15, 17, 18, 21, 24, 25, 26, 27, 28, 31, 32, 42], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"get_info": {"executed_lines": [42], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "": {"executed_lines": [8, 9, 11, 12, 14, 15, 17, 18, 21, 24, 25, 26, 27, 28, 31, 32], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"InfoResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [8, 9, 11, 12, 14, 15, 17, 18, 21, 24, 25, 26, 27, 28, 31, 32, 42], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\training.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 70, 71, 97, 98, 114, 119, 120, 155, 156, 191, 192], "summary": {"covered_lines": 26, "num_statements": 70, "percent_covered": 37.142857142857146, "percent_covered_display": "37.14", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 37.142857142857146, "percent_statements_covered_display": "37.14"}, "missing_lines": [46, 47, 48, 50, 53, 54, 55, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67, 88, 89, 90, 92, 94, 116, 136, 137, 138, 141, 144, 147, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 209, 210, 211, 213, 215], "excluded_lines": [], "functions": {"start_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [46, 47, 48, 50, 53, 54, 55, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67], "excluded_lines": [], "start_line": 22}, "get_dweller_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [88, 89, 90, 92, 94], "excluded_lines": [], "start_line": 71}, "list_vault_training": {"executed_lines": [114], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [116], "excluded_lines": [], "start_line": 98}, "get_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [136, 137, 138, 141, 144, 147], "excluded_lines": [], "start_line": 120}, "cancel_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [176, 177, 178, 181, 183, 184, 185, 186, 187, 188], "excluded_lines": [], "start_line": 156}, "list_room_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [209, 210, 211, 213, 215], "excluded_lines": [], "start_line": 192}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 70, 71, 97, 98, 119, 120, 155, 156, 191, 192], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 70, 71, 97, 98, 114, 119, 120, 155, 156, 191, 192], "summary": {"covered_lines": 26, "num_statements": 70, "percent_covered": 37.142857142857146, "percent_covered_display": "37.14", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 37.142857142857146, "percent_statements_covered_display": "37.14"}, "missing_lines": [46, 47, 48, 50, 53, 54, 55, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67, 88, 89, 90, 92, 94, 116, 136, 137, 138, 141, 144, 147, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 209, 210, 211, 213, 215], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\user.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 25, 26, 35, 45, 46, 56, 59, 60, 82, 83, 87, 90, 91, 102, 107, 146, 147, 156, 167, 168, 192, 193, 213, 214, 226, 227, 251, 252, 267, 268], "summary": {"covered_lines": 48, "num_statements": 104, "percent_covered": 46.15384615384615, "percent_covered_display": "46.15", "missing_lines": 56, "excluded_lines": 0, "percent_statements_covered": 46.15384615384615, "percent_statements_covered_display": "46.15"}, "missing_lines": [36, 37, 42, 71, 72, 73, 74, 75, 76, 77, 78, 79, 103, 108, 109, 113, 114, 117, 118, 119, 120, 123, 124, 129, 131, 133, 135, 136, 138, 157, 158, 159, 160, 164, 178, 179, 180, 184, 215, 218, 219, 220, 221, 223, 253, 254, 255, 257, 258, 260, 261, 262, 263, 264, 286, 288], "excluded_lines": [], "functions": {"create_user": {"executed_lines": [35], "summary": {"covered_lines": 1, "num_statements": 4, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [36, 37, 42], "excluded_lines": [], "start_line": 26}, "read_users": {"executed_lines": [56], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "update_user_me": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [71, 72, 73, 74, 75, 76, 77, 78, 79], "excluded_lines": [], "start_line": 60}, "read_user_me": {"executed_lines": [87], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "create_user_open": {"executed_lines": [102, 107], "summary": {"covered_lines": 2, "num_statements": 19, "percent_covered": 10.526315789473685, "percent_covered_display": "10.53", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 10.526315789473685, "percent_statements_covered_display": "10.53"}, "missing_lines": [103, 108, 109, 113, 114, 117, 118, 119, 120, 123, 124, 129, 131, 133, 135, 136, 138], "excluded_lines": [], "start_line": 91}, "read_user_by_id": {"executed_lines": [156], "summary": {"covered_lines": 1, "num_statements": 6, "percent_covered": 16.666666666666668, "percent_covered_display": "16.67", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 16.666666666666668, "percent_statements_covered_display": "16.67"}, "missing_lines": [157, 158, 159, 160, 164], "excluded_lines": [], "start_line": 147}, "update_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [178, 179, 180, 184], "excluded_lines": [], "start_line": 168}, "get_my_profile": {"executed_lines": [213, 214], "summary": {"covered_lines": 2, "num_statements": 8, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [215, 218, 219, 220, 221, 223], "excluded_lines": [], "start_line": 193}, "update_my_profile": {"executed_lines": [251, 252], "summary": {"covered_lines": 2, "num_statements": 12, "percent_covered": 16.666666666666668, "percent_covered_display": "16.67", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 16.666666666666668, "percent_statements_covered_display": "16.67"}, "missing_lines": [253, 254, 255, 257, 258, 260, 261, 262, 263, 264], "excluded_lines": [], "start_line": 227}, "get_death_statistics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [286, 288], "excluded_lines": [], "start_line": 268}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 25, 26, 45, 46, 59, 60, 82, 83, 90, 91, 146, 147, 167, 168, 192, 193, 226, 227, 267, 268], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 25, 26, 35, 45, 46, 56, 59, 60, 82, 83, 87, 90, 91, 102, 107, 146, 147, 156, 167, 168, 192, 193, 213, 214, 226, 227, 251, 252, 267, 268], "summary": {"covered_lines": 48, "num_statements": 104, "percent_covered": 46.15384615384615, "percent_covered_display": "46.15", "missing_lines": 56, "excluded_lines": 0, "percent_statements_covered": 46.15384615384615, "percent_statements_covered_display": "46.15"}, "missing_lines": [36, 37, 42, 71, 72, 73, 74, 75, 76, 77, 78, 79, 103, 108, 109, 113, 114, 117, 118, 119, 120, 123, 124, 129, 131, 133, 135, 136, 138, 157, 158, 159, 160, 164, 178, 179, 180, 184, 215, 218, 219, 220, 221, 223, 253, 254, 255, 257, 258, 260, 261, 262, 263, 264, 286, 288], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\vault.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 17, 18, 24, 27, 28, 35, 38, 39, 47, 48, 54, 65, 66, 73, 79, 80, 86, 92, 93, 102, 103, 109, 114, 115], "summary": {"covered_lines": 35, "num_statements": 49, "percent_covered": 71.42857142857143, "percent_covered_display": "71.43", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71.43"}, "missing_lines": [44, 55, 56, 59, 60, 62, 74, 75, 76, 87, 88, 89, 99, 121], "excluded_lines": [], "functions": {"create_vault": {"executed_lines": [24], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "read_vault_list": {"executed_lines": [35], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "read_my_vaults": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [44], "excluded_lines": [], "start_line": 39}, "read_vault": {"executed_lines": [54], "summary": {"covered_lines": 1, "num_statements": 6, "percent_covered": 16.666666666666668, "percent_covered_display": "16.67", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 16.666666666666668, "percent_statements_covered_display": "16.67"}, "missing_lines": [55, 56, 59, 60, 62], "excluded_lines": [], "start_line": 48}, "update_vault": {"executed_lines": [73], "summary": {"covered_lines": 1, "num_statements": 4, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [74, 75, 76], "excluded_lines": [], "start_line": 66}, "delete_vault": {"executed_lines": [86], "summary": {"covered_lines": 1, "num_statements": 4, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [87, 88, 89], "excluded_lines": [], "start_line": 80}, "toggle_game_state": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [99], "excluded_lines": [], "start_line": 93}, "start_vault": {"executed_lines": [109], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 103}, "update_vault_resources": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [121], "excluded_lines": [], "start_line": 115}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 17, 18, 27, 28, 38, 39, 47, 48, 65, 66, 79, 80, 92, 93, 102, 103, 114, 115], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 17, 18, 24, 27, 28, 35, 38, 39, 47, 48, 54, 65, 66, 73, 79, 80, 86, 92, 93, 102, 103, 109, 114, 115], "summary": {"covered_lines": 35, "num_statements": 49, "percent_covered": 71.42857142857143, "percent_covered_display": "71.43", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71.43"}, "missing_lines": [44, 55, 56, 59, 60, 62, 74, 75, 76, 87, 88, 89, 99, 121], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\weapon.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 18, 21, 22, 25, 28, 29, 30, 33, 34, 39, 42, 43, 44, 47, 48, 54, 55, 59, 60, 64, 65, 69, 70], "summary": {"covered_lines": 35, "num_statements": 40, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50"}, "missing_lines": [51, 56, 61, 66, 71], "excluded_lines": [], "functions": {"create_weapon": {"executed_lines": [18], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "read_weapon_list": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "read_weapon": {"executed_lines": [30], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "update_weapon": {"executed_lines": [39], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "delete_weapon": {"executed_lines": [44], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "equip_weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [51], "excluded_lines": [], "start_line": 48}, "unequip_weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [56], "excluded_lines": [], "start_line": 55}, "scrap_weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [61], "excluded_lines": [], "start_line": 60}, "sell_weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [66], "excluded_lines": [], "start_line": 65}, "read_weapons_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [71], "excluded_lines": [], "start_line": 70}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 28, 29, 33, 34, 42, 43, 47, 48, 54, 55, 59, 60, 64, 65, 69, 70], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 18, 21, 22, 25, 28, 29, 30, 33, 34, 39, 42, 43, 44, 47, 48, 54, 55, 59, 60, 64, 65, 69, 70], "summary": {"covered_lines": 35, "num_statements": 40, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50"}, "missing_lines": [51, 56, 61, 66, 71], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\websocket.py": {"executed_lines": [1, 2, 4, 5, 7, 9, 10, 13, 14, 45, 46], "summary": {"covered_lines": 11, "num_statements": 34, "percent_covered": 32.35294117647059, "percent_covered_display": "32.35", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 32.35294117647059, "percent_statements_covered_display": "32.35"}, "missing_lines": [35, 37, 39, 40, 42, 79, 80, 83, 84, 85, 86, 88, 89, 91, 93, 94, 98, 102, 107, 109, 110, 112, 113], "excluded_lines": [], "functions": {"websocket_endpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [35, 37, 39, 40, 42], "excluded_lines": [], "start_line": 14}, "chat_websocket_endpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [79, 80, 83, 84, 85, 86, 88, 89, 91, 93, 94, 98, 102, 107, 109, 110, 112, 113], "excluded_lines": [], "start_line": 46}, "": {"executed_lines": [1, 2, 4, 5, 7, 9, 10, 13, 14, 45, 46], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 7, 9, 10, 13, 14, 45, 46], "summary": {"covered_lines": 11, "num_statements": 34, "percent_covered": 32.35294117647059, "percent_covered_display": "32.35", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 32.35294117647059, "percent_statements_covered_display": "32.35"}, "missing_lines": [35, 37, 39, 40, 42, 79, 80, 83, 84, 85, 86, 88, 89, 91, 93, 94, 98, 102, 107, 109, 110, 112, 113], "excluded_lines": [], "start_line": 1}}}, "app\\cli\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\cli\\app\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\cli\\app\\manage.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 2, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 5, 8, 10, 11, 12, 13, 15, 18, 20, 21, 22, 25, 26, 30, 44, 47, 65, 68, 78, 81, 82, 84, 106, 109, 114, 116], "excluded_lines": [119, 120], "functions": {"create_file_with_boilerplate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [10, 11, 12, 13, 15], "excluded_lines": [], "start_line": 8}, "append_to_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20, 21, 22], "excluded_lines": [], "start_line": 18}, "startapp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [30, 44, 47, 65, 68, 78, 81, 82, 84, 106, 109, 114, 116], "excluded_lines": [], "start_line": 26}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 2, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 5, 8, 18, 25, 26], "excluded_lines": [119, 120], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 2, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 5, 8, 10, 11, 12, 13, 15, 18, 20, 21, 22, 25, 26, 30, 44, 47, 65, 68, 78, 81, 82, 84, 106, 109, 114, 116], "excluded_lines": [119, 120], "start_line": 1}}}, "app\\cli\\migrations\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\cli\\migrations\\cli.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 44, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 15, 16, 24, 25, 27, 29, 31, 37, 38, 41, 42, 43, 44, 45, 46, 49, 50, 63, 64, 78, 79, 81, 83, 86, 95, 96, 105, 106, 114, 115, 118, 119, 127, 128], "excluded_lines": [], "functions": {"init": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24, 25, 27, 29, 31, 37, 38, 41, 42, 43, 44, 45, 46], "excluded_lines": [], "start_line": 16}, "revision": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [63, 64], "excluded_lines": [], "start_line": 50}, "show": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [81, 83], "excluded_lines": [], "start_line": 79}, "merge": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [95, 96], "excluded_lines": [], "start_line": 86}, "upgrade": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [114, 115], "excluded_lines": [], "start_line": 106}, "downgrade": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [127, 128], "excluded_lines": [], "start_line": 119}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 15, 16, 49, 50, 78, 79, 86, 105, 106, 118, 119], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 44, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 15, 16, 24, 25, 27, 29, 31, 37, 38, 41, 42, 43, 44, 45, 46, 49, 50, 63, 64, 78, 79, 81, 83, 86, 95, 96, 105, 106, 114, 115, 118, 119, 127, 128], "excluded_lines": [], "start_line": 1}}}, "app\\core\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\core\\celery.py": {"executed_lines": [1, 3, 4, 7, 8, 10, 12, 19, 22, 30, 32], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 7, 8, 10, 12, 19, 22, 30, 32], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 7, 8, 10, 12, 19, 22, 30, 32], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\core\\config.py": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 53, 54, 65, 66, 73, 74, 75, 76, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 107, 109, 110, 111, 112, 121, 123, 124, 125, 127, 130, 132, 133, 134, 135, 144, 146, 147, 148, 149, 158, 161], "summary": {"covered_lines": 90, "num_statements": 98, "percent_covered": 91.83673469387755, "percent_covered_display": "91.84", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 91.83673469387755, "percent_statements_covered_display": "91.84"}, "missing_lines": [56, 68, 69, 71, 119, 128, 142, 156], "excluded_lines": [], "functions": {"Settings.minio_enabled": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [56], "excluded_lines": [], "start_line": 54}, "Settings.minio_public_base_url": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [68, 69, 71], "excluded_lines": [], "start_line": 66}, "Settings.redis_url": {"executed_lines": [107], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 106}, "Settings.assemble_db_connection": {"executed_lines": [111, 112], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [119], "excluded_lines": [], "start_line": 110}, "Settings.assemble_celery_db_connection": {"executed_lines": [125, 127], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [128], "excluded_lines": [], "start_line": 124}, "Settings.assemble_celery_beat_db_connection": {"executed_lines": [134, 135], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [142], "excluded_lines": [], "start_line": 133}, "Settings.assemble_async_celery_beat_db_connection": {"executed_lines": [148, 149], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [156], "excluded_lines": [], "start_line": 147}, "": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 53, 54, 65, 66, 73, 74, 75, 76, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 109, 110, 121, 123, 124, 130, 132, 133, 144, 146, 147, 158, 161], "summary": {"covered_lines": 81, "num_statements": 81, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"Settings": {"executed_lines": [107, 111, 112, 125, 127, 134, 135, 148, 149], "summary": {"covered_lines": 9, "num_statements": 17, "percent_covered": 52.94117647058823, "percent_covered_display": "52.94", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 52.94117647058823, "percent_statements_covered_display": "52.94"}, "missing_lines": [56, 68, 69, 71, 119, 128, 142, 156], "excluded_lines": [], "start_line": 8}, "": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 53, 54, 65, 66, 73, 74, 75, 76, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 109, 110, 121, 123, 124, 130, 132, 133, 144, 146, 147, 158, 161], "summary": {"covered_lines": 81, "num_statements": 81, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\core\\email.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 11, 14, 15, 21, 62, 70, 92, 115], "summary": {"covered_lines": 15, "num_statements": 45, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [30, 31, 32, 33, 36, 37, 39, 41, 46, 47, 48, 50, 51, 52, 53, 55, 56, 57, 58, 59, 66, 67, 74, 76, 85, 96, 98, 108, 119, 128], "excluded_lines": [], "functions": {"send_email": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 20, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [30, 31, 32, 33, 36, 37, 39, 41, 46, 47, 48, 50, 51, 52, 53, 55, 56, 57, 58, 59], "excluded_lines": [], "start_line": 21}, "render_email_template": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [66, 67], "excluded_lines": [], "start_line": 62}, "send_verification_email": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [74, 76, 85], "excluded_lines": [], "start_line": 70}, "send_password_reset_email": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [96, 98, 108], "excluded_lines": [], "start_line": 92}, "send_password_changed_email": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [119, 128], "excluded_lines": [], "start_line": 115}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 11, 14, 15, 21, 62, 70, 92, 115], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 11, 14, 15, 21, 62, 70, 92, 115], "summary": {"covered_lines": 15, "num_statements": 45, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [30, 31, 32, 33, 36, 37, 39, 41, 46, 47, 48, 50, 51, 52, 53, 55, 56, 57, 58, 59, 66, 67, 74, 76, 85, 96, 98, 108, 119, 128], "excluded_lines": [], "start_line": 1}}}, "app\\core\\game_config.py": {"executed_lines": [14, 16, 17, 19, 21, 24, 27, 29, 35, 43, 46, 48, 54, 59, 64, 70, 76, 84, 85, 86, 87, 88, 89, 92, 93, 94, 95, 96, 97, 99, 111, 122, 123, 125, 132, 135, 137, 138, 139, 140, 141, 144, 145, 146, 147, 150, 151, 152, 155, 156, 159, 162, 164, 165, 166, 167, 170, 173, 176, 177, 178, 179, 180, 183, 184, 185, 188, 189, 190, 193, 194, 197, 198, 201, 202, 205, 208, 210, 211, 214, 215, 216, 219, 220, 222, 224, 229, 232, 235, 238, 239, 240, 241, 244, 245, 246, 249, 250, 252, 262, 265, 267, 268, 269, 272, 273, 274, 275, 277, 278, 279, 281, 287, 288, 290, 293, 296, 298, 304, 305, 306, 314, 315, 316, 324, 327, 330, 331, 333, 334, 337, 338, 339, 340, 341, 343, 344, 347, 350, 352, 357, 358, 359, 362, 363, 364, 366, 368, 370, 375, 378, 381, 384, 395, 396, 397, 398, 401, 409, 416, 434, 437, 440, 441, 444, 445, 446, 447, 450, 451, 453, 454, 456, 459, 460, 461, 464, 465, 466, 469, 470, 471, 474, 475, 476, 477, 480, 481, 484, 487, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 506, 509, 510, 511, 512, 513, 514], "summary": {"covered_lines": 210, "num_statements": 222, "percent_covered": 94.5945945945946, "percent_covered_display": "94.59", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 94.5945945945946, "percent_statements_covered_display": "94.59"}, "missing_lines": [101, 109, 113, 254, 259, 289, 424, 425, 426, 427, 429, 431], "excluded_lines": [], "functions": {"IncidentConfig.get_difficulty_range": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [101, 109], "excluded_lines": [], "start_line": 99}, "IncidentConfig.get_spawn_weights": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [113], "excluded_lines": [], "start_line": 111}, "IncidentConfig.vault_door_incidents": {"executed_lines": [125], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 123}, "TrainingConfig.get_tier_multiplier": {"executed_lines": [224, 229], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 222}, "ResourceConfig.get_tier_multiplier": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [254, 259], "excluded_lines": [], "start_line": 252}, "RelationshipConfig.validate_weights_sum": {"executed_lines": [281, 287, 288, 290], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [289], "excluded_lines": [], "start_line": 279}, "RadioConfig.get_tier_multiplier": {"executed_lines": [370, 375], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 368}, "DeathConfig.calculate_revival_cost": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [424, 425, 426, 427, 429, 431], "excluded_lines": [], "start_line": 416}, "": {"executed_lines": [14, 16, 17, 19, 21, 24, 27, 29, 35, 43, 46, 48, 54, 59, 64, 70, 76, 84, 85, 86, 87, 88, 89, 92, 93, 94, 95, 96, 97, 99, 111, 122, 123, 132, 135, 137, 138, 139, 140, 141, 144, 145, 146, 147, 150, 151, 152, 155, 156, 159, 162, 164, 165, 166, 167, 170, 173, 176, 177, 178, 179, 180, 183, 184, 185, 188, 189, 190, 193, 194, 197, 198, 201, 202, 205, 208, 210, 211, 214, 215, 216, 219, 220, 222, 232, 235, 238, 239, 240, 241, 244, 245, 246, 249, 250, 252, 262, 265, 267, 268, 269, 272, 273, 274, 275, 277, 278, 279, 293, 296, 298, 304, 305, 306, 314, 315, 316, 324, 327, 330, 331, 333, 334, 337, 338, 339, 340, 341, 343, 344, 347, 350, 352, 357, 358, 359, 362, 363, 364, 366, 368, 378, 381, 384, 395, 396, 397, 398, 401, 409, 416, 434, 437, 440, 441, 444, 445, 446, 447, 450, 451, 453, 454, 456, 459, 460, 461, 464, 465, 466, 469, 470, 471, 474, 475, 476, 477, 480, 481, 484, 487, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 506, 509, 510, 511, 512, 513, 514], "summary": {"covered_lines": 201, "num_statements": 201, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"GameLoopConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "IncidentConfig": {"executed_lines": [125], "summary": {"covered_lines": 1, "num_statements": 4, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [101, 109, 113], "excluded_lines": [], "start_line": 43}, "CombatConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 132}, "HealthConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 159}, "HappinessConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 170}, "TrainingConfig": {"executed_lines": [224, 229], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 205}, "ResourceConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [254, 259], "excluded_lines": [], "start_line": 232}, "RelationshipConfig": {"executed_lines": [281, 287, 288, 290], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [289], "excluded_lines": [], "start_line": 262}, "BreedingConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 293}, "LevelingConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 324}, "RadioConfig": {"executed_lines": [370, 375], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 347}, "DeathConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [424, 425, 426, 427, 429, 431], "excluded_lines": [], "start_line": 378}, "ExplorationConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 434}, "GameConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 484}, "": {"executed_lines": [14, 16, 17, 19, 21, 24, 27, 29, 35, 43, 46, 48, 54, 59, 64, 70, 76, 84, 85, 86, 87, 88, 89, 92, 93, 94, 95, 96, 97, 99, 111, 122, 123, 132, 135, 137, 138, 139, 140, 141, 144, 145, 146, 147, 150, 151, 152, 155, 156, 159, 162, 164, 165, 166, 167, 170, 173, 176, 177, 178, 179, 180, 183, 184, 185, 188, 189, 190, 193, 194, 197, 198, 201, 202, 205, 208, 210, 211, 214, 215, 216, 219, 220, 222, 232, 235, 238, 239, 240, 241, 244, 245, 246, 249, 250, 252, 262, 265, 267, 268, 269, 272, 273, 274, 275, 277, 278, 279, 293, 296, 298, 304, 305, 306, 314, 315, 316, 324, 327, 330, 331, 333, 334, 337, 338, 339, 340, 341, 343, 344, 347, 350, 352, 357, 358, 359, 362, 363, 364, 366, 368, 378, 381, 384, 395, 396, 397, 398, 401, 409, 416, 434, 437, 440, 441, 444, 445, 446, 447, 450, 451, 453, 454, 456, 459, 460, 461, 464, 465, 466, 469, 470, 471, 474, 475, 476, 477, 480, 481, 484, 487, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 506, 509, 510, 511, 512, 513, 514], "summary": {"covered_lines": 201, "num_statements": 201, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\core\\logging.py": {"executed_lines": [3, 4, 5, 6, 8, 11, 14, 17, 18, 19, 22, 25, 50, 64, 65, 68, 71, 72, 75, 76, 79, 84, 88, 89, 92, 100, 101, 102, 103, 106, 119, 121, 124], "summary": {"covered_lines": 33, "num_statements": 52, "percent_covered": 63.46153846153846, "percent_covered_display": "63.46", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 63.46153846153846, "percent_statements_covered_display": "63.46"}, "missing_lines": [31, 34, 35, 36, 37, 38, 41, 42, 43, 46, 47, 81, 93, 94, 95, 96, 97, 116, 126], "excluded_lines": [], "functions": {"RequestIdFilter.filter": {"executed_lines": [18, 19], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "CustomJsonFormatter.add_fields": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 34, 35, 36, 37, 38, 41, 42, 43, 46, 47], "excluded_lines": [], "start_line": 25}, "setup_logging": {"executed_lines": [64, 65, 68, 71, 72, 75, 76, 79, 84, 88, 89, 92, 100, 101, 102, 103], "summary": {"covered_lines": 16, "num_statements": 22, "percent_covered": 72.72727272727273, "percent_covered_display": "72.73", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 72.72727272727273, "percent_statements_covered_display": "72.73"}, "missing_lines": [81, 93, 94, 95, 96, 97], "excluded_lines": [], "start_line": 50}, "get_logger": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [116], "excluded_lines": [], "start_line": 106}, "set_request_id": {"executed_lines": [121], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 119}, "get_request_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [126], "excluded_lines": [], "start_line": 124}, "": {"executed_lines": [3, 4, 5, 6, 8, 11, 14, 17, 22, 25, 50, 106, 119, 124], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RequestIdFilter": {"executed_lines": [18, 19], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "CustomJsonFormatter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 34, 35, 36, 37, 38, 41, 42, 43, 46, 47], "excluded_lines": [], "start_line": 22}, "": {"executed_lines": [3, 4, 5, 6, 8, 11, 14, 17, 22, 25, 50, 64, 65, 68, 71, 72, 75, 76, 79, 84, 88, 89, 92, 100, 101, 102, 103, 106, 119, 121, 124], "summary": {"covered_lines": 31, "num_statements": 39, "percent_covered": 79.48717948717949, "percent_covered_display": "79.49", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 79.48717948717949, "percent_statements_covered_display": "79.49"}, "missing_lines": [81, 93, 94, 95, 96, 97, 116, 126], "excluded_lines": [], "start_line": 1}}}, "app\\core\\security.py": {"executed_lines": [1, 2, 3, 5, 6, 7, 9, 11, 13, 16, 20, 21, 23, 26, 27, 30, 31, 34, 35, 38, 43, 44, 46, 48, 49, 51, 55, 57, 60, 61, 62, 63, 65, 66, 71, 74, 75, 76, 79, 83, 84, 85, 88, 92, 93, 94, 96, 97, 98, 101, 105, 106, 107, 110, 114, 115, 116, 118, 119, 120], "summary": {"covered_lines": 60, "num_statements": 65, "percent_covered": 92.3076923076923, "percent_covered_display": "92.31", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92.31"}, "missing_lines": [67, 68, 69, 95, 117], "excluded_lines": [], "functions": {"create_access_token": {"executed_lines": [20, 21, 23, 26, 27], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "verify_password": {"executed_lines": [31], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "get_password_hash": {"executed_lines": [35], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "create_refresh_token": {"executed_lines": [43, 44, 46, 48, 49, 51, 55, 57], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "verify_refresh_token": {"executed_lines": [61, 62, 63, 65, 66, 71], "summary": {"covered_lines": 6, "num_statements": 9, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [67, 68, 69], "excluded_lines": [], "start_line": 60}, "invalidate_refresh_token": {"executed_lines": [75, 76], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 74}, "create_email_verification_token": {"executed_lines": [83, 84, 85], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 79}, "verify_email_token": {"executed_lines": [92, 93, 94, 96, 97, 98], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "85.71", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "85.71"}, "missing_lines": [95], "excluded_lines": [], "start_line": 88}, "create_password_reset_token": {"executed_lines": [105, 106, 107], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 101}, "verify_password_reset_token": {"executed_lines": [114, 115, 116, 118, 119, 120], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "85.71", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "85.71"}, "missing_lines": [117], "excluded_lines": [], "start_line": 110}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 9, 11, 13, 16, 30, 34, 38, 60, 74, 79, 88, 101, 110], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 5, 6, 7, 9, 11, 13, 16, 20, 21, 23, 26, 27, 30, 31, 34, 35, 38, 43, 44, 46, 48, 49, 51, 55, 57, 60, 61, 62, 63, 65, 66, 71, 74, 75, 76, 79, 83, 84, 85, 88, 92, 93, 94, 96, 97, 98, 101, 105, 106, 107, 110, 114, 115, 116, 118, 119, 120], "summary": {"covered_lines": 60, "num_statements": 65, "percent_covered": 92.3076923076923, "percent_covered_display": "92.31", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92.31"}, "missing_lines": [67, 68, 69, 95, 117], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\__init__.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\base.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 12, 13, 14, 17, 24, 25, 27, 36, 37, 38, 39, 40, 41, 43, 56, 66, 78, 79, 80, 82, 91, 92, 93, 94, 98, 99, 101, 119, 133, 134, 136, 137, 139, 140, 141, 142, 144, 173, 185, 197, 198, 199, 201, 202, 203], "summary": {"covered_lines": 53, "num_statements": 87, "percent_covered": 60.91954022988506, "percent_covered_display": "60.92", "missing_lines": 34, "excluded_lines": 0, "percent_statements_covered": 60.91954022988506, "percent_statements_covered_display": "60.92"}, "missing_lines": [53, 54, 63, 64, 95, 96, 97, 110, 111, 112, 113, 114, 115, 116, 117, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 166, 167, 169, 170, 171, 181, 182, 183, 200], "excluded_lines": [], "functions": {"CRUDBase.__init__": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "CRUDBase.get": {"executed_lines": [36, 37, 38, 39, 40, 41], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "CRUDBase.get_by_ids": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [53, 54], "excluded_lines": [], "start_line": 43}, "CRUDBase.get_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [63, 64], "excluded_lines": [], "start_line": 56}, "CRUDBase.get_multi": {"executed_lines": [78, 79, 80], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 66}, "CRUDBase.create": {"executed_lines": [91, 92, 93, 94, 98, 99], "summary": {"covered_lines": 6, "num_statements": 9, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [95, 96, 97], "excluded_lines": [], "start_line": 82}, "CRUDBase.create_all": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [110, 111, 112, 113, 114, 115, 116, 117], "excluded_lines": [], "start_line": 101}, "CRUDBase.update": {"executed_lines": [133, 134, 136, 137, 139, 140, 141, 142], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 119}, "CRUDBase.upsert": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 166, 167, 169, 170, 171], "excluded_lines": [], "start_line": 144}, "CRUDBase.exists": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [181, 182, 183], "excluded_lines": [], "start_line": 173}, "CRUDBase.delete": {"executed_lines": [197, 198, 199, 201, 202, 203], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "85.71", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "85.71"}, "missing_lines": [200], "excluded_lines": [], "start_line": 185}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 12, 13, 14, 17, 24, 27, 43, 56, 66, 82, 101, 119, 144, 173, 185], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDBase": {"executed_lines": [25, 36, 37, 38, 39, 40, 41, 78, 79, 80, 91, 92, 93, 94, 98, 99, 133, 134, 136, 137, 139, 140, 141, 142, 197, 198, 199, 201, 202, 203], "summary": {"covered_lines": 30, "num_statements": 64, "percent_covered": 46.875, "percent_covered_display": "46.88", "missing_lines": 34, "excluded_lines": 0, "percent_statements_covered": 46.875, "percent_statements_covered_display": "46.88"}, "missing_lines": [53, 54, 63, 64, 95, 96, 97, 110, 111, 112, 113, 114, 115, 116, 117, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 166, 167, 169, 170, 171, 181, 182, 183, 200], "excluded_lines": [], "start_line": 17}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 12, 13, 14, 17, 24, 27, 43, 56, 66, 82, 101, 119, 144, 173, 185], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\chat_message.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 63, 74, 81, 84], "summary": {"covered_lines": 11, "num_statements": 22, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [26, 27, 28, 42, 43, 58, 60, 61, 65, 71, 72], "excluded_lines": [], "functions": {"CRUDChatMessage.get_conversation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [26, 27, 28, 42, 43, 58, 60, 61], "excluded_lines": [], "start_line": 11}, "CRUDChatMessage.get_recent_conversations": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [65, 71, 72], "excluded_lines": [], "start_line": 63}, "CRUDChatMessage.create_message": {"executed_lines": [81], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 74}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 63, 74, 84], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDChatMessage": {"executed_lines": [81], "summary": {"covered_lines": 1, "num_statements": 12, "percent_covered": 8.333333333333334, "percent_covered_display": "8.33", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 8.333333333333334, "percent_statements_covered_display": "8.33"}, "missing_lines": [26, 27, 28, 42, 43, 58, 60, 61, 65, 71, 72], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 63, 74, 84], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\dweller.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 22, 23, 25, 28, 29, 31, 33, 43, 44, 45, 47, 49, 61, 64, 65, 68, 69, 70, 75, 81, 82, 83, 84, 86, 88, 89, 90, 92, 101, 108, 109, 111, 112, 116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 127, 128, 130, 131, 133, 135, 136, 139, 141, 143, 144, 145, 146, 148, 149, 150, 151, 153, 158, 160, 161, 162, 172, 174, 180, 184, 187, 188, 190, 193, 194, 196, 202, 204, 205, 206, 207, 210, 215, 217, 219, 228, 232, 234, 244, 249, 267, 285, 312, 340, 367, 433], "summary": {"covered_lines": 108, "num_statements": 179, "percent_covered": 60.33519553072626, "percent_covered_display": "60.34", "missing_lines": 71, "excluded_lines": 0, "percent_statements_covered": 60.33519553072626, "percent_statements_covered_display": "60.34"}, "missing_lines": [46, 77, 78, 80, 137, 176, 177, 178, 199, 213, 221, 222, 223, 226, 230, 245, 247, 251, 253, 254, 256, 257, 260, 261, 263, 269, 271, 272, 274, 275, 278, 279, 281, 303, 305, 306, 308, 309, 310, 328, 337, 338, 356, 364, 365, 371, 372, 374, 377, 387, 390, 396, 397, 399, 400, 405, 406, 407, 408, 413, 414, 416, 417, 418, 421, 422, 423, 424, 426, 427, 430], "excluded_lines": [], "functions": {"CRUDDweller.get": {"executed_lines": [31, 33, 43, 44, 45, 47], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "85.71", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "85.71"}, "missing_lines": [46], "excluded_lines": [], "start_line": 29}, "CRUDDweller.get_multi_by_vault": {"executed_lines": [61, 64, 65, 68, 69, 70, 75, 81, 82, 83, 84, 86, 88, 89, 90], "summary": {"covered_lines": 15, "num_statements": 18, "percent_covered": 83.33333333333333, "percent_covered_display": "83.33", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83.33"}, "missing_lines": [77, 78, 80], "excluded_lines": [], "start_line": 49}, "CRUDDweller.get_by_status": {"executed_lines": [101, 108, 109], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 92}, "CRUDDweller.create_random": {"executed_lines": [116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 127, 128], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 112}, "CRUDDweller.calculate_experience_required": {"executed_lines": [133], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 131}, "CRUDDweller.is_alive": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [137], "excluded_lines": [], "start_line": 136}, "CRUDDweller.add_experience": {"executed_lines": [141, 143, 144, 145, 146, 148, 149, 150, 151, 153, 158, 160, 161, 162, 172], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 139}, "CRUDDweller.get_dweller_by_name": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [176, 177, 178], "excluded_lines": [], "start_line": 174}, "CRUDDweller.move_to_room": {"executed_lines": [184, 187, 188, 190, 193, 194, 196, 202, 204, 205, 206, 207, 210, 215, 217], "summary": {"covered_lines": 15, "num_statements": 17, "percent_covered": 88.23529411764706, "percent_covered_display": "88.24", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 88.23529411764706, "percent_statements_covered_display": "88.24"}, "missing_lines": [199, 213], "excluded_lines": [], "start_line": 180}, "CRUDDweller.reanimate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [221, 222, 223, 226], "excluded_lines": [], "start_line": 219}, "CRUDDweller.mark_as_dead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [230], "excluded_lines": [], "start_line": 228}, "CRUDDweller.get_full_info": {"executed_lines": [234, 244], "summary": {"covered_lines": 2, "num_statements": 4, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [245, 247], "excluded_lines": [], "start_line": 232}, "CRUDDweller.use_stimpack": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [251, 253, 254, 256, 257, 260, 261, 263], "excluded_lines": [], "start_line": 249}, "CRUDDweller.use_radaway": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [269, 271, 272, 274, 275, 278, 279, 281], "excluded_lines": [], "start_line": 267}, "CRUDDweller.get_dead_dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [303, 305, 306, 308, 309, 310], "excluded_lines": [], "start_line": 285}, "CRUDDweller.get_revivable_dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [328, 337, 338], "excluded_lines": [], "start_line": 312}, "CRUDDweller.get_graveyard": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [356, 364, 365], "excluded_lines": [], "start_line": 340}, "CRUDDweller.auto_assign_to_best_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 26, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [371, 372, 374, 377, 387, 390, 396, 397, 399, 400, 405, 406, 407, 408, 413, 414, 416, 417, 418, 421, 422, 423, 424, 426, 427, 430], "excluded_lines": [], "start_line": 367}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 22, 23, 25, 28, 29, 49, 92, 111, 112, 130, 131, 135, 136, 139, 174, 180, 219, 228, 232, 249, 267, 285, 312, 340, 367, 433], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDDweller": {"executed_lines": [31, 33, 43, 44, 45, 47, 61, 64, 65, 68, 69, 70, 75, 81, 82, 83, 84, 86, 88, 89, 90, 101, 108, 109, 116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 127, 128, 133, 141, 143, 144, 145, 146, 148, 149, 150, 151, 153, 158, 160, 161, 162, 172, 184, 187, 188, 190, 193, 194, 196, 202, 204, 205, 206, 207, 210, 215, 217, 234, 244], "summary": {"covered_lines": 69, "num_statements": 140, "percent_covered": 49.285714285714285, "percent_covered_display": "49.29", "missing_lines": 71, "excluded_lines": 0, "percent_statements_covered": 49.285714285714285, "percent_statements_covered_display": "49.29"}, "missing_lines": [46, 77, 78, 80, 137, 176, 177, 178, 199, 213, 221, 222, 223, 226, 230, 245, 247, 251, 253, 254, 256, 257, 260, 261, 263, 269, 271, 272, 274, 275, 278, 279, 281, 303, 305, 306, 308, 309, 310, 328, 337, 338, 356, 364, 365, 371, 372, 374, 377, 387, 390, 396, 397, 399, 400, 405, 406, 407, 408, 413, 414, 416, 417, 418, 421, 422, 423, 424, 426, 427, 430], "excluded_lines": [], "start_line": 28}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 22, 23, 25, 28, 29, 49, 92, 111, 112, 130, 131, 135, 136, 139, 174, 180, 219, 228, 232, 249, 267, 285, 312, 340, 367, 433], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\exploration.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 15, 18, 31, 32, 34, 41, 53, 56, 57, 58, 60, 62, 63, 64, 66, 73, 78, 80, 87, 94, 102, 109, 110, 111, 112, 113, 114, 116, 123, 124, 125, 126, 127, 128, 130, 140, 141, 142, 143, 144, 145, 147, 164, 174, 175, 176, 177, 178, 179, 180, 182, 183, 184, 185, 188], "summary": {"covered_lines": 63, "num_statements": 72, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50"}, "missing_lines": [92, 99, 100, 157, 158, 159, 160, 161, 162], "excluded_lines": [], "functions": {"CRUDExploration.create_with_dweller_stats": {"executed_lines": [31, 32, 34, 41, 53, 56, 57, 58, 60, 62, 63, 64], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "CRUDExploration.get_active_by_vault": {"executed_lines": [73, 78], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 66}, "CRUDExploration.get_by_dweller": {"executed_lines": [87], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [92], "excluded_lines": [], "start_line": 80}, "CRUDExploration.get_all_active": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [99, 100], "excluded_lines": [], "start_line": 94}, "CRUDExploration.complete_exploration": {"executed_lines": [109, 110, 111, 112, 113, 114], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 102}, "CRUDExploration.recall_exploration": {"executed_lines": [123, 124, 125, 126, 127, 128], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 116}, "CRUDExploration.add_event": {"executed_lines": [140, 141, 142, 143, 144, 145], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 130}, "CRUDExploration.add_loot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [157, 158, 159, 160, 161, 162], "excluded_lines": [], "start_line": 147}, "CRUDExploration.update_stats": {"executed_lines": [174, 175, 176, 177, 178, 179, 180, 182, 183, 184, 185], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 164}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 15, 18, 66, 80, 94, 102, 116, 130, 147, 164, 188], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDExploration": {"executed_lines": [31, 32, 34, 41, 53, 56, 57, 58, 60, 62, 63, 64, 73, 78, 87, 109, 110, 111, 112, 113, 114, 123, 124, 125, 126, 127, 128, 140, 141, 142, 143, 144, 145, 174, 175, 176, 177, 178, 179, 180, 182, 183, 184, 185], "summary": {"covered_lines": 44, "num_statements": 53, "percent_covered": 83.01886792452831, "percent_covered_display": "83.02", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 83.01886792452831, "percent_statements_covered_display": "83.02"}, "missing_lines": [92, 99, 100, 157, 158, 159, 160, 161, 162], "excluded_lines": [], "start_line": 15}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 15, 18, 66, 80, 94, 102, 116, 130, 147, 164, 188], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\game_state.py": {"executed_lines": [3, 4, 5, 7, 10, 13, 14, 20, 21, 33, 34, 43, 44, 53, 54, 63, 64, 72], "summary": {"covered_lines": 18, "num_statements": 49, "percent_covered": 36.734693877551024, "percent_covered_display": "36.73", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 36.734693877551024, "percent_statements_covered_display": "36.73"}, "missing_lines": [16, 17, 18, 23, 25, 26, 27, 28, 29, 31, 36, 37, 38, 39, 40, 41, 46, 47, 48, 49, 50, 51, 56, 57, 58, 59, 60, 61, 66, 67, 68], "excluded_lines": [], "functions": {"CRUDGameState.get_by_vault_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [16, 17, 18], "excluded_lines": [], "start_line": 14}, "CRUDGameState.get_or_create": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [23, 25, 26, 27, 28, 29, 31], "excluded_lines": [], "start_line": 21}, "CRUDGameState.pause": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36, 37, 38, 39, 40, 41], "excluded_lines": [], "start_line": 34}, "CRUDGameState.resume": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [46, 47, 48, 49, 50, 51], "excluded_lines": [], "start_line": 44}, "CRUDGameState.update_tick": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [56, 57, 58, 59, 60, 61], "excluded_lines": [], "start_line": 54}, "CRUDGameState.get_all_active": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [66, 67, 68], "excluded_lines": [], "start_line": 64}, "": {"executed_lines": [3, 4, 5, 7, 10, 13, 14, 20, 21, 33, 34, 43, 44, 53, 54, 63, 64, 72], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDGameState": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 31, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [16, 17, 18, 23, 25, 26, 27, 28, 29, 31, 36, 37, 38, 39, 40, 41, 46, 47, 48, 49, 50, 51, 56, 57, 58, 59, 60, 61, 66, 67, 68], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [3, 4, 5, 7, 10, 13, 14, 20, 21, 33, 34, 43, 44, 53, 54, 63, 64, 72], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\incident.py": {"executed_lines": [3, 4, 5, 7, 10, 13, 14, 37, 38, 44, 45, 47, 50, 51, 53, 54, 62, 63, 65, 68, 69, 71, 72, 74, 77, 78, 80, 81, 91, 92, 102, 103, 112, 113, 122, 123, 136], "summary": {"covered_lines": 37, "num_statements": 80, "percent_covered": 46.25, "percent_covered_display": "46.25", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 46.25, "percent_statements_covered_display": "46.25"}, "missing_lines": [24, 32, 33, 34, 35, 40, 41, 42, 56, 59, 60, 83, 84, 85, 86, 87, 88, 89, 94, 95, 96, 97, 98, 99, 100, 105, 106, 107, 110, 115, 116, 117, 118, 119, 120, 125, 126, 127, 128, 129, 130, 131, 132], "excluded_lines": [], "functions": {"CRUDIncident.create": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24, 32, 33, 34, 35], "excluded_lines": [], "start_line": 14}, "CRUDIncident.get": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40, 41, 42], "excluded_lines": [], "start_line": 38}, "CRUDIncident.get_active_by_vault": {"executed_lines": [47, 50, 51], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "CRUDIncident.get_by_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [56, 59, 60], "excluded_lines": [], "start_line": 54}, "CRUDIncident.get_active_incident_types_in_vault": {"executed_lines": [65, 68, 69], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "CRUDIncident.get_rooms_with_active_incidents": {"executed_lines": [74, 77, 78], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 72}, "CRUDIncident.resolve": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [83, 84, 85, 86, 87, 88, 89], "excluded_lines": [], "start_line": 81}, "CRUDIncident.spread_to_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [94, 95, 96, 97, 98, 99, 100], "excluded_lines": [], "start_line": 92}, "CRUDIncident.get_spreading_incidents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [105, 106, 107, 110], "excluded_lines": [], "start_line": 103}, "CRUDIncident.remove": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [115, 116, 117, 118, 119, 120], "excluded_lines": [], "start_line": 113}, "CRUDIncident.remove_all_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [125, 126, 127, 128, 129, 130, 131, 132], "excluded_lines": [], "start_line": 123}, "": {"executed_lines": [3, 4, 5, 7, 10, 13, 14, 37, 38, 44, 45, 53, 54, 62, 63, 71, 72, 80, 81, 91, 92, 102, 103, 112, 113, 122, 123, 136], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDIncident": {"executed_lines": [47, 50, 51, 65, 68, 69, 74, 77, 78], "summary": {"covered_lines": 9, "num_statements": 52, "percent_covered": 17.307692307692307, "percent_covered_display": "17.31", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 17.307692307692307, "percent_statements_covered_display": "17.31"}, "missing_lines": [24, 32, 33, 34, 35, 40, 41, 42, 56, 59, 60, 83, 84, 85, 86, 87, 88, 89, 94, 95, 96, 97, 98, 99, 100, 105, 106, 107, 110, 115, 116, 117, 118, 119, 120, 125, 126, 127, 128, 129, 130, 131, 132], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [3, 4, 5, 7, 10, 13, 14, 37, 38, 44, 45, 53, 54, 62, 63, 71, 72, 80, 81, 91, 92, 102, 103, 112, 113, 122, 123, 136], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\item_base.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 13, 14, 15, 16, 17, 19, 20, 23, 27, 28, 29, 31, 33, 39, 41, 43, 91, 92, 118, 119, 122, 123, 130, 131, 135, 148, 149, 190, 200, 201, 211], "summary": {"covered_lines": 39, "num_statements": 124, "percent_covered": 31.451612903225808, "percent_covered_display": "31.45", "missing_lines": 85, "excluded_lines": 0, "percent_statements_covered": 31.451612903225808, "percent_statements_covered_display": "31.45"}, "missing_lines": [30, 40, 44, 47, 49, 55, 56, 58, 59, 61, 63, 65, 66, 67, 69, 71, 72, 73, 75, 76, 77, 80, 81, 82, 84, 85, 86, 87, 89, 95, 97, 107, 108, 110, 111, 113, 114, 116, 120, 126, 132, 133, 136, 138, 139, 141, 143, 144, 146, 154, 157, 158, 159, 163, 164, 168, 169, 170, 171, 172, 175, 177, 178, 179, 188, 191, 192, 193, 195, 196, 197, 198, 203, 204, 205, 207, 208, 209, 212, 213, 214, 216, 218, 219, 220], "excluded_lines": [], "functions": {"CRUDItem.create": {"executed_lines": [28, 29, 31], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [30], "excluded_lines": [], "start_line": 27}, "CRUDItem.update": {"executed_lines": [39, 41], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [40], "excluded_lines": [], "start_line": 33}, "CRUDItem.equip": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 27, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [44, 47, 49, 55, 56, 58, 59, 61, 63, 65, 66, 67, 69, 71, 72, 73, 75, 76, 77, 80, 81, 82, 84, 85, 86, 87, 89], "excluded_lines": [], "start_line": 43}, "CRUDItem._fetch_unequip_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [95, 97, 107, 108, 110, 111, 113, 114, 116], "excluded_lines": [], "start_line": 92}, "CRUDItem._get_item_model": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [120], "excluded_lines": [], "start_line": 119}, "CRUDItem._update_item": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [126], "excluded_lines": [], "start_line": 123}, "CRUDItem._update_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [132, 133], "excluded_lines": [], "start_line": 131}, "CRUDItem.unequip": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [136, 138, 139, 141, 143, 144, 146], "excluded_lines": [], "start_line": 135}, "CRUDItem.convert_to_junk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [154, 157, 158, 159, 163, 164, 168, 169, 170, 171, 172, 175, 177, 178, 179, 188], "excluded_lines": [], "start_line": 149}, "CRUDItem.scrap": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [191, 192, 193, 195, 196, 197, 198], "excluded_lines": [], "start_line": 190}, "CRUDItem.add_caps_to_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [203, 204, 205, 207, 208, 209], "excluded_lines": [], "start_line": 201}, "CRUDItem.sell": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [212, 213, 214, 216, 218, 219, 220], "excluded_lines": [], "start_line": 211}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 13, 14, 15, 16, 17, 19, 20, 23, 27, 33, 43, 91, 92, 118, 119, 122, 123, 130, 131, 135, 148, 149, 190, 200, 201, 211], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDItem": {"executed_lines": [28, 29, 31, 39, 41], "summary": {"covered_lines": 5, "num_statements": 90, "percent_covered": 5.555555555555555, "percent_covered_display": "5.56", "missing_lines": 85, "excluded_lines": 0, "percent_statements_covered": 5.555555555555555, "percent_statements_covered_display": "5.56"}, "missing_lines": [30, 40, 44, 47, 49, 55, 56, 58, 59, 61, 63, 65, 66, 67, 69, 71, 72, 73, 75, 76, 77, 80, 81, 82, 84, 85, 86, 87, 89, 95, 97, 107, 108, 110, 111, 113, 114, 116, 120, 126, 132, 133, 136, 138, 139, 141, 143, 144, 146, 154, 157, 158, 159, 163, 164, 168, 169, 170, 171, 172, 175, 177, 178, 179, 188, 191, 192, 193, 195, 196, 197, 198, 203, 204, 205, 207, 208, 209, 212, 213, 214, 216, 218, 219, 220], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 13, 14, 15, 16, 17, 19, 20, 23, 27, 33, 43, 91, 92, 118, 119, 122, 123, 130, 131, 135, 148, 149, 190, 200, 201, 211], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\junk.py": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDJunk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 6}, "": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\llm_interaction.py": {"executed_lines": [1, 2, 5, 6, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 5, 6, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDLLMInteraction": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 5}, "": {"executed_lines": [1, 2, 5, 6, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\mixins.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 10, 13, 14, 16, 28, 40, 50], "summary": {"covered_lines": 13, "num_statements": 28, "percent_covered": 46.42857142857143, "percent_covered_display": "46.43", "missing_lines": 15, "excluded_lines": 1, "percent_statements_covered": 46.42857142857143, "percent_statements_covered_display": "46.43"}, "missing_lines": [17, 20, 21, 23, 24, 26, 31, 34, 36, 38, 47, 51, 52, 53, 55], "excluded_lines": [48], "functions": {"CompletionMixin.get_link": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [17, 20, 21, 23, 24, 26], "excluded_lines": [], "start_line": 16}, "CompletionMixin._mark_as_complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 34, 36, 38], "excluded_lines": [], "start_line": 28}, "CompletionMixin._handle_completion_cascade": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 1, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [47], "excluded_lines": [48], "start_line": 40}, "CompletionMixin.complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [51, 52, 53, 55], "excluded_lines": [], "start_line": 50}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 10, 13, 14, 16, 28, 40, 50], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CompletionMixin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 1, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [17, 20, 21, 23, 24, 26, 31, 34, 36, 38, 47, 51, 52, 53, 55], "excluded_lines": [48], "start_line": 13}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 10, 13, 14, 16, 28, 40, 50], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\notification.py": {"executed_lines": [1, 2, 4, 5, 7, 8, 11, 12, 31, 42, 54, 70, 82], "summary": {"covered_lines": 13, "num_statements": 50, "percent_covered": 26.0, "percent_covered_display": "26.00", "missing_lines": 37, "excluded_lines": 0, "percent_statements_covered": 26.0, "percent_statements_covered_display": "26.00"}, "missing_lines": [22, 24, 25, 27, 28, 29, 33, 39, 40, 44, 45, 46, 47, 48, 49, 50, 51, 52, 56, 57, 58, 60, 61, 62, 63, 64, 65, 67, 68, 72, 73, 74, 75, 76, 77, 78, 79], "excluded_lines": [], "functions": {"CRUDNotification.get_user_notifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [22, 24, 25, 27, 28, 29], "excluded_lines": [], "start_line": 12}, "CRUDNotification.get_unread_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [33, 39, 40], "excluded_lines": [], "start_line": 31}, "CRUDNotification.mark_as_read": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [44, 45, 46, 47, 48, 49, 50, 51, 52], "excluded_lines": [], "start_line": 42}, "CRUDNotification.mark_all_as_read": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [56, 57, 58, 60, 61, 62, 63, 64, 65, 67, 68], "excluded_lines": [], "start_line": 54}, "CRUDNotification.dismiss": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [72, 73, 74, 75, 76, 77, 78, 79], "excluded_lines": [], "start_line": 70}, "": {"executed_lines": [1, 2, 4, 5, 7, 8, 11, 12, 31, 42, 54, 70, 82], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDNotification": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 37, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 37, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [22, 24, 25, 27, 28, 29, 33, 39, 40, 44, 45, 46, 47, 48, 49, 50, 51, 52, 56, 57, 58, 60, 61, 62, 63, 64, 65, 67, 68, 72, 73, 74, 75, 76, 77, 78, 79], "excluded_lines": [], "start_line": 11}, "": {"executed_lines": [1, 2, 4, 5, 7, 8, 11, 12, 31, 42, 54, 70, 82], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\objective.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 18, 19, 20, 22, 23, 24, 26, 27, 29, 30, 32, 34, 37, 44, 45, 47, 59, 63, 76, 79, 82, 83, 85, 87, 88, 91, 92, 94, 95, 97, 99, 115, 118, 119, 121, 123, 124, 127, 129, 130, 132, 133, 134, 137], "summary": {"covered_lines": 54, "num_statements": 54, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"CRUDObjective.__init__": {"executed_lines": [19, 20], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "CRUDObjective.create_for_vault": {"executed_lines": [23, 24, 26, 27, 29, 30, 32], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "CRUDObjective.get_multi_for_vault": {"executed_lines": [37, 44, 45, 47], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "CRUDObjective._handle_completion_cascade": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 59}, "CRUDObjective.complete": {"executed_lines": [76, 79, 82, 83, 85, 87, 88, 91, 92, 94, 95, 97], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "CRUDObjective.update_progress": {"executed_lines": [115, 118, 119, 121, 123, 124, 127, 129, 130, 132, 133, 134], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 18, 22, 34, 59, 63, 99, 137], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDObjective": {"executed_lines": [19, 20, 23, 24, 26, 27, 29, 30, 32, 37, 44, 45, 47, 76, 79, 82, 83, 85, 87, 88, 91, 92, 94, 95, 97, 115, 118, 119, 121, 123, 124, 127, 129, 130, 132, 133, 134], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 18, 22, 34, 59, 63, 99, 137], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\outfit.py": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDOutfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 6}, "": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\prompt.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 4, 5, 8, 9, 10, 11, 12, 15], "excluded_lines": [], "functions": {"CRUDPrompt.get_prompt_by_name": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [10, 11, 12], "excluded_lines": [], "start_line": 9}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 4, 5, 8, 9, 15], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDPrompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [10, 11, 12], "excluded_lines": [], "start_line": 8}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 4, 5, 8, 9, 15], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\quest.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 21, 22, 24, 30, 41, 42, 44, 60, 61, 75, 79, 95, 96, 100, 103, 104, 106, 108, 109, 110, 111, 114, 115, 116, 117, 118, 121], "summary": {"covered_lines": 41, "num_statements": 48, "percent_covered": 85.41666666666667, "percent_covered_display": "85.42", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 85.41666666666667, "percent_statements_covered_display": "85.42"}, "missing_lines": [62, 70, 71, 72, 73, 77, 97], "excluded_lines": [], "functions": {"CRUDQuest.__init__": {"executed_lines": [21, 22], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "CRUDQuest.get_multi_for_vault": {"executed_lines": [30, 41, 42, 44], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "CRUDQuest.create_quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [62, 70, 71, 72, 73], "excluded_lines": [], "start_line": 61}, "CRUDQuest._handle_completion_cascade": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [77], "excluded_lines": [], "start_line": 75}, "CRUDQuest.assign_to_vault": {"executed_lines": [95, 96, 100, 103, 104, 106, 108, 109, 110, 111, 114, 115, 116, 117, 118], "summary": {"covered_lines": 15, "num_statements": 16, "percent_covered": 93.75, "percent_covered_display": "93.75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.75, "percent_statements_covered_display": "93.75"}, "missing_lines": [97], "excluded_lines": [], "start_line": 79}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 24, 60, 61, 75, 79, 121], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDQuest": {"executed_lines": [21, 22, 30, 41, 42, 44, 95, 96, 100, 103, 104, 106, 108, 109, 110, 111, 114, 115, 116, 117, 118], "summary": {"covered_lines": 21, "num_statements": 28, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [62, 70, 71, 72, 73, 77, 97], "excluded_lines": [], "start_line": 17}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 24, 60, 61, 75, 79, 121], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\relationship.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 18, 21, 38, 42, 43, 45, 66, 102, 126, 146, 161, 163, 166, 167, 168, 174, 177, 198, 204, 205, 206, 207, 211], "summary": {"covered_lines": 31, "num_statements": 49, "percent_covered": 63.265306122448976, "percent_covered_display": "63.27", "missing_lines": 18, "excluded_lines": 2, "percent_statements_covered": 63.265306122448976, "percent_statements_covered_display": "63.27"}, "missing_lines": [60, 63, 64, 83, 85, 87, 89, 91, 92, 93, 99, 100, 117, 123, 124, 143, 144, 175], "excluded_lines": [14, 15], "functions": {"CRUDRelationship.get_by_dweller_pair": {"executed_lines": [38, 42, 43], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "CRUDRelationship.get_by_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [60, 63, 64], "excluded_lines": [], "start_line": 45}, "CRUDRelationship.get_by_type": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [83, 85, 87, 89, 91, 92, 93, 99, 100], "excluded_lines": [], "start_line": 66}, "CRUDRelationship.get_partners": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [117, 123, 124], "excluded_lines": [], "start_line": 102}, "CRUDRelationship.exists_between": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [143, 144], "excluded_lines": [], "start_line": 126}, "CRUDRelationship.get_by_vault": {"executed_lines": [161, 163, 166, 167, 168, 174], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "85.71", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "85.71"}, "missing_lines": [175], "excluded_lines": [], "start_line": 146}, "CRUDRelationship.create_with_defaults": {"executed_lines": [198, 204, 205, 206, 207], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 177}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 18, 21, 45, 66, 102, 126, 146, 177, 211], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [14, 15], "start_line": 1}}, "classes": {"CRUDRelationship": {"executed_lines": [38, 42, 43, 161, 163, 166, 167, 168, 174, 198, 204, 205, 206, 207], "summary": {"covered_lines": 14, "num_statements": 32, "percent_covered": 43.75, "percent_covered_display": "43.75", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 43.75, "percent_statements_covered_display": "43.75"}, "missing_lines": [60, 63, 64, 83, 85, 87, 89, 91, 92, 93, 99, 100, 117, 123, 124, 143, 144, 175], "excluded_lines": [], "start_line": 18}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 18, 21, 45, 66, 102, 126, 146, 177, 211], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [14, 15], "start_line": 1}}}, "app\\crud\\room.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 16, 19, 20, 21, 26, 27, 29, 32, 33, 34, 35, 36, 41, 42, 43, 44, 45, 50, 51, 62, 63, 79, 80, 89, 101, 102, 108, 146, 160, 162, 228], "summary": {"covered_lines": 42, "num_statements": 125, "percent_covered": 33.6, "percent_covered_display": "33.60", "missing_lines": 83, "excluded_lines": 0, "percent_statements_covered": 33.6, "percent_statements_covered_display": "33.60"}, "missing_lines": [23, 24, 30, 37, 38, 39, 46, 47, 48, 55, 60, 69, 72, 74, 75, 76, 77, 82, 83, 86, 87, 91, 92, 93, 94, 95, 96, 99, 104, 110, 112, 115, 117, 121, 122, 123, 124, 126, 127, 129, 130, 132, 134, 135, 137, 139, 140, 144, 147, 148, 149, 153, 154, 158, 163, 166, 169, 170, 171, 174, 175, 176, 177, 179, 180, 183, 186, 189, 193, 194, 196, 199, 200, 202, 204, 205, 208, 215, 216, 219, 220, 224, 225], "excluded_lines": [], "functions": {"CRUDRoom.get_multy_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [23, 24], "excluded_lines": [], "start_line": 21}, "CRUDRoom.get_existing_room_names": {"executed_lines": [29], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [30], "excluded_lines": [], "start_line": 27}, "CRUDRoom.evaluate_capacity_formula": {"executed_lines": [34, 35, 36], "summary": {"covered_lines": 3, "num_statements": 6, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [37, 38, 39], "excluded_lines": [], "start_line": 33}, "CRUDRoom.evaluate_output_formula": {"executed_lines": [43, 44, 45], "summary": {"covered_lines": 3, "num_statements": 6, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [46, 47, 48], "excluded_lines": [], "start_line": 42}, "CRUDRoom.get_room_by_coordinates": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [55, 60], "excluded_lines": [], "start_line": 51}, "CRUDRoom.get_room_build_price": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [69, 72, 74, 75, 76, 77], "excluded_lines": [], "start_line": 63}, "CRUDRoom.check_is_unique_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [82, 83, 86, 87], "excluded_lines": [], "start_line": 80}, "CRUDRoom.expand_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [91, 92, 93, 94, 95, 96, 99], "excluded_lines": [], "start_line": 89}, "CRUDRoom.requires_recalculation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [104], "excluded_lines": [], "start_line": 102}, "CRUDRoom.build": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [110, 112, 115, 117, 121, 122, 123, 124, 126, 127, 129, 130, 132, 134, 135, 137, 139, 140, 144], "excluded_lines": [], "start_line": 108}, "CRUDRoom.destroy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [147, 148, 149, 153, 154, 158], "excluded_lines": [], "start_line": 146}, "CRUDRoom.upgrade": {"executed_lines": [162], "summary": {"covered_lines": 1, "num_statements": 30, "percent_covered": 3.3333333333333335, "percent_covered_display": "3.33", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 3.3333333333333335, "percent_statements_covered_display": "3.33"}, "missing_lines": [163, 166, 169, 170, 171, 174, 175, 176, 177, 179, 180, 183, 186, 189, 193, 194, 196, 199, 200, 202, 204, 205, 208, 215, 216, 219, 220, 224, 225], "excluded_lines": [], "start_line": 160}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 16, 19, 20, 21, 26, 27, 32, 33, 41, 42, 50, 51, 62, 63, 79, 80, 89, 101, 102, 108, 146, 160, 228], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDRoom": {"executed_lines": [29, 34, 35, 36, 43, 44, 45, 162], "summary": {"covered_lines": 8, "num_statements": 91, "percent_covered": 8.791208791208792, "percent_covered_display": "8.79", "missing_lines": 83, "excluded_lines": 0, "percent_statements_covered": 8.791208791208792, "percent_statements_covered_display": "8.79"}, "missing_lines": [23, 24, 30, 37, 38, 39, 46, 47, 48, 55, 60, 69, 72, 74, 75, 76, 77, 82, 83, 86, 87, 91, 92, 93, 94, 95, 96, 99, 104, 110, 112, 115, 117, 121, 122, 123, 124, 126, 127, 129, 130, 132, 134, 135, 137, 139, 140, 144, 147, 148, 149, 153, 154, 158, 163, 166, 169, 170, 171, 174, 175, 176, 177, 179, 180, 183, 186, 189, 193, 194, 196, 199, 200, 202, 204, 205, 208, 215, 216, 219, 220, 224, 225], "excluded_lines": [], "start_line": 19}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 16, 19, 20, 21, 26, 27, 32, 33, 41, 42, 50, 51, 62, 63, 79, 80, 89, 101, 102, 108, 146, 160, 228], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\training.py": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 13, 16, 22, 25, 27, 33, 36, 38, 44, 47, 49, 74, 89, 90, 100], "summary": {"covered_lines": 22, "num_statements": 31, "percent_covered": 70.96774193548387, "percent_covered_display": "70.97", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 70.96774193548387, "percent_statements_covered_display": "70.97"}, "missing_lines": [66, 68, 69, 71, 72, 92, 94, 95, 97], "excluded_lines": [], "functions": {"CRUDTraining.get_active_by_dweller": {"executed_lines": [22, 25], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "CRUDTraining.get_active_by_vault": {"executed_lines": [33, 36], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "CRUDTraining.get_active_by_room": {"executed_lines": [44, 47], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "CRUDTraining.get_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [66, 68, 69, 71, 72], "excluded_lines": [], "start_line": 49}, "CRUDTraining.get_dwellers_for_trainings": {"executed_lines": [89, 90], "summary": {"covered_lines": 2, "num_statements": 6, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [92, 94, 95, 97], "excluded_lines": [], "start_line": 74}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 13, 16, 27, 38, 49, 74, 100], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDTraining": {"executed_lines": [22, 25, 33, 36, 44, 47, 89, 90], "summary": {"covered_lines": 8, "num_statements": 17, "percent_covered": 47.05882352941177, "percent_covered_display": "47.06", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 47.05882352941177, "percent_statements_covered_display": "47.06"}, "missing_lines": [66, 68, 69, 71, 72, 92, 94, 95, 97], "excluded_lines": [], "start_line": 13}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 13, 16, 27, 38, 49, 74, 100], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\user.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 16, 17, 18, 19, 21, 25, 26, 32, 33, 34, 35, 38, 39, 40, 47, 49, 55, 56, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 70, 71, 72, 74, 75, 76, 79], "summary": {"covered_lines": 46, "num_statements": 52, "percent_covered": 88.46153846153847, "percent_covered_display": "88.46", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 88.46153846153847, "percent_statements_covered_display": "88.46"}, "missing_lines": [22, 23, 41, 42, 43, 67], "excluded_lines": [], "functions": {"CRUDUser.get_by_email": {"executed_lines": [18, 19], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "CRUDUser.get_by_username": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [22, 23], "excluded_lines": [], "start_line": 21}, "CRUDUser.create": {"executed_lines": [26, 32, 33, 34, 35, 38, 39, 40, 47], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [41, 42, 43], "excluded_lines": [], "start_line": 25}, "CRUDUser.update": {"executed_lines": [55, 56, 57, 58, 59, 60], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 49}, "CRUDUser.authenticate": {"executed_lines": [63, 64, 65, 66, 68], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83.33", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83.33"}, "missing_lines": [67], "excluded_lines": [], "start_line": 62}, "CRUDUser.is_active": {"executed_lines": [72], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "CRUDUser.is_superuser": {"executed_lines": [76], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 75}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 16, 17, 21, 25, 49, 62, 70, 71, 74, 75, 79], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDUser": {"executed_lines": [18, 19, 26, 32, 33, 34, 35, 38, 39, 40, 47, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 68, 72, 76], "summary": {"covered_lines": 24, "num_statements": 30, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [22, 23, 41, 42, 43, 67], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 16, 17, 21, 25, 49, 62, 70, 71, 74, 75, 79], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\user_profile.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 19, 21, 54, 62, 63, 66, 67, 68, 70, 72, 86], "summary": {"covered_lines": 23, "num_statements": 41, "percent_covered": 56.09756097560975, "percent_covered_display": "56.10", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 56.09756097560975, "percent_statements_covered_display": "56.10"}, "missing_lines": [36, 37, 38, 39, 40, 41, 43, 44, 46, 47, 48, 50, 52, 64, 79, 80, 81, 83], "excluded_lines": [], "functions": {"CRUDUserProfile.get_by_user_id": {"executed_lines": [18, 19], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "CRUDUserProfile.create_for_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36, 37, 38, 39, 40, 41, 43, 44, 46, 47, 48, 50, 52], "excluded_lines": [], "start_line": 21}, "CRUDUserProfile.increment_statistic": {"executed_lines": [62, 63, 66, 67, 68, 70], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "85.71", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "85.71"}, "missing_lines": [64], "excluded_lines": [], "start_line": 54}, "CRUDUserProfile.update_statistics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [79, 80, 81, 83], "excluded_lines": [], "start_line": 72}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 21, 54, 72, 86], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDUserProfile": {"executed_lines": [18, 19, 62, 63, 66, 67, 68, 70], "summary": {"covered_lines": 8, "num_statements": 26, "percent_covered": 30.76923076923077, "percent_covered_display": "30.77", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 30.76923076923077, "percent_statements_covered_display": "30.77"}, "missing_lines": [36, 37, 38, 39, 40, 41, 43, 44, 46, 47, 48, 50, 52, 64, 79, 80, 81, 83], "excluded_lines": [], "start_line": 15}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 21, 54, 72, 86], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\vault.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 23, 24, 32, 47, 48, 50, 53, 54, 55, 56, 57, 59, 113, 114, 118, 119, 123, 129, 163, 166, 195, 196, 197, 198, 199, 200, 202, 205, 206, 207, 208, 210, 221, 222, 228, 236, 237, 240, 241, 242, 245, 251, 253, 255, 257, 258, 259, 262, 265, 275], "summary": {"covered_lines": 65, "num_statements": 136, "percent_covered": 47.794117647058826, "percent_covered_display": "47.79", "missing_lines": 71, "excluded_lines": 0, "percent_statements_covered": 47.794117647058826, "percent_statements_covered_display": "47.79"}, "missing_lines": [20, 21, 25, 26, 27, 28, 29, 30, 51, 66, 67, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 86, 87, 88, 89, 92, 93, 95, 97, 100, 101, 103, 106, 107, 108, 109, 111, 115, 116, 120, 121, 124, 125, 126, 127, 132, 145, 146, 179, 180, 181, 216, 217, 218, 219, 243, 244, 246, 247, 248, 249, 260, 266, 267, 268, 269, 272], "excluded_lines": [], "functions": {"CRUDVault.get_by_user_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20, 21], "excluded_lines": [], "start_line": 19}, "CRUDVault._calculate_new_capacity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [25, 26, 27, 28, 29, 30], "excluded_lines": [], "start_line": 24}, "CRUDVault.update_storage": {"executed_lines": [47, 48, 50, 53, 54, 55, 56, 57], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 88.88888888888889, "percent_covered_display": "88.89", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "88.89"}, "missing_lines": [51], "excluded_lines": [], "start_line": 32}, "CRUDVault.recalculate_vault_attributes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 31, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [66, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 86, 87, 88, 89, 92, 93, 95, 97, 100, 101, 103, 106, 107, 108, 109, 111], "excluded_lines": [], "start_line": 59}, "CRUDVault.recalculate_vault_attributes._update_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [67], "excluded_lines": [], "start_line": 66}, "CRUDVault.get_population": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [115, 116], "excluded_lines": [], "start_line": 114}, "CRUDVault.get_rooms_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [120, 121], "excluded_lines": [], "start_line": 119}, "CRUDVault.toggle_game_state": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [124, 125, 126, 127], "excluded_lines": [], "start_line": 123}, "CRUDVault.get_vaults_with_room_and_dweller_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [132, 145, 146], "excluded_lines": [], "start_line": 129}, "CRUDVault.get_vault_with_room_and_dweller_count": {"executed_lines": [166], "summary": {"covered_lines": 1, "num_statements": 4, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [179, 180, 181], "excluded_lines": [], "start_line": 163}, "CRUDVault.create_storage": {"executed_lines": [197, 198, 199, 200], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 196}, "CRUDVault.create_with_user_id": {"executed_lines": [205, 206, 207, 208], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 202}, "CRUDVault.is_enough_dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [216, 217, 218, 219], "excluded_lines": [], "start_line": 210}, "CRUDVault.is_enough_population_space": {"executed_lines": [228, 236, 237, 240, 241, 242, 245], "summary": {"covered_lines": 7, "num_statements": 13, "percent_covered": 53.84615384615385, "percent_covered_display": "53.85", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 53.84615384615385, "percent_statements_covered_display": "53.85"}, "missing_lines": [243, 244, 246, 247, 248, 249], "excluded_lines": [], "start_line": 222}, "CRUDVault.deposit_caps": {"executed_lines": [253], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 251}, "CRUDVault.withdraw_caps": {"executed_lines": [257, 258, 259], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [260], "excluded_lines": [], "start_line": 255}, "CRUDVault.delete": {"executed_lines": [265], "summary": {"covered_lines": 1, "num_statements": 6, "percent_covered": 16.666666666666668, "percent_covered_display": "16.67", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 16.666666666666668, "percent_statements_covered_display": "16.67"}, "missing_lines": [266, 267, 268, 269, 272], "excluded_lines": [], "start_line": 262}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 23, 24, 32, 59, 113, 114, 118, 119, 123, 129, 163, 195, 196, 202, 210, 221, 222, 251, 255, 262, 275], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDVault": {"executed_lines": [47, 48, 50, 53, 54, 55, 56, 57, 166, 197, 198, 199, 200, 205, 206, 207, 208, 228, 236, 237, 240, 241, 242, 245, 253, 257, 258, 259, 265], "summary": {"covered_lines": 29, "num_statements": 100, "percent_covered": 29.0, "percent_covered_display": "29.00", "missing_lines": 71, "excluded_lines": 0, "percent_statements_covered": 29.0, "percent_statements_covered_display": "29.00"}, "missing_lines": [20, 21, 25, 26, 27, 28, 29, 30, 51, 66, 67, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 86, 87, 88, 89, 92, 93, 95, 97, 100, 101, 103, 106, 107, 108, 109, 111, 115, 116, 120, 121, 124, 125, 126, 127, 132, 145, 146, 179, 180, 181, 216, 217, 218, 219, 243, 244, 246, 247, 248, 249, 260, 266, 267, 268, 269, 272], "excluded_lines": [], "start_line": 18}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 23, 24, 32, 59, 113, 114, 118, 119, 123, 129, 163, 195, 196, 202, 210, 221, 222, 251, 255, 262, 275], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\vault_mixin.py": {"executed_lines": [1, 2, 4, 5, 6, 8, 9, 11, 14, 15, 17, 29], "summary": {"covered_lines": 12, "num_statements": 25, "percent_covered": 48.0, "percent_covered_display": "48.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 48.0, "percent_statements_covered_display": "48.00"}, "missing_lines": [20, 21, 22, 23, 24, 25, 26, 27, 32, 33, 34, 36, 37], "excluded_lines": [], "functions": {"VaultActionsMixin.get_for_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20, 21, 22, 23, 24, 25, 26, 27], "excluded_lines": [], "start_line": 17}, "VaultActionsMixin.get_multi_for_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [32, 33, 34, 36, 37], "excluded_lines": [], "start_line": 29}, "": {"executed_lines": [1, 2, 4, 5, 6, 8, 9, 11, 14, 15, 17, 29], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"VaultActionsMixin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20, 21, 22, 23, 24, 25, 26, 27, 32, 33, 34, 36, 37], "excluded_lines": [], "start_line": 14}, "": {"executed_lines": [1, 2, 4, 5, 6, 8, 9, 11, 14, 15, 17, 29], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\weapon.py": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDWeapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 6}, "": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\db\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\db\\init_db.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 43, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 35, 36, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "excluded_lines": [], "functions": {"locate_quest_files": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36], "excluded_lines": [], "start_line": 35}, "init_db": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "excluded_lines": [], "start_line": 39}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 35, 39], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 43, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 35, 36, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "excluded_lines": [], "start_line": 1}}}, "app\\db\\session.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 24, 33], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [34, 35], "excluded_lines": [], "functions": {"get_async_session": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [34, 35], "excluded_lines": [], "start_line": 33}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 24, 33], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 9, 24, 33], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [34, 35], "excluded_lines": [], "start_line": 1}}}, "app\\middleware\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\middleware\\request_id.py": {"executed_lines": [3, 5, 7, 10, 13, 20, 22, 31, 36, 37, 38, 43, 44, 47, 50, 51, 52, 54, 56, 57, 58, 59, 60, 62], "summary": {"covered_lines": 24, "num_statements": 28, "percent_covered": 85.71428571428571, "percent_covered_display": "85.71", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "85.71"}, "missing_lines": [32, 33, 39, 40], "excluded_lines": [], "functions": {"RequestIdMiddleware.__init__": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "RequestIdMiddleware.__call__": {"executed_lines": [31, 36, 37, 38, 43, 44, 47, 50, 51, 52, 54, 62], "summary": {"covered_lines": 12, "num_statements": 16, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [32, 33, 39, 40], "excluded_lines": [], "start_line": 22}, "RequestIdMiddleware.__call__.send_with_request_id": {"executed_lines": [56, 57, 58, 59, 60], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "": {"executed_lines": [3, 5, 7, 10, 13, 22], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RequestIdMiddleware": {"executed_lines": [20, 31, 36, 37, 38, 43, 44, 47, 50, 51, 52, 54, 56, 57, 58, 59, 60, 62], "summary": {"covered_lines": 18, "num_statements": 22, "percent_covered": 81.81818181818181, "percent_covered_display": "81.82", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "81.82"}, "missing_lines": [32, 33, 39, 40], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [3, 5, 7, 10, 13, 22], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\middleware\\security.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 9, 10, 12, 14, 17, 25, 26, 27, 28, 29, 30, 31, 33, 61, 72], "excluded_lines": [], "functions": {"create_security_config": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [25, 26, 27, 28, 29, 30, 31, 33, 61, 72], "excluded_lines": [], "start_line": 17}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 9, 10, 12, 14, 17], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 9, 10, 12, 14, 17, 25, 26, 27, 28, 29, 30, 31, 33, 61, 72], "excluded_lines": [], "start_line": 1}}}, "app\\models\\__init__.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\base.py": {"executed_lines": [1, 2, 4, 5, 8, 9, 10, 16, 17, 25, 26, 27, 29, 34, 40, 41, 42, 43, 44, 45, 46, 47, 49], "summary": {"covered_lines": 23, "num_statements": 27, "percent_covered": 85.18518518518519, "percent_covered_display": "85.19", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 85.18518518518519, "percent_statements_covered_display": "85.19"}, "missing_lines": [31, 32, 36, 37], "excluded_lines": [], "functions": {"SoftDeleteMixin.soft_delete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 32], "excluded_lines": [], "start_line": 29}, "SoftDeleteMixin.restore": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36, 37], "excluded_lines": [], "start_line": 34}, "": {"executed_lines": [1, 2, 4, 5, 8, 9, 10, 16, 17, 25, 26, 27, 29, 34, 40, 41, 42, 43, 44, 45, 46, 47, 49], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TimeStampMixin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 8}, "BaseUUIDModel": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "SoftDeleteMixin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 32, 36, 37], "excluded_lines": [], "start_line": 25}, "SPECIALModel": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "": {"executed_lines": [1, 2, 4, 5, 8, 9, 10, 16, 17, 25, 26, 27, 29, 34, 40, 41, 42, 43, 44, 45, 46, 47, 49], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\chat_message.py": {"executed_lines": [1, 2, 3, 5, 7, 16, 17, 20, 21, 24, 25, 27, 30, 33, 34, 35, 38, 39, 42, 43, 49, 55, 61, 67, 70, 71, 74, 75, 76], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 5, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11, 12, 13], "functions": {"": {"executed_lines": [1, 2, 3, 5, 7, 16, 17, 20, 21, 24, 25, 27, 30, 33, 34, 35, 38, 39, 42, 43, 49, 55, 61, 67, 70, 71, 74, 75, 76], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 5, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11, 12, 13], "start_line": 1}}, "classes": {"ChatMessageBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "ChatMessage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "ChatMessageCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 70}, "ChatMessageRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 74}, "": {"executed_lines": [1, 2, 3, 5, 7, 16, 17, 20, 21, 24, 25, 27, 30, 33, 34, 35, 38, 39, 42, 43, 49, 55, 61, 67, 70, 71, 74, 75, 76], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 5, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11, 12, 13], "start_line": 1}}}, "app\\models\\dweller.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 9, 10, 21, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 43, 46, 47, 50, 53, 54, 55, 56, 57, 63, 64, 67, 68, 74, 75, 85, 86, 102, 103, 104, 106, 107, 110, 114, 118, 124, 125, 128, 131], "summary": {"covered_lines": 54, "num_statements": 70, "percent_covered": 77.14285714285714, "percent_covered_display": "77.14", "missing_lines": 16, "excluded_lines": 7, "percent_statements_covered": 77.14285714285714, "percent_statements_covered_display": "77.14"}, "missing_lines": [65, 70, 72, 77, 78, 80, 81, 83, 88, 90, 91, 93, 94, 96, 97, 99], "excluded_lines": [12, 13, 14, 15, 16, 17, 18], "functions": {"DwellerBase.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [65], "excluded_lines": [], "start_line": 64}, "DwellerBase.current_level_xp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [70, 72], "excluded_lines": [], "start_line": 68}, "DwellerBase.next_level_xp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [77, 78, 80, 81, 83], "excluded_lines": [], "start_line": 75}, "DwellerBase.xp_progress_percentage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [88, 90, 91, 93, 94, 96, 97, 99], "excluded_lines": [], "start_line": 86}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 9, 10, 21, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 43, 46, 47, 50, 53, 54, 55, 56, 57, 63, 64, 67, 68, 74, 75, 85, 86, 102, 103, 104, 106, 107, 110, 114, 118, 124, 125, 128, 131], "summary": {"covered_lines": 54, "num_statements": 54, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 7, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [12, 13, 14, 15, 16, 17, 18], "start_line": 1}}, "classes": {"DwellerBaseWithoutStats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "DwellerBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [65, 70, 72, 77, 78, 80, 81, 83, 88, 90, 91, 93, 94, 96, 97, 99], "excluded_lines": [], "start_line": 63}, "Dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 102}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 9, 10, 21, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 43, 46, 47, 50, 53, 54, 55, 56, 57, 63, 64, 67, 68, 74, 75, 85, 86, 102, 103, 104, 106, 107, 110, 114, 118, 124, 125, 128, 131], "summary": {"covered_lines": 54, "num_statements": 54, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 7, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [12, 13, 14, 15, 16, 17, 18], "start_line": 1}}}, "app\\models\\exploration.py": {"executed_lines": [3, 4, 6, 7, 8, 9, 10, 12, 15, 20, 23, 24, 25, 28, 31, 32, 33, 34, 37, 38, 41, 42, 43, 44, 45, 46, 47, 50, 51, 52, 55, 58, 59, 61, 63, 65, 69, 71, 72, 74, 76, 78, 79, 80, 82, 84, 86, 87, 88, 90, 103, 105, 106, 108, 110, 111, 113, 115, 121, 122, 123, 125, 127, 129, 139], "summary": {"covered_lines": 65, "num_statements": 76, "percent_covered": 85.52631578947368, "percent_covered_display": "85.53", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 85.52631578947368, "percent_statements_covered_display": "85.53"}, "missing_lines": [17, 67, 77, 85, 92, 93, 95, 97, 99, 100, 101], "excluded_lines": [], "functions": {"get_utc_now": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [17], "excluded_lines": [], "start_line": 15}, "Exploration.is_active": {"executed_lines": [63], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 61}, "Exploration.is_completed": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [67], "excluded_lines": [], "start_line": 65}, "Exploration.elapsed_time_seconds": {"executed_lines": [71, 72], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 69}, "Exploration.progress_percentage": {"executed_lines": [76, 78, 79, 80], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [77], "excluded_lines": [], "start_line": 74}, "Exploration.time_remaining_seconds": {"executed_lines": [84, 86, 87, 88], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [85], "excluded_lines": [], "start_line": 82}, "Exploration.should_generate_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [92, 93, 95, 97, 99, 100, 101], "excluded_lines": [], "start_line": 90}, "Exploration.complete": {"executed_lines": [105, 106], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 103}, "Exploration.recall": {"executed_lines": [110, 111], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 108}, "Exploration.add_event": {"executed_lines": [115, 121, 122, 123, 125], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 113}, "Exploration.add_loot": {"executed_lines": [129, 139], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 127}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 10, 12, 15, 20, 23, 24, 25, 28, 31, 32, 33, 34, 37, 38, 41, 42, 43, 44, 45, 46, 47, 50, 51, 52, 55, 58, 59, 61, 65, 69, 74, 82, 90, 103, 108, 113, 127], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ExplorationStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "ExplorationBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "Exploration": {"executed_lines": [63, 71, 72, 76, 78, 79, 80, 84, 86, 87, 88, 105, 106, 110, 111, 115, 121, 122, 123, 125, 129, 139], "summary": {"covered_lines": 22, "num_statements": 32, "percent_covered": 68.75, "percent_covered_display": "68.75", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 68.75, "percent_statements_covered_display": "68.75"}, "missing_lines": [67, 77, 85, 92, 93, 95, 97, 99, 100, 101], "excluded_lines": [], "start_line": 55}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 10, 12, 15, 20, 23, 24, 25, 28, 31, 32, 33, 34, 37, 38, 41, 42, 43, 44, 45, 46, 47, 50, 51, 52, 55, 58, 59, 61, 65, 69, 74, 82, 90, 103, 108, 113, 127], "summary": {"covered_lines": 43, "num_statements": 44, "percent_covered": 97.72727272727273, "percent_covered_display": "97.73", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.72727272727273, "percent_statements_covered_display": "97.73"}, "missing_lines": [17], "excluded_lines": [], "start_line": 1}}}, "app\\models\\game_state.py": {"executed_lines": [3, 5, 6, 8, 11, 14, 15, 16, 17, 18, 19, 22, 25, 27, 29, 31, 33, 34, 36, 38, 39, 41, 43, 44], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"GameState.calculate_offline_time": {"executed_lines": [29], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "GameState.pause": {"executed_lines": [33, 34], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "GameState.resume": {"executed_lines": [38, 39], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 36}, "GameState.update_tick": {"executed_lines": [43, 44], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "": {"executed_lines": [3, 5, 6, 8, 11, 14, 15, 16, 17, 18, 19, 22, 25, 27, 31, 36, 41], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"GameStateBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "GameState": {"executed_lines": [29, 33, 34, 38, 39, 43, 44], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "": {"executed_lines": [3, 5, 6, 8, 11, 14, 15, 16, 17, 18, 19, 22, 25, 27, 31, 36, 41], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\incident.py": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 14, 17, 18, 19, 20, 21, 22, 25, 28, 29, 30, 31, 34, 37, 38, 39, 40, 41, 42, 45, 46, 49, 52, 53, 56, 59, 60, 62, 66, 70, 74, 79], "summary": {"covered_lines": 39, "num_statements": 48, "percent_covered": 81.25, "percent_covered_display": "81.25", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 81.25, "percent_statements_covered_display": "81.25"}, "missing_lines": [64, 68, 72, 76, 77, 81, 82, 83, 84], "excluded_lines": [], "functions": {"Incident.is_active": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [64], "excluded_lines": [], "start_line": 62}, "Incident.elapsed_time": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [68], "excluded_lines": [], "start_line": 66}, "Incident.should_spread": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [72], "excluded_lines": [], "start_line": 70}, "Incident.resolve": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [76, 77], "excluded_lines": [], "start_line": 74}, "Incident.spread_to_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [81, 82, 83, 84], "excluded_lines": [], "start_line": 79}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 14, 17, 18, 19, 20, 21, 22, 25, 28, 29, 30, 31, 34, 37, 38, 39, 40, 41, 42, 45, 46, 49, 52, 53, 56, 59, 60, 62, 66, 70, 74, 79], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"IncidentType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "IncidentStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "IncidentBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "Incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [64, 68, 72, 76, 77, 81, 82, 83, 84], "excluded_lines": [], "start_line": 56}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 14, 17, 18, 19, 20, 21, 22, 25, 28, 29, 30, 31, 34, 37, 38, 39, 40, 41, 42, 45, 46, 49, 52, 53, 56, 59, 60, 62, 66, 70, 74, 79], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\item.py": {"executed_lines": [1, 2, 4, 7, 8, 9, 10, 11, 13, 19, 20, 21], "summary": {"covered_lines": 12, "num_statements": 15, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [22, 23, 24], "excluded_lines": [], "functions": {"ItemBase.set_default_value": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [22, 23, 24], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [1, 2, 4, 7, 8, 9, 10, 11, 13, 19, 20, 21], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ItemBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [22, 23, 24], "excluded_lines": [], "start_line": 7}, "": {"executed_lines": [1, 2, 4, 7, 8, 9, 10, 11, 13, 19, 20, 21], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\junk.py": {"executed_lines": [1, 3, 4, 6, 7, 8, 14, 15, 16, 18, 25, 26, 27, 29], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 93.33333333333333, "percent_covered_display": "93.33", "missing_lines": 1, "excluded_lines": 2, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93.33"}, "missing_lines": [30], "excluded_lines": [10, 11], "functions": {"Junk.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [30], "excluded_lines": [], "start_line": 29}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 14, 15, 16, 18, 25, 26, 27, 29], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}, "classes": {"JunkBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "Junk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [30], "excluded_lines": [], "start_line": 25}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 14, 15, 16, 18, 25, 26, 27, 29], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}}, "app\\models\\llm_interaction.py": {"executed_lines": [1, 2, 3, 5, 7, 14, 16, 17, 18, 20, 21, 24, 25, 27, 28, 30], "summary": {"covered_lines": 16, "num_statements": 17, "percent_covered": 94.11764705882354, "percent_covered_display": "94.12", "missing_lines": 1, "excluded_lines": 3, "percent_statements_covered": 94.11764705882354, "percent_statements_covered_display": "94.12"}, "missing_lines": [31], "excluded_lines": [9, 10, 11], "functions": {"LLMInteraction.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31], "excluded_lines": [], "start_line": 30}, "": {"executed_lines": [1, 2, 3, 5, 7, 14, 16, 17, 18, 20, 21, 24, 25, 27, 28, 30], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11], "start_line": 1}}, "classes": {"LLMInteractionBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "LLMInteraction": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31], "excluded_lines": [], "start_line": 24}, "": {"executed_lines": [1, 2, 3, 5, 7, 14, 16, 17, 18, 20, 21, 24, 25, 27, 28, 30], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11], "start_line": 1}}}, "app\\models\\notification.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 15, 19, 20, 21, 22, 23, 26, 27, 28, 31, 32, 33, 34, 37, 38, 39, 42, 43, 44, 47, 48, 49, 50, 51, 54, 55, 56, 59, 61, 62, 64, 65, 67, 68, 71, 74, 76, 77, 80, 85, 86, 89, 90, 91, 92, 93, 96, 97, 98, 99], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12], "functions": {"": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 15, 19, 20, 21, 22, 23, 26, 27, 28, 31, 32, 33, 34, 37, 38, 39, 42, 43, 44, 47, 48, 49, 50, 51, 54, 55, 56, 59, 61, 62, 64, 65, 67, 68, 71, 74, 76, 77, 80, 85, 86, 89, 90, 91, 92, 93, 96, 97, 98, 99], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12], "start_line": 1}}, "classes": {"NotificationType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "NotificationPriority": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 47}, "NotificationBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "Notification": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "NotificationCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 85}, "NotificationRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 89}, "NotificationUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 96}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 15, 19, 20, 21, 22, 23, 26, 27, 28, 31, 32, 33, 34, 37, 38, 39, 42, 43, 44, 47, 48, 49, 50, 51, 54, 55, 56, 59, 61, 62, 64, 65, 67, 68, 71, 74, 76, 77, 80, 85, 86, 89, 90, 91, 92, 93, 96, 97, 98, 99], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12], "start_line": 1}}}, "app\\models\\objective.py": {"executed_lines": [1, 3, 5, 6, 12, 13, 14, 16, 20, 21], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 90.9090909090909, "percent_covered_display": "90.91", "missing_lines": 1, "excluded_lines": 2, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "90.91"}, "missing_lines": [17], "excluded_lines": [8, 9], "functions": {"ObjectiveBase.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [17], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [1, 3, 5, 6, 12, 13, 14, 16, 20, 21], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [8, 9], "start_line": 1}}, "classes": {"ObjectiveBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [17], "excluded_lines": [], "start_line": 12}, "Objective": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "": {"executed_lines": [1, 3, 5, 6, 12, 13, 14, 16, 20, 21], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [8, 9], "start_line": 1}}}, "app\\models\\outfit.py": {"executed_lines": [1, 3, 4, 6, 7, 8, 15, 16, 17, 19, 23, 24, 25, 26, 27], "summary": {"covered_lines": 15, "num_statements": 16, "percent_covered": 93.75, "percent_covered_display": "93.75", "missing_lines": 1, "excluded_lines": 3, "percent_statements_covered": 93.75, "percent_statements_covered_display": "93.75"}, "missing_lines": [20], "excluded_lines": [10, 11, 12], "functions": {"OutfitBase.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20], "excluded_lines": [], "start_line": 19}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 15, 16, 17, 19, 23, 24, 25, 26, 27], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11, 12], "start_line": 1}}, "classes": {"OutfitBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20], "excluded_lines": [], "start_line": 15}, "Outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 15, 16, 17, 19, 23, 24, 25, 26, 27], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11, 12], "start_line": 1}}}, "app\\models\\pregnancy.py": {"executed_lines": [1, 2, 4, 5, 6, 8, 9, 15, 16, 17, 18, 19, 20, 23, 26, 32, 39, 42, 43, 45, 46, 48, 49, 51, 52, 54, 55, 57, 60, 62, 63, 65, 66, 68, 69], "summary": {"covered_lines": 35, "num_statements": 37, "percent_covered": 94.5945945945946, "percent_covered_display": "94.59", "missing_lines": 2, "excluded_lines": 2, "percent_statements_covered": 94.5945945945946, "percent_statements_covered_display": "94.59"}, "missing_lines": [40, 58], "excluded_lines": [11, 12], "functions": {"Pregnancy.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40], "excluded_lines": [], "start_line": 39}, "Pregnancy.is_due": {"executed_lines": [45, 46], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "Pregnancy.progress_percentage": {"executed_lines": [51, 52, 54, 55, 57, 60], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "85.71", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "85.71"}, "missing_lines": [58], "excluded_lines": [], "start_line": 49}, "Pregnancy.time_remaining_seconds": {"executed_lines": [65, 66, 68, 69], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "": {"executed_lines": [1, 2, 4, 5, 6, 8, 9, 15, 16, 17, 18, 19, 20, 23, 26, 32, 39, 42, 43, 48, 49, 62, 63], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12], "start_line": 1}}, "classes": {"PregnancyBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "Pregnancy": {"executed_lines": [45, 46, 51, 52, 54, 55, 57, 60, 65, 66, 68, 69], "summary": {"covered_lines": 12, "num_statements": 14, "percent_covered": 85.71428571428571, "percent_covered_display": "85.71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "85.71"}, "missing_lines": [40, 58], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [1, 2, 4, 5, 6, 8, 9, 15, 16, 17, 18, 19, 20, 23, 26, 32, 39, 42, 43, 48, 49, 62, 63], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12], "start_line": 1}}}, "app\\models\\prompt.py": {"executed_lines": [1, 2, 4, 5, 7, 13, 15, 16, 17, 18, 20, 26, 30, 31], "summary": {"covered_lines": 14, "num_statements": 16, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 2, "excluded_lines": 2, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50"}, "missing_lines": [24, 27], "excluded_lines": [9, 10], "functions": {"PromptBase.generate_prompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24], "excluded_lines": [], "start_line": 20}, "PromptBase.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [27], "excluded_lines": [], "start_line": 26}, "": {"executed_lines": [1, 2, 4, 5, 7, 13, 15, 16, 17, 18, 20, 26, 30, 31], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10], "start_line": 1}}, "classes": {"PromptBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24, 27], "excluded_lines": [], "start_line": 13}, "Prompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "": {"executed_lines": [1, 2, 4, 5, 7, 13, 15, 16, 17, 18, 20, 26, 30, 31], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10], "start_line": 1}}}, "app\\models\\quest.py": {"executed_lines": [1, 3, 5, 6, 14, 15, 16, 17, 18, 19, 22, 23], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "functions": {"": {"executed_lines": [1, 3, 5, 6, 14, 15, 16, 17, 18, 19, 22, 23], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}, "classes": {"QuestBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "Quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 16, 17, 18, 19, 22, 23], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}}, "app\\models\\relationship.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 14, 15, 16, 17, 18, 21, 24, 30, 37], "summary": {"covered_lines": 15, "num_statements": 16, "percent_covered": 93.75, "percent_covered_display": "93.75", "missing_lines": 1, "excluded_lines": 2, "percent_statements_covered": 93.75, "percent_statements_covered_display": "93.75"}, "missing_lines": [38], "excluded_lines": [10, 11], "functions": {"Relationship.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [38], "excluded_lines": [], "start_line": 37}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 14, 15, 16, 17, 18, 21, 24, 30, 37], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}, "classes": {"RelationshipBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "Relationship": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [38], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 14, 15, 16, 17, 18, 21, 24, 30, 37], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}}, "app\\models\\room.py": {"executed_lines": [1, 3, 4, 6, 7, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 38, 39, 41, 42, 43, 45, 48, 49, 50, 52, 54], "summary": {"covered_lines": 38, "num_statements": 40, "percent_covered": 95.0, "percent_covered_display": "95.00", "missing_lines": 2, "excluded_lines": 3, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95.00"}, "missing_lines": [44, 55], "excluded_lines": [9, 10, 11], "functions": {"RoomBase.is_unique": {"executed_lines": [36], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "RoomBase.max_tier": {"executed_lines": [41, 42, 43, 45], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [44], "excluded_lines": [], "start_line": 39}, "Room.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [55], "excluded_lines": [], "start_line": 54}, "": {"executed_lines": [1, 3, 4, 6, 7, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 38, 39, 48, 49, 50, 52, 54], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11], "start_line": 1}}, "classes": {"RoomBase": {"executed_lines": [36, 41, 42, 43, 45], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83.33", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83.33"}, "missing_lines": [44], "excluded_lines": [], "start_line": 14}, "Room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [55], "excluded_lines": [], "start_line": 48}, "": {"executed_lines": [1, 3, 4, 6, 7, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 38, 39, 48, 49, 50, 52, 54], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11], "start_line": 1}}}, "app\\models\\storage.py": {"executed_lines": [1, 3, 4, 6, 15, 16, 17, 20, 21, 22, 24, 25, 26, 28], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 93.33333333333333, "percent_covered_display": "93.33", "missing_lines": 1, "excluded_lines": 5, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93.33"}, "missing_lines": [29], "excluded_lines": [8, 9, 10, 11, 12], "functions": {"Storage.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [29], "excluded_lines": [], "start_line": 28}, "": {"executed_lines": [1, 3, 4, 6, 15, 16, 17, 20, 21, 22, 24, 25, 26, 28], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 5, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [8, 9, 10, 11, 12], "start_line": 1}}, "classes": {"StorageBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "Storage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [29], "excluded_lines": [], "start_line": 20}, "": {"executed_lines": [1, 3, 4, 6, 15, 16, 17, 20, 21, 22, 24, 25, 26, 28], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 5, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [8, 9, 10, 11, 12], "start_line": 1}}}, "app\\models\\training.py": {"executed_lines": [3, 4, 5, 7, 8, 10, 11, 19, 22, 23, 24, 27, 30, 31, 32, 34, 35, 36, 38, 40, 41, 42, 44, 47, 51, 52, 53, 55, 57, 59, 61, 63, 65, 67, 71, 88], "summary": {"covered_lines": 36, "num_statements": 47, "percent_covered": 76.59574468085107, "percent_covered_display": "76.60", "missing_lines": 11, "excluded_lines": 4, "percent_statements_covered": 76.59574468085107, "percent_statements_covered_display": "76.60"}, "missing_lines": [69, 78, 79, 81, 82, 83, 85, 86, 90, 91, 92], "excluded_lines": [13, 14, 15, 16], "functions": {"Training.is_active": {"executed_lines": [57], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 55}, "Training.is_completed": {"executed_lines": [61], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 59}, "Training.is_cancelled": {"executed_lines": [65], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "Training.progress_percentage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [69], "excluded_lines": [], "start_line": 67}, "Training.time_remaining_seconds": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [78, 79, 81, 82, 83, 85, 86], "excluded_lines": [], "start_line": 71}, "Training.is_ready_to_complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [90, 91, 92], "excluded_lines": [], "start_line": 88}, "": {"executed_lines": [3, 4, 5, 7, 8, 10, 11, 19, 22, 23, 24, 27, 30, 31, 32, 34, 35, 36, 38, 40, 41, 42, 44, 47, 51, 52, 53, 55, 59, 63, 67, 71, 88], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [13, 14, 15, 16], "start_line": 1}}, "classes": {"TrainingStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "TrainingBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "Training": {"executed_lines": [57, 61, 65], "summary": {"covered_lines": 3, "num_statements": 14, "percent_covered": 21.428571428571427, "percent_covered_display": "21.43", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 21.428571428571427, "percent_statements_covered_display": "21.43"}, "missing_lines": [69, 78, 79, 81, 82, 83, 85, 86, 90, 91, 92], "excluded_lines": [], "start_line": 47}, "": {"executed_lines": [3, 4, 5, 7, 8, 10, 11, 19, 22, 23, 24, 27, 30, 31, 32, 34, 35, 36, 38, 40, 41, 42, 44, 47, 51, 52, 53, 55, 59, 63, 67, 71, 88], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [13, 14, 15, 16], "start_line": 1}}}, "app\\models\\user.py": {"executed_lines": [1, 2, 4, 5, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 27, 29, 32, 33, 35], "summary": {"covered_lines": 20, "num_statements": 21, "percent_covered": 95.23809523809524, "percent_covered_display": "95.24", "missing_lines": 1, "excluded_lines": 4, "percent_statements_covered": 95.23809523809524, "percent_statements_covered_display": "95.24"}, "missing_lines": [36], "excluded_lines": [9, 10, 11, 12], "functions": {"User.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36], "excluded_lines": [], "start_line": 35}, "": {"executed_lines": [1, 2, 4, 5, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 27, 29, 32, 33, 35], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11, 12], "start_line": 1}}, "classes": {"UserBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "User": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36], "excluded_lines": [], "start_line": 26}, "": {"executed_lines": [1, 2, 4, 5, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 27, 29, 32, 33, 35], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11, 12], "start_line": 1}}}, "app\\models\\user_profile.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 14, 15, 16, 17, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 32, 35, 36, 37, 39], "summary": {"covered_lines": 25, "num_statements": 26, "percent_covered": 96.15384615384616, "percent_covered_display": "96.15", "missing_lines": 1, "excluded_lines": 2, "percent_statements_covered": 96.15384615384616, "percent_statements_covered_display": "96.15"}, "missing_lines": [40], "excluded_lines": [10, 11], "functions": {"UserProfile.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40], "excluded_lines": [], "start_line": 39}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 14, 15, 16, 17, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 32, 35, 36, 37, 39], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}, "classes": {"UserProfileBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "UserProfile": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40], "excluded_lines": [], "start_line": 35}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 14, 15, 16, 17, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 32, 35, 36, 37, 39], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}}, "app\\models\\uuid_types.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 27, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 27, "excluded_lines": 3, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 8, 9, 11, 18, 30, 31, 37, 42, 43, 49, 51, 52, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 81, 84, 94, 98], "excluded_lines": [13, 14, 15], "functions": {"UUID7.__get_pydantic_core_schema__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [37], "excluded_lines": [], "start_line": 31}, "UUID7.__get_pydantic_json_schema__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [49], "excluded_lines": [], "start_line": 43}, "UUID7._validate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [64, 65, 66, 67, 68, 69, 70, 71], "excluded_lines": [], "start_line": 52}, "UUID7.timestamp_ms": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [81], "excluded_lines": [], "start_line": 74}, "uuid7": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [94], "excluded_lines": [], "start_line": 84}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 3, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 8, 9, 11, 18, 30, 31, 42, 43, 51, 52, 73, 74, 84, 98], "excluded_lines": [13, 14, 15], "start_line": 1}}, "classes": {"UUID7": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [37, 49, 64, 65, 66, 67, 68, 69, 70, 71, 81], "excluded_lines": [], "start_line": 18}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 3, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 8, 9, 11, 18, 30, 31, 42, 43, 51, 52, 73, 74, 84, 94, 98], "excluded_lines": [13, 14, 15], "start_line": 1}}}, "app\\models\\vault.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 22, 24, 25, 26, 29, 30, 31, 32, 33, 34, 37, 41, 46, 50, 51, 52, 54, 55, 56, 58, 63], "summary": {"covered_lines": 28, "num_statements": 29, "percent_covered": 96.55172413793103, "percent_covered_display": "96.55", "missing_lines": 1, "excluded_lines": 7, "percent_statements_covered": 96.55172413793103, "percent_statements_covered_display": "96.55"}, "missing_lines": [47], "excluded_lines": [13, 14, 15, 16, 17, 18, 19], "functions": {"VaultBase.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [47], "excluded_lines": [], "start_line": 46}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 22, 24, 25, 26, 29, 30, 31, 32, 33, 34, 37, 41, 46, 50, 51, 52, 54, 55, 56, 58, 63], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 7, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [13, 14, 15, 16, 17, 18, 19], "start_line": 1}}, "classes": {"VaultBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [47], "excluded_lines": [], "start_line": 22}, "Vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 50}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 22, 24, 25, 26, 29, 30, 31, 32, 33, 34, 37, 41, 46, 50, 51, 52, 54, 55, 56, 58, 63], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 7, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [13, 14, 15, 16, 17, 18, 19], "start_line": 1}}}, "app\\models\\vault_objective.py": {"executed_lines": [1, 2, 5, 6, 7, 8, 9, 10], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 5, 6, 7, 8, 9, 10], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"VaultObjectiveProgressLink": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 5}, "": {"executed_lines": [1, 2, 5, 6, 7, 8, 9, 10], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\vault_quest.py": {"executed_lines": [1, 2, 5, 6, 7, 8, 9], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 5, 6, 7, 8, 9], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"VaultQuestCompletionLink": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 5}, "": {"executed_lines": [1, 2, 5, 6, 7, 8, 9], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\weapon.py": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 51, 55, 56, 57, 58, 59], "summary": {"covered_lines": 26, "num_statements": 43, "percent_covered": 60.46511627906977, "percent_covered_display": "60.47", "missing_lines": 17, "excluded_lines": 3, "percent_statements_covered": 60.46511627906977, "percent_statements_covered_display": "60.47"}, "missing_lines": [31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 49, 52], "excluded_lines": [11, 12, 13], "functions": {"WeaponBase.validate_weapon_subtype": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 49], "excluded_lines": [], "start_line": 30}, "WeaponBase.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [52], "excluded_lines": [], "start_line": 51}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 51, 55, 56, 57, 58, 59], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12, 13], "start_line": 1}}, "classes": {"WeaponBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 49, 52], "excluded_lines": [], "start_line": 16}, "Weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 55}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 51, 55, 56, 57, 58, 59], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12, 13], "start_line": 1}}}, "app\\schemas\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\common.py": {"executed_lines": [1, 4, 5, 6, 7, 8, 9, 10, 13, 14, 15, 18, 19, 20, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 40, 41, 42, 43, 46, 47, 48, 49, 50, 51, 52, 53, 56, 57, 58, 61, 62, 63, 64, 67, 68, 69, 70, 71, 72, 75, 76, 77, 78, 81, 82, 83, 84, 85, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 103, 104, 105, 106, 109, 110, 111, 112, 115, 116, 117, 118, 121, 122, 123, 124, 127, 128, 129, 130, 131, 132, 133, 134, 137, 138, 139, 140, 141, 142, 145, 146, 147, 148, 151, 152, 153, 154, 155, 156, 157, 158, 161, 162, 163, 164, 165, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 182, 183, 186], "summary": {"covered_lines": 136, "num_statements": 136, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"CaseInsensitiveEnum._missing_": {"executed_lines": [7, 8, 9, 10], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 6}, "": {"executed_lines": [1, 4, 5, 6, 13, 14, 15, 18, 19, 20, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 40, 41, 42, 43, 46, 47, 48, 49, 50, 51, 52, 53, 56, 57, 58, 61, 62, 63, 64, 67, 68, 69, 70, 71, 72, 75, 76, 77, 78, 81, 82, 83, 84, 85, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 103, 104, 105, 106, 109, 110, 111, 112, 115, 116, 117, 118, 121, 122, 123, 124, 127, 128, 129, 130, 131, 132, 133, 134, 137, 138, 139, 140, 141, 142, 145, 146, 147, 148, 151, 152, 153, 154, 155, 156, 157, 158, 161, 162, 163, 164, 165, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 182, 183, 186], "summary": {"covered_lines": 132, "num_statements": 132, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CaseInsensitiveEnum": {"executed_lines": [7, 8, 9, 10], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 4}, "GameStatusEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "RadioModeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "DwellerStatusEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "DeathCauseEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "RarityEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "SPECIALEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "GenderEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 56}, "AgeGroupEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 61}, "RelationshipTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 67}, "PregnancyStatusEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 75}, "RaceEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 81}, "FactionEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 88}, "SynthTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 103}, "GhoulFeralnessEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 109}, "SuperMutantMutationEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 115}, "ItemTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 121}, "JunkTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 127}, "OutfitTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 137}, "RoomActionEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 145}, "RoomTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 151}, "WeaponTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 161}, "WeaponSubtypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 168}, "AIModelType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 180}, "": {"executed_lines": [1, 4, 5, 6, 13, 14, 15, 18, 19, 20, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 40, 41, 42, 43, 46, 47, 48, 49, 50, 51, 52, 53, 56, 57, 58, 61, 62, 63, 64, 67, 68, 69, 70, 71, 72, 75, 76, 77, 78, 81, 82, 83, 84, 85, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 103, 104, 105, 106, 109, 110, 111, 112, 115, 116, 117, 118, 121, 122, 123, 124, 127, 128, 129, 130, 131, 132, 133, 134, 137, 138, 139, 140, 141, 142, 145, 146, 147, 148, 151, 152, 153, 154, 155, 156, 157, 158, 161, 162, 163, 164, 165, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 182, 183, 186], "summary": {"covered_lines": 132, "num_statements": 132, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\dweller.py": {"executed_lines": [1, 3, 4, 6, 7, 18, 19, 20, 21, 22, 24, 34, 41, 42, 43, 45, 48, 49, 52, 53, 54, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 70, 71, 77, 78, 81, 86, 89, 92, 93, 94, 95, 96, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 116, 117, 118, 119, 120, 121, 122, 125, 126, 127, 133, 134, 135, 136, 139, 140, 143, 144, 146, 149, 150, 151, 152, 153, 155, 158, 159, 160, 161, 164, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 178, 181, 184, 185, 186, 189, 192, 193, 194, 195, 196, 197, 198], "summary": {"covered_lines": 112, "num_statements": 112, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 6, 7, 18, 19, 20, 21, 22, 24, 34, 41, 42, 43, 45, 48, 49, 52, 53, 54, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 70, 71, 77, 78, 81, 86, 89, 92, 93, 94, 95, 96, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 116, 117, 118, 119, 120, 121, 122, 125, 126, 127, 133, 134, 135, 136, 139, 140, 143, 144, 146, 149, 150, 151, 152, 153, 155, 158, 159, 160, 161, 164, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 178, 181, 184, 185, 186, 189, 192, 193, 194, 195, 196, 197, 198], "summary": {"covered_lines": 112, "num_statements": 112, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"DwellerCreateWithoutVaultID": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "DwellerCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "DwellerVisualAttributesInput": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 52}, "DwellerCreateCommonOverride": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 89}, "DwellerReadLess": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "DwellerRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 133}, "DwellerReadWithVaultID": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 139}, "DwellerReadWithRoomID": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 143}, "DwellerReadFull": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 149}, "DwellerUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 159}, "DwellerDeadRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 164}, "DwellerReviveResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 181}, "RevivalCostResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 189}, "": {"executed_lines": [1, 3, 4, 6, 7, 18, 19, 20, 21, 22, 24, 34, 41, 42, 43, 45, 48, 49, 52, 53, 54, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 70, 71, 77, 78, 81, 86, 89, 92, 93, 94, 95, 96, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 116, 117, 118, 119, 120, 121, 122, 125, 126, 127, 133, 134, 135, 136, 139, 140, 143, 144, 146, 149, 150, 151, 152, 153, 155, 158, 159, 160, 161, 164, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 178, 181, 184, 185, 186, 189, 192, 193, 194, 195, 196, 197, 198], "summary": {"covered_lines": 112, "num_statements": 112, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\dweller_ai.py": {"executed_lines": [3, 6, 9, 15, 18, 24, 28, 29, 30, 31, 32, 33, 34, 35, 41, 42, 45], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 6, 9, 15, 18, 24, 28, 29, 30, 31, 32, 33, 34, 35, 41, 42, 45], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"DwellerBackstory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 6}, "ExtendedBio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "DwellerVisualAttributes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "": {"executed_lines": [3, 6, 9, 15, 18, 24, 28, 29, 30, 31, 32, 33, 34, 35, 41, 42, 45], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\exploration.py": {"executed_lines": [3, 5, 6, 8, 11, 14, 17, 20, 21, 22, 25, 28, 29, 30, 31, 32, 35, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 58, 59, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, 80, 81, 82, 83, 84, 85, 86, 89, 92, 93, 94, 95, 96, 99, 102, 103, 106, 109, 112, 115, 116], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 5, 6, 8, 11, 14, 17, 20, 21, 22, 25, 28, 29, 30, 31, 32, 35, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 58, 59, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, 80, 81, 82, 83, 84, 85, 86, 89, 92, 93, 94, 95, 96, 99, 102, 103, 106, 109, 112, 115, 116], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ExplorationBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "ExplorationCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "ExplorationUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "ExplorationRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "ExplorationReadShort": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 62}, "ExplorationProgress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 77}, "ExplorationEvent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 89}, "ExplorationSendRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "ExplorationRecallRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 106}, "ExplorationCompleteResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 112}, "": {"executed_lines": [3, 5, 6, 8, 11, 14, 17, 20, 21, 22, 25, 28, 29, 30, 31, 32, 35, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 58, 59, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, 80, 81, 82, 83, 84, 85, 86, 89, 92, 93, 94, 95, 96, 99, 102, 103, 106, 109, 112, 115, 116], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\exploration_event.py": {"executed_lines": [3, 5, 8, 11, 12, 13, 16, 19, 20, 21, 22, 23, 26, 29, 32, 37, 40, 43, 44, 45, 48, 51, 52, 53, 54, 57, 60, 61, 62, 63, 64, 67, 70, 71, 72, 75, 78, 79, 80, 83, 86, 87, 88, 91, 94, 95, 96, 99, 102, 103, 104, 105, 106, 107, 108, 109, 113], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 5, 8, 11, 12, 13, 16, 19, 20, 21, 22, 23, 26, 29, 32, 37, 40, 43, 44, 45, 48, 51, 52, 53, 54, 57, 60, 61, 62, 63, 64, 67, 70, 71, 72, 75, 78, 79, 80, 83, 86, 87, 88, 91, 94, 95, 96, 99, 102, 103, 104, 105, 106, 107, 108, 109, 113], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ItemSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 8}, "WeaponSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "OutfitSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "JunkSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "LootSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "EnemySchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "CombatEventSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "LootEventSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 67}, "DangerEventSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 75}, "RestEventSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "CombatOutcomeSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 91}, "RewardsSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "": {"executed_lines": [3, 5, 8, 11, 12, 13, 16, 19, 20, 21, 22, 23, 26, 29, 32, 37, 40, 43, 44, 45, 48, 51, 52, 53, 54, 57, 60, 61, 62, 63, 64, 67, 70, 71, 72, 75, 78, 79, 80, 83, 86, 87, 88, 91, 94, 95, 96, 99, 102, 103, 104, 105, 106, 107, 108, 109, 113], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\incident.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [3, 5, 7, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 34, 37, 40, 41, 42, 43, 44], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [3, 5, 7, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 34, 37, 40, 41, 42, 43, 44], "excluded_lines": [], "start_line": 1}}, "classes": {"IncidentRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "IncidentResolveRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "IncidentResolveResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 37}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [3, 5, 7, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 34, 37, 40, 41, 42, 43, 44], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\item.py": {"executed_lines": [1, 3, 4, 7, 8, 11, 12, 15, 16, 17], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 7, 8, 11, 12, 15, 16, 17], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ItemCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 7}, "ItemRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "ItemUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [1, 3, 4, 7, 8, 11, 12, 15, 16, 17], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\junk.py": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 14, 15, 16, 17, 20, 21, 22], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 14, 15, 16, 17, 20, 21, 22], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"JunkCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "JunkRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "JunkUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 14, 15, 16, 17, 20, 21, 22], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\llm_interaction.py": {"executed_lines": [1, 3, 5, 8, 9, 12, 13, 14, 15], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 8, 9, 12, 13, 14, 15], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"LLMInteractionCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 8}, "LLMInteractionRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "": {"executed_lines": [1, 3, 5, 8, 9, 12, 13, 14, 15], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\objective.py": {"executed_lines": [1, 3, 4, 7, 8, 11, 12, 13, 14, 15, 18, 19, 20], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 7, 8, 11, 12, 13, 14, 15, 18, 19, 20], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ObjectiveCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 7}, "ObjectiveRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "ObjectiveUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "": {"executed_lines": [1, 3, 4, 7, 8, 11, 12, 13, 14, 15, 18, 19, 20], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\outfit.py": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 24, 25, 26, 27, 30, 31, 32, 33], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 24, 25, 26, 27, 30, 31, 32, 33], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"SPECIALOutfitCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "OutfitCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "OutfitRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "OutfitUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 24, 25, 26, 27, 30, 31, 32, 33], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\pregnancy.py": {"executed_lines": [3, 5, 6, 8, 9, 12, 15, 16, 19, 22, 23, 24, 25, 27, 30, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 46, 49, 50, 51], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 5, 6, 8, 9, 12, 15, 16, 19, 22, 23, 24, 25, 27, 30, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 46, 49, 50, 51], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"PregnancyCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "PregnancyRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "PregnancyProgress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "DeliveryResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "": {"executed_lines": [3, 5, 6, 8, 9, 12, 15, 16, 19, 22, 23, 24, 25, 27, 30, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 46, 49, 50, 51], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\prompt.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 4, 7, 8, 11, 12, 15, 16, 17], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 4, 7, 8, 11, 12, 15, 16, 17], "excluded_lines": [], "start_line": 1}}, "classes": {"PromptCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 7}, "PromptRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "PromptUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 4, 7, 8, 11, 12, 15, 16, 17], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\quest.py": {"executed_lines": [1, 2, 4, 5, 8, 9, 12, 13, 14, 15, 18, 19, 20, 21, 24, 25, 26, 29, 32, 35, 38, 39, 40, 41, 42, 44, 47, 50, 51], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 4, 5, 8, 9, 12, 13, 14, 15, 18, 19, 20, 21, 24, 25, 26, 29, 32, 35, 38, 39, 40, 41, 42, 44, 47, 50, 51], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"QuestCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 8}, "QuestRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "QuestReadShort": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "QuestUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "QuestObjectiveJSON": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "QuestJSON": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "QuestChainJSON": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 47}, "": {"executed_lines": [1, 2, 4, 5, 8, 9, 12, 13, 14, 15, 18, 19, 20, 21, 24, 25, 26, 29, 32, 35, 38, 39, 40, 41, 42, 44, 47, 50, 51], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\radio.py": {"executed_lines": [3, 4, 6, 9, 12, 13, 16, 19, 20, 21, 22, 23, 24, 25, 26, 29, 32, 37, 40, 41, 42], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 4, 6, 9, 12, 13, 16, 19, 20, 21, 22, 23, 24, 25, 26, 29, 32, 37, 40, 41, 42], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"SpeedupMultiplier": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "RadioStatsRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "ManualRecruitRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "RecruitmentResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 37}, "": {"executed_lines": [3, 4, 6, 9, 12, 13, 16, 19, 20, 21, 22, 23, 24, 25, 26, 29, 32, 37, 40, 41, 42], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\relationship.py": {"executed_lines": [3, 4, 6, 7, 10, 13, 14, 17, 20, 21, 23, 26, 29, 31, 34, 37, 38, 39, 40, 41, 42, 43, 46, 49], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 4, 6, 7, 10, 13, 14, 17, 20, 21, 23, 26, 29, 31, 34, 37, 38, 39, 40, 41, 42, 43, 46, 49], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RelationshipCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "RelationshipUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "RelationshipRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "CompatibilityScore": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "RelationshipAction": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "": {"executed_lines": [3, 4, 6, 7, 10, 13, 14, 17, 20, 21, 23, 26, 29, 31, 34, 37, 38, 39, 40, 41, 42, 43, 46, 49], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\room.py": {"executed_lines": [1, 3, 5, 6, 9, 10, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 9, 10, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RoomCreateWithoutVaultID": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "RoomCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "RoomRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "RoomUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "": {"executed_lines": [1, 3, 5, 6, 9, 10, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\token.py": {"executed_lines": [1, 4, 5, 6, 7, 10, 11], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 4, 5, 6, 7, 10, 11], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"Token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 4}, "TokenPayload": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [1, 4, 5, 6, 7, 10, 11], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\training.py": {"executed_lines": [3, 5, 7, 10, 14, 18, 21, 22, 23, 25, 26, 29, 32, 33, 36, 39, 40, 41, 42, 44, 45], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 5, 7, 10, 14, 18, 21, 22, 23, 25, 26, 29, 32, 33, 36, 39, 40, 41, 42, 44, 45], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TrainingCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "TrainingUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "TrainingRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "TrainingRead.Config": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "TrainingStartRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "TrainingProgress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 36}, "TrainingProgress.Config": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 44}, "": {"executed_lines": [3, 5, 7, 10, 14, 18, 21, 22, 23, 25, 26, 29, 32, 33, 36, 39, 40, 41, 42, 44, 45], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\user.py": {"executed_lines": [1, 2, 4, 6, 7, 13, 14, 17, 18, 19, 20, 23, 24, 25, 26, 29, 30, 33, 34, 35], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10], "functions": {"": {"executed_lines": [1, 2, 4, 6, 7, 13, 14, 17, 18, 19, 20, 23, 24, 25, 26, 29, 30, 33, 34, 35], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10], "start_line": 1}}, "classes": {"UserCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "UserRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "UserWithTokens": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "UserReadWithVaults": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "UserUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "": {"executed_lines": [1, 2, 4, 6, 7, 13, 14, 17, 18, 19, 20, 23, 24, 25, 26, 29, 30, 33, 34, 35], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10], "start_line": 1}}}, "app\\schemas\\user_profile.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 27, 28, 29, 30], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 27, 28, 29, 30], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ProfileRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "ProfileUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "ProfileUpdateStatistics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 27, 28, 29, 30], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\vault.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 11, 12, 15, 16, 19, 20, 23, 24, 25, 26, 27, 30, 31, 34, 35, 36, 39, 40, 41], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 11, 12, 15, 16, 19, 20, 23, 24, 25, 26, 27, 30, 31, 34, 35, 36, 39, 40, 41], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"VaultCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "VaultCreateWithUserID": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "VaultNumber": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "VaultRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "VaultReadWithUser": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "VaultReadWithNumbers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "VaultUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 11, 12, 15, 16, 19, 20, 23, 24, 25, 26, 27, 30, 31, 34, 35, 36, 39, 40, 41], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\weapon.py": {"executed_lines": [1, 3, 5, 6, 9, 10, 13, 14, 15, 16, 19, 20, 21, 22], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 9, 10, 13, 14, 15, 16, 19, 20, 21, 22], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"WeaponCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "WeaponRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "WeaponUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "": {"executed_lines": [1, 3, 5, 6, 9, 10, 13, 14, 15, 16, 19, 20, 21, 22], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\breeding_service.py": {"executed_lines": [3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 22, 24, 27, 30, 31, 46, 49, 51, 52, 54, 57, 64, 67, 68, 70, 71, 73, 75, 76, 79, 80, 83, 84, 85, 86, 89, 90, 92, 96, 97, 100, 104, 106, 110, 111, 115, 118, 121, 123, 127, 128, 131, 136, 137, 141, 143, 144, 160, 161, 163, 171, 172, 173, 175, 177, 179, 180, 194, 202, 204, 205, 223, 224, 226, 227, 228, 230, 231, 232, 235, 236, 238, 239, 241, 246, 247, 248, 251, 252, 255, 257, 273, 274, 277, 278, 279, 280, 283, 284, 285, 286, 288, 291, 292, 294, 295, 296, 298, 300, 301, 312, 314, 315, 316, 317, 320, 323, 326, 329, 330, 332, 334, 336, 337, 349, 351, 352, 354, 357, 358, 360, 362, 363, 377, 379, 387, 389, 390, 392, 395, 396, 397, 398, 399, 400, 402, 403, 405, 407, 409, 410, 412, 414, 415, 429, 436, 439], "summary": {"covered_lines": 158, "num_statements": 165, "percent_covered": 95.75757575757575, "percent_covered_display": "95.76", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 95.75757575757575, "percent_statements_covered_display": "95.76"}, "missing_lines": [93, 101, 116, 124, 125, 242, 243], "excluded_lines": [], "functions": {"BreedingService.check_for_conception": {"executed_lines": [46, 49, 51, 52, 54, 57, 64, 67, 68, 70, 71, 73, 75, 76, 79, 80, 83, 84, 85, 86, 89, 90, 92, 96, 97, 100, 104, 106, 110, 111, 115, 118, 121, 123, 127, 128, 131, 136, 137, 141], "summary": {"covered_lines": 40, "num_statements": 45, "percent_covered": 88.88888888888889, "percent_covered_display": "88.89", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "88.89"}, "missing_lines": [93, 101, 116, 124, 125], "excluded_lines": [], "start_line": 31}, "BreedingService.create_pregnancy": {"executed_lines": [160, 161, 163, 171, 172, 173, 175, 177], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 144}, "BreedingService.check_due_pregnancies": {"executed_lines": [194, 202], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 180}, "BreedingService.deliver_baby": {"executed_lines": [223, 224, 226, 227, 228, 230, 231, 232, 235, 236, 238, 239, 241, 246, 247, 248, 251, 252, 255, 257, 273, 274, 277, 278, 279, 280, 283, 284, 285, 286, 288, 291, 292, 294, 295, 296, 298], "summary": {"covered_lines": 37, "num_statements": 39, "percent_covered": 94.87179487179488, "percent_covered_display": "94.87", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 94.87179487179488, "percent_statements_covered_display": "94.87"}, "missing_lines": [242, 243], "excluded_lines": [], "start_line": 205}, "BreedingService._calculate_inherited_stats": {"executed_lines": [312, 314, 315, 316, 317, 320, 323, 326, 329, 330, 332, 334], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 301}, "BreedingService._calculate_inherited_rarity": {"executed_lines": [349, 351, 352, 354, 357, 358, 360], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 337}, "BreedingService.age_children": {"executed_lines": [377, 379, 387, 389, 390, 392, 395, 396, 397, 398, 399, 400, 402, 403, 405, 407, 409, 410, 412], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 363}, "BreedingService.get_active_pregnancies": {"executed_lines": [429, 436], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 415}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 22, 24, 27, 30, 31, 143, 144, 179, 180, 204, 205, 300, 301, 336, 337, 362, 363, 414, 415, 439], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"BreedingService": {"executed_lines": [46, 49, 51, 52, 54, 57, 64, 67, 68, 70, 71, 73, 75, 76, 79, 80, 83, 84, 85, 86, 89, 90, 92, 96, 97, 100, 104, 106, 110, 111, 115, 118, 121, 123, 127, 128, 131, 136, 137, 141, 160, 161, 163, 171, 172, 173, 175, 177, 194, 202, 223, 224, 226, 227, 228, 230, 231, 232, 235, 236, 238, 239, 241, 246, 247, 248, 251, 252, 255, 257, 273, 274, 277, 278, 279, 280, 283, 284, 285, 286, 288, 291, 292, 294, 295, 296, 298, 312, 314, 315, 316, 317, 320, 323, 326, 329, 330, 332, 334, 349, 351, 352, 354, 357, 358, 360, 377, 379, 387, 389, 390, 392, 395, 396, 397, 398, 399, 400, 402, 403, 405, 407, 409, 410, 412, 429, 436], "summary": {"covered_lines": 127, "num_statements": 134, "percent_covered": 94.77611940298507, "percent_covered_display": "94.78", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 94.77611940298507, "percent_statements_covered_display": "94.78"}, "missing_lines": [93, 101, 116, 124, 125, 242, 243], "excluded_lines": [], "start_line": 27}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 22, 24, 27, 30, 31, 143, 144, 179, 180, 204, 205, 300, 301, 336, 337, 362, 363, 414, 415, 439], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\conversation_service.py": {"executed_lines": [3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 24, 30, 33, 34, 35, 37, 38, 48, 49, 51, 53, 54, 65, 66, 73, 77, 93, 114, 218], "summary": {"covered_lines": 35, "num_statements": 61, "percent_covered": 57.377049180327866, "percent_covered_display": "57.38", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 57.377049180327866, "percent_statements_covered_display": "57.38"}, "missing_lines": [115, 116, 117, 120, 121, 122, 125, 126, 127, 128, 137, 140, 143, 144, 152, 153, 154, 161, 162, 163, 164, 173, 179, 182, 196, 208], "excluded_lines": [], "functions": {"ConversationService.__init__": {"executed_lines": [34, 35], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "ConversationService._select_voice_for_gender": {"executed_lines": [48, 49, 51], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "ConversationService._build_dweller_prompt": {"executed_lines": [65, 66, 73, 77], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "ConversationService.process_audio_message": {"executed_lines": [114], "summary": {"covered_lines": 1, "num_statements": 27, "percent_covered": 3.7037037037037037, "percent_covered_display": "3.70", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 3.7037037037037037, "percent_statements_covered_display": "3.70"}, "missing_lines": [115, 116, 117, 120, 121, 122, 125, 126, 127, 128, 137, 140, 143, 144, 152, 153, 154, 161, 162, 163, 164, 173, 179, 182, 196, 208], "excluded_lines": [], "start_line": 93}, "": {"executed_lines": [3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 24, 30, 33, 37, 38, 53, 54, 93, 218], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ConversationService": {"executed_lines": [34, 35, 48, 49, 51, 65, 66, 73, 77, 114], "summary": {"covered_lines": 10, "num_statements": 36, "percent_covered": 27.77777777777778, "percent_covered_display": "27.78", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 27.77777777777778, "percent_statements_covered_display": "27.78"}, "missing_lines": [115, 116, 117, 120, 121, 122, 125, 126, 127, 128, 137, 140, 143, 144, 152, 153, 154, 161, 162, 163, 164, 173, 179, 182, 196, 208], "excluded_lines": [], "start_line": 30}, "": {"executed_lines": [3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 24, 30, 33, 37, 38, 53, 54, 93, 218], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\death_service.py": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 22, 25, 77, 150, 164, 182, 221, 262, 293, 318, 334], "summary": {"covered_lines": 25, "num_statements": 97, "percent_covered": 25.77319587628866, "percent_covered_display": "25.77", "missing_lines": 72, "excluded_lines": 0, "percent_statements_covered": 25.77319587628866, "percent_statements_covered_display": "25.77"}, "missing_lines": [42, 43, 46, 47, 50, 65, 67, 75, 94, 96, 97, 99, 100, 103, 104, 105, 107, 108, 109, 115, 117, 124, 127, 140, 148, 162, 171, 172, 174, 175, 177, 178, 180, 191, 194, 201, 202, 204, 205, 206, 211, 217, 219, 229, 230, 231, 246, 248, 264, 267, 268, 269, 271, 272, 275, 281, 282, 285, 288, 289, 291, 300, 301, 302, 305, 313, 314, 315, 316, 320, 322, 330], "excluded_lines": [], "functions": {"DeathService.mark_as_dead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42, 43, 46, 47, 50, 65, 67, 75], "excluded_lines": [], "start_line": 25}, "DeathService.revive_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [94, 96, 97, 99, 100, 103, 104, 105, 107, 108, 109, 115, 117, 124, 127, 140, 148], "excluded_lines": [], "start_line": 77}, "DeathService.get_revival_cost": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [162], "excluded_lines": [], "start_line": 150}, "DeathService.get_days_until_permanent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [171, 172, 174, 175, 177, 178, 180], "excluded_lines": [], "start_line": 164}, "DeathService.check_and_mark_permanent_deaths": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [191, 194, 201, 202, 204, 205, 206, 211, 217, 219], "excluded_lines": [], "start_line": 182}, "DeathService.get_death_statistics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [229, 230, 231, 246, 248], "excluded_lines": [], "start_line": 221}, "DeathService._get_dead_dweller_counts": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [264, 267, 268, 269, 271, 272, 275, 281, 282, 285, 288, 289, 291], "excluded_lines": [], "start_line": 262}, "DeathService._increment_death_stats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [300, 301, 302, 305, 313, 314, 315, 316], "excluded_lines": [], "start_line": 293}, "DeathService._generate_epitaph": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [320, 322, 330], "excluded_lines": [], "start_line": 318}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 22, 25, 77, 150, 164, 182, 221, 262, 293, 318, 334], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"DeathService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 72, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 72, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42, 43, 46, 47, 50, 65, 67, 75, 94, 96, 97, 99, 100, 103, 104, 105, 107, 108, 109, 115, 117, 124, 127, 140, 148, 162, 171, 172, 174, 175, 177, 178, 180, 191, 194, 201, 202, 204, 205, 206, 211, 217, 219, 229, 230, 231, 246, 248, 264, 267, 268, 269, 271, 272, 275, 281, 282, 285, 288, 289, 291, 300, 301, 302, 305, 313, 314, 315, 316, 320, 322, 330], "excluded_lines": [], "start_line": 22}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 22, 25, 77, 150, 164, 182, 221, 262, 293, 318, 334], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\dweller_ai.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 28, 31, 32, 33, 34, 36, 86, 116, 160, 213, 274, 315, 341], "summary": {"covered_lines": 31, "num_statements": 116, "percent_covered": 26.724137931034484, "percent_covered_display": "26.72", "missing_lines": 85, "excluded_lines": 0, "percent_statements_covered": 26.724137931034484, "percent_statements_covered_display": "26.72"}, "missing_lines": [46, 47, 48, 50, 51, 54, 62, 63, 66, 67, 68, 69, 71, 73, 79, 84, 88, 89, 90, 93, 96, 97, 99, 101, 103, 109, 114, 125, 126, 127, 130, 138, 143, 145, 147, 153, 158, 169, 170, 171, 173, 174, 175, 180, 188, 189, 192, 196, 200, 206, 211, 226, 227, 228, 230, 231, 232, 237, 238, 239, 240, 241, 242, 244, 251, 252, 253, 255, 261, 267, 272, 285, 290, 306, 308, 323, 324, 325, 327, 328, 331, 332, 335, 336, 338], "excluded_lines": [], "functions": {"DwellerAIService.__init__": {"executed_lines": [33, 34], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "DwellerAIService.generate_backstory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [46, 47, 48, 50, 51, 54, 62, 63, 66, 67, 68, 69, 71, 73, 79, 84], "excluded_lines": [], "start_line": 36}, "DwellerAIService.extend_bio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [88, 89, 90, 93, 96, 97, 99, 101, 103, 109, 114], "excluded_lines": [], "start_line": 86}, "DwellerAIService.generate_visual_attributes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [125, 126, 127, 130, 138, 143, 145, 147, 153, 158], "excluded_lines": [], "start_line": 116}, "DwellerAIService.generate_photo": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [169, 170, 171, 173, 174, 175, 180, 188, 189, 192, 196, 200, 206, 211], "excluded_lines": [], "start_line": 160}, "DwellerAIService.generate_audio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 20, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [226, 227, 228, 230, 231, 232, 237, 238, 239, 240, 241, 242, 244, 251, 252, 253, 255, 261, 267, 272], "excluded_lines": [], "start_line": 213}, "DwellerAIService.generate_dweller_avatar": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [285, 290, 306, 308], "excluded_lines": [], "start_line": 274}, "DwellerAIService.dweller_generate_pipeline": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [323, 324, 325, 327, 328, 331, 332, 335, 336, 338], "excluded_lines": [], "start_line": 315}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 28, 31, 32, 36, 86, 116, 160, 213, 274, 315, 341], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"DwellerAIService": {"executed_lines": [33, 34], "summary": {"covered_lines": 2, "num_statements": 87, "percent_covered": 2.2988505747126435, "percent_covered_display": "2.30", "missing_lines": 85, "excluded_lines": 0, "percent_statements_covered": 2.2988505747126435, "percent_statements_covered_display": "2.30"}, "missing_lines": [46, 47, 48, 50, 51, 54, 62, 63, 66, 67, 68, 69, 71, 73, 79, 84, 88, 89, 90, 93, 96, 97, 99, 101, 103, 109, 114, 125, 126, 127, 130, 138, 143, 145, 147, 153, 158, 169, 170, 171, 173, 174, 175, 180, 188, 189, 192, 196, 200, 206, 211, 226, 227, 228, 230, 231, 232, 237, 238, 239, 240, 241, 242, 244, 251, 252, 253, 255, 261, 267, 272, 285, 290, 306, 308, 323, 324, 325, 327, 328, 331, 332, 335, 336, 338], "excluded_lines": [], "start_line": 31}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 28, 31, 32, 36, 86, 116, 160, 213, 274, 315, 341], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\__init__.py": {"executed_lines": [3, 6, 8], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 6, 8], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 6, 8], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\combat_calculator.py": {"executed_lines": [3, 5, 6, 7, 8, 11, 14, 24, 25, 29, 30, 32, 35, 37, 49, 52, 53, 58, 60, 62, 63, 64, 67, 68, 69, 70, 74], "summary": {"covered_lines": 27, "num_statements": 29, "percent_covered": 93.10344827586206, "percent_covered_display": "93.10", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 93.10344827586206, "percent_statements_covered_display": "93.10"}, "missing_lines": [26, 33], "excluded_lines": [], "functions": {"CombatCalculator.select_enemy": {"executed_lines": [24, 25, 29, 30, 32, 35], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [26, 33], "excluded_lines": [], "start_line": 14}, "CombatCalculator.calculate_combat_outcome": {"executed_lines": [49, 52, 53, 58, 60, 62, 63, 64, 67, 68, 69, 70], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 37}, "": {"executed_lines": [3, 5, 6, 7, 8, 11, 14, 37, 74], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CombatCalculator": {"executed_lines": [24, 25, 29, 30, 32, 35, 49, 52, 53, 58, 60, 62, 63, 64, 67, 68, 69, 70], "summary": {"covered_lines": 18, "num_statements": 20, "percent_covered": 90.0, "percent_covered_display": "90.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90.00"}, "missing_lines": [26, 33], "excluded_lines": [], "start_line": 11}, "": {"executed_lines": [3, 5, 6, 7, 8, 11, 14, 37, 74], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\coordinator.py": {"executed_lines": [3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 24, 27, 38, 40, 41, 45, 46, 47, 49, 54, 57, 58, 60, 61, 63, 64, 67, 70, 71, 74, 75, 76, 77, 79, 81, 82, 83, 84, 87, 95, 96, 98, 104, 106, 107, 109, 117, 118, 120, 122, 124, 125, 126, 128, 139, 141, 142, 145, 148, 151, 153, 164, 166, 167, 170, 173, 176, 179, 182, 184, 186, 187, 188, 190, 192, 194, 196, 197, 198, 199, 200, 205, 207, 209, 213, 214, 217, 220, 221, 222, 223, 226, 227, 229, 230, 233, 236, 238, 240, 249, 251, 252, 316], "summary": {"covered_lines": 108, "num_statements": 135, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [111, 112, 114, 202, 255, 258, 259, 261, 262, 263, 264, 267, 268, 269, 270, 272, 274, 275, 276, 287, 289, 291, 292, 293, 301, 305, 312], "excluded_lines": [], "functions": {"ExplorationCoordinator.process_event": {"executed_lines": [38, 40, 41, 45, 46, 47, 49, 54, 57, 58, 60, 61, 63, 64, 67, 70, 71, 74, 75, 76, 77], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "ExplorationCoordinator._handle_loot_event": {"executed_lines": [81, 82, 83, 84, 87, 95, 96], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 79}, "ExplorationCoordinator._apply_health_loss": {"executed_lines": [104, 106, 107, 109, 117, 118], "summary": {"covered_lines": 6, "num_statements": 9, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [111, 112, 114], "excluded_lines": [], "start_line": 98}, "ExplorationCoordinator._apply_health_restoration": {"executed_lines": [122, 124, 125, 126], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 120}, "ExplorationCoordinator.complete_exploration": {"executed_lines": [139, 141, 142, 145, 148, 151], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 128}, "ExplorationCoordinator.recall_exploration": {"executed_lines": [164, 166, 167, 170, 173, 176, 179, 182], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 153}, "ExplorationCoordinator._update_dweller_status_after_return": {"executed_lines": [186, 187, 188, 190, 192, 194, 196, 197, 198, 199, 200, 205, 207], "summary": {"covered_lines": 13, "num_statements": 14, "percent_covered": 92.85714285714286, "percent_covered_display": "92.86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.85714285714286, "percent_statements_covered_display": "92.86"}, "missing_lines": [202], "excluded_lines": [], "start_line": 184}, "ExplorationCoordinator._apply_rewards": {"executed_lines": [213, 214, 217, 220, 221, 222, 223, 226, 227, 229, 230, 233, 236, 238, 240], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 209}, "ExplorationCoordinator._transfer_loot_to_storage": {"executed_lines": [251, 252], "summary": {"covered_lines": 2, "num_statements": 25, "percent_covered": 8.0, "percent_covered_display": "8.00", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 8.0, "percent_statements_covered_display": "8.00"}, "missing_lines": [255, 258, 259, 261, 262, 263, 264, 267, 268, 269, 270, 272, 274, 275, 276, 287, 289, 291, 292, 293, 301, 305, 312], "excluded_lines": [], "start_line": 249}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 24, 27, 79, 98, 120, 128, 153, 184, 209, 249, 316], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ExplorationCoordinator": {"executed_lines": [38, 40, 41, 45, 46, 47, 49, 54, 57, 58, 60, 61, 63, 64, 67, 70, 71, 74, 75, 76, 77, 81, 82, 83, 84, 87, 95, 96, 104, 106, 107, 109, 117, 118, 122, 124, 125, 126, 139, 141, 142, 145, 148, 151, 164, 166, 167, 170, 173, 176, 179, 182, 186, 187, 188, 190, 192, 194, 196, 197, 198, 199, 200, 205, 207, 213, 214, 217, 220, 221, 222, 223, 226, 227, 229, 230, 233, 236, 238, 240, 251, 252], "summary": {"covered_lines": 82, "num_statements": 109, "percent_covered": 75.22935779816514, "percent_covered_display": "75.23", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 75.22935779816514, "percent_statements_covered_display": "75.23"}, "missing_lines": [111, 112, 114, 202, 255, 258, 259, 261, 262, 263, 264, 267, 268, 269, 270, 272, 274, 275, 276, 287, 289, 291, 292, 293, 301, 305, 312], "excluded_lines": [], "start_line": 24}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 24, 27, 79, 98, 120, 128, 153, 184, 209, 249, 316], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\data_loader.py": {"executed_lines": [3, 4, 5, 7, 10, 11, 12, 15, 16, 18, 19, 22, 23, 25, 28, 29, 31, 32, 35, 36, 39, 40, 42, 43, 46, 47, 50, 51, 53, 54, 57, 58, 61, 62, 76, 87], "summary": {"covered_lines": 36, "num_statements": 50, "percent_covered": 72.0, "percent_covered_display": "72.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 72.0, "percent_statements_covered_display": "72.00"}, "missing_lines": [20, 33, 44, 55, 64, 65, 66, 68, 69, 70, 71, 73, 78, 89], "excluded_lines": [], "functions": {"load_enemies": {"executed_lines": [18, 19, 22, 23, 25], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83.33", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83.33"}, "missing_lines": [20], "excluded_lines": [], "start_line": 16}, "load_event_templates": {"executed_lines": [31, 32, 35, 36], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [33], "excluded_lines": [], "start_line": 29}, "load_junk_items": {"executed_lines": [42, 43, 46, 47], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [44], "excluded_lines": [], "start_line": 40}, "load_weapons": {"executed_lines": [53, 54, 57, 58], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [55], "excluded_lines": [], "start_line": 51}, "load_outfits": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [64, 65, 66, 68, 69, 70, 71, 73], "excluded_lines": [], "start_line": 62}, "_get_fallback_enemies": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [78], "excluded_lines": [], "start_line": 76}, "_get_fallback_templates": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [89], "excluded_lines": [], "start_line": 87}, "": {"executed_lines": [3, 4, 5, 7, 10, 11, 12, 15, 16, 28, 29, 39, 40, 50, 51, 61, 62, 76, 87], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 4, 5, 7, 10, 11, 12, 15, 16, 18, 19, 22, 23, 25, 28, 29, 31, 32, 35, 36, 39, 40, 42, 43, 46, 47, 50, 51, 53, 54, 57, 58, 61, 62, 76, 87], "summary": {"covered_lines": 36, "num_statements": 50, "percent_covered": 72.0, "percent_covered_display": "72.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 72.0, "percent_statements_covered_display": "72.00"}, "missing_lines": [20, 33, 44, 55, 64, 65, 66, 68, 69, 70, 71, 73, 78, 89], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\event_generator.py": {"executed_lines": [3, 4, 6, 7, 8, 16, 17, 18, 21, 24, 34, 35, 37, 40, 41, 42, 43, 45, 47, 50, 51, 52, 54, 64, 65, 68, 69, 76, 83, 84, 85, 86, 87, 88, 89, 91, 93, 94, 95, 97, 104, 106, 107, 110, 111, 113, 114, 115, 117, 122, 124, 125, 127, 128, 129, 131, 133, 135, 136, 139, 140, 142, 143, 144, 146, 150], "summary": {"covered_lines": 66, "num_statements": 66, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"EventGenerator.can_generate_event": {"executed_lines": [34, 35, 37, 40, 41, 42, 43, 45, 47, 50, 51, 52], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "EventGenerator.generate_event": {"executed_lines": [64, 65, 68, 69, 76, 83, 84, 85, 86, 87, 88, 89], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "EventGenerator._generate_combat_event": {"executed_lines": [93, 94, 95, 97], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 91}, "EventGenerator._generate_loot_event": {"executed_lines": [106, 107, 110, 111, 113, 114, 115, 117], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 104}, "EventGenerator._generate_danger_event": {"executed_lines": [124, 125, 127, 128, 129, 131], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 122}, "EventGenerator._generate_rest_event": {"executed_lines": [135, 136, 139, 140, 142, 143, 144, 146], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 133}, "": {"executed_lines": [3, 4, 6, 7, 8, 16, 17, 18, 21, 24, 54, 91, 104, 122, 133, 150], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"EventGenerator": {"executed_lines": [34, 35, 37, 40, 41, 42, 43, 45, 47, 50, 51, 52, 64, 65, 68, 69, 76, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 97, 106, 107, 110, 111, 113, 114, 115, 117, 124, 125, 127, 128, 129, 131, 135, 136, 139, 140, 142, 143, 144, 146], "summary": {"covered_lines": 50, "num_statements": 50, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [3, 4, 6, 7, 8, 16, 17, 18, 21, 24, 54, 91, 104, 122, 133, 150], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\loot_calculator.py": {"executed_lines": [3, 5, 6, 7, 10, 13, 27, 37, 40, 42, 44, 50, 52, 54, 55, 67, 68, 74, 75, 78, 80, 99, 101, 102, 105, 106, 112, 113, 116, 118, 128, 131, 133, 136, 142, 148, 149, 150, 153, 155, 166, 167, 168, 172], "summary": {"covered_lines": 44, "num_statements": 65, "percent_covered": 67.6923076923077, "percent_covered_display": "67.69", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 67.6923076923077, "percent_statements_covered_display": "67.69"}, "missing_lines": [23, 25, 41, 43, 45, 56, 76, 82, 83, 84, 86, 87, 93, 94, 95, 97, 103, 114, 132, 134, 151], "excluded_lines": [], "functions": {"LootCalculator.calculate_luck_multiplier": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [23, 25], "excluded_lines": [], "start_line": 13}, "LootCalculator.get_rarity_weights": {"executed_lines": [37, 40, 42, 44, 50], "summary": {"covered_lines": 5, "num_statements": 8, "percent_covered": 62.5, "percent_covered_display": "62.50", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 62.5, "percent_statements_covered_display": "62.50"}, "missing_lines": [41, 43, 45], "excluded_lines": [], "start_line": 27}, "LootCalculator.select_random_weapon": {"executed_lines": [54, 55, 67, 68, 74, 75, 78], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 77.77777777777777, "percent_covered_display": "77.78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 77.77777777777777, "percent_statements_covered_display": "77.78"}, "missing_lines": [56, 76], "excluded_lines": [], "start_line": 52}, "LootCalculator.select_random_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [82, 83, 84, 86, 87, 93, 94, 95, 97], "excluded_lines": [], "start_line": 80}, "LootCalculator.select_random_junk": {"executed_lines": [101, 102, 105, 106, 112, 113, 116], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 77.77777777777777, "percent_covered_display": "77.78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 77.77777777777777, "percent_statements_covered_display": "77.78"}, "missing_lines": [103, 114], "excluded_lines": [], "start_line": 99}, "LootCalculator.select_random_loot": {"executed_lines": [128, 131, 133, 136, 142, 148, 149, 150, 153], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [132, 134, 151], "excluded_lines": [], "start_line": 118}, "LootCalculator.calculate_caps_found": {"executed_lines": [166, 167, 168], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 155}, "": {"executed_lines": [3, 5, 6, 7, 10, 13, 27, 52, 80, 99, 118, 155, 172], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"LootCalculator": {"executed_lines": [37, 40, 42, 44, 50, 54, 55, 67, 68, 74, 75, 78, 101, 102, 105, 106, 112, 113, 116, 128, 131, 133, 136, 142, 148, 149, 150, 153, 166, 167, 168], "summary": {"covered_lines": 31, "num_statements": 52, "percent_covered": 59.61538461538461, "percent_covered_display": "59.62", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 59.61538461538461, "percent_statements_covered_display": "59.62"}, "missing_lines": [23, 25, 41, 43, 45, 56, 76, 82, 83, 84, 86, 87, 93, 94, 95, 97, 103, 114, 132, 134, 151], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [3, 5, 6, 7, 10, 13, 27, 52, 80, 99, 118, 155, 172], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\rewards_calculator.py": {"executed_lines": [3, 4, 7, 10, 26, 29, 30, 31, 33, 36, 37, 38, 41, 43, 45, 49], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"RewardsCalculator.calculate_exploration_xp": {"executed_lines": [26, 29, 30, 31, 33, 36, 37, 38, 41, 43, 45], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [3, 4, 7, 10, 49], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RewardsCalculator": {"executed_lines": [26, 29, 30, 31, 33, 36, 37, 38, 41, 43, 45], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 7}, "": {"executed_lines": [3, 4, 7, 10, 49], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration_service.py": {"executed_lines": [7, 8, 10, 11, 12, 13, 14, 15, 18, 26, 36, 38, 49, 51, 62, 64, 75, 77, 96, 109, 120, 132, 148, 152, 168, 172, 186, 195], "summary": {"covered_lines": 28, "num_statements": 39, "percent_covered": 71.7948717948718, "percent_covered_display": "71.79", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 71.7948717948718, "percent_statements_covered_display": "71.79"}, "missing_lines": [98, 99, 102, 122, 149, 150, 169, 170, 188, 189, 191], "excluded_lines": [], "functions": {"ExplorationService.generate_event": {"executed_lines": [36], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "ExplorationService.process_event": {"executed_lines": [49], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "ExplorationService.complete_exploration": {"executed_lines": [62], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 51}, "ExplorationService.recall_exploration": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 64}, "ExplorationService.send_dweller": {"executed_lines": [96], "summary": {"covered_lines": 1, "num_statements": 4, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [98, 99, 102], "excluded_lines": [], "start_line": 77}, "ExplorationService.get_exploration_progress": {"executed_lines": [120], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [122], "excluded_lines": [], "start_line": 109}, "ExplorationService.complete_exploration_with_data": {"executed_lines": [148], "summary": {"covered_lines": 1, "num_statements": 3, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [149, 150], "excluded_lines": [], "start_line": 132}, "ExplorationService.recall_exploration_with_data": {"executed_lines": [168], "summary": {"covered_lines": 1, "num_statements": 3, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [169, 170], "excluded_lines": [], "start_line": 152}, "ExplorationService.process_event_for_exploration": {"executed_lines": [186], "summary": {"covered_lines": 1, "num_statements": 4, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [188, 189, 191], "excluded_lines": [], "start_line": 172}, "": {"executed_lines": [7, 8, 10, 11, 12, 13, 14, 15, 18, 26, 38, 51, 64, 77, 109, 132, 152, 172, 195], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ExplorationService": {"executed_lines": [36, 49, 62, 75, 96, 120, 148, 168, 186], "summary": {"covered_lines": 9, "num_statements": 20, "percent_covered": 45.0, "percent_covered_display": "45.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 45.0, "percent_statements_covered_display": "45.00"}, "missing_lines": [98, 99, 102, 122, 149, 150, 169, 170, 188, 189, 191], "excluded_lines": [], "start_line": 18}, "": {"executed_lines": [7, 8, 10, 11, 12, 13, 14, 15, 18, 26, 38, 51, 64, 77, 109, 132, 152, 172, 195], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\game_loop.py": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 26, 27, 28, 30, 68, 80, 83, 88, 91, 98, 100, 107, 109, 111, 112, 117, 119, 131, 132, 135, 136, 139, 140, 143, 144, 147, 148, 151, 152, 156, 159, 160, 161, 163, 165, 167, 176, 178, 187, 189, 200, 216, 218, 219, 220, 222, 223, 224, 225, 226, 227, 229, 231, 238, 240, 242, 248, 250, 255, 257, 258, 260, 262, 263, 264, 267, 270, 271, 272, 273, 275, 277, 283, 285, 297, 298, 299, 301, 303, 307, 310, 311, 313, 314, 317, 318, 319, 322, 323, 327, 329, 337, 339, 340, 341, 342, 344, 351, 353, 354, 355, 358, 361, 362, 368, 369, 371, 375, 381, 388, 403, 405, 413, 415, 416, 417, 419, 425, 427, 428, 431, 433, 461, 463, 472, 474, 483, 485, 486, 488, 496, 498, 499, 506, 507, 510, 513, 538, 551, 553, 564, 566, 567, 568, 569, 570, 572, 574, 576, 577, 578, 580, 581, 665, 676, 678, 680, 683, 684, 685, 686, 694, 695, 696, 707, 709, 720, 722, 724, 726, 727, 728, 729, 736, 738, 748, 751, 754, 757, 766], "summary": {"covered_lines": 196, "num_statements": 365, "percent_covered": 53.6986301369863, "percent_covered_display": "53.70", "missing_lines": 169, "excluded_lines": 0, "percent_statements_covered": 53.6986301369863, "percent_statements_covered_display": "53.70"}, "missing_lines": [37, 44, 47, 49, 51, 52, 53, 54, 55, 56, 57, 59, 61, 66, 84, 85, 92, 95, 126, 127, 128, 168, 169, 170, 171, 173, 174, 179, 180, 181, 182, 184, 185, 191, 203, 204, 205, 207, 208, 211, 212, 213, 214, 279, 280, 281, 304, 324, 325, 363, 364, 365, 372, 376, 377, 378, 379, 382, 383, 384, 385, 390, 391, 392, 393, 394, 396, 398, 400, 401, 434, 436, 439, 443, 446, 447, 448, 453, 455, 457, 458, 459, 500, 501, 502, 503, 514, 515, 517, 518, 520, 523, 524, 525, 528, 529, 530, 531, 533, 535, 539, 540, 541, 544, 545, 547, 548, 549, 584, 585, 586, 587, 588, 591, 594, 597, 598, 601, 602, 603, 604, 605, 606, 609, 610, 611, 612, 615, 616, 618, 619, 621, 623, 629, 630, 631, 635, 636, 642, 645, 646, 647, 649, 650, 656, 658, 659, 660, 661, 663, 687, 688, 689, 690, 691, 697, 698, 699, 700, 701, 702, 703, 704, 705, 730, 731, 732, 733, 734], "excluded_lines": [], "functions": {"GameLoopService.__init__": {"executed_lines": [27, 28], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "GameLoopService.process_game_tick": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [37, 44, 47, 49, 51, 52, 53, 54, 55, 56, 57, 59, 61, 66], "excluded_lines": [], "start_line": 30}, "GameLoopService.process_vault_tick": {"executed_lines": [80, 83, 88, 91, 98, 100, 107, 109, 111, 112, 117, 119, 131, 132, 135, 136, 139, 140, 143, 144, 147, 148, 151, 152, 156, 159, 160, 161, 163], "summary": {"covered_lines": 29, "num_statements": 36, "percent_covered": 80.55555555555556, "percent_covered_display": "80.56", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 80.55555555555556, "percent_statements_covered_display": "80.56"}, "missing_lines": [84, 85, 92, 95, 126, 127, 128], "excluded_lines": [], "start_line": 68}, "GameLoopService.pause_vault": {"executed_lines": [167], "summary": {"covered_lines": 1, "num_statements": 7, "percent_covered": 14.285714285714286, "percent_covered_display": "14.29", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 14.285714285714286, "percent_statements_covered_display": "14.29"}, "missing_lines": [168, 169, 170, 171, 173, 174], "excluded_lines": [], "start_line": 165}, "GameLoopService.resume_vault": {"executed_lines": [178], "summary": {"covered_lines": 1, "num_statements": 7, "percent_covered": 14.285714285714286, "percent_covered_display": "14.29", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 14.285714285714286, "percent_statements_covered_display": "14.29"}, "missing_lines": [179, 180, 181, 182, 184, 185], "excluded_lines": [], "start_line": 176}, "GameLoopService.get_vault_status": {"executed_lines": [189], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [191], "excluded_lines": [], "start_line": 187}, "GameLoopService._get_active_vaults": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [203, 204, 205, 207, 208, 211, 212, 213, 214], "excluded_lines": [], "start_line": 200}, "GameLoopService._get_or_create_game_state": {"executed_lines": [218, 219, 220, 222, 223, 224, 225, 226, 227, 229], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 216}, "GameLoopService._process_explorations": {"executed_lines": [238, 240, 242, 248, 250, 255, 257, 258, 260, 262, 263, 264, 267, 270, 271, 272, 273, 275, 277, 283], "summary": {"covered_lines": 20, "num_statements": 23, "percent_covered": 86.95652173913044, "percent_covered_display": "86.96", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 86.95652173913044, "percent_statements_covered_display": "86.96"}, "missing_lines": [279, 280, 281], "excluded_lines": [], "start_line": 231}, "GameLoopService._award_work_xp": {"executed_lines": [297, 298, 299, 301, 303, 307, 310, 311, 313, 314, 317, 318, 319, 322, 323, 327], "summary": {"covered_lines": 16, "num_statements": 19, "percent_covered": 84.21052631578948, "percent_covered_display": "84.21", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 84.21052631578948, "percent_statements_covered_display": "84.21"}, "missing_lines": [304, 324, 325], "excluded_lines": [], "start_line": 285}, "GameLoopService._process_dwellers": {"executed_lines": [337, 339, 340, 341, 342, 344, 351, 353, 354, 355, 358, 361, 362, 368, 369, 371, 375, 381, 388, 403], "summary": {"covered_lines": 20, "num_statements": 41, "percent_covered": 48.78048780487805, "percent_covered_display": "48.78", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 48.78048780487805, "percent_statements_covered_display": "48.78"}, "missing_lines": [363, 364, 365, 372, 376, 377, 378, 379, 382, 383, 384, 385, 390, 391, 392, 393, 394, 396, 398, 400, 401], "excluded_lines": [], "start_line": 329}, "GameLoopService._process_training": {"executed_lines": [413, 415, 416, 417, 419, 425, 427, 428, 431, 433, 461], "summary": {"covered_lines": 11, "num_statements": 23, "percent_covered": 47.82608695652174, "percent_covered_display": "47.83", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 47.82608695652174, "percent_statements_covered_display": "47.83"}, "missing_lines": [434, 436, 439, 443, 446, 447, 448, 453, 455, 457, 458, 459], "excluded_lines": [], "start_line": 405}, "GameLoopService._process_happiness": {"executed_lines": [472], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 463}, "GameLoopService._process_incidents": {"executed_lines": [483, 485, 486, 488, 496, 498, 499, 506, 507, 510, 513, 538, 551], "summary": {"covered_lines": 13, "num_statements": 39, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [500, 501, 502, 503, 514, 515, 517, 518, 520, 523, 524, 525, 528, 529, 530, 531, 533, 535, 539, 540, 541, 544, 545, 547, 548, 549], "excluded_lines": [], "start_line": 474}, "GameLoopService._update_room_relationships": {"executed_lines": [564, 566, 567, 568, 569, 570, 572, 574, 576, 577, 578, 580, 581], "summary": {"covered_lines": 13, "num_statements": 55, "percent_covered": 23.636363636363637, "percent_covered_display": "23.64", "missing_lines": 42, "excluded_lines": 0, "percent_statements_covered": 23.636363636363637, "percent_statements_covered_display": "23.64"}, "missing_lines": [584, 585, 586, 587, 588, 591, 594, 597, 598, 601, 602, 603, 604, 605, 606, 609, 610, 611, 612, 615, 616, 618, 619, 621, 623, 629, 630, 631, 635, 636, 642, 645, 646, 647, 649, 650, 656, 658, 659, 660, 661, 663], "excluded_lines": [], "start_line": 553}, "GameLoopService._process_pregnancies_and_births": {"executed_lines": [676, 678, 680, 683, 684, 685, 686, 694, 695, 696, 707], "summary": {"covered_lines": 11, "num_statements": 25, "percent_covered": 44.0, "percent_covered_display": "44.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 44.0, "percent_statements_covered_display": "44.00"}, "missing_lines": [687, 688, 689, 690, 691, 697, 698, 699, 700, 701, 702, 703, 704, 705], "excluded_lines": [], "start_line": 665}, "GameLoopService._age_children": {"executed_lines": [720, 722, 724, 726, 727, 728, 729, 736], "summary": {"covered_lines": 8, "num_statements": 13, "percent_covered": 61.53846153846154, "percent_covered_display": "61.54", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 61.53846153846154, "percent_statements_covered_display": "61.54"}, "missing_lines": [730, 731, 732, 733, 734], "excluded_lines": [], "start_line": 709}, "GameLoopService._process_breeding": {"executed_lines": [748, 751, 754, 757], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 738}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 26, 30, 68, 165, 176, 187, 200, 216, 231, 285, 329, 405, 463, 474, 553, 665, 709, 738, 766], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"GameLoopService": {"executed_lines": [27, 28, 80, 83, 88, 91, 98, 100, 107, 109, 111, 112, 117, 119, 131, 132, 135, 136, 139, 140, 143, 144, 147, 148, 151, 152, 156, 159, 160, 161, 163, 167, 178, 189, 218, 219, 220, 222, 223, 224, 225, 226, 227, 229, 238, 240, 242, 248, 250, 255, 257, 258, 260, 262, 263, 264, 267, 270, 271, 272, 273, 275, 277, 283, 297, 298, 299, 301, 303, 307, 310, 311, 313, 314, 317, 318, 319, 322, 323, 327, 337, 339, 340, 341, 342, 344, 351, 353, 354, 355, 358, 361, 362, 368, 369, 371, 375, 381, 388, 403, 413, 415, 416, 417, 419, 425, 427, 428, 431, 433, 461, 472, 483, 485, 486, 488, 496, 498, 499, 506, 507, 510, 513, 538, 551, 564, 566, 567, 568, 569, 570, 572, 574, 576, 577, 578, 580, 581, 676, 678, 680, 683, 684, 685, 686, 694, 695, 696, 707, 720, 722, 724, 726, 727, 728, 729, 736, 748, 751, 754, 757], "summary": {"covered_lines": 161, "num_statements": 330, "percent_covered": 48.78787878787879, "percent_covered_display": "48.79", "missing_lines": 169, "excluded_lines": 0, "percent_statements_covered": 48.78787878787879, "percent_statements_covered_display": "48.79"}, "missing_lines": [37, 44, 47, 49, 51, 52, 53, 54, 55, 56, 57, 59, 61, 66, 84, 85, 92, 95, 126, 127, 128, 168, 169, 170, 171, 173, 174, 179, 180, 181, 182, 184, 185, 191, 203, 204, 205, 207, 208, 211, 212, 213, 214, 279, 280, 281, 304, 324, 325, 363, 364, 365, 372, 376, 377, 378, 379, 382, 383, 384, 385, 390, 391, 392, 393, 394, 396, 398, 400, 401, 434, 436, 439, 443, 446, 447, 448, 453, 455, 457, 458, 459, 500, 501, 502, 503, 514, 515, 517, 518, 520, 523, 524, 525, 528, 529, 530, 531, 533, 535, 539, 540, 541, 544, 545, 547, 548, 549, 584, 585, 586, 587, 588, 591, 594, 597, 598, 601, 602, 603, 604, 605, 606, 609, 610, 611, 612, 615, 616, 618, 619, 621, 623, 629, 630, 631, 635, 636, 642, 645, 646, 647, 649, 650, 656, 658, 659, 660, 661, 663, 687, 688, 689, 690, 691, 697, 698, 699, 700, 701, 702, 703, 704, 705, 730, 731, 732, 733, 734], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 26, 30, 68, 165, 176, 187, 200, 216, 231, 285, 329, 405, 463, 474, 553, 665, 709, 738, 766], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\happiness_service.py": {"executed_lines": [3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 26, 27, 43, 44, 45, 46, 49, 51, 52, 55, 58, 61, 63, 71, 73, 75, 76, 77, 80, 88, 89, 90, 93, 94, 95, 96, 97, 99, 102, 105, 106, 107, 110, 111, 113, 121, 123, 124, 137, 138, 139, 141, 147, 154, 155, 160, 170, 171, 190, 193, 198, 200, 201, 204, 205, 208, 212, 213, 215, 216, 219, 220, 225, 226, 229, 230, 234, 245, 249, 253, 255, 256, 258, 261, 265, 270, 273, 274, 277, 280, 282, 283, 297, 298, 299, 301, 302, 306, 309, 311, 313, 320, 321, 323, 326, 329, 334, 335, 336, 340, 344, 349, 357, 360, 363, 366, 374, 377], "summary": {"covered_lines": 124, "num_statements": 152, "percent_covered": 81.57894736842105, "percent_covered_display": "81.58", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 81.57894736842105, "percent_statements_covered_display": "81.58"}, "missing_lines": [157, 158, 199, 209, 214, 235, 236, 238, 239, 241, 242, 246, 250, 262, 278, 303, 304, 324, 327, 330, 337, 338, 341, 345, 350, 358, 361, 367], "excluded_lines": [], "functions": {"HappinessService.update_vault_happiness": {"executed_lines": [43, 44, 45, 46, 49, 51, 52, 55, 58, 61, 63, 71, 73, 75, 76, 77, 80, 88, 89, 90, 93, 94, 95, 96, 97, 99, 102, 105, 106, 107, 110, 111, 113, 121], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "HappinessService._calculate_vault_factors": {"executed_lines": [137, 138, 139, 141, 147, 154, 155, 160], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [157, 158], "excluded_lines": [], "start_line": 124}, "HappinessService._calculate_happiness_change": {"executed_lines": [190, 193, 198, 200, 201, 204, 205, 208, 212, 213, 215, 216, 219, 220, 225, 226, 229, 230, 234, 245, 249, 253, 255, 256, 258, 261, 265, 270, 273, 274, 277, 280], "summary": {"covered_lines": 32, "num_statements": 45, "percent_covered": 71.11111111111111, "percent_covered_display": "71.11", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 71.11111111111111, "percent_statements_covered_display": "71.11"}, "missing_lines": [199, 209, 214, 235, 236, 238, 239, 241, 242, 246, 250, 262, 278], "excluded_lines": [], "start_line": 171}, "HappinessService.get_happiness_modifiers": {"executed_lines": [297, 298, 299, 301, 302, 306, 309, 311, 313, 320, 321, 323, 326, 329, 334, 335, 336, 340, 344, 349, 357, 360, 363, 366, 374], "summary": {"covered_lines": 25, "num_statements": 38, "percent_covered": 65.78947368421052, "percent_covered_display": "65.79", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 65.78947368421052, "percent_statements_covered_display": "65.79"}, "missing_lines": [303, 304, 324, 327, 330, 337, 338, 341, 345, 350, 358, 361, 367], "excluded_lines": [], "start_line": 283}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 26, 27, 123, 124, 170, 171, 282, 283, 377], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"HappinessService": {"executed_lines": [43, 44, 45, 46, 49, 51, 52, 55, 58, 61, 63, 71, 73, 75, 76, 77, 80, 88, 89, 90, 93, 94, 95, 96, 97, 99, 102, 105, 106, 107, 110, 111, 113, 121, 137, 138, 139, 141, 147, 154, 155, 160, 190, 193, 198, 200, 201, 204, 205, 208, 212, 213, 215, 216, 219, 220, 225, 226, 229, 230, 234, 245, 249, 253, 255, 256, 258, 261, 265, 270, 273, 274, 277, 280, 297, 298, 299, 301, 302, 306, 309, 311, 313, 320, 321, 323, 326, 329, 334, 335, 336, 340, 344, 349, 357, 360, 363, 366, 374], "summary": {"covered_lines": 99, "num_statements": 127, "percent_covered": 77.95275590551181, "percent_covered_display": "77.95", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 77.95275590551181, "percent_statements_covered_display": "77.95"}, "missing_lines": [157, 158, 199, 209, 214, 235, 236, 238, 239, 241, 242, 246, 250, 262, 278, 303, 304, 324, 327, 330, 337, 338, 341, 345, 350, 358, 361, 367], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 26, 27, 123, 124, 170, 171, 282, 283, 377], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\health_check.py": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 17, 18, 22, 25, 28, 29, 30, 33, 34, 37, 38, 39, 40, 43, 46, 47, 75, 76, 105, 106, 157, 158, 213, 214, 304, 305, 368, 419, 420], "summary": {"covered_lines": 40, "num_statements": 162, "percent_covered": 24.691358024691358, "percent_covered_display": "24.69", "missing_lines": 122, "excluded_lines": 0, "percent_statements_covered": 24.691358024691358, "percent_statements_covered_display": "24.69"}, "missing_lines": [19, 20, 57, 58, 59, 60, 66, 67, 68, 83, 84, 85, 86, 87, 93, 94, 95, 102, 103, 113, 114, 121, 123, 124, 125, 127, 128, 135, 136, 138, 148, 149, 150, 166, 167, 174, 175, 183, 184, 186, 196, 197, 198, 204, 205, 206, 222, 223, 230, 231, 233, 235, 236, 237, 238, 241, 242, 244, 245, 255, 268, 274, 275, 276, 277, 278, 285, 286, 287, 288, 293, 294, 295, 297, 312, 313, 319, 322, 323, 325, 327, 339, 340, 341, 347, 348, 349, 359, 360, 361, 388, 391, 392, 395, 396, 399, 400, 403, 404, 405, 408, 409, 410, 413, 414, 415, 417, 430, 432, 433, 434, 436, 437, 438, 440, 449, 450, 452, 454, 455, 457, 459], "excluded_lines": [], "functions": {"HealthCheckService.check_postgres": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [57, 58, 59, 60, 66, 67, 68], "excluded_lines": [], "start_line": 47}, "HealthCheckService.check_redis": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [83, 84, 85, 86, 87, 93, 94, 95, 102, 103], "excluded_lines": [], "start_line": 76}, "HealthCheckService.check_celery": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [113, 114, 121, 123, 124, 125, 127, 128, 135, 136, 138, 148, 149, 150], "excluded_lines": [], "start_line": 106}, "HealthCheckService.check_minio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [166, 167, 174, 175, 183, 184, 186, 196, 197, 198, 204, 205, 206], "excluded_lines": [], "start_line": 158}, "HealthCheckService.check_ollama": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [222, 223, 230, 231, 233, 235, 236, 237, 238, 241, 242, 244, 245, 255, 268, 274, 275, 276, 277, 278, 285, 286, 287, 288, 293, 294, 295, 297], "excluded_lines": [], "start_line": 214}, "HealthCheckService.check_smtp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [312, 313, 319, 322, 323, 325, 327, 339, 340, 341, 347, 348, 349, 359, 360, 361], "excluded_lines": [], "start_line": 305}, "HealthCheckService.check_all_services": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [388, 391, 392, 395, 396, 399, 400, 403, 404, 405, 408, 409, 410, 413, 414, 415, 417], "excluded_lines": [], "start_line": 368}, "HealthCheckService.log_health_check_results": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [430, 432, 433, 434, 436, 437, 438, 440, 449, 450, 452, 454, 455, 457, 459], "excluded_lines": [], "start_line": 420}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 17, 18, 22, 25, 28, 29, 30, 33, 34, 37, 38, 39, 40, 43, 46, 47, 75, 76, 105, 106, 157, 158, 213, 214, 304, 305, 368, 419, 420], "summary": {"covered_lines": 40, "num_statements": 42, "percent_covered": 95.23809523809524, "percent_covered_display": "95.24", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 95.23809523809524, "percent_statements_covered_display": "95.24"}, "missing_lines": [19, 20], "excluded_lines": [], "start_line": 1}}, "classes": {"ServiceStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "HealthCheckResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "HealthCheckService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 120, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 120, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [57, 58, 59, 60, 66, 67, 68, 83, 84, 85, 86, 87, 93, 94, 95, 102, 103, 113, 114, 121, 123, 124, 125, 127, 128, 135, 136, 138, 148, 149, 150, 166, 167, 174, 175, 183, 184, 186, 196, 197, 198, 204, 205, 206, 222, 223, 230, 231, 233, 235, 236, 237, 238, 241, 242, 244, 245, 255, 268, 274, 275, 276, 277, 278, 285, 286, 287, 288, 293, 294, 295, 297, 312, 313, 319, 322, 323, 325, 327, 339, 340, 341, 347, 348, 349, 359, 360, 361, 388, 391, 392, 395, 396, 399, 400, 403, 404, 405, 408, 409, 410, 413, 414, 415, 417, 430, 432, 433, 434, 436, 437, 438, 440, 449, 450, 452, 454, 455, 457, 459], "excluded_lines": [], "start_line": 43}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 17, 18, 22, 25, 28, 29, 30, 33, 34, 37, 38, 39, 40, 43, 46, 47, 75, 76, 105, 106, 157, 158, 213, 214, 304, 305, 368, 419, 420], "summary": {"covered_lines": 40, "num_statements": 42, "percent_covered": 95.23809523809524, "percent_covered_display": "95.24", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 95.23809523809524, "percent_statements_covered_display": "95.24"}, "missing_lines": [19, 20], "excluded_lines": [], "start_line": 1}}}, "app\\services\\incident_service.py": {"executed_lines": [3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 21, 24, 25, 27, 40, 42, 43, 44, 46, 47, 77, 98, 101, 102, 107, 116, 119, 121, 124, 125, 127, 128, 129, 186, 292, 359, 422, 445, 449, 455, 460, 493, 495, 500, 502, 503, 504, 507, 509, 513], "summary": {"covered_lines": 53, "num_statements": 199, "percent_covered": 26.633165829145728, "percent_covered_display": "26.63", "missing_lines": 146, "excluded_lines": 0, "percent_statements_covered": 26.633165829145728, "percent_statements_covered_display": "26.63"}, "missing_lines": [50, 52, 53, 54, 57, 58, 60, 61, 66, 67, 68, 71, 72, 75, 104, 111, 112, 113, 132, 133, 134, 137, 147, 148, 151, 153, 154, 158, 161, 164, 171, 180, 184, 200, 201, 204, 206, 214, 215, 217, 219, 223, 224, 227, 228, 231, 232, 235, 236, 237, 238, 239, 241, 243, 244, 245, 248, 249, 250, 252, 253, 254, 257, 260, 261, 264, 265, 267, 269, 270, 273, 276, 278, 280, 281, 283, 309, 310, 311, 313, 314, 317, 318, 319, 320, 321, 324, 325, 328, 329, 330, 332, 335, 336, 337, 339, 340, 342, 343, 344, 345, 347, 351, 362, 363, 364, 366, 367, 370, 374, 393, 394, 397, 399, 401, 404, 414, 415, 417, 424, 425, 427, 434, 435, 436, 439, 441, 443, 447, 452, 453, 457, 458, 469, 471, 472, 475, 478, 480, 481, 484, 486, 487, 488, 491, 505], "excluded_lines": [], "functions": {"IncidentService.__init__": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "IncidentService.should_spawn_incident": {"executed_lines": [40, 42, 43, 44, 46, 47], "summary": {"covered_lines": 6, "num_statements": 20, "percent_covered": 30.0, "percent_covered_display": "30.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 30.0, "percent_statements_covered_display": "30.00"}, "missing_lines": [50, 52, 53, 54, 57, 58, 60, 61, 66, 67, 68, 71, 72, 75], "excluded_lines": [], "start_line": 27}, "IncidentService.spawn_incident": {"executed_lines": [98, 101, 102, 107, 116, 119, 121, 124, 125, 127, 128, 129], "summary": {"covered_lines": 12, "num_statements": 31, "percent_covered": 38.70967741935484, "percent_covered_display": "38.71", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 38.70967741935484, "percent_statements_covered_display": "38.71"}, "missing_lines": [104, 111, 112, 113, 132, 133, 134, 137, 147, 148, 151, 153, 154, 158, 161, 164, 171, 180, 184], "excluded_lines": [], "start_line": 77}, "IncidentService.process_incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 43, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [200, 201, 204, 206, 214, 215, 217, 219, 223, 224, 227, 228, 231, 232, 235, 236, 237, 238, 239, 241, 243, 244, 245, 248, 249, 250, 252, 253, 254, 257, 260, 261, 264, 265, 267, 269, 270, 273, 276, 278, 280, 281, 283], "excluded_lines": [], "start_line": 186}, "IncidentService.resolve_incident_manually": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 27, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [309, 310, 311, 313, 314, 317, 318, 319, 320, 321, 324, 325, 328, 329, 330, 332, 335, 336, 337, 339, 340, 342, 343, 344, 345, 347, 351], "excluded_lines": [], "start_line": 292}, "IncidentService._spread_incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [362, 363, 364, 366, 367, 370, 374, 393, 394, 397, 399, 401, 404, 414, 415, 417], "excluded_lines": [], "start_line": 359}, "IncidentService._calculate_dweller_combat_power": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [424, 425, 427, 434, 435, 436, 439, 441, 443], "excluded_lines": [], "start_line": 422}, "IncidentService._calculate_raider_power": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [447], "excluded_lines": [], "start_line": 445}, "IncidentService._calculate_damage_to_dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [452, 453], "excluded_lines": [], "start_line": 449}, "IncidentService._calculate_damage_to_raiders": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [457, 458], "excluded_lines": [], "start_line": 455}, "IncidentService._award_combat_xp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [469, 471, 472, 475, 478, 480, 481, 484, 486, 487, 488, 491], "excluded_lines": [], "start_line": 460}, "IncidentService._generate_loot": {"executed_lines": [495, 500, 502, 503, 504, 507, 509], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50"}, "missing_lines": [505], "excluded_lines": [], "start_line": 493}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 21, 24, 27, 77, 186, 292, 359, 422, 445, 449, 455, 460, 493, 513], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"IncidentService": {"executed_lines": [25, 40, 42, 43, 44, 46, 47, 98, 101, 102, 107, 116, 119, 121, 124, 125, 127, 128, 129, 495, 500, 502, 503, 504, 507, 509], "summary": {"covered_lines": 26, "num_statements": 172, "percent_covered": 15.116279069767442, "percent_covered_display": "15.12", "missing_lines": 146, "excluded_lines": 0, "percent_statements_covered": 15.116279069767442, "percent_statements_covered_display": "15.12"}, "missing_lines": [50, 52, 53, 54, 57, 58, 60, 61, 66, 67, 68, 71, 72, 75, 104, 111, 112, 113, 132, 133, 134, 137, 147, 148, 151, 153, 154, 158, 161, 164, 171, 180, 184, 200, 201, 204, 206, 214, 215, 217, 219, 223, 224, 227, 228, 231, 232, 235, 236, 237, 238, 239, 241, 243, 244, 245, 248, 249, 250, 252, 253, 254, 257, 260, 261, 264, 265, 267, 269, 270, 273, 276, 278, 280, 281, 283, 309, 310, 311, 313, 314, 317, 318, 319, 320, 321, 324, 325, 328, 329, 330, 332, 335, 336, 337, 339, 340, 342, 343, 344, 345, 347, 351, 362, 363, 364, 366, 367, 370, 374, 393, 394, 397, 399, 401, 404, 414, 415, 417, 424, 425, 427, 434, 435, 436, 439, 441, 443, 447, 452, 453, 457, 458, 469, 471, 472, 475, 478, 480, 481, 484, 486, 487, 488, 491, 505], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 21, 24, 27, 77, 186, 292, 359, 422, 445, 449, 455, 460, 493, 513], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\leveling_service.py": {"executed_lines": [3, 5, 6, 7, 10, 13, 14, 33, 34, 35, 37, 38, 55, 66, 67, 69, 70, 73, 74, 75, 76, 77, 79, 81, 82, 83, 85, 87, 104, 108, 109, 112, 113, 116, 119, 121, 128, 130, 134], "summary": {"covered_lines": 39, "num_statements": 43, "percent_covered": 90.69767441860465, "percent_covered_display": "90.70", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 90.69767441860465, "percent_statements_covered_display": "90.70"}, "missing_lines": [49, 50, 51, 105], "excluded_lines": [], "functions": {"LevelingService.calculate_xp_required": {"executed_lines": [33, 34, 35], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "LevelingService.calculate_xp_for_level_range": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [49, 50, 51], "excluded_lines": [], "start_line": 38}, "LevelingService.check_level_up": {"executed_lines": [66, 67, 69, 70, 73, 74, 75, 76, 77, 79, 81, 82, 83, 85], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 55}, "LevelingService.level_up_dweller": {"executed_lines": [104, 108, 109, 112, 113, 116, 119, 121, 128, 130], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 90.9090909090909, "percent_covered_display": "90.91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "90.91"}, "missing_lines": [105], "excluded_lines": [], "start_line": 87}, "": {"executed_lines": [3, 5, 6, 7, 10, 13, 14, 37, 38, 55, 87, 134], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"LevelingService": {"executed_lines": [33, 34, 35, 66, 67, 69, 70, 73, 74, 75, 76, 77, 79, 81, 82, 83, 85, 104, 108, 109, 112, 113, 116, 119, 121, 128, 130], "summary": {"covered_lines": 27, "num_statements": 31, "percent_covered": 87.09677419354838, "percent_covered_display": "87.10", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 87.09677419354838, "percent_statements_covered_display": "87.10"}, "missing_lines": [49, 50, 51, 105], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [3, 5, 6, 7, 10, 13, 14, 37, 38, 55, 87, 134], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\minio.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 10, 11, 13, 37, 40, 41, 63, 64, 70, 80, 106, 136, 140, 154, 164, 165, 166], "summary": {"covered_lines": 24, "num_statements": 105, "percent_covered": 22.857142857142858, "percent_covered_display": "22.86", "missing_lines": 81, "excluded_lines": 0, "percent_statements_covered": 22.857142857142858, "percent_statements_covered_display": "22.86"}, "missing_lines": [42, 43, 44, 46, 47, 48, 54, 55, 56, 57, 58, 59, 61, 65, 66, 67, 68, 71, 72, 73, 74, 75, 76, 77, 78, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 99, 100, 101, 102, 103, 104, 109, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 125, 126, 127, 132, 133, 134, 137, 138, 141, 142, 143, 144, 146, 147, 148, 149, 150, 151, 152, 155, 156, 157, 159, 160, 161], "excluded_lines": [], "functions": {"MinioService.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42, 43, 44, 46, 47, 48, 54, 55, 56, 57, 58, 59, 61], "excluded_lines": [], "start_line": 41}, "MinioService._get_public_policy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [65, 66, 67, 68], "excluded_lines": [], "start_line": 64}, "MinioService._ensure_bucket_exists": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [71, 72, 73, 74, 75, 76, 77, 78], "excluded_lines": [], "start_line": 70}, "MinioService._ensure_bucket_policy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 99, 100, 101, 102, 103, 104], "excluded_lines": [], "start_line": 80}, "MinioService.upload_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [109, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 125, 126, 127, 132, 133, 134], "excluded_lines": [], "start_line": 106}, "MinioService.upload_thumbnail": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [137, 138], "excluded_lines": [], "start_line": 136}, "MinioService.download_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [141, 142, 143, 144, 146, 147, 148, 149, 150, 151, 152], "excluded_lines": [], "start_line": 140}, "MinioService.public_url": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [155, 156, 157, 159, 160, 161], "excluded_lines": [], "start_line": 154}, "get_minio_client": {"executed_lines": [166], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 165}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 10, 11, 13, 37, 40, 41, 63, 64, 70, 80, 106, 136, 140, 154, 164, 165], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"MinioService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 81, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 81, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42, 43, 44, 46, 47, 48, 54, 55, 56, 57, 58, 59, 61, 65, 66, 67, 68, 71, 72, 73, 74, 75, 76, 77, 78, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 99, 100, 101, 102, 103, 104, 109, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 125, 126, 127, 132, 133, 134, 137, 138, 141, 142, 143, 144, 146, 147, 148, 149, 150, 151, 152, 155, 156, 157, 159, 160, 161], "excluded_lines": [], "start_line": 40}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 10, 11, 13, 37, 40, 41, 63, 64, 70, 80, 106, 136, 140, 154, 164, 165, 166], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\notification_service.py": {"executed_lines": [1, 2, 4, 6, 7, 8, 11, 14, 15, 29, 44, 60, 64, 65, 87, 88, 109, 110, 120, 132, 133, 155, 156, 166, 178, 179, 200, 201, 223, 224, 232, 245], "summary": {"covered_lines": 32, "num_statements": 37, "percent_covered": 86.48648648648648, "percent_covered_display": "86.49", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 86.48648648648648, "percent_statements_covered_display": "86.49"}, "missing_lines": [75, 97, 143, 189, 211], "excluded_lines": [], "functions": {"NotificationService.create_and_send": {"executed_lines": [29, 44, 60], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "NotificationService.notify_exploration_update": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [75], "excluded_lines": [], "start_line": 65}, "NotificationService.notify_exploration_complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [97], "excluded_lines": [], "start_line": 88}, "NotificationService.notify_level_up": {"executed_lines": [120], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 110}, "NotificationService.notify_training_complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [143], "excluded_lines": [], "start_line": 133}, "NotificationService.notify_baby_born": {"executed_lines": [166], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 156}, "NotificationService.notify_resource_low": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [189], "excluded_lines": [], "start_line": 179}, "NotificationService.notify_combat_victory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [211], "excluded_lines": [], "start_line": 201}, "NotificationService.notify_radio_new_dweller": {"executed_lines": [232], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 224}, "": {"executed_lines": [1, 2, 4, 6, 7, 8, 11, 14, 15, 64, 65, 87, 88, 109, 110, 132, 133, 155, 156, 178, 179, 200, 201, 223, 224, 245], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"NotificationService": {"executed_lines": [29, 44, 60, 120, 166, 232], "summary": {"covered_lines": 6, "num_statements": 11, "percent_covered": 54.54545454545455, "percent_covered_display": "54.55", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 54.54545454545455, "percent_statements_covered_display": "54.55"}, "missing_lines": [75, 97, 143, 189, 211], "excluded_lines": [], "start_line": 11}, "": {"executed_lines": [1, 2, 4, 6, 7, 8, 11, 14, 15, 64, 65, 87, 88, 109, 110, 132, 133, 155, 156, 178, 179, 200, 201, 223, 224, 245], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\open_ai.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 13, 16, 17, 18, 20, 22, 23, 25, 26, 27, 36, 38, 41, 53, 70, 77, 93, 102, 131, 165, 166, 167], "summary": {"covered_lines": 31, "num_statements": 78, "percent_covered": 39.743589743589745, "percent_covered_display": "39.74", "missing_lines": 47, "excluded_lines": 0, "percent_statements_covered": 39.743589743589745, "percent_statements_covered_display": "39.74"}, "missing_lines": [28, 29, 30, 31, 32, 33, 34, 39, 42, 49, 51, 58, 59, 64, 65, 66, 67, 68, 71, 75, 78, 91, 94, 99, 100, 113, 115, 117, 118, 121, 125, 126, 127, 128, 129, 142, 145, 146, 147, 148, 149, 150, 151, 154, 157, 160, 162], "excluded_lines": [], "functions": {"AIService.__init__": {"executed_lines": [18, 20], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "AIService.get_model": {"executed_lines": [25, 26, 27, 36], "summary": {"covered_lines": 4, "num_statements": 11, "percent_covered": 36.36363636363637, "percent_covered_display": "36.36", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 36.36363636363637, "percent_statements_covered_display": "36.36"}, "missing_lines": [28, 29, 30, 31, 32, 33, 34], "excluded_lines": [], "start_line": 23}, "AIService.get_chatgpt_client": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [39], "excluded_lines": [], "start_line": 38}, "AIService.generate_image": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42, 49, 51], "excluded_lines": [], "start_line": 41}, "AIService.generate_audio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [58, 59, 64, 65, 66, 67, 68], "excluded_lines": [], "start_line": 53}, "AIService.generate_completion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [71, 75], "excluded_lines": [], "start_line": 70}, "AIService.generate_completion_json": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [78, 91], "excluded_lines": [], "start_line": 77}, "AIService.generate_speech_from_text": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [94, 99, 100], "excluded_lines": [], "start_line": 93}, "AIService.transcribe_audio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [113, 115, 117, 118, 121, 125, 126, 127, 128, 129], "excluded_lines": [], "start_line": 102}, "AIService.chat_completion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [142, 145, 146, 147, 148, 149, 150, 151, 154, 157, 160, 162], "excluded_lines": [], "start_line": 131}, "get_ai_service": {"executed_lines": [167], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 166}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 13, 16, 17, 22, 23, 38, 41, 53, 70, 77, 93, 102, 131, 165, 166], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AIService": {"executed_lines": [18, 20, 25, 26, 27, 36], "summary": {"covered_lines": 6, "num_statements": 53, "percent_covered": 11.320754716981131, "percent_covered_display": "11.32", "missing_lines": 47, "excluded_lines": 0, "percent_statements_covered": 11.320754716981131, "percent_statements_covered_display": "11.32"}, "missing_lines": [28, 29, 30, 31, 32, 33, 34, 39, 42, 49, 51, 58, 59, 64, 65, 66, 67, 68, 71, 75, 78, 91, 94, 99, 100, 113, 115, 117, 118, 121, 125, 126, 127, 128, 129, 142, 145, 146, 147, 148, 149, 150, 151, 154, 157, 160, 162], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 13, 16, 17, 22, 23, 38, 41, 53, 70, 77, 93, 102, 131, 165, 166, 167], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\radio_service.py": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 23, 24, 40, 42, 44, 45, 61, 64, 65, 68, 71, 72, 73, 76, 80, 81, 83, 88, 89, 91, 93, 94, 109, 110, 112, 116, 120, 122, 123, 126, 129, 130, 131, 134, 136, 138, 139, 156, 162, 164, 166, 167, 189, 190, 192, 196, 197, 200, 201, 202, 203, 206, 207, 208, 211, 212, 215, 217, 221, 223, 224, 239, 240, 242, 255, 257, 258, 270, 273, 274, 277, 279, 291], "summary": {"covered_lines": 86, "num_statements": 94, "percent_covered": 91.48936170212765, "percent_covered_display": "91.49", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 91.48936170212765, "percent_statements_covered_display": "91.49"}, "missing_lines": [62, 84, 85, 113, 117, 193, 194, 243], "excluded_lines": [], "functions": {"RadioService.get_radio_rooms": {"executed_lines": [40, 42], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "RadioService.calculate_recruitment_rate": {"executed_lines": [61, 64, 65, 68, 71, 72, 73, 76, 80, 81, 83, 88, 89, 91], "summary": {"covered_lines": 14, "num_statements": 17, "percent_covered": 82.3529411764706, "percent_covered_display": "82.35", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 82.3529411764706, "percent_statements_covered_display": "82.35"}, "missing_lines": [62, 84, 85], "excluded_lines": [], "start_line": 45}, "RadioService.check_for_recruitment": {"executed_lines": [109, 110, 112, 116, 120, 122, 123, 126, 129, 130, 131, 134, 136], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 86.66666666666667, "percent_covered_display": "86.67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 86.66666666666667, "percent_statements_covered_display": "86.67"}, "missing_lines": [113, 117], "excluded_lines": [], "start_line": 94}, "RadioService.recruit_dweller": {"executed_lines": [156, 162, 164], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 139}, "RadioService.manual_recruit": {"executed_lines": [189, 190, 192, 196, 197, 200, 201, 202, 203, 206, 207, 208, 211, 212, 215, 217, 221], "summary": {"covered_lines": 17, "num_statements": 19, "percent_covered": 89.47368421052632, "percent_covered_display": "89.47", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 89.47368421052632, "percent_statements_covered_display": "89.47"}, "missing_lines": [193, 194], "excluded_lines": [], "start_line": 167}, "RadioService.get_recruitment_stats": {"executed_lines": [239, 240, 242, 255, 257, 258, 270, 273, 274, 277, 279], "summary": {"covered_lines": 11, "num_statements": 12, "percent_covered": 91.66666666666667, "percent_covered_display": "91.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 91.66666666666667, "percent_statements_covered_display": "91.67"}, "missing_lines": [243], "excluded_lines": [], "start_line": 224}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 23, 24, 44, 45, 93, 94, 138, 139, 166, 167, 223, 224, 291], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RadioService": {"executed_lines": [40, 42, 61, 64, 65, 68, 71, 72, 73, 76, 80, 81, 83, 88, 89, 91, 109, 110, 112, 116, 120, 122, 123, 126, 129, 130, 131, 134, 136, 156, 162, 164, 189, 190, 192, 196, 197, 200, 201, 202, 203, 206, 207, 208, 211, 212, 215, 217, 221, 239, 240, 242, 255, 257, 258, 270, 273, 274, 277, 279], "summary": {"covered_lines": 60, "num_statements": 68, "percent_covered": 88.23529411764706, "percent_covered_display": "88.24", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 88.23529411764706, "percent_statements_covered_display": "88.24"}, "missing_lines": [62, 84, 85, 113, 117, 193, 194, 243], "excluded_lines": [], "start_line": 20}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 23, 24, 44, 45, 93, 94, 138, 139, 166, 167, 223, 224, 291], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\relationship_service.py": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 22, 25, 26, 42, 44, 45, 62, 63, 64, 67, 71, 72, 74, 75, 93, 94, 98, 99, 102, 104, 105, 111, 113, 116, 118, 119, 138, 139, 140, 141, 143, 144, 147, 149, 152, 154, 155, 157, 158, 177, 178, 179, 180, 182, 183, 184, 185, 187, 190, 194, 195, 196, 199, 200, 203, 204, 205, 206, 207, 213, 214, 216, 217, 229, 230, 231, 232, 233, 236, 237, 238, 239, 242, 243, 246, 247, 248, 249, 250, 260, 265, 267, 269, 270, 349, 350, 362, 363, 366, 367, 368, 369, 372, 373, 376, 377, 378, 381, 384, 391, 401, 402, 418, 419, 422], "summary": {"covered_lines": 119, "num_statements": 165, "percent_covered": 72.12121212121212, "percent_covered_display": "72.12", "missing_lines": 46, "excluded_lines": 0, "percent_statements_covered": 72.12121212121212, "percent_statements_covered_display": "72.12"}, "missing_lines": [95, 96, 106, 108, 208, 209, 210, 211, 251, 253, 254, 255, 256, 257, 285, 286, 287, 291, 294, 300, 301, 303, 304, 305, 308, 309, 311, 312, 313, 316, 317, 320, 329, 331, 332, 335, 336, 337, 338, 339, 340, 341, 342, 343, 346, 347], "excluded_lines": [], "functions": {"RelationshipService.get_relationship": {"executed_lines": [42], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "RelationshipService.get_or_create_relationship": {"executed_lines": [62, 63, 64, 67, 71, 72], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "RelationshipService.increase_affinity": {"executed_lines": [93, 94, 98, 99, 102, 104, 105, 111, 113, 116], "summary": {"covered_lines": 10, "num_statements": 14, "percent_covered": 71.42857142857143, "percent_covered_display": "71.43", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71.43"}, "missing_lines": [95, 96, 106, 108], "excluded_lines": [], "start_line": 75}, "RelationshipService.initiate_romance": {"executed_lines": [138, 139, 140, 141, 143, 144, 147, 149, 152, 154, 155], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 119}, "RelationshipService.make_partners": {"executed_lines": [177, 178, 179, 180, 182, 183, 184, 185, 187, 190, 194, 195, 196, 199, 200, 203, 204, 205, 206, 207, 213, 214], "summary": {"covered_lines": 22, "num_statements": 26, "percent_covered": 84.61538461538461, "percent_covered_display": "84.62", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 84.61538461538461, "percent_statements_covered_display": "84.62"}, "missing_lines": [208, 209, 210, 211], "excluded_lines": [], "start_line": 158}, "RelationshipService.break_up": {"executed_lines": [229, 230, 231, 232, 233, 236, 237, 238, 239, 242, 243, 246, 247, 248, 249, 250, 260, 265, 267], "summary": {"covered_lines": 19, "num_statements": 25, "percent_covered": 76.0, "percent_covered_display": "76.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 76.0, "percent_statements_covered_display": "76.00"}, "missing_lines": [251, 253, 254, 255, 256, 257], "excluded_lines": [], "start_line": 217}, "RelationshipService.quick_pair_dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 32, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 32, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [285, 286, 287, 291, 294, 300, 301, 303, 304, 305, 308, 309, 311, 312, 313, 316, 317, 320, 329, 331, 332, 335, 336, 337, 338, 339, 340, 341, 342, 343, 346, 347], "excluded_lines": [], "start_line": 270}, "RelationshipService.calculate_compatibility_score": {"executed_lines": [362, 363, 366, 367, 368, 369, 372, 373, 376, 377, 378, 381, 384, 391], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 350}, "RelationshipService.calculate_compatibility": {"executed_lines": [418, 419], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 402}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 22, 25, 26, 44, 45, 74, 75, 118, 119, 157, 158, 216, 217, 269, 270, 349, 350, 401, 402, 422], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RelationshipService": {"executed_lines": [42, 62, 63, 64, 67, 71, 72, 93, 94, 98, 99, 102, 104, 105, 111, 113, 116, 138, 139, 140, 141, 143, 144, 147, 149, 152, 154, 155, 177, 178, 179, 180, 182, 183, 184, 185, 187, 190, 194, 195, 196, 199, 200, 203, 204, 205, 206, 207, 213, 214, 229, 230, 231, 232, 233, 236, 237, 238, 239, 242, 243, 246, 247, 248, 249, 250, 260, 265, 267, 362, 363, 366, 367, 368, 369, 372, 373, 376, 377, 378, 381, 384, 391, 418, 419], "summary": {"covered_lines": 85, "num_statements": 131, "percent_covered": 64.8854961832061, "percent_covered_display": "64.89", "missing_lines": 46, "excluded_lines": 0, "percent_statements_covered": 64.8854961832061, "percent_statements_covered_display": "64.89"}, "missing_lines": [95, 96, 106, 108, 208, 209, 210, 211, 251, 253, 254, 255, 256, 257, 285, 286, 287, 291, 294, 300, 301, 303, 304, 305, 308, 309, 311, 312, 313, 316, 317, 320, 329, 331, 332, 335, 336, 337, 338, 339, 340, 341, 342, 343, 346, 347], "excluded_lines": [], "start_line": 22}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 22, 25, 26, 44, 45, 74, 75, 118, 119, 157, 158, 216, 217, 269, 270, 349, 350, 401, 402, 422], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\resource_manager.py": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 12, 13, 15, 18, 19, 20, 23, 24, 27, 28, 31, 34, 35, 37, 46, 49, 53, 55, 69, 72, 73, 76, 77, 80, 83, 84, 87, 89, 98, 102, 105, 106, 108, 114, 118, 120, 121, 128, 129, 131, 132, 134, 136, 138, 139, 140, 142, 147, 149, 150, 152, 153, 154, 155, 156, 157, 158, 163, 164, 168, 174, 175, 177, 179, 185, 186, 187, 188, 189, 191, 193, 195, 201, 202, 210, 211, 213, 217, 218, 221, 226, 229, 232, 233, 238, 240], "summary": {"covered_lines": 93, "num_statements": 103, "percent_covered": 90.29126213592232, "percent_covered_display": "90.29", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 90.29126213592232, "percent_statements_covered_display": "90.29"}, "missing_lines": [122, 125, 159, 160, 161, 214, 234, 235, 236, 247], "excluded_lines": [], "functions": {"ResourceManager.__init__": {"executed_lines": [35], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "ResourceManager.process_vault_resources": {"executed_lines": [46, 49, 53], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 37}, "ResourceManager._calculate_net_resource_change": {"executed_lines": [69, 72, 73, 76, 77, 80, 83, 84, 87, 89], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 55}, "ResourceManager._calculate_consumption": {"executed_lines": [102, 105, 106, 108], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 98}, "ResourceManager._calculate_production": {"executed_lines": [118, 120, 121, 128, 129, 131, 132, 134], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [122, 125], "excluded_lines": [], "start_line": 114}, "ResourceManager._calculate_room_production": {"executed_lines": [138, 139, 140, 142, 147], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 136}, "ResourceManager._apply_room_production": {"executed_lines": [152, 153, 154, 155, 156, 157, 158], "summary": {"covered_lines": 7, "num_statements": 10, "percent_covered": 70.0, "percent_covered_display": "70.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 70.0, "percent_statements_covered_display": "70.00"}, "missing_lines": [159, 160, 161], "excluded_lines": [], "start_line": 150}, "ResourceManager._apply_resource_changes": {"executed_lines": [168], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 164}, "ResourceManager._check_resource_warnings": {"executed_lines": [177, 179, 185, 186, 187, 188, 189, 191], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 175}, "ResourceManager._log_resource_changes": {"executed_lines": [195], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 193}, "ResourceManager._get_vault_data": {"executed_lines": [210, 211, 213, 217, 218, 221, 226, 229, 232, 233, 238], "summary": {"covered_lines": 11, "num_statements": 15, "percent_covered": 73.33333333333333, "percent_covered_display": "73.33", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 73.33333333333333, "percent_statements_covered_display": "73.33"}, "missing_lines": [214, 234, 235, 236], "excluded_lines": [], "start_line": 202}, "ResourceManager.check_resource_availability": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [247], "excluded_lines": [], "start_line": 240}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 12, 13, 15, 18, 19, 20, 23, 24, 27, 28, 31, 34, 37, 55, 98, 114, 136, 149, 150, 163, 164, 174, 175, 193, 201, 202, 240], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ResourceManager": {"executed_lines": [35, 46, 49, 53, 69, 72, 73, 76, 77, 80, 83, 84, 87, 89, 102, 105, 106, 108, 118, 120, 121, 128, 129, 131, 132, 134, 138, 139, 140, 142, 147, 152, 153, 154, 155, 156, 157, 158, 168, 177, 179, 185, 186, 187, 188, 189, 191, 195, 210, 211, 213, 217, 218, 221, 226, 229, 232, 233, 238], "summary": {"covered_lines": 59, "num_statements": 69, "percent_covered": 85.5072463768116, "percent_covered_display": "85.51", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 85.5072463768116, "percent_statements_covered_display": "85.51"}, "missing_lines": [122, 125, 159, 160, 161, 214, 234, 235, 236, 247], "excluded_lines": [], "start_line": 31}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 12, 13, 15, 18, 19, 20, 23, 24, 27, 28, 31, 34, 37, 55, 98, 114, 136, 149, 150, 163, 164, 174, 175, 193, 201, 202, 240], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\training_service.py": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 23, 24, 26, 27, 48, 49, 51, 54, 55, 57, 59, 77, 78, 81, 82, 86, 87, 90, 93, 94, 96, 98, 99, 103, 104, 107, 109, 132, 133, 137, 139, 140, 144, 145, 151, 152, 154, 159, 162, 163, 176, 177, 178, 181, 183, 187, 192, 194, 234, 255, 256, 259, 263, 264, 265, 269, 270, 271, 273, 274, 277, 278, 279, 280, 283, 285, 287, 288, 290, 295, 297, 319, 320, 323, 327, 328, 329, 333, 334, 335, 338, 340, 342, 343, 345, 349, 353], "summary": {"covered_lines": 101, "num_statements": 130, "percent_covered": 77.6923076923077, "percent_covered_display": "77.69", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 77.6923076923077, "percent_statements_covered_display": "77.69"}, "missing_lines": [83, 91, 105, 134, 141, 146, 147, 148, 155, 156, 212, 213, 215, 218, 219, 222, 223, 224, 227, 228, 229, 230, 232, 257, 260, 266, 321, 324, 330], "excluded_lines": [], "functions": {"TrainingService.__init__": {"executed_lines": [24], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "TrainingService.calculate_training_duration": {"executed_lines": [48, 49, 51, 54, 55, 57], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "TrainingService.can_start_training": {"executed_lines": [77, 78, 81, 82, 86, 87, 90, 93, 94, 96, 98, 99, 103, 104, 107], "summary": {"covered_lines": 15, "num_statements": 18, "percent_covered": 83.33333333333333, "percent_covered_display": "83.33", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83.33"}, "missing_lines": [83, 91, 105], "excluded_lines": [], "start_line": 59}, "TrainingService.start_training": {"executed_lines": [132, 133, 137, 139, 140, 144, 145, 151, 152, 154, 159, 162, 163, 176, 177, 178, 181, 183, 187, 192], "summary": {"covered_lines": 20, "num_statements": 27, "percent_covered": 74.07407407407408, "percent_covered_display": "74.07", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 74.07407407407408, "percent_statements_covered_display": "74.07"}, "missing_lines": [134, 141, 146, 147, 148, 155, 156], "excluded_lines": [], "start_line": 109}, "TrainingService.update_training_progress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [212, 213, 215, 218, 219, 222, 223, 224, 227, 228, 229, 230, 232], "excluded_lines": [], "start_line": 194}, "TrainingService.complete_training": {"executed_lines": [255, 256, 259, 263, 264, 265, 269, 270, 271, 273, 274, 277, 278, 279, 280, 283, 285, 287, 288, 290, 295], "summary": {"covered_lines": 21, "num_statements": 24, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50"}, "missing_lines": [257, 260, 266], "excluded_lines": [], "start_line": 234}, "TrainingService.cancel_training": {"executed_lines": [319, 320, 323, 327, 328, 329, 333, 334, 335, 338, 340, 342, 343, 345, 349], "summary": {"covered_lines": 15, "num_statements": 18, "percent_covered": 83.33333333333333, "percent_covered_display": "83.33", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83.33"}, "missing_lines": [321, 324, 330], "excluded_lines": [], "start_line": 297}, "": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 23, 26, 27, 59, 109, 194, 234, 297, 353], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TrainingService": {"executed_lines": [24, 48, 49, 51, 54, 55, 57, 77, 78, 81, 82, 86, 87, 90, 93, 94, 96, 98, 99, 103, 104, 107, 132, 133, 137, 139, 140, 144, 145, 151, 152, 154, 159, 162, 163, 176, 177, 178, 181, 183, 187, 192, 255, 256, 259, 263, 264, 265, 269, 270, 271, 273, 274, 277, 278, 279, 280, 283, 285, 287, 288, 290, 295, 319, 320, 323, 327, 328, 329, 333, 334, 335, 338, 340, 342, 343, 345, 349], "summary": {"covered_lines": 78, "num_statements": 107, "percent_covered": 72.89719626168224, "percent_covered_display": "72.90", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 72.89719626168224, "percent_statements_covered_display": "72.90"}, "missing_lines": [83, 91, 105, 134, 141, 146, 147, 148, 155, 156, 212, 213, 215, 218, 219, 222, 223, 224, 227, 228, 229, 230, 232, 257, 260, 266, 321, 324, 330], "excluded_lines": [], "start_line": 20}, "": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 23, 26, 27, 59, 109, 194, 234, 297, 353], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\vault_service.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 29, 30, 31, 33, 34, 35, 36, 39, 40, 43, 44, 47, 48, 50, 59, 61, 69, 70, 71, 74, 75, 76, 79, 80, 84, 87, 88, 89, 90, 97, 98, 101, 102, 103, 106, 107, 108, 117, 120, 122, 124, 136, 137, 140, 141, 143, 145, 146, 147, 150, 152, 154, 157, 158, 160, 161, 164, 165, 166, 167, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 184, 185, 189, 192, 193, 194, 196, 198, 208, 210, 219, 220, 221, 224, 229, 232, 262, 270, 271, 273, 275, 277, 319, 321, 323, 326, 332, 333, 337, 361, 362, 363, 366, 367, 368, 373, 378, 379, 380, 381, 388, 393, 396, 399, 401, 403, 413], "summary": {"covered_lines": 137, "num_statements": 179, "percent_covered": 76.53631284916202, "percent_covered_display": "76.54", "missing_lines": 42, "excluded_lines": 0, "percent_statements_covered": 76.53631284916202, "percent_statements_covered_display": "76.54"}, "missing_lines": [186, 187, 233, 243, 244, 245, 246, 247, 251, 256, 258, 259, 260, 279, 282, 283, 284, 285, 286, 289, 291, 292, 294, 296, 297, 299, 302, 303, 304, 310, 311, 312, 314, 315, 316, 317, 327, 330, 334, 335, 405, 409], "excluded_lines": [], "functions": {"VaultService.__init__": {"executed_lines": [30, 31], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "VaultService._prepare_room_data": {"executed_lines": [35, 36, 39, 40, 43, 44, 47, 48, 50, 59], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "VaultService._prepare_initial_rooms": {"executed_lines": [69, 70, 71, 74, 75, 76, 79, 80, 84, 87, 88, 89, 90, 97, 98, 101, 102, 103, 106, 107, 108, 117, 120, 122], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 61}, "VaultService._create_initial_rooms": {"executed_lines": [136, 137, 140, 141, 143, 145, 146, 147, 150, 152, 154, 157, 158, 160, 161, 164, 165, 166, 167, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 184, 185, 189, 192, 193, 194, 196], "summary": {"covered_lines": 36, "num_statements": 38, "percent_covered": 94.73684210526316, "percent_covered_display": "94.74", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 94.73684210526316, "percent_statements_covered_display": "94.74"}, "missing_lines": [186, 187], "excluded_lines": [], "start_line": 124}, "VaultService._create_initial_dwellers": {"executed_lines": [208, 210, 219, 220, 221, 224, 229, 232], "summary": {"covered_lines": 8, "num_statements": 19, "percent_covered": 42.10526315789474, "percent_covered_display": "42.11", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 42.10526315789474, "percent_statements_covered_display": "42.11"}, "missing_lines": [233, 243, 244, 245, 246, 247, 251, 256, 258, 259, 260], "excluded_lines": [], "start_line": 198}, "VaultService._start_training_sessions": {"executed_lines": [270, 271, 273, 275, 277], "summary": {"covered_lines": 5, "num_statements": 28, "percent_covered": 17.857142857142858, "percent_covered_display": "17.86", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 17.857142857142858, "percent_statements_covered_display": "17.86"}, "missing_lines": [279, 282, 283, 284, 285, 286, 289, 291, 292, 294, 296, 297, 299, 302, 303, 304, 310, 311, 312, 314, 315, 316, 317], "excluded_lines": [], "start_line": 262}, "VaultService._assign_initial_objectives": {"executed_lines": [321, 323, 326, 332, 333], "summary": {"covered_lines": 5, "num_statements": 9, "percent_covered": 55.55555555555556, "percent_covered_display": "55.56", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 55.55555555555556, "percent_statements_covered_display": "55.56"}, "missing_lines": [327, 330, 334, 335], "excluded_lines": [], "start_line": 319}, "VaultService.initiate_vault": {"executed_lines": [361, 362, 363, 366, 367, 368, 373, 378, 379, 380, 381, 388, 393, 396, 399, 401], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 337}, "VaultService.update_vault_resources": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [405, 409], "excluded_lines": [], "start_line": 403}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 29, 33, 34, 61, 124, 198, 262, 319, 337, 403, 413], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"VaultService": {"executed_lines": [30, 31, 35, 36, 39, 40, 43, 44, 47, 48, 50, 59, 69, 70, 71, 74, 75, 76, 79, 80, 84, 87, 88, 89, 90, 97, 98, 101, 102, 103, 106, 107, 108, 117, 120, 122, 136, 137, 140, 141, 143, 145, 146, 147, 150, 152, 154, 157, 158, 160, 161, 164, 165, 166, 167, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 184, 185, 189, 192, 193, 194, 196, 208, 210, 219, 220, 221, 224, 229, 232, 270, 271, 273, 275, 277, 321, 323, 326, 332, 333, 361, 362, 363, 366, 367, 368, 373, 378, 379, 380, 381, 388, 393, 396, 399, 401], "summary": {"covered_lines": 106, "num_statements": 148, "percent_covered": 71.62162162162163, "percent_covered_display": "71.62", "missing_lines": 42, "excluded_lines": 0, "percent_statements_covered": 71.62162162162163, "percent_statements_covered_display": "71.62"}, "missing_lines": [186, 187, 233, 243, 244, 245, 246, 247, 251, 256, 258, 259, 260, 279, 282, 283, 284, 285, 286, 289, 291, 292, 294, 296, 297, 299, 302, 303, 304, 310, 311, 312, 314, 315, 316, 317, 327, 330, 334, 335, 405, 409], "excluded_lines": [], "start_line": 26}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 29, 33, 34, 61, 124, 198, 262, 319, 337, 403, 413], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\websocket_manager.py": {"executed_lines": [1, 2, 4, 7, 10, 12, 14, 16, 23, 32, 34, 48, 53, 61, 71, 86, 96], "summary": {"covered_lines": 17, "num_statements": 58, "percent_covered": 29.310344827586206, "percent_covered_display": "29.31", "missing_lines": 41, "excluded_lines": 0, "percent_statements_covered": 29.310344827586206, "percent_statements_covered_display": "29.31"}, "missing_lines": [18, 19, 20, 21, 25, 26, 27, 29, 30, 36, 37, 38, 39, 40, 42, 45, 46, 50, 51, 55, 56, 57, 58, 59, 63, 64, 65, 66, 68, 69, 73, 74, 75, 76, 77, 78, 79, 80, 83, 84, 88], "excluded_lines": [], "functions": {"ConnectionManager.__init__": {"executed_lines": [12, 14], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "ConnectionManager.connect": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [18, 19, 20, 21], "excluded_lines": [], "start_line": 16}, "ConnectionManager.disconnect": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [25, 26, 27, 29, 30], "excluded_lines": [], "start_line": 23}, "ConnectionManager.send_personal_message": {"executed_lines": [34], "summary": {"covered_lines": 1, "num_statements": 9, "percent_covered": 11.11111111111111, "percent_covered_display": "11.11", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 11.11111111111111, "percent_statements_covered_display": "11.11"}, "missing_lines": [36, 37, 38, 39, 40, 42, 45, 46], "excluded_lines": [], "start_line": 32}, "ConnectionManager.broadcast_to_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [50, 51], "excluded_lines": [], "start_line": 48}, "ConnectionManager.connect_chat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [55, 56, 57, 58, 59], "excluded_lines": [], "start_line": 53}, "ConnectionManager.disconnect_chat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [63, 64, 65, 66, 68, 69], "excluded_lines": [], "start_line": 61}, "ConnectionManager.send_chat_message": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [73, 74, 75, 76, 77, 78, 79, 80, 83, 84], "excluded_lines": [], "start_line": 71}, "ConnectionManager.send_typing_indicator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [88], "excluded_lines": [], "start_line": 86}, "": {"executed_lines": [1, 2, 4, 7, 10, 16, 23, 32, 48, 53, 61, 71, 86, 96], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ConnectionManager": {"executed_lines": [12, 14, 34], "summary": {"covered_lines": 3, "num_statements": 44, "percent_covered": 6.818181818181818, "percent_covered_display": "6.82", "missing_lines": 41, "excluded_lines": 0, "percent_statements_covered": 6.818181818181818, "percent_statements_covered_display": "6.82"}, "missing_lines": [18, 19, 20, 21, 25, 26, 27, 29, 30, 36, 37, 38, 39, 40, 42, 45, 46, 50, 51, 55, 56, 57, 58, 59, 63, 64, 65, 66, 68, 69, 73, 74, 75, 76, 77, 78, 79, 80, 83, 84, 88], "excluded_lines": [], "start_line": 7}, "": {"executed_lines": [1, 2, 4, 7, 10, 16, 23, 32, 48, 53, 61, 71, 86, 96], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\dwellers.py": {"executed_lines": [1, 2, 4, 6, 7, 9, 12, 14, 17, 19, 20, 23, 26, 27, 28, 29, 30, 31], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"get_gender_based_name": {"executed_lines": [14], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "get_stats_by_rarity": {"executed_lines": [19, 20], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "create_random_common_dweller": {"executed_lines": [26, 27, 28, 29, 30, 31], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [1, 2, 4, 6, 7, 9, 12, 17, 23], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 4, 6, 7, 9, 12, 14, 17, 19, 20, 23, 26, 27, 28, 29, 30, 31], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\exceptions.py": {"executed_lines": [1, 2, 4, 5, 7, 10, 18, 24, 34, 41, 42, 45, 54, 64, 72, 73, 76, 84, 89, 92, 100, 109, 117, 122, 125, 130, 133, 136, 144, 151, 160, 166, 167, 168, 169, 172, 180, 187, 191, 195, 199], "summary": {"covered_lines": 41, "num_statements": 54, "percent_covered": 75.92592592592592, "percent_covered_display": "75.93", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 75.92592592592592, "percent_statements_covered_display": "75.93"}, "missing_lines": [21, 60, 61, 105, 106, 145, 146, 147, 148, 181, 182, 183, 184], "excluded_lines": [], "functions": {"AccessDeniedException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [21], "excluded_lines": [], "start_line": 18}, "ResourceNotFoundException.__init__": {"executed_lines": [41, 42], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "ResourceAlreadyExistsException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [60, 61], "excluded_lines": [], "start_line": 54}, "ResourceConflictException.__init__": {"executed_lines": [73], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 72}, "ContentNoChangeException.__init__": {"executed_lines": [89], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 84}, "InvalidItemAssignmentException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [105, 106], "excluded_lines": [], "start_line": 100}, "InvalidVaultTransferException.__init__": {"executed_lines": [122], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 117}, "VaultOperationException.__init__": {"executed_lines": [133], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 130}, "NoSpaceAvailableException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [145, 146, 147, 148], "excluded_lines": [], "start_line": 144}, "InsufficientResourcesException.__init__": {"executed_lines": [166, 167, 168, 169], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 160}, "UniqueRoomViolationException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [181, 182, 183, 184], "excluded_lines": [], "start_line": 180}, "": {"executed_lines": [1, 2, 4, 5, 7, 10, 18, 24, 34, 45, 54, 64, 72, 76, 84, 92, 100, 109, 117, 125, 130, 136, 144, 151, 160, 172, 180, 187, 191, 195, 199], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AccessDeniedException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [21], "excluded_lines": [], "start_line": 10}, "ResourceNotFoundException": {"executed_lines": [41, 42], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "ResourceAlreadyExistsException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [60, 61], "excluded_lines": [], "start_line": 45}, "ResourceConflictException": {"executed_lines": [73], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 64}, "ContentNoChangeException": {"executed_lines": [89], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 76}, "InvalidItemAssignmentException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [105, 106], "excluded_lines": [], "start_line": 92}, "InvalidVaultTransferException": {"executed_lines": [122], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 109}, "VaultOperationException": {"executed_lines": [133], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 125}, "NoSpaceAvailableException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [145, 146, 147, 148], "excluded_lines": [], "start_line": 136}, "InsufficientResourcesException": {"executed_lines": [166, 167, 168, 169], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 151}, "UniqueRoomViolationException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [181, 182, 183, 184], "excluded_lines": [], "start_line": 172}, "MinioError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 187}, "BucketNotFoundError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 191}, "FileUploadError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 195}, "FileDownloadError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 199}, "": {"executed_lines": [1, 2, 4, 5, 7, 10, 18, 24, 34, 45, 54, 64, 72, 76, 84, 92, 100, 109, 117, 125, 130, 136, 144, 151, 160, 172, 180, 187, 191, 195, 199], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\image_processing.py": {"executed_lines": [1, 2, 4, 5, 7, 10, 23], "summary": {"covered_lines": 7, "num_statements": 20, "percent_covered": 35.0, "percent_covered_display": "35.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 35.0, "percent_statements_covered_display": "35.00"}, "missing_lines": [12, 13, 14, 15, 16, 17, 18, 20, 25, 26, 27, 28, 29], "excluded_lines": [], "functions": {"image_url_to_bytes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [12, 13, 14, 15, 16, 17, 18, 20], "excluded_lines": [], "start_line": 10}, "generate_thumbnail": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [25, 26, 27, 28, 29], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [1, 2, 4, 5, 7, 10, 23], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 7, 10, 23], "summary": {"covered_lines": 7, "num_statements": 20, "percent_covered": 35.0, "percent_covered_display": "35.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 35.0, "percent_statements_covered_display": "35.00"}, "missing_lines": [12, 13, 14, 15, 16, 17, 18, 20, 25, 26, 27, 28, 29], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\load_quests.py": {"executed_lines": [1, 2, 3, 5, 7, 10, 20, 21, 22, 23, 27, 30, 31, 34, 45, 50, 52, 53, 54, 56, 57, 58, 59, 60, 63, 64, 66, 67], "summary": {"covered_lines": 28, "num_statements": 31, "percent_covered": 90.3225806451613, "percent_covered_display": "90.32", "missing_lines": 3, "excluded_lines": 6, "percent_statements_covered": 90.3225806451613, "percent_statements_covered_display": "90.32"}, "missing_lines": [24, 47, 48], "excluded_lines": [70, 71, 73, 74, 75, 76], "functions": {"load_quest_chain_from_json": {"executed_lines": [20, 21, 22, 23, 27, 30, 31], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50"}, "missing_lines": [24], "excluded_lines": [], "start_line": 10}, "load_all_quest_chain_files": {"executed_lines": [45, 50, 52, 53, 54, 56, 57, 58, 59, 60, 63, 64, 66, 67], "summary": {"covered_lines": 14, "num_statements": 16, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50"}, "missing_lines": [47, 48], "excluded_lines": [], "start_line": 34}, "": {"executed_lines": [1, 2, 3, 5, 7, 10, 34], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 6, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [70, 71, 73, 74, 75, 76], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 5, 7, 10, 20, 21, 22, 23, 27, 30, 31, 34, 45, 50, 52, 53, 54, 56, 57, 58, 59, 60, 63, 64, 66, 67], "summary": {"covered_lines": 28, "num_statements": 31, "percent_covered": 90.3225806451613, "percent_covered_display": "90.32", "missing_lines": 3, "excluded_lines": 6, "percent_statements_covered": 90.3225806451613, "percent_statements_covered_display": "90.32"}, "missing_lines": [24, 47, 48], "excluded_lines": [70, 71, 73, 74, 75, 76], "start_line": 1}}}, "app\\utils\\partial.py": {"executed_lines": [5, 6, 7, 9, 10, 12, 15, 21, 22, 24, 25, 27, 28, 29, 30, 31, 33, 36, 47], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 95.0, "percent_covered_display": "95.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95.00"}, "missing_lines": [34], "excluded_lines": [], "functions": {"optional": {"executed_lines": [21, 22, 24, 47], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "optional.wrapper": {"executed_lines": [25, 27, 33, 36], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [34], "excluded_lines": [], "start_line": 24}, "optional.wrapper.make_field_optional": {"executed_lines": [28, 29, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "": {"executed_lines": [5, 6, 7, 9, 10, 12, 15], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [5, 6, 7, 9, 10, 12, 15, 21, 22, 24, 25, 27, 28, 29, 30, 31, 33, 36, 47], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 95.0, "percent_covered_display": "95.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95.00"}, "missing_lines": [34], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\seed_objectives.py": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 13, 16, 27, 28, 31, 32, 33, 36, 37, 38, 39, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 53, 56, 57, 60, 61, 62, 63, 67, 68, 69, 71, 72, 73, 75, 76, 77, 78, 79, 80], "summary": {"covered_lines": 47, "num_statements": 48, "percent_covered": 97.91666666666667, "percent_covered_display": "97.92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.91666666666667, "percent_statements_covered_display": "97.92"}, "missing_lines": [29], "excluded_lines": [], "functions": {"seed_objectives_from_json": {"executed_lines": [27, 28, 31, 32, 33, 36, 37, 38, 39, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 53, 56, 57, 60, 61, 62, 63, 67, 68, 69, 71, 72, 73, 75, 76, 77, 78, 79, 80], "summary": {"covered_lines": 38, "num_statements": 39, "percent_covered": 97.43589743589743, "percent_covered_display": "97.44", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.43589743589743, "percent_statements_covered_display": "97.44"}, "missing_lines": [29], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 13, 16], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 13, 16, 27, 28, 31, 32, 33, 36, 37, 38, 39, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 53, 56, 57, 60, 61, 62, 63, 67, 68, 69, 71, 72, 73, 75, 76, 77, 78, 79, 80], "summary": {"covered_lines": 47, "num_statements": 48, "percent_covered": 97.91666666666667, "percent_covered_display": "97.92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.91666666666667, "percent_statements_covered_display": "97.92"}, "missing_lines": [29], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\seed_quests.py": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 13, 16, 27, 29, 32, 33, 34, 36, 39, 40, 43, 44, 46, 47, 56, 57, 58, 60, 61, 62, 64, 65, 66, 67, 68, 69], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"seed_quests_from_json": {"executed_lines": [27, 29, 32, 33, 34, 36, 39, 40, 43, 44, 46, 47, 56, 57, 58, 60, 61, 62, 64, 65, 66, 67, 68, 69], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 13, 16], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 13, 16, 27, 29, 32, 33, 34, 36, 39, 40, 43, 44, 46, 47, 56, 57, 58, 60, 61, 62, 64, 65, 66, 67, 68, 69], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\static_data.py": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 38, 39, 44, 45, 55, 56, 61, 62, 63, 64, 65, 67, 78, 79, 81, 82, 85, 86, 88, 90, 92, 93, 105, 106, 122, 123, 124, 125, 126, 127, 133], "summary": {"covered_lines": 56, "num_statements": 97, "percent_covered": 57.7319587628866, "percent_covered_display": "57.73", "missing_lines": 41, "excluded_lines": 0, "percent_statements_covered": 57.7319587628866, "percent_statements_covered_display": "57.73"}, "missing_lines": [32, 33, 34, 35, 36, 40, 41, 42, 46, 47, 48, 49, 50, 51, 52, 53, 57, 58, 59, 95, 96, 98, 99, 100, 101, 102, 103, 108, 109, 110, 111, 112, 113, 114, 115, 118, 119, 120, 128, 129, 130], "excluded_lines": [], "functions": {"StaticGameData.__init__": {"executed_lines": [22, 23, 24, 25, 26, 27, 28], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "StaticGameData.dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [32, 33, 34, 35, 36], "excluded_lines": [], "start_line": 31}, "StaticGameData.junk_items": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40, 41, 42], "excluded_lines": [], "start_line": 39}, "StaticGameData.outfits": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [46, 47, 48, 49, 50, 51, 52, 53], "excluded_lines": [], "start_line": 45}, "StaticGameData.weapons": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [57, 58, 59], "excluded_lines": [], "start_line": 56}, "StaticGameData.rooms": {"executed_lines": [63, 64, 65], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 62}, "StaticGameData.get_buildable_rooms": {"executed_lines": [78, 79, 81, 82, 85, 86, 88, 90], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 67}, "StaticGameData.quests": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [95, 96, 98, 99, 100, 101, 102, 103], "excluded_lines": [], "start_line": 93}, "StaticGameData.objectives": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [108, 109, 110, 111, 112, 113, 114, 115, 118, 119, 120], "excluded_lines": [], "start_line": 106}, "StaticGameData.load_data": {"executed_lines": [124, 125, 126, 127], "summary": {"covered_lines": 4, "num_statements": 7, "percent_covered": 57.142857142857146, "percent_covered_display": "57.14", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57.14"}, "missing_lines": [128, 129, 130], "excluded_lines": [], "start_line": 123}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 20, 21, 30, 31, 38, 39, 44, 45, 55, 56, 61, 62, 67, 92, 93, 105, 106, 122, 123, 133], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"StaticGameData": {"executed_lines": [22, 23, 24, 25, 26, 27, 28, 63, 64, 65, 78, 79, 81, 82, 85, 86, 88, 90, 124, 125, 126, 127], "summary": {"covered_lines": 22, "num_statements": 63, "percent_covered": 34.92063492063492, "percent_covered_display": "34.92", "missing_lines": 41, "excluded_lines": 0, "percent_statements_covered": 34.92063492063492, "percent_statements_covered_display": "34.92"}, "missing_lines": [32, 33, 34, 35, 36, 40, 41, 42, 46, 47, 48, 49, 50, 51, 52, 53, 57, 58, 59, 95, 96, 98, 99, 100, 101, 102, 103, 108, 109, 110, 111, 112, 113, 114, 115, 118, 119, 120, 128, 129, 130], "excluded_lines": [], "start_line": 20}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 20, 21, 30, 31, 38, 39, 44, 45, 55, 56, 61, 62, 67, 92, 93, 105, 106, 122, 123, 133], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\version.py": {"executed_lines": [7, 8, 11, 12, 17, 24, 26, 27, 28, 29, 34, 41], "summary": {"covered_lines": 12, "num_statements": 16, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [13, 14, 30, 31], "excluded_lines": [], "functions": {"get_app_version": {"executed_lines": [24, 26, 27, 28, 29], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71.43", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71.43"}, "missing_lines": [30, 31], "excluded_lines": [], "start_line": 17}, "get_python_version": {"executed_lines": [41], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "": {"executed_lines": [7, 8, 11, 12, 17, 34], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [13, 14], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [7, 8, 11, 12, 17, 24, 26, 27, 28, 29, 34, 41], "summary": {"covered_lines": 12, "num_statements": 16, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [13, 14, 30, 31], "excluded_lines": [], "start_line": 1}}}}, "totals": {"covered_lines": 5386, "num_statements": 8099, "percent_covered": 66.50203728855415, "percent_covered_display": "66.50", "missing_lines": 2713, "excluded_lines": 76, "percent_statements_covered": 66.50203728855415, "percent_statements_covered_display": "66.50"}} diff --git a/frontend/src/modules/dwellers/components/death/DeadDwellerCard.vue b/frontend/src/modules/dwellers/components/death/DeadDwellerCard.vue new file mode 100644 index 00000000..4af7233f --- /dev/null +++ b/frontend/src/modules/dwellers/components/death/DeadDwellerCard.vue @@ -0,0 +1,160 @@ + + + + + diff --git a/frontend/src/modules/dwellers/components/death/LifeDeathStatistics.vue b/frontend/src/modules/dwellers/components/death/LifeDeathStatistics.vue new file mode 100644 index 00000000..ccab6262 --- /dev/null +++ b/frontend/src/modules/dwellers/components/death/LifeDeathStatistics.vue @@ -0,0 +1,142 @@ + + + + + diff --git a/frontend/src/modules/dwellers/components/death/RevivalSection.vue b/frontend/src/modules/dwellers/components/death/RevivalSection.vue new file mode 100644 index 00000000..67437d27 --- /dev/null +++ b/frontend/src/modules/dwellers/components/death/RevivalSection.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/frontend/src/modules/dwellers/components/death/index.ts b/frontend/src/modules/dwellers/components/death/index.ts new file mode 100644 index 00000000..3164e52d --- /dev/null +++ b/frontend/src/modules/dwellers/components/death/index.ts @@ -0,0 +1,3 @@ +export { default as DeadDwellerCard } from './DeadDwellerCard.vue' +export { default as RevivalSection } from './RevivalSection.vue' +export { default as LifeDeathStatistics } from './LifeDeathStatistics.vue' diff --git a/frontend/src/modules/dwellers/models/dweller.ts b/frontend/src/modules/dwellers/models/dweller.ts index 816a648b..7df11222 100644 --- a/frontend/src/modules/dwellers/models/dweller.ts +++ b/frontend/src/modules/dwellers/models/dweller.ts @@ -8,6 +8,12 @@ export type DwellerShort = components['schemas']['DwellerReadLess'] export type DwellerCreate = components['schemas']['DwellerCreate'] export type DwellerUpdate = components['schemas']['DwellerUpdate'] +// Death system types +export type DeathCause = components['schemas']['DeathCauseEnum'] +export type DwellerDead = components['schemas']['DwellerDeadRead'] +export type DwellerReviveResponse = components['schemas']['DwellerReviveResponse'] +export type RevivalCostResponse = components['schemas']['RevivalCostResponse'] + // Helper type for SPECIAL stats export interface Special { strength: number diff --git a/frontend/src/modules/dwellers/models/index.ts b/frontend/src/modules/dwellers/models/index.ts index 53fa0443..ecddf878 100644 --- a/frontend/src/modules/dwellers/models/index.ts +++ b/frontend/src/modules/dwellers/models/index.ts @@ -5,5 +5,10 @@ export type { DwellerCreate, DwellerUpdate, Special, - VisualAttributes + VisualAttributes, + // Death system types + DeathCause, + DwellerDead, + DwellerReviveResponse, + RevivalCostResponse } from './dweller' diff --git a/frontend/src/modules/dwellers/stores/dweller.ts b/frontend/src/modules/dwellers/stores/dweller.ts index a2d29259..63bd3ecb 100644 --- a/frontend/src/modules/dwellers/stores/dweller.ts +++ b/frontend/src/modules/dwellers/stores/dweller.ts @@ -2,7 +2,7 @@ import { ref, computed } from 'vue'; import { defineStore } from 'pinia'; import { useLocalStorage } from '@vueuse/core'; import axios from '@/core/plugins/axios'; -import type { Dweller, DwellerShort } from '../models/dweller'; +import type { Dweller, DwellerShort, DwellerDead, DwellerReviveResponse, RevivalCostResponse } from '../models/dweller'; import { useToast } from '@/core/composables/useToast'; export type DwellerStatus = 'idle' | 'working' | 'exploring' | 'training' | 'resting' | 'dead' @@ -30,7 +30,10 @@ export const useDwellerStore = defineStore('dweller', () => { // State const dwellers = ref([]); const detailedDwellers = ref>({}); + const deadDwellers = ref([]); + const graveyardDwellers = ref([]); const isLoading = ref(false); + const isDeadLoading = ref(false); // Filter and sort state (persisted in localStorage) const filterStatus = useLocalStorage('dwellerFilterStatus', 'all'); @@ -438,11 +441,128 @@ export const useDwellerStore = defineStore('dweller', () => { } } + // ================================ + // Death System Actions + // ================================ + + /** + * Fetch dead dwellers (revivable) for a vault + */ + async function fetchDeadDwellers(vaultId: string, token: string): Promise { + isDeadLoading.value = true; + try { + const response = await axios.get( + `/api/v1/dwellers/vault/${vaultId}/dead`, + { + headers: { + Authorization: `Bearer ${token}` + } + } + ); + deadDwellers.value = response.data; + return response.data; + } catch (error) { + console.error(`Failed to fetch dead dwellers for vault ${vaultId}`, error); + return []; + } finally { + isDeadLoading.value = false; + } + } + + /** + * Fetch graveyard (permanently dead) dwellers for a vault + */ + async function fetchGraveyard(vaultId: string, token: string): Promise { + isDeadLoading.value = true; + try { + const response = await axios.get( + `/api/v1/dwellers/vault/${vaultId}/graveyard`, + { + headers: { + Authorization: `Bearer ${token}` + } + } + ); + graveyardDwellers.value = response.data; + return response.data; + } catch (error) { + console.error(`Failed to fetch graveyard for vault ${vaultId}`, error); + return []; + } finally { + isDeadLoading.value = false; + } + } + + /** + * Get revival cost for a dead dweller + */ + async function getRevivalCost(dwellerId: string, token: string): Promise { + try { + const response = await axios.get( + `/api/v1/dwellers/${dwellerId}/revival_cost`, + { + headers: { + Authorization: `Bearer ${token}` + } + } + ); + return response.data; + } catch (error: unknown) { + const errorMessage = (error as { + response?: { data?: { detail?: string } } + })?.response?.data?.detail || 'Failed to get revival cost'; + console.error(`Failed to get revival cost for dweller ${dwellerId}`, error); + toast.error(errorMessage); + return null; + } + } + + /** + * Revive a dead dweller + */ + async function reviveDweller(dwellerId: string, token: string): Promise { + try { + const response = await axios.post( + `/api/v1/dwellers/${dwellerId}/revive`, + null, + { + headers: { + Authorization: `Bearer ${token}` + } + } + ); + + // Remove from dead dwellers list + deadDwellers.value = deadDwellers.value.filter(d => d.id !== dwellerId); + + // Add revived dweller to main list + const revivedDweller = response.data.dweller; + const existingIndex = dwellers.value.findIndex(d => d.id === dwellerId); + if (existingIndex === -1) { + // Type cast needed since DwellerRead may have slightly different shape than DwellerShort + dwellers.value.push(revivedDweller as unknown as DwellerShort); + } + + toast.success(`${revivedDweller.first_name} has been revived! Caps spent: ${response.data.caps_spent}`); + return response.data; + } catch (error: unknown) { + const errorMessage = (error as { + response?: { data?: { detail?: string } } + })?.response?.data?.detail || 'Failed to revive dweller'; + console.error(`Failed to revive dweller ${dwellerId}`, error); + toast.error(errorMessage); + return null; + } + } + return { // State dwellers, detailedDwellers, + deadDwellers, + graveyardDwellers, isLoading, + isDeadLoading, filterStatus, sortBy, sortDirection, @@ -468,6 +588,11 @@ export const useDwellerStore = defineStore('dweller', () => { setFilterStatus, setSortBy, setSortDirection, - setViewMode + setViewMode, + // Death system + fetchDeadDwellers, + fetchGraveyard, + getRevivalCost, + reviveDweller }; }); diff --git a/frontend/src/modules/profile/stores/profile.ts b/frontend/src/modules/profile/stores/profile.ts index 08f993c3..5e873f28 100644 --- a/frontend/src/modules/profile/stores/profile.ts +++ b/frontend/src/modules/profile/stores/profile.ts @@ -4,10 +4,27 @@ import type { UserProfile, ProfileUpdate } from '../models/profile' import axios from '@/core/plugins/axios' import { useTheme, type ThemeName } from '@/core/composables/useTheme' +// Death statistics type (matches backend response) +export interface DeathStatistics { + total_dwellers_born: number + total_dwellers_died: number + deaths_by_cause: { + health: number + radiation: number + incident: number + exploration: number + combat: number + } + revivable_count: number + permanently_dead_count: number +} + export const useProfileStore = defineStore('profile', () => { // State const profile = ref(null) + const deathStatistics = ref(null) const loading = ref(false) + const deathStatsLoading = ref(false) const error = ref(null) // Getters @@ -64,6 +81,20 @@ export const useProfileStore = defineStore('profile', () => { } } + async function fetchDeathStatistics(): Promise { + deathStatsLoading.value = true + try { + const response = await axios.get('/api/v1/users/me/profile/statistics') + deathStatistics.value = response.data + return response.data + } catch (err: any) { + console.error('Failed to fetch death statistics:', err) + return null + } finally { + deathStatsLoading.value = false + } + } + function clearError(): void { error.value = null } @@ -71,7 +102,9 @@ export const useProfileStore = defineStore('profile', () => { return { // State profile, + deathStatistics, loading, + deathStatsLoading, error, // Getters hasProfile, @@ -79,6 +112,7 @@ export const useProfileStore = defineStore('profile', () => { // Actions fetchProfile, updateProfile, + fetchDeathStatistics, clearError } }) From bd4dc61b6aa4be25f846897811619d4f1755ed90 Mon Sep 17 00:00:00 2001 From: Dmytro Nedavnii Date: Fri, 23 Jan 2026 00:03:31 +0200 Subject: [PATCH 02/17] feat(death): complete frontend view integrations and fix tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add GraveyardView for permanently deceased dwellers - Update DwellersView with dead dweller section and graveyard navigation - Update DwellerDetailView with RevivalSection and permanent death notice - Restyle ProfileView to terminal theme with LifeDeathStatistics - Add Celery task for daily permanent death processing - Fix vault.caps → vault.bottle_caps in death_service - Update ProfileView.test.ts to test LifeDeathStatistics (removed ProfileStats) - Add death system tests to dweller and profile store tests - All 683 frontend tests passing --- ROADMAP.md | 54 +- backend/app/api/celery_task.py | 38 ++ backend/app/core/celery.py | 5 + backend/app/services/death_service.py | 6 +- .../tests/test_services/test_death_service.py | 513 ++++++++++++++++++ backend/coverage.json | 2 +- frontend/src/modules/dwellers/routes/index.ts | 6 + .../dwellers/views/DwellerDetailView.vue | 79 ++- .../modules/dwellers/views/DwellersView.vue | 90 ++- .../modules/dwellers/views/GraveyardView.vue | 166 ++++++ .../src/modules/profile/views/ProfileView.vue | 124 ++--- frontend/tests/unit/stores/dweller.test.ts | 114 ++++ frontend/tests/unit/stores/profile.test.ts | 61 +++ frontend/tests/unit/views/ProfileView.test.ts | 172 +++--- 14 files changed, 1272 insertions(+), 158 deletions(-) create mode 100644 backend/app/tests/test_services/test_death_service.py create mode 100644 frontend/src/modules/dwellers/views/GraveyardView.vue diff --git a/ROADMAP.md b/ROADMAP.md index 4e0f77b8..3af01f94 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -8,6 +8,32 @@ Build a fully-featured vault management simulation inspired by Fallout Shelter, ## Recent Completions +### v2.1.4 Death System (January 22, 2026) +- **Death Mechanics**: Full life/death cycle for dwellers + - Death model fields: `is_dead`, `death_timestamp`, `death_cause`, `is_permanently_dead`, `epitaph` + - Death causes: health, radiation, incident, exploration, combat + - Auto-generated epitaphs based on death cause + - 7-day revival window before permanent death +- **Revival System**: Tiered revival costs by level + - Level 1-5: 50-250 caps + - Level 6-10: 450-750 caps + - Level 11+: 1100-2000 caps (capped) + - Revival restores 50% max health +- **Backend**: Complete death service and API + - `POST /api/v1/dwellers/{id}/revive` - Revive dead dweller + - `GET /api/v1/dwellers/{id}/revival_cost` - Get revival cost + - `GET /api/v1/dwellers/vault/{id}/dead` - List dead (revivable) dwellers + - `GET /api/v1/dwellers/vault/{id}/graveyard` - List permanently dead + - `GET /api/v1/users/me/profile/statistics` - Death statistics + - Celery task for daily permanent death check +- **Frontend**: Death UI components + - `DeadDwellerCard.vue` - Card for deceased dwellers + - `RevivalSection.vue` - Revival cost and action UI + - `LifeDeathStatistics.vue` - Death stats dashboard + - `GraveyardView.vue` - Memorial for permanently dead + - Integration in DwellersView, DwellerDetailView, ProfileView +- **Tests**: 23 backend + 10 frontend tests for death system + ### v2.1.3 Backend & Frontend Cleanup (January 22, 2026) - **Router Consolidation**: Reduced router count from 23 to 20 - Merged `settings.py` → `game_control.py` (`/game/balance`) @@ -70,20 +96,17 @@ Build a fully-featured vault management simulation inspired by Fallout Shelter, --- -## Next Sprint: Death System (P1) - -**Target: v2.3.0** +## Next Sprint: UX Enhancements (P1) -### Death Mechanics -- [ ] **Death State** - is_dead flag, death_timestamp on dweller model -- [ ] **Death Triggers** - Health reaches 0, radiation threshold -- [ ] **Revival System** - Level × 50 caps cost, max 1000 +**Target: v2.2.0** -### Death UI -- [ ] Death notification modal -- [ ] Grayed-out dweller cards for dead dwellers -- [ ] Revival button with cost display -- [ ] Memorial/death log (optional) +### Death System ✅ COMPLETED (v2.1.4) +- [x] **Death State** - is_dead flag, death_timestamp, death_cause on dweller model +- [x] **Death Triggers** - Health reaches 0, radiation threshold, incidents, exploration +- [x] **Revival System** - Tiered pricing based on level (50-2000 caps) +- [x] **Permanent Death** - 7-day window, Celery task for daily check +- [x] **Death UI** - Dead dweller cards, revival section, graveyard view +- [x] **Death Statistics** - Births, deaths by cause, mortality rate --- @@ -156,14 +179,15 @@ Build a fully-featured vault management simulation inspired by Fallout Shelter, ### Version Milestones | Version | Release | Highlights | |---------|---------|------------| +| v2.1.4 | Jan 22, 2026 | Death system complete | +| v2.1.3 | Jan 22, 2026 | Router consolidation | | v2.1.2 | Jan 22, 2026 | Quick wins complete | | v2.1.1 | Jan 22, 2026 | UI polish, planning | | v2.1.0 | Jan 22, 2026 | Modular frontend architecture | | v2.0.0 | Jan 22, 2026 | Major release, deployment ready | | v1.4.2 | Jan 21, 2026 | Final v1.x release | -| v2.2.0 | Feb 2026 | Backend stability, testing (planned) | -| v2.3.0 | Feb 2026 | Death system (planned) | -| v2.4.0 | Mar 2026 | Motion Vue, UX polish (planned) | +| v2.2.0 | Feb 2026 | Backend stability, UX polish (planned) | +| v2.3.0 | Mar 2026 | Motion Vue, animations (planned) | --- diff --git a/backend/app/api/celery_task.py b/backend/app/api/celery_task.py index 93535532..94aefa31 100644 --- a/backend/app/api/celery_task.py +++ b/backend/app/api/celery_task.py @@ -6,6 +6,7 @@ from pydantic import UUID4 from app.core.celery import celery_app +from app.services.death_service import death_service from app.services.game_loop import game_loop_service logger = logging.getLogger(__name__) @@ -98,3 +99,40 @@ async def run_vault_tick(): else: logger.info(f"Vault {vault_id} tick completed") return result + + +@celery_app.task(name="check_permanent_deaths", bind=True) +def check_permanent_deaths_task(self): + """ + Check for dead dwellers past the revival window and mark them as permanently dead. + Scheduled to run daily via Celery Beat. + """ + try: + logger.info("Starting permanent death check") + + async def run_check(): + from sqlalchemy.ext.asyncio import async_sessionmaker, create_async_engine + + from app.core.config import settings + + engine = create_async_engine( + str(settings.ASYNC_DATABASE_URI), + echo=False, + future=True, + pool_pre_ping=True, + ) + session_maker = async_sessionmaker(engine, expire_on_commit=False) + + async with session_maker() as session: + count = await death_service.check_and_mark_permanent_deaths(session) + await session.commit() + await engine.dispose() + return count + + count = asyncio.run(run_check()) + except Exception as e: + logger.exception("Permanent death check failed") + raise self.retry(exc=e, countdown=3600) from e # Retry in 1 hour + else: + logger.info(f"Permanent death check completed: {count} dwellers marked as permanently dead") + return {"marked_permanently_dead": count} diff --git a/backend/app/core/celery.py b/backend/app/core/celery.py index 148ab00d..e3255382 100644 --- a/backend/app/core/celery.py +++ b/backend/app/core/celery.py @@ -25,6 +25,11 @@ "schedule": 60.0, # Run every 60 seconds "options": {"expires": 55}, # Expire if not executed within 55 seconds }, + "check-permanent-deaths-daily": { + "task": "check_permanent_deaths", + "schedule": 86400.0, # Run every 24 hours (86400 seconds) + "options": {"expires": 82800}, # Expire if not executed within 23 hours + }, } celery_app.conf.timezone = "UTC" diff --git a/backend/app/services/death_service.py b/backend/app/services/death_service.py index b832afe9..7fbd4897 100644 --- a/backend/app/services/death_service.py +++ b/backend/app/services/death_service.py @@ -105,10 +105,10 @@ async def revive_dweller( raise ResourceNotFoundException(Dweller, identifier=dweller_id) revival_cost = self.get_revival_cost(dweller.level) - if vault.caps < revival_cost: + if vault.bottle_caps < revival_cost: raise InsufficientResourcesException( resource_name="caps", - resource_amount=revival_cost - vault.caps, + resource_amount=revival_cost - vault.bottle_caps, ) # Deduct caps @@ -117,7 +117,7 @@ async def revive_dweller( await vault_crud_instance.update( db_session, vault.id, - {"caps": vault.caps - revival_cost}, + {"bottle_caps": vault.bottle_caps - revival_cost}, ) # Calculate health after revival diff --git a/backend/app/tests/test_services/test_death_service.py b/backend/app/tests/test_services/test_death_service.py new file mode 100644 index 00000000..a60dcd71 --- /dev/null +++ b/backend/app/tests/test_services/test_death_service.py @@ -0,0 +1,513 @@ +"""Tests for death service logic.""" + +from datetime import UTC, datetime, timedelta + +import pytest +import pytest_asyncio +from sqlmodel.ext.asyncio.session import AsyncSession + +from app import crud +from app.models.dweller import Dweller +from app.models.vault import Vault +from app.schemas.common import DeathCauseEnum, DwellerStatusEnum +from app.schemas.dweller import DwellerCreate +from app.services.death_service import death_service +from app.tests.factory.dwellers import create_fake_dweller + + +@pytest_asyncio.fixture(name="alive_dweller") +async def alive_dweller_fixture( + async_session: AsyncSession, + vault: Vault, +) -> Dweller: + """Create a living dweller.""" + dweller_data = create_fake_dweller() + dweller_data.update( + { + "first_name": "Alive", + "last_name": "Dweller", + "status": DwellerStatusEnum.IDLE.value, + "is_dead": False, + "is_permanently_dead": False, + "health": 100, + "max_health": 100, + "level": 5, + } + ) + dweller_in = DwellerCreate(**dweller_data, vault_id=vault.id) + return await crud.dweller.create(db_session=async_session, obj_in=dweller_in) + + +@pytest_asyncio.fixture(name="dead_dweller") +async def dead_dweller_fixture( + async_session: AsyncSession, + vault: Vault, +) -> Dweller: + """Create a dead but revivable dweller.""" + dweller_data = create_fake_dweller() + dweller_data.update( + { + "first_name": "Dead", + "last_name": "Dweller", + "status": DwellerStatusEnum.DEAD.value, + "is_dead": True, + "is_permanently_dead": False, + "death_timestamp": datetime.now(UTC) - timedelta(days=2), + "death_cause": DeathCauseEnum.HEALTH.value, + "epitaph": "Test epitaph", + "health": 0, + "max_health": 100, + "level": 5, + } + ) + dweller_in = DwellerCreate(**dweller_data, vault_id=vault.id) + return await crud.dweller.create(db_session=async_session, obj_in=dweller_in) + + +@pytest_asyncio.fixture(name="permanently_dead_dweller") +async def permanently_dead_dweller_fixture( + async_session: AsyncSession, + vault: Vault, +) -> Dweller: + """Create a permanently dead dweller.""" + dweller_data = create_fake_dweller() + dweller_data.update( + { + "first_name": "Permanent", + "last_name": "Dead", + "status": DwellerStatusEnum.DEAD.value, + "is_dead": True, + "is_permanently_dead": True, + "death_timestamp": datetime.now(UTC) - timedelta(days=10), + "death_cause": DeathCauseEnum.COMBAT.value, + "epitaph": "Gone forever", + "health": 0, + "max_health": 100, + "level": 10, + } + ) + dweller_in = DwellerCreate(**dweller_data, vault_id=vault.id) + return await crud.dweller.create(db_session=async_session, obj_in=dweller_in) + + +@pytest.mark.asyncio +class TestDeathService: + """Test death service functionality.""" + + async def test_mark_as_dead_success( + self, + async_session: AsyncSession, + vault: Vault, # noqa: ARG002 - fixture needed for dweller setup + alive_dweller: Dweller, + ): + """Test marking a living dweller as dead.""" + result = await death_service.mark_as_dead( + async_session, + alive_dweller, + DeathCauseEnum.HEALTH, + ) + + assert result.is_dead is True + assert result.status == DwellerStatusEnum.DEAD + assert result.death_cause == DeathCauseEnum.HEALTH + assert result.death_timestamp is not None + assert result.health == 0 + assert result.room_id is None + assert result.epitaph is not None + + async def test_mark_as_dead_with_custom_epitaph( + self, + async_session: AsyncSession, + vault: Vault, # noqa: ARG002 - fixture needed for dweller setup + alive_dweller: Dweller, + ): + """Test marking dweller as dead with custom epitaph.""" + custom_epitaph = "A hero to the end" + result = await death_service.mark_as_dead( + async_session, + alive_dweller, + DeathCauseEnum.COMBAT, + epitaph=custom_epitaph, + ) + + assert result.epitaph == custom_epitaph + assert result.death_cause == DeathCauseEnum.COMBAT + + async def test_mark_as_dead_already_dead_raises( + self, + async_session: AsyncSession, + dead_dweller: Dweller, + ): + """Test that marking already dead dweller raises exception.""" + from app.utils.exceptions import ContentNoChangeException + + with pytest.raises(ContentNoChangeException): + await death_service.mark_as_dead( + async_session, + dead_dweller, + DeathCauseEnum.HEALTH, + ) + + async def test_revive_dweller_success( + self, + async_session: AsyncSession, + vault: Vault, + dead_dweller: Dweller, + ): + """Test successful dweller revival.""" + # Give vault enough caps + vault.bottle_caps = 10000 + async_session.add(vault) + await async_session.commit() + + result = await death_service.revive_dweller( + async_session, + dead_dweller.id, + vault.user_id, + ) + + assert result.is_dead is False + assert result.status == DwellerStatusEnum.IDLE + assert result.death_timestamp is None + assert result.death_cause is None + assert result.health > 0 + + async def test_revive_dweller_insufficient_caps( + self, + async_session: AsyncSession, + vault: Vault, + dead_dweller: Dweller, + ): + """Test revival fails with insufficient caps.""" + from app.utils.exceptions import InsufficientResourcesException + + # Set low caps + vault.bottle_caps = 10 + async_session.add(vault) + await async_session.commit() + + with pytest.raises(InsufficientResourcesException): + await death_service.revive_dweller( + async_session, + dead_dweller.id, + vault.user_id, + ) + + async def test_revive_permanently_dead_raises( + self, + async_session: AsyncSession, + vault: Vault, + permanently_dead_dweller: Dweller, + ): + """Test revival of permanently dead dweller raises exception.""" + from app.utils.exceptions import ContentNoChangeException + + vault.bottle_caps = 10000 + async_session.add(vault) + await async_session.commit() + + with pytest.raises(ContentNoChangeException) as exc_info: + await death_service.revive_dweller( + async_session, + permanently_dead_dweller.id, + vault.user_id, + ) + + assert "permanently dead" in str(exc_info.value.detail).lower() + + async def test_revive_living_dweller_raises( + self, + async_session: AsyncSession, + vault: Vault, + alive_dweller: Dweller, + ): + """Test revival of living dweller raises exception.""" + from app.utils.exceptions import ContentNoChangeException + + vault.bottle_caps = 10000 + async_session.add(vault) + await async_session.commit() + + with pytest.raises(ContentNoChangeException) as exc_info: + await death_service.revive_dweller( + async_session, + alive_dweller.id, + vault.user_id, + ) + + assert "not dead" in str(exc_info.value.detail).lower() + + async def test_get_revival_cost_tier_1(self): + """Test revival cost for level 1-5 dwellers.""" + # Level 1: 50 caps + assert death_service.get_revival_cost(1) == 50 + # Level 5: 250 caps + assert death_service.get_revival_cost(5) == 250 + + async def test_get_revival_cost_tier_2(self): + """Test revival cost for level 6-10 dwellers.""" + # Level 6: 450 caps + assert death_service.get_revival_cost(6) == 450 + # Level 10: 750 caps + assert death_service.get_revival_cost(10) == 750 + + async def test_get_revival_cost_tier_3(self): + """Test revival cost for level 11+ dwellers.""" + # Level 11: 1100 caps + assert death_service.get_revival_cost(11) == 1100 + # Level 20: 2000 caps (capped) + assert death_service.get_revival_cost(20) == 2000 + # Level 50: still 2000 caps (max) + assert death_service.get_revival_cost(50) == 2000 + + async def test_get_days_until_permanent_alive_dweller( + self, + alive_dweller: Dweller, + ): + """Test days calculation for alive dweller returns None.""" + result = death_service.get_days_until_permanent(alive_dweller) + assert result is None + + async def test_get_days_until_permanent_recently_dead( + self, + async_session: AsyncSession, + vault: Vault, + ): + """Test days calculation for recently dead dweller.""" + # Use naive datetime for SQLite compatibility in tests + dweller_data = create_fake_dweller() + dweller_data.update( + { + "first_name": "Recent", + "last_name": "Death", + "is_dead": True, + "is_permanently_dead": False, + "death_timestamp": datetime.utcnow() - timedelta(days=2), + "death_cause": DeathCauseEnum.HEALTH.value, + "health": 0, + "max_health": 100, + } + ) + dweller_in = DwellerCreate(**dweller_data, vault_id=vault.id) + dweller = await crud.dweller.create(db_session=async_session, obj_in=dweller_in) + + # Manually set timezone-aware timestamp for test + dweller.death_timestamp = datetime.now(UTC) - timedelta(days=2) + + # Should have ~5 days left (7 day window - 2 days passed) + days_left = death_service.get_days_until_permanent(dweller) + assert days_left is not None + assert 4 <= days_left <= 5 + + async def test_get_days_until_permanent_near_expiry( + self, + async_session: AsyncSession, + vault: Vault, + ): + """Test days calculation for dweller near permanent death.""" + # Use naive datetime for SQLite compatibility in tests + dweller_data = create_fake_dweller() + dweller_data.update( + { + "first_name": "Near", + "last_name": "Expiry", + "is_dead": True, + "is_permanently_dead": False, + "death_timestamp": datetime.utcnow() - timedelta(days=6, hours=12), + "death_cause": DeathCauseEnum.RADIATION.value, + "health": 0, + "max_health": 100, + } + ) + dweller_in = DwellerCreate(**dweller_data, vault_id=vault.id) + dweller = await crud.dweller.create(db_session=async_session, obj_in=dweller_in) + + # Manually set timezone-aware timestamp for test + dweller.death_timestamp = datetime.now(UTC) - timedelta(days=6, hours=12) + + days_left = death_service.get_days_until_permanent(dweller) + assert days_left is not None + assert days_left == 0 + + async def test_check_and_mark_permanent_deaths( + self, + async_session: AsyncSession, + vault: Vault, + ): + """Test batch processing of expired deaths.""" + # Create dweller that died 10 days ago (past threshold) + expired_data = create_fake_dweller() + expired_data.update( + { + "first_name": "Expired", + "last_name": "Death", + "is_dead": True, + "is_permanently_dead": False, + "death_timestamp": datetime.now(UTC) - timedelta(days=10), + "death_cause": DeathCauseEnum.EXPLORATION.value, + "health": 0, + "max_health": 100, + } + ) + expired_in = DwellerCreate(**expired_data, vault_id=vault.id) + expired_dweller = await crud.dweller.create(db_session=async_session, obj_in=expired_in) + + # Create dweller that died 2 days ago (not yet expired) + recent_data = create_fake_dweller() + recent_data.update( + { + "first_name": "Recent", + "last_name": "Death", + "is_dead": True, + "is_permanently_dead": False, + "death_timestamp": datetime.now(UTC) - timedelta(days=2), + "death_cause": DeathCauseEnum.INCIDENT.value, + "health": 0, + "max_health": 100, + } + ) + recent_in = DwellerCreate(**recent_data, vault_id=vault.id) + recent_dweller = await crud.dweller.create(db_session=async_session, obj_in=recent_in) + + await async_session.commit() + + # Run the check + count = await death_service.check_and_mark_permanent_deaths(async_session) + await async_session.commit() + + # Should have marked 1 dweller as permanently dead + assert count == 1 + + # Refresh and verify + await async_session.refresh(expired_dweller) + await async_session.refresh(recent_dweller) + + assert expired_dweller.is_permanently_dead is True + assert recent_dweller.is_permanently_dead is False + + async def test_get_death_statistics( + self, + async_session: AsyncSession, + vault: Vault, + dead_dweller: Dweller, # noqa: ARG002 - fixture creates dweller in DB + permanently_dead_dweller: Dweller, # noqa: ARG002 - fixture creates dweller in DB + ): + """Test getting death statistics for a user.""" + # First create profile for user if not exists + from app.crud.user_profile import profile_crud + + existing_profile = await profile_crud.get_by_user_id(async_session, vault.user_id) + if not existing_profile: + from app.schemas.user_profile import ProfileCreate + + profile_in = ProfileCreate(user_id=vault.user_id) + await profile_crud.create(async_session, obj_in=profile_in) + await async_session.commit() + + stats = await death_service.get_death_statistics(async_session, vault.user_id) + + assert "total_dwellers_born" in stats + assert "total_dwellers_died" in stats + assert "deaths_by_cause" in stats + assert "revivable_count" in stats + assert "permanently_dead_count" in stats + + # Should have 1 revivable and 1 permanent + assert stats["revivable_count"] == 1 + assert stats["permanently_dead_count"] == 1 + + async def test_generate_epitaph_health( + self, + alive_dweller: Dweller, + ): + """Test epitaph generation for health death.""" + epitaph = death_service._generate_epitaph(alive_dweller, DeathCauseEnum.HEALTH) + assert "succumbed" in epitaph.lower() or "wounds" in epitaph.lower() + assert alive_dweller.first_name in epitaph + + async def test_generate_epitaph_radiation( + self, + alive_dweller: Dweller, + ): + """Test epitaph generation for radiation death.""" + epitaph = death_service._generate_epitaph(alive_dweller, DeathCauseEnum.RADIATION) + assert "radiation" in epitaph.lower() + assert alive_dweller.first_name in epitaph + + async def test_generate_epitaph_incident( + self, + alive_dweller: Dweller, + ): + """Test epitaph generation for incident death.""" + epitaph = death_service._generate_epitaph(alive_dweller, DeathCauseEnum.INCIDENT) + assert "defending" in epitaph.lower() or "hero" in epitaph.lower() + assert alive_dweller.first_name in epitaph + + async def test_generate_epitaph_exploration( + self, + alive_dweller: Dweller, + ): + """Test epitaph generation for exploration death.""" + epitaph = death_service._generate_epitaph(alive_dweller, DeathCauseEnum.EXPLORATION) + assert "wasteland" in epitaph.lower() or "lost" in epitaph.lower() + assert alive_dweller.first_name in epitaph + + async def test_generate_epitaph_combat( + self, + alive_dweller: Dweller, + ): + """Test epitaph generation for combat death.""" + epitaph = death_service._generate_epitaph(alive_dweller, DeathCauseEnum.COMBAT) + assert "combat" in epitaph.lower() or "bravely" in epitaph.lower() + assert alive_dweller.first_name in epitaph + + +@pytest.mark.asyncio +class TestDeathCRUD: + """Test death-related CRUD operations.""" + + async def test_get_dead_dwellers( + self, + async_session: AsyncSession, + vault: Vault, + dead_dweller: Dweller, + permanently_dead_dweller: Dweller, # noqa: ARG002 - fixture creates dweller in DB + alive_dweller: Dweller, # noqa: ARG002 - fixture creates dweller in DB + ): + """Test fetching dead (revivable) dwellers.""" + result = await crud.dweller.get_dead_dwellers(async_session, vault.id) + + # Should only include dead but not permanently dead + assert len(result) == 1 + assert result[0].id == dead_dweller.id + + async def test_get_revivable_dwellers( + self, + async_session: AsyncSession, + vault: Vault, + dead_dweller: Dweller, + permanently_dead_dweller: Dweller, # noqa: ARG002 - fixture creates dweller in DB + ): + """Test fetching revivable dwellers.""" + result = await crud.dweller.get_revivable_dwellers(async_session, vault.id) + + # Should only include dead but not permanently dead + assert len(result) == 1 + assert result[0].id == dead_dweller.id + assert result[0].is_dead is True + assert result[0].is_permanently_dead is False + + async def test_get_graveyard( + self, + async_session: AsyncSession, + vault: Vault, + dead_dweller: Dweller, # noqa: ARG002 - fixture creates dweller in DB + permanently_dead_dweller: Dweller, + ): + """Test fetching graveyard (permanently dead) dwellers.""" + result = await crud.dweller.get_graveyard(async_session, vault.id) + + # Should only include permanently dead + assert len(result) == 1 + assert result[0].id == permanently_dead_dweller.id + assert result[0].is_permanently_dead is True diff --git a/backend/coverage.json b/backend/coverage.json index 6a0424a1..c71f112f 100644 --- a/backend/coverage.json +++ b/backend/coverage.json @@ -1 +1 @@ -{"meta": {"format": 3, "version": "7.13.1", "timestamp": "2026-01-22T23:14:10.778323", "branch_coverage": false, "show_contexts": false}, "files": {"app\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\admin\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\admin\\auth.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 10, 11, 41, 46], "summary": {"covered_lines": 10, "num_statements": 31, "percent_covered": 32.25806451612903, "percent_covered_display": "32.26", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 32.25806451612903, "percent_statements_covered_display": "32.26"}, "missing_lines": [12, 13, 14, 17, 25, 27, 34, 36, 37, 39, 43, 44, 47, 49, 50, 53, 62, 63, 64, 65, 67], "excluded_lines": [], "functions": {"AdminAuth.login": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [12, 13, 14, 17, 25, 27, 34, 36, 37, 39], "excluded_lines": [], "start_line": 11}, "AdminAuth.logout": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [43, 44], "excluded_lines": [], "start_line": 41}, "AdminAuth.authenticate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [47, 49, 50, 53, 62, 63, 64, 65, 67], "excluded_lines": [], "start_line": 46}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 10, 11, 41, 46], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AdminAuth": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [12, 13, 14, 17, 25, 27, 34, 36, 37, 39, 43, 44, 47, 49, 50, 53, 62, 63, 64, 65, 67], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 10, 11, 41, 46], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\admin\\views.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 25, 26, 35, 37, 39, 40, 41, 42, 45, 46, 59, 60, 62, 64, 65, 68, 69, 80, 83, 84, 91, 94, 95, 112, 118, 121, 122, 124, 125, 127, 130, 131, 140, 143, 144, 153, 154, 155, 157, 159, 160, 161, 162, 165, 166, 171, 172, 174, 176, 177, 178, 179, 182, 183, 193, 196, 197, 209, 212, 213, 219, 222, 223, 224, 225, 233, 236, 237, 247, 248, 249, 251, 252, 255, 256, 267, 268, 269, 271, 272, 275, 276, 293, 294, 295, 297, 298, 299, 302, 303, 318, 319, 320, 322, 323, 324, 327, 328, 343, 344, 345, 347, 348, 349, 352, 353, 364, 365, 366, 368, 376, 377, 378, 380, 381, 382, 385, 386, 400, 401, 402, 404, 410, 411, 412, 414, 415, 416], "summary": {"covered_lines": 148, "num_statements": 148, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 25, 26, 35, 37, 39, 40, 41, 42, 45, 46, 59, 60, 62, 64, 65, 68, 69, 80, 83, 84, 91, 94, 95, 112, 118, 121, 122, 124, 125, 127, 130, 131, 140, 143, 144, 153, 154, 155, 157, 159, 160, 161, 162, 165, 166, 171, 172, 174, 176, 177, 178, 179, 182, 183, 193, 196, 197, 209, 212, 213, 219, 222, 223, 224, 225, 233, 236, 237, 247, 248, 249, 251, 252, 255, 256, 267, 268, 269, 271, 272, 275, 276, 293, 294, 295, 297, 298, 299, 302, 303, 318, 319, 320, 322, 323, 324, 327, 328, 343, 344, 345, 347, 348, 349, 352, 353, 364, 365, 366, 368, 376, 377, 378, 380, 381, 382, 385, 386, 400, 401, 402, 404, 410, 411, 412, 414, 415, 416], "summary": {"covered_lines": 148, "num_statements": 148, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"UserAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "UserProfileAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "VaultAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "StorageAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "DwellerAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 94}, "JunkAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 121}, "OutfitAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 130}, "QuestAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 143}, "ObjectiveAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 165}, "RoomAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 182}, "WeaponAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 196}, "PromptAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 212}, "LLInteractionAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 222}, "RelationshipAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 236}, "PregnancyAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 255}, "TrainingAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 275}, "IncidentAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 302}, "ExplorationAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 327}, "ChatMessageAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 352}, "NotificationAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 385}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 25, 26, 35, 37, 39, 40, 41, 42, 45, 46, 59, 60, 62, 64, 65, 68, 69, 80, 83, 84, 91, 94, 95, 112, 118, 121, 122, 124, 125, 127, 130, 131, 140, 143, 144, 153, 154, 155, 157, 159, 160, 161, 162, 165, 166, 171, 172, 174, 176, 177, 178, 179, 182, 183, 193, 196, 197, 209, 212, 213, 219, 222, 223, 224, 225, 233, 236, 237, 247, 248, 249, 251, 252, 255, 256, 267, 268, 269, 271, 272, 275, 276, 293, 294, 295, 297, 298, 299, 302, 303, 318, 319, 320, 322, 323, 324, 327, 328, 343, 344, 345, 347, 348, 349, 352, 353, 364, 365, 366, 368, 376, 377, 378, 380, 381, 382, 385, 386, 400, 401, 402, 404, 410, 411, 412, 414, 415, 416], "summary": {"covered_lines": 148, "num_statements": 148, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\agents\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\agents\\deps.py": {"executed_lines": [3, 5, 8, 9, 12, 13, 14, 15, 18, 19, 22, 25, 26, 29, 30, 31, 32], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 5, 8, 9, 12, 13, 14, 15, 18, 19, 22, 25, 26, 29, 30, 31, 32], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"BackstoryDeps": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "ExtendBioDeps": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "VisualAttributesDeps": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "": {"executed_lines": [3, 5, 8, 9, 12, 13, 14, 15, 18, 19, 22, 25, 26, 29, 30, 31, 32], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\agents\\dweller_agents.py": {"executed_lines": [3, 5, 6, 7, 8, 11, 13, 19, 22, 36, 37, 51, 64, 65, 76, 100, 101], "summary": {"covered_lines": 17, "num_statements": 23, "percent_covered": 73.91304347826087, "percent_covered_display": "73.91", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 73.91304347826087, "percent_statements_covered_display": "73.91"}, "missing_lines": [39, 40, 67, 103, 104, 106], "excluded_lines": [], "functions": {"backstory_system_prompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [39, 40], "excluded_lines": [], "start_line": 37}, "bio_extension_system_prompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [67], "excluded_lines": [], "start_line": 65}, "visual_attributes_system_prompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [103, 104, 106], "excluded_lines": [], "start_line": 101}, "": {"executed_lines": [3, 5, 6, 7, 8, 11, 13, 19, 22, 36, 37, 51, 64, 65, 76, 100, 101], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 11, 13, 19, 22, 36, 37, 51, 64, 65, 76, 100, 101], "summary": {"covered_lines": 17, "num_statements": 23, "percent_covered": 73.91304347826087, "percent_covered_display": "73.91", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 73.91304347826087, "percent_statements_covered_display": "73.91"}, "missing_lines": [39, 40, 67, 103, 104, 106], "excluded_lines": [], "start_line": 1}}}, "app\\api\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\api\\celery_task.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 55, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 55, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 3, 4, 6, 8, 9, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26, 29, 30, 35, 36, 38, 40, 42, 44, 50, 52, 53, 54, 55, 57, 58, 59, 60, 62, 63, 66, 67, 72, 73, 75, 77, 79, 81, 87, 89, 90, 91, 92, 94, 95, 96, 97, 99, 100], "excluded_lines": [], "functions": {"create_task": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20, 21], "excluded_lines": [], "start_line": 19}, "generate_dweller_attributes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [26], "excluded_lines": [], "start_line": 25}, "game_tick_task": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [35, 36, 38, 57, 58, 59, 60, 62, 63], "excluded_lines": [], "start_line": 30}, "game_tick_task.run_tick": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40, 42, 44, 50, 52, 53, 54, 55], "excluded_lines": [], "start_line": 38}, "process_vault_tick_task": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [72, 73, 75, 94, 95, 96, 97, 99, 100], "excluded_lines": [], "start_line": 67}, "process_vault_tick_task.run_vault_tick": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [77, 79, 81, 87, 89, 90, 91, 92], "excluded_lines": [], "start_line": 75}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 3, 4, 6, 8, 9, 11, 14, 15, 18, 19, 24, 25, 29, 30, 66, 67], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 55, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 55, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 3, 4, 6, 8, 9, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26, 29, 30, 35, 36, 38, 40, 42, 44, 50, 52, 53, 54, 55, 57, 58, 59, 60, 62, 63, 66, 67, 72, 73, 75, 77, 79, 81, 87, 89, 90, 91, 92, 94, 95, 96, 97, 99, 100], "excluded_lines": [], "start_line": 1}}}, "app\\api\\deps.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 23, 24, 25, 26, 28, 31, 35, 36, 41, 42, 48, 54, 57, 58, 60, 63, 66, 67, 68, 72, 75, 78, 89, 103, 109, 116, 122, 129, 135, 137], "summary": {"covered_lines": 45, "num_statements": 68, "percent_covered": 66.17647058823529, "percent_covered_display": "66.18", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 66.17647058823529, "percent_statements_covered_display": "66.18"}, "missing_lines": [43, 44, 49, 50, 51, 59, 90, 91, 94, 95, 100, 110, 111, 113, 123, 124, 126, 138, 139, 142, 143, 144, 146], "excluded_lines": [], "functions": {"get_redis_client": {"executed_lines": [24, 25, 26, 28], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "get_current_user": {"executed_lines": [35, 36, 41, 42, 48], "summary": {"covered_lines": 5, "num_statements": 10, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [43, 44, 49, 50, 51], "excluded_lines": [], "start_line": 31}, "get_current_active_user": {"executed_lines": [58, 60], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [59], "excluded_lines": [], "start_line": 57}, "get_current_active_superuser": {"executed_lines": [67, 68, 72], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 66}, "get_user_vault_or_403": {"executed_lines": [89], "summary": {"covered_lines": 1, "num_statements": 6, "percent_covered": 16.666666666666668, "percent_covered_display": "16.67", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 16.666666666666668, "percent_statements_covered_display": "16.67"}, "missing_lines": [90, 91, 94, 95, 100], "excluded_lines": [], "start_line": 78}, "verify_dweller_access": {"executed_lines": [109], "summary": {"covered_lines": 1, "num_statements": 4, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [110, 111, 113], "excluded_lines": [], "start_line": 103}, "verify_room_access": {"executed_lines": [122], "summary": {"covered_lines": 1, "num_statements": 4, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [123, 124, 126], "excluded_lines": [], "start_line": 116}, "verify_exploration_access": {"executed_lines": [135, 137], "summary": {"covered_lines": 2, "num_statements": 8, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [138, 139, 142, 143, 144, 146], "excluded_lines": [], "start_line": 129}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 23, 31, 54, 57, 63, 66, 75, 78, 103, 116, 129], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 23, 24, 25, 26, 28, 31, 35, 36, 41, 42, 48, 54, 57, 58, 60, 63, 66, 67, 68, 72, 75, 78, 89, 103, 109, 116, 122, 129, 135, 137], "summary": {"covered_lines": 45, "num_statements": 68, "percent_covered": 66.17647058823529, "percent_covered_display": "66.18", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 66.17647058823529, "percent_statements_covered_display": "66.18"}, "missing_lines": [43, 44, 49, 50, 51, 59, 90, 91, 94, 95, 100, 110, 111, 113, 123, 124, 126, 138, 139, 142, 143, 144, 146], "excluded_lines": [], "start_line": 1}}}, "app\\api\\game_data_deps.py": {"executed_lines": [1, 4, 12], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"get_static_game_data": {"executed_lines": [12], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 4}, "": {"executed_lines": [1, 4], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 4, 12], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\api.py": {"executed_lines": [1, 3, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\auth.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 19, 22, 23, 31, 44, 58, 59, 67, 68, 71, 86, 93, 94, 102, 103, 110, 134, 135, 145, 146, 147, 150, 189, 190, 201, 202, 205, 206, 220, 221, 229, 230, 231, 234, 254, 255, 263, 264, 267, 270, 271, 274, 280], "summary": {"covered_lines": 58, "num_statements": 113, "percent_covered": 51.32743362831859, "percent_covered_display": "51.33", "missing_lines": 55, "excluded_lines": 0, "percent_statements_covered": 51.32743362831859, "percent_statements_covered_display": "51.33"}, "missing_lines": [36, 37, 38, 39, 41, 42, 69, 72, 73, 74, 75, 77, 78, 84, 98, 99, 113, 114, 117, 120, 121, 122, 125, 131, 151, 152, 155, 156, 158, 160, 161, 162, 164, 165, 166, 169, 172, 173, 175, 178, 181, 186, 209, 212, 217, 235, 236, 239, 240, 243, 244, 247, 248, 249, 251], "excluded_lines": [], "functions": {"login_access_token": {"executed_lines": [31, 44], "summary": {"covered_lines": 2, "num_statements": 8, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [36, 37, 38, 39, 41, 42], "excluded_lines": [], "start_line": 23}, "refresh_access_token": {"executed_lines": [67, 68, 71, 86], "summary": {"covered_lines": 4, "num_statements": 12, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [69, 72, 73, 74, 75, 77, 78, 84], "excluded_lines": [], "start_line": 59}, "logout": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [98, 99], "excluded_lines": [], "start_line": 94}, "forgot_password": {"executed_lines": [110], "summary": {"covered_lines": 1, "num_statements": 9, "percent_covered": 11.11111111111111, "percent_covered_display": "11.11", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 11.11111111111111, "percent_statements_covered_display": "11.11"}, "missing_lines": [113, 114, 117, 120, 121, 122, 125, 131], "excluded_lines": [], "start_line": 103}, "reset_password": {"executed_lines": [145, 146, 147, 150], "summary": {"covered_lines": 4, "num_statements": 22, "percent_covered": 18.181818181818183, "percent_covered_display": "18.18", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 18.181818181818183, "percent_statements_covered_display": "18.18"}, "missing_lines": [151, 152, 155, 156, 158, 160, 161, 162, 164, 165, 166, 169, 172, 173, 175, 178, 181, 186], "excluded_lines": [], "start_line": 135}, "change_password": {"executed_lines": [201, 202, 205, 206], "summary": {"covered_lines": 4, "num_statements": 7, "percent_covered": 57.142857142857146, "percent_covered_display": "57.14", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57.14"}, "missing_lines": [209, 212, 217], "excluded_lines": [], "start_line": 190}, "verify_email": {"executed_lines": [229, 230, 231, 234], "summary": {"covered_lines": 4, "num_statements": 14, "percent_covered": 28.571428571428573, "percent_covered_display": "28.57", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 28.571428571428573, "percent_statements_covered_display": "28.57"}, "missing_lines": [235, 236, 239, 240, 243, 244, 247, 248, 249, 251], "excluded_lines": [], "start_line": 221}, "resend_verification_email": {"executed_lines": [263, 264, 267, 270, 271, 274, 280], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 255}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 19, 22, 23, 58, 59, 93, 94, 102, 103, 134, 135, 189, 190, 220, 221, 254, 255], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 19, 22, 23, 31, 44, 58, 59, 67, 68, 71, 86, 93, 94, 102, 103, 110, 134, 135, 145, 146, 147, 150, 189, 190, 201, 202, 205, 206, 220, 221, 229, 230, 231, 234, 254, 255, 263, 264, 267, 270, 271, 274, 280], "summary": {"covered_lines": 58, "num_statements": 113, "percent_covered": 51.32743362831859, "percent_covered_display": "51.33", "missing_lines": 55, "excluded_lines": 0, "percent_statements_covered": 51.32743362831859, "percent_statements_covered_display": "51.33"}, "missing_lines": [36, 37, 38, 39, 41, 42, 69, 72, 73, 74, 75, 77, 78, 84, 98, 99, 113, 114, 117, 120, 121, 122, 125, 131, 151, 152, 155, 156, 158, 160, 161, 162, 164, 165, 166, 169, 172, 173, 175, 178, 181, 186, 209, 212, 217, 235, 236, 239, 240, 243, 244, 247, 248, 249, 251], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\chat.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 26, 27, 28, 29, 30, 31, 32, 35, 36, 91, 92, 95, 96, 102, 156, 157, 178, 179, 206, 208, 210, 215, 218], "summary": {"covered_lines": 43, "num_statements": 78, "percent_covered": 55.12820512820513, "percent_covered_display": "55.13", "missing_lines": 35, "excluded_lines": 0, "percent_statements_covered": 55.12820512820513, "percent_statements_covered_display": "55.13"}, "missing_lines": [40, 68, 70, 72, 74, 75, 82, 83, 86, 87, 88, 103, 104, 107, 110, 111, 119, 125, 131, 142, 153, 165, 166, 167, 169, 211, 212, 227, 228, 239, 246, 247, 248, 249, 250], "excluded_lines": [], "functions": {"generate_objectives": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40, 68, 70, 72, 74, 75, 82, 83, 86, 87, 88], "excluded_lines": [], "start_line": 36}, "chat_with_dweller": {"executed_lines": [102], "summary": {"covered_lines": 1, "num_statements": 11, "percent_covered": 9.090909090909092, "percent_covered_display": "9.09", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 9.090909090909092, "percent_statements_covered_display": "9.09"}, "missing_lines": [103, 104, 107, 110, 111, 119, 125, 131, 142, 153], "excluded_lines": [], "start_line": 96}, "get_chat_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [165, 166, 167, 169], "excluded_lines": [], "start_line": 157}, "voice_chat_with_dweller": {"executed_lines": [206, 208, 210, 215, 218], "summary": {"covered_lines": 5, "num_statements": 15, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [211, 212, 227, 228, 239, 246, 247, 248, 249, 250], "excluded_lines": [], "start_line": 179}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 26, 27, 28, 29, 30, 31, 32, 35, 36, 91, 92, 95, 96, 156, 157, 178, 179], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ObjectiveKindEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "ChatMessage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 91}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 26, 27, 28, 29, 30, 31, 32, 35, 36, 91, 92, 95, 96, 102, 156, 157, 178, 179, 206, 208, 210, 215, 218], "summary": {"covered_lines": 43, "num_statements": 78, "percent_covered": 55.12820512820513, "percent_covered_display": "55.13", "missing_lines": 35, "excluded_lines": 0, "percent_statements_covered": 55.12820512820513, "percent_statements_covered_display": "55.13"}, "missing_lines": [40, 68, 70, 72, 74, 75, 82, 83, 86, 87, 88, 103, 104, 107, 110, 111, 119, 125, 131, 142, 153, 165, 166, 167, 169, 211, 212, 227, 228, 239, 246, 247, 248, 249, 250], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\dweller.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 26, 28, 31, 32, 37, 40, 41, 48, 51, 52, 57, 61, 62, 68, 91, 92, 95, 98, 99, 111, 124, 125, 135, 136, 146, 147, 155, 156, 164, 165, 173, 174, 183, 184, 195, 196, 214, 215, 219, 220, 230, 231, 241, 242, 254, 255, 270, 271, 296, 297, 310, 311, 341, 342], "summary": {"covered_lines": 64, "num_statements": 125, "percent_covered": 51.2, "percent_covered_display": "51.20", "missing_lines": 61, "excluded_lines": 0, "percent_statements_covered": 51.2, "percent_statements_covered_display": "51.20"}, "missing_lines": [58, 70, 73, 75, 77, 80, 81, 82, 83, 84, 86, 88, 112, 131, 132, 142, 143, 152, 161, 170, 180, 190, 204, 216, 226, 227, 237, 238, 248, 250, 251, 261, 262, 279, 281, 282, 287, 288, 289, 290, 291, 293, 305, 306, 307, 317, 319, 320, 322, 323, 325, 327, 328, 330, 348, 350, 353, 354, 357, 360, 362], "excluded_lines": [], "functions": {"create_dweller": {"executed_lines": [37], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "read_dweller_list": {"executed_lines": [48], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "read_dweller": {"executed_lines": [57], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [58], "excluded_lines": [], "start_line": 52}, "update_dweller": {"executed_lines": [68], "summary": {"covered_lines": 1, "num_statements": 12, "percent_covered": 8.333333333333334, "percent_covered_display": "8.33", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 8.333333333333334, "percent_statements_covered_display": "8.33"}, "missing_lines": [70, 73, 75, 77, 80, 81, 82, 83, 84, 86, 88], "excluded_lines": [], "start_line": 62}, "delete_dweller": {"executed_lines": [95], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 92}, "read_dwellers_by_vault": {"executed_lines": [111], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [112], "excluded_lines": [], "start_line": 99}, "move_dweller_to_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [131, 132], "excluded_lines": [], "start_line": 125}, "create_random_common_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [142, 143], "excluded_lines": [], "start_line": 136}, "generate_backstory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [152], "excluded_lines": [], "start_line": 147}, "generate_visual_attributes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [161], "excluded_lines": [], "start_line": 156}, "generate_photo": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [170], "excluded_lines": [], "start_line": 165}, "generate_audio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [180], "excluded_lines": [], "start_line": 174}, "generate_data_with_ai": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [190], "excluded_lines": [], "start_line": 184}, "generate_dweller_avatar": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [204], "excluded_lines": [], "start_line": 196}, "read_dwellers_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [216], "excluded_lines": [], "start_line": 215}, "use_stimpack": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [226, 227], "excluded_lines": [], "start_line": 220}, "use_radaway": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [237, 238], "excluded_lines": [], "start_line": 231}, "get_happiness_modifiers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [248, 250, 251], "excluded_lines": [], "start_line": 242}, "auto_assign_to_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [261, 262], "excluded_lines": [], "start_line": 255}, "get_dead_dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [279, 281, 282, 287, 288, 289, 290, 291, 293], "excluded_lines": [], "start_line": 271}, "get_graveyard": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [305, 306, 307], "excluded_lines": [], "start_line": 297}, "get_revival_cost": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [317, 319, 320, 322, 323, 325, 327, 328, 330], "excluded_lines": [], "start_line": 311}, "revive_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [348, 350, 353, 354, 357, 360, 362], "excluded_lines": [], "start_line": 342}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 26, 28, 31, 32, 40, 41, 51, 52, 61, 62, 91, 92, 98, 99, 124, 125, 135, 136, 146, 147, 155, 156, 164, 165, 173, 174, 183, 184, 195, 196, 214, 215, 219, 220, 230, 231, 241, 242, 254, 255, 270, 271, 296, 297, 310, 311, 341, 342], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 26, 28, 31, 32, 37, 40, 41, 48, 51, 52, 57, 61, 62, 68, 91, 92, 95, 98, 99, 111, 124, 125, 135, 136, 146, 147, 155, 156, 164, 165, 173, 174, 183, 184, 195, 196, 214, 215, 219, 220, 230, 231, 241, 242, 254, 255, 270, 271, 296, 297, 310, 311, 341, 342], "summary": {"covered_lines": 64, "num_statements": 125, "percent_covered": 51.2, "percent_covered_display": "51.20", "missing_lines": 61, "excluded_lines": 0, "percent_statements_covered": 51.2, "percent_statements_covered_display": "51.20"}, "missing_lines": [58, 70, 73, 75, 77, 80, 81, 82, 83, 84, 86, 88, 112, 131, 132, 142, 143, 152, 161, 170, 180, 190, 204, 216, 226, 227, 237, 238, 248, 250, 251, 261, 262, 279, 281, 282, 287, 288, 289, 290, 291, 293, 305, 306, 307, 317, 319, 320, 322, 323, 325, 327, 328, 330, 348, 350, 353, 354, 357, 360, 362], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\exploration.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 19, 21, 24, 25, 32, 44, 45, 52, 68, 69, 75, 79, 80, 86, 90, 91, 97, 108, 109, 115, 126, 127, 133], "summary": {"covered_lines": 31, "num_statements": 55, "percent_covered": 56.36363636363637, "percent_covered_display": "56.36", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 56.36363636363637, "percent_statements_covered_display": "56.36"}, "missing_lines": [33, 34, 40, 41, 53, 54, 60, 65, 76, 87, 98, 99, 100, 104, 105, 116, 117, 118, 122, 123, 134, 135, 136, 137], "excluded_lines": [], "functions": {"send_dweller_to_wasteland": {"executed_lines": [32], "summary": {"covered_lines": 1, "num_statements": 5, "percent_covered": 20.0, "percent_covered_display": "20.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 20.0, "percent_statements_covered_display": "20.00"}, "missing_lines": [33, 34, 40, 41], "excluded_lines": [], "start_line": 25}, "list_explorations_by_vault": {"executed_lines": [52], "summary": {"covered_lines": 1, "num_statements": 5, "percent_covered": 20.0, "percent_covered_display": "20.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 20.0, "percent_statements_covered_display": "20.00"}, "missing_lines": [53, 54, 60, 65], "excluded_lines": [], "start_line": 45}, "get_exploration": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [76], "excluded_lines": [], "start_line": 69}, "get_exploration_progress": {"executed_lines": [86], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [87], "excluded_lines": [], "start_line": 80}, "recall_dweller": {"executed_lines": [97], "summary": {"covered_lines": 1, "num_statements": 6, "percent_covered": 16.666666666666668, "percent_covered_display": "16.67", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 16.666666666666668, "percent_statements_covered_display": "16.67"}, "missing_lines": [98, 99, 100, 104, 105], "excluded_lines": [], "start_line": 91}, "complete_exploration": {"executed_lines": [115], "summary": {"covered_lines": 1, "num_statements": 6, "percent_covered": 16.666666666666668, "percent_covered_display": "16.67", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 16.666666666666668, "percent_statements_covered_display": "16.67"}, "missing_lines": [116, 117, 118, 122, 123], "excluded_lines": [], "start_line": 109}, "generate_event": {"executed_lines": [133], "summary": {"covered_lines": 1, "num_statements": 5, "percent_covered": 20.0, "percent_covered_display": "20.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 20.0, "percent_statements_covered_display": "20.00"}, "missing_lines": [134, 135, 136, 137], "excluded_lines": [], "start_line": 127}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 19, 21, 24, 25, 44, 45, 68, 69, 79, 80, 90, 91, 108, 109, 126, 127], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 19, 21, 24, 25, 32, 44, 45, 52, 68, 69, 75, 79, 80, 86, 90, 91, 97, 108, 109, 115, 126, 127, 133], "summary": {"covered_lines": 31, "num_statements": 55, "percent_covered": 56.36363636363637, "percent_covered_display": "56.36", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 56.36363636363637, "percent_statements_covered_display": "56.36"}, "missing_lines": [33, 34, 40, 41, 53, 54, 60, 65, 76, 87, 98, 99, 100, 104, 105, 116, 117, 118, 122, 123, 134, 135, 136, 137], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\game_control.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 20, 21, 66, 67, 75, 92, 93, 101, 118, 119, 127, 137, 138, 175, 176, 215, 216, 231, 247, 248, 281, 282, 308, 309, 310, 329, 330, 354, 355], "summary": {"covered_lines": 41, "num_statements": 125, "percent_covered": 32.8, "percent_covered_display": "32.80", "missing_lines": 84, "excluded_lines": 0, "percent_statements_covered": 32.8, "percent_statements_covered_display": "32.80"}, "missing_lines": [31, 76, 77, 79, 80, 82, 84, 102, 103, 105, 106, 108, 110, 128, 129, 131, 132, 134, 146, 147, 148, 150, 151, 153, 155, 185, 186, 187, 189, 190, 192, 193, 194, 196, 232, 233, 235, 236, 239, 241, 263, 264, 265, 267, 268, 271, 272, 273, 275, 276, 277, 278, 294, 297, 298, 299, 301, 302, 305, 306, 307, 315, 317, 318, 320, 338, 339, 340, 342, 343, 345, 347, 364, 365, 366, 368, 369, 372, 373, 374, 376, 378, 379, 381], "excluded_lines": [], "functions": {"get_game_balance_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31], "excluded_lines": [], "start_line": 21}, "pause_vault": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 7, "percent_covered": 14.285714285714286, "percent_covered_display": "14.29", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 14.285714285714286, "percent_statements_covered_display": "14.29"}, "missing_lines": [76, 77, 79, 80, 82, 84], "excluded_lines": [], "start_line": 67}, "resume_vault": {"executed_lines": [101], "summary": {"covered_lines": 1, "num_statements": 7, "percent_covered": 14.285714285714286, "percent_covered_display": "14.29", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 14.285714285714286, "percent_statements_covered_display": "14.29"}, "missing_lines": [102, 103, 105, 106, 108, 110], "excluded_lines": [], "start_line": 93}, "get_game_state": {"executed_lines": [127], "summary": {"covered_lines": 1, "num_statements": 6, "percent_covered": 16.666666666666668, "percent_covered_display": "16.67", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 16.666666666666668, "percent_statements_covered_display": "16.67"}, "missing_lines": [128, 129, 131, 132, 134], "excluded_lines": [], "start_line": 119}, "list_incidents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [146, 147, 148, 150, 151, 153, 155], "excluded_lines": [], "start_line": 138}, "get_incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [185, 186, 187, 189, 190, 192, 193, 194, 196], "excluded_lines": [], "start_line": 176}, "manual_tick": {"executed_lines": [231], "summary": {"covered_lines": 1, "num_statements": 7, "percent_covered": 14.285714285714286, "percent_covered_display": "14.29", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 14.285714285714286, "percent_statements_covered_display": "14.29"}, "missing_lines": [232, 233, 235, 236, 239, 241], "excluded_lines": [], "start_line": 216}, "resolve_incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [263, 264, 265, 267, 268, 271, 272, 273, 275, 276, 277, 278], "excluded_lines": [], "start_line": 248}, "spawn_debug_incident": {"executed_lines": [308, 309, 310], "summary": {"covered_lines": 3, "num_statements": 16, "percent_covered": 18.75, "percent_covered_display": "18.75", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 18.75, "percent_statements_covered_display": "18.75"}, "missing_lines": [294, 297, 298, 299, 301, 302, 305, 306, 307, 315, 317, 318, 320], "excluded_lines": [], "start_line": 282}, "delete_all_incidents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [338, 339, 340, 342, 343, 345, 347], "excluded_lines": [], "start_line": 330}, "delete_incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [364, 365, 366, 368, 369, 372, 373, 374, 376, 378, 379, 381], "excluded_lines": [], "start_line": 355}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 20, 21, 66, 67, 92, 93, 118, 119, 137, 138, 175, 176, 215, 216, 247, 248, 281, 282, 329, 330, 354, 355], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 20, 21, 66, 67, 75, 92, 93, 101, 118, 119, 127, 137, 138, 175, 176, 215, 216, 231, 247, 248, 281, 282, 308, 309, 310, 329, 330, 354, 355], "summary": {"covered_lines": 41, "num_statements": 125, "percent_covered": 32.8, "percent_covered_display": "32.80", "missing_lines": 84, "excluded_lines": 0, "percent_statements_covered": 32.8, "percent_statements_covered_display": "32.80"}, "missing_lines": [31, 76, 77, 79, 80, 82, 84, 102, 103, 105, 106, 108, 110, 128, 129, 131, 132, 134, 146, 147, 148, 150, 151, 153, 155, 185, 186, 187, 189, 190, 192, 193, 194, 196, 232, 233, 235, 236, 239, 241, 263, 264, 265, 267, 268, 271, 272, 273, 275, 276, 277, 278, 294, 297, 298, 299, 301, 302, 305, 306, 307, 315, 317, 318, 320, 338, 339, 340, 342, 343, 345, 347, 364, 365, 366, 368, 369, 372, 373, 374, 376, 378, 379, 381], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\junk.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 17, 20, 21, 24, 27, 28, 29, 32, 33, 36, 39, 40, 41, 44, 45, 49, 50], "summary": {"covered_lines": 28, "num_statements": 30, "percent_covered": 93.33333333333333, "percent_covered_display": "93.33", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93.33"}, "missing_lines": [46, 51], "excluded_lines": [], "functions": {"create_junk": {"executed_lines": [17], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "read_junk_list": {"executed_lines": [24], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "read_junk": {"executed_lines": [29], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "update_junk": {"executed_lines": [36], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "delete_junk": {"executed_lines": [41], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "sell_junk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [46], "excluded_lines": [], "start_line": 45}, "read_junk_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [51], "excluded_lines": [], "start_line": 50}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 20, 21, 27, 28, 32, 33, 39, 40, 44, 45, 49, 50], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 17, 20, 21, 24, 27, 28, 29, 32, 33, 36, 39, 40, 41, 44, 45, 49, 50], "summary": {"covered_lines": 28, "num_statements": 30, "percent_covered": 93.33333333333333, "percent_covered_display": "93.33", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93.33"}, "missing_lines": [46, 51], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\notifications.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 33, 34, 43, 44, 53, 54, 66, 67, 76, 77], "summary": {"covered_lines": 21, "num_statements": 35, "percent_covered": 60.0, "percent_covered_display": "60.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00"}, "missing_lines": [24, 39, 40, 50, 60, 61, 62, 63, 72, 73, 83, 84, 85, 86], "excluded_lines": [], "functions": {"get_notifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24], "excluded_lines": [], "start_line": 16}, "get_unread_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [39, 40], "excluded_lines": [], "start_line": 34}, "create_notification": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [50], "excluded_lines": [], "start_line": 44}, "mark_notification_as_read": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [60, 61, 62, 63], "excluded_lines": [], "start_line": 54}, "mark_all_notifications_as_read": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [72, 73], "excluded_lines": [], "start_line": 67}, "dismiss_notification": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [83, 84, 85, 86], "excluded_lines": [], "start_line": 77}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 33, 34, 43, 44, 53, 54, 66, 67, 76, 77], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 33, 34, 43, 44, 53, 54, 66, 67, 76, 77], "summary": {"covered_lines": 21, "num_statements": 35, "percent_covered": 60.0, "percent_covered_display": "60.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00"}, "missing_lines": [24, 39, 40, 50, 60, 61, 62, 63, 72, 73, 83, 84, 85, 86], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\objective.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 22, 23, 32, 33, 37, 38, 45, 46], "summary": {"covered_lines": 19, "num_statements": 24, "percent_covered": 79.16666666666667, "percent_covered_display": "79.17", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 79.16666666666667, "percent_statements_covered_display": "79.17"}, "missing_lines": [19, 29, 34, 42, 53], "excluded_lines": [], "functions": {"create_objective": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [19], "excluded_lines": [], "start_line": 16}, "read_objective_list": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [29], "excluded_lines": [], "start_line": 23}, "read_objective": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [34], "excluded_lines": [], "start_line": 33}, "complete_objective": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42], "excluded_lines": [], "start_line": 38}, "update_objective_progress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [53], "excluded_lines": [], "start_line": 46}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 22, 23, 32, 33, 37, 38, 45, 46], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 22, 23, 32, 33, 37, 38, 45, 46], "summary": {"covered_lines": 19, "num_statements": 24, "percent_covered": 79.16666666666667, "percent_covered_display": "79.17", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 79.16666666666667, "percent_statements_covered_display": "79.17"}, "missing_lines": [19, 29, 34, 42, 53], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\outfit.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 18, 21, 22, 25, 28, 29, 30, 33, 34, 39, 42, 43, 44, 47, 48, 54, 55, 59, 60, 64, 65, 69, 70], "summary": {"covered_lines": 35, "num_statements": 40, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50"}, "missing_lines": [51, 56, 61, 66, 71], "excluded_lines": [], "functions": {"create_outfit": {"executed_lines": [18], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "read_outfit_list": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "read_outfit": {"executed_lines": [30], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "update_outfit": {"executed_lines": [39], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "delete_outfit": {"executed_lines": [44], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "equip_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [51], "excluded_lines": [], "start_line": 48}, "unequip_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [56], "excluded_lines": [], "start_line": 55}, "scrap_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [61], "excluded_lines": [], "start_line": 60}, "sell_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [66], "excluded_lines": [], "start_line": 65}, "read_outfits_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [71], "excluded_lines": [], "start_line": 70}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 28, 29, 33, 34, 42, 43, 47, 48, 54, 55, 59, 60, 64, 65, 69, 70], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 18, 21, 22, 25, 28, 29, 30, 33, 34, 39, 42, 43, 44, 47, 48, 54, 55, 59, 60, 64, 65, 69, 70], "summary": {"covered_lines": 35, "num_statements": 40, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50"}, "missing_lines": [51, 56, 61, 66, 71], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\pregnancy.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 21, 27, 51, 52, 58, 59, 88, 89, 96, 97], "summary": {"covered_lines": 23, "num_statements": 53, "percent_covered": 43.39622641509434, "percent_covered_display": "43.40", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 43.39622641509434, "percent_statements_covered_display": "43.40"}, "missing_lines": [29, 35, 60, 62, 63, 66, 67, 69, 70, 73, 75, 98, 100, 101, 104, 105, 107, 108, 111, 114, 115, 117, 120, 121, 123, 124, 125, 135, 140, 141], "excluded_lines": [], "functions": {"get_vault_pregnancies": {"executed_lines": [27], "summary": {"covered_lines": 1, "num_statements": 3, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [29, 35], "excluded_lines": [], "start_line": 21}, "get_pregnancy": {"executed_lines": [58, 59], "summary": {"covered_lines": 2, "num_statements": 11, "percent_covered": 18.181818181818183, "percent_covered_display": "18.18", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 18.181818181818183, "percent_statements_covered_display": "18.18"}, "missing_lines": [60, 62, 63, 66, 67, 69, 70, 73, 75], "excluded_lines": [], "start_line": 52}, "deliver_baby": {"executed_lines": [96, 97], "summary": {"covered_lines": 2, "num_statements": 21, "percent_covered": 9.523809523809524, "percent_covered_display": "9.52", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 9.523809523809524, "percent_statements_covered_display": "9.52"}, "missing_lines": [98, 100, 101, 104, 105, 107, 108, 111, 114, 115, 117, 120, 121, 123, 124, 125, 135, 140, 141], "excluded_lines": [], "start_line": 89}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 21, 51, 52, 88, 89], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 21, 27, 51, 52, 58, 59, 88, 89, 96, 97], "summary": {"covered_lines": 23, "num_statements": 53, "percent_covered": 43.39622641509434, "percent_covered_display": "43.40", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 43.39622641509434, "percent_statements_covered_display": "43.40"}, "missing_lines": [29, 35, 60, 62, 63, 66, 67, 69, 70, 73, 75, 98, 100, 101, 104, 105, 107, 108, 111, 114, 115, 117, 120, 121, 123, 124, 125, 135, 140, 141], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\quest.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 16, 19, 20, 30, 31, 39, 40, 51, 52, 61, 62, 70, 71, 75, 76, 92, 93], "summary": {"covered_lines": 25, "num_statements": 33, "percent_covered": 75.75757575757575, "percent_covered_display": "75.76", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 75.75757575757575, "percent_statements_covered_display": "75.76"}, "missing_lines": [27, 36, 48, 58, 67, 72, 87, 102], "excluded_lines": [], "functions": {"read_all_quests": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [27], "excluded_lines": [], "start_line": 20}, "create_quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36], "excluded_lines": [], "start_line": 31}, "read_vault_quests": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [48], "excluded_lines": [], "start_line": 40}, "read_quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [58], "excluded_lines": [], "start_line": 52}, "update_quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [67], "excluded_lines": [], "start_line": 62}, "delete_quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [72], "excluded_lines": [], "start_line": 71}, "assign_quest_to_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [87], "excluded_lines": [], "start_line": 76}, "complete_quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [102], "excluded_lines": [], "start_line": 93}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 16, 19, 20, 30, 31, 39, 40, 51, 52, 61, 62, 70, 71, 75, 76, 92, 93], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 16, 19, 20, 30, 31, 39, 40, 51, 52, 61, 62, 70, 71, 75, 76, 92, 93], "summary": {"covered_lines": 25, "num_statements": 33, "percent_covered": 75.75757575757575, "percent_covered_display": "75.76", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 75.75757575757575, "percent_statements_covered_display": "75.76"}, "missing_lines": [27, 36, 48, 58, 67, 72, 87, 102], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\radio.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 28, 34, 35, 42, 78, 79, 86, 95, 96, 104], "summary": {"covered_lines": 25, "num_statements": 52, "percent_covered": 48.07692307692308, "percent_covered_display": "48.08", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 48.07692307692308, "percent_statements_covered_display": "48.08"}, "missing_lines": [30, 31, 44, 45, 47, 54, 55, 57, 60, 61, 69, 74, 75, 89, 90, 92, 107, 108, 111, 112, 114, 115, 118, 119, 121, 122, 124], "excluded_lines": [], "functions": {"get_radio_stats": {"executed_lines": [28], "summary": {"covered_lines": 1, "num_statements": 3, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [30, 31], "excluded_lines": [], "start_line": 22}, "manual_recruit_dweller": {"executed_lines": [42], "summary": {"covered_lines": 1, "num_statements": 12, "percent_covered": 8.333333333333334, "percent_covered_display": "8.33", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 8.333333333333334, "percent_statements_covered_display": "8.33"}, "missing_lines": [44, 45, 47, 54, 55, 57, 60, 61, 69, 74, 75], "excluded_lines": [], "start_line": 35}, "set_radio_mode": {"executed_lines": [86], "summary": {"covered_lines": 1, "num_statements": 4, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [89, 90, 92], "excluded_lines": [], "start_line": 79}, "set_radio_speedup": {"executed_lines": [104], "summary": {"covered_lines": 1, "num_statements": 12, "percent_covered": 8.333333333333334, "percent_covered_display": "8.33", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 8.333333333333334, "percent_statements_covered_display": "8.33"}, "missing_lines": [107, 108, 111, 112, 114, 115, 118, 119, 121, 122, 124], "excluded_lines": [], "start_line": 96}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 34, 35, 78, 79, 95, 96], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 28, 34, 35, 42, 78, 79, 86, 95, 96, 104], "summary": {"covered_lines": 25, "num_statements": 52, "percent_covered": 48.07692307692308, "percent_covered_display": "48.08", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 48.07692307692308, "percent_statements_covered_display": "48.08"}, "missing_lines": [30, 31, 44, 45, 47, 54, 55, 57, 60, 61, 69, 74, 75, 89, 90, 92, 107, 108, 111, 112, 114, 115, 118, 119, 121, 122, 124], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\relationship.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 16, 18, 21, 22, 28, 36, 37, 43, 44, 46, 47, 57, 58, 65, 74, 75, 81, 83, 86, 87, 107, 108, 114, 116, 119, 120, 140, 141, 147, 149, 152, 153, 171, 172, 198, 199, 207, 216, 217], "summary": {"covered_lines": 46, "num_statements": 91, "percent_covered": 50.54945054945055, "percent_covered_display": "50.55", "missing_lines": 45, "excluded_lines": 0, "percent_statements_covered": 50.54945054945055, "percent_statements_covered_display": "50.55"}, "missing_lines": [31, 33, 48, 49, 52, 54, 66, 69, 88, 90, 91, 94, 97, 98, 103, 104, 121, 123, 124, 127, 130, 131, 136, 137, 154, 156, 157, 160, 163, 164, 165, 166, 168, 187, 190, 191, 192, 193, 195, 208, 213, 230, 232, 235, 237], "excluded_lines": [], "functions": {"get_vault_relationships": {"executed_lines": [28], "summary": {"covered_lines": 1, "num_statements": 3, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [31, 33], "excluded_lines": [], "start_line": 22}, "get_relationship": {"executed_lines": [43, 44, 46, 47], "summary": {"covered_lines": 4, "num_statements": 8, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [48, 49, 52, 54], "excluded_lines": [], "start_line": 37}, "create_relationship": {"executed_lines": [65], "summary": {"covered_lines": 1, "num_statements": 3, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [66, 69], "excluded_lines": [], "start_line": 58}, "initiate_romance": {"executed_lines": [81, 83, 86, 87], "summary": {"covered_lines": 4, "num_statements": 12, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [88, 90, 91, 94, 97, 98, 103, 104], "excluded_lines": [], "start_line": 75}, "make_partners": {"executed_lines": [114, 116, 119, 120], "summary": {"covered_lines": 4, "num_statements": 12, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [121, 123, 124, 127, 130, 131, 136, 137], "excluded_lines": [], "start_line": 108}, "break_up_relationship": {"executed_lines": [147, 149, 152, 153], "summary": {"covered_lines": 4, "num_statements": 13, "percent_covered": 30.76923076923077, "percent_covered_display": "30.77", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 30.76923076923077, "percent_statements_covered_display": "30.77"}, "missing_lines": [154, 156, 157, 160, 163, 164, 165, 166, 168], "excluded_lines": [], "start_line": 141}, "quick_pair_dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [187, 190, 191, 192, 193, 195], "excluded_lines": [], "start_line": 172}, "calculate_compatibility": {"executed_lines": [207], "summary": {"covered_lines": 1, "num_statements": 3, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [208, 213], "excluded_lines": [], "start_line": 199}, "process_vault_breeding": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [230, 232, 235, 237], "excluded_lines": [], "start_line": 217}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 16, 18, 21, 22, 36, 37, 57, 58, 74, 75, 107, 108, 140, 141, 171, 172, 198, 199, 216, 217], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 16, 18, 21, 22, 28, 36, 37, 43, 44, 46, 47, 57, 58, 65, 74, 75, 81, 83, 86, 87, 107, 108, 114, 116, 119, 120, 140, 141, 147, 149, 152, 153, 171, 172, 198, 199, 207, 216, 217], "summary": {"covered_lines": 46, "num_statements": 91, "percent_covered": 50.54945054945055, "percent_covered_display": "50.55", "missing_lines": 45, "excluded_lines": 0, "percent_statements_covered": 50.54945054945055, "percent_statements_covered_display": "50.55"}, "missing_lines": [31, 33, 48, 49, 52, 54, 66, 69, 88, 90, 91, 94, 97, 98, 103, 104, 121, 123, 124, 127, 130, 131, 136, 137, 154, 156, 157, 160, 163, 164, 165, 166, 168, 187, 190, 191, 192, 193, 195, 208, 213, 230, 232, 235, 237], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\room.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 25, 28, 29, 40, 41, 44, 48, 49, 55, 59, 60, 63, 67, 68, 72, 73, 86, 92, 93, 100, 101, 108, 109, 112, 114, 116], "summary": {"covered_lines": 40, "num_statements": 59, "percent_covered": 67.79661016949153, "percent_covered_display": "67.80", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 67.79661016949153, "percent_statements_covered_display": "67.80"}, "missing_lines": [18, 36, 37, 45, 56, 64, 69, 88, 89, 96, 97, 104, 105, 117, 118, 119, 120, 121, 122], "excluded_lines": [], "functions": {"create_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [18], "excluded_lines": [], "start_line": 17}, "read_room_list": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "read_rooms_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36, 37], "excluded_lines": [], "start_line": 29}, "read_room": {"executed_lines": [44], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [45], "excluded_lines": [], "start_line": 41}, "update_room": {"executed_lines": [55], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [56], "excluded_lines": [], "start_line": 49}, "delete_room": {"executed_lines": [63], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [64], "excluded_lines": [], "start_line": 60}, "read_room_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [69], "excluded_lines": [], "start_line": 68}, "get_buildable_rooms": {"executed_lines": [86], "summary": {"covered_lines": 1, "num_statements": 3, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [88, 89], "excluded_lines": [], "start_line": 73}, "build_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [96, 97], "excluded_lines": [], "start_line": 93}, "destroy_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [104, 105], "excluded_lines": [], "start_line": 101}, "upgrade_room": {"executed_lines": [112, 114, 116], "summary": {"covered_lines": 3, "num_statements": 9, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [117, 118, 119, 120, 121, 122], "excluded_lines": [], "start_line": 109}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 28, 29, 40, 41, 48, 49, 59, 60, 67, 68, 72, 73, 92, 93, 100, 101, 108, 109], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 25, 28, 29, 40, 41, 44, 48, 49, 55, 59, 60, 63, 67, 68, 72, 73, 86, 92, 93, 100, 101, 108, 109, 112, 114, 116], "summary": {"covered_lines": 40, "num_statements": 59, "percent_covered": 67.79661016949153, "percent_covered_display": "67.80", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 67.79661016949153, "percent_statements_covered_display": "67.80"}, "missing_lines": [18, 36, 37, 45, 56, 64, 69, 88, 89, 96, 97, 104, 105, 117, 118, 119, 120, 121, 122], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\system.py": {"executed_lines": [8, 9, 11, 12, 14, 15, 17, 18, 21, 24, 25, 26, 27, 28, 31, 32, 42], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"get_info": {"executed_lines": [42], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "": {"executed_lines": [8, 9, 11, 12, 14, 15, 17, 18, 21, 24, 25, 26, 27, 28, 31, 32], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"InfoResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [8, 9, 11, 12, 14, 15, 17, 18, 21, 24, 25, 26, 27, 28, 31, 32, 42], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\training.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 70, 71, 97, 98, 114, 119, 120, 155, 156, 191, 192], "summary": {"covered_lines": 26, "num_statements": 70, "percent_covered": 37.142857142857146, "percent_covered_display": "37.14", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 37.142857142857146, "percent_statements_covered_display": "37.14"}, "missing_lines": [46, 47, 48, 50, 53, 54, 55, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67, 88, 89, 90, 92, 94, 116, 136, 137, 138, 141, 144, 147, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 209, 210, 211, 213, 215], "excluded_lines": [], "functions": {"start_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [46, 47, 48, 50, 53, 54, 55, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67], "excluded_lines": [], "start_line": 22}, "get_dweller_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [88, 89, 90, 92, 94], "excluded_lines": [], "start_line": 71}, "list_vault_training": {"executed_lines": [114], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [116], "excluded_lines": [], "start_line": 98}, "get_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [136, 137, 138, 141, 144, 147], "excluded_lines": [], "start_line": 120}, "cancel_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [176, 177, 178, 181, 183, 184, 185, 186, 187, 188], "excluded_lines": [], "start_line": 156}, "list_room_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [209, 210, 211, 213, 215], "excluded_lines": [], "start_line": 192}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 70, 71, 97, 98, 119, 120, 155, 156, 191, 192], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 70, 71, 97, 98, 114, 119, 120, 155, 156, 191, 192], "summary": {"covered_lines": 26, "num_statements": 70, "percent_covered": 37.142857142857146, "percent_covered_display": "37.14", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 37.142857142857146, "percent_statements_covered_display": "37.14"}, "missing_lines": [46, 47, 48, 50, 53, 54, 55, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67, 88, 89, 90, 92, 94, 116, 136, 137, 138, 141, 144, 147, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 209, 210, 211, 213, 215], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\user.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 25, 26, 35, 45, 46, 56, 59, 60, 82, 83, 87, 90, 91, 102, 107, 146, 147, 156, 167, 168, 192, 193, 213, 214, 226, 227, 251, 252, 267, 268], "summary": {"covered_lines": 48, "num_statements": 104, "percent_covered": 46.15384615384615, "percent_covered_display": "46.15", "missing_lines": 56, "excluded_lines": 0, "percent_statements_covered": 46.15384615384615, "percent_statements_covered_display": "46.15"}, "missing_lines": [36, 37, 42, 71, 72, 73, 74, 75, 76, 77, 78, 79, 103, 108, 109, 113, 114, 117, 118, 119, 120, 123, 124, 129, 131, 133, 135, 136, 138, 157, 158, 159, 160, 164, 178, 179, 180, 184, 215, 218, 219, 220, 221, 223, 253, 254, 255, 257, 258, 260, 261, 262, 263, 264, 286, 288], "excluded_lines": [], "functions": {"create_user": {"executed_lines": [35], "summary": {"covered_lines": 1, "num_statements": 4, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [36, 37, 42], "excluded_lines": [], "start_line": 26}, "read_users": {"executed_lines": [56], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "update_user_me": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [71, 72, 73, 74, 75, 76, 77, 78, 79], "excluded_lines": [], "start_line": 60}, "read_user_me": {"executed_lines": [87], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "create_user_open": {"executed_lines": [102, 107], "summary": {"covered_lines": 2, "num_statements": 19, "percent_covered": 10.526315789473685, "percent_covered_display": "10.53", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 10.526315789473685, "percent_statements_covered_display": "10.53"}, "missing_lines": [103, 108, 109, 113, 114, 117, 118, 119, 120, 123, 124, 129, 131, 133, 135, 136, 138], "excluded_lines": [], "start_line": 91}, "read_user_by_id": {"executed_lines": [156], "summary": {"covered_lines": 1, "num_statements": 6, "percent_covered": 16.666666666666668, "percent_covered_display": "16.67", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 16.666666666666668, "percent_statements_covered_display": "16.67"}, "missing_lines": [157, 158, 159, 160, 164], "excluded_lines": [], "start_line": 147}, "update_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [178, 179, 180, 184], "excluded_lines": [], "start_line": 168}, "get_my_profile": {"executed_lines": [213, 214], "summary": {"covered_lines": 2, "num_statements": 8, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [215, 218, 219, 220, 221, 223], "excluded_lines": [], "start_line": 193}, "update_my_profile": {"executed_lines": [251, 252], "summary": {"covered_lines": 2, "num_statements": 12, "percent_covered": 16.666666666666668, "percent_covered_display": "16.67", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 16.666666666666668, "percent_statements_covered_display": "16.67"}, "missing_lines": [253, 254, 255, 257, 258, 260, 261, 262, 263, 264], "excluded_lines": [], "start_line": 227}, "get_death_statistics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [286, 288], "excluded_lines": [], "start_line": 268}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 25, 26, 45, 46, 59, 60, 82, 83, 90, 91, 146, 147, 167, 168, 192, 193, 226, 227, 267, 268], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 25, 26, 35, 45, 46, 56, 59, 60, 82, 83, 87, 90, 91, 102, 107, 146, 147, 156, 167, 168, 192, 193, 213, 214, 226, 227, 251, 252, 267, 268], "summary": {"covered_lines": 48, "num_statements": 104, "percent_covered": 46.15384615384615, "percent_covered_display": "46.15", "missing_lines": 56, "excluded_lines": 0, "percent_statements_covered": 46.15384615384615, "percent_statements_covered_display": "46.15"}, "missing_lines": [36, 37, 42, 71, 72, 73, 74, 75, 76, 77, 78, 79, 103, 108, 109, 113, 114, 117, 118, 119, 120, 123, 124, 129, 131, 133, 135, 136, 138, 157, 158, 159, 160, 164, 178, 179, 180, 184, 215, 218, 219, 220, 221, 223, 253, 254, 255, 257, 258, 260, 261, 262, 263, 264, 286, 288], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\vault.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 17, 18, 24, 27, 28, 35, 38, 39, 47, 48, 54, 65, 66, 73, 79, 80, 86, 92, 93, 102, 103, 109, 114, 115], "summary": {"covered_lines": 35, "num_statements": 49, "percent_covered": 71.42857142857143, "percent_covered_display": "71.43", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71.43"}, "missing_lines": [44, 55, 56, 59, 60, 62, 74, 75, 76, 87, 88, 89, 99, 121], "excluded_lines": [], "functions": {"create_vault": {"executed_lines": [24], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "read_vault_list": {"executed_lines": [35], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "read_my_vaults": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [44], "excluded_lines": [], "start_line": 39}, "read_vault": {"executed_lines": [54], "summary": {"covered_lines": 1, "num_statements": 6, "percent_covered": 16.666666666666668, "percent_covered_display": "16.67", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 16.666666666666668, "percent_statements_covered_display": "16.67"}, "missing_lines": [55, 56, 59, 60, 62], "excluded_lines": [], "start_line": 48}, "update_vault": {"executed_lines": [73], "summary": {"covered_lines": 1, "num_statements": 4, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [74, 75, 76], "excluded_lines": [], "start_line": 66}, "delete_vault": {"executed_lines": [86], "summary": {"covered_lines": 1, "num_statements": 4, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [87, 88, 89], "excluded_lines": [], "start_line": 80}, "toggle_game_state": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [99], "excluded_lines": [], "start_line": 93}, "start_vault": {"executed_lines": [109], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 103}, "update_vault_resources": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [121], "excluded_lines": [], "start_line": 115}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 17, 18, 27, 28, 38, 39, 47, 48, 65, 66, 79, 80, 92, 93, 102, 103, 114, 115], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 17, 18, 24, 27, 28, 35, 38, 39, 47, 48, 54, 65, 66, 73, 79, 80, 86, 92, 93, 102, 103, 109, 114, 115], "summary": {"covered_lines": 35, "num_statements": 49, "percent_covered": 71.42857142857143, "percent_covered_display": "71.43", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71.43"}, "missing_lines": [44, 55, 56, 59, 60, 62, 74, 75, 76, 87, 88, 89, 99, 121], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\weapon.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 18, 21, 22, 25, 28, 29, 30, 33, 34, 39, 42, 43, 44, 47, 48, 54, 55, 59, 60, 64, 65, 69, 70], "summary": {"covered_lines": 35, "num_statements": 40, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50"}, "missing_lines": [51, 56, 61, 66, 71], "excluded_lines": [], "functions": {"create_weapon": {"executed_lines": [18], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "read_weapon_list": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "read_weapon": {"executed_lines": [30], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "update_weapon": {"executed_lines": [39], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "delete_weapon": {"executed_lines": [44], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "equip_weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [51], "excluded_lines": [], "start_line": 48}, "unequip_weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [56], "excluded_lines": [], "start_line": 55}, "scrap_weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [61], "excluded_lines": [], "start_line": 60}, "sell_weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [66], "excluded_lines": [], "start_line": 65}, "read_weapons_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [71], "excluded_lines": [], "start_line": 70}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 28, 29, 33, 34, 42, 43, 47, 48, 54, 55, 59, 60, 64, 65, 69, 70], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 18, 21, 22, 25, 28, 29, 30, 33, 34, 39, 42, 43, 44, 47, 48, 54, 55, 59, 60, 64, 65, 69, 70], "summary": {"covered_lines": 35, "num_statements": 40, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50"}, "missing_lines": [51, 56, 61, 66, 71], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\websocket.py": {"executed_lines": [1, 2, 4, 5, 7, 9, 10, 13, 14, 45, 46], "summary": {"covered_lines": 11, "num_statements": 34, "percent_covered": 32.35294117647059, "percent_covered_display": "32.35", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 32.35294117647059, "percent_statements_covered_display": "32.35"}, "missing_lines": [35, 37, 39, 40, 42, 79, 80, 83, 84, 85, 86, 88, 89, 91, 93, 94, 98, 102, 107, 109, 110, 112, 113], "excluded_lines": [], "functions": {"websocket_endpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [35, 37, 39, 40, 42], "excluded_lines": [], "start_line": 14}, "chat_websocket_endpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [79, 80, 83, 84, 85, 86, 88, 89, 91, 93, 94, 98, 102, 107, 109, 110, 112, 113], "excluded_lines": [], "start_line": 46}, "": {"executed_lines": [1, 2, 4, 5, 7, 9, 10, 13, 14, 45, 46], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 7, 9, 10, 13, 14, 45, 46], "summary": {"covered_lines": 11, "num_statements": 34, "percent_covered": 32.35294117647059, "percent_covered_display": "32.35", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 32.35294117647059, "percent_statements_covered_display": "32.35"}, "missing_lines": [35, 37, 39, 40, 42, 79, 80, 83, 84, 85, 86, 88, 89, 91, 93, 94, 98, 102, 107, 109, 110, 112, 113], "excluded_lines": [], "start_line": 1}}}, "app\\cli\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\cli\\app\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\cli\\app\\manage.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 2, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 5, 8, 10, 11, 12, 13, 15, 18, 20, 21, 22, 25, 26, 30, 44, 47, 65, 68, 78, 81, 82, 84, 106, 109, 114, 116], "excluded_lines": [119, 120], "functions": {"create_file_with_boilerplate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [10, 11, 12, 13, 15], "excluded_lines": [], "start_line": 8}, "append_to_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20, 21, 22], "excluded_lines": [], "start_line": 18}, "startapp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [30, 44, 47, 65, 68, 78, 81, 82, 84, 106, 109, 114, 116], "excluded_lines": [], "start_line": 26}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 2, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 5, 8, 18, 25, 26], "excluded_lines": [119, 120], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 2, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 5, 8, 10, 11, 12, 13, 15, 18, 20, 21, 22, 25, 26, 30, 44, 47, 65, 68, 78, 81, 82, 84, 106, 109, 114, 116], "excluded_lines": [119, 120], "start_line": 1}}}, "app\\cli\\migrations\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\cli\\migrations\\cli.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 44, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 15, 16, 24, 25, 27, 29, 31, 37, 38, 41, 42, 43, 44, 45, 46, 49, 50, 63, 64, 78, 79, 81, 83, 86, 95, 96, 105, 106, 114, 115, 118, 119, 127, 128], "excluded_lines": [], "functions": {"init": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24, 25, 27, 29, 31, 37, 38, 41, 42, 43, 44, 45, 46], "excluded_lines": [], "start_line": 16}, "revision": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [63, 64], "excluded_lines": [], "start_line": 50}, "show": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [81, 83], "excluded_lines": [], "start_line": 79}, "merge": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [95, 96], "excluded_lines": [], "start_line": 86}, "upgrade": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [114, 115], "excluded_lines": [], "start_line": 106}, "downgrade": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [127, 128], "excluded_lines": [], "start_line": 119}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 15, 16, 49, 50, 78, 79, 86, 105, 106, 118, 119], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 44, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 15, 16, 24, 25, 27, 29, 31, 37, 38, 41, 42, 43, 44, 45, 46, 49, 50, 63, 64, 78, 79, 81, 83, 86, 95, 96, 105, 106, 114, 115, 118, 119, 127, 128], "excluded_lines": [], "start_line": 1}}}, "app\\core\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\core\\celery.py": {"executed_lines": [1, 3, 4, 7, 8, 10, 12, 19, 22, 30, 32], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 7, 8, 10, 12, 19, 22, 30, 32], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 7, 8, 10, 12, 19, 22, 30, 32], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\core\\config.py": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 53, 54, 65, 66, 73, 74, 75, 76, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 107, 109, 110, 111, 112, 121, 123, 124, 125, 127, 130, 132, 133, 134, 135, 144, 146, 147, 148, 149, 158, 161], "summary": {"covered_lines": 90, "num_statements": 98, "percent_covered": 91.83673469387755, "percent_covered_display": "91.84", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 91.83673469387755, "percent_statements_covered_display": "91.84"}, "missing_lines": [56, 68, 69, 71, 119, 128, 142, 156], "excluded_lines": [], "functions": {"Settings.minio_enabled": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [56], "excluded_lines": [], "start_line": 54}, "Settings.minio_public_base_url": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [68, 69, 71], "excluded_lines": [], "start_line": 66}, "Settings.redis_url": {"executed_lines": [107], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 106}, "Settings.assemble_db_connection": {"executed_lines": [111, 112], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [119], "excluded_lines": [], "start_line": 110}, "Settings.assemble_celery_db_connection": {"executed_lines": [125, 127], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [128], "excluded_lines": [], "start_line": 124}, "Settings.assemble_celery_beat_db_connection": {"executed_lines": [134, 135], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [142], "excluded_lines": [], "start_line": 133}, "Settings.assemble_async_celery_beat_db_connection": {"executed_lines": [148, 149], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [156], "excluded_lines": [], "start_line": 147}, "": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 53, 54, 65, 66, 73, 74, 75, 76, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 109, 110, 121, 123, 124, 130, 132, 133, 144, 146, 147, 158, 161], "summary": {"covered_lines": 81, "num_statements": 81, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"Settings": {"executed_lines": [107, 111, 112, 125, 127, 134, 135, 148, 149], "summary": {"covered_lines": 9, "num_statements": 17, "percent_covered": 52.94117647058823, "percent_covered_display": "52.94", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 52.94117647058823, "percent_statements_covered_display": "52.94"}, "missing_lines": [56, 68, 69, 71, 119, 128, 142, 156], "excluded_lines": [], "start_line": 8}, "": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 53, 54, 65, 66, 73, 74, 75, 76, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 109, 110, 121, 123, 124, 130, 132, 133, 144, 146, 147, 158, 161], "summary": {"covered_lines": 81, "num_statements": 81, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\core\\email.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 11, 14, 15, 21, 62, 70, 92, 115], "summary": {"covered_lines": 15, "num_statements": 45, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [30, 31, 32, 33, 36, 37, 39, 41, 46, 47, 48, 50, 51, 52, 53, 55, 56, 57, 58, 59, 66, 67, 74, 76, 85, 96, 98, 108, 119, 128], "excluded_lines": [], "functions": {"send_email": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 20, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [30, 31, 32, 33, 36, 37, 39, 41, 46, 47, 48, 50, 51, 52, 53, 55, 56, 57, 58, 59], "excluded_lines": [], "start_line": 21}, "render_email_template": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [66, 67], "excluded_lines": [], "start_line": 62}, "send_verification_email": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [74, 76, 85], "excluded_lines": [], "start_line": 70}, "send_password_reset_email": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [96, 98, 108], "excluded_lines": [], "start_line": 92}, "send_password_changed_email": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [119, 128], "excluded_lines": [], "start_line": 115}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 11, 14, 15, 21, 62, 70, 92, 115], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 11, 14, 15, 21, 62, 70, 92, 115], "summary": {"covered_lines": 15, "num_statements": 45, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [30, 31, 32, 33, 36, 37, 39, 41, 46, 47, 48, 50, 51, 52, 53, 55, 56, 57, 58, 59, 66, 67, 74, 76, 85, 96, 98, 108, 119, 128], "excluded_lines": [], "start_line": 1}}}, "app\\core\\game_config.py": {"executed_lines": [14, 16, 17, 19, 21, 24, 27, 29, 35, 43, 46, 48, 54, 59, 64, 70, 76, 84, 85, 86, 87, 88, 89, 92, 93, 94, 95, 96, 97, 99, 111, 122, 123, 125, 132, 135, 137, 138, 139, 140, 141, 144, 145, 146, 147, 150, 151, 152, 155, 156, 159, 162, 164, 165, 166, 167, 170, 173, 176, 177, 178, 179, 180, 183, 184, 185, 188, 189, 190, 193, 194, 197, 198, 201, 202, 205, 208, 210, 211, 214, 215, 216, 219, 220, 222, 224, 229, 232, 235, 238, 239, 240, 241, 244, 245, 246, 249, 250, 252, 262, 265, 267, 268, 269, 272, 273, 274, 275, 277, 278, 279, 281, 287, 288, 290, 293, 296, 298, 304, 305, 306, 314, 315, 316, 324, 327, 330, 331, 333, 334, 337, 338, 339, 340, 341, 343, 344, 347, 350, 352, 357, 358, 359, 362, 363, 364, 366, 368, 370, 375, 378, 381, 384, 395, 396, 397, 398, 401, 409, 416, 434, 437, 440, 441, 444, 445, 446, 447, 450, 451, 453, 454, 456, 459, 460, 461, 464, 465, 466, 469, 470, 471, 474, 475, 476, 477, 480, 481, 484, 487, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 506, 509, 510, 511, 512, 513, 514], "summary": {"covered_lines": 210, "num_statements": 222, "percent_covered": 94.5945945945946, "percent_covered_display": "94.59", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 94.5945945945946, "percent_statements_covered_display": "94.59"}, "missing_lines": [101, 109, 113, 254, 259, 289, 424, 425, 426, 427, 429, 431], "excluded_lines": [], "functions": {"IncidentConfig.get_difficulty_range": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [101, 109], "excluded_lines": [], "start_line": 99}, "IncidentConfig.get_spawn_weights": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [113], "excluded_lines": [], "start_line": 111}, "IncidentConfig.vault_door_incidents": {"executed_lines": [125], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 123}, "TrainingConfig.get_tier_multiplier": {"executed_lines": [224, 229], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 222}, "ResourceConfig.get_tier_multiplier": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [254, 259], "excluded_lines": [], "start_line": 252}, "RelationshipConfig.validate_weights_sum": {"executed_lines": [281, 287, 288, 290], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [289], "excluded_lines": [], "start_line": 279}, "RadioConfig.get_tier_multiplier": {"executed_lines": [370, 375], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 368}, "DeathConfig.calculate_revival_cost": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [424, 425, 426, 427, 429, 431], "excluded_lines": [], "start_line": 416}, "": {"executed_lines": [14, 16, 17, 19, 21, 24, 27, 29, 35, 43, 46, 48, 54, 59, 64, 70, 76, 84, 85, 86, 87, 88, 89, 92, 93, 94, 95, 96, 97, 99, 111, 122, 123, 132, 135, 137, 138, 139, 140, 141, 144, 145, 146, 147, 150, 151, 152, 155, 156, 159, 162, 164, 165, 166, 167, 170, 173, 176, 177, 178, 179, 180, 183, 184, 185, 188, 189, 190, 193, 194, 197, 198, 201, 202, 205, 208, 210, 211, 214, 215, 216, 219, 220, 222, 232, 235, 238, 239, 240, 241, 244, 245, 246, 249, 250, 252, 262, 265, 267, 268, 269, 272, 273, 274, 275, 277, 278, 279, 293, 296, 298, 304, 305, 306, 314, 315, 316, 324, 327, 330, 331, 333, 334, 337, 338, 339, 340, 341, 343, 344, 347, 350, 352, 357, 358, 359, 362, 363, 364, 366, 368, 378, 381, 384, 395, 396, 397, 398, 401, 409, 416, 434, 437, 440, 441, 444, 445, 446, 447, 450, 451, 453, 454, 456, 459, 460, 461, 464, 465, 466, 469, 470, 471, 474, 475, 476, 477, 480, 481, 484, 487, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 506, 509, 510, 511, 512, 513, 514], "summary": {"covered_lines": 201, "num_statements": 201, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"GameLoopConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "IncidentConfig": {"executed_lines": [125], "summary": {"covered_lines": 1, "num_statements": 4, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [101, 109, 113], "excluded_lines": [], "start_line": 43}, "CombatConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 132}, "HealthConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 159}, "HappinessConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 170}, "TrainingConfig": {"executed_lines": [224, 229], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 205}, "ResourceConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [254, 259], "excluded_lines": [], "start_line": 232}, "RelationshipConfig": {"executed_lines": [281, 287, 288, 290], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [289], "excluded_lines": [], "start_line": 262}, "BreedingConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 293}, "LevelingConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 324}, "RadioConfig": {"executed_lines": [370, 375], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 347}, "DeathConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [424, 425, 426, 427, 429, 431], "excluded_lines": [], "start_line": 378}, "ExplorationConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 434}, "GameConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 484}, "": {"executed_lines": [14, 16, 17, 19, 21, 24, 27, 29, 35, 43, 46, 48, 54, 59, 64, 70, 76, 84, 85, 86, 87, 88, 89, 92, 93, 94, 95, 96, 97, 99, 111, 122, 123, 132, 135, 137, 138, 139, 140, 141, 144, 145, 146, 147, 150, 151, 152, 155, 156, 159, 162, 164, 165, 166, 167, 170, 173, 176, 177, 178, 179, 180, 183, 184, 185, 188, 189, 190, 193, 194, 197, 198, 201, 202, 205, 208, 210, 211, 214, 215, 216, 219, 220, 222, 232, 235, 238, 239, 240, 241, 244, 245, 246, 249, 250, 252, 262, 265, 267, 268, 269, 272, 273, 274, 275, 277, 278, 279, 293, 296, 298, 304, 305, 306, 314, 315, 316, 324, 327, 330, 331, 333, 334, 337, 338, 339, 340, 341, 343, 344, 347, 350, 352, 357, 358, 359, 362, 363, 364, 366, 368, 378, 381, 384, 395, 396, 397, 398, 401, 409, 416, 434, 437, 440, 441, 444, 445, 446, 447, 450, 451, 453, 454, 456, 459, 460, 461, 464, 465, 466, 469, 470, 471, 474, 475, 476, 477, 480, 481, 484, 487, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 506, 509, 510, 511, 512, 513, 514], "summary": {"covered_lines": 201, "num_statements": 201, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\core\\logging.py": {"executed_lines": [3, 4, 5, 6, 8, 11, 14, 17, 18, 19, 22, 25, 50, 64, 65, 68, 71, 72, 75, 76, 79, 84, 88, 89, 92, 100, 101, 102, 103, 106, 119, 121, 124], "summary": {"covered_lines": 33, "num_statements": 52, "percent_covered": 63.46153846153846, "percent_covered_display": "63.46", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 63.46153846153846, "percent_statements_covered_display": "63.46"}, "missing_lines": [31, 34, 35, 36, 37, 38, 41, 42, 43, 46, 47, 81, 93, 94, 95, 96, 97, 116, 126], "excluded_lines": [], "functions": {"RequestIdFilter.filter": {"executed_lines": [18, 19], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "CustomJsonFormatter.add_fields": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 34, 35, 36, 37, 38, 41, 42, 43, 46, 47], "excluded_lines": [], "start_line": 25}, "setup_logging": {"executed_lines": [64, 65, 68, 71, 72, 75, 76, 79, 84, 88, 89, 92, 100, 101, 102, 103], "summary": {"covered_lines": 16, "num_statements": 22, "percent_covered": 72.72727272727273, "percent_covered_display": "72.73", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 72.72727272727273, "percent_statements_covered_display": "72.73"}, "missing_lines": [81, 93, 94, 95, 96, 97], "excluded_lines": [], "start_line": 50}, "get_logger": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [116], "excluded_lines": [], "start_line": 106}, "set_request_id": {"executed_lines": [121], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 119}, "get_request_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [126], "excluded_lines": [], "start_line": 124}, "": {"executed_lines": [3, 4, 5, 6, 8, 11, 14, 17, 22, 25, 50, 106, 119, 124], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RequestIdFilter": {"executed_lines": [18, 19], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "CustomJsonFormatter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 34, 35, 36, 37, 38, 41, 42, 43, 46, 47], "excluded_lines": [], "start_line": 22}, "": {"executed_lines": [3, 4, 5, 6, 8, 11, 14, 17, 22, 25, 50, 64, 65, 68, 71, 72, 75, 76, 79, 84, 88, 89, 92, 100, 101, 102, 103, 106, 119, 121, 124], "summary": {"covered_lines": 31, "num_statements": 39, "percent_covered": 79.48717948717949, "percent_covered_display": "79.49", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 79.48717948717949, "percent_statements_covered_display": "79.49"}, "missing_lines": [81, 93, 94, 95, 96, 97, 116, 126], "excluded_lines": [], "start_line": 1}}}, "app\\core\\security.py": {"executed_lines": [1, 2, 3, 5, 6, 7, 9, 11, 13, 16, 20, 21, 23, 26, 27, 30, 31, 34, 35, 38, 43, 44, 46, 48, 49, 51, 55, 57, 60, 61, 62, 63, 65, 66, 71, 74, 75, 76, 79, 83, 84, 85, 88, 92, 93, 94, 96, 97, 98, 101, 105, 106, 107, 110, 114, 115, 116, 118, 119, 120], "summary": {"covered_lines": 60, "num_statements": 65, "percent_covered": 92.3076923076923, "percent_covered_display": "92.31", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92.31"}, "missing_lines": [67, 68, 69, 95, 117], "excluded_lines": [], "functions": {"create_access_token": {"executed_lines": [20, 21, 23, 26, 27], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "verify_password": {"executed_lines": [31], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "get_password_hash": {"executed_lines": [35], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "create_refresh_token": {"executed_lines": [43, 44, 46, 48, 49, 51, 55, 57], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "verify_refresh_token": {"executed_lines": [61, 62, 63, 65, 66, 71], "summary": {"covered_lines": 6, "num_statements": 9, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [67, 68, 69], "excluded_lines": [], "start_line": 60}, "invalidate_refresh_token": {"executed_lines": [75, 76], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 74}, "create_email_verification_token": {"executed_lines": [83, 84, 85], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 79}, "verify_email_token": {"executed_lines": [92, 93, 94, 96, 97, 98], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "85.71", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "85.71"}, "missing_lines": [95], "excluded_lines": [], "start_line": 88}, "create_password_reset_token": {"executed_lines": [105, 106, 107], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 101}, "verify_password_reset_token": {"executed_lines": [114, 115, 116, 118, 119, 120], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "85.71", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "85.71"}, "missing_lines": [117], "excluded_lines": [], "start_line": 110}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 9, 11, 13, 16, 30, 34, 38, 60, 74, 79, 88, 101, 110], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 5, 6, 7, 9, 11, 13, 16, 20, 21, 23, 26, 27, 30, 31, 34, 35, 38, 43, 44, 46, 48, 49, 51, 55, 57, 60, 61, 62, 63, 65, 66, 71, 74, 75, 76, 79, 83, 84, 85, 88, 92, 93, 94, 96, 97, 98, 101, 105, 106, 107, 110, 114, 115, 116, 118, 119, 120], "summary": {"covered_lines": 60, "num_statements": 65, "percent_covered": 92.3076923076923, "percent_covered_display": "92.31", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92.31"}, "missing_lines": [67, 68, 69, 95, 117], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\__init__.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\base.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 12, 13, 14, 17, 24, 25, 27, 36, 37, 38, 39, 40, 41, 43, 56, 66, 78, 79, 80, 82, 91, 92, 93, 94, 98, 99, 101, 119, 133, 134, 136, 137, 139, 140, 141, 142, 144, 173, 185, 197, 198, 199, 201, 202, 203], "summary": {"covered_lines": 53, "num_statements": 87, "percent_covered": 60.91954022988506, "percent_covered_display": "60.92", "missing_lines": 34, "excluded_lines": 0, "percent_statements_covered": 60.91954022988506, "percent_statements_covered_display": "60.92"}, "missing_lines": [53, 54, 63, 64, 95, 96, 97, 110, 111, 112, 113, 114, 115, 116, 117, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 166, 167, 169, 170, 171, 181, 182, 183, 200], "excluded_lines": [], "functions": {"CRUDBase.__init__": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "CRUDBase.get": {"executed_lines": [36, 37, 38, 39, 40, 41], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "CRUDBase.get_by_ids": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [53, 54], "excluded_lines": [], "start_line": 43}, "CRUDBase.get_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [63, 64], "excluded_lines": [], "start_line": 56}, "CRUDBase.get_multi": {"executed_lines": [78, 79, 80], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 66}, "CRUDBase.create": {"executed_lines": [91, 92, 93, 94, 98, 99], "summary": {"covered_lines": 6, "num_statements": 9, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [95, 96, 97], "excluded_lines": [], "start_line": 82}, "CRUDBase.create_all": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [110, 111, 112, 113, 114, 115, 116, 117], "excluded_lines": [], "start_line": 101}, "CRUDBase.update": {"executed_lines": [133, 134, 136, 137, 139, 140, 141, 142], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 119}, "CRUDBase.upsert": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 166, 167, 169, 170, 171], "excluded_lines": [], "start_line": 144}, "CRUDBase.exists": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [181, 182, 183], "excluded_lines": [], "start_line": 173}, "CRUDBase.delete": {"executed_lines": [197, 198, 199, 201, 202, 203], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "85.71", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "85.71"}, "missing_lines": [200], "excluded_lines": [], "start_line": 185}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 12, 13, 14, 17, 24, 27, 43, 56, 66, 82, 101, 119, 144, 173, 185], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDBase": {"executed_lines": [25, 36, 37, 38, 39, 40, 41, 78, 79, 80, 91, 92, 93, 94, 98, 99, 133, 134, 136, 137, 139, 140, 141, 142, 197, 198, 199, 201, 202, 203], "summary": {"covered_lines": 30, "num_statements": 64, "percent_covered": 46.875, "percent_covered_display": "46.88", "missing_lines": 34, "excluded_lines": 0, "percent_statements_covered": 46.875, "percent_statements_covered_display": "46.88"}, "missing_lines": [53, 54, 63, 64, 95, 96, 97, 110, 111, 112, 113, 114, 115, 116, 117, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 166, 167, 169, 170, 171, 181, 182, 183, 200], "excluded_lines": [], "start_line": 17}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 12, 13, 14, 17, 24, 27, 43, 56, 66, 82, 101, 119, 144, 173, 185], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\chat_message.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 63, 74, 81, 84], "summary": {"covered_lines": 11, "num_statements": 22, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [26, 27, 28, 42, 43, 58, 60, 61, 65, 71, 72], "excluded_lines": [], "functions": {"CRUDChatMessage.get_conversation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [26, 27, 28, 42, 43, 58, 60, 61], "excluded_lines": [], "start_line": 11}, "CRUDChatMessage.get_recent_conversations": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [65, 71, 72], "excluded_lines": [], "start_line": 63}, "CRUDChatMessage.create_message": {"executed_lines": [81], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 74}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 63, 74, 84], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDChatMessage": {"executed_lines": [81], "summary": {"covered_lines": 1, "num_statements": 12, "percent_covered": 8.333333333333334, "percent_covered_display": "8.33", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 8.333333333333334, "percent_statements_covered_display": "8.33"}, "missing_lines": [26, 27, 28, 42, 43, 58, 60, 61, 65, 71, 72], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 63, 74, 84], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\dweller.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 22, 23, 25, 28, 29, 31, 33, 43, 44, 45, 47, 49, 61, 64, 65, 68, 69, 70, 75, 81, 82, 83, 84, 86, 88, 89, 90, 92, 101, 108, 109, 111, 112, 116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 127, 128, 130, 131, 133, 135, 136, 139, 141, 143, 144, 145, 146, 148, 149, 150, 151, 153, 158, 160, 161, 162, 172, 174, 180, 184, 187, 188, 190, 193, 194, 196, 202, 204, 205, 206, 207, 210, 215, 217, 219, 228, 232, 234, 244, 249, 267, 285, 312, 340, 367, 433], "summary": {"covered_lines": 108, "num_statements": 179, "percent_covered": 60.33519553072626, "percent_covered_display": "60.34", "missing_lines": 71, "excluded_lines": 0, "percent_statements_covered": 60.33519553072626, "percent_statements_covered_display": "60.34"}, "missing_lines": [46, 77, 78, 80, 137, 176, 177, 178, 199, 213, 221, 222, 223, 226, 230, 245, 247, 251, 253, 254, 256, 257, 260, 261, 263, 269, 271, 272, 274, 275, 278, 279, 281, 303, 305, 306, 308, 309, 310, 328, 337, 338, 356, 364, 365, 371, 372, 374, 377, 387, 390, 396, 397, 399, 400, 405, 406, 407, 408, 413, 414, 416, 417, 418, 421, 422, 423, 424, 426, 427, 430], "excluded_lines": [], "functions": {"CRUDDweller.get": {"executed_lines": [31, 33, 43, 44, 45, 47], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "85.71", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "85.71"}, "missing_lines": [46], "excluded_lines": [], "start_line": 29}, "CRUDDweller.get_multi_by_vault": {"executed_lines": [61, 64, 65, 68, 69, 70, 75, 81, 82, 83, 84, 86, 88, 89, 90], "summary": {"covered_lines": 15, "num_statements": 18, "percent_covered": 83.33333333333333, "percent_covered_display": "83.33", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83.33"}, "missing_lines": [77, 78, 80], "excluded_lines": [], "start_line": 49}, "CRUDDweller.get_by_status": {"executed_lines": [101, 108, 109], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 92}, "CRUDDweller.create_random": {"executed_lines": [116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 127, 128], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 112}, "CRUDDweller.calculate_experience_required": {"executed_lines": [133], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 131}, "CRUDDweller.is_alive": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [137], "excluded_lines": [], "start_line": 136}, "CRUDDweller.add_experience": {"executed_lines": [141, 143, 144, 145, 146, 148, 149, 150, 151, 153, 158, 160, 161, 162, 172], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 139}, "CRUDDweller.get_dweller_by_name": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [176, 177, 178], "excluded_lines": [], "start_line": 174}, "CRUDDweller.move_to_room": {"executed_lines": [184, 187, 188, 190, 193, 194, 196, 202, 204, 205, 206, 207, 210, 215, 217], "summary": {"covered_lines": 15, "num_statements": 17, "percent_covered": 88.23529411764706, "percent_covered_display": "88.24", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 88.23529411764706, "percent_statements_covered_display": "88.24"}, "missing_lines": [199, 213], "excluded_lines": [], "start_line": 180}, "CRUDDweller.reanimate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [221, 222, 223, 226], "excluded_lines": [], "start_line": 219}, "CRUDDweller.mark_as_dead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [230], "excluded_lines": [], "start_line": 228}, "CRUDDweller.get_full_info": {"executed_lines": [234, 244], "summary": {"covered_lines": 2, "num_statements": 4, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [245, 247], "excluded_lines": [], "start_line": 232}, "CRUDDweller.use_stimpack": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [251, 253, 254, 256, 257, 260, 261, 263], "excluded_lines": [], "start_line": 249}, "CRUDDweller.use_radaway": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [269, 271, 272, 274, 275, 278, 279, 281], "excluded_lines": [], "start_line": 267}, "CRUDDweller.get_dead_dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [303, 305, 306, 308, 309, 310], "excluded_lines": [], "start_line": 285}, "CRUDDweller.get_revivable_dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [328, 337, 338], "excluded_lines": [], "start_line": 312}, "CRUDDweller.get_graveyard": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [356, 364, 365], "excluded_lines": [], "start_line": 340}, "CRUDDweller.auto_assign_to_best_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 26, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [371, 372, 374, 377, 387, 390, 396, 397, 399, 400, 405, 406, 407, 408, 413, 414, 416, 417, 418, 421, 422, 423, 424, 426, 427, 430], "excluded_lines": [], "start_line": 367}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 22, 23, 25, 28, 29, 49, 92, 111, 112, 130, 131, 135, 136, 139, 174, 180, 219, 228, 232, 249, 267, 285, 312, 340, 367, 433], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDDweller": {"executed_lines": [31, 33, 43, 44, 45, 47, 61, 64, 65, 68, 69, 70, 75, 81, 82, 83, 84, 86, 88, 89, 90, 101, 108, 109, 116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 127, 128, 133, 141, 143, 144, 145, 146, 148, 149, 150, 151, 153, 158, 160, 161, 162, 172, 184, 187, 188, 190, 193, 194, 196, 202, 204, 205, 206, 207, 210, 215, 217, 234, 244], "summary": {"covered_lines": 69, "num_statements": 140, "percent_covered": 49.285714285714285, "percent_covered_display": "49.29", "missing_lines": 71, "excluded_lines": 0, "percent_statements_covered": 49.285714285714285, "percent_statements_covered_display": "49.29"}, "missing_lines": [46, 77, 78, 80, 137, 176, 177, 178, 199, 213, 221, 222, 223, 226, 230, 245, 247, 251, 253, 254, 256, 257, 260, 261, 263, 269, 271, 272, 274, 275, 278, 279, 281, 303, 305, 306, 308, 309, 310, 328, 337, 338, 356, 364, 365, 371, 372, 374, 377, 387, 390, 396, 397, 399, 400, 405, 406, 407, 408, 413, 414, 416, 417, 418, 421, 422, 423, 424, 426, 427, 430], "excluded_lines": [], "start_line": 28}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 22, 23, 25, 28, 29, 49, 92, 111, 112, 130, 131, 135, 136, 139, 174, 180, 219, 228, 232, 249, 267, 285, 312, 340, 367, 433], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\exploration.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 15, 18, 31, 32, 34, 41, 53, 56, 57, 58, 60, 62, 63, 64, 66, 73, 78, 80, 87, 94, 102, 109, 110, 111, 112, 113, 114, 116, 123, 124, 125, 126, 127, 128, 130, 140, 141, 142, 143, 144, 145, 147, 164, 174, 175, 176, 177, 178, 179, 180, 182, 183, 184, 185, 188], "summary": {"covered_lines": 63, "num_statements": 72, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50"}, "missing_lines": [92, 99, 100, 157, 158, 159, 160, 161, 162], "excluded_lines": [], "functions": {"CRUDExploration.create_with_dweller_stats": {"executed_lines": [31, 32, 34, 41, 53, 56, 57, 58, 60, 62, 63, 64], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "CRUDExploration.get_active_by_vault": {"executed_lines": [73, 78], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 66}, "CRUDExploration.get_by_dweller": {"executed_lines": [87], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [92], "excluded_lines": [], "start_line": 80}, "CRUDExploration.get_all_active": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [99, 100], "excluded_lines": [], "start_line": 94}, "CRUDExploration.complete_exploration": {"executed_lines": [109, 110, 111, 112, 113, 114], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 102}, "CRUDExploration.recall_exploration": {"executed_lines": [123, 124, 125, 126, 127, 128], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 116}, "CRUDExploration.add_event": {"executed_lines": [140, 141, 142, 143, 144, 145], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 130}, "CRUDExploration.add_loot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [157, 158, 159, 160, 161, 162], "excluded_lines": [], "start_line": 147}, "CRUDExploration.update_stats": {"executed_lines": [174, 175, 176, 177, 178, 179, 180, 182, 183, 184, 185], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 164}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 15, 18, 66, 80, 94, 102, 116, 130, 147, 164, 188], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDExploration": {"executed_lines": [31, 32, 34, 41, 53, 56, 57, 58, 60, 62, 63, 64, 73, 78, 87, 109, 110, 111, 112, 113, 114, 123, 124, 125, 126, 127, 128, 140, 141, 142, 143, 144, 145, 174, 175, 176, 177, 178, 179, 180, 182, 183, 184, 185], "summary": {"covered_lines": 44, "num_statements": 53, "percent_covered": 83.01886792452831, "percent_covered_display": "83.02", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 83.01886792452831, "percent_statements_covered_display": "83.02"}, "missing_lines": [92, 99, 100, 157, 158, 159, 160, 161, 162], "excluded_lines": [], "start_line": 15}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 15, 18, 66, 80, 94, 102, 116, 130, 147, 164, 188], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\game_state.py": {"executed_lines": [3, 4, 5, 7, 10, 13, 14, 20, 21, 33, 34, 43, 44, 53, 54, 63, 64, 72], "summary": {"covered_lines": 18, "num_statements": 49, "percent_covered": 36.734693877551024, "percent_covered_display": "36.73", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 36.734693877551024, "percent_statements_covered_display": "36.73"}, "missing_lines": [16, 17, 18, 23, 25, 26, 27, 28, 29, 31, 36, 37, 38, 39, 40, 41, 46, 47, 48, 49, 50, 51, 56, 57, 58, 59, 60, 61, 66, 67, 68], "excluded_lines": [], "functions": {"CRUDGameState.get_by_vault_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [16, 17, 18], "excluded_lines": [], "start_line": 14}, "CRUDGameState.get_or_create": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [23, 25, 26, 27, 28, 29, 31], "excluded_lines": [], "start_line": 21}, "CRUDGameState.pause": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36, 37, 38, 39, 40, 41], "excluded_lines": [], "start_line": 34}, "CRUDGameState.resume": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [46, 47, 48, 49, 50, 51], "excluded_lines": [], "start_line": 44}, "CRUDGameState.update_tick": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [56, 57, 58, 59, 60, 61], "excluded_lines": [], "start_line": 54}, "CRUDGameState.get_all_active": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [66, 67, 68], "excluded_lines": [], "start_line": 64}, "": {"executed_lines": [3, 4, 5, 7, 10, 13, 14, 20, 21, 33, 34, 43, 44, 53, 54, 63, 64, 72], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDGameState": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 31, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [16, 17, 18, 23, 25, 26, 27, 28, 29, 31, 36, 37, 38, 39, 40, 41, 46, 47, 48, 49, 50, 51, 56, 57, 58, 59, 60, 61, 66, 67, 68], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [3, 4, 5, 7, 10, 13, 14, 20, 21, 33, 34, 43, 44, 53, 54, 63, 64, 72], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\incident.py": {"executed_lines": [3, 4, 5, 7, 10, 13, 14, 37, 38, 44, 45, 47, 50, 51, 53, 54, 62, 63, 65, 68, 69, 71, 72, 74, 77, 78, 80, 81, 91, 92, 102, 103, 112, 113, 122, 123, 136], "summary": {"covered_lines": 37, "num_statements": 80, "percent_covered": 46.25, "percent_covered_display": "46.25", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 46.25, "percent_statements_covered_display": "46.25"}, "missing_lines": [24, 32, 33, 34, 35, 40, 41, 42, 56, 59, 60, 83, 84, 85, 86, 87, 88, 89, 94, 95, 96, 97, 98, 99, 100, 105, 106, 107, 110, 115, 116, 117, 118, 119, 120, 125, 126, 127, 128, 129, 130, 131, 132], "excluded_lines": [], "functions": {"CRUDIncident.create": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24, 32, 33, 34, 35], "excluded_lines": [], "start_line": 14}, "CRUDIncident.get": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40, 41, 42], "excluded_lines": [], "start_line": 38}, "CRUDIncident.get_active_by_vault": {"executed_lines": [47, 50, 51], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "CRUDIncident.get_by_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [56, 59, 60], "excluded_lines": [], "start_line": 54}, "CRUDIncident.get_active_incident_types_in_vault": {"executed_lines": [65, 68, 69], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "CRUDIncident.get_rooms_with_active_incidents": {"executed_lines": [74, 77, 78], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 72}, "CRUDIncident.resolve": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [83, 84, 85, 86, 87, 88, 89], "excluded_lines": [], "start_line": 81}, "CRUDIncident.spread_to_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [94, 95, 96, 97, 98, 99, 100], "excluded_lines": [], "start_line": 92}, "CRUDIncident.get_spreading_incidents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [105, 106, 107, 110], "excluded_lines": [], "start_line": 103}, "CRUDIncident.remove": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [115, 116, 117, 118, 119, 120], "excluded_lines": [], "start_line": 113}, "CRUDIncident.remove_all_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [125, 126, 127, 128, 129, 130, 131, 132], "excluded_lines": [], "start_line": 123}, "": {"executed_lines": [3, 4, 5, 7, 10, 13, 14, 37, 38, 44, 45, 53, 54, 62, 63, 71, 72, 80, 81, 91, 92, 102, 103, 112, 113, 122, 123, 136], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDIncident": {"executed_lines": [47, 50, 51, 65, 68, 69, 74, 77, 78], "summary": {"covered_lines": 9, "num_statements": 52, "percent_covered": 17.307692307692307, "percent_covered_display": "17.31", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 17.307692307692307, "percent_statements_covered_display": "17.31"}, "missing_lines": [24, 32, 33, 34, 35, 40, 41, 42, 56, 59, 60, 83, 84, 85, 86, 87, 88, 89, 94, 95, 96, 97, 98, 99, 100, 105, 106, 107, 110, 115, 116, 117, 118, 119, 120, 125, 126, 127, 128, 129, 130, 131, 132], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [3, 4, 5, 7, 10, 13, 14, 37, 38, 44, 45, 53, 54, 62, 63, 71, 72, 80, 81, 91, 92, 102, 103, 112, 113, 122, 123, 136], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\item_base.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 13, 14, 15, 16, 17, 19, 20, 23, 27, 28, 29, 31, 33, 39, 41, 43, 91, 92, 118, 119, 122, 123, 130, 131, 135, 148, 149, 190, 200, 201, 211], "summary": {"covered_lines": 39, "num_statements": 124, "percent_covered": 31.451612903225808, "percent_covered_display": "31.45", "missing_lines": 85, "excluded_lines": 0, "percent_statements_covered": 31.451612903225808, "percent_statements_covered_display": "31.45"}, "missing_lines": [30, 40, 44, 47, 49, 55, 56, 58, 59, 61, 63, 65, 66, 67, 69, 71, 72, 73, 75, 76, 77, 80, 81, 82, 84, 85, 86, 87, 89, 95, 97, 107, 108, 110, 111, 113, 114, 116, 120, 126, 132, 133, 136, 138, 139, 141, 143, 144, 146, 154, 157, 158, 159, 163, 164, 168, 169, 170, 171, 172, 175, 177, 178, 179, 188, 191, 192, 193, 195, 196, 197, 198, 203, 204, 205, 207, 208, 209, 212, 213, 214, 216, 218, 219, 220], "excluded_lines": [], "functions": {"CRUDItem.create": {"executed_lines": [28, 29, 31], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [30], "excluded_lines": [], "start_line": 27}, "CRUDItem.update": {"executed_lines": [39, 41], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [40], "excluded_lines": [], "start_line": 33}, "CRUDItem.equip": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 27, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [44, 47, 49, 55, 56, 58, 59, 61, 63, 65, 66, 67, 69, 71, 72, 73, 75, 76, 77, 80, 81, 82, 84, 85, 86, 87, 89], "excluded_lines": [], "start_line": 43}, "CRUDItem._fetch_unequip_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [95, 97, 107, 108, 110, 111, 113, 114, 116], "excluded_lines": [], "start_line": 92}, "CRUDItem._get_item_model": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [120], "excluded_lines": [], "start_line": 119}, "CRUDItem._update_item": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [126], "excluded_lines": [], "start_line": 123}, "CRUDItem._update_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [132, 133], "excluded_lines": [], "start_line": 131}, "CRUDItem.unequip": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [136, 138, 139, 141, 143, 144, 146], "excluded_lines": [], "start_line": 135}, "CRUDItem.convert_to_junk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [154, 157, 158, 159, 163, 164, 168, 169, 170, 171, 172, 175, 177, 178, 179, 188], "excluded_lines": [], "start_line": 149}, "CRUDItem.scrap": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [191, 192, 193, 195, 196, 197, 198], "excluded_lines": [], "start_line": 190}, "CRUDItem.add_caps_to_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [203, 204, 205, 207, 208, 209], "excluded_lines": [], "start_line": 201}, "CRUDItem.sell": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [212, 213, 214, 216, 218, 219, 220], "excluded_lines": [], "start_line": 211}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 13, 14, 15, 16, 17, 19, 20, 23, 27, 33, 43, 91, 92, 118, 119, 122, 123, 130, 131, 135, 148, 149, 190, 200, 201, 211], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDItem": {"executed_lines": [28, 29, 31, 39, 41], "summary": {"covered_lines": 5, "num_statements": 90, "percent_covered": 5.555555555555555, "percent_covered_display": "5.56", "missing_lines": 85, "excluded_lines": 0, "percent_statements_covered": 5.555555555555555, "percent_statements_covered_display": "5.56"}, "missing_lines": [30, 40, 44, 47, 49, 55, 56, 58, 59, 61, 63, 65, 66, 67, 69, 71, 72, 73, 75, 76, 77, 80, 81, 82, 84, 85, 86, 87, 89, 95, 97, 107, 108, 110, 111, 113, 114, 116, 120, 126, 132, 133, 136, 138, 139, 141, 143, 144, 146, 154, 157, 158, 159, 163, 164, 168, 169, 170, 171, 172, 175, 177, 178, 179, 188, 191, 192, 193, 195, 196, 197, 198, 203, 204, 205, 207, 208, 209, 212, 213, 214, 216, 218, 219, 220], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 13, 14, 15, 16, 17, 19, 20, 23, 27, 33, 43, 91, 92, 118, 119, 122, 123, 130, 131, 135, 148, 149, 190, 200, 201, 211], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\junk.py": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDJunk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 6}, "": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\llm_interaction.py": {"executed_lines": [1, 2, 5, 6, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 5, 6, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDLLMInteraction": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 5}, "": {"executed_lines": [1, 2, 5, 6, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\mixins.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 10, 13, 14, 16, 28, 40, 50], "summary": {"covered_lines": 13, "num_statements": 28, "percent_covered": 46.42857142857143, "percent_covered_display": "46.43", "missing_lines": 15, "excluded_lines": 1, "percent_statements_covered": 46.42857142857143, "percent_statements_covered_display": "46.43"}, "missing_lines": [17, 20, 21, 23, 24, 26, 31, 34, 36, 38, 47, 51, 52, 53, 55], "excluded_lines": [48], "functions": {"CompletionMixin.get_link": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [17, 20, 21, 23, 24, 26], "excluded_lines": [], "start_line": 16}, "CompletionMixin._mark_as_complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 34, 36, 38], "excluded_lines": [], "start_line": 28}, "CompletionMixin._handle_completion_cascade": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 1, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [47], "excluded_lines": [48], "start_line": 40}, "CompletionMixin.complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [51, 52, 53, 55], "excluded_lines": [], "start_line": 50}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 10, 13, 14, 16, 28, 40, 50], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CompletionMixin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 1, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [17, 20, 21, 23, 24, 26, 31, 34, 36, 38, 47, 51, 52, 53, 55], "excluded_lines": [48], "start_line": 13}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 10, 13, 14, 16, 28, 40, 50], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\notification.py": {"executed_lines": [1, 2, 4, 5, 7, 8, 11, 12, 31, 42, 54, 70, 82], "summary": {"covered_lines": 13, "num_statements": 50, "percent_covered": 26.0, "percent_covered_display": "26.00", "missing_lines": 37, "excluded_lines": 0, "percent_statements_covered": 26.0, "percent_statements_covered_display": "26.00"}, "missing_lines": [22, 24, 25, 27, 28, 29, 33, 39, 40, 44, 45, 46, 47, 48, 49, 50, 51, 52, 56, 57, 58, 60, 61, 62, 63, 64, 65, 67, 68, 72, 73, 74, 75, 76, 77, 78, 79], "excluded_lines": [], "functions": {"CRUDNotification.get_user_notifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [22, 24, 25, 27, 28, 29], "excluded_lines": [], "start_line": 12}, "CRUDNotification.get_unread_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [33, 39, 40], "excluded_lines": [], "start_line": 31}, "CRUDNotification.mark_as_read": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [44, 45, 46, 47, 48, 49, 50, 51, 52], "excluded_lines": [], "start_line": 42}, "CRUDNotification.mark_all_as_read": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [56, 57, 58, 60, 61, 62, 63, 64, 65, 67, 68], "excluded_lines": [], "start_line": 54}, "CRUDNotification.dismiss": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [72, 73, 74, 75, 76, 77, 78, 79], "excluded_lines": [], "start_line": 70}, "": {"executed_lines": [1, 2, 4, 5, 7, 8, 11, 12, 31, 42, 54, 70, 82], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDNotification": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 37, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 37, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [22, 24, 25, 27, 28, 29, 33, 39, 40, 44, 45, 46, 47, 48, 49, 50, 51, 52, 56, 57, 58, 60, 61, 62, 63, 64, 65, 67, 68, 72, 73, 74, 75, 76, 77, 78, 79], "excluded_lines": [], "start_line": 11}, "": {"executed_lines": [1, 2, 4, 5, 7, 8, 11, 12, 31, 42, 54, 70, 82], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\objective.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 18, 19, 20, 22, 23, 24, 26, 27, 29, 30, 32, 34, 37, 44, 45, 47, 59, 63, 76, 79, 82, 83, 85, 87, 88, 91, 92, 94, 95, 97, 99, 115, 118, 119, 121, 123, 124, 127, 129, 130, 132, 133, 134, 137], "summary": {"covered_lines": 54, "num_statements": 54, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"CRUDObjective.__init__": {"executed_lines": [19, 20], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "CRUDObjective.create_for_vault": {"executed_lines": [23, 24, 26, 27, 29, 30, 32], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "CRUDObjective.get_multi_for_vault": {"executed_lines": [37, 44, 45, 47], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "CRUDObjective._handle_completion_cascade": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 59}, "CRUDObjective.complete": {"executed_lines": [76, 79, 82, 83, 85, 87, 88, 91, 92, 94, 95, 97], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "CRUDObjective.update_progress": {"executed_lines": [115, 118, 119, 121, 123, 124, 127, 129, 130, 132, 133, 134], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 18, 22, 34, 59, 63, 99, 137], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDObjective": {"executed_lines": [19, 20, 23, 24, 26, 27, 29, 30, 32, 37, 44, 45, 47, 76, 79, 82, 83, 85, 87, 88, 91, 92, 94, 95, 97, 115, 118, 119, 121, 123, 124, 127, 129, 130, 132, 133, 134], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 18, 22, 34, 59, 63, 99, 137], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\outfit.py": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDOutfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 6}, "": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\prompt.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 4, 5, 8, 9, 10, 11, 12, 15], "excluded_lines": [], "functions": {"CRUDPrompt.get_prompt_by_name": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [10, 11, 12], "excluded_lines": [], "start_line": 9}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 4, 5, 8, 9, 15], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDPrompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [10, 11, 12], "excluded_lines": [], "start_line": 8}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 4, 5, 8, 9, 15], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\quest.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 21, 22, 24, 30, 41, 42, 44, 60, 61, 75, 79, 95, 96, 100, 103, 104, 106, 108, 109, 110, 111, 114, 115, 116, 117, 118, 121], "summary": {"covered_lines": 41, "num_statements": 48, "percent_covered": 85.41666666666667, "percent_covered_display": "85.42", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 85.41666666666667, "percent_statements_covered_display": "85.42"}, "missing_lines": [62, 70, 71, 72, 73, 77, 97], "excluded_lines": [], "functions": {"CRUDQuest.__init__": {"executed_lines": [21, 22], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "CRUDQuest.get_multi_for_vault": {"executed_lines": [30, 41, 42, 44], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "CRUDQuest.create_quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [62, 70, 71, 72, 73], "excluded_lines": [], "start_line": 61}, "CRUDQuest._handle_completion_cascade": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [77], "excluded_lines": [], "start_line": 75}, "CRUDQuest.assign_to_vault": {"executed_lines": [95, 96, 100, 103, 104, 106, 108, 109, 110, 111, 114, 115, 116, 117, 118], "summary": {"covered_lines": 15, "num_statements": 16, "percent_covered": 93.75, "percent_covered_display": "93.75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.75, "percent_statements_covered_display": "93.75"}, "missing_lines": [97], "excluded_lines": [], "start_line": 79}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 24, 60, 61, 75, 79, 121], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDQuest": {"executed_lines": [21, 22, 30, 41, 42, 44, 95, 96, 100, 103, 104, 106, 108, 109, 110, 111, 114, 115, 116, 117, 118], "summary": {"covered_lines": 21, "num_statements": 28, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [62, 70, 71, 72, 73, 77, 97], "excluded_lines": [], "start_line": 17}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 24, 60, 61, 75, 79, 121], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\relationship.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 18, 21, 38, 42, 43, 45, 66, 102, 126, 146, 161, 163, 166, 167, 168, 174, 177, 198, 204, 205, 206, 207, 211], "summary": {"covered_lines": 31, "num_statements": 49, "percent_covered": 63.265306122448976, "percent_covered_display": "63.27", "missing_lines": 18, "excluded_lines": 2, "percent_statements_covered": 63.265306122448976, "percent_statements_covered_display": "63.27"}, "missing_lines": [60, 63, 64, 83, 85, 87, 89, 91, 92, 93, 99, 100, 117, 123, 124, 143, 144, 175], "excluded_lines": [14, 15], "functions": {"CRUDRelationship.get_by_dweller_pair": {"executed_lines": [38, 42, 43], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "CRUDRelationship.get_by_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [60, 63, 64], "excluded_lines": [], "start_line": 45}, "CRUDRelationship.get_by_type": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [83, 85, 87, 89, 91, 92, 93, 99, 100], "excluded_lines": [], "start_line": 66}, "CRUDRelationship.get_partners": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [117, 123, 124], "excluded_lines": [], "start_line": 102}, "CRUDRelationship.exists_between": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [143, 144], "excluded_lines": [], "start_line": 126}, "CRUDRelationship.get_by_vault": {"executed_lines": [161, 163, 166, 167, 168, 174], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "85.71", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "85.71"}, "missing_lines": [175], "excluded_lines": [], "start_line": 146}, "CRUDRelationship.create_with_defaults": {"executed_lines": [198, 204, 205, 206, 207], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 177}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 18, 21, 45, 66, 102, 126, 146, 177, 211], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [14, 15], "start_line": 1}}, "classes": {"CRUDRelationship": {"executed_lines": [38, 42, 43, 161, 163, 166, 167, 168, 174, 198, 204, 205, 206, 207], "summary": {"covered_lines": 14, "num_statements": 32, "percent_covered": 43.75, "percent_covered_display": "43.75", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 43.75, "percent_statements_covered_display": "43.75"}, "missing_lines": [60, 63, 64, 83, 85, 87, 89, 91, 92, 93, 99, 100, 117, 123, 124, 143, 144, 175], "excluded_lines": [], "start_line": 18}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 18, 21, 45, 66, 102, 126, 146, 177, 211], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [14, 15], "start_line": 1}}}, "app\\crud\\room.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 16, 19, 20, 21, 26, 27, 29, 32, 33, 34, 35, 36, 41, 42, 43, 44, 45, 50, 51, 62, 63, 79, 80, 89, 101, 102, 108, 146, 160, 162, 228], "summary": {"covered_lines": 42, "num_statements": 125, "percent_covered": 33.6, "percent_covered_display": "33.60", "missing_lines": 83, "excluded_lines": 0, "percent_statements_covered": 33.6, "percent_statements_covered_display": "33.60"}, "missing_lines": [23, 24, 30, 37, 38, 39, 46, 47, 48, 55, 60, 69, 72, 74, 75, 76, 77, 82, 83, 86, 87, 91, 92, 93, 94, 95, 96, 99, 104, 110, 112, 115, 117, 121, 122, 123, 124, 126, 127, 129, 130, 132, 134, 135, 137, 139, 140, 144, 147, 148, 149, 153, 154, 158, 163, 166, 169, 170, 171, 174, 175, 176, 177, 179, 180, 183, 186, 189, 193, 194, 196, 199, 200, 202, 204, 205, 208, 215, 216, 219, 220, 224, 225], "excluded_lines": [], "functions": {"CRUDRoom.get_multy_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [23, 24], "excluded_lines": [], "start_line": 21}, "CRUDRoom.get_existing_room_names": {"executed_lines": [29], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [30], "excluded_lines": [], "start_line": 27}, "CRUDRoom.evaluate_capacity_formula": {"executed_lines": [34, 35, 36], "summary": {"covered_lines": 3, "num_statements": 6, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [37, 38, 39], "excluded_lines": [], "start_line": 33}, "CRUDRoom.evaluate_output_formula": {"executed_lines": [43, 44, 45], "summary": {"covered_lines": 3, "num_statements": 6, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [46, 47, 48], "excluded_lines": [], "start_line": 42}, "CRUDRoom.get_room_by_coordinates": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [55, 60], "excluded_lines": [], "start_line": 51}, "CRUDRoom.get_room_build_price": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [69, 72, 74, 75, 76, 77], "excluded_lines": [], "start_line": 63}, "CRUDRoom.check_is_unique_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [82, 83, 86, 87], "excluded_lines": [], "start_line": 80}, "CRUDRoom.expand_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [91, 92, 93, 94, 95, 96, 99], "excluded_lines": [], "start_line": 89}, "CRUDRoom.requires_recalculation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [104], "excluded_lines": [], "start_line": 102}, "CRUDRoom.build": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [110, 112, 115, 117, 121, 122, 123, 124, 126, 127, 129, 130, 132, 134, 135, 137, 139, 140, 144], "excluded_lines": [], "start_line": 108}, "CRUDRoom.destroy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [147, 148, 149, 153, 154, 158], "excluded_lines": [], "start_line": 146}, "CRUDRoom.upgrade": {"executed_lines": [162], "summary": {"covered_lines": 1, "num_statements": 30, "percent_covered": 3.3333333333333335, "percent_covered_display": "3.33", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 3.3333333333333335, "percent_statements_covered_display": "3.33"}, "missing_lines": [163, 166, 169, 170, 171, 174, 175, 176, 177, 179, 180, 183, 186, 189, 193, 194, 196, 199, 200, 202, 204, 205, 208, 215, 216, 219, 220, 224, 225], "excluded_lines": [], "start_line": 160}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 16, 19, 20, 21, 26, 27, 32, 33, 41, 42, 50, 51, 62, 63, 79, 80, 89, 101, 102, 108, 146, 160, 228], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDRoom": {"executed_lines": [29, 34, 35, 36, 43, 44, 45, 162], "summary": {"covered_lines": 8, "num_statements": 91, "percent_covered": 8.791208791208792, "percent_covered_display": "8.79", "missing_lines": 83, "excluded_lines": 0, "percent_statements_covered": 8.791208791208792, "percent_statements_covered_display": "8.79"}, "missing_lines": [23, 24, 30, 37, 38, 39, 46, 47, 48, 55, 60, 69, 72, 74, 75, 76, 77, 82, 83, 86, 87, 91, 92, 93, 94, 95, 96, 99, 104, 110, 112, 115, 117, 121, 122, 123, 124, 126, 127, 129, 130, 132, 134, 135, 137, 139, 140, 144, 147, 148, 149, 153, 154, 158, 163, 166, 169, 170, 171, 174, 175, 176, 177, 179, 180, 183, 186, 189, 193, 194, 196, 199, 200, 202, 204, 205, 208, 215, 216, 219, 220, 224, 225], "excluded_lines": [], "start_line": 19}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 16, 19, 20, 21, 26, 27, 32, 33, 41, 42, 50, 51, 62, 63, 79, 80, 89, 101, 102, 108, 146, 160, 228], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\training.py": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 13, 16, 22, 25, 27, 33, 36, 38, 44, 47, 49, 74, 89, 90, 100], "summary": {"covered_lines": 22, "num_statements": 31, "percent_covered": 70.96774193548387, "percent_covered_display": "70.97", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 70.96774193548387, "percent_statements_covered_display": "70.97"}, "missing_lines": [66, 68, 69, 71, 72, 92, 94, 95, 97], "excluded_lines": [], "functions": {"CRUDTraining.get_active_by_dweller": {"executed_lines": [22, 25], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "CRUDTraining.get_active_by_vault": {"executed_lines": [33, 36], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "CRUDTraining.get_active_by_room": {"executed_lines": [44, 47], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "CRUDTraining.get_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [66, 68, 69, 71, 72], "excluded_lines": [], "start_line": 49}, "CRUDTraining.get_dwellers_for_trainings": {"executed_lines": [89, 90], "summary": {"covered_lines": 2, "num_statements": 6, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [92, 94, 95, 97], "excluded_lines": [], "start_line": 74}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 13, 16, 27, 38, 49, 74, 100], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDTraining": {"executed_lines": [22, 25, 33, 36, 44, 47, 89, 90], "summary": {"covered_lines": 8, "num_statements": 17, "percent_covered": 47.05882352941177, "percent_covered_display": "47.06", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 47.05882352941177, "percent_statements_covered_display": "47.06"}, "missing_lines": [66, 68, 69, 71, 72, 92, 94, 95, 97], "excluded_lines": [], "start_line": 13}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 13, 16, 27, 38, 49, 74, 100], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\user.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 16, 17, 18, 19, 21, 25, 26, 32, 33, 34, 35, 38, 39, 40, 47, 49, 55, 56, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 70, 71, 72, 74, 75, 76, 79], "summary": {"covered_lines": 46, "num_statements": 52, "percent_covered": 88.46153846153847, "percent_covered_display": "88.46", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 88.46153846153847, "percent_statements_covered_display": "88.46"}, "missing_lines": [22, 23, 41, 42, 43, 67], "excluded_lines": [], "functions": {"CRUDUser.get_by_email": {"executed_lines": [18, 19], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "CRUDUser.get_by_username": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [22, 23], "excluded_lines": [], "start_line": 21}, "CRUDUser.create": {"executed_lines": [26, 32, 33, 34, 35, 38, 39, 40, 47], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [41, 42, 43], "excluded_lines": [], "start_line": 25}, "CRUDUser.update": {"executed_lines": [55, 56, 57, 58, 59, 60], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 49}, "CRUDUser.authenticate": {"executed_lines": [63, 64, 65, 66, 68], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83.33", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83.33"}, "missing_lines": [67], "excluded_lines": [], "start_line": 62}, "CRUDUser.is_active": {"executed_lines": [72], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "CRUDUser.is_superuser": {"executed_lines": [76], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 75}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 16, 17, 21, 25, 49, 62, 70, 71, 74, 75, 79], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDUser": {"executed_lines": [18, 19, 26, 32, 33, 34, 35, 38, 39, 40, 47, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 68, 72, 76], "summary": {"covered_lines": 24, "num_statements": 30, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [22, 23, 41, 42, 43, 67], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 16, 17, 21, 25, 49, 62, 70, 71, 74, 75, 79], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\user_profile.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 19, 21, 54, 62, 63, 66, 67, 68, 70, 72, 86], "summary": {"covered_lines": 23, "num_statements": 41, "percent_covered": 56.09756097560975, "percent_covered_display": "56.10", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 56.09756097560975, "percent_statements_covered_display": "56.10"}, "missing_lines": [36, 37, 38, 39, 40, 41, 43, 44, 46, 47, 48, 50, 52, 64, 79, 80, 81, 83], "excluded_lines": [], "functions": {"CRUDUserProfile.get_by_user_id": {"executed_lines": [18, 19], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "CRUDUserProfile.create_for_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36, 37, 38, 39, 40, 41, 43, 44, 46, 47, 48, 50, 52], "excluded_lines": [], "start_line": 21}, "CRUDUserProfile.increment_statistic": {"executed_lines": [62, 63, 66, 67, 68, 70], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "85.71", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "85.71"}, "missing_lines": [64], "excluded_lines": [], "start_line": 54}, "CRUDUserProfile.update_statistics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [79, 80, 81, 83], "excluded_lines": [], "start_line": 72}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 21, 54, 72, 86], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDUserProfile": {"executed_lines": [18, 19, 62, 63, 66, 67, 68, 70], "summary": {"covered_lines": 8, "num_statements": 26, "percent_covered": 30.76923076923077, "percent_covered_display": "30.77", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 30.76923076923077, "percent_statements_covered_display": "30.77"}, "missing_lines": [36, 37, 38, 39, 40, 41, 43, 44, 46, 47, 48, 50, 52, 64, 79, 80, 81, 83], "excluded_lines": [], "start_line": 15}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 21, 54, 72, 86], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\vault.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 23, 24, 32, 47, 48, 50, 53, 54, 55, 56, 57, 59, 113, 114, 118, 119, 123, 129, 163, 166, 195, 196, 197, 198, 199, 200, 202, 205, 206, 207, 208, 210, 221, 222, 228, 236, 237, 240, 241, 242, 245, 251, 253, 255, 257, 258, 259, 262, 265, 275], "summary": {"covered_lines": 65, "num_statements": 136, "percent_covered": 47.794117647058826, "percent_covered_display": "47.79", "missing_lines": 71, "excluded_lines": 0, "percent_statements_covered": 47.794117647058826, "percent_statements_covered_display": "47.79"}, "missing_lines": [20, 21, 25, 26, 27, 28, 29, 30, 51, 66, 67, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 86, 87, 88, 89, 92, 93, 95, 97, 100, 101, 103, 106, 107, 108, 109, 111, 115, 116, 120, 121, 124, 125, 126, 127, 132, 145, 146, 179, 180, 181, 216, 217, 218, 219, 243, 244, 246, 247, 248, 249, 260, 266, 267, 268, 269, 272], "excluded_lines": [], "functions": {"CRUDVault.get_by_user_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20, 21], "excluded_lines": [], "start_line": 19}, "CRUDVault._calculate_new_capacity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [25, 26, 27, 28, 29, 30], "excluded_lines": [], "start_line": 24}, "CRUDVault.update_storage": {"executed_lines": [47, 48, 50, 53, 54, 55, 56, 57], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 88.88888888888889, "percent_covered_display": "88.89", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "88.89"}, "missing_lines": [51], "excluded_lines": [], "start_line": 32}, "CRUDVault.recalculate_vault_attributes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 31, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [66, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 86, 87, 88, 89, 92, 93, 95, 97, 100, 101, 103, 106, 107, 108, 109, 111], "excluded_lines": [], "start_line": 59}, "CRUDVault.recalculate_vault_attributes._update_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [67], "excluded_lines": [], "start_line": 66}, "CRUDVault.get_population": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [115, 116], "excluded_lines": [], "start_line": 114}, "CRUDVault.get_rooms_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [120, 121], "excluded_lines": [], "start_line": 119}, "CRUDVault.toggle_game_state": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [124, 125, 126, 127], "excluded_lines": [], "start_line": 123}, "CRUDVault.get_vaults_with_room_and_dweller_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [132, 145, 146], "excluded_lines": [], "start_line": 129}, "CRUDVault.get_vault_with_room_and_dweller_count": {"executed_lines": [166], "summary": {"covered_lines": 1, "num_statements": 4, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [179, 180, 181], "excluded_lines": [], "start_line": 163}, "CRUDVault.create_storage": {"executed_lines": [197, 198, 199, 200], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 196}, "CRUDVault.create_with_user_id": {"executed_lines": [205, 206, 207, 208], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 202}, "CRUDVault.is_enough_dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [216, 217, 218, 219], "excluded_lines": [], "start_line": 210}, "CRUDVault.is_enough_population_space": {"executed_lines": [228, 236, 237, 240, 241, 242, 245], "summary": {"covered_lines": 7, "num_statements": 13, "percent_covered": 53.84615384615385, "percent_covered_display": "53.85", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 53.84615384615385, "percent_statements_covered_display": "53.85"}, "missing_lines": [243, 244, 246, 247, 248, 249], "excluded_lines": [], "start_line": 222}, "CRUDVault.deposit_caps": {"executed_lines": [253], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 251}, "CRUDVault.withdraw_caps": {"executed_lines": [257, 258, 259], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [260], "excluded_lines": [], "start_line": 255}, "CRUDVault.delete": {"executed_lines": [265], "summary": {"covered_lines": 1, "num_statements": 6, "percent_covered": 16.666666666666668, "percent_covered_display": "16.67", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 16.666666666666668, "percent_statements_covered_display": "16.67"}, "missing_lines": [266, 267, 268, 269, 272], "excluded_lines": [], "start_line": 262}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 23, 24, 32, 59, 113, 114, 118, 119, 123, 129, 163, 195, 196, 202, 210, 221, 222, 251, 255, 262, 275], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDVault": {"executed_lines": [47, 48, 50, 53, 54, 55, 56, 57, 166, 197, 198, 199, 200, 205, 206, 207, 208, 228, 236, 237, 240, 241, 242, 245, 253, 257, 258, 259, 265], "summary": {"covered_lines": 29, "num_statements": 100, "percent_covered": 29.0, "percent_covered_display": "29.00", "missing_lines": 71, "excluded_lines": 0, "percent_statements_covered": 29.0, "percent_statements_covered_display": "29.00"}, "missing_lines": [20, 21, 25, 26, 27, 28, 29, 30, 51, 66, 67, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 86, 87, 88, 89, 92, 93, 95, 97, 100, 101, 103, 106, 107, 108, 109, 111, 115, 116, 120, 121, 124, 125, 126, 127, 132, 145, 146, 179, 180, 181, 216, 217, 218, 219, 243, 244, 246, 247, 248, 249, 260, 266, 267, 268, 269, 272], "excluded_lines": [], "start_line": 18}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 23, 24, 32, 59, 113, 114, 118, 119, 123, 129, 163, 195, 196, 202, 210, 221, 222, 251, 255, 262, 275], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\vault_mixin.py": {"executed_lines": [1, 2, 4, 5, 6, 8, 9, 11, 14, 15, 17, 29], "summary": {"covered_lines": 12, "num_statements": 25, "percent_covered": 48.0, "percent_covered_display": "48.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 48.0, "percent_statements_covered_display": "48.00"}, "missing_lines": [20, 21, 22, 23, 24, 25, 26, 27, 32, 33, 34, 36, 37], "excluded_lines": [], "functions": {"VaultActionsMixin.get_for_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20, 21, 22, 23, 24, 25, 26, 27], "excluded_lines": [], "start_line": 17}, "VaultActionsMixin.get_multi_for_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [32, 33, 34, 36, 37], "excluded_lines": [], "start_line": 29}, "": {"executed_lines": [1, 2, 4, 5, 6, 8, 9, 11, 14, 15, 17, 29], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"VaultActionsMixin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20, 21, 22, 23, 24, 25, 26, 27, 32, 33, 34, 36, 37], "excluded_lines": [], "start_line": 14}, "": {"executed_lines": [1, 2, 4, 5, 6, 8, 9, 11, 14, 15, 17, 29], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\weapon.py": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDWeapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 6}, "": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\db\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\db\\init_db.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 43, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 35, 36, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "excluded_lines": [], "functions": {"locate_quest_files": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36], "excluded_lines": [], "start_line": 35}, "init_db": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "excluded_lines": [], "start_line": 39}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 35, 39], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 43, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 35, 36, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "excluded_lines": [], "start_line": 1}}}, "app\\db\\session.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 24, 33], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [34, 35], "excluded_lines": [], "functions": {"get_async_session": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [34, 35], "excluded_lines": [], "start_line": 33}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 24, 33], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 9, 24, 33], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [34, 35], "excluded_lines": [], "start_line": 1}}}, "app\\middleware\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\middleware\\request_id.py": {"executed_lines": [3, 5, 7, 10, 13, 20, 22, 31, 36, 37, 38, 43, 44, 47, 50, 51, 52, 54, 56, 57, 58, 59, 60, 62], "summary": {"covered_lines": 24, "num_statements": 28, "percent_covered": 85.71428571428571, "percent_covered_display": "85.71", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "85.71"}, "missing_lines": [32, 33, 39, 40], "excluded_lines": [], "functions": {"RequestIdMiddleware.__init__": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "RequestIdMiddleware.__call__": {"executed_lines": [31, 36, 37, 38, 43, 44, 47, 50, 51, 52, 54, 62], "summary": {"covered_lines": 12, "num_statements": 16, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [32, 33, 39, 40], "excluded_lines": [], "start_line": 22}, "RequestIdMiddleware.__call__.send_with_request_id": {"executed_lines": [56, 57, 58, 59, 60], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "": {"executed_lines": [3, 5, 7, 10, 13, 22], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RequestIdMiddleware": {"executed_lines": [20, 31, 36, 37, 38, 43, 44, 47, 50, 51, 52, 54, 56, 57, 58, 59, 60, 62], "summary": {"covered_lines": 18, "num_statements": 22, "percent_covered": 81.81818181818181, "percent_covered_display": "81.82", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "81.82"}, "missing_lines": [32, 33, 39, 40], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [3, 5, 7, 10, 13, 22], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\middleware\\security.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 9, 10, 12, 14, 17, 25, 26, 27, 28, 29, 30, 31, 33, 61, 72], "excluded_lines": [], "functions": {"create_security_config": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [25, 26, 27, 28, 29, 30, 31, 33, 61, 72], "excluded_lines": [], "start_line": 17}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 9, 10, 12, 14, 17], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 9, 10, 12, 14, 17, 25, 26, 27, 28, 29, 30, 31, 33, 61, 72], "excluded_lines": [], "start_line": 1}}}, "app\\models\\__init__.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\base.py": {"executed_lines": [1, 2, 4, 5, 8, 9, 10, 16, 17, 25, 26, 27, 29, 34, 40, 41, 42, 43, 44, 45, 46, 47, 49], "summary": {"covered_lines": 23, "num_statements": 27, "percent_covered": 85.18518518518519, "percent_covered_display": "85.19", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 85.18518518518519, "percent_statements_covered_display": "85.19"}, "missing_lines": [31, 32, 36, 37], "excluded_lines": [], "functions": {"SoftDeleteMixin.soft_delete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 32], "excluded_lines": [], "start_line": 29}, "SoftDeleteMixin.restore": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36, 37], "excluded_lines": [], "start_line": 34}, "": {"executed_lines": [1, 2, 4, 5, 8, 9, 10, 16, 17, 25, 26, 27, 29, 34, 40, 41, 42, 43, 44, 45, 46, 47, 49], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TimeStampMixin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 8}, "BaseUUIDModel": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "SoftDeleteMixin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 32, 36, 37], "excluded_lines": [], "start_line": 25}, "SPECIALModel": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "": {"executed_lines": [1, 2, 4, 5, 8, 9, 10, 16, 17, 25, 26, 27, 29, 34, 40, 41, 42, 43, 44, 45, 46, 47, 49], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\chat_message.py": {"executed_lines": [1, 2, 3, 5, 7, 16, 17, 20, 21, 24, 25, 27, 30, 33, 34, 35, 38, 39, 42, 43, 49, 55, 61, 67, 70, 71, 74, 75, 76], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 5, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11, 12, 13], "functions": {"": {"executed_lines": [1, 2, 3, 5, 7, 16, 17, 20, 21, 24, 25, 27, 30, 33, 34, 35, 38, 39, 42, 43, 49, 55, 61, 67, 70, 71, 74, 75, 76], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 5, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11, 12, 13], "start_line": 1}}, "classes": {"ChatMessageBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "ChatMessage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "ChatMessageCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 70}, "ChatMessageRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 74}, "": {"executed_lines": [1, 2, 3, 5, 7, 16, 17, 20, 21, 24, 25, 27, 30, 33, 34, 35, 38, 39, 42, 43, 49, 55, 61, 67, 70, 71, 74, 75, 76], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 5, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11, 12, 13], "start_line": 1}}}, "app\\models\\dweller.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 9, 10, 21, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 43, 46, 47, 50, 53, 54, 55, 56, 57, 63, 64, 67, 68, 74, 75, 85, 86, 102, 103, 104, 106, 107, 110, 114, 118, 124, 125, 128, 131], "summary": {"covered_lines": 54, "num_statements": 70, "percent_covered": 77.14285714285714, "percent_covered_display": "77.14", "missing_lines": 16, "excluded_lines": 7, "percent_statements_covered": 77.14285714285714, "percent_statements_covered_display": "77.14"}, "missing_lines": [65, 70, 72, 77, 78, 80, 81, 83, 88, 90, 91, 93, 94, 96, 97, 99], "excluded_lines": [12, 13, 14, 15, 16, 17, 18], "functions": {"DwellerBase.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [65], "excluded_lines": [], "start_line": 64}, "DwellerBase.current_level_xp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [70, 72], "excluded_lines": [], "start_line": 68}, "DwellerBase.next_level_xp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [77, 78, 80, 81, 83], "excluded_lines": [], "start_line": 75}, "DwellerBase.xp_progress_percentage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [88, 90, 91, 93, 94, 96, 97, 99], "excluded_lines": [], "start_line": 86}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 9, 10, 21, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 43, 46, 47, 50, 53, 54, 55, 56, 57, 63, 64, 67, 68, 74, 75, 85, 86, 102, 103, 104, 106, 107, 110, 114, 118, 124, 125, 128, 131], "summary": {"covered_lines": 54, "num_statements": 54, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 7, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [12, 13, 14, 15, 16, 17, 18], "start_line": 1}}, "classes": {"DwellerBaseWithoutStats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "DwellerBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [65, 70, 72, 77, 78, 80, 81, 83, 88, 90, 91, 93, 94, 96, 97, 99], "excluded_lines": [], "start_line": 63}, "Dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 102}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 9, 10, 21, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 43, 46, 47, 50, 53, 54, 55, 56, 57, 63, 64, 67, 68, 74, 75, 85, 86, 102, 103, 104, 106, 107, 110, 114, 118, 124, 125, 128, 131], "summary": {"covered_lines": 54, "num_statements": 54, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 7, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [12, 13, 14, 15, 16, 17, 18], "start_line": 1}}}, "app\\models\\exploration.py": {"executed_lines": [3, 4, 6, 7, 8, 9, 10, 12, 15, 20, 23, 24, 25, 28, 31, 32, 33, 34, 37, 38, 41, 42, 43, 44, 45, 46, 47, 50, 51, 52, 55, 58, 59, 61, 63, 65, 69, 71, 72, 74, 76, 78, 79, 80, 82, 84, 86, 87, 88, 90, 103, 105, 106, 108, 110, 111, 113, 115, 121, 122, 123, 125, 127, 129, 139], "summary": {"covered_lines": 65, "num_statements": 76, "percent_covered": 85.52631578947368, "percent_covered_display": "85.53", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 85.52631578947368, "percent_statements_covered_display": "85.53"}, "missing_lines": [17, 67, 77, 85, 92, 93, 95, 97, 99, 100, 101], "excluded_lines": [], "functions": {"get_utc_now": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [17], "excluded_lines": [], "start_line": 15}, "Exploration.is_active": {"executed_lines": [63], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 61}, "Exploration.is_completed": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [67], "excluded_lines": [], "start_line": 65}, "Exploration.elapsed_time_seconds": {"executed_lines": [71, 72], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 69}, "Exploration.progress_percentage": {"executed_lines": [76, 78, 79, 80], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [77], "excluded_lines": [], "start_line": 74}, "Exploration.time_remaining_seconds": {"executed_lines": [84, 86, 87, 88], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [85], "excluded_lines": [], "start_line": 82}, "Exploration.should_generate_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [92, 93, 95, 97, 99, 100, 101], "excluded_lines": [], "start_line": 90}, "Exploration.complete": {"executed_lines": [105, 106], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 103}, "Exploration.recall": {"executed_lines": [110, 111], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 108}, "Exploration.add_event": {"executed_lines": [115, 121, 122, 123, 125], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 113}, "Exploration.add_loot": {"executed_lines": [129, 139], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 127}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 10, 12, 15, 20, 23, 24, 25, 28, 31, 32, 33, 34, 37, 38, 41, 42, 43, 44, 45, 46, 47, 50, 51, 52, 55, 58, 59, 61, 65, 69, 74, 82, 90, 103, 108, 113, 127], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ExplorationStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "ExplorationBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "Exploration": {"executed_lines": [63, 71, 72, 76, 78, 79, 80, 84, 86, 87, 88, 105, 106, 110, 111, 115, 121, 122, 123, 125, 129, 139], "summary": {"covered_lines": 22, "num_statements": 32, "percent_covered": 68.75, "percent_covered_display": "68.75", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 68.75, "percent_statements_covered_display": "68.75"}, "missing_lines": [67, 77, 85, 92, 93, 95, 97, 99, 100, 101], "excluded_lines": [], "start_line": 55}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 10, 12, 15, 20, 23, 24, 25, 28, 31, 32, 33, 34, 37, 38, 41, 42, 43, 44, 45, 46, 47, 50, 51, 52, 55, 58, 59, 61, 65, 69, 74, 82, 90, 103, 108, 113, 127], "summary": {"covered_lines": 43, "num_statements": 44, "percent_covered": 97.72727272727273, "percent_covered_display": "97.73", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.72727272727273, "percent_statements_covered_display": "97.73"}, "missing_lines": [17], "excluded_lines": [], "start_line": 1}}}, "app\\models\\game_state.py": {"executed_lines": [3, 5, 6, 8, 11, 14, 15, 16, 17, 18, 19, 22, 25, 27, 29, 31, 33, 34, 36, 38, 39, 41, 43, 44], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"GameState.calculate_offline_time": {"executed_lines": [29], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "GameState.pause": {"executed_lines": [33, 34], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "GameState.resume": {"executed_lines": [38, 39], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 36}, "GameState.update_tick": {"executed_lines": [43, 44], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "": {"executed_lines": [3, 5, 6, 8, 11, 14, 15, 16, 17, 18, 19, 22, 25, 27, 31, 36, 41], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"GameStateBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "GameState": {"executed_lines": [29, 33, 34, 38, 39, 43, 44], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "": {"executed_lines": [3, 5, 6, 8, 11, 14, 15, 16, 17, 18, 19, 22, 25, 27, 31, 36, 41], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\incident.py": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 14, 17, 18, 19, 20, 21, 22, 25, 28, 29, 30, 31, 34, 37, 38, 39, 40, 41, 42, 45, 46, 49, 52, 53, 56, 59, 60, 62, 66, 70, 74, 79], "summary": {"covered_lines": 39, "num_statements": 48, "percent_covered": 81.25, "percent_covered_display": "81.25", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 81.25, "percent_statements_covered_display": "81.25"}, "missing_lines": [64, 68, 72, 76, 77, 81, 82, 83, 84], "excluded_lines": [], "functions": {"Incident.is_active": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [64], "excluded_lines": [], "start_line": 62}, "Incident.elapsed_time": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [68], "excluded_lines": [], "start_line": 66}, "Incident.should_spread": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [72], "excluded_lines": [], "start_line": 70}, "Incident.resolve": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [76, 77], "excluded_lines": [], "start_line": 74}, "Incident.spread_to_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [81, 82, 83, 84], "excluded_lines": [], "start_line": 79}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 14, 17, 18, 19, 20, 21, 22, 25, 28, 29, 30, 31, 34, 37, 38, 39, 40, 41, 42, 45, 46, 49, 52, 53, 56, 59, 60, 62, 66, 70, 74, 79], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"IncidentType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "IncidentStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "IncidentBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "Incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [64, 68, 72, 76, 77, 81, 82, 83, 84], "excluded_lines": [], "start_line": 56}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 14, 17, 18, 19, 20, 21, 22, 25, 28, 29, 30, 31, 34, 37, 38, 39, 40, 41, 42, 45, 46, 49, 52, 53, 56, 59, 60, 62, 66, 70, 74, 79], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\item.py": {"executed_lines": [1, 2, 4, 7, 8, 9, 10, 11, 13, 19, 20, 21], "summary": {"covered_lines": 12, "num_statements": 15, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [22, 23, 24], "excluded_lines": [], "functions": {"ItemBase.set_default_value": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [22, 23, 24], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [1, 2, 4, 7, 8, 9, 10, 11, 13, 19, 20, 21], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ItemBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [22, 23, 24], "excluded_lines": [], "start_line": 7}, "": {"executed_lines": [1, 2, 4, 7, 8, 9, 10, 11, 13, 19, 20, 21], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\junk.py": {"executed_lines": [1, 3, 4, 6, 7, 8, 14, 15, 16, 18, 25, 26, 27, 29], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 93.33333333333333, "percent_covered_display": "93.33", "missing_lines": 1, "excluded_lines": 2, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93.33"}, "missing_lines": [30], "excluded_lines": [10, 11], "functions": {"Junk.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [30], "excluded_lines": [], "start_line": 29}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 14, 15, 16, 18, 25, 26, 27, 29], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}, "classes": {"JunkBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "Junk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [30], "excluded_lines": [], "start_line": 25}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 14, 15, 16, 18, 25, 26, 27, 29], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}}, "app\\models\\llm_interaction.py": {"executed_lines": [1, 2, 3, 5, 7, 14, 16, 17, 18, 20, 21, 24, 25, 27, 28, 30], "summary": {"covered_lines": 16, "num_statements": 17, "percent_covered": 94.11764705882354, "percent_covered_display": "94.12", "missing_lines": 1, "excluded_lines": 3, "percent_statements_covered": 94.11764705882354, "percent_statements_covered_display": "94.12"}, "missing_lines": [31], "excluded_lines": [9, 10, 11], "functions": {"LLMInteraction.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31], "excluded_lines": [], "start_line": 30}, "": {"executed_lines": [1, 2, 3, 5, 7, 14, 16, 17, 18, 20, 21, 24, 25, 27, 28, 30], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11], "start_line": 1}}, "classes": {"LLMInteractionBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "LLMInteraction": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31], "excluded_lines": [], "start_line": 24}, "": {"executed_lines": [1, 2, 3, 5, 7, 14, 16, 17, 18, 20, 21, 24, 25, 27, 28, 30], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11], "start_line": 1}}}, "app\\models\\notification.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 15, 19, 20, 21, 22, 23, 26, 27, 28, 31, 32, 33, 34, 37, 38, 39, 42, 43, 44, 47, 48, 49, 50, 51, 54, 55, 56, 59, 61, 62, 64, 65, 67, 68, 71, 74, 76, 77, 80, 85, 86, 89, 90, 91, 92, 93, 96, 97, 98, 99], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12], "functions": {"": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 15, 19, 20, 21, 22, 23, 26, 27, 28, 31, 32, 33, 34, 37, 38, 39, 42, 43, 44, 47, 48, 49, 50, 51, 54, 55, 56, 59, 61, 62, 64, 65, 67, 68, 71, 74, 76, 77, 80, 85, 86, 89, 90, 91, 92, 93, 96, 97, 98, 99], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12], "start_line": 1}}, "classes": {"NotificationType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "NotificationPriority": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 47}, "NotificationBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "Notification": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "NotificationCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 85}, "NotificationRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 89}, "NotificationUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 96}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 15, 19, 20, 21, 22, 23, 26, 27, 28, 31, 32, 33, 34, 37, 38, 39, 42, 43, 44, 47, 48, 49, 50, 51, 54, 55, 56, 59, 61, 62, 64, 65, 67, 68, 71, 74, 76, 77, 80, 85, 86, 89, 90, 91, 92, 93, 96, 97, 98, 99], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12], "start_line": 1}}}, "app\\models\\objective.py": {"executed_lines": [1, 3, 5, 6, 12, 13, 14, 16, 20, 21], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 90.9090909090909, "percent_covered_display": "90.91", "missing_lines": 1, "excluded_lines": 2, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "90.91"}, "missing_lines": [17], "excluded_lines": [8, 9], "functions": {"ObjectiveBase.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [17], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [1, 3, 5, 6, 12, 13, 14, 16, 20, 21], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [8, 9], "start_line": 1}}, "classes": {"ObjectiveBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [17], "excluded_lines": [], "start_line": 12}, "Objective": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "": {"executed_lines": [1, 3, 5, 6, 12, 13, 14, 16, 20, 21], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [8, 9], "start_line": 1}}}, "app\\models\\outfit.py": {"executed_lines": [1, 3, 4, 6, 7, 8, 15, 16, 17, 19, 23, 24, 25, 26, 27], "summary": {"covered_lines": 15, "num_statements": 16, "percent_covered": 93.75, "percent_covered_display": "93.75", "missing_lines": 1, "excluded_lines": 3, "percent_statements_covered": 93.75, "percent_statements_covered_display": "93.75"}, "missing_lines": [20], "excluded_lines": [10, 11, 12], "functions": {"OutfitBase.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20], "excluded_lines": [], "start_line": 19}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 15, 16, 17, 19, 23, 24, 25, 26, 27], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11, 12], "start_line": 1}}, "classes": {"OutfitBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20], "excluded_lines": [], "start_line": 15}, "Outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 15, 16, 17, 19, 23, 24, 25, 26, 27], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11, 12], "start_line": 1}}}, "app\\models\\pregnancy.py": {"executed_lines": [1, 2, 4, 5, 6, 8, 9, 15, 16, 17, 18, 19, 20, 23, 26, 32, 39, 42, 43, 45, 46, 48, 49, 51, 52, 54, 55, 57, 60, 62, 63, 65, 66, 68, 69], "summary": {"covered_lines": 35, "num_statements": 37, "percent_covered": 94.5945945945946, "percent_covered_display": "94.59", "missing_lines": 2, "excluded_lines": 2, "percent_statements_covered": 94.5945945945946, "percent_statements_covered_display": "94.59"}, "missing_lines": [40, 58], "excluded_lines": [11, 12], "functions": {"Pregnancy.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40], "excluded_lines": [], "start_line": 39}, "Pregnancy.is_due": {"executed_lines": [45, 46], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "Pregnancy.progress_percentage": {"executed_lines": [51, 52, 54, 55, 57, 60], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "85.71", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "85.71"}, "missing_lines": [58], "excluded_lines": [], "start_line": 49}, "Pregnancy.time_remaining_seconds": {"executed_lines": [65, 66, 68, 69], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "": {"executed_lines": [1, 2, 4, 5, 6, 8, 9, 15, 16, 17, 18, 19, 20, 23, 26, 32, 39, 42, 43, 48, 49, 62, 63], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12], "start_line": 1}}, "classes": {"PregnancyBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "Pregnancy": {"executed_lines": [45, 46, 51, 52, 54, 55, 57, 60, 65, 66, 68, 69], "summary": {"covered_lines": 12, "num_statements": 14, "percent_covered": 85.71428571428571, "percent_covered_display": "85.71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "85.71"}, "missing_lines": [40, 58], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [1, 2, 4, 5, 6, 8, 9, 15, 16, 17, 18, 19, 20, 23, 26, 32, 39, 42, 43, 48, 49, 62, 63], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12], "start_line": 1}}}, "app\\models\\prompt.py": {"executed_lines": [1, 2, 4, 5, 7, 13, 15, 16, 17, 18, 20, 26, 30, 31], "summary": {"covered_lines": 14, "num_statements": 16, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 2, "excluded_lines": 2, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50"}, "missing_lines": [24, 27], "excluded_lines": [9, 10], "functions": {"PromptBase.generate_prompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24], "excluded_lines": [], "start_line": 20}, "PromptBase.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [27], "excluded_lines": [], "start_line": 26}, "": {"executed_lines": [1, 2, 4, 5, 7, 13, 15, 16, 17, 18, 20, 26, 30, 31], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10], "start_line": 1}}, "classes": {"PromptBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24, 27], "excluded_lines": [], "start_line": 13}, "Prompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "": {"executed_lines": [1, 2, 4, 5, 7, 13, 15, 16, 17, 18, 20, 26, 30, 31], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10], "start_line": 1}}}, "app\\models\\quest.py": {"executed_lines": [1, 3, 5, 6, 14, 15, 16, 17, 18, 19, 22, 23], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "functions": {"": {"executed_lines": [1, 3, 5, 6, 14, 15, 16, 17, 18, 19, 22, 23], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}, "classes": {"QuestBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "Quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 16, 17, 18, 19, 22, 23], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}}, "app\\models\\relationship.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 14, 15, 16, 17, 18, 21, 24, 30, 37], "summary": {"covered_lines": 15, "num_statements": 16, "percent_covered": 93.75, "percent_covered_display": "93.75", "missing_lines": 1, "excluded_lines": 2, "percent_statements_covered": 93.75, "percent_statements_covered_display": "93.75"}, "missing_lines": [38], "excluded_lines": [10, 11], "functions": {"Relationship.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [38], "excluded_lines": [], "start_line": 37}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 14, 15, 16, 17, 18, 21, 24, 30, 37], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}, "classes": {"RelationshipBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "Relationship": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [38], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 14, 15, 16, 17, 18, 21, 24, 30, 37], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}}, "app\\models\\room.py": {"executed_lines": [1, 3, 4, 6, 7, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 38, 39, 41, 42, 43, 45, 48, 49, 50, 52, 54], "summary": {"covered_lines": 38, "num_statements": 40, "percent_covered": 95.0, "percent_covered_display": "95.00", "missing_lines": 2, "excluded_lines": 3, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95.00"}, "missing_lines": [44, 55], "excluded_lines": [9, 10, 11], "functions": {"RoomBase.is_unique": {"executed_lines": [36], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "RoomBase.max_tier": {"executed_lines": [41, 42, 43, 45], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [44], "excluded_lines": [], "start_line": 39}, "Room.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [55], "excluded_lines": [], "start_line": 54}, "": {"executed_lines": [1, 3, 4, 6, 7, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 38, 39, 48, 49, 50, 52, 54], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11], "start_line": 1}}, "classes": {"RoomBase": {"executed_lines": [36, 41, 42, 43, 45], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83.33", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83.33"}, "missing_lines": [44], "excluded_lines": [], "start_line": 14}, "Room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [55], "excluded_lines": [], "start_line": 48}, "": {"executed_lines": [1, 3, 4, 6, 7, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 38, 39, 48, 49, 50, 52, 54], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11], "start_line": 1}}}, "app\\models\\storage.py": {"executed_lines": [1, 3, 4, 6, 15, 16, 17, 20, 21, 22, 24, 25, 26, 28], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 93.33333333333333, "percent_covered_display": "93.33", "missing_lines": 1, "excluded_lines": 5, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93.33"}, "missing_lines": [29], "excluded_lines": [8, 9, 10, 11, 12], "functions": {"Storage.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [29], "excluded_lines": [], "start_line": 28}, "": {"executed_lines": [1, 3, 4, 6, 15, 16, 17, 20, 21, 22, 24, 25, 26, 28], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 5, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [8, 9, 10, 11, 12], "start_line": 1}}, "classes": {"StorageBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "Storage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [29], "excluded_lines": [], "start_line": 20}, "": {"executed_lines": [1, 3, 4, 6, 15, 16, 17, 20, 21, 22, 24, 25, 26, 28], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 5, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [8, 9, 10, 11, 12], "start_line": 1}}}, "app\\models\\training.py": {"executed_lines": [3, 4, 5, 7, 8, 10, 11, 19, 22, 23, 24, 27, 30, 31, 32, 34, 35, 36, 38, 40, 41, 42, 44, 47, 51, 52, 53, 55, 57, 59, 61, 63, 65, 67, 71, 88], "summary": {"covered_lines": 36, "num_statements": 47, "percent_covered": 76.59574468085107, "percent_covered_display": "76.60", "missing_lines": 11, "excluded_lines": 4, "percent_statements_covered": 76.59574468085107, "percent_statements_covered_display": "76.60"}, "missing_lines": [69, 78, 79, 81, 82, 83, 85, 86, 90, 91, 92], "excluded_lines": [13, 14, 15, 16], "functions": {"Training.is_active": {"executed_lines": [57], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 55}, "Training.is_completed": {"executed_lines": [61], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 59}, "Training.is_cancelled": {"executed_lines": [65], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "Training.progress_percentage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [69], "excluded_lines": [], "start_line": 67}, "Training.time_remaining_seconds": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [78, 79, 81, 82, 83, 85, 86], "excluded_lines": [], "start_line": 71}, "Training.is_ready_to_complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [90, 91, 92], "excluded_lines": [], "start_line": 88}, "": {"executed_lines": [3, 4, 5, 7, 8, 10, 11, 19, 22, 23, 24, 27, 30, 31, 32, 34, 35, 36, 38, 40, 41, 42, 44, 47, 51, 52, 53, 55, 59, 63, 67, 71, 88], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [13, 14, 15, 16], "start_line": 1}}, "classes": {"TrainingStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "TrainingBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "Training": {"executed_lines": [57, 61, 65], "summary": {"covered_lines": 3, "num_statements": 14, "percent_covered": 21.428571428571427, "percent_covered_display": "21.43", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 21.428571428571427, "percent_statements_covered_display": "21.43"}, "missing_lines": [69, 78, 79, 81, 82, 83, 85, 86, 90, 91, 92], "excluded_lines": [], "start_line": 47}, "": {"executed_lines": [3, 4, 5, 7, 8, 10, 11, 19, 22, 23, 24, 27, 30, 31, 32, 34, 35, 36, 38, 40, 41, 42, 44, 47, 51, 52, 53, 55, 59, 63, 67, 71, 88], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [13, 14, 15, 16], "start_line": 1}}}, "app\\models\\user.py": {"executed_lines": [1, 2, 4, 5, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 27, 29, 32, 33, 35], "summary": {"covered_lines": 20, "num_statements": 21, "percent_covered": 95.23809523809524, "percent_covered_display": "95.24", "missing_lines": 1, "excluded_lines": 4, "percent_statements_covered": 95.23809523809524, "percent_statements_covered_display": "95.24"}, "missing_lines": [36], "excluded_lines": [9, 10, 11, 12], "functions": {"User.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36], "excluded_lines": [], "start_line": 35}, "": {"executed_lines": [1, 2, 4, 5, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 27, 29, 32, 33, 35], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11, 12], "start_line": 1}}, "classes": {"UserBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "User": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36], "excluded_lines": [], "start_line": 26}, "": {"executed_lines": [1, 2, 4, 5, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 27, 29, 32, 33, 35], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11, 12], "start_line": 1}}}, "app\\models\\user_profile.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 14, 15, 16, 17, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 32, 35, 36, 37, 39], "summary": {"covered_lines": 25, "num_statements": 26, "percent_covered": 96.15384615384616, "percent_covered_display": "96.15", "missing_lines": 1, "excluded_lines": 2, "percent_statements_covered": 96.15384615384616, "percent_statements_covered_display": "96.15"}, "missing_lines": [40], "excluded_lines": [10, 11], "functions": {"UserProfile.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40], "excluded_lines": [], "start_line": 39}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 14, 15, 16, 17, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 32, 35, 36, 37, 39], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}, "classes": {"UserProfileBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "UserProfile": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40], "excluded_lines": [], "start_line": 35}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 14, 15, 16, 17, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 32, 35, 36, 37, 39], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}}, "app\\models\\uuid_types.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 27, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 27, "excluded_lines": 3, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 8, 9, 11, 18, 30, 31, 37, 42, 43, 49, 51, 52, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 81, 84, 94, 98], "excluded_lines": [13, 14, 15], "functions": {"UUID7.__get_pydantic_core_schema__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [37], "excluded_lines": [], "start_line": 31}, "UUID7.__get_pydantic_json_schema__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [49], "excluded_lines": [], "start_line": 43}, "UUID7._validate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [64, 65, 66, 67, 68, 69, 70, 71], "excluded_lines": [], "start_line": 52}, "UUID7.timestamp_ms": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [81], "excluded_lines": [], "start_line": 74}, "uuid7": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [94], "excluded_lines": [], "start_line": 84}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 3, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 8, 9, 11, 18, 30, 31, 42, 43, 51, 52, 73, 74, 84, 98], "excluded_lines": [13, 14, 15], "start_line": 1}}, "classes": {"UUID7": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [37, 49, 64, 65, 66, 67, 68, 69, 70, 71, 81], "excluded_lines": [], "start_line": 18}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 3, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 8, 9, 11, 18, 30, 31, 42, 43, 51, 52, 73, 74, 84, 94, 98], "excluded_lines": [13, 14, 15], "start_line": 1}}}, "app\\models\\vault.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 22, 24, 25, 26, 29, 30, 31, 32, 33, 34, 37, 41, 46, 50, 51, 52, 54, 55, 56, 58, 63], "summary": {"covered_lines": 28, "num_statements": 29, "percent_covered": 96.55172413793103, "percent_covered_display": "96.55", "missing_lines": 1, "excluded_lines": 7, "percent_statements_covered": 96.55172413793103, "percent_statements_covered_display": "96.55"}, "missing_lines": [47], "excluded_lines": [13, 14, 15, 16, 17, 18, 19], "functions": {"VaultBase.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [47], "excluded_lines": [], "start_line": 46}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 22, 24, 25, 26, 29, 30, 31, 32, 33, 34, 37, 41, 46, 50, 51, 52, 54, 55, 56, 58, 63], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 7, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [13, 14, 15, 16, 17, 18, 19], "start_line": 1}}, "classes": {"VaultBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [47], "excluded_lines": [], "start_line": 22}, "Vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 50}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 22, 24, 25, 26, 29, 30, 31, 32, 33, 34, 37, 41, 46, 50, 51, 52, 54, 55, 56, 58, 63], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 7, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [13, 14, 15, 16, 17, 18, 19], "start_line": 1}}}, "app\\models\\vault_objective.py": {"executed_lines": [1, 2, 5, 6, 7, 8, 9, 10], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 5, 6, 7, 8, 9, 10], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"VaultObjectiveProgressLink": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 5}, "": {"executed_lines": [1, 2, 5, 6, 7, 8, 9, 10], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\vault_quest.py": {"executed_lines": [1, 2, 5, 6, 7, 8, 9], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 5, 6, 7, 8, 9], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"VaultQuestCompletionLink": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 5}, "": {"executed_lines": [1, 2, 5, 6, 7, 8, 9], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\weapon.py": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 51, 55, 56, 57, 58, 59], "summary": {"covered_lines": 26, "num_statements": 43, "percent_covered": 60.46511627906977, "percent_covered_display": "60.47", "missing_lines": 17, "excluded_lines": 3, "percent_statements_covered": 60.46511627906977, "percent_statements_covered_display": "60.47"}, "missing_lines": [31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 49, 52], "excluded_lines": [11, 12, 13], "functions": {"WeaponBase.validate_weapon_subtype": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 49], "excluded_lines": [], "start_line": 30}, "WeaponBase.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [52], "excluded_lines": [], "start_line": 51}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 51, 55, 56, 57, 58, 59], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12, 13], "start_line": 1}}, "classes": {"WeaponBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 49, 52], "excluded_lines": [], "start_line": 16}, "Weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 55}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 51, 55, 56, 57, 58, 59], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12, 13], "start_line": 1}}}, "app\\schemas\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\common.py": {"executed_lines": [1, 4, 5, 6, 7, 8, 9, 10, 13, 14, 15, 18, 19, 20, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 40, 41, 42, 43, 46, 47, 48, 49, 50, 51, 52, 53, 56, 57, 58, 61, 62, 63, 64, 67, 68, 69, 70, 71, 72, 75, 76, 77, 78, 81, 82, 83, 84, 85, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 103, 104, 105, 106, 109, 110, 111, 112, 115, 116, 117, 118, 121, 122, 123, 124, 127, 128, 129, 130, 131, 132, 133, 134, 137, 138, 139, 140, 141, 142, 145, 146, 147, 148, 151, 152, 153, 154, 155, 156, 157, 158, 161, 162, 163, 164, 165, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 182, 183, 186], "summary": {"covered_lines": 136, "num_statements": 136, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"CaseInsensitiveEnum._missing_": {"executed_lines": [7, 8, 9, 10], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 6}, "": {"executed_lines": [1, 4, 5, 6, 13, 14, 15, 18, 19, 20, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 40, 41, 42, 43, 46, 47, 48, 49, 50, 51, 52, 53, 56, 57, 58, 61, 62, 63, 64, 67, 68, 69, 70, 71, 72, 75, 76, 77, 78, 81, 82, 83, 84, 85, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 103, 104, 105, 106, 109, 110, 111, 112, 115, 116, 117, 118, 121, 122, 123, 124, 127, 128, 129, 130, 131, 132, 133, 134, 137, 138, 139, 140, 141, 142, 145, 146, 147, 148, 151, 152, 153, 154, 155, 156, 157, 158, 161, 162, 163, 164, 165, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 182, 183, 186], "summary": {"covered_lines": 132, "num_statements": 132, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CaseInsensitiveEnum": {"executed_lines": [7, 8, 9, 10], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 4}, "GameStatusEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "RadioModeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "DwellerStatusEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "DeathCauseEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "RarityEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "SPECIALEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "GenderEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 56}, "AgeGroupEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 61}, "RelationshipTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 67}, "PregnancyStatusEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 75}, "RaceEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 81}, "FactionEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 88}, "SynthTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 103}, "GhoulFeralnessEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 109}, "SuperMutantMutationEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 115}, "ItemTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 121}, "JunkTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 127}, "OutfitTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 137}, "RoomActionEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 145}, "RoomTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 151}, "WeaponTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 161}, "WeaponSubtypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 168}, "AIModelType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 180}, "": {"executed_lines": [1, 4, 5, 6, 13, 14, 15, 18, 19, 20, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 40, 41, 42, 43, 46, 47, 48, 49, 50, 51, 52, 53, 56, 57, 58, 61, 62, 63, 64, 67, 68, 69, 70, 71, 72, 75, 76, 77, 78, 81, 82, 83, 84, 85, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 103, 104, 105, 106, 109, 110, 111, 112, 115, 116, 117, 118, 121, 122, 123, 124, 127, 128, 129, 130, 131, 132, 133, 134, 137, 138, 139, 140, 141, 142, 145, 146, 147, 148, 151, 152, 153, 154, 155, 156, 157, 158, 161, 162, 163, 164, 165, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 182, 183, 186], "summary": {"covered_lines": 132, "num_statements": 132, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\dweller.py": {"executed_lines": [1, 3, 4, 6, 7, 18, 19, 20, 21, 22, 24, 34, 41, 42, 43, 45, 48, 49, 52, 53, 54, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 70, 71, 77, 78, 81, 86, 89, 92, 93, 94, 95, 96, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 116, 117, 118, 119, 120, 121, 122, 125, 126, 127, 133, 134, 135, 136, 139, 140, 143, 144, 146, 149, 150, 151, 152, 153, 155, 158, 159, 160, 161, 164, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 178, 181, 184, 185, 186, 189, 192, 193, 194, 195, 196, 197, 198], "summary": {"covered_lines": 112, "num_statements": 112, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 6, 7, 18, 19, 20, 21, 22, 24, 34, 41, 42, 43, 45, 48, 49, 52, 53, 54, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 70, 71, 77, 78, 81, 86, 89, 92, 93, 94, 95, 96, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 116, 117, 118, 119, 120, 121, 122, 125, 126, 127, 133, 134, 135, 136, 139, 140, 143, 144, 146, 149, 150, 151, 152, 153, 155, 158, 159, 160, 161, 164, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 178, 181, 184, 185, 186, 189, 192, 193, 194, 195, 196, 197, 198], "summary": {"covered_lines": 112, "num_statements": 112, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"DwellerCreateWithoutVaultID": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "DwellerCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "DwellerVisualAttributesInput": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 52}, "DwellerCreateCommonOverride": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 89}, "DwellerReadLess": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "DwellerRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 133}, "DwellerReadWithVaultID": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 139}, "DwellerReadWithRoomID": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 143}, "DwellerReadFull": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 149}, "DwellerUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 159}, "DwellerDeadRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 164}, "DwellerReviveResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 181}, "RevivalCostResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 189}, "": {"executed_lines": [1, 3, 4, 6, 7, 18, 19, 20, 21, 22, 24, 34, 41, 42, 43, 45, 48, 49, 52, 53, 54, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 70, 71, 77, 78, 81, 86, 89, 92, 93, 94, 95, 96, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 116, 117, 118, 119, 120, 121, 122, 125, 126, 127, 133, 134, 135, 136, 139, 140, 143, 144, 146, 149, 150, 151, 152, 153, 155, 158, 159, 160, 161, 164, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 178, 181, 184, 185, 186, 189, 192, 193, 194, 195, 196, 197, 198], "summary": {"covered_lines": 112, "num_statements": 112, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\dweller_ai.py": {"executed_lines": [3, 6, 9, 15, 18, 24, 28, 29, 30, 31, 32, 33, 34, 35, 41, 42, 45], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 6, 9, 15, 18, 24, 28, 29, 30, 31, 32, 33, 34, 35, 41, 42, 45], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"DwellerBackstory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 6}, "ExtendedBio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "DwellerVisualAttributes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "": {"executed_lines": [3, 6, 9, 15, 18, 24, 28, 29, 30, 31, 32, 33, 34, 35, 41, 42, 45], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\exploration.py": {"executed_lines": [3, 5, 6, 8, 11, 14, 17, 20, 21, 22, 25, 28, 29, 30, 31, 32, 35, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 58, 59, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, 80, 81, 82, 83, 84, 85, 86, 89, 92, 93, 94, 95, 96, 99, 102, 103, 106, 109, 112, 115, 116], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 5, 6, 8, 11, 14, 17, 20, 21, 22, 25, 28, 29, 30, 31, 32, 35, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 58, 59, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, 80, 81, 82, 83, 84, 85, 86, 89, 92, 93, 94, 95, 96, 99, 102, 103, 106, 109, 112, 115, 116], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ExplorationBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "ExplorationCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "ExplorationUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "ExplorationRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "ExplorationReadShort": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 62}, "ExplorationProgress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 77}, "ExplorationEvent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 89}, "ExplorationSendRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "ExplorationRecallRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 106}, "ExplorationCompleteResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 112}, "": {"executed_lines": [3, 5, 6, 8, 11, 14, 17, 20, 21, 22, 25, 28, 29, 30, 31, 32, 35, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 58, 59, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, 80, 81, 82, 83, 84, 85, 86, 89, 92, 93, 94, 95, 96, 99, 102, 103, 106, 109, 112, 115, 116], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\exploration_event.py": {"executed_lines": [3, 5, 8, 11, 12, 13, 16, 19, 20, 21, 22, 23, 26, 29, 32, 37, 40, 43, 44, 45, 48, 51, 52, 53, 54, 57, 60, 61, 62, 63, 64, 67, 70, 71, 72, 75, 78, 79, 80, 83, 86, 87, 88, 91, 94, 95, 96, 99, 102, 103, 104, 105, 106, 107, 108, 109, 113], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 5, 8, 11, 12, 13, 16, 19, 20, 21, 22, 23, 26, 29, 32, 37, 40, 43, 44, 45, 48, 51, 52, 53, 54, 57, 60, 61, 62, 63, 64, 67, 70, 71, 72, 75, 78, 79, 80, 83, 86, 87, 88, 91, 94, 95, 96, 99, 102, 103, 104, 105, 106, 107, 108, 109, 113], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ItemSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 8}, "WeaponSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "OutfitSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "JunkSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "LootSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "EnemySchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "CombatEventSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "LootEventSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 67}, "DangerEventSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 75}, "RestEventSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "CombatOutcomeSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 91}, "RewardsSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "": {"executed_lines": [3, 5, 8, 11, 12, 13, 16, 19, 20, 21, 22, 23, 26, 29, 32, 37, 40, 43, 44, 45, 48, 51, 52, 53, 54, 57, 60, 61, 62, 63, 64, 67, 70, 71, 72, 75, 78, 79, 80, 83, 86, 87, 88, 91, 94, 95, 96, 99, 102, 103, 104, 105, 106, 107, 108, 109, 113], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\incident.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [3, 5, 7, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 34, 37, 40, 41, 42, 43, 44], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [3, 5, 7, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 34, 37, 40, 41, 42, 43, 44], "excluded_lines": [], "start_line": 1}}, "classes": {"IncidentRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "IncidentResolveRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "IncidentResolveResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 37}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [3, 5, 7, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 34, 37, 40, 41, 42, 43, 44], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\item.py": {"executed_lines": [1, 3, 4, 7, 8, 11, 12, 15, 16, 17], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 7, 8, 11, 12, 15, 16, 17], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ItemCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 7}, "ItemRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "ItemUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [1, 3, 4, 7, 8, 11, 12, 15, 16, 17], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\junk.py": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 14, 15, 16, 17, 20, 21, 22], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 14, 15, 16, 17, 20, 21, 22], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"JunkCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "JunkRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "JunkUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 14, 15, 16, 17, 20, 21, 22], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\llm_interaction.py": {"executed_lines": [1, 3, 5, 8, 9, 12, 13, 14, 15], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 8, 9, 12, 13, 14, 15], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"LLMInteractionCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 8}, "LLMInteractionRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "": {"executed_lines": [1, 3, 5, 8, 9, 12, 13, 14, 15], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\objective.py": {"executed_lines": [1, 3, 4, 7, 8, 11, 12, 13, 14, 15, 18, 19, 20], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 7, 8, 11, 12, 13, 14, 15, 18, 19, 20], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ObjectiveCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 7}, "ObjectiveRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "ObjectiveUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "": {"executed_lines": [1, 3, 4, 7, 8, 11, 12, 13, 14, 15, 18, 19, 20], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\outfit.py": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 24, 25, 26, 27, 30, 31, 32, 33], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 24, 25, 26, 27, 30, 31, 32, 33], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"SPECIALOutfitCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "OutfitCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "OutfitRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "OutfitUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 24, 25, 26, 27, 30, 31, 32, 33], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\pregnancy.py": {"executed_lines": [3, 5, 6, 8, 9, 12, 15, 16, 19, 22, 23, 24, 25, 27, 30, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 46, 49, 50, 51], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 5, 6, 8, 9, 12, 15, 16, 19, 22, 23, 24, 25, 27, 30, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 46, 49, 50, 51], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"PregnancyCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "PregnancyRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "PregnancyProgress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "DeliveryResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "": {"executed_lines": [3, 5, 6, 8, 9, 12, 15, 16, 19, 22, 23, 24, 25, 27, 30, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 46, 49, 50, 51], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\prompt.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 4, 7, 8, 11, 12, 15, 16, 17], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 4, 7, 8, 11, 12, 15, 16, 17], "excluded_lines": [], "start_line": 1}}, "classes": {"PromptCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 7}, "PromptRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "PromptUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 4, 7, 8, 11, 12, 15, 16, 17], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\quest.py": {"executed_lines": [1, 2, 4, 5, 8, 9, 12, 13, 14, 15, 18, 19, 20, 21, 24, 25, 26, 29, 32, 35, 38, 39, 40, 41, 42, 44, 47, 50, 51], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 4, 5, 8, 9, 12, 13, 14, 15, 18, 19, 20, 21, 24, 25, 26, 29, 32, 35, 38, 39, 40, 41, 42, 44, 47, 50, 51], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"QuestCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 8}, "QuestRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "QuestReadShort": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "QuestUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "QuestObjectiveJSON": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "QuestJSON": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "QuestChainJSON": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 47}, "": {"executed_lines": [1, 2, 4, 5, 8, 9, 12, 13, 14, 15, 18, 19, 20, 21, 24, 25, 26, 29, 32, 35, 38, 39, 40, 41, 42, 44, 47, 50, 51], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\radio.py": {"executed_lines": [3, 4, 6, 9, 12, 13, 16, 19, 20, 21, 22, 23, 24, 25, 26, 29, 32, 37, 40, 41, 42], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 4, 6, 9, 12, 13, 16, 19, 20, 21, 22, 23, 24, 25, 26, 29, 32, 37, 40, 41, 42], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"SpeedupMultiplier": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "RadioStatsRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "ManualRecruitRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "RecruitmentResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 37}, "": {"executed_lines": [3, 4, 6, 9, 12, 13, 16, 19, 20, 21, 22, 23, 24, 25, 26, 29, 32, 37, 40, 41, 42], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\relationship.py": {"executed_lines": [3, 4, 6, 7, 10, 13, 14, 17, 20, 21, 23, 26, 29, 31, 34, 37, 38, 39, 40, 41, 42, 43, 46, 49], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 4, 6, 7, 10, 13, 14, 17, 20, 21, 23, 26, 29, 31, 34, 37, 38, 39, 40, 41, 42, 43, 46, 49], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RelationshipCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "RelationshipUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "RelationshipRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "CompatibilityScore": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "RelationshipAction": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "": {"executed_lines": [3, 4, 6, 7, 10, 13, 14, 17, 20, 21, 23, 26, 29, 31, 34, 37, 38, 39, 40, 41, 42, 43, 46, 49], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\room.py": {"executed_lines": [1, 3, 5, 6, 9, 10, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 9, 10, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RoomCreateWithoutVaultID": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "RoomCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "RoomRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "RoomUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "": {"executed_lines": [1, 3, 5, 6, 9, 10, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\token.py": {"executed_lines": [1, 4, 5, 6, 7, 10, 11], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 4, 5, 6, 7, 10, 11], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"Token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 4}, "TokenPayload": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [1, 4, 5, 6, 7, 10, 11], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\training.py": {"executed_lines": [3, 5, 7, 10, 14, 18, 21, 22, 23, 25, 26, 29, 32, 33, 36, 39, 40, 41, 42, 44, 45], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 5, 7, 10, 14, 18, 21, 22, 23, 25, 26, 29, 32, 33, 36, 39, 40, 41, 42, 44, 45], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TrainingCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "TrainingUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "TrainingRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "TrainingRead.Config": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "TrainingStartRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "TrainingProgress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 36}, "TrainingProgress.Config": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 44}, "": {"executed_lines": [3, 5, 7, 10, 14, 18, 21, 22, 23, 25, 26, 29, 32, 33, 36, 39, 40, 41, 42, 44, 45], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\user.py": {"executed_lines": [1, 2, 4, 6, 7, 13, 14, 17, 18, 19, 20, 23, 24, 25, 26, 29, 30, 33, 34, 35], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10], "functions": {"": {"executed_lines": [1, 2, 4, 6, 7, 13, 14, 17, 18, 19, 20, 23, 24, 25, 26, 29, 30, 33, 34, 35], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10], "start_line": 1}}, "classes": {"UserCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "UserRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "UserWithTokens": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "UserReadWithVaults": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "UserUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "": {"executed_lines": [1, 2, 4, 6, 7, 13, 14, 17, 18, 19, 20, 23, 24, 25, 26, 29, 30, 33, 34, 35], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10], "start_line": 1}}}, "app\\schemas\\user_profile.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 27, 28, 29, 30], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 27, 28, 29, 30], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ProfileRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "ProfileUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "ProfileUpdateStatistics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 27, 28, 29, 30], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\vault.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 11, 12, 15, 16, 19, 20, 23, 24, 25, 26, 27, 30, 31, 34, 35, 36, 39, 40, 41], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 11, 12, 15, 16, 19, 20, 23, 24, 25, 26, 27, 30, 31, 34, 35, 36, 39, 40, 41], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"VaultCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "VaultCreateWithUserID": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "VaultNumber": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "VaultRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "VaultReadWithUser": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "VaultReadWithNumbers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "VaultUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 11, 12, 15, 16, 19, 20, 23, 24, 25, 26, 27, 30, 31, 34, 35, 36, 39, 40, 41], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\weapon.py": {"executed_lines": [1, 3, 5, 6, 9, 10, 13, 14, 15, 16, 19, 20, 21, 22], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 9, 10, 13, 14, 15, 16, 19, 20, 21, 22], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"WeaponCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "WeaponRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "WeaponUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "": {"executed_lines": [1, 3, 5, 6, 9, 10, 13, 14, 15, 16, 19, 20, 21, 22], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\breeding_service.py": {"executed_lines": [3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 22, 24, 27, 30, 31, 46, 49, 51, 52, 54, 57, 64, 67, 68, 70, 71, 73, 75, 76, 79, 80, 83, 84, 85, 86, 89, 90, 92, 96, 97, 100, 104, 106, 110, 111, 115, 118, 121, 123, 127, 128, 131, 136, 137, 141, 143, 144, 160, 161, 163, 171, 172, 173, 175, 177, 179, 180, 194, 202, 204, 205, 223, 224, 226, 227, 228, 230, 231, 232, 235, 236, 238, 239, 241, 246, 247, 248, 251, 252, 255, 257, 273, 274, 277, 278, 279, 280, 283, 284, 285, 286, 288, 291, 292, 294, 295, 296, 298, 300, 301, 312, 314, 315, 316, 317, 320, 323, 326, 329, 330, 332, 334, 336, 337, 349, 351, 352, 354, 357, 358, 360, 362, 363, 377, 379, 387, 389, 390, 392, 395, 396, 397, 398, 399, 400, 402, 403, 405, 407, 409, 410, 412, 414, 415, 429, 436, 439], "summary": {"covered_lines": 158, "num_statements": 165, "percent_covered": 95.75757575757575, "percent_covered_display": "95.76", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 95.75757575757575, "percent_statements_covered_display": "95.76"}, "missing_lines": [93, 101, 116, 124, 125, 242, 243], "excluded_lines": [], "functions": {"BreedingService.check_for_conception": {"executed_lines": [46, 49, 51, 52, 54, 57, 64, 67, 68, 70, 71, 73, 75, 76, 79, 80, 83, 84, 85, 86, 89, 90, 92, 96, 97, 100, 104, 106, 110, 111, 115, 118, 121, 123, 127, 128, 131, 136, 137, 141], "summary": {"covered_lines": 40, "num_statements": 45, "percent_covered": 88.88888888888889, "percent_covered_display": "88.89", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "88.89"}, "missing_lines": [93, 101, 116, 124, 125], "excluded_lines": [], "start_line": 31}, "BreedingService.create_pregnancy": {"executed_lines": [160, 161, 163, 171, 172, 173, 175, 177], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 144}, "BreedingService.check_due_pregnancies": {"executed_lines": [194, 202], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 180}, "BreedingService.deliver_baby": {"executed_lines": [223, 224, 226, 227, 228, 230, 231, 232, 235, 236, 238, 239, 241, 246, 247, 248, 251, 252, 255, 257, 273, 274, 277, 278, 279, 280, 283, 284, 285, 286, 288, 291, 292, 294, 295, 296, 298], "summary": {"covered_lines": 37, "num_statements": 39, "percent_covered": 94.87179487179488, "percent_covered_display": "94.87", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 94.87179487179488, "percent_statements_covered_display": "94.87"}, "missing_lines": [242, 243], "excluded_lines": [], "start_line": 205}, "BreedingService._calculate_inherited_stats": {"executed_lines": [312, 314, 315, 316, 317, 320, 323, 326, 329, 330, 332, 334], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 301}, "BreedingService._calculate_inherited_rarity": {"executed_lines": [349, 351, 352, 354, 357, 358, 360], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 337}, "BreedingService.age_children": {"executed_lines": [377, 379, 387, 389, 390, 392, 395, 396, 397, 398, 399, 400, 402, 403, 405, 407, 409, 410, 412], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 363}, "BreedingService.get_active_pregnancies": {"executed_lines": [429, 436], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 415}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 22, 24, 27, 30, 31, 143, 144, 179, 180, 204, 205, 300, 301, 336, 337, 362, 363, 414, 415, 439], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"BreedingService": {"executed_lines": [46, 49, 51, 52, 54, 57, 64, 67, 68, 70, 71, 73, 75, 76, 79, 80, 83, 84, 85, 86, 89, 90, 92, 96, 97, 100, 104, 106, 110, 111, 115, 118, 121, 123, 127, 128, 131, 136, 137, 141, 160, 161, 163, 171, 172, 173, 175, 177, 194, 202, 223, 224, 226, 227, 228, 230, 231, 232, 235, 236, 238, 239, 241, 246, 247, 248, 251, 252, 255, 257, 273, 274, 277, 278, 279, 280, 283, 284, 285, 286, 288, 291, 292, 294, 295, 296, 298, 312, 314, 315, 316, 317, 320, 323, 326, 329, 330, 332, 334, 349, 351, 352, 354, 357, 358, 360, 377, 379, 387, 389, 390, 392, 395, 396, 397, 398, 399, 400, 402, 403, 405, 407, 409, 410, 412, 429, 436], "summary": {"covered_lines": 127, "num_statements": 134, "percent_covered": 94.77611940298507, "percent_covered_display": "94.78", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 94.77611940298507, "percent_statements_covered_display": "94.78"}, "missing_lines": [93, 101, 116, 124, 125, 242, 243], "excluded_lines": [], "start_line": 27}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 22, 24, 27, 30, 31, 143, 144, 179, 180, 204, 205, 300, 301, 336, 337, 362, 363, 414, 415, 439], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\conversation_service.py": {"executed_lines": [3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 24, 30, 33, 34, 35, 37, 38, 48, 49, 51, 53, 54, 65, 66, 73, 77, 93, 114, 218], "summary": {"covered_lines": 35, "num_statements": 61, "percent_covered": 57.377049180327866, "percent_covered_display": "57.38", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 57.377049180327866, "percent_statements_covered_display": "57.38"}, "missing_lines": [115, 116, 117, 120, 121, 122, 125, 126, 127, 128, 137, 140, 143, 144, 152, 153, 154, 161, 162, 163, 164, 173, 179, 182, 196, 208], "excluded_lines": [], "functions": {"ConversationService.__init__": {"executed_lines": [34, 35], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "ConversationService._select_voice_for_gender": {"executed_lines": [48, 49, 51], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "ConversationService._build_dweller_prompt": {"executed_lines": [65, 66, 73, 77], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "ConversationService.process_audio_message": {"executed_lines": [114], "summary": {"covered_lines": 1, "num_statements": 27, "percent_covered": 3.7037037037037037, "percent_covered_display": "3.70", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 3.7037037037037037, "percent_statements_covered_display": "3.70"}, "missing_lines": [115, 116, 117, 120, 121, 122, 125, 126, 127, 128, 137, 140, 143, 144, 152, 153, 154, 161, 162, 163, 164, 173, 179, 182, 196, 208], "excluded_lines": [], "start_line": 93}, "": {"executed_lines": [3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 24, 30, 33, 37, 38, 53, 54, 93, 218], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ConversationService": {"executed_lines": [34, 35, 48, 49, 51, 65, 66, 73, 77, 114], "summary": {"covered_lines": 10, "num_statements": 36, "percent_covered": 27.77777777777778, "percent_covered_display": "27.78", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 27.77777777777778, "percent_statements_covered_display": "27.78"}, "missing_lines": [115, 116, 117, 120, 121, 122, 125, 126, 127, 128, 137, 140, 143, 144, 152, 153, 154, 161, 162, 163, 164, 173, 179, 182, 196, 208], "excluded_lines": [], "start_line": 30}, "": {"executed_lines": [3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 24, 30, 33, 37, 38, 53, 54, 93, 218], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\death_service.py": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 22, 25, 77, 150, 164, 182, 221, 262, 293, 318, 334], "summary": {"covered_lines": 25, "num_statements": 97, "percent_covered": 25.77319587628866, "percent_covered_display": "25.77", "missing_lines": 72, "excluded_lines": 0, "percent_statements_covered": 25.77319587628866, "percent_statements_covered_display": "25.77"}, "missing_lines": [42, 43, 46, 47, 50, 65, 67, 75, 94, 96, 97, 99, 100, 103, 104, 105, 107, 108, 109, 115, 117, 124, 127, 140, 148, 162, 171, 172, 174, 175, 177, 178, 180, 191, 194, 201, 202, 204, 205, 206, 211, 217, 219, 229, 230, 231, 246, 248, 264, 267, 268, 269, 271, 272, 275, 281, 282, 285, 288, 289, 291, 300, 301, 302, 305, 313, 314, 315, 316, 320, 322, 330], "excluded_lines": [], "functions": {"DeathService.mark_as_dead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42, 43, 46, 47, 50, 65, 67, 75], "excluded_lines": [], "start_line": 25}, "DeathService.revive_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [94, 96, 97, 99, 100, 103, 104, 105, 107, 108, 109, 115, 117, 124, 127, 140, 148], "excluded_lines": [], "start_line": 77}, "DeathService.get_revival_cost": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [162], "excluded_lines": [], "start_line": 150}, "DeathService.get_days_until_permanent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [171, 172, 174, 175, 177, 178, 180], "excluded_lines": [], "start_line": 164}, "DeathService.check_and_mark_permanent_deaths": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [191, 194, 201, 202, 204, 205, 206, 211, 217, 219], "excluded_lines": [], "start_line": 182}, "DeathService.get_death_statistics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [229, 230, 231, 246, 248], "excluded_lines": [], "start_line": 221}, "DeathService._get_dead_dweller_counts": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [264, 267, 268, 269, 271, 272, 275, 281, 282, 285, 288, 289, 291], "excluded_lines": [], "start_line": 262}, "DeathService._increment_death_stats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [300, 301, 302, 305, 313, 314, 315, 316], "excluded_lines": [], "start_line": 293}, "DeathService._generate_epitaph": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [320, 322, 330], "excluded_lines": [], "start_line": 318}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 22, 25, 77, 150, 164, 182, 221, 262, 293, 318, 334], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"DeathService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 72, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 72, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42, 43, 46, 47, 50, 65, 67, 75, 94, 96, 97, 99, 100, 103, 104, 105, 107, 108, 109, 115, 117, 124, 127, 140, 148, 162, 171, 172, 174, 175, 177, 178, 180, 191, 194, 201, 202, 204, 205, 206, 211, 217, 219, 229, 230, 231, 246, 248, 264, 267, 268, 269, 271, 272, 275, 281, 282, 285, 288, 289, 291, 300, 301, 302, 305, 313, 314, 315, 316, 320, 322, 330], "excluded_lines": [], "start_line": 22}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 22, 25, 77, 150, 164, 182, 221, 262, 293, 318, 334], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\dweller_ai.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 28, 31, 32, 33, 34, 36, 86, 116, 160, 213, 274, 315, 341], "summary": {"covered_lines": 31, "num_statements": 116, "percent_covered": 26.724137931034484, "percent_covered_display": "26.72", "missing_lines": 85, "excluded_lines": 0, "percent_statements_covered": 26.724137931034484, "percent_statements_covered_display": "26.72"}, "missing_lines": [46, 47, 48, 50, 51, 54, 62, 63, 66, 67, 68, 69, 71, 73, 79, 84, 88, 89, 90, 93, 96, 97, 99, 101, 103, 109, 114, 125, 126, 127, 130, 138, 143, 145, 147, 153, 158, 169, 170, 171, 173, 174, 175, 180, 188, 189, 192, 196, 200, 206, 211, 226, 227, 228, 230, 231, 232, 237, 238, 239, 240, 241, 242, 244, 251, 252, 253, 255, 261, 267, 272, 285, 290, 306, 308, 323, 324, 325, 327, 328, 331, 332, 335, 336, 338], "excluded_lines": [], "functions": {"DwellerAIService.__init__": {"executed_lines": [33, 34], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "DwellerAIService.generate_backstory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [46, 47, 48, 50, 51, 54, 62, 63, 66, 67, 68, 69, 71, 73, 79, 84], "excluded_lines": [], "start_line": 36}, "DwellerAIService.extend_bio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [88, 89, 90, 93, 96, 97, 99, 101, 103, 109, 114], "excluded_lines": [], "start_line": 86}, "DwellerAIService.generate_visual_attributes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [125, 126, 127, 130, 138, 143, 145, 147, 153, 158], "excluded_lines": [], "start_line": 116}, "DwellerAIService.generate_photo": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [169, 170, 171, 173, 174, 175, 180, 188, 189, 192, 196, 200, 206, 211], "excluded_lines": [], "start_line": 160}, "DwellerAIService.generate_audio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 20, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [226, 227, 228, 230, 231, 232, 237, 238, 239, 240, 241, 242, 244, 251, 252, 253, 255, 261, 267, 272], "excluded_lines": [], "start_line": 213}, "DwellerAIService.generate_dweller_avatar": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [285, 290, 306, 308], "excluded_lines": [], "start_line": 274}, "DwellerAIService.dweller_generate_pipeline": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [323, 324, 325, 327, 328, 331, 332, 335, 336, 338], "excluded_lines": [], "start_line": 315}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 28, 31, 32, 36, 86, 116, 160, 213, 274, 315, 341], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"DwellerAIService": {"executed_lines": [33, 34], "summary": {"covered_lines": 2, "num_statements": 87, "percent_covered": 2.2988505747126435, "percent_covered_display": "2.30", "missing_lines": 85, "excluded_lines": 0, "percent_statements_covered": 2.2988505747126435, "percent_statements_covered_display": "2.30"}, "missing_lines": [46, 47, 48, 50, 51, 54, 62, 63, 66, 67, 68, 69, 71, 73, 79, 84, 88, 89, 90, 93, 96, 97, 99, 101, 103, 109, 114, 125, 126, 127, 130, 138, 143, 145, 147, 153, 158, 169, 170, 171, 173, 174, 175, 180, 188, 189, 192, 196, 200, 206, 211, 226, 227, 228, 230, 231, 232, 237, 238, 239, 240, 241, 242, 244, 251, 252, 253, 255, 261, 267, 272, 285, 290, 306, 308, 323, 324, 325, 327, 328, 331, 332, 335, 336, 338], "excluded_lines": [], "start_line": 31}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 28, 31, 32, 36, 86, 116, 160, 213, 274, 315, 341], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\__init__.py": {"executed_lines": [3, 6, 8], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 6, 8], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 6, 8], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\combat_calculator.py": {"executed_lines": [3, 5, 6, 7, 8, 11, 14, 24, 25, 29, 30, 32, 35, 37, 49, 52, 53, 58, 60, 62, 63, 64, 67, 68, 69, 70, 74], "summary": {"covered_lines": 27, "num_statements": 29, "percent_covered": 93.10344827586206, "percent_covered_display": "93.10", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 93.10344827586206, "percent_statements_covered_display": "93.10"}, "missing_lines": [26, 33], "excluded_lines": [], "functions": {"CombatCalculator.select_enemy": {"executed_lines": [24, 25, 29, 30, 32, 35], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [26, 33], "excluded_lines": [], "start_line": 14}, "CombatCalculator.calculate_combat_outcome": {"executed_lines": [49, 52, 53, 58, 60, 62, 63, 64, 67, 68, 69, 70], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 37}, "": {"executed_lines": [3, 5, 6, 7, 8, 11, 14, 37, 74], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CombatCalculator": {"executed_lines": [24, 25, 29, 30, 32, 35, 49, 52, 53, 58, 60, 62, 63, 64, 67, 68, 69, 70], "summary": {"covered_lines": 18, "num_statements": 20, "percent_covered": 90.0, "percent_covered_display": "90.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90.00"}, "missing_lines": [26, 33], "excluded_lines": [], "start_line": 11}, "": {"executed_lines": [3, 5, 6, 7, 8, 11, 14, 37, 74], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\coordinator.py": {"executed_lines": [3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 24, 27, 38, 40, 41, 45, 46, 47, 49, 54, 57, 58, 60, 61, 63, 64, 67, 70, 71, 74, 75, 76, 77, 79, 81, 82, 83, 84, 87, 95, 96, 98, 104, 106, 107, 109, 117, 118, 120, 122, 124, 125, 126, 128, 139, 141, 142, 145, 148, 151, 153, 164, 166, 167, 170, 173, 176, 179, 182, 184, 186, 187, 188, 190, 192, 194, 196, 197, 198, 199, 200, 205, 207, 209, 213, 214, 217, 220, 221, 222, 223, 226, 227, 229, 230, 233, 236, 238, 240, 249, 251, 252, 316], "summary": {"covered_lines": 108, "num_statements": 135, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [111, 112, 114, 202, 255, 258, 259, 261, 262, 263, 264, 267, 268, 269, 270, 272, 274, 275, 276, 287, 289, 291, 292, 293, 301, 305, 312], "excluded_lines": [], "functions": {"ExplorationCoordinator.process_event": {"executed_lines": [38, 40, 41, 45, 46, 47, 49, 54, 57, 58, 60, 61, 63, 64, 67, 70, 71, 74, 75, 76, 77], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "ExplorationCoordinator._handle_loot_event": {"executed_lines": [81, 82, 83, 84, 87, 95, 96], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 79}, "ExplorationCoordinator._apply_health_loss": {"executed_lines": [104, 106, 107, 109, 117, 118], "summary": {"covered_lines": 6, "num_statements": 9, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [111, 112, 114], "excluded_lines": [], "start_line": 98}, "ExplorationCoordinator._apply_health_restoration": {"executed_lines": [122, 124, 125, 126], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 120}, "ExplorationCoordinator.complete_exploration": {"executed_lines": [139, 141, 142, 145, 148, 151], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 128}, "ExplorationCoordinator.recall_exploration": {"executed_lines": [164, 166, 167, 170, 173, 176, 179, 182], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 153}, "ExplorationCoordinator._update_dweller_status_after_return": {"executed_lines": [186, 187, 188, 190, 192, 194, 196, 197, 198, 199, 200, 205, 207], "summary": {"covered_lines": 13, "num_statements": 14, "percent_covered": 92.85714285714286, "percent_covered_display": "92.86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.85714285714286, "percent_statements_covered_display": "92.86"}, "missing_lines": [202], "excluded_lines": [], "start_line": 184}, "ExplorationCoordinator._apply_rewards": {"executed_lines": [213, 214, 217, 220, 221, 222, 223, 226, 227, 229, 230, 233, 236, 238, 240], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 209}, "ExplorationCoordinator._transfer_loot_to_storage": {"executed_lines": [251, 252], "summary": {"covered_lines": 2, "num_statements": 25, "percent_covered": 8.0, "percent_covered_display": "8.00", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 8.0, "percent_statements_covered_display": "8.00"}, "missing_lines": [255, 258, 259, 261, 262, 263, 264, 267, 268, 269, 270, 272, 274, 275, 276, 287, 289, 291, 292, 293, 301, 305, 312], "excluded_lines": [], "start_line": 249}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 24, 27, 79, 98, 120, 128, 153, 184, 209, 249, 316], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ExplorationCoordinator": {"executed_lines": [38, 40, 41, 45, 46, 47, 49, 54, 57, 58, 60, 61, 63, 64, 67, 70, 71, 74, 75, 76, 77, 81, 82, 83, 84, 87, 95, 96, 104, 106, 107, 109, 117, 118, 122, 124, 125, 126, 139, 141, 142, 145, 148, 151, 164, 166, 167, 170, 173, 176, 179, 182, 186, 187, 188, 190, 192, 194, 196, 197, 198, 199, 200, 205, 207, 213, 214, 217, 220, 221, 222, 223, 226, 227, 229, 230, 233, 236, 238, 240, 251, 252], "summary": {"covered_lines": 82, "num_statements": 109, "percent_covered": 75.22935779816514, "percent_covered_display": "75.23", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 75.22935779816514, "percent_statements_covered_display": "75.23"}, "missing_lines": [111, 112, 114, 202, 255, 258, 259, 261, 262, 263, 264, 267, 268, 269, 270, 272, 274, 275, 276, 287, 289, 291, 292, 293, 301, 305, 312], "excluded_lines": [], "start_line": 24}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 24, 27, 79, 98, 120, 128, 153, 184, 209, 249, 316], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\data_loader.py": {"executed_lines": [3, 4, 5, 7, 10, 11, 12, 15, 16, 18, 19, 22, 23, 25, 28, 29, 31, 32, 35, 36, 39, 40, 42, 43, 46, 47, 50, 51, 53, 54, 57, 58, 61, 62, 76, 87], "summary": {"covered_lines": 36, "num_statements": 50, "percent_covered": 72.0, "percent_covered_display": "72.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 72.0, "percent_statements_covered_display": "72.00"}, "missing_lines": [20, 33, 44, 55, 64, 65, 66, 68, 69, 70, 71, 73, 78, 89], "excluded_lines": [], "functions": {"load_enemies": {"executed_lines": [18, 19, 22, 23, 25], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83.33", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83.33"}, "missing_lines": [20], "excluded_lines": [], "start_line": 16}, "load_event_templates": {"executed_lines": [31, 32, 35, 36], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [33], "excluded_lines": [], "start_line": 29}, "load_junk_items": {"executed_lines": [42, 43, 46, 47], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [44], "excluded_lines": [], "start_line": 40}, "load_weapons": {"executed_lines": [53, 54, 57, 58], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [55], "excluded_lines": [], "start_line": 51}, "load_outfits": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [64, 65, 66, 68, 69, 70, 71, 73], "excluded_lines": [], "start_line": 62}, "_get_fallback_enemies": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [78], "excluded_lines": [], "start_line": 76}, "_get_fallback_templates": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [89], "excluded_lines": [], "start_line": 87}, "": {"executed_lines": [3, 4, 5, 7, 10, 11, 12, 15, 16, 28, 29, 39, 40, 50, 51, 61, 62, 76, 87], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 4, 5, 7, 10, 11, 12, 15, 16, 18, 19, 22, 23, 25, 28, 29, 31, 32, 35, 36, 39, 40, 42, 43, 46, 47, 50, 51, 53, 54, 57, 58, 61, 62, 76, 87], "summary": {"covered_lines": 36, "num_statements": 50, "percent_covered": 72.0, "percent_covered_display": "72.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 72.0, "percent_statements_covered_display": "72.00"}, "missing_lines": [20, 33, 44, 55, 64, 65, 66, 68, 69, 70, 71, 73, 78, 89], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\event_generator.py": {"executed_lines": [3, 4, 6, 7, 8, 16, 17, 18, 21, 24, 34, 35, 37, 40, 41, 42, 43, 45, 47, 50, 51, 52, 54, 64, 65, 68, 69, 76, 83, 84, 85, 86, 87, 88, 89, 91, 93, 94, 95, 97, 104, 106, 107, 110, 111, 113, 114, 115, 117, 122, 124, 125, 127, 128, 129, 131, 133, 135, 136, 139, 140, 142, 143, 144, 146, 150], "summary": {"covered_lines": 66, "num_statements": 66, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"EventGenerator.can_generate_event": {"executed_lines": [34, 35, 37, 40, 41, 42, 43, 45, 47, 50, 51, 52], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "EventGenerator.generate_event": {"executed_lines": [64, 65, 68, 69, 76, 83, 84, 85, 86, 87, 88, 89], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "EventGenerator._generate_combat_event": {"executed_lines": [93, 94, 95, 97], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 91}, "EventGenerator._generate_loot_event": {"executed_lines": [106, 107, 110, 111, 113, 114, 115, 117], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 104}, "EventGenerator._generate_danger_event": {"executed_lines": [124, 125, 127, 128, 129, 131], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 122}, "EventGenerator._generate_rest_event": {"executed_lines": [135, 136, 139, 140, 142, 143, 144, 146], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 133}, "": {"executed_lines": [3, 4, 6, 7, 8, 16, 17, 18, 21, 24, 54, 91, 104, 122, 133, 150], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"EventGenerator": {"executed_lines": [34, 35, 37, 40, 41, 42, 43, 45, 47, 50, 51, 52, 64, 65, 68, 69, 76, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 97, 106, 107, 110, 111, 113, 114, 115, 117, 124, 125, 127, 128, 129, 131, 135, 136, 139, 140, 142, 143, 144, 146], "summary": {"covered_lines": 50, "num_statements": 50, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [3, 4, 6, 7, 8, 16, 17, 18, 21, 24, 54, 91, 104, 122, 133, 150], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\loot_calculator.py": {"executed_lines": [3, 5, 6, 7, 10, 13, 27, 37, 40, 42, 44, 50, 52, 54, 55, 67, 68, 74, 75, 78, 80, 99, 101, 102, 105, 106, 112, 113, 116, 118, 128, 131, 133, 136, 142, 148, 149, 150, 153, 155, 166, 167, 168, 172], "summary": {"covered_lines": 44, "num_statements": 65, "percent_covered": 67.6923076923077, "percent_covered_display": "67.69", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 67.6923076923077, "percent_statements_covered_display": "67.69"}, "missing_lines": [23, 25, 41, 43, 45, 56, 76, 82, 83, 84, 86, 87, 93, 94, 95, 97, 103, 114, 132, 134, 151], "excluded_lines": [], "functions": {"LootCalculator.calculate_luck_multiplier": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [23, 25], "excluded_lines": [], "start_line": 13}, "LootCalculator.get_rarity_weights": {"executed_lines": [37, 40, 42, 44, 50], "summary": {"covered_lines": 5, "num_statements": 8, "percent_covered": 62.5, "percent_covered_display": "62.50", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 62.5, "percent_statements_covered_display": "62.50"}, "missing_lines": [41, 43, 45], "excluded_lines": [], "start_line": 27}, "LootCalculator.select_random_weapon": {"executed_lines": [54, 55, 67, 68, 74, 75, 78], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 77.77777777777777, "percent_covered_display": "77.78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 77.77777777777777, "percent_statements_covered_display": "77.78"}, "missing_lines": [56, 76], "excluded_lines": [], "start_line": 52}, "LootCalculator.select_random_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [82, 83, 84, 86, 87, 93, 94, 95, 97], "excluded_lines": [], "start_line": 80}, "LootCalculator.select_random_junk": {"executed_lines": [101, 102, 105, 106, 112, 113, 116], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 77.77777777777777, "percent_covered_display": "77.78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 77.77777777777777, "percent_statements_covered_display": "77.78"}, "missing_lines": [103, 114], "excluded_lines": [], "start_line": 99}, "LootCalculator.select_random_loot": {"executed_lines": [128, 131, 133, 136, 142, 148, 149, 150, 153], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [132, 134, 151], "excluded_lines": [], "start_line": 118}, "LootCalculator.calculate_caps_found": {"executed_lines": [166, 167, 168], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 155}, "": {"executed_lines": [3, 5, 6, 7, 10, 13, 27, 52, 80, 99, 118, 155, 172], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"LootCalculator": {"executed_lines": [37, 40, 42, 44, 50, 54, 55, 67, 68, 74, 75, 78, 101, 102, 105, 106, 112, 113, 116, 128, 131, 133, 136, 142, 148, 149, 150, 153, 166, 167, 168], "summary": {"covered_lines": 31, "num_statements": 52, "percent_covered": 59.61538461538461, "percent_covered_display": "59.62", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 59.61538461538461, "percent_statements_covered_display": "59.62"}, "missing_lines": [23, 25, 41, 43, 45, 56, 76, 82, 83, 84, 86, 87, 93, 94, 95, 97, 103, 114, 132, 134, 151], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [3, 5, 6, 7, 10, 13, 27, 52, 80, 99, 118, 155, 172], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\rewards_calculator.py": {"executed_lines": [3, 4, 7, 10, 26, 29, 30, 31, 33, 36, 37, 38, 41, 43, 45, 49], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"RewardsCalculator.calculate_exploration_xp": {"executed_lines": [26, 29, 30, 31, 33, 36, 37, 38, 41, 43, 45], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [3, 4, 7, 10, 49], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RewardsCalculator": {"executed_lines": [26, 29, 30, 31, 33, 36, 37, 38, 41, 43, 45], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 7}, "": {"executed_lines": [3, 4, 7, 10, 49], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration_service.py": {"executed_lines": [7, 8, 10, 11, 12, 13, 14, 15, 18, 26, 36, 38, 49, 51, 62, 64, 75, 77, 96, 109, 120, 132, 148, 152, 168, 172, 186, 195], "summary": {"covered_lines": 28, "num_statements": 39, "percent_covered": 71.7948717948718, "percent_covered_display": "71.79", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 71.7948717948718, "percent_statements_covered_display": "71.79"}, "missing_lines": [98, 99, 102, 122, 149, 150, 169, 170, 188, 189, 191], "excluded_lines": [], "functions": {"ExplorationService.generate_event": {"executed_lines": [36], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "ExplorationService.process_event": {"executed_lines": [49], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "ExplorationService.complete_exploration": {"executed_lines": [62], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 51}, "ExplorationService.recall_exploration": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 64}, "ExplorationService.send_dweller": {"executed_lines": [96], "summary": {"covered_lines": 1, "num_statements": 4, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [98, 99, 102], "excluded_lines": [], "start_line": 77}, "ExplorationService.get_exploration_progress": {"executed_lines": [120], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [122], "excluded_lines": [], "start_line": 109}, "ExplorationService.complete_exploration_with_data": {"executed_lines": [148], "summary": {"covered_lines": 1, "num_statements": 3, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [149, 150], "excluded_lines": [], "start_line": 132}, "ExplorationService.recall_exploration_with_data": {"executed_lines": [168], "summary": {"covered_lines": 1, "num_statements": 3, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [169, 170], "excluded_lines": [], "start_line": 152}, "ExplorationService.process_event_for_exploration": {"executed_lines": [186], "summary": {"covered_lines": 1, "num_statements": 4, "percent_covered": 25.0, "percent_covered_display": "25.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25.00"}, "missing_lines": [188, 189, 191], "excluded_lines": [], "start_line": 172}, "": {"executed_lines": [7, 8, 10, 11, 12, 13, 14, 15, 18, 26, 38, 51, 64, 77, 109, 132, 152, 172, 195], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ExplorationService": {"executed_lines": [36, 49, 62, 75, 96, 120, 148, 168, 186], "summary": {"covered_lines": 9, "num_statements": 20, "percent_covered": 45.0, "percent_covered_display": "45.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 45.0, "percent_statements_covered_display": "45.00"}, "missing_lines": [98, 99, 102, 122, 149, 150, 169, 170, 188, 189, 191], "excluded_lines": [], "start_line": 18}, "": {"executed_lines": [7, 8, 10, 11, 12, 13, 14, 15, 18, 26, 38, 51, 64, 77, 109, 132, 152, 172, 195], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\game_loop.py": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 26, 27, 28, 30, 68, 80, 83, 88, 91, 98, 100, 107, 109, 111, 112, 117, 119, 131, 132, 135, 136, 139, 140, 143, 144, 147, 148, 151, 152, 156, 159, 160, 161, 163, 165, 167, 176, 178, 187, 189, 200, 216, 218, 219, 220, 222, 223, 224, 225, 226, 227, 229, 231, 238, 240, 242, 248, 250, 255, 257, 258, 260, 262, 263, 264, 267, 270, 271, 272, 273, 275, 277, 283, 285, 297, 298, 299, 301, 303, 307, 310, 311, 313, 314, 317, 318, 319, 322, 323, 327, 329, 337, 339, 340, 341, 342, 344, 351, 353, 354, 355, 358, 361, 362, 368, 369, 371, 375, 381, 388, 403, 405, 413, 415, 416, 417, 419, 425, 427, 428, 431, 433, 461, 463, 472, 474, 483, 485, 486, 488, 496, 498, 499, 506, 507, 510, 513, 538, 551, 553, 564, 566, 567, 568, 569, 570, 572, 574, 576, 577, 578, 580, 581, 665, 676, 678, 680, 683, 684, 685, 686, 694, 695, 696, 707, 709, 720, 722, 724, 726, 727, 728, 729, 736, 738, 748, 751, 754, 757, 766], "summary": {"covered_lines": 196, "num_statements": 365, "percent_covered": 53.6986301369863, "percent_covered_display": "53.70", "missing_lines": 169, "excluded_lines": 0, "percent_statements_covered": 53.6986301369863, "percent_statements_covered_display": "53.70"}, "missing_lines": [37, 44, 47, 49, 51, 52, 53, 54, 55, 56, 57, 59, 61, 66, 84, 85, 92, 95, 126, 127, 128, 168, 169, 170, 171, 173, 174, 179, 180, 181, 182, 184, 185, 191, 203, 204, 205, 207, 208, 211, 212, 213, 214, 279, 280, 281, 304, 324, 325, 363, 364, 365, 372, 376, 377, 378, 379, 382, 383, 384, 385, 390, 391, 392, 393, 394, 396, 398, 400, 401, 434, 436, 439, 443, 446, 447, 448, 453, 455, 457, 458, 459, 500, 501, 502, 503, 514, 515, 517, 518, 520, 523, 524, 525, 528, 529, 530, 531, 533, 535, 539, 540, 541, 544, 545, 547, 548, 549, 584, 585, 586, 587, 588, 591, 594, 597, 598, 601, 602, 603, 604, 605, 606, 609, 610, 611, 612, 615, 616, 618, 619, 621, 623, 629, 630, 631, 635, 636, 642, 645, 646, 647, 649, 650, 656, 658, 659, 660, 661, 663, 687, 688, 689, 690, 691, 697, 698, 699, 700, 701, 702, 703, 704, 705, 730, 731, 732, 733, 734], "excluded_lines": [], "functions": {"GameLoopService.__init__": {"executed_lines": [27, 28], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "GameLoopService.process_game_tick": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [37, 44, 47, 49, 51, 52, 53, 54, 55, 56, 57, 59, 61, 66], "excluded_lines": [], "start_line": 30}, "GameLoopService.process_vault_tick": {"executed_lines": [80, 83, 88, 91, 98, 100, 107, 109, 111, 112, 117, 119, 131, 132, 135, 136, 139, 140, 143, 144, 147, 148, 151, 152, 156, 159, 160, 161, 163], "summary": {"covered_lines": 29, "num_statements": 36, "percent_covered": 80.55555555555556, "percent_covered_display": "80.56", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 80.55555555555556, "percent_statements_covered_display": "80.56"}, "missing_lines": [84, 85, 92, 95, 126, 127, 128], "excluded_lines": [], "start_line": 68}, "GameLoopService.pause_vault": {"executed_lines": [167], "summary": {"covered_lines": 1, "num_statements": 7, "percent_covered": 14.285714285714286, "percent_covered_display": "14.29", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 14.285714285714286, "percent_statements_covered_display": "14.29"}, "missing_lines": [168, 169, 170, 171, 173, 174], "excluded_lines": [], "start_line": 165}, "GameLoopService.resume_vault": {"executed_lines": [178], "summary": {"covered_lines": 1, "num_statements": 7, "percent_covered": 14.285714285714286, "percent_covered_display": "14.29", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 14.285714285714286, "percent_statements_covered_display": "14.29"}, "missing_lines": [179, 180, 181, 182, 184, 185], "excluded_lines": [], "start_line": 176}, "GameLoopService.get_vault_status": {"executed_lines": [189], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [191], "excluded_lines": [], "start_line": 187}, "GameLoopService._get_active_vaults": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [203, 204, 205, 207, 208, 211, 212, 213, 214], "excluded_lines": [], "start_line": 200}, "GameLoopService._get_or_create_game_state": {"executed_lines": [218, 219, 220, 222, 223, 224, 225, 226, 227, 229], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 216}, "GameLoopService._process_explorations": {"executed_lines": [238, 240, 242, 248, 250, 255, 257, 258, 260, 262, 263, 264, 267, 270, 271, 272, 273, 275, 277, 283], "summary": {"covered_lines": 20, "num_statements": 23, "percent_covered": 86.95652173913044, "percent_covered_display": "86.96", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 86.95652173913044, "percent_statements_covered_display": "86.96"}, "missing_lines": [279, 280, 281], "excluded_lines": [], "start_line": 231}, "GameLoopService._award_work_xp": {"executed_lines": [297, 298, 299, 301, 303, 307, 310, 311, 313, 314, 317, 318, 319, 322, 323, 327], "summary": {"covered_lines": 16, "num_statements": 19, "percent_covered": 84.21052631578948, "percent_covered_display": "84.21", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 84.21052631578948, "percent_statements_covered_display": "84.21"}, "missing_lines": [304, 324, 325], "excluded_lines": [], "start_line": 285}, "GameLoopService._process_dwellers": {"executed_lines": [337, 339, 340, 341, 342, 344, 351, 353, 354, 355, 358, 361, 362, 368, 369, 371, 375, 381, 388, 403], "summary": {"covered_lines": 20, "num_statements": 41, "percent_covered": 48.78048780487805, "percent_covered_display": "48.78", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 48.78048780487805, "percent_statements_covered_display": "48.78"}, "missing_lines": [363, 364, 365, 372, 376, 377, 378, 379, 382, 383, 384, 385, 390, 391, 392, 393, 394, 396, 398, 400, 401], "excluded_lines": [], "start_line": 329}, "GameLoopService._process_training": {"executed_lines": [413, 415, 416, 417, 419, 425, 427, 428, 431, 433, 461], "summary": {"covered_lines": 11, "num_statements": 23, "percent_covered": 47.82608695652174, "percent_covered_display": "47.83", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 47.82608695652174, "percent_statements_covered_display": "47.83"}, "missing_lines": [434, 436, 439, 443, 446, 447, 448, 453, 455, 457, 458, 459], "excluded_lines": [], "start_line": 405}, "GameLoopService._process_happiness": {"executed_lines": [472], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 463}, "GameLoopService._process_incidents": {"executed_lines": [483, 485, 486, 488, 496, 498, 499, 506, 507, 510, 513, 538, 551], "summary": {"covered_lines": 13, "num_statements": 39, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [500, 501, 502, 503, 514, 515, 517, 518, 520, 523, 524, 525, 528, 529, 530, 531, 533, 535, 539, 540, 541, 544, 545, 547, 548, 549], "excluded_lines": [], "start_line": 474}, "GameLoopService._update_room_relationships": {"executed_lines": [564, 566, 567, 568, 569, 570, 572, 574, 576, 577, 578, 580, 581], "summary": {"covered_lines": 13, "num_statements": 55, "percent_covered": 23.636363636363637, "percent_covered_display": "23.64", "missing_lines": 42, "excluded_lines": 0, "percent_statements_covered": 23.636363636363637, "percent_statements_covered_display": "23.64"}, "missing_lines": [584, 585, 586, 587, 588, 591, 594, 597, 598, 601, 602, 603, 604, 605, 606, 609, 610, 611, 612, 615, 616, 618, 619, 621, 623, 629, 630, 631, 635, 636, 642, 645, 646, 647, 649, 650, 656, 658, 659, 660, 661, 663], "excluded_lines": [], "start_line": 553}, "GameLoopService._process_pregnancies_and_births": {"executed_lines": [676, 678, 680, 683, 684, 685, 686, 694, 695, 696, 707], "summary": {"covered_lines": 11, "num_statements": 25, "percent_covered": 44.0, "percent_covered_display": "44.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 44.0, "percent_statements_covered_display": "44.00"}, "missing_lines": [687, 688, 689, 690, 691, 697, 698, 699, 700, 701, 702, 703, 704, 705], "excluded_lines": [], "start_line": 665}, "GameLoopService._age_children": {"executed_lines": [720, 722, 724, 726, 727, 728, 729, 736], "summary": {"covered_lines": 8, "num_statements": 13, "percent_covered": 61.53846153846154, "percent_covered_display": "61.54", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 61.53846153846154, "percent_statements_covered_display": "61.54"}, "missing_lines": [730, 731, 732, 733, 734], "excluded_lines": [], "start_line": 709}, "GameLoopService._process_breeding": {"executed_lines": [748, 751, 754, 757], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 738}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 26, 30, 68, 165, 176, 187, 200, 216, 231, 285, 329, 405, 463, 474, 553, 665, 709, 738, 766], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"GameLoopService": {"executed_lines": [27, 28, 80, 83, 88, 91, 98, 100, 107, 109, 111, 112, 117, 119, 131, 132, 135, 136, 139, 140, 143, 144, 147, 148, 151, 152, 156, 159, 160, 161, 163, 167, 178, 189, 218, 219, 220, 222, 223, 224, 225, 226, 227, 229, 238, 240, 242, 248, 250, 255, 257, 258, 260, 262, 263, 264, 267, 270, 271, 272, 273, 275, 277, 283, 297, 298, 299, 301, 303, 307, 310, 311, 313, 314, 317, 318, 319, 322, 323, 327, 337, 339, 340, 341, 342, 344, 351, 353, 354, 355, 358, 361, 362, 368, 369, 371, 375, 381, 388, 403, 413, 415, 416, 417, 419, 425, 427, 428, 431, 433, 461, 472, 483, 485, 486, 488, 496, 498, 499, 506, 507, 510, 513, 538, 551, 564, 566, 567, 568, 569, 570, 572, 574, 576, 577, 578, 580, 581, 676, 678, 680, 683, 684, 685, 686, 694, 695, 696, 707, 720, 722, 724, 726, 727, 728, 729, 736, 748, 751, 754, 757], "summary": {"covered_lines": 161, "num_statements": 330, "percent_covered": 48.78787878787879, "percent_covered_display": "48.79", "missing_lines": 169, "excluded_lines": 0, "percent_statements_covered": 48.78787878787879, "percent_statements_covered_display": "48.79"}, "missing_lines": [37, 44, 47, 49, 51, 52, 53, 54, 55, 56, 57, 59, 61, 66, 84, 85, 92, 95, 126, 127, 128, 168, 169, 170, 171, 173, 174, 179, 180, 181, 182, 184, 185, 191, 203, 204, 205, 207, 208, 211, 212, 213, 214, 279, 280, 281, 304, 324, 325, 363, 364, 365, 372, 376, 377, 378, 379, 382, 383, 384, 385, 390, 391, 392, 393, 394, 396, 398, 400, 401, 434, 436, 439, 443, 446, 447, 448, 453, 455, 457, 458, 459, 500, 501, 502, 503, 514, 515, 517, 518, 520, 523, 524, 525, 528, 529, 530, 531, 533, 535, 539, 540, 541, 544, 545, 547, 548, 549, 584, 585, 586, 587, 588, 591, 594, 597, 598, 601, 602, 603, 604, 605, 606, 609, 610, 611, 612, 615, 616, 618, 619, 621, 623, 629, 630, 631, 635, 636, 642, 645, 646, 647, 649, 650, 656, 658, 659, 660, 661, 663, 687, 688, 689, 690, 691, 697, 698, 699, 700, 701, 702, 703, 704, 705, 730, 731, 732, 733, 734], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 26, 30, 68, 165, 176, 187, 200, 216, 231, 285, 329, 405, 463, 474, 553, 665, 709, 738, 766], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\happiness_service.py": {"executed_lines": [3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 26, 27, 43, 44, 45, 46, 49, 51, 52, 55, 58, 61, 63, 71, 73, 75, 76, 77, 80, 88, 89, 90, 93, 94, 95, 96, 97, 99, 102, 105, 106, 107, 110, 111, 113, 121, 123, 124, 137, 138, 139, 141, 147, 154, 155, 160, 170, 171, 190, 193, 198, 200, 201, 204, 205, 208, 212, 213, 215, 216, 219, 220, 225, 226, 229, 230, 234, 245, 249, 253, 255, 256, 258, 261, 265, 270, 273, 274, 277, 280, 282, 283, 297, 298, 299, 301, 302, 306, 309, 311, 313, 320, 321, 323, 326, 329, 334, 335, 336, 340, 344, 349, 357, 360, 363, 366, 374, 377], "summary": {"covered_lines": 124, "num_statements": 152, "percent_covered": 81.57894736842105, "percent_covered_display": "81.58", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 81.57894736842105, "percent_statements_covered_display": "81.58"}, "missing_lines": [157, 158, 199, 209, 214, 235, 236, 238, 239, 241, 242, 246, 250, 262, 278, 303, 304, 324, 327, 330, 337, 338, 341, 345, 350, 358, 361, 367], "excluded_lines": [], "functions": {"HappinessService.update_vault_happiness": {"executed_lines": [43, 44, 45, 46, 49, 51, 52, 55, 58, 61, 63, 71, 73, 75, 76, 77, 80, 88, 89, 90, 93, 94, 95, 96, 97, 99, 102, 105, 106, 107, 110, 111, 113, 121], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "HappinessService._calculate_vault_factors": {"executed_lines": [137, 138, 139, 141, 147, 154, 155, 160], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [157, 158], "excluded_lines": [], "start_line": 124}, "HappinessService._calculate_happiness_change": {"executed_lines": [190, 193, 198, 200, 201, 204, 205, 208, 212, 213, 215, 216, 219, 220, 225, 226, 229, 230, 234, 245, 249, 253, 255, 256, 258, 261, 265, 270, 273, 274, 277, 280], "summary": {"covered_lines": 32, "num_statements": 45, "percent_covered": 71.11111111111111, "percent_covered_display": "71.11", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 71.11111111111111, "percent_statements_covered_display": "71.11"}, "missing_lines": [199, 209, 214, 235, 236, 238, 239, 241, 242, 246, 250, 262, 278], "excluded_lines": [], "start_line": 171}, "HappinessService.get_happiness_modifiers": {"executed_lines": [297, 298, 299, 301, 302, 306, 309, 311, 313, 320, 321, 323, 326, 329, 334, 335, 336, 340, 344, 349, 357, 360, 363, 366, 374], "summary": {"covered_lines": 25, "num_statements": 38, "percent_covered": 65.78947368421052, "percent_covered_display": "65.79", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 65.78947368421052, "percent_statements_covered_display": "65.79"}, "missing_lines": [303, 304, 324, 327, 330, 337, 338, 341, 345, 350, 358, 361, 367], "excluded_lines": [], "start_line": 283}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 26, 27, 123, 124, 170, 171, 282, 283, 377], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"HappinessService": {"executed_lines": [43, 44, 45, 46, 49, 51, 52, 55, 58, 61, 63, 71, 73, 75, 76, 77, 80, 88, 89, 90, 93, 94, 95, 96, 97, 99, 102, 105, 106, 107, 110, 111, 113, 121, 137, 138, 139, 141, 147, 154, 155, 160, 190, 193, 198, 200, 201, 204, 205, 208, 212, 213, 215, 216, 219, 220, 225, 226, 229, 230, 234, 245, 249, 253, 255, 256, 258, 261, 265, 270, 273, 274, 277, 280, 297, 298, 299, 301, 302, 306, 309, 311, 313, 320, 321, 323, 326, 329, 334, 335, 336, 340, 344, 349, 357, 360, 363, 366, 374], "summary": {"covered_lines": 99, "num_statements": 127, "percent_covered": 77.95275590551181, "percent_covered_display": "77.95", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 77.95275590551181, "percent_statements_covered_display": "77.95"}, "missing_lines": [157, 158, 199, 209, 214, 235, 236, 238, 239, 241, 242, 246, 250, 262, 278, 303, 304, 324, 327, 330, 337, 338, 341, 345, 350, 358, 361, 367], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 26, 27, 123, 124, 170, 171, 282, 283, 377], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\health_check.py": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 17, 18, 22, 25, 28, 29, 30, 33, 34, 37, 38, 39, 40, 43, 46, 47, 75, 76, 105, 106, 157, 158, 213, 214, 304, 305, 368, 419, 420], "summary": {"covered_lines": 40, "num_statements": 162, "percent_covered": 24.691358024691358, "percent_covered_display": "24.69", "missing_lines": 122, "excluded_lines": 0, "percent_statements_covered": 24.691358024691358, "percent_statements_covered_display": "24.69"}, "missing_lines": [19, 20, 57, 58, 59, 60, 66, 67, 68, 83, 84, 85, 86, 87, 93, 94, 95, 102, 103, 113, 114, 121, 123, 124, 125, 127, 128, 135, 136, 138, 148, 149, 150, 166, 167, 174, 175, 183, 184, 186, 196, 197, 198, 204, 205, 206, 222, 223, 230, 231, 233, 235, 236, 237, 238, 241, 242, 244, 245, 255, 268, 274, 275, 276, 277, 278, 285, 286, 287, 288, 293, 294, 295, 297, 312, 313, 319, 322, 323, 325, 327, 339, 340, 341, 347, 348, 349, 359, 360, 361, 388, 391, 392, 395, 396, 399, 400, 403, 404, 405, 408, 409, 410, 413, 414, 415, 417, 430, 432, 433, 434, 436, 437, 438, 440, 449, 450, 452, 454, 455, 457, 459], "excluded_lines": [], "functions": {"HealthCheckService.check_postgres": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [57, 58, 59, 60, 66, 67, 68], "excluded_lines": [], "start_line": 47}, "HealthCheckService.check_redis": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [83, 84, 85, 86, 87, 93, 94, 95, 102, 103], "excluded_lines": [], "start_line": 76}, "HealthCheckService.check_celery": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [113, 114, 121, 123, 124, 125, 127, 128, 135, 136, 138, 148, 149, 150], "excluded_lines": [], "start_line": 106}, "HealthCheckService.check_minio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [166, 167, 174, 175, 183, 184, 186, 196, 197, 198, 204, 205, 206], "excluded_lines": [], "start_line": 158}, "HealthCheckService.check_ollama": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [222, 223, 230, 231, 233, 235, 236, 237, 238, 241, 242, 244, 245, 255, 268, 274, 275, 276, 277, 278, 285, 286, 287, 288, 293, 294, 295, 297], "excluded_lines": [], "start_line": 214}, "HealthCheckService.check_smtp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [312, 313, 319, 322, 323, 325, 327, 339, 340, 341, 347, 348, 349, 359, 360, 361], "excluded_lines": [], "start_line": 305}, "HealthCheckService.check_all_services": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [388, 391, 392, 395, 396, 399, 400, 403, 404, 405, 408, 409, 410, 413, 414, 415, 417], "excluded_lines": [], "start_line": 368}, "HealthCheckService.log_health_check_results": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [430, 432, 433, 434, 436, 437, 438, 440, 449, 450, 452, 454, 455, 457, 459], "excluded_lines": [], "start_line": 420}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 17, 18, 22, 25, 28, 29, 30, 33, 34, 37, 38, 39, 40, 43, 46, 47, 75, 76, 105, 106, 157, 158, 213, 214, 304, 305, 368, 419, 420], "summary": {"covered_lines": 40, "num_statements": 42, "percent_covered": 95.23809523809524, "percent_covered_display": "95.24", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 95.23809523809524, "percent_statements_covered_display": "95.24"}, "missing_lines": [19, 20], "excluded_lines": [], "start_line": 1}}, "classes": {"ServiceStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "HealthCheckResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "HealthCheckService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 120, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 120, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [57, 58, 59, 60, 66, 67, 68, 83, 84, 85, 86, 87, 93, 94, 95, 102, 103, 113, 114, 121, 123, 124, 125, 127, 128, 135, 136, 138, 148, 149, 150, 166, 167, 174, 175, 183, 184, 186, 196, 197, 198, 204, 205, 206, 222, 223, 230, 231, 233, 235, 236, 237, 238, 241, 242, 244, 245, 255, 268, 274, 275, 276, 277, 278, 285, 286, 287, 288, 293, 294, 295, 297, 312, 313, 319, 322, 323, 325, 327, 339, 340, 341, 347, 348, 349, 359, 360, 361, 388, 391, 392, 395, 396, 399, 400, 403, 404, 405, 408, 409, 410, 413, 414, 415, 417, 430, 432, 433, 434, 436, 437, 438, 440, 449, 450, 452, 454, 455, 457, 459], "excluded_lines": [], "start_line": 43}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 17, 18, 22, 25, 28, 29, 30, 33, 34, 37, 38, 39, 40, 43, 46, 47, 75, 76, 105, 106, 157, 158, 213, 214, 304, 305, 368, 419, 420], "summary": {"covered_lines": 40, "num_statements": 42, "percent_covered": 95.23809523809524, "percent_covered_display": "95.24", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 95.23809523809524, "percent_statements_covered_display": "95.24"}, "missing_lines": [19, 20], "excluded_lines": [], "start_line": 1}}}, "app\\services\\incident_service.py": {"executed_lines": [3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 21, 24, 25, 27, 40, 42, 43, 44, 46, 47, 77, 98, 101, 102, 107, 116, 119, 121, 124, 125, 127, 128, 129, 186, 292, 359, 422, 445, 449, 455, 460, 493, 495, 500, 502, 503, 504, 507, 509, 513], "summary": {"covered_lines": 53, "num_statements": 199, "percent_covered": 26.633165829145728, "percent_covered_display": "26.63", "missing_lines": 146, "excluded_lines": 0, "percent_statements_covered": 26.633165829145728, "percent_statements_covered_display": "26.63"}, "missing_lines": [50, 52, 53, 54, 57, 58, 60, 61, 66, 67, 68, 71, 72, 75, 104, 111, 112, 113, 132, 133, 134, 137, 147, 148, 151, 153, 154, 158, 161, 164, 171, 180, 184, 200, 201, 204, 206, 214, 215, 217, 219, 223, 224, 227, 228, 231, 232, 235, 236, 237, 238, 239, 241, 243, 244, 245, 248, 249, 250, 252, 253, 254, 257, 260, 261, 264, 265, 267, 269, 270, 273, 276, 278, 280, 281, 283, 309, 310, 311, 313, 314, 317, 318, 319, 320, 321, 324, 325, 328, 329, 330, 332, 335, 336, 337, 339, 340, 342, 343, 344, 345, 347, 351, 362, 363, 364, 366, 367, 370, 374, 393, 394, 397, 399, 401, 404, 414, 415, 417, 424, 425, 427, 434, 435, 436, 439, 441, 443, 447, 452, 453, 457, 458, 469, 471, 472, 475, 478, 480, 481, 484, 486, 487, 488, 491, 505], "excluded_lines": [], "functions": {"IncidentService.__init__": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "IncidentService.should_spawn_incident": {"executed_lines": [40, 42, 43, 44, 46, 47], "summary": {"covered_lines": 6, "num_statements": 20, "percent_covered": 30.0, "percent_covered_display": "30.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 30.0, "percent_statements_covered_display": "30.00"}, "missing_lines": [50, 52, 53, 54, 57, 58, 60, 61, 66, 67, 68, 71, 72, 75], "excluded_lines": [], "start_line": 27}, "IncidentService.spawn_incident": {"executed_lines": [98, 101, 102, 107, 116, 119, 121, 124, 125, 127, 128, 129], "summary": {"covered_lines": 12, "num_statements": 31, "percent_covered": 38.70967741935484, "percent_covered_display": "38.71", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 38.70967741935484, "percent_statements_covered_display": "38.71"}, "missing_lines": [104, 111, 112, 113, 132, 133, 134, 137, 147, 148, 151, 153, 154, 158, 161, 164, 171, 180, 184], "excluded_lines": [], "start_line": 77}, "IncidentService.process_incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 43, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [200, 201, 204, 206, 214, 215, 217, 219, 223, 224, 227, 228, 231, 232, 235, 236, 237, 238, 239, 241, 243, 244, 245, 248, 249, 250, 252, 253, 254, 257, 260, 261, 264, 265, 267, 269, 270, 273, 276, 278, 280, 281, 283], "excluded_lines": [], "start_line": 186}, "IncidentService.resolve_incident_manually": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 27, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [309, 310, 311, 313, 314, 317, 318, 319, 320, 321, 324, 325, 328, 329, 330, 332, 335, 336, 337, 339, 340, 342, 343, 344, 345, 347, 351], "excluded_lines": [], "start_line": 292}, "IncidentService._spread_incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [362, 363, 364, 366, 367, 370, 374, 393, 394, 397, 399, 401, 404, 414, 415, 417], "excluded_lines": [], "start_line": 359}, "IncidentService._calculate_dweller_combat_power": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [424, 425, 427, 434, 435, 436, 439, 441, 443], "excluded_lines": [], "start_line": 422}, "IncidentService._calculate_raider_power": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [447], "excluded_lines": [], "start_line": 445}, "IncidentService._calculate_damage_to_dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [452, 453], "excluded_lines": [], "start_line": 449}, "IncidentService._calculate_damage_to_raiders": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [457, 458], "excluded_lines": [], "start_line": 455}, "IncidentService._award_combat_xp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [469, 471, 472, 475, 478, 480, 481, 484, 486, 487, 488, 491], "excluded_lines": [], "start_line": 460}, "IncidentService._generate_loot": {"executed_lines": [495, 500, 502, 503, 504, 507, 509], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50"}, "missing_lines": [505], "excluded_lines": [], "start_line": 493}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 21, 24, 27, 77, 186, 292, 359, 422, 445, 449, 455, 460, 493, 513], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"IncidentService": {"executed_lines": [25, 40, 42, 43, 44, 46, 47, 98, 101, 102, 107, 116, 119, 121, 124, 125, 127, 128, 129, 495, 500, 502, 503, 504, 507, 509], "summary": {"covered_lines": 26, "num_statements": 172, "percent_covered": 15.116279069767442, "percent_covered_display": "15.12", "missing_lines": 146, "excluded_lines": 0, "percent_statements_covered": 15.116279069767442, "percent_statements_covered_display": "15.12"}, "missing_lines": [50, 52, 53, 54, 57, 58, 60, 61, 66, 67, 68, 71, 72, 75, 104, 111, 112, 113, 132, 133, 134, 137, 147, 148, 151, 153, 154, 158, 161, 164, 171, 180, 184, 200, 201, 204, 206, 214, 215, 217, 219, 223, 224, 227, 228, 231, 232, 235, 236, 237, 238, 239, 241, 243, 244, 245, 248, 249, 250, 252, 253, 254, 257, 260, 261, 264, 265, 267, 269, 270, 273, 276, 278, 280, 281, 283, 309, 310, 311, 313, 314, 317, 318, 319, 320, 321, 324, 325, 328, 329, 330, 332, 335, 336, 337, 339, 340, 342, 343, 344, 345, 347, 351, 362, 363, 364, 366, 367, 370, 374, 393, 394, 397, 399, 401, 404, 414, 415, 417, 424, 425, 427, 434, 435, 436, 439, 441, 443, 447, 452, 453, 457, 458, 469, 471, 472, 475, 478, 480, 481, 484, 486, 487, 488, 491, 505], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 21, 24, 27, 77, 186, 292, 359, 422, 445, 449, 455, 460, 493, 513], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\leveling_service.py": {"executed_lines": [3, 5, 6, 7, 10, 13, 14, 33, 34, 35, 37, 38, 55, 66, 67, 69, 70, 73, 74, 75, 76, 77, 79, 81, 82, 83, 85, 87, 104, 108, 109, 112, 113, 116, 119, 121, 128, 130, 134], "summary": {"covered_lines": 39, "num_statements": 43, "percent_covered": 90.69767441860465, "percent_covered_display": "90.70", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 90.69767441860465, "percent_statements_covered_display": "90.70"}, "missing_lines": [49, 50, 51, 105], "excluded_lines": [], "functions": {"LevelingService.calculate_xp_required": {"executed_lines": [33, 34, 35], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "LevelingService.calculate_xp_for_level_range": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [49, 50, 51], "excluded_lines": [], "start_line": 38}, "LevelingService.check_level_up": {"executed_lines": [66, 67, 69, 70, 73, 74, 75, 76, 77, 79, 81, 82, 83, 85], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 55}, "LevelingService.level_up_dweller": {"executed_lines": [104, 108, 109, 112, 113, 116, 119, 121, 128, 130], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 90.9090909090909, "percent_covered_display": "90.91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "90.91"}, "missing_lines": [105], "excluded_lines": [], "start_line": 87}, "": {"executed_lines": [3, 5, 6, 7, 10, 13, 14, 37, 38, 55, 87, 134], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"LevelingService": {"executed_lines": [33, 34, 35, 66, 67, 69, 70, 73, 74, 75, 76, 77, 79, 81, 82, 83, 85, 104, 108, 109, 112, 113, 116, 119, 121, 128, 130], "summary": {"covered_lines": 27, "num_statements": 31, "percent_covered": 87.09677419354838, "percent_covered_display": "87.10", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 87.09677419354838, "percent_statements_covered_display": "87.10"}, "missing_lines": [49, 50, 51, 105], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [3, 5, 6, 7, 10, 13, 14, 37, 38, 55, 87, 134], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\minio.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 10, 11, 13, 37, 40, 41, 63, 64, 70, 80, 106, 136, 140, 154, 164, 165, 166], "summary": {"covered_lines": 24, "num_statements": 105, "percent_covered": 22.857142857142858, "percent_covered_display": "22.86", "missing_lines": 81, "excluded_lines": 0, "percent_statements_covered": 22.857142857142858, "percent_statements_covered_display": "22.86"}, "missing_lines": [42, 43, 44, 46, 47, 48, 54, 55, 56, 57, 58, 59, 61, 65, 66, 67, 68, 71, 72, 73, 74, 75, 76, 77, 78, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 99, 100, 101, 102, 103, 104, 109, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 125, 126, 127, 132, 133, 134, 137, 138, 141, 142, 143, 144, 146, 147, 148, 149, 150, 151, 152, 155, 156, 157, 159, 160, 161], "excluded_lines": [], "functions": {"MinioService.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42, 43, 44, 46, 47, 48, 54, 55, 56, 57, 58, 59, 61], "excluded_lines": [], "start_line": 41}, "MinioService._get_public_policy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [65, 66, 67, 68], "excluded_lines": [], "start_line": 64}, "MinioService._ensure_bucket_exists": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [71, 72, 73, 74, 75, 76, 77, 78], "excluded_lines": [], "start_line": 70}, "MinioService._ensure_bucket_policy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 99, 100, 101, 102, 103, 104], "excluded_lines": [], "start_line": 80}, "MinioService.upload_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [109, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 125, 126, 127, 132, 133, 134], "excluded_lines": [], "start_line": 106}, "MinioService.upload_thumbnail": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [137, 138], "excluded_lines": [], "start_line": 136}, "MinioService.download_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [141, 142, 143, 144, 146, 147, 148, 149, 150, 151, 152], "excluded_lines": [], "start_line": 140}, "MinioService.public_url": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [155, 156, 157, 159, 160, 161], "excluded_lines": [], "start_line": 154}, "get_minio_client": {"executed_lines": [166], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 165}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 10, 11, 13, 37, 40, 41, 63, 64, 70, 80, 106, 136, 140, 154, 164, 165], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"MinioService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 81, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 81, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42, 43, 44, 46, 47, 48, 54, 55, 56, 57, 58, 59, 61, 65, 66, 67, 68, 71, 72, 73, 74, 75, 76, 77, 78, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 99, 100, 101, 102, 103, 104, 109, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 125, 126, 127, 132, 133, 134, 137, 138, 141, 142, 143, 144, 146, 147, 148, 149, 150, 151, 152, 155, 156, 157, 159, 160, 161], "excluded_lines": [], "start_line": 40}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 10, 11, 13, 37, 40, 41, 63, 64, 70, 80, 106, 136, 140, 154, 164, 165, 166], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\notification_service.py": {"executed_lines": [1, 2, 4, 6, 7, 8, 11, 14, 15, 29, 44, 60, 64, 65, 87, 88, 109, 110, 120, 132, 133, 155, 156, 166, 178, 179, 200, 201, 223, 224, 232, 245], "summary": {"covered_lines": 32, "num_statements": 37, "percent_covered": 86.48648648648648, "percent_covered_display": "86.49", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 86.48648648648648, "percent_statements_covered_display": "86.49"}, "missing_lines": [75, 97, 143, 189, 211], "excluded_lines": [], "functions": {"NotificationService.create_and_send": {"executed_lines": [29, 44, 60], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "NotificationService.notify_exploration_update": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [75], "excluded_lines": [], "start_line": 65}, "NotificationService.notify_exploration_complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [97], "excluded_lines": [], "start_line": 88}, "NotificationService.notify_level_up": {"executed_lines": [120], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 110}, "NotificationService.notify_training_complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [143], "excluded_lines": [], "start_line": 133}, "NotificationService.notify_baby_born": {"executed_lines": [166], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 156}, "NotificationService.notify_resource_low": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [189], "excluded_lines": [], "start_line": 179}, "NotificationService.notify_combat_victory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [211], "excluded_lines": [], "start_line": 201}, "NotificationService.notify_radio_new_dweller": {"executed_lines": [232], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 224}, "": {"executed_lines": [1, 2, 4, 6, 7, 8, 11, 14, 15, 64, 65, 87, 88, 109, 110, 132, 133, 155, 156, 178, 179, 200, 201, 223, 224, 245], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"NotificationService": {"executed_lines": [29, 44, 60, 120, 166, 232], "summary": {"covered_lines": 6, "num_statements": 11, "percent_covered": 54.54545454545455, "percent_covered_display": "54.55", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 54.54545454545455, "percent_statements_covered_display": "54.55"}, "missing_lines": [75, 97, 143, 189, 211], "excluded_lines": [], "start_line": 11}, "": {"executed_lines": [1, 2, 4, 6, 7, 8, 11, 14, 15, 64, 65, 87, 88, 109, 110, 132, 133, 155, 156, 178, 179, 200, 201, 223, 224, 245], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\open_ai.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 13, 16, 17, 18, 20, 22, 23, 25, 26, 27, 36, 38, 41, 53, 70, 77, 93, 102, 131, 165, 166, 167], "summary": {"covered_lines": 31, "num_statements": 78, "percent_covered": 39.743589743589745, "percent_covered_display": "39.74", "missing_lines": 47, "excluded_lines": 0, "percent_statements_covered": 39.743589743589745, "percent_statements_covered_display": "39.74"}, "missing_lines": [28, 29, 30, 31, 32, 33, 34, 39, 42, 49, 51, 58, 59, 64, 65, 66, 67, 68, 71, 75, 78, 91, 94, 99, 100, 113, 115, 117, 118, 121, 125, 126, 127, 128, 129, 142, 145, 146, 147, 148, 149, 150, 151, 154, 157, 160, 162], "excluded_lines": [], "functions": {"AIService.__init__": {"executed_lines": [18, 20], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "AIService.get_model": {"executed_lines": [25, 26, 27, 36], "summary": {"covered_lines": 4, "num_statements": 11, "percent_covered": 36.36363636363637, "percent_covered_display": "36.36", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 36.36363636363637, "percent_statements_covered_display": "36.36"}, "missing_lines": [28, 29, 30, 31, 32, 33, 34], "excluded_lines": [], "start_line": 23}, "AIService.get_chatgpt_client": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [39], "excluded_lines": [], "start_line": 38}, "AIService.generate_image": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42, 49, 51], "excluded_lines": [], "start_line": 41}, "AIService.generate_audio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [58, 59, 64, 65, 66, 67, 68], "excluded_lines": [], "start_line": 53}, "AIService.generate_completion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [71, 75], "excluded_lines": [], "start_line": 70}, "AIService.generate_completion_json": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [78, 91], "excluded_lines": [], "start_line": 77}, "AIService.generate_speech_from_text": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [94, 99, 100], "excluded_lines": [], "start_line": 93}, "AIService.transcribe_audio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [113, 115, 117, 118, 121, 125, 126, 127, 128, 129], "excluded_lines": [], "start_line": 102}, "AIService.chat_completion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [142, 145, 146, 147, 148, 149, 150, 151, 154, 157, 160, 162], "excluded_lines": [], "start_line": 131}, "get_ai_service": {"executed_lines": [167], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 166}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 13, 16, 17, 22, 23, 38, 41, 53, 70, 77, 93, 102, 131, 165, 166], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AIService": {"executed_lines": [18, 20, 25, 26, 27, 36], "summary": {"covered_lines": 6, "num_statements": 53, "percent_covered": 11.320754716981131, "percent_covered_display": "11.32", "missing_lines": 47, "excluded_lines": 0, "percent_statements_covered": 11.320754716981131, "percent_statements_covered_display": "11.32"}, "missing_lines": [28, 29, 30, 31, 32, 33, 34, 39, 42, 49, 51, 58, 59, 64, 65, 66, 67, 68, 71, 75, 78, 91, 94, 99, 100, 113, 115, 117, 118, 121, 125, 126, 127, 128, 129, 142, 145, 146, 147, 148, 149, 150, 151, 154, 157, 160, 162], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 13, 16, 17, 22, 23, 38, 41, 53, 70, 77, 93, 102, 131, 165, 166, 167], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\radio_service.py": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 23, 24, 40, 42, 44, 45, 61, 64, 65, 68, 71, 72, 73, 76, 80, 81, 83, 88, 89, 91, 93, 94, 109, 110, 112, 116, 120, 122, 123, 126, 129, 130, 131, 134, 136, 138, 139, 156, 162, 164, 166, 167, 189, 190, 192, 196, 197, 200, 201, 202, 203, 206, 207, 208, 211, 212, 215, 217, 221, 223, 224, 239, 240, 242, 255, 257, 258, 270, 273, 274, 277, 279, 291], "summary": {"covered_lines": 86, "num_statements": 94, "percent_covered": 91.48936170212765, "percent_covered_display": "91.49", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 91.48936170212765, "percent_statements_covered_display": "91.49"}, "missing_lines": [62, 84, 85, 113, 117, 193, 194, 243], "excluded_lines": [], "functions": {"RadioService.get_radio_rooms": {"executed_lines": [40, 42], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "RadioService.calculate_recruitment_rate": {"executed_lines": [61, 64, 65, 68, 71, 72, 73, 76, 80, 81, 83, 88, 89, 91], "summary": {"covered_lines": 14, "num_statements": 17, "percent_covered": 82.3529411764706, "percent_covered_display": "82.35", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 82.3529411764706, "percent_statements_covered_display": "82.35"}, "missing_lines": [62, 84, 85], "excluded_lines": [], "start_line": 45}, "RadioService.check_for_recruitment": {"executed_lines": [109, 110, 112, 116, 120, 122, 123, 126, 129, 130, 131, 134, 136], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 86.66666666666667, "percent_covered_display": "86.67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 86.66666666666667, "percent_statements_covered_display": "86.67"}, "missing_lines": [113, 117], "excluded_lines": [], "start_line": 94}, "RadioService.recruit_dweller": {"executed_lines": [156, 162, 164], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 139}, "RadioService.manual_recruit": {"executed_lines": [189, 190, 192, 196, 197, 200, 201, 202, 203, 206, 207, 208, 211, 212, 215, 217, 221], "summary": {"covered_lines": 17, "num_statements": 19, "percent_covered": 89.47368421052632, "percent_covered_display": "89.47", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 89.47368421052632, "percent_statements_covered_display": "89.47"}, "missing_lines": [193, 194], "excluded_lines": [], "start_line": 167}, "RadioService.get_recruitment_stats": {"executed_lines": [239, 240, 242, 255, 257, 258, 270, 273, 274, 277, 279], "summary": {"covered_lines": 11, "num_statements": 12, "percent_covered": 91.66666666666667, "percent_covered_display": "91.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 91.66666666666667, "percent_statements_covered_display": "91.67"}, "missing_lines": [243], "excluded_lines": [], "start_line": 224}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 23, 24, 44, 45, 93, 94, 138, 139, 166, 167, 223, 224, 291], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RadioService": {"executed_lines": [40, 42, 61, 64, 65, 68, 71, 72, 73, 76, 80, 81, 83, 88, 89, 91, 109, 110, 112, 116, 120, 122, 123, 126, 129, 130, 131, 134, 136, 156, 162, 164, 189, 190, 192, 196, 197, 200, 201, 202, 203, 206, 207, 208, 211, 212, 215, 217, 221, 239, 240, 242, 255, 257, 258, 270, 273, 274, 277, 279], "summary": {"covered_lines": 60, "num_statements": 68, "percent_covered": 88.23529411764706, "percent_covered_display": "88.24", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 88.23529411764706, "percent_statements_covered_display": "88.24"}, "missing_lines": [62, 84, 85, 113, 117, 193, 194, 243], "excluded_lines": [], "start_line": 20}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 23, 24, 44, 45, 93, 94, 138, 139, 166, 167, 223, 224, 291], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\relationship_service.py": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 22, 25, 26, 42, 44, 45, 62, 63, 64, 67, 71, 72, 74, 75, 93, 94, 98, 99, 102, 104, 105, 111, 113, 116, 118, 119, 138, 139, 140, 141, 143, 144, 147, 149, 152, 154, 155, 157, 158, 177, 178, 179, 180, 182, 183, 184, 185, 187, 190, 194, 195, 196, 199, 200, 203, 204, 205, 206, 207, 213, 214, 216, 217, 229, 230, 231, 232, 233, 236, 237, 238, 239, 242, 243, 246, 247, 248, 249, 250, 260, 265, 267, 269, 270, 349, 350, 362, 363, 366, 367, 368, 369, 372, 373, 376, 377, 378, 381, 384, 391, 401, 402, 418, 419, 422], "summary": {"covered_lines": 119, "num_statements": 165, "percent_covered": 72.12121212121212, "percent_covered_display": "72.12", "missing_lines": 46, "excluded_lines": 0, "percent_statements_covered": 72.12121212121212, "percent_statements_covered_display": "72.12"}, "missing_lines": [95, 96, 106, 108, 208, 209, 210, 211, 251, 253, 254, 255, 256, 257, 285, 286, 287, 291, 294, 300, 301, 303, 304, 305, 308, 309, 311, 312, 313, 316, 317, 320, 329, 331, 332, 335, 336, 337, 338, 339, 340, 341, 342, 343, 346, 347], "excluded_lines": [], "functions": {"RelationshipService.get_relationship": {"executed_lines": [42], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "RelationshipService.get_or_create_relationship": {"executed_lines": [62, 63, 64, 67, 71, 72], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "RelationshipService.increase_affinity": {"executed_lines": [93, 94, 98, 99, 102, 104, 105, 111, 113, 116], "summary": {"covered_lines": 10, "num_statements": 14, "percent_covered": 71.42857142857143, "percent_covered_display": "71.43", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71.43"}, "missing_lines": [95, 96, 106, 108], "excluded_lines": [], "start_line": 75}, "RelationshipService.initiate_romance": {"executed_lines": [138, 139, 140, 141, 143, 144, 147, 149, 152, 154, 155], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 119}, "RelationshipService.make_partners": {"executed_lines": [177, 178, 179, 180, 182, 183, 184, 185, 187, 190, 194, 195, 196, 199, 200, 203, 204, 205, 206, 207, 213, 214], "summary": {"covered_lines": 22, "num_statements": 26, "percent_covered": 84.61538461538461, "percent_covered_display": "84.62", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 84.61538461538461, "percent_statements_covered_display": "84.62"}, "missing_lines": [208, 209, 210, 211], "excluded_lines": [], "start_line": 158}, "RelationshipService.break_up": {"executed_lines": [229, 230, 231, 232, 233, 236, 237, 238, 239, 242, 243, 246, 247, 248, 249, 250, 260, 265, 267], "summary": {"covered_lines": 19, "num_statements": 25, "percent_covered": 76.0, "percent_covered_display": "76.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 76.0, "percent_statements_covered_display": "76.00"}, "missing_lines": [251, 253, 254, 255, 256, 257], "excluded_lines": [], "start_line": 217}, "RelationshipService.quick_pair_dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 32, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 32, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [285, 286, 287, 291, 294, 300, 301, 303, 304, 305, 308, 309, 311, 312, 313, 316, 317, 320, 329, 331, 332, 335, 336, 337, 338, 339, 340, 341, 342, 343, 346, 347], "excluded_lines": [], "start_line": 270}, "RelationshipService.calculate_compatibility_score": {"executed_lines": [362, 363, 366, 367, 368, 369, 372, 373, 376, 377, 378, 381, 384, 391], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 350}, "RelationshipService.calculate_compatibility": {"executed_lines": [418, 419], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 402}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 22, 25, 26, 44, 45, 74, 75, 118, 119, 157, 158, 216, 217, 269, 270, 349, 350, 401, 402, 422], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RelationshipService": {"executed_lines": [42, 62, 63, 64, 67, 71, 72, 93, 94, 98, 99, 102, 104, 105, 111, 113, 116, 138, 139, 140, 141, 143, 144, 147, 149, 152, 154, 155, 177, 178, 179, 180, 182, 183, 184, 185, 187, 190, 194, 195, 196, 199, 200, 203, 204, 205, 206, 207, 213, 214, 229, 230, 231, 232, 233, 236, 237, 238, 239, 242, 243, 246, 247, 248, 249, 250, 260, 265, 267, 362, 363, 366, 367, 368, 369, 372, 373, 376, 377, 378, 381, 384, 391, 418, 419], "summary": {"covered_lines": 85, "num_statements": 131, "percent_covered": 64.8854961832061, "percent_covered_display": "64.89", "missing_lines": 46, "excluded_lines": 0, "percent_statements_covered": 64.8854961832061, "percent_statements_covered_display": "64.89"}, "missing_lines": [95, 96, 106, 108, 208, 209, 210, 211, 251, 253, 254, 255, 256, 257, 285, 286, 287, 291, 294, 300, 301, 303, 304, 305, 308, 309, 311, 312, 313, 316, 317, 320, 329, 331, 332, 335, 336, 337, 338, 339, 340, 341, 342, 343, 346, 347], "excluded_lines": [], "start_line": 22}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 22, 25, 26, 44, 45, 74, 75, 118, 119, 157, 158, 216, 217, 269, 270, 349, 350, 401, 402, 422], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\resource_manager.py": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 12, 13, 15, 18, 19, 20, 23, 24, 27, 28, 31, 34, 35, 37, 46, 49, 53, 55, 69, 72, 73, 76, 77, 80, 83, 84, 87, 89, 98, 102, 105, 106, 108, 114, 118, 120, 121, 128, 129, 131, 132, 134, 136, 138, 139, 140, 142, 147, 149, 150, 152, 153, 154, 155, 156, 157, 158, 163, 164, 168, 174, 175, 177, 179, 185, 186, 187, 188, 189, 191, 193, 195, 201, 202, 210, 211, 213, 217, 218, 221, 226, 229, 232, 233, 238, 240], "summary": {"covered_lines": 93, "num_statements": 103, "percent_covered": 90.29126213592232, "percent_covered_display": "90.29", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 90.29126213592232, "percent_statements_covered_display": "90.29"}, "missing_lines": [122, 125, 159, 160, 161, 214, 234, 235, 236, 247], "excluded_lines": [], "functions": {"ResourceManager.__init__": {"executed_lines": [35], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "ResourceManager.process_vault_resources": {"executed_lines": [46, 49, 53], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 37}, "ResourceManager._calculate_net_resource_change": {"executed_lines": [69, 72, 73, 76, 77, 80, 83, 84, 87, 89], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 55}, "ResourceManager._calculate_consumption": {"executed_lines": [102, 105, 106, 108], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 98}, "ResourceManager._calculate_production": {"executed_lines": [118, 120, 121, 128, 129, 131, 132, 134], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [122, 125], "excluded_lines": [], "start_line": 114}, "ResourceManager._calculate_room_production": {"executed_lines": [138, 139, 140, 142, 147], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 136}, "ResourceManager._apply_room_production": {"executed_lines": [152, 153, 154, 155, 156, 157, 158], "summary": {"covered_lines": 7, "num_statements": 10, "percent_covered": 70.0, "percent_covered_display": "70.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 70.0, "percent_statements_covered_display": "70.00"}, "missing_lines": [159, 160, 161], "excluded_lines": [], "start_line": 150}, "ResourceManager._apply_resource_changes": {"executed_lines": [168], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 164}, "ResourceManager._check_resource_warnings": {"executed_lines": [177, 179, 185, 186, 187, 188, 189, 191], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 175}, "ResourceManager._log_resource_changes": {"executed_lines": [195], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 193}, "ResourceManager._get_vault_data": {"executed_lines": [210, 211, 213, 217, 218, 221, 226, 229, 232, 233, 238], "summary": {"covered_lines": 11, "num_statements": 15, "percent_covered": 73.33333333333333, "percent_covered_display": "73.33", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 73.33333333333333, "percent_statements_covered_display": "73.33"}, "missing_lines": [214, 234, 235, 236], "excluded_lines": [], "start_line": 202}, "ResourceManager.check_resource_availability": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [247], "excluded_lines": [], "start_line": 240}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 12, 13, 15, 18, 19, 20, 23, 24, 27, 28, 31, 34, 37, 55, 98, 114, 136, 149, 150, 163, 164, 174, 175, 193, 201, 202, 240], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ResourceManager": {"executed_lines": [35, 46, 49, 53, 69, 72, 73, 76, 77, 80, 83, 84, 87, 89, 102, 105, 106, 108, 118, 120, 121, 128, 129, 131, 132, 134, 138, 139, 140, 142, 147, 152, 153, 154, 155, 156, 157, 158, 168, 177, 179, 185, 186, 187, 188, 189, 191, 195, 210, 211, 213, 217, 218, 221, 226, 229, 232, 233, 238], "summary": {"covered_lines": 59, "num_statements": 69, "percent_covered": 85.5072463768116, "percent_covered_display": "85.51", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 85.5072463768116, "percent_statements_covered_display": "85.51"}, "missing_lines": [122, 125, 159, 160, 161, 214, 234, 235, 236, 247], "excluded_lines": [], "start_line": 31}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 12, 13, 15, 18, 19, 20, 23, 24, 27, 28, 31, 34, 37, 55, 98, 114, 136, 149, 150, 163, 164, 174, 175, 193, 201, 202, 240], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\training_service.py": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 23, 24, 26, 27, 48, 49, 51, 54, 55, 57, 59, 77, 78, 81, 82, 86, 87, 90, 93, 94, 96, 98, 99, 103, 104, 107, 109, 132, 133, 137, 139, 140, 144, 145, 151, 152, 154, 159, 162, 163, 176, 177, 178, 181, 183, 187, 192, 194, 234, 255, 256, 259, 263, 264, 265, 269, 270, 271, 273, 274, 277, 278, 279, 280, 283, 285, 287, 288, 290, 295, 297, 319, 320, 323, 327, 328, 329, 333, 334, 335, 338, 340, 342, 343, 345, 349, 353], "summary": {"covered_lines": 101, "num_statements": 130, "percent_covered": 77.6923076923077, "percent_covered_display": "77.69", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 77.6923076923077, "percent_statements_covered_display": "77.69"}, "missing_lines": [83, 91, 105, 134, 141, 146, 147, 148, 155, 156, 212, 213, 215, 218, 219, 222, 223, 224, 227, 228, 229, 230, 232, 257, 260, 266, 321, 324, 330], "excluded_lines": [], "functions": {"TrainingService.__init__": {"executed_lines": [24], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "TrainingService.calculate_training_duration": {"executed_lines": [48, 49, 51, 54, 55, 57], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "TrainingService.can_start_training": {"executed_lines": [77, 78, 81, 82, 86, 87, 90, 93, 94, 96, 98, 99, 103, 104, 107], "summary": {"covered_lines": 15, "num_statements": 18, "percent_covered": 83.33333333333333, "percent_covered_display": "83.33", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83.33"}, "missing_lines": [83, 91, 105], "excluded_lines": [], "start_line": 59}, "TrainingService.start_training": {"executed_lines": [132, 133, 137, 139, 140, 144, 145, 151, 152, 154, 159, 162, 163, 176, 177, 178, 181, 183, 187, 192], "summary": {"covered_lines": 20, "num_statements": 27, "percent_covered": 74.07407407407408, "percent_covered_display": "74.07", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 74.07407407407408, "percent_statements_covered_display": "74.07"}, "missing_lines": [134, 141, 146, 147, 148, 155, 156], "excluded_lines": [], "start_line": 109}, "TrainingService.update_training_progress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [212, 213, 215, 218, 219, 222, 223, 224, 227, 228, 229, 230, 232], "excluded_lines": [], "start_line": 194}, "TrainingService.complete_training": {"executed_lines": [255, 256, 259, 263, 264, 265, 269, 270, 271, 273, 274, 277, 278, 279, 280, 283, 285, 287, 288, 290, 295], "summary": {"covered_lines": 21, "num_statements": 24, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50"}, "missing_lines": [257, 260, 266], "excluded_lines": [], "start_line": 234}, "TrainingService.cancel_training": {"executed_lines": [319, 320, 323, 327, 328, 329, 333, 334, 335, 338, 340, 342, 343, 345, 349], "summary": {"covered_lines": 15, "num_statements": 18, "percent_covered": 83.33333333333333, "percent_covered_display": "83.33", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83.33"}, "missing_lines": [321, 324, 330], "excluded_lines": [], "start_line": 297}, "": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 23, 26, 27, 59, 109, 194, 234, 297, 353], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TrainingService": {"executed_lines": [24, 48, 49, 51, 54, 55, 57, 77, 78, 81, 82, 86, 87, 90, 93, 94, 96, 98, 99, 103, 104, 107, 132, 133, 137, 139, 140, 144, 145, 151, 152, 154, 159, 162, 163, 176, 177, 178, 181, 183, 187, 192, 255, 256, 259, 263, 264, 265, 269, 270, 271, 273, 274, 277, 278, 279, 280, 283, 285, 287, 288, 290, 295, 319, 320, 323, 327, 328, 329, 333, 334, 335, 338, 340, 342, 343, 345, 349], "summary": {"covered_lines": 78, "num_statements": 107, "percent_covered": 72.89719626168224, "percent_covered_display": "72.90", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 72.89719626168224, "percent_statements_covered_display": "72.90"}, "missing_lines": [83, 91, 105, 134, 141, 146, 147, 148, 155, 156, 212, 213, 215, 218, 219, 222, 223, 224, 227, 228, 229, 230, 232, 257, 260, 266, 321, 324, 330], "excluded_lines": [], "start_line": 20}, "": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 23, 26, 27, 59, 109, 194, 234, 297, 353], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\vault_service.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 29, 30, 31, 33, 34, 35, 36, 39, 40, 43, 44, 47, 48, 50, 59, 61, 69, 70, 71, 74, 75, 76, 79, 80, 84, 87, 88, 89, 90, 97, 98, 101, 102, 103, 106, 107, 108, 117, 120, 122, 124, 136, 137, 140, 141, 143, 145, 146, 147, 150, 152, 154, 157, 158, 160, 161, 164, 165, 166, 167, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 184, 185, 189, 192, 193, 194, 196, 198, 208, 210, 219, 220, 221, 224, 229, 232, 262, 270, 271, 273, 275, 277, 319, 321, 323, 326, 332, 333, 337, 361, 362, 363, 366, 367, 368, 373, 378, 379, 380, 381, 388, 393, 396, 399, 401, 403, 413], "summary": {"covered_lines": 137, "num_statements": 179, "percent_covered": 76.53631284916202, "percent_covered_display": "76.54", "missing_lines": 42, "excluded_lines": 0, "percent_statements_covered": 76.53631284916202, "percent_statements_covered_display": "76.54"}, "missing_lines": [186, 187, 233, 243, 244, 245, 246, 247, 251, 256, 258, 259, 260, 279, 282, 283, 284, 285, 286, 289, 291, 292, 294, 296, 297, 299, 302, 303, 304, 310, 311, 312, 314, 315, 316, 317, 327, 330, 334, 335, 405, 409], "excluded_lines": [], "functions": {"VaultService.__init__": {"executed_lines": [30, 31], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "VaultService._prepare_room_data": {"executed_lines": [35, 36, 39, 40, 43, 44, 47, 48, 50, 59], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "VaultService._prepare_initial_rooms": {"executed_lines": [69, 70, 71, 74, 75, 76, 79, 80, 84, 87, 88, 89, 90, 97, 98, 101, 102, 103, 106, 107, 108, 117, 120, 122], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 61}, "VaultService._create_initial_rooms": {"executed_lines": [136, 137, 140, 141, 143, 145, 146, 147, 150, 152, 154, 157, 158, 160, 161, 164, 165, 166, 167, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 184, 185, 189, 192, 193, 194, 196], "summary": {"covered_lines": 36, "num_statements": 38, "percent_covered": 94.73684210526316, "percent_covered_display": "94.74", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 94.73684210526316, "percent_statements_covered_display": "94.74"}, "missing_lines": [186, 187], "excluded_lines": [], "start_line": 124}, "VaultService._create_initial_dwellers": {"executed_lines": [208, 210, 219, 220, 221, 224, 229, 232], "summary": {"covered_lines": 8, "num_statements": 19, "percent_covered": 42.10526315789474, "percent_covered_display": "42.11", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 42.10526315789474, "percent_statements_covered_display": "42.11"}, "missing_lines": [233, 243, 244, 245, 246, 247, 251, 256, 258, 259, 260], "excluded_lines": [], "start_line": 198}, "VaultService._start_training_sessions": {"executed_lines": [270, 271, 273, 275, 277], "summary": {"covered_lines": 5, "num_statements": 28, "percent_covered": 17.857142857142858, "percent_covered_display": "17.86", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 17.857142857142858, "percent_statements_covered_display": "17.86"}, "missing_lines": [279, 282, 283, 284, 285, 286, 289, 291, 292, 294, 296, 297, 299, 302, 303, 304, 310, 311, 312, 314, 315, 316, 317], "excluded_lines": [], "start_line": 262}, "VaultService._assign_initial_objectives": {"executed_lines": [321, 323, 326, 332, 333], "summary": {"covered_lines": 5, "num_statements": 9, "percent_covered": 55.55555555555556, "percent_covered_display": "55.56", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 55.55555555555556, "percent_statements_covered_display": "55.56"}, "missing_lines": [327, 330, 334, 335], "excluded_lines": [], "start_line": 319}, "VaultService.initiate_vault": {"executed_lines": [361, 362, 363, 366, 367, 368, 373, 378, 379, 380, 381, 388, 393, 396, 399, 401], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 337}, "VaultService.update_vault_resources": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [405, 409], "excluded_lines": [], "start_line": 403}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 29, 33, 34, 61, 124, 198, 262, 319, 337, 403, 413], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"VaultService": {"executed_lines": [30, 31, 35, 36, 39, 40, 43, 44, 47, 48, 50, 59, 69, 70, 71, 74, 75, 76, 79, 80, 84, 87, 88, 89, 90, 97, 98, 101, 102, 103, 106, 107, 108, 117, 120, 122, 136, 137, 140, 141, 143, 145, 146, 147, 150, 152, 154, 157, 158, 160, 161, 164, 165, 166, 167, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 184, 185, 189, 192, 193, 194, 196, 208, 210, 219, 220, 221, 224, 229, 232, 270, 271, 273, 275, 277, 321, 323, 326, 332, 333, 361, 362, 363, 366, 367, 368, 373, 378, 379, 380, 381, 388, 393, 396, 399, 401], "summary": {"covered_lines": 106, "num_statements": 148, "percent_covered": 71.62162162162163, "percent_covered_display": "71.62", "missing_lines": 42, "excluded_lines": 0, "percent_statements_covered": 71.62162162162163, "percent_statements_covered_display": "71.62"}, "missing_lines": [186, 187, 233, 243, 244, 245, 246, 247, 251, 256, 258, 259, 260, 279, 282, 283, 284, 285, 286, 289, 291, 292, 294, 296, 297, 299, 302, 303, 304, 310, 311, 312, 314, 315, 316, 317, 327, 330, 334, 335, 405, 409], "excluded_lines": [], "start_line": 26}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 29, 33, 34, 61, 124, 198, 262, 319, 337, 403, 413], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\websocket_manager.py": {"executed_lines": [1, 2, 4, 7, 10, 12, 14, 16, 23, 32, 34, 48, 53, 61, 71, 86, 96], "summary": {"covered_lines": 17, "num_statements": 58, "percent_covered": 29.310344827586206, "percent_covered_display": "29.31", "missing_lines": 41, "excluded_lines": 0, "percent_statements_covered": 29.310344827586206, "percent_statements_covered_display": "29.31"}, "missing_lines": [18, 19, 20, 21, 25, 26, 27, 29, 30, 36, 37, 38, 39, 40, 42, 45, 46, 50, 51, 55, 56, 57, 58, 59, 63, 64, 65, 66, 68, 69, 73, 74, 75, 76, 77, 78, 79, 80, 83, 84, 88], "excluded_lines": [], "functions": {"ConnectionManager.__init__": {"executed_lines": [12, 14], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "ConnectionManager.connect": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [18, 19, 20, 21], "excluded_lines": [], "start_line": 16}, "ConnectionManager.disconnect": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [25, 26, 27, 29, 30], "excluded_lines": [], "start_line": 23}, "ConnectionManager.send_personal_message": {"executed_lines": [34], "summary": {"covered_lines": 1, "num_statements": 9, "percent_covered": 11.11111111111111, "percent_covered_display": "11.11", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 11.11111111111111, "percent_statements_covered_display": "11.11"}, "missing_lines": [36, 37, 38, 39, 40, 42, 45, 46], "excluded_lines": [], "start_line": 32}, "ConnectionManager.broadcast_to_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [50, 51], "excluded_lines": [], "start_line": 48}, "ConnectionManager.connect_chat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [55, 56, 57, 58, 59], "excluded_lines": [], "start_line": 53}, "ConnectionManager.disconnect_chat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [63, 64, 65, 66, 68, 69], "excluded_lines": [], "start_line": 61}, "ConnectionManager.send_chat_message": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [73, 74, 75, 76, 77, 78, 79, 80, 83, 84], "excluded_lines": [], "start_line": 71}, "ConnectionManager.send_typing_indicator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [88], "excluded_lines": [], "start_line": 86}, "": {"executed_lines": [1, 2, 4, 7, 10, 16, 23, 32, 48, 53, 61, 71, 86, 96], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ConnectionManager": {"executed_lines": [12, 14, 34], "summary": {"covered_lines": 3, "num_statements": 44, "percent_covered": 6.818181818181818, "percent_covered_display": "6.82", "missing_lines": 41, "excluded_lines": 0, "percent_statements_covered": 6.818181818181818, "percent_statements_covered_display": "6.82"}, "missing_lines": [18, 19, 20, 21, 25, 26, 27, 29, 30, 36, 37, 38, 39, 40, 42, 45, 46, 50, 51, 55, 56, 57, 58, 59, 63, 64, 65, 66, 68, 69, 73, 74, 75, 76, 77, 78, 79, 80, 83, 84, 88], "excluded_lines": [], "start_line": 7}, "": {"executed_lines": [1, 2, 4, 7, 10, 16, 23, 32, 48, 53, 61, 71, 86, 96], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\dwellers.py": {"executed_lines": [1, 2, 4, 6, 7, 9, 12, 14, 17, 19, 20, 23, 26, 27, 28, 29, 30, 31], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"get_gender_based_name": {"executed_lines": [14], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "get_stats_by_rarity": {"executed_lines": [19, 20], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "create_random_common_dweller": {"executed_lines": [26, 27, 28, 29, 30, 31], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [1, 2, 4, 6, 7, 9, 12, 17, 23], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 4, 6, 7, 9, 12, 14, 17, 19, 20, 23, 26, 27, 28, 29, 30, 31], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\exceptions.py": {"executed_lines": [1, 2, 4, 5, 7, 10, 18, 24, 34, 41, 42, 45, 54, 64, 72, 73, 76, 84, 89, 92, 100, 109, 117, 122, 125, 130, 133, 136, 144, 151, 160, 166, 167, 168, 169, 172, 180, 187, 191, 195, 199], "summary": {"covered_lines": 41, "num_statements": 54, "percent_covered": 75.92592592592592, "percent_covered_display": "75.93", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 75.92592592592592, "percent_statements_covered_display": "75.93"}, "missing_lines": [21, 60, 61, 105, 106, 145, 146, 147, 148, 181, 182, 183, 184], "excluded_lines": [], "functions": {"AccessDeniedException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [21], "excluded_lines": [], "start_line": 18}, "ResourceNotFoundException.__init__": {"executed_lines": [41, 42], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "ResourceAlreadyExistsException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [60, 61], "excluded_lines": [], "start_line": 54}, "ResourceConflictException.__init__": {"executed_lines": [73], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 72}, "ContentNoChangeException.__init__": {"executed_lines": [89], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 84}, "InvalidItemAssignmentException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [105, 106], "excluded_lines": [], "start_line": 100}, "InvalidVaultTransferException.__init__": {"executed_lines": [122], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 117}, "VaultOperationException.__init__": {"executed_lines": [133], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 130}, "NoSpaceAvailableException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [145, 146, 147, 148], "excluded_lines": [], "start_line": 144}, "InsufficientResourcesException.__init__": {"executed_lines": [166, 167, 168, 169], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 160}, "UniqueRoomViolationException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [181, 182, 183, 184], "excluded_lines": [], "start_line": 180}, "": {"executed_lines": [1, 2, 4, 5, 7, 10, 18, 24, 34, 45, 54, 64, 72, 76, 84, 92, 100, 109, 117, 125, 130, 136, 144, 151, 160, 172, 180, 187, 191, 195, 199], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AccessDeniedException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [21], "excluded_lines": [], "start_line": 10}, "ResourceNotFoundException": {"executed_lines": [41, 42], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "ResourceAlreadyExistsException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [60, 61], "excluded_lines": [], "start_line": 45}, "ResourceConflictException": {"executed_lines": [73], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 64}, "ContentNoChangeException": {"executed_lines": [89], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 76}, "InvalidItemAssignmentException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [105, 106], "excluded_lines": [], "start_line": 92}, "InvalidVaultTransferException": {"executed_lines": [122], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 109}, "VaultOperationException": {"executed_lines": [133], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 125}, "NoSpaceAvailableException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [145, 146, 147, 148], "excluded_lines": [], "start_line": 136}, "InsufficientResourcesException": {"executed_lines": [166, 167, 168, 169], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 151}, "UniqueRoomViolationException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [181, 182, 183, 184], "excluded_lines": [], "start_line": 172}, "MinioError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 187}, "BucketNotFoundError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 191}, "FileUploadError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 195}, "FileDownloadError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 199}, "": {"executed_lines": [1, 2, 4, 5, 7, 10, 18, 24, 34, 45, 54, 64, 72, 76, 84, 92, 100, 109, 117, 125, 130, 136, 144, 151, 160, 172, 180, 187, 191, 195, 199], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\image_processing.py": {"executed_lines": [1, 2, 4, 5, 7, 10, 23], "summary": {"covered_lines": 7, "num_statements": 20, "percent_covered": 35.0, "percent_covered_display": "35.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 35.0, "percent_statements_covered_display": "35.00"}, "missing_lines": [12, 13, 14, 15, 16, 17, 18, 20, 25, 26, 27, 28, 29], "excluded_lines": [], "functions": {"image_url_to_bytes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [12, 13, 14, 15, 16, 17, 18, 20], "excluded_lines": [], "start_line": 10}, "generate_thumbnail": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [25, 26, 27, 28, 29], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [1, 2, 4, 5, 7, 10, 23], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 7, 10, 23], "summary": {"covered_lines": 7, "num_statements": 20, "percent_covered": 35.0, "percent_covered_display": "35.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 35.0, "percent_statements_covered_display": "35.00"}, "missing_lines": [12, 13, 14, 15, 16, 17, 18, 20, 25, 26, 27, 28, 29], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\load_quests.py": {"executed_lines": [1, 2, 3, 5, 7, 10, 20, 21, 22, 23, 27, 30, 31, 34, 45, 50, 52, 53, 54, 56, 57, 58, 59, 60, 63, 64, 66, 67], "summary": {"covered_lines": 28, "num_statements": 31, "percent_covered": 90.3225806451613, "percent_covered_display": "90.32", "missing_lines": 3, "excluded_lines": 6, "percent_statements_covered": 90.3225806451613, "percent_statements_covered_display": "90.32"}, "missing_lines": [24, 47, 48], "excluded_lines": [70, 71, 73, 74, 75, 76], "functions": {"load_quest_chain_from_json": {"executed_lines": [20, 21, 22, 23, 27, 30, 31], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50"}, "missing_lines": [24], "excluded_lines": [], "start_line": 10}, "load_all_quest_chain_files": {"executed_lines": [45, 50, 52, 53, 54, 56, 57, 58, 59, 60, 63, 64, 66, 67], "summary": {"covered_lines": 14, "num_statements": 16, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50"}, "missing_lines": [47, 48], "excluded_lines": [], "start_line": 34}, "": {"executed_lines": [1, 2, 3, 5, 7, 10, 34], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 6, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [70, 71, 73, 74, 75, 76], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 5, 7, 10, 20, 21, 22, 23, 27, 30, 31, 34, 45, 50, 52, 53, 54, 56, 57, 58, 59, 60, 63, 64, 66, 67], "summary": {"covered_lines": 28, "num_statements": 31, "percent_covered": 90.3225806451613, "percent_covered_display": "90.32", "missing_lines": 3, "excluded_lines": 6, "percent_statements_covered": 90.3225806451613, "percent_statements_covered_display": "90.32"}, "missing_lines": [24, 47, 48], "excluded_lines": [70, 71, 73, 74, 75, 76], "start_line": 1}}}, "app\\utils\\partial.py": {"executed_lines": [5, 6, 7, 9, 10, 12, 15, 21, 22, 24, 25, 27, 28, 29, 30, 31, 33, 36, 47], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 95.0, "percent_covered_display": "95.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95.00"}, "missing_lines": [34], "excluded_lines": [], "functions": {"optional": {"executed_lines": [21, 22, 24, 47], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "optional.wrapper": {"executed_lines": [25, 27, 33, 36], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [34], "excluded_lines": [], "start_line": 24}, "optional.wrapper.make_field_optional": {"executed_lines": [28, 29, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "": {"executed_lines": [5, 6, 7, 9, 10, 12, 15], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [5, 6, 7, 9, 10, 12, 15, 21, 22, 24, 25, 27, 28, 29, 30, 31, 33, 36, 47], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 95.0, "percent_covered_display": "95.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95.00"}, "missing_lines": [34], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\seed_objectives.py": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 13, 16, 27, 28, 31, 32, 33, 36, 37, 38, 39, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 53, 56, 57, 60, 61, 62, 63, 67, 68, 69, 71, 72, 73, 75, 76, 77, 78, 79, 80], "summary": {"covered_lines": 47, "num_statements": 48, "percent_covered": 97.91666666666667, "percent_covered_display": "97.92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.91666666666667, "percent_statements_covered_display": "97.92"}, "missing_lines": [29], "excluded_lines": [], "functions": {"seed_objectives_from_json": {"executed_lines": [27, 28, 31, 32, 33, 36, 37, 38, 39, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 53, 56, 57, 60, 61, 62, 63, 67, 68, 69, 71, 72, 73, 75, 76, 77, 78, 79, 80], "summary": {"covered_lines": 38, "num_statements": 39, "percent_covered": 97.43589743589743, "percent_covered_display": "97.44", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.43589743589743, "percent_statements_covered_display": "97.44"}, "missing_lines": [29], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 13, 16], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 13, 16, 27, 28, 31, 32, 33, 36, 37, 38, 39, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 53, 56, 57, 60, 61, 62, 63, 67, 68, 69, 71, 72, 73, 75, 76, 77, 78, 79, 80], "summary": {"covered_lines": 47, "num_statements": 48, "percent_covered": 97.91666666666667, "percent_covered_display": "97.92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.91666666666667, "percent_statements_covered_display": "97.92"}, "missing_lines": [29], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\seed_quests.py": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 13, 16, 27, 29, 32, 33, 34, 36, 39, 40, 43, 44, 46, 47, 56, 57, 58, 60, 61, 62, 64, 65, 66, 67, 68, 69], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"seed_quests_from_json": {"executed_lines": [27, 29, 32, 33, 34, 36, 39, 40, 43, 44, 46, 47, 56, 57, 58, 60, 61, 62, 64, 65, 66, 67, 68, 69], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 13, 16], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 13, 16, 27, 29, 32, 33, 34, 36, 39, 40, 43, 44, 46, 47, 56, 57, 58, 60, 61, 62, 64, 65, 66, 67, 68, 69], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\static_data.py": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 38, 39, 44, 45, 55, 56, 61, 62, 63, 64, 65, 67, 78, 79, 81, 82, 85, 86, 88, 90, 92, 93, 105, 106, 122, 123, 124, 125, 126, 127, 133], "summary": {"covered_lines": 56, "num_statements": 97, "percent_covered": 57.7319587628866, "percent_covered_display": "57.73", "missing_lines": 41, "excluded_lines": 0, "percent_statements_covered": 57.7319587628866, "percent_statements_covered_display": "57.73"}, "missing_lines": [32, 33, 34, 35, 36, 40, 41, 42, 46, 47, 48, 49, 50, 51, 52, 53, 57, 58, 59, 95, 96, 98, 99, 100, 101, 102, 103, 108, 109, 110, 111, 112, 113, 114, 115, 118, 119, 120, 128, 129, 130], "excluded_lines": [], "functions": {"StaticGameData.__init__": {"executed_lines": [22, 23, 24, 25, 26, 27, 28], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "StaticGameData.dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [32, 33, 34, 35, 36], "excluded_lines": [], "start_line": 31}, "StaticGameData.junk_items": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40, 41, 42], "excluded_lines": [], "start_line": 39}, "StaticGameData.outfits": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [46, 47, 48, 49, 50, 51, 52, 53], "excluded_lines": [], "start_line": 45}, "StaticGameData.weapons": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [57, 58, 59], "excluded_lines": [], "start_line": 56}, "StaticGameData.rooms": {"executed_lines": [63, 64, 65], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 62}, "StaticGameData.get_buildable_rooms": {"executed_lines": [78, 79, 81, 82, 85, 86, 88, 90], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 67}, "StaticGameData.quests": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [95, 96, 98, 99, 100, 101, 102, 103], "excluded_lines": [], "start_line": 93}, "StaticGameData.objectives": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [108, 109, 110, 111, 112, 113, 114, 115, 118, 119, 120], "excluded_lines": [], "start_line": 106}, "StaticGameData.load_data": {"executed_lines": [124, 125, 126, 127], "summary": {"covered_lines": 4, "num_statements": 7, "percent_covered": 57.142857142857146, "percent_covered_display": "57.14", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57.14"}, "missing_lines": [128, 129, 130], "excluded_lines": [], "start_line": 123}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 20, 21, 30, 31, 38, 39, 44, 45, 55, 56, 61, 62, 67, 92, 93, 105, 106, 122, 123, 133], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"StaticGameData": {"executed_lines": [22, 23, 24, 25, 26, 27, 28, 63, 64, 65, 78, 79, 81, 82, 85, 86, 88, 90, 124, 125, 126, 127], "summary": {"covered_lines": 22, "num_statements": 63, "percent_covered": 34.92063492063492, "percent_covered_display": "34.92", "missing_lines": 41, "excluded_lines": 0, "percent_statements_covered": 34.92063492063492, "percent_statements_covered_display": "34.92"}, "missing_lines": [32, 33, 34, 35, 36, 40, 41, 42, 46, 47, 48, 49, 50, 51, 52, 53, 57, 58, 59, 95, 96, 98, 99, 100, 101, 102, 103, 108, 109, 110, 111, 112, 113, 114, 115, 118, 119, 120, 128, 129, 130], "excluded_lines": [], "start_line": 20}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 20, 21, 30, 31, 38, 39, 44, 45, 55, 56, 61, 62, 67, 92, 93, 105, 106, 122, 123, 133], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\version.py": {"executed_lines": [7, 8, 11, 12, 17, 24, 26, 27, 28, 29, 34, 41], "summary": {"covered_lines": 12, "num_statements": 16, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [13, 14, 30, 31], "excluded_lines": [], "functions": {"get_app_version": {"executed_lines": [24, 26, 27, 28, 29], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71.43", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71.43"}, "missing_lines": [30, 31], "excluded_lines": [], "start_line": 17}, "get_python_version": {"executed_lines": [41], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "": {"executed_lines": [7, 8, 11, 12, 17, 34], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [13, 14], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [7, 8, 11, 12, 17, 24, 26, 27, 28, 29, 34, 41], "summary": {"covered_lines": 12, "num_statements": 16, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [13, 14, 30, 31], "excluded_lines": [], "start_line": 1}}}}, "totals": {"covered_lines": 5386, "num_statements": 8099, "percent_covered": 66.50203728855415, "percent_covered_display": "66.50", "missing_lines": 2713, "excluded_lines": 76, "percent_statements_covered": 66.50203728855415, "percent_statements_covered_display": "66.50"}} +{"meta": {"format": 3, "version": "7.13.1", "timestamp": "2026-01-22T23:59:46.289346", "branch_coverage": false, "show_contexts": false}, "files": {"app\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\admin\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\admin\\auth.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 10, 11, 41, 46], "summary": {"covered_lines": 10, "num_statements": 31, "percent_covered": 32.25806451612903, "percent_covered_display": "32.26", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 32.25806451612903, "percent_statements_covered_display": "32.26"}, "missing_lines": [12, 13, 14, 17, 25, 27, 34, 36, 37, 39, 43, 44, 47, 49, 50, 53, 62, 63, 64, 65, 67], "excluded_lines": [], "functions": {"AdminAuth.login": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [12, 13, 14, 17, 25, 27, 34, 36, 37, 39], "excluded_lines": [], "start_line": 11}, "AdminAuth.logout": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [43, 44], "excluded_lines": [], "start_line": 41}, "AdminAuth.authenticate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [47, 49, 50, 53, 62, 63, 64, 65, 67], "excluded_lines": [], "start_line": 46}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 10, 11, 41, 46], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AdminAuth": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [12, 13, 14, 17, 25, 27, 34, 36, 37, 39, 43, 44, 47, 49, 50, 53, 62, 63, 64, 65, 67], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 10, 11, 41, 46], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\admin\\views.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 25, 26, 35, 37, 39, 40, 41, 42, 45, 46, 59, 60, 62, 64, 65, 68, 69, 80, 83, 84, 91, 94, 95, 112, 118, 121, 122, 124, 125, 127, 130, 131, 140, 143, 144, 153, 154, 155, 157, 159, 160, 161, 162, 165, 166, 171, 172, 174, 176, 177, 178, 179, 182, 183, 193, 196, 197, 209, 212, 213, 219, 222, 223, 224, 225, 233, 236, 237, 247, 248, 249, 251, 252, 255, 256, 267, 268, 269, 271, 272, 275, 276, 293, 294, 295, 297, 298, 299, 302, 303, 318, 319, 320, 322, 323, 324, 327, 328, 343, 344, 345, 347, 348, 349, 352, 353, 364, 365, 366, 368, 376, 377, 378, 380, 381, 382, 385, 386, 400, 401, 402, 404, 410, 411, 412, 414, 415, 416], "summary": {"covered_lines": 148, "num_statements": 148, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 25, 26, 35, 37, 39, 40, 41, 42, 45, 46, 59, 60, 62, 64, 65, 68, 69, 80, 83, 84, 91, 94, 95, 112, 118, 121, 122, 124, 125, 127, 130, 131, 140, 143, 144, 153, 154, 155, 157, 159, 160, 161, 162, 165, 166, 171, 172, 174, 176, 177, 178, 179, 182, 183, 193, 196, 197, 209, 212, 213, 219, 222, 223, 224, 225, 233, 236, 237, 247, 248, 249, 251, 252, 255, 256, 267, 268, 269, 271, 272, 275, 276, 293, 294, 295, 297, 298, 299, 302, 303, 318, 319, 320, 322, 323, 324, 327, 328, 343, 344, 345, 347, 348, 349, 352, 353, 364, 365, 366, 368, 376, 377, 378, 380, 381, 382, 385, 386, 400, 401, 402, 404, 410, 411, 412, 414, 415, 416], "summary": {"covered_lines": 148, "num_statements": 148, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"UserAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "UserProfileAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "VaultAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "StorageAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "DwellerAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 94}, "JunkAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 121}, "OutfitAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 130}, "QuestAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 143}, "ObjectiveAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 165}, "RoomAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 182}, "WeaponAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 196}, "PromptAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 212}, "LLInteractionAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 222}, "RelationshipAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 236}, "PregnancyAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 255}, "TrainingAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 275}, "IncidentAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 302}, "ExplorationAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 327}, "ChatMessageAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 352}, "NotificationAdmin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 385}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 25, 26, 35, 37, 39, 40, 41, 42, 45, 46, 59, 60, 62, 64, 65, 68, 69, 80, 83, 84, 91, 94, 95, 112, 118, 121, 122, 124, 125, 127, 130, 131, 140, 143, 144, 153, 154, 155, 157, 159, 160, 161, 162, 165, 166, 171, 172, 174, 176, 177, 178, 179, 182, 183, 193, 196, 197, 209, 212, 213, 219, 222, 223, 224, 225, 233, 236, 237, 247, 248, 249, 251, 252, 255, 256, 267, 268, 269, 271, 272, 275, 276, 293, 294, 295, 297, 298, 299, 302, 303, 318, 319, 320, 322, 323, 324, 327, 328, 343, 344, 345, 347, 348, 349, 352, 353, 364, 365, 366, 368, 376, 377, 378, 380, 381, 382, 385, 386, 400, 401, 402, 404, 410, 411, 412, 414, 415, 416], "summary": {"covered_lines": 148, "num_statements": 148, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\agents\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\agents\\deps.py": {"executed_lines": [3, 5, 8, 9, 12, 13, 14, 15, 18, 19, 22, 25, 26, 29, 30, 31, 32], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 5, 8, 9, 12, 13, 14, 15, 18, 19, 22, 25, 26, 29, 30, 31, 32], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"BackstoryDeps": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "ExtendBioDeps": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "VisualAttributesDeps": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "": {"executed_lines": [3, 5, 8, 9, 12, 13, 14, 15, 18, 19, 22, 25, 26, 29, 30, 31, 32], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\agents\\dweller_agents.py": {"executed_lines": [3, 5, 6, 7, 8, 11, 13, 19, 22, 36, 37, 51, 64, 65, 76, 100, 101], "summary": {"covered_lines": 17, "num_statements": 23, "percent_covered": 73.91304347826087, "percent_covered_display": "73.91", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 73.91304347826087, "percent_statements_covered_display": "73.91"}, "missing_lines": [39, 40, 67, 103, 104, 106], "excluded_lines": [], "functions": {"backstory_system_prompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [39, 40], "excluded_lines": [], "start_line": 37}, "bio_extension_system_prompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [67], "excluded_lines": [], "start_line": 65}, "visual_attributes_system_prompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [103, 104, 106], "excluded_lines": [], "start_line": 101}, "": {"executed_lines": [3, 5, 6, 7, 8, 11, 13, 19, 22, 36, 37, 51, 64, 65, 76, 100, 101], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 11, 13, 19, 22, 36, 37, 51, 64, 65, 76, 100, 101], "summary": {"covered_lines": 17, "num_statements": 23, "percent_covered": 73.91304347826087, "percent_covered_display": "73.91", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 73.91304347826087, "percent_statements_covered_display": "73.91"}, "missing_lines": [39, 40, 67, 103, 104, 106], "excluded_lines": [], "start_line": 1}}}, "app\\api\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\api\\celery_task.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 76, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 76, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 3, 4, 6, 8, 9, 10, 12, 15, 16, 19, 20, 21, 22, 25, 26, 27, 30, 31, 36, 37, 39, 41, 43, 45, 51, 53, 54, 55, 56, 58, 59, 60, 61, 63, 64, 67, 68, 73, 74, 76, 78, 80, 82, 88, 90, 91, 92, 93, 95, 96, 97, 98, 100, 101, 104, 105, 110, 111, 113, 114, 116, 118, 124, 126, 127, 128, 129, 130, 132, 133, 134, 135, 137, 138], "excluded_lines": [], "functions": {"create_task": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [21, 22], "excluded_lines": [], "start_line": 20}, "generate_dweller_attributes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [27], "excluded_lines": [], "start_line": 26}, "game_tick_task": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36, 37, 39, 58, 59, 60, 61, 63, 64], "excluded_lines": [], "start_line": 31}, "game_tick_task.run_tick": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [41, 43, 45, 51, 53, 54, 55, 56], "excluded_lines": [], "start_line": 39}, "process_vault_tick_task": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [73, 74, 76, 95, 96, 97, 98, 100, 101], "excluded_lines": [], "start_line": 68}, "process_vault_tick_task.run_vault_tick": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [78, 80, 82, 88, 90, 91, 92, 93], "excluded_lines": [], "start_line": 76}, "check_permanent_deaths_task": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [110, 111, 113, 132, 133, 134, 135, 137, 138], "excluded_lines": [], "start_line": 105}, "check_permanent_deaths_task.run_check": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [114, 116, 118, 124, 126, 127, 128, 129, 130], "excluded_lines": [], "start_line": 113}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 3, 4, 6, 8, 9, 10, 12, 15, 16, 19, 20, 25, 26, 30, 31, 67, 68, 104, 105], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 76, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 76, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 3, 4, 6, 8, 9, 10, 12, 15, 16, 19, 20, 21, 22, 25, 26, 27, 30, 31, 36, 37, 39, 41, 43, 45, 51, 53, 54, 55, 56, 58, 59, 60, 61, 63, 64, 67, 68, 73, 74, 76, 78, 80, 82, 88, 90, 91, 92, 93, 95, 96, 97, 98, 100, 101, 104, 105, 110, 111, 113, 114, 116, 118, 124, 126, 127, 128, 129, 130, 132, 133, 134, 135, 137, 138], "excluded_lines": [], "start_line": 1}}}, "app\\api\\deps.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 23, 31, 54, 57, 63, 66, 75, 78, 103, 116, 129], "summary": {"covered_lines": 26, "num_statements": 68, "percent_covered": 38.23529411764706, "percent_covered_display": "38.24", "missing_lines": 42, "excluded_lines": 0, "percent_statements_covered": 38.23529411764706, "percent_statements_covered_display": "38.24"}, "missing_lines": [24, 25, 26, 28, 35, 36, 41, 42, 43, 44, 48, 49, 50, 51, 58, 59, 60, 67, 68, 72, 89, 90, 91, 94, 95, 100, 109, 110, 111, 113, 122, 123, 124, 126, 135, 137, 138, 139, 142, 143, 144, 146], "excluded_lines": [], "functions": {"get_redis_client": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24, 25, 26, 28], "excluded_lines": [], "start_line": 23}, "get_current_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [35, 36, 41, 42, 43, 44, 48, 49, 50, 51], "excluded_lines": [], "start_line": 31}, "get_current_active_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [58, 59, 60], "excluded_lines": [], "start_line": 57}, "get_current_active_superuser": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [67, 68, 72], "excluded_lines": [], "start_line": 66}, "get_user_vault_or_403": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [89, 90, 91, 94, 95, 100], "excluded_lines": [], "start_line": 78}, "verify_dweller_access": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [109, 110, 111, 113], "excluded_lines": [], "start_line": 103}, "verify_room_access": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [122, 123, 124, 126], "excluded_lines": [], "start_line": 116}, "verify_exploration_access": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [135, 137, 138, 139, 142, 143, 144, 146], "excluded_lines": [], "start_line": 129}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 23, 31, 54, 57, 63, 66, 75, 78, 103, 116, 129], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 23, 31, 54, 57, 63, 66, 75, 78, 103, 116, 129], "summary": {"covered_lines": 26, "num_statements": 68, "percent_covered": 38.23529411764706, "percent_covered_display": "38.24", "missing_lines": 42, "excluded_lines": 0, "percent_statements_covered": 38.23529411764706, "percent_statements_covered_display": "38.24"}, "missing_lines": [24, 25, 26, 28, 35, 36, 41, 42, 43, 44, 48, 49, 50, 51, 58, 59, 60, 67, 68, 72, 89, 90, 91, 94, 95, 100, 109, 110, 111, 113, 122, 123, 124, 126, 135, 137, 138, 139, 142, 143, 144, 146], "excluded_lines": [], "start_line": 1}}}, "app\\api\\game_data_deps.py": {"executed_lines": [1, 4], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [12], "excluded_lines": [], "functions": {"get_static_game_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [12], "excluded_lines": [], "start_line": 4}, "": {"executed_lines": [1, 4], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 4], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [12], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\api.py": {"executed_lines": [1, 3, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\auth.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 19, 22, 23, 58, 59, 93, 94, 102, 103, 134, 135, 189, 190, 220, 221, 254, 255], "summary": {"covered_lines": 32, "num_statements": 113, "percent_covered": 28.31858407079646, "percent_covered_display": "28.32", "missing_lines": 81, "excluded_lines": 0, "percent_statements_covered": 28.31858407079646, "percent_statements_covered_display": "28.32"}, "missing_lines": [31, 36, 37, 38, 39, 41, 42, 44, 67, 68, 69, 71, 72, 73, 74, 75, 77, 78, 84, 86, 98, 99, 110, 113, 114, 117, 120, 121, 122, 125, 131, 145, 146, 147, 150, 151, 152, 155, 156, 158, 160, 161, 162, 164, 165, 166, 169, 172, 173, 175, 178, 181, 186, 201, 202, 205, 206, 209, 212, 217, 229, 230, 231, 234, 235, 236, 239, 240, 243, 244, 247, 248, 249, 251, 263, 264, 267, 270, 271, 274, 280], "excluded_lines": [], "functions": {"login_access_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 36, 37, 38, 39, 41, 42, 44], "excluded_lines": [], "start_line": 23}, "refresh_access_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [67, 68, 69, 71, 72, 73, 74, 75, 77, 78, 84, 86], "excluded_lines": [], "start_line": 59}, "logout": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [98, 99], "excluded_lines": [], "start_line": 94}, "forgot_password": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [110, 113, 114, 117, 120, 121, 122, 125, 131], "excluded_lines": [], "start_line": 103}, "reset_password": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 22, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [145, 146, 147, 150, 151, 152, 155, 156, 158, 160, 161, 162, 164, 165, 166, 169, 172, 173, 175, 178, 181, 186], "excluded_lines": [], "start_line": 135}, "change_password": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [201, 202, 205, 206, 209, 212, 217], "excluded_lines": [], "start_line": 190}, "verify_email": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [229, 230, 231, 234, 235, 236, 239, 240, 243, 244, 247, 248, 249, 251], "excluded_lines": [], "start_line": 221}, "resend_verification_email": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [263, 264, 267, 270, 271, 274, 280], "excluded_lines": [], "start_line": 255}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 19, 22, 23, 58, 59, 93, 94, 102, 103, 134, 135, 189, 190, 220, 221, 254, 255], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 19, 22, 23, 58, 59, 93, 94, 102, 103, 134, 135, 189, 190, 220, 221, 254, 255], "summary": {"covered_lines": 32, "num_statements": 113, "percent_covered": 28.31858407079646, "percent_covered_display": "28.32", "missing_lines": 81, "excluded_lines": 0, "percent_statements_covered": 28.31858407079646, "percent_statements_covered_display": "28.32"}, "missing_lines": [31, 36, 37, 38, 39, 41, 42, 44, 67, 68, 69, 71, 72, 73, 74, 75, 77, 78, 84, 86, 98, 99, 110, 113, 114, 117, 120, 121, 122, 125, 131, 145, 146, 147, 150, 151, 152, 155, 156, 158, 160, 161, 162, 164, 165, 166, 169, 172, 173, 175, 178, 181, 186, 201, 202, 205, 206, 209, 212, 217, 229, 230, 231, 234, 235, 236, 239, 240, 243, 244, 247, 248, 249, 251, 263, 264, 267, 270, 271, 274, 280], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\chat.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 26, 27, 28, 29, 30, 31, 32, 35, 36, 91, 92, 95, 96, 156, 157, 178, 179], "summary": {"covered_lines": 37, "num_statements": 78, "percent_covered": 47.43589743589744, "percent_covered_display": "47.44", "missing_lines": 41, "excluded_lines": 0, "percent_statements_covered": 47.43589743589744, "percent_statements_covered_display": "47.44"}, "missing_lines": [40, 68, 70, 72, 74, 75, 82, 83, 86, 87, 88, 102, 103, 104, 107, 110, 111, 119, 125, 131, 142, 153, 165, 166, 167, 169, 206, 208, 210, 211, 212, 215, 218, 227, 228, 239, 246, 247, 248, 249, 250], "excluded_lines": [], "functions": {"generate_objectives": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40, 68, 70, 72, 74, 75, 82, 83, 86, 87, 88], "excluded_lines": [], "start_line": 36}, "chat_with_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [102, 103, 104, 107, 110, 111, 119, 125, 131, 142, 153], "excluded_lines": [], "start_line": 96}, "get_chat_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [165, 166, 167, 169], "excluded_lines": [], "start_line": 157}, "voice_chat_with_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [206, 208, 210, 211, 212, 215, 218, 227, 228, 239, 246, 247, 248, 249, 250], "excluded_lines": [], "start_line": 179}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 26, 27, 28, 29, 30, 31, 32, 35, 36, 91, 92, 95, 96, 156, 157, 178, 179], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ObjectiveKindEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "ChatMessage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 91}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 26, 27, 28, 29, 30, 31, 32, 35, 36, 91, 92, 95, 96, 156, 157, 178, 179], "summary": {"covered_lines": 37, "num_statements": 78, "percent_covered": 47.43589743589744, "percent_covered_display": "47.44", "missing_lines": 41, "excluded_lines": 0, "percent_statements_covered": 47.43589743589744, "percent_statements_covered_display": "47.44"}, "missing_lines": [40, 68, 70, 72, 74, 75, 82, 83, 86, 87, 88, 102, 103, 104, 107, 110, 111, 119, 125, 131, 142, 153, 165, 166, 167, 169, 206, 208, 210, 211, 212, 215, 218, 227, 228, 239, 246, 247, 248, 249, 250], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\dweller.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 26, 28, 31, 32, 40, 41, 51, 52, 61, 62, 91, 92, 98, 99, 124, 125, 135, 136, 146, 147, 155, 156, 164, 165, 173, 174, 183, 184, 195, 196, 214, 215, 219, 220, 230, 231, 241, 242, 254, 255, 270, 271, 296, 297, 310, 311, 341, 342], "summary": {"covered_lines": 58, "num_statements": 125, "percent_covered": 46.4, "percent_covered_display": "46.40", "missing_lines": 67, "excluded_lines": 0, "percent_statements_covered": 46.4, "percent_statements_covered_display": "46.40"}, "missing_lines": [37, 48, 57, 58, 68, 70, 73, 75, 77, 80, 81, 82, 83, 84, 86, 88, 95, 111, 112, 131, 132, 142, 143, 152, 161, 170, 180, 190, 204, 216, 226, 227, 237, 238, 248, 250, 251, 261, 262, 279, 281, 282, 287, 288, 289, 290, 291, 293, 305, 306, 307, 317, 319, 320, 322, 323, 325, 327, 328, 330, 348, 350, 353, 354, 357, 360, 362], "excluded_lines": [], "functions": {"create_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [37], "excluded_lines": [], "start_line": 32}, "read_dweller_list": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [48], "excluded_lines": [], "start_line": 41}, "read_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [57, 58], "excluded_lines": [], "start_line": 52}, "update_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [68, 70, 73, 75, 77, 80, 81, 82, 83, 84, 86, 88], "excluded_lines": [], "start_line": 62}, "delete_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [95], "excluded_lines": [], "start_line": 92}, "read_dwellers_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [111, 112], "excluded_lines": [], "start_line": 99}, "move_dweller_to_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [131, 132], "excluded_lines": [], "start_line": 125}, "create_random_common_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [142, 143], "excluded_lines": [], "start_line": 136}, "generate_backstory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [152], "excluded_lines": [], "start_line": 147}, "generate_visual_attributes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [161], "excluded_lines": [], "start_line": 156}, "generate_photo": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [170], "excluded_lines": [], "start_line": 165}, "generate_audio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [180], "excluded_lines": [], "start_line": 174}, "generate_data_with_ai": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [190], "excluded_lines": [], "start_line": 184}, "generate_dweller_avatar": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [204], "excluded_lines": [], "start_line": 196}, "read_dwellers_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [216], "excluded_lines": [], "start_line": 215}, "use_stimpack": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [226, 227], "excluded_lines": [], "start_line": 220}, "use_radaway": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [237, 238], "excluded_lines": [], "start_line": 231}, "get_happiness_modifiers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [248, 250, 251], "excluded_lines": [], "start_line": 242}, "auto_assign_to_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [261, 262], "excluded_lines": [], "start_line": 255}, "get_dead_dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [279, 281, 282, 287, 288, 289, 290, 291, 293], "excluded_lines": [], "start_line": 271}, "get_graveyard": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [305, 306, 307], "excluded_lines": [], "start_line": 297}, "get_revival_cost": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [317, 319, 320, 322, 323, 325, 327, 328, 330], "excluded_lines": [], "start_line": 311}, "revive_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [348, 350, 353, 354, 357, 360, 362], "excluded_lines": [], "start_line": 342}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 26, 28, 31, 32, 40, 41, 51, 52, 61, 62, 91, 92, 98, 99, 124, 125, 135, 136, 146, 147, 155, 156, 164, 165, 173, 174, 183, 184, 195, 196, 214, 215, 219, 220, 230, 231, 241, 242, 254, 255, 270, 271, 296, 297, 310, 311, 341, 342], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 26, 28, 31, 32, 40, 41, 51, 52, 61, 62, 91, 92, 98, 99, 124, 125, 135, 136, 146, 147, 155, 156, 164, 165, 173, 174, 183, 184, 195, 196, 214, 215, 219, 220, 230, 231, 241, 242, 254, 255, 270, 271, 296, 297, 310, 311, 341, 342], "summary": {"covered_lines": 58, "num_statements": 125, "percent_covered": 46.4, "percent_covered_display": "46.40", "missing_lines": 67, "excluded_lines": 0, "percent_statements_covered": 46.4, "percent_statements_covered_display": "46.40"}, "missing_lines": [37, 48, 57, 58, 68, 70, 73, 75, 77, 80, 81, 82, 83, 84, 86, 88, 95, 111, 112, 131, 132, 142, 143, 152, 161, 170, 180, 190, 204, 216, 226, 227, 237, 238, 248, 250, 251, 261, 262, 279, 281, 282, 287, 288, 289, 290, 291, 293, 305, 306, 307, 317, 319, 320, 322, 323, 325, 327, 328, 330, 348, 350, 353, 354, 357, 360, 362], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\exploration.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 19, 21, 24, 25, 44, 45, 68, 69, 79, 80, 90, 91, 108, 109, 126, 127], "summary": {"covered_lines": 24, "num_statements": 55, "percent_covered": 43.63636363636363, "percent_covered_display": "43.64", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 43.63636363636363, "percent_statements_covered_display": "43.64"}, "missing_lines": [32, 33, 34, 40, 41, 52, 53, 54, 60, 65, 75, 76, 86, 87, 97, 98, 99, 100, 104, 105, 115, 116, 117, 118, 122, 123, 133, 134, 135, 136, 137], "excluded_lines": [], "functions": {"send_dweller_to_wasteland": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [32, 33, 34, 40, 41], "excluded_lines": [], "start_line": 25}, "list_explorations_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [52, 53, 54, 60, 65], "excluded_lines": [], "start_line": 45}, "get_exploration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [75, 76], "excluded_lines": [], "start_line": 69}, "get_exploration_progress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [86, 87], "excluded_lines": [], "start_line": 80}, "recall_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [97, 98, 99, 100, 104, 105], "excluded_lines": [], "start_line": 91}, "complete_exploration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [115, 116, 117, 118, 122, 123], "excluded_lines": [], "start_line": 109}, "generate_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [133, 134, 135, 136, 137], "excluded_lines": [], "start_line": 127}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 19, 21, 24, 25, 44, 45, 68, 69, 79, 80, 90, 91, 108, 109, 126, 127], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 19, 21, 24, 25, 44, 45, 68, 69, 79, 80, 90, 91, 108, 109, 126, 127], "summary": {"covered_lines": 24, "num_statements": 55, "percent_covered": 43.63636363636363, "percent_covered_display": "43.64", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 43.63636363636363, "percent_statements_covered_display": "43.64"}, "missing_lines": [32, 33, 34, 40, 41, 52, 53, 54, 60, 65, 75, 76, 86, 87, 97, 98, 99, 100, 104, 105, 115, 116, 117, 118, 122, 123, 133, 134, 135, 136, 137], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\game_control.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 20, 21, 66, 67, 92, 93, 118, 119, 137, 138, 175, 176, 215, 216, 247, 248, 281, 282, 329, 330, 354, 355], "summary": {"covered_lines": 34, "num_statements": 125, "percent_covered": 27.2, "percent_covered_display": "27.20", "missing_lines": 91, "excluded_lines": 0, "percent_statements_covered": 27.2, "percent_statements_covered_display": "27.20"}, "missing_lines": [31, 75, 76, 77, 79, 80, 82, 84, 101, 102, 103, 105, 106, 108, 110, 127, 128, 129, 131, 132, 134, 146, 147, 148, 150, 151, 153, 155, 185, 186, 187, 189, 190, 192, 193, 194, 196, 231, 232, 233, 235, 236, 239, 241, 263, 264, 265, 267, 268, 271, 272, 273, 275, 276, 277, 278, 294, 297, 298, 299, 301, 302, 305, 306, 307, 308, 309, 310, 315, 317, 318, 320, 338, 339, 340, 342, 343, 345, 347, 364, 365, 366, 368, 369, 372, 373, 374, 376, 378, 379, 381], "excluded_lines": [], "functions": {"get_game_balance_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31], "excluded_lines": [], "start_line": 21}, "pause_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [75, 76, 77, 79, 80, 82, 84], "excluded_lines": [], "start_line": 67}, "resume_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [101, 102, 103, 105, 106, 108, 110], "excluded_lines": [], "start_line": 93}, "get_game_state": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [127, 128, 129, 131, 132, 134], "excluded_lines": [], "start_line": 119}, "list_incidents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [146, 147, 148, 150, 151, 153, 155], "excluded_lines": [], "start_line": 138}, "get_incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [185, 186, 187, 189, 190, 192, 193, 194, 196], "excluded_lines": [], "start_line": 176}, "manual_tick": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [231, 232, 233, 235, 236, 239, 241], "excluded_lines": [], "start_line": 216}, "resolve_incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [263, 264, 265, 267, 268, 271, 272, 273, 275, 276, 277, 278], "excluded_lines": [], "start_line": 248}, "spawn_debug_incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [294, 297, 298, 299, 301, 302, 305, 306, 307, 308, 309, 310, 315, 317, 318, 320], "excluded_lines": [], "start_line": 282}, "delete_all_incidents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [338, 339, 340, 342, 343, 345, 347], "excluded_lines": [], "start_line": 330}, "delete_incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [364, 365, 366, 368, 369, 372, 373, 374, 376, 378, 379, 381], "excluded_lines": [], "start_line": 355}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 20, 21, 66, 67, 92, 93, 118, 119, 137, 138, 175, 176, 215, 216, 247, 248, 281, 282, 329, 330, 354, 355], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 20, 21, 66, 67, 92, 93, 118, 119, 137, 138, 175, 176, 215, 216, 247, 248, 281, 282, 329, 330, 354, 355], "summary": {"covered_lines": 34, "num_statements": 125, "percent_covered": 27.2, "percent_covered_display": "27.20", "missing_lines": 91, "excluded_lines": 0, "percent_statements_covered": 27.2, "percent_statements_covered_display": "27.20"}, "missing_lines": [31, 75, 76, 77, 79, 80, 82, 84, 101, 102, 103, 105, 106, 108, 110, 127, 128, 129, 131, 132, 134, 146, 147, 148, 150, 151, 153, 155, 185, 186, 187, 189, 190, 192, 193, 194, 196, 231, 232, 233, 235, 236, 239, 241, 263, 264, 265, 267, 268, 271, 272, 273, 275, 276, 277, 278, 294, 297, 298, 299, 301, 302, 305, 306, 307, 308, 309, 310, 315, 317, 318, 320, 338, 339, 340, 342, 343, 345, 347, 364, 365, 366, 368, 369, 372, 373, 374, 376, 378, 379, 381], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\junk.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 20, 21, 27, 28, 32, 33, 39, 40, 44, 45, 49, 50], "summary": {"covered_lines": 23, "num_statements": 30, "percent_covered": 76.66666666666667, "percent_covered_display": "76.67", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 76.66666666666667, "percent_statements_covered_display": "76.67"}, "missing_lines": [17, 24, 29, 36, 41, 46, 51], "excluded_lines": [], "functions": {"create_junk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [17], "excluded_lines": [], "start_line": 16}, "read_junk_list": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24], "excluded_lines": [], "start_line": 21}, "read_junk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [29], "excluded_lines": [], "start_line": 28}, "update_junk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36], "excluded_lines": [], "start_line": 33}, "delete_junk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [41], "excluded_lines": [], "start_line": 40}, "sell_junk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [46], "excluded_lines": [], "start_line": 45}, "read_junk_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [51], "excluded_lines": [], "start_line": 50}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 20, 21, 27, 28, 32, 33, 39, 40, 44, 45, 49, 50], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 20, 21, 27, 28, 32, 33, 39, 40, 44, 45, 49, 50], "summary": {"covered_lines": 23, "num_statements": 30, "percent_covered": 76.66666666666667, "percent_covered_display": "76.67", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 76.66666666666667, "percent_statements_covered_display": "76.67"}, "missing_lines": [17, 24, 29, 36, 41, 46, 51], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\notifications.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 33, 34, 43, 44, 53, 54, 66, 67, 76, 77], "summary": {"covered_lines": 21, "num_statements": 35, "percent_covered": 60.0, "percent_covered_display": "60.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00"}, "missing_lines": [24, 39, 40, 50, 60, 61, 62, 63, 72, 73, 83, 84, 85, 86], "excluded_lines": [], "functions": {"get_notifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24], "excluded_lines": [], "start_line": 16}, "get_unread_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [39, 40], "excluded_lines": [], "start_line": 34}, "create_notification": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [50], "excluded_lines": [], "start_line": 44}, "mark_notification_as_read": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [60, 61, 62, 63], "excluded_lines": [], "start_line": 54}, "mark_all_notifications_as_read": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [72, 73], "excluded_lines": [], "start_line": 67}, "dismiss_notification": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [83, 84, 85, 86], "excluded_lines": [], "start_line": 77}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 33, 34, 43, 44, 53, 54, 66, 67, 76, 77], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 33, 34, 43, 44, 53, 54, 66, 67, 76, 77], "summary": {"covered_lines": 21, "num_statements": 35, "percent_covered": 60.0, "percent_covered_display": "60.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60.00"}, "missing_lines": [24, 39, 40, 50, 60, 61, 62, 63, 72, 73, 83, 84, 85, 86], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\objective.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 22, 23, 32, 33, 37, 38, 45, 46], "summary": {"covered_lines": 19, "num_statements": 24, "percent_covered": 79.16666666666667, "percent_covered_display": "79.17", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 79.16666666666667, "percent_statements_covered_display": "79.17"}, "missing_lines": [19, 29, 34, 42, 53], "excluded_lines": [], "functions": {"create_objective": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [19], "excluded_lines": [], "start_line": 16}, "read_objective_list": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [29], "excluded_lines": [], "start_line": 23}, "read_objective": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [34], "excluded_lines": [], "start_line": 33}, "complete_objective": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42], "excluded_lines": [], "start_line": 38}, "update_objective_progress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [53], "excluded_lines": [], "start_line": 46}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 22, 23, 32, 33, 37, 38, 45, 46], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 22, 23, 32, 33, 37, 38, 45, 46], "summary": {"covered_lines": 19, "num_statements": 24, "percent_covered": 79.16666666666667, "percent_covered_display": "79.17", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 79.16666666666667, "percent_statements_covered_display": "79.17"}, "missing_lines": [19, 29, 34, 42, 53], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\outfit.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 28, 29, 33, 34, 42, 43, 47, 48, 54, 55, 59, 60, 64, 65, 69, 70], "summary": {"covered_lines": 30, "num_statements": 40, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [18, 25, 30, 39, 44, 51, 56, 61, 66, 71], "excluded_lines": [], "functions": {"create_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [18], "excluded_lines": [], "start_line": 17}, "read_outfit_list": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [25], "excluded_lines": [], "start_line": 22}, "read_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [30], "excluded_lines": [], "start_line": 29}, "update_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [39], "excluded_lines": [], "start_line": 34}, "delete_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [44], "excluded_lines": [], "start_line": 43}, "equip_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [51], "excluded_lines": [], "start_line": 48}, "unequip_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [56], "excluded_lines": [], "start_line": 55}, "scrap_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [61], "excluded_lines": [], "start_line": 60}, "sell_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [66], "excluded_lines": [], "start_line": 65}, "read_outfits_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [71], "excluded_lines": [], "start_line": 70}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 28, 29, 33, 34, 42, 43, 47, 48, 54, 55, 59, 60, 64, 65, 69, 70], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 28, 29, 33, 34, 42, 43, 47, 48, 54, 55, 59, 60, 64, 65, 69, 70], "summary": {"covered_lines": 30, "num_statements": 40, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [18, 25, 30, 39, 44, 51, 56, 61, 66, 71], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\pregnancy.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 21, 51, 52, 88, 89], "summary": {"covered_lines": 18, "num_statements": 53, "percent_covered": 33.9622641509434, "percent_covered_display": "33.96", "missing_lines": 35, "excluded_lines": 0, "percent_statements_covered": 33.9622641509434, "percent_statements_covered_display": "33.96"}, "missing_lines": [27, 29, 35, 58, 59, 60, 62, 63, 66, 67, 69, 70, 73, 75, 96, 97, 98, 100, 101, 104, 105, 107, 108, 111, 114, 115, 117, 120, 121, 123, 124, 125, 135, 140, 141], "excluded_lines": [], "functions": {"get_vault_pregnancies": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [27, 29, 35], "excluded_lines": [], "start_line": 21}, "get_pregnancy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [58, 59, 60, 62, 63, 66, 67, 69, 70, 73, 75], "excluded_lines": [], "start_line": 52}, "deliver_baby": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [96, 97, 98, 100, 101, 104, 105, 107, 108, 111, 114, 115, 117, 120, 121, 123, 124, 125, 135, 140, 141], "excluded_lines": [], "start_line": 89}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 21, 51, 52, 88, 89], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 21, 51, 52, 88, 89], "summary": {"covered_lines": 18, "num_statements": 53, "percent_covered": 33.9622641509434, "percent_covered_display": "33.96", "missing_lines": 35, "excluded_lines": 0, "percent_statements_covered": 33.9622641509434, "percent_statements_covered_display": "33.96"}, "missing_lines": [27, 29, 35, 58, 59, 60, 62, 63, 66, 67, 69, 70, 73, 75, 96, 97, 98, 100, 101, 104, 105, 107, 108, 111, 114, 115, 117, 120, 121, 123, 124, 125, 135, 140, 141], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\quest.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 16, 19, 20, 30, 31, 39, 40, 51, 52, 61, 62, 70, 71, 75, 76, 92, 93], "summary": {"covered_lines": 25, "num_statements": 33, "percent_covered": 75.75757575757575, "percent_covered_display": "75.76", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 75.75757575757575, "percent_statements_covered_display": "75.76"}, "missing_lines": [27, 36, 48, 58, 67, 72, 87, 102], "excluded_lines": [], "functions": {"read_all_quests": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [27], "excluded_lines": [], "start_line": 20}, "create_quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36], "excluded_lines": [], "start_line": 31}, "read_vault_quests": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [48], "excluded_lines": [], "start_line": 40}, "read_quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [58], "excluded_lines": [], "start_line": 52}, "update_quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [67], "excluded_lines": [], "start_line": 62}, "delete_quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [72], "excluded_lines": [], "start_line": 71}, "assign_quest_to_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [87], "excluded_lines": [], "start_line": 76}, "complete_quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [102], "excluded_lines": [], "start_line": 93}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 16, 19, 20, 30, 31, 39, 40, 51, 52, 61, 62, 70, 71, 75, 76, 92, 93], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 16, 19, 20, 30, 31, 39, 40, 51, 52, 61, 62, 70, 71, 75, 76, 92, 93], "summary": {"covered_lines": 25, "num_statements": 33, "percent_covered": 75.75757575757575, "percent_covered_display": "75.76", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 75.75757575757575, "percent_statements_covered_display": "75.76"}, "missing_lines": [27, 36, 48, 58, 67, 72, 87, 102], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\radio.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 34, 35, 78, 79, 95, 96], "summary": {"covered_lines": 21, "num_statements": 52, "percent_covered": 40.38461538461539, "percent_covered_display": "40.38", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 40.38461538461539, "percent_statements_covered_display": "40.38"}, "missing_lines": [28, 30, 31, 42, 44, 45, 47, 54, 55, 57, 60, 61, 69, 74, 75, 86, 89, 90, 92, 104, 107, 108, 111, 112, 114, 115, 118, 119, 121, 122, 124], "excluded_lines": [], "functions": {"get_radio_stats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [28, 30, 31], "excluded_lines": [], "start_line": 22}, "manual_recruit_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42, 44, 45, 47, 54, 55, 57, 60, 61, 69, 74, 75], "excluded_lines": [], "start_line": 35}, "set_radio_mode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [86, 89, 90, 92], "excluded_lines": [], "start_line": 79}, "set_radio_speedup": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [104, 107, 108, 111, 112, 114, 115, 118, 119, 121, 122, 124], "excluded_lines": [], "start_line": 96}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 34, 35, 78, 79, 95, 96], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 34, 35, 78, 79, 95, 96], "summary": {"covered_lines": 21, "num_statements": 52, "percent_covered": 40.38461538461539, "percent_covered_display": "40.38", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 40.38461538461539, "percent_statements_covered_display": "40.38"}, "missing_lines": [28, 30, 31, 42, 44, 45, 47, 54, 55, 57, 60, 61, 69, 74, 75, 86, 89, 90, 92, 104, 107, 108, 111, 112, 114, 115, 118, 119, 121, 122, 124], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\relationship.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 16, 18, 21, 22, 36, 37, 57, 58, 74, 75, 107, 108, 140, 141, 171, 172, 198, 199, 216, 217], "summary": {"covered_lines": 27, "num_statements": 91, "percent_covered": 29.67032967032967, "percent_covered_display": "29.67", "missing_lines": 64, "excluded_lines": 0, "percent_statements_covered": 29.67032967032967, "percent_statements_covered_display": "29.67"}, "missing_lines": [28, 31, 33, 43, 44, 46, 47, 48, 49, 52, 54, 65, 66, 69, 81, 83, 86, 87, 88, 90, 91, 94, 97, 98, 103, 104, 114, 116, 119, 120, 121, 123, 124, 127, 130, 131, 136, 137, 147, 149, 152, 153, 154, 156, 157, 160, 163, 164, 165, 166, 168, 187, 190, 191, 192, 193, 195, 207, 208, 213, 230, 232, 235, 237], "excluded_lines": [], "functions": {"get_vault_relationships": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [28, 31, 33], "excluded_lines": [], "start_line": 22}, "get_relationship": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [43, 44, 46, 47, 48, 49, 52, 54], "excluded_lines": [], "start_line": 37}, "create_relationship": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [65, 66, 69], "excluded_lines": [], "start_line": 58}, "initiate_romance": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [81, 83, 86, 87, 88, 90, 91, 94, 97, 98, 103, 104], "excluded_lines": [], "start_line": 75}, "make_partners": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [114, 116, 119, 120, 121, 123, 124, 127, 130, 131, 136, 137], "excluded_lines": [], "start_line": 108}, "break_up_relationship": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [147, 149, 152, 153, 154, 156, 157, 160, 163, 164, 165, 166, 168], "excluded_lines": [], "start_line": 141}, "quick_pair_dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [187, 190, 191, 192, 193, 195], "excluded_lines": [], "start_line": 172}, "calculate_compatibility": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [207, 208, 213], "excluded_lines": [], "start_line": 199}, "process_vault_breeding": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [230, 232, 235, 237], "excluded_lines": [], "start_line": 217}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 16, 18, 21, 22, 36, 37, 57, 58, 74, 75, 107, 108, 140, 141, 171, 172, 198, 199, 216, 217], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 16, 18, 21, 22, 36, 37, 57, 58, 74, 75, 107, 108, 140, 141, 171, 172, 198, 199, 216, 217], "summary": {"covered_lines": 27, "num_statements": 91, "percent_covered": 29.67032967032967, "percent_covered_display": "29.67", "missing_lines": 64, "excluded_lines": 0, "percent_statements_covered": 29.67032967032967, "percent_statements_covered_display": "29.67"}, "missing_lines": [28, 31, 33, 43, 44, 46, 47, 48, 49, 52, 54, 65, 66, 69, 81, 83, 86, 87, 88, 90, 91, 94, 97, 98, 103, 104, 114, 116, 119, 120, 121, 123, 124, 127, 130, 131, 136, 137, 147, 149, 152, 153, 154, 156, 157, 160, 163, 164, 165, 166, 168, 187, 190, 191, 192, 193, 195, 207, 208, 213, 230, 232, 235, 237], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\room.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 28, 29, 40, 41, 48, 49, 59, 60, 67, 68, 72, 73, 92, 93, 100, 101, 108, 109], "summary": {"covered_lines": 32, "num_statements": 59, "percent_covered": 54.23728813559322, "percent_covered_display": "54.24", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 54.23728813559322, "percent_statements_covered_display": "54.24"}, "missing_lines": [18, 25, 36, 37, 44, 45, 55, 56, 63, 64, 69, 86, 88, 89, 96, 97, 104, 105, 112, 114, 116, 117, 118, 119, 120, 121, 122], "excluded_lines": [], "functions": {"create_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [18], "excluded_lines": [], "start_line": 17}, "read_room_list": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [25], "excluded_lines": [], "start_line": 22}, "read_rooms_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36, 37], "excluded_lines": [], "start_line": 29}, "read_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [44, 45], "excluded_lines": [], "start_line": 41}, "update_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [55, 56], "excluded_lines": [], "start_line": 49}, "delete_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [63, 64], "excluded_lines": [], "start_line": 60}, "read_room_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [69], "excluded_lines": [], "start_line": 68}, "get_buildable_rooms": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [86, 88, 89], "excluded_lines": [], "start_line": 73}, "build_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [96, 97], "excluded_lines": [], "start_line": 93}, "destroy_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [104, 105], "excluded_lines": [], "start_line": 101}, "upgrade_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [112, 114, 116, 117, 118, 119, 120, 121, 122], "excluded_lines": [], "start_line": 109}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 28, 29, 40, 41, 48, 49, 59, 60, 67, 68, 72, 73, 92, 93, 100, 101, 108, 109], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 28, 29, 40, 41, 48, 49, 59, 60, 67, 68, 72, 73, 92, 93, 100, 101, 108, 109], "summary": {"covered_lines": 32, "num_statements": 59, "percent_covered": 54.23728813559322, "percent_covered_display": "54.24", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 54.23728813559322, "percent_statements_covered_display": "54.24"}, "missing_lines": [18, 25, 36, 37, 44, 45, 55, 56, 63, 64, 69, 86, 88, 89, 96, 97, 104, 105, 112, 114, 116, 117, 118, 119, 120, 121, 122], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\system.py": {"executed_lines": [8, 9, 11, 12, 14, 15, 17, 18, 21, 24, 25, 26, 27, 28, 31, 32], "summary": {"covered_lines": 16, "num_statements": 17, "percent_covered": 94.11764705882354, "percent_covered_display": "94.12", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.11764705882354, "percent_statements_covered_display": "94.12"}, "missing_lines": [42], "excluded_lines": [], "functions": {"get_info": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42], "excluded_lines": [], "start_line": 32}, "": {"executed_lines": [8, 9, 11, 12, 14, 15, 17, 18, 21, 24, 25, 26, 27, 28, 31, 32], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"InfoResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [8, 9, 11, 12, 14, 15, 17, 18, 21, 24, 25, 26, 27, 28, 31, 32], "summary": {"covered_lines": 16, "num_statements": 17, "percent_covered": 94.11764705882354, "percent_covered_display": "94.12", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.11764705882354, "percent_statements_covered_display": "94.12"}, "missing_lines": [42], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\training.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 70, 71, 97, 98, 119, 120, 155, 156, 191, 192], "summary": {"covered_lines": 25, "num_statements": 70, "percent_covered": 35.714285714285715, "percent_covered_display": "35.71", "missing_lines": 45, "excluded_lines": 0, "percent_statements_covered": 35.714285714285715, "percent_statements_covered_display": "35.71"}, "missing_lines": [46, 47, 48, 50, 53, 54, 55, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67, 88, 89, 90, 92, 94, 114, 116, 136, 137, 138, 141, 144, 147, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 209, 210, 211, 213, 215], "excluded_lines": [], "functions": {"start_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [46, 47, 48, 50, 53, 54, 55, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67], "excluded_lines": [], "start_line": 22}, "get_dweller_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [88, 89, 90, 92, 94], "excluded_lines": [], "start_line": 71}, "list_vault_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [114, 116], "excluded_lines": [], "start_line": 98}, "get_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [136, 137, 138, 141, 144, 147], "excluded_lines": [], "start_line": 120}, "cancel_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [176, 177, 178, 181, 183, 184, 185, 186, 187, 188], "excluded_lines": [], "start_line": 156}, "list_room_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [209, 210, 211, 213, 215], "excluded_lines": [], "start_line": 192}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 70, 71, 97, 98, 119, 120, 155, 156, 191, 192], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 70, 71, 97, 98, 119, 120, 155, 156, 191, 192], "summary": {"covered_lines": 25, "num_statements": 70, "percent_covered": 35.714285714285715, "percent_covered_display": "35.71", "missing_lines": 45, "excluded_lines": 0, "percent_statements_covered": 35.714285714285715, "percent_statements_covered_display": "35.71"}, "missing_lines": [46, 47, 48, 50, 53, 54, 55, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67, 88, 89, 90, 92, 94, 114, 116, 136, 137, 138, 141, 144, 147, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 209, 210, 211, 213, 215], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\user.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 25, 26, 45, 46, 59, 60, 82, 83, 90, 91, 146, 147, 167, 168, 192, 193, 226, 227, 267, 268], "summary": {"covered_lines": 38, "num_statements": 104, "percent_covered": 36.53846153846154, "percent_covered_display": "36.54", "missing_lines": 66, "excluded_lines": 0, "percent_statements_covered": 36.53846153846154, "percent_statements_covered_display": "36.54"}, "missing_lines": [35, 36, 37, 42, 56, 71, 72, 73, 74, 75, 76, 77, 78, 79, 87, 102, 103, 107, 108, 109, 113, 114, 117, 118, 119, 120, 123, 124, 129, 131, 133, 135, 136, 138, 156, 157, 158, 159, 160, 164, 178, 179, 180, 184, 213, 214, 215, 218, 219, 220, 221, 223, 251, 252, 253, 254, 255, 257, 258, 260, 261, 262, 263, 264, 286, 288], "excluded_lines": [], "functions": {"create_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [35, 36, 37, 42], "excluded_lines": [], "start_line": 26}, "read_users": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [56], "excluded_lines": [], "start_line": 46}, "update_user_me": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [71, 72, 73, 74, 75, 76, 77, 78, 79], "excluded_lines": [], "start_line": 60}, "read_user_me": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [87], "excluded_lines": [], "start_line": 83}, "create_user_open": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [102, 103, 107, 108, 109, 113, 114, 117, 118, 119, 120, 123, 124, 129, 131, 133, 135, 136, 138], "excluded_lines": [], "start_line": 91}, "read_user_by_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [156, 157, 158, 159, 160, 164], "excluded_lines": [], "start_line": 147}, "update_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [178, 179, 180, 184], "excluded_lines": [], "start_line": 168}, "get_my_profile": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [213, 214, 215, 218, 219, 220, 221, 223], "excluded_lines": [], "start_line": 193}, "update_my_profile": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [251, 252, 253, 254, 255, 257, 258, 260, 261, 262, 263, 264], "excluded_lines": [], "start_line": 227}, "get_death_statistics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [286, 288], "excluded_lines": [], "start_line": 268}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 25, 26, 45, 46, 59, 60, 82, 83, 90, 91, 146, 147, 167, 168, 192, 193, 226, 227, 267, 268], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 25, 26, 45, 46, 59, 60, 82, 83, 90, 91, 146, 147, 167, 168, 192, 193, 226, 227, 267, 268], "summary": {"covered_lines": 38, "num_statements": 104, "percent_covered": 36.53846153846154, "percent_covered_display": "36.54", "missing_lines": 66, "excluded_lines": 0, "percent_statements_covered": 36.53846153846154, "percent_statements_covered_display": "36.54"}, "missing_lines": [35, 36, 37, 42, 56, 71, 72, 73, 74, 75, 76, 77, 78, 79, 87, 102, 103, 107, 108, 109, 113, 114, 117, 118, 119, 120, 123, 124, 129, 131, 133, 135, 136, 138, 156, 157, 158, 159, 160, 164, 178, 179, 180, 184, 213, 214, 215, 218, 219, 220, 221, 223, 251, 252, 253, 254, 255, 257, 258, 260, 261, 262, 263, 264, 286, 288], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\vault.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 17, 18, 27, 28, 38, 39, 47, 48, 65, 66, 79, 80, 92, 93, 102, 103, 114, 115], "summary": {"covered_lines": 29, "num_statements": 49, "percent_covered": 59.183673469387756, "percent_covered_display": "59.18", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 59.183673469387756, "percent_statements_covered_display": "59.18"}, "missing_lines": [24, 35, 44, 54, 55, 56, 59, 60, 62, 73, 74, 75, 76, 86, 87, 88, 89, 99, 109, 121], "excluded_lines": [], "functions": {"create_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24], "excluded_lines": [], "start_line": 18}, "read_vault_list": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [35], "excluded_lines": [], "start_line": 28}, "read_my_vaults": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [44], "excluded_lines": [], "start_line": 39}, "read_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [54, 55, 56, 59, 60, 62], "excluded_lines": [], "start_line": 48}, "update_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [73, 74, 75, 76], "excluded_lines": [], "start_line": 66}, "delete_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [86, 87, 88, 89], "excluded_lines": [], "start_line": 80}, "toggle_game_state": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [99], "excluded_lines": [], "start_line": 93}, "start_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [109], "excluded_lines": [], "start_line": 103}, "update_vault_resources": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [121], "excluded_lines": [], "start_line": 115}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 17, 18, 27, 28, 38, 39, 47, 48, 65, 66, 79, 80, 92, 93, 102, 103, 114, 115], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 17, 18, 27, 28, 38, 39, 47, 48, 65, 66, 79, 80, 92, 93, 102, 103, 114, 115], "summary": {"covered_lines": 29, "num_statements": 49, "percent_covered": 59.183673469387756, "percent_covered_display": "59.18", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 59.183673469387756, "percent_statements_covered_display": "59.18"}, "missing_lines": [24, 35, 44, 54, 55, 56, 59, 60, 62, 73, 74, 75, 76, 86, 87, 88, 89, 99, 109, 121], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\weapon.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 28, 29, 33, 34, 42, 43, 47, 48, 54, 55, 59, 60, 64, 65, 69, 70], "summary": {"covered_lines": 30, "num_statements": 40, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [18, 25, 30, 39, 44, 51, 56, 61, 66, 71], "excluded_lines": [], "functions": {"create_weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [18], "excluded_lines": [], "start_line": 17}, "read_weapon_list": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [25], "excluded_lines": [], "start_line": 22}, "read_weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [30], "excluded_lines": [], "start_line": 29}, "update_weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [39], "excluded_lines": [], "start_line": 34}, "delete_weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [44], "excluded_lines": [], "start_line": 43}, "equip_weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [51], "excluded_lines": [], "start_line": 48}, "unequip_weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [56], "excluded_lines": [], "start_line": 55}, "scrap_weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [61], "excluded_lines": [], "start_line": 60}, "sell_weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [66], "excluded_lines": [], "start_line": 65}, "read_weapons_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [71], "excluded_lines": [], "start_line": 70}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 28, 29, 33, 34, 42, 43, 47, 48, 54, 55, 59, 60, 64, 65, 69, 70], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 28, 29, 33, 34, 42, 43, 47, 48, 54, 55, 59, 60, 64, 65, 69, 70], "summary": {"covered_lines": 30, "num_statements": 40, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [18, 25, 30, 39, 44, 51, 56, 61, 66, 71], "excluded_lines": [], "start_line": 1}}}, "app\\api\\v1\\endpoints\\websocket.py": {"executed_lines": [1, 2, 4, 5, 7, 9, 10, 13, 14, 45, 46], "summary": {"covered_lines": 11, "num_statements": 34, "percent_covered": 32.35294117647059, "percent_covered_display": "32.35", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 32.35294117647059, "percent_statements_covered_display": "32.35"}, "missing_lines": [35, 37, 39, 40, 42, 79, 80, 83, 84, 85, 86, 88, 89, 91, 93, 94, 98, 102, 107, 109, 110, 112, 113], "excluded_lines": [], "functions": {"websocket_endpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [35, 37, 39, 40, 42], "excluded_lines": [], "start_line": 14}, "chat_websocket_endpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [79, 80, 83, 84, 85, 86, 88, 89, 91, 93, 94, 98, 102, 107, 109, 110, 112, 113], "excluded_lines": [], "start_line": 46}, "": {"executed_lines": [1, 2, 4, 5, 7, 9, 10, 13, 14, 45, 46], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 7, 9, 10, 13, 14, 45, 46], "summary": {"covered_lines": 11, "num_statements": 34, "percent_covered": 32.35294117647059, "percent_covered_display": "32.35", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 32.35294117647059, "percent_statements_covered_display": "32.35"}, "missing_lines": [35, 37, 39, 40, 42, 79, 80, 83, 84, 85, 86, 88, 89, 91, 93, 94, 98, 102, 107, 109, 110, 112, 113], "excluded_lines": [], "start_line": 1}}}, "app\\cli\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\cli\\app\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\cli\\app\\manage.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 2, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 5, 8, 10, 11, 12, 13, 15, 18, 20, 21, 22, 25, 26, 30, 44, 47, 65, 68, 78, 81, 82, 84, 106, 109, 114, 116], "excluded_lines": [119, 120], "functions": {"create_file_with_boilerplate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [10, 11, 12, 13, 15], "excluded_lines": [], "start_line": 8}, "append_to_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20, 21, 22], "excluded_lines": [], "start_line": 18}, "startapp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [30, 44, 47, 65, 68, 78, 81, 82, 84, 106, 109, 114, 116], "excluded_lines": [], "start_line": 26}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 2, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 5, 8, 18, 25, 26], "excluded_lines": [119, 120], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 2, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 5, 8, 10, 11, 12, 13, 15, 18, 20, 21, 22, 25, 26, 30, 44, 47, 65, 68, 78, 81, 82, 84, 106, 109, 114, 116], "excluded_lines": [119, 120], "start_line": 1}}}, "app\\cli\\migrations\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\cli\\migrations\\cli.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 44, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 15, 16, 24, 25, 27, 29, 31, 37, 38, 41, 42, 43, 44, 45, 46, 49, 50, 63, 64, 78, 79, 81, 83, 86, 95, 96, 105, 106, 114, 115, 118, 119, 127, 128], "excluded_lines": [], "functions": {"init": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24, 25, 27, 29, 31, 37, 38, 41, 42, 43, 44, 45, 46], "excluded_lines": [], "start_line": 16}, "revision": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [63, 64], "excluded_lines": [], "start_line": 50}, "show": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [81, 83], "excluded_lines": [], "start_line": 79}, "merge": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [95, 96], "excluded_lines": [], "start_line": 86}, "upgrade": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [114, 115], "excluded_lines": [], "start_line": 106}, "downgrade": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [127, 128], "excluded_lines": [], "start_line": 119}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 15, 16, 49, 50, 78, 79, 86, 105, 106, 118, 119], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 44, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 15, 16, 24, 25, 27, 29, 31, 37, 38, 41, 42, 43, 44, 45, 46, 49, 50, 63, 64, 78, 79, 81, 83, 86, 95, 96, 105, 106, 114, 115, 118, 119, 127, 128], "excluded_lines": [], "start_line": 1}}}, "app\\core\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\core\\celery.py": {"executed_lines": [1, 3, 4, 7, 8, 10, 12, 19, 22, 35, 37], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 7, 8, 10, 12, 19, 22, 35, 37], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 7, 8, 10, 12, 19, 22, 35, 37], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\core\\config.py": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 53, 54, 65, 66, 73, 74, 75, 76, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 109, 110, 111, 112, 121, 123, 124, 125, 127, 130, 132, 133, 134, 135, 144, 146, 147, 148, 149, 158, 161], "summary": {"covered_lines": 89, "num_statements": 98, "percent_covered": 90.81632653061224, "percent_covered_display": "90.82", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 90.81632653061224, "percent_statements_covered_display": "90.82"}, "missing_lines": [56, 68, 69, 71, 107, 119, 128, 142, 156], "excluded_lines": [], "functions": {"Settings.minio_enabled": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [56], "excluded_lines": [], "start_line": 54}, "Settings.minio_public_base_url": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [68, 69, 71], "excluded_lines": [], "start_line": 66}, "Settings.redis_url": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [107], "excluded_lines": [], "start_line": 106}, "Settings.assemble_db_connection": {"executed_lines": [111, 112], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [119], "excluded_lines": [], "start_line": 110}, "Settings.assemble_celery_db_connection": {"executed_lines": [125, 127], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [128], "excluded_lines": [], "start_line": 124}, "Settings.assemble_celery_beat_db_connection": {"executed_lines": [134, 135], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [142], "excluded_lines": [], "start_line": 133}, "Settings.assemble_async_celery_beat_db_connection": {"executed_lines": [148, 149], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [156], "excluded_lines": [], "start_line": 147}, "": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 53, 54, 65, 66, 73, 74, 75, 76, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 109, 110, 121, 123, 124, 130, 132, 133, 144, 146, 147, 158, 161], "summary": {"covered_lines": 81, "num_statements": 81, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"Settings": {"executed_lines": [111, 112, 125, 127, 134, 135, 148, 149], "summary": {"covered_lines": 8, "num_statements": 17, "percent_covered": 47.05882352941177, "percent_covered_display": "47.06", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 47.05882352941177, "percent_statements_covered_display": "47.06"}, "missing_lines": [56, 68, 69, 71, 107, 119, 128, 142, 156], "excluded_lines": [], "start_line": 8}, "": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 53, 54, 65, 66, 73, 74, 75, 76, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 109, 110, 121, 123, 124, 130, 132, 133, 144, 146, 147, 158, 161], "summary": {"covered_lines": 81, "num_statements": 81, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\core\\email.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 11, 14, 15, 21, 62, 70, 92, 115], "summary": {"covered_lines": 15, "num_statements": 45, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [30, 31, 32, 33, 36, 37, 39, 41, 46, 47, 48, 50, 51, 52, 53, 55, 56, 57, 58, 59, 66, 67, 74, 76, 85, 96, 98, 108, 119, 128], "excluded_lines": [], "functions": {"send_email": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 20, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [30, 31, 32, 33, 36, 37, 39, 41, 46, 47, 48, 50, 51, 52, 53, 55, 56, 57, 58, 59], "excluded_lines": [], "start_line": 21}, "render_email_template": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [66, 67], "excluded_lines": [], "start_line": 62}, "send_verification_email": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [74, 76, 85], "excluded_lines": [], "start_line": 70}, "send_password_reset_email": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [96, 98, 108], "excluded_lines": [], "start_line": 92}, "send_password_changed_email": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [119, 128], "excluded_lines": [], "start_line": 115}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 11, 14, 15, 21, 62, 70, 92, 115], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 11, 14, 15, 21, 62, 70, 92, 115], "summary": {"covered_lines": 15, "num_statements": 45, "percent_covered": 33.333333333333336, "percent_covered_display": "33.33", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33.33"}, "missing_lines": [30, 31, 32, 33, 36, 37, 39, 41, 46, 47, 48, 50, 51, 52, 53, 55, 56, 57, 58, 59, 66, 67, 74, 76, 85, 96, 98, 108, 119, 128], "excluded_lines": [], "start_line": 1}}}, "app\\core\\game_config.py": {"executed_lines": [14, 16, 17, 19, 21, 24, 27, 29, 35, 43, 46, 48, 54, 59, 64, 70, 76, 84, 85, 86, 87, 88, 89, 92, 93, 94, 95, 96, 97, 99, 111, 122, 123, 132, 135, 137, 138, 139, 140, 141, 144, 145, 146, 147, 150, 151, 152, 155, 156, 159, 162, 164, 165, 166, 167, 170, 173, 176, 177, 178, 179, 180, 183, 184, 185, 188, 189, 190, 193, 194, 197, 198, 201, 202, 205, 208, 210, 211, 214, 215, 216, 219, 220, 222, 232, 235, 238, 239, 240, 241, 244, 245, 246, 249, 250, 252, 262, 265, 267, 268, 269, 272, 273, 274, 275, 277, 278, 279, 281, 287, 288, 290, 293, 296, 298, 304, 305, 306, 314, 315, 316, 324, 327, 330, 331, 333, 334, 337, 338, 339, 340, 341, 343, 344, 347, 350, 352, 357, 358, 359, 362, 363, 364, 366, 368, 378, 381, 384, 395, 396, 397, 398, 401, 409, 416, 424, 425, 426, 427, 429, 431, 434, 437, 440, 441, 444, 445, 446, 447, 450, 451, 453, 454, 456, 459, 460, 461, 464, 465, 466, 469, 470, 471, 474, 475, 476, 477, 480, 481, 484, 487, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 506, 509, 510, 511, 512, 513, 514], "summary": {"covered_lines": 211, "num_statements": 222, "percent_covered": 95.04504504504504, "percent_covered_display": "95.05", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 95.04504504504504, "percent_statements_covered_display": "95.05"}, "missing_lines": [101, 109, 113, 125, 224, 229, 254, 259, 289, 370, 375], "excluded_lines": [], "functions": {"IncidentConfig.get_difficulty_range": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [101, 109], "excluded_lines": [], "start_line": 99}, "IncidentConfig.get_spawn_weights": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [113], "excluded_lines": [], "start_line": 111}, "IncidentConfig.vault_door_incidents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [125], "excluded_lines": [], "start_line": 123}, "TrainingConfig.get_tier_multiplier": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [224, 229], "excluded_lines": [], "start_line": 222}, "ResourceConfig.get_tier_multiplier": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [254, 259], "excluded_lines": [], "start_line": 252}, "RelationshipConfig.validate_weights_sum": {"executed_lines": [281, 287, 288, 290], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [289], "excluded_lines": [], "start_line": 279}, "RadioConfig.get_tier_multiplier": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [370, 375], "excluded_lines": [], "start_line": 368}, "DeathConfig.calculate_revival_cost": {"executed_lines": [424, 425, 426, 427, 429, 431], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 416}, "": {"executed_lines": [14, 16, 17, 19, 21, 24, 27, 29, 35, 43, 46, 48, 54, 59, 64, 70, 76, 84, 85, 86, 87, 88, 89, 92, 93, 94, 95, 96, 97, 99, 111, 122, 123, 132, 135, 137, 138, 139, 140, 141, 144, 145, 146, 147, 150, 151, 152, 155, 156, 159, 162, 164, 165, 166, 167, 170, 173, 176, 177, 178, 179, 180, 183, 184, 185, 188, 189, 190, 193, 194, 197, 198, 201, 202, 205, 208, 210, 211, 214, 215, 216, 219, 220, 222, 232, 235, 238, 239, 240, 241, 244, 245, 246, 249, 250, 252, 262, 265, 267, 268, 269, 272, 273, 274, 275, 277, 278, 279, 293, 296, 298, 304, 305, 306, 314, 315, 316, 324, 327, 330, 331, 333, 334, 337, 338, 339, 340, 341, 343, 344, 347, 350, 352, 357, 358, 359, 362, 363, 364, 366, 368, 378, 381, 384, 395, 396, 397, 398, 401, 409, 416, 434, 437, 440, 441, 444, 445, 446, 447, 450, 451, 453, 454, 456, 459, 460, 461, 464, 465, 466, 469, 470, 471, 474, 475, 476, 477, 480, 481, 484, 487, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 506, 509, 510, 511, 512, 513, 514], "summary": {"covered_lines": 201, "num_statements": 201, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"GameLoopConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "IncidentConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [101, 109, 113, 125], "excluded_lines": [], "start_line": 43}, "CombatConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 132}, "HealthConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 159}, "HappinessConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 170}, "TrainingConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [224, 229], "excluded_lines": [], "start_line": 205}, "ResourceConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [254, 259], "excluded_lines": [], "start_line": 232}, "RelationshipConfig": {"executed_lines": [281, 287, 288, 290], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [289], "excluded_lines": [], "start_line": 262}, "BreedingConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 293}, "LevelingConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 324}, "RadioConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [370, 375], "excluded_lines": [], "start_line": 347}, "DeathConfig": {"executed_lines": [424, 425, 426, 427, 429, 431], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 378}, "ExplorationConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 434}, "GameConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 484}, "": {"executed_lines": [14, 16, 17, 19, 21, 24, 27, 29, 35, 43, 46, 48, 54, 59, 64, 70, 76, 84, 85, 86, 87, 88, 89, 92, 93, 94, 95, 96, 97, 99, 111, 122, 123, 132, 135, 137, 138, 139, 140, 141, 144, 145, 146, 147, 150, 151, 152, 155, 156, 159, 162, 164, 165, 166, 167, 170, 173, 176, 177, 178, 179, 180, 183, 184, 185, 188, 189, 190, 193, 194, 197, 198, 201, 202, 205, 208, 210, 211, 214, 215, 216, 219, 220, 222, 232, 235, 238, 239, 240, 241, 244, 245, 246, 249, 250, 252, 262, 265, 267, 268, 269, 272, 273, 274, 275, 277, 278, 279, 293, 296, 298, 304, 305, 306, 314, 315, 316, 324, 327, 330, 331, 333, 334, 337, 338, 339, 340, 341, 343, 344, 347, 350, 352, 357, 358, 359, 362, 363, 364, 366, 368, 378, 381, 384, 395, 396, 397, 398, 401, 409, 416, 434, 437, 440, 441, 444, 445, 446, 447, 450, 451, 453, 454, 456, 459, 460, 461, 464, 465, 466, 469, 470, 471, 474, 475, 476, 477, 480, 481, 484, 487, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 506, 509, 510, 511, 512, 513, 514], "summary": {"covered_lines": 201, "num_statements": 201, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\core\\logging.py": {"executed_lines": [3, 4, 5, 6, 8, 11, 14, 17, 18, 19, 22, 25, 50, 64, 65, 68, 71, 72, 75, 76, 79, 84, 88, 89, 92, 100, 101, 102, 103, 106, 119, 124], "summary": {"covered_lines": 32, "num_statements": 52, "percent_covered": 61.53846153846154, "percent_covered_display": "61.54", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 61.53846153846154, "percent_statements_covered_display": "61.54"}, "missing_lines": [31, 34, 35, 36, 37, 38, 41, 42, 43, 46, 47, 81, 93, 94, 95, 96, 97, 116, 121, 126], "excluded_lines": [], "functions": {"RequestIdFilter.filter": {"executed_lines": [18, 19], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "CustomJsonFormatter.add_fields": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 34, 35, 36, 37, 38, 41, 42, 43, 46, 47], "excluded_lines": [], "start_line": 25}, "setup_logging": {"executed_lines": [64, 65, 68, 71, 72, 75, 76, 79, 84, 88, 89, 92, 100, 101, 102, 103], "summary": {"covered_lines": 16, "num_statements": 22, "percent_covered": 72.72727272727273, "percent_covered_display": "72.73", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 72.72727272727273, "percent_statements_covered_display": "72.73"}, "missing_lines": [81, 93, 94, 95, 96, 97], "excluded_lines": [], "start_line": 50}, "get_logger": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [116], "excluded_lines": [], "start_line": 106}, "set_request_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [121], "excluded_lines": [], "start_line": 119}, "get_request_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [126], "excluded_lines": [], "start_line": 124}, "": {"executed_lines": [3, 4, 5, 6, 8, 11, 14, 17, 22, 25, 50, 106, 119, 124], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RequestIdFilter": {"executed_lines": [18, 19], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "CustomJsonFormatter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 34, 35, 36, 37, 38, 41, 42, 43, 46, 47], "excluded_lines": [], "start_line": 22}, "": {"executed_lines": [3, 4, 5, 6, 8, 11, 14, 17, 22, 25, 50, 64, 65, 68, 71, 72, 75, 76, 79, 84, 88, 89, 92, 100, 101, 102, 103, 106, 119, 124], "summary": {"covered_lines": 30, "num_statements": 39, "percent_covered": 76.92307692307692, "percent_covered_display": "76.92", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 76.92307692307692, "percent_statements_covered_display": "76.92"}, "missing_lines": [81, 93, 94, 95, 96, 97, 116, 121, 126], "excluded_lines": [], "start_line": 1}}}, "app\\core\\security.py": {"executed_lines": [1, 2, 3, 5, 6, 7, 9, 11, 13, 16, 30, 34, 35, 38, 60, 74, 79, 88, 101, 110], "summary": {"covered_lines": 20, "num_statements": 65, "percent_covered": 30.76923076923077, "percent_covered_display": "30.77", "missing_lines": 45, "excluded_lines": 0, "percent_statements_covered": 30.76923076923077, "percent_statements_covered_display": "30.77"}, "missing_lines": [20, 21, 23, 26, 27, 31, 43, 44, 46, 48, 49, 51, 55, 57, 61, 62, 63, 65, 66, 67, 68, 69, 71, 75, 76, 83, 84, 85, 92, 93, 94, 95, 96, 97, 98, 105, 106, 107, 114, 115, 116, 117, 118, 119, 120], "excluded_lines": [], "functions": {"create_access_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20, 21, 23, 26, 27], "excluded_lines": [], "start_line": 16}, "verify_password": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31], "excluded_lines": [], "start_line": 30}, "get_password_hash": {"executed_lines": [35], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "create_refresh_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [43, 44, 46, 48, 49, 51, 55, 57], "excluded_lines": [], "start_line": 38}, "verify_refresh_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [61, 62, 63, 65, 66, 67, 68, 69, 71], "excluded_lines": [], "start_line": 60}, "invalidate_refresh_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [75, 76], "excluded_lines": [], "start_line": 74}, "create_email_verification_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [83, 84, 85], "excluded_lines": [], "start_line": 79}, "verify_email_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [92, 93, 94, 95, 96, 97, 98], "excluded_lines": [], "start_line": 88}, "create_password_reset_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [105, 106, 107], "excluded_lines": [], "start_line": 101}, "verify_password_reset_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [114, 115, 116, 117, 118, 119, 120], "excluded_lines": [], "start_line": 110}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 9, 11, 13, 16, 30, 34, 38, 60, 74, 79, 88, 101, 110], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 5, 6, 7, 9, 11, 13, 16, 30, 34, 35, 38, 60, 74, 79, 88, 101, 110], "summary": {"covered_lines": 20, "num_statements": 65, "percent_covered": 30.76923076923077, "percent_covered_display": "30.77", "missing_lines": 45, "excluded_lines": 0, "percent_statements_covered": 30.76923076923077, "percent_statements_covered_display": "30.77"}, "missing_lines": [20, 21, 23, 26, 27, 31, 43, 44, 46, 48, 49, 51, 55, 57, 61, 62, 63, 65, 66, 67, 68, 69, 71, 75, 76, 83, 84, 85, 92, 93, 94, 95, 96, 97, 98, 105, 106, 107, 114, 115, 116, 117, 118, 119, 120], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\__init__.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\base.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 12, 13, 14, 17, 24, 25, 27, 36, 37, 38, 39, 41, 43, 56, 66, 82, 91, 92, 93, 94, 98, 99, 101, 119, 133, 134, 136, 137, 139, 140, 141, 142, 144, 173, 185], "summary": {"covered_lines": 43, "num_statements": 87, "percent_covered": 49.42528735632184, "percent_covered_display": "49.43", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 49.42528735632184, "percent_statements_covered_display": "49.43"}, "missing_lines": [40, 53, 54, 63, 64, 78, 79, 80, 95, 96, 97, 110, 111, 112, 113, 114, 115, 116, 117, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 166, 167, 169, 170, 171, 181, 182, 183, 197, 198, 199, 200, 201, 202, 203], "excluded_lines": [], "functions": {"CRUDBase.__init__": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "CRUDBase.get": {"executed_lines": [36, 37, 38, 39, 41], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83.33", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83.33"}, "missing_lines": [40], "excluded_lines": [], "start_line": 27}, "CRUDBase.get_by_ids": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [53, 54], "excluded_lines": [], "start_line": 43}, "CRUDBase.get_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [63, 64], "excluded_lines": [], "start_line": 56}, "CRUDBase.get_multi": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [78, 79, 80], "excluded_lines": [], "start_line": 66}, "CRUDBase.create": {"executed_lines": [91, 92, 93, 94, 98, 99], "summary": {"covered_lines": 6, "num_statements": 9, "percent_covered": 66.66666666666667, "percent_covered_display": "66.67", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "66.67"}, "missing_lines": [95, 96, 97], "excluded_lines": [], "start_line": 82}, "CRUDBase.create_all": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [110, 111, 112, 113, 114, 115, 116, 117], "excluded_lines": [], "start_line": 101}, "CRUDBase.update": {"executed_lines": [133, 134, 136, 137, 139, 140, 141, 142], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 119}, "CRUDBase.upsert": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 166, 167, 169, 170, 171], "excluded_lines": [], "start_line": 144}, "CRUDBase.exists": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [181, 182, 183], "excluded_lines": [], "start_line": 173}, "CRUDBase.delete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [197, 198, 199, 200, 201, 202, 203], "excluded_lines": [], "start_line": 185}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 12, 13, 14, 17, 24, 27, 43, 56, 66, 82, 101, 119, 144, 173, 185], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDBase": {"executed_lines": [25, 36, 37, 38, 39, 41, 91, 92, 93, 94, 98, 99, 133, 134, 136, 137, 139, 140, 141, 142], "summary": {"covered_lines": 20, "num_statements": 64, "percent_covered": 31.25, "percent_covered_display": "31.25", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 31.25, "percent_statements_covered_display": "31.25"}, "missing_lines": [40, 53, 54, 63, 64, 78, 79, 80, 95, 96, 97, 110, 111, 112, 113, 114, 115, 116, 117, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 166, 167, 169, 170, 171, 181, 182, 183, 197, 198, 199, 200, 201, 202, 203], "excluded_lines": [], "start_line": 17}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 12, 13, 14, 17, 24, 27, 43, 56, 66, 82, 101, 119, 144, 173, 185], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\chat_message.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 63, 74, 84], "summary": {"covered_lines": 10, "num_statements": 22, "percent_covered": 45.45454545454545, "percent_covered_display": "45.45", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 45.45454545454545, "percent_statements_covered_display": "45.45"}, "missing_lines": [26, 27, 28, 42, 43, 58, 60, 61, 65, 71, 72, 81], "excluded_lines": [], "functions": {"CRUDChatMessage.get_conversation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [26, 27, 28, 42, 43, 58, 60, 61], "excluded_lines": [], "start_line": 11}, "CRUDChatMessage.get_recent_conversations": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [65, 71, 72], "excluded_lines": [], "start_line": 63}, "CRUDChatMessage.create_message": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [81], "excluded_lines": [], "start_line": 74}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 63, 74, 84], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDChatMessage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [26, 27, 28, 42, 43, 58, 60, 61, 65, 71, 72, 81], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 63, 74, 84], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\dweller.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 22, 23, 25, 28, 29, 31, 33, 43, 44, 45, 47, 49, 92, 111, 112, 130, 131, 135, 136, 139, 174, 180, 219, 228, 232, 249, 267, 285, 303, 305, 306, 308, 309, 310, 312, 328, 337, 338, 340, 356, 364, 365, 367, 433], "summary": {"covered_lines": 57, "num_statements": 179, "percent_covered": 31.843575418994412, "percent_covered_display": "31.84", "missing_lines": 122, "excluded_lines": 0, "percent_statements_covered": 31.843575418994412, "percent_statements_covered_display": "31.84"}, "missing_lines": [46, 61, 64, 65, 68, 69, 70, 75, 77, 78, 80, 81, 82, 83, 84, 86, 88, 89, 90, 101, 108, 109, 116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 127, 128, 133, 137, 141, 143, 144, 145, 146, 148, 149, 150, 151, 153, 158, 160, 161, 162, 172, 176, 177, 178, 184, 187, 188, 190, 193, 194, 196, 199, 202, 204, 205, 206, 207, 210, 213, 215, 217, 221, 222, 223, 226, 230, 234, 244, 245, 247, 251, 253, 254, 256, 257, 260, 261, 263, 269, 271, 272, 274, 275, 278, 279, 281, 371, 372, 374, 377, 387, 390, 396, 397, 399, 400, 405, 406, 407, 408, 413, 414, 416, 417, 418, 421, 422, 423, 424, 426, 427, 430], "excluded_lines": [], "functions": {"CRUDDweller.get": {"executed_lines": [31, 33, 43, 44, 45, 47], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "85.71", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "85.71"}, "missing_lines": [46], "excluded_lines": [], "start_line": 29}, "CRUDDweller.get_multi_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [61, 64, 65, 68, 69, 70, 75, 77, 78, 80, 81, 82, 83, 84, 86, 88, 89, 90], "excluded_lines": [], "start_line": 49}, "CRUDDweller.get_by_status": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [101, 108, 109], "excluded_lines": [], "start_line": 92}, "CRUDDweller.create_random": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 127, 128], "excluded_lines": [], "start_line": 112}, "CRUDDweller.calculate_experience_required": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [133], "excluded_lines": [], "start_line": 131}, "CRUDDweller.is_alive": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [137], "excluded_lines": [], "start_line": 136}, "CRUDDweller.add_experience": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [141, 143, 144, 145, 146, 148, 149, 150, 151, 153, 158, 160, 161, 162, 172], "excluded_lines": [], "start_line": 139}, "CRUDDweller.get_dweller_by_name": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [176, 177, 178], "excluded_lines": [], "start_line": 174}, "CRUDDweller.move_to_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [184, 187, 188, 190, 193, 194, 196, 199, 202, 204, 205, 206, 207, 210, 213, 215, 217], "excluded_lines": [], "start_line": 180}, "CRUDDweller.reanimate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [221, 222, 223, 226], "excluded_lines": [], "start_line": 219}, "CRUDDweller.mark_as_dead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [230], "excluded_lines": [], "start_line": 228}, "CRUDDweller.get_full_info": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [234, 244, 245, 247], "excluded_lines": [], "start_line": 232}, "CRUDDweller.use_stimpack": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [251, 253, 254, 256, 257, 260, 261, 263], "excluded_lines": [], "start_line": 249}, "CRUDDweller.use_radaway": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [269, 271, 272, 274, 275, 278, 279, 281], "excluded_lines": [], "start_line": 267}, "CRUDDweller.get_dead_dwellers": {"executed_lines": [303, 305, 306, 308, 309, 310], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 285}, "CRUDDweller.get_revivable_dwellers": {"executed_lines": [328, 337, 338], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 312}, "CRUDDweller.get_graveyard": {"executed_lines": [356, 364, 365], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 340}, "CRUDDweller.auto_assign_to_best_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 26, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [371, 372, 374, 377, 387, 390, 396, 397, 399, 400, 405, 406, 407, 408, 413, 414, 416, 417, 418, 421, 422, 423, 424, 426, 427, 430], "excluded_lines": [], "start_line": 367}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 22, 23, 25, 28, 29, 49, 92, 111, 112, 130, 131, 135, 136, 139, 174, 180, 219, 228, 232, 249, 267, 285, 312, 340, 367, 433], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDDweller": {"executed_lines": [31, 33, 43, 44, 45, 47, 303, 305, 306, 308, 309, 310, 328, 337, 338, 356, 364, 365], "summary": {"covered_lines": 18, "num_statements": 140, "percent_covered": 12.857142857142858, "percent_covered_display": "12.86", "missing_lines": 122, "excluded_lines": 0, "percent_statements_covered": 12.857142857142858, "percent_statements_covered_display": "12.86"}, "missing_lines": [46, 61, 64, 65, 68, 69, 70, 75, 77, 78, 80, 81, 82, 83, 84, 86, 88, 89, 90, 101, 108, 109, 116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 127, 128, 133, 137, 141, 143, 144, 145, 146, 148, 149, 150, 151, 153, 158, 160, 161, 162, 172, 176, 177, 178, 184, 187, 188, 190, 193, 194, 196, 199, 202, 204, 205, 206, 207, 210, 213, 215, 217, 221, 222, 223, 226, 230, 234, 244, 245, 247, 251, 253, 254, 256, 257, 260, 261, 263, 269, 271, 272, 274, 275, 278, 279, 281, 371, 372, 374, 377, 387, 390, 396, 397, 399, 400, 405, 406, 407, 408, 413, 414, 416, 417, 418, 421, 422, 423, 424, 426, 427, 430], "excluded_lines": [], "start_line": 28}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 22, 23, 25, 28, 29, 49, 92, 111, 112, 130, 131, 135, 136, 139, 174, 180, 219, 228, 232, 249, 267, 285, 312, 340, 367, 433], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\exploration.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 15, 18, 66, 80, 94, 102, 116, 130, 147, 164, 188], "summary": {"covered_lines": 19, "num_statements": 72, "percent_covered": 26.38888888888889, "percent_covered_display": "26.39", "missing_lines": 53, "excluded_lines": 0, "percent_statements_covered": 26.38888888888889, "percent_statements_covered_display": "26.39"}, "missing_lines": [31, 32, 34, 41, 53, 56, 57, 58, 60, 62, 63, 64, 73, 78, 87, 92, 99, 100, 109, 110, 111, 112, 113, 114, 123, 124, 125, 126, 127, 128, 140, 141, 142, 143, 144, 145, 157, 158, 159, 160, 161, 162, 174, 175, 176, 177, 178, 179, 180, 182, 183, 184, 185], "excluded_lines": [], "functions": {"CRUDExploration.create_with_dweller_stats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 32, 34, 41, 53, 56, 57, 58, 60, 62, 63, 64], "excluded_lines": [], "start_line": 18}, "CRUDExploration.get_active_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [73, 78], "excluded_lines": [], "start_line": 66}, "CRUDExploration.get_by_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [87, 92], "excluded_lines": [], "start_line": 80}, "CRUDExploration.get_all_active": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [99, 100], "excluded_lines": [], "start_line": 94}, "CRUDExploration.complete_exploration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [109, 110, 111, 112, 113, 114], "excluded_lines": [], "start_line": 102}, "CRUDExploration.recall_exploration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [123, 124, 125, 126, 127, 128], "excluded_lines": [], "start_line": 116}, "CRUDExploration.add_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [140, 141, 142, 143, 144, 145], "excluded_lines": [], "start_line": 130}, "CRUDExploration.add_loot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [157, 158, 159, 160, 161, 162], "excluded_lines": [], "start_line": 147}, "CRUDExploration.update_stats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [174, 175, 176, 177, 178, 179, 180, 182, 183, 184, 185], "excluded_lines": [], "start_line": 164}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 15, 18, 66, 80, 94, 102, 116, 130, 147, 164, 188], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDExploration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 53, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 53, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 32, 34, 41, 53, 56, 57, 58, 60, 62, 63, 64, 73, 78, 87, 92, 99, 100, 109, 110, 111, 112, 113, 114, 123, 124, 125, 126, 127, 128, 140, 141, 142, 143, 144, 145, 157, 158, 159, 160, 161, 162, 174, 175, 176, 177, 178, 179, 180, 182, 183, 184, 185], "excluded_lines": [], "start_line": 15}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 15, 18, 66, 80, 94, 102, 116, 130, 147, 164, 188], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\game_state.py": {"executed_lines": [3, 4, 5, 7, 10, 13, 14, 20, 21, 33, 34, 43, 44, 53, 54, 63, 64, 72], "summary": {"covered_lines": 18, "num_statements": 49, "percent_covered": 36.734693877551024, "percent_covered_display": "36.73", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 36.734693877551024, "percent_statements_covered_display": "36.73"}, "missing_lines": [16, 17, 18, 23, 25, 26, 27, 28, 29, 31, 36, 37, 38, 39, 40, 41, 46, 47, 48, 49, 50, 51, 56, 57, 58, 59, 60, 61, 66, 67, 68], "excluded_lines": [], "functions": {"CRUDGameState.get_by_vault_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [16, 17, 18], "excluded_lines": [], "start_line": 14}, "CRUDGameState.get_or_create": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [23, 25, 26, 27, 28, 29, 31], "excluded_lines": [], "start_line": 21}, "CRUDGameState.pause": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36, 37, 38, 39, 40, 41], "excluded_lines": [], "start_line": 34}, "CRUDGameState.resume": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [46, 47, 48, 49, 50, 51], "excluded_lines": [], "start_line": 44}, "CRUDGameState.update_tick": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [56, 57, 58, 59, 60, 61], "excluded_lines": [], "start_line": 54}, "CRUDGameState.get_all_active": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [66, 67, 68], "excluded_lines": [], "start_line": 64}, "": {"executed_lines": [3, 4, 5, 7, 10, 13, 14, 20, 21, 33, 34, 43, 44, 53, 54, 63, 64, 72], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDGameState": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 31, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [16, 17, 18, 23, 25, 26, 27, 28, 29, 31, 36, 37, 38, 39, 40, 41, 46, 47, 48, 49, 50, 51, 56, 57, 58, 59, 60, 61, 66, 67, 68], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [3, 4, 5, 7, 10, 13, 14, 20, 21, 33, 34, 43, 44, 53, 54, 63, 64, 72], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\incident.py": {"executed_lines": [3, 4, 5, 7, 10, 13, 14, 37, 38, 44, 45, 53, 54, 62, 63, 71, 72, 80, 81, 91, 92, 102, 103, 112, 113, 122, 123, 136], "summary": {"covered_lines": 28, "num_statements": 80, "percent_covered": 35.0, "percent_covered_display": "35.00", "missing_lines": 52, "excluded_lines": 0, "percent_statements_covered": 35.0, "percent_statements_covered_display": "35.00"}, "missing_lines": [24, 32, 33, 34, 35, 40, 41, 42, 47, 50, 51, 56, 59, 60, 65, 68, 69, 74, 77, 78, 83, 84, 85, 86, 87, 88, 89, 94, 95, 96, 97, 98, 99, 100, 105, 106, 107, 110, 115, 116, 117, 118, 119, 120, 125, 126, 127, 128, 129, 130, 131, 132], "excluded_lines": [], "functions": {"CRUDIncident.create": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24, 32, 33, 34, 35], "excluded_lines": [], "start_line": 14}, "CRUDIncident.get": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40, 41, 42], "excluded_lines": [], "start_line": 38}, "CRUDIncident.get_active_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [47, 50, 51], "excluded_lines": [], "start_line": 45}, "CRUDIncident.get_by_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [56, 59, 60], "excluded_lines": [], "start_line": 54}, "CRUDIncident.get_active_incident_types_in_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [65, 68, 69], "excluded_lines": [], "start_line": 63}, "CRUDIncident.get_rooms_with_active_incidents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [74, 77, 78], "excluded_lines": [], "start_line": 72}, "CRUDIncident.resolve": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [83, 84, 85, 86, 87, 88, 89], "excluded_lines": [], "start_line": 81}, "CRUDIncident.spread_to_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [94, 95, 96, 97, 98, 99, 100], "excluded_lines": [], "start_line": 92}, "CRUDIncident.get_spreading_incidents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [105, 106, 107, 110], "excluded_lines": [], "start_line": 103}, "CRUDIncident.remove": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [115, 116, 117, 118, 119, 120], "excluded_lines": [], "start_line": 113}, "CRUDIncident.remove_all_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [125, 126, 127, 128, 129, 130, 131, 132], "excluded_lines": [], "start_line": 123}, "": {"executed_lines": [3, 4, 5, 7, 10, 13, 14, 37, 38, 44, 45, 53, 54, 62, 63, 71, 72, 80, 81, 91, 92, 102, 103, 112, 113, 122, 123, 136], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDIncident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 52, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 52, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24, 32, 33, 34, 35, 40, 41, 42, 47, 50, 51, 56, 59, 60, 65, 68, 69, 74, 77, 78, 83, 84, 85, 86, 87, 88, 89, 94, 95, 96, 97, 98, 99, 100, 105, 106, 107, 110, 115, 116, 117, 118, 119, 120, 125, 126, 127, 128, 129, 130, 131, 132], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [3, 4, 5, 7, 10, 13, 14, 37, 38, 44, 45, 53, 54, 62, 63, 71, 72, 80, 81, 91, 92, 102, 103, 112, 113, 122, 123, 136], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\item_base.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 13, 14, 15, 16, 17, 19, 20, 23, 27, 33, 43, 91, 92, 118, 119, 122, 123, 130, 131, 135, 148, 149, 190, 200, 201, 211], "summary": {"covered_lines": 34, "num_statements": 124, "percent_covered": 27.419354838709676, "percent_covered_display": "27.42", "missing_lines": 90, "excluded_lines": 0, "percent_statements_covered": 27.419354838709676, "percent_statements_covered_display": "27.42"}, "missing_lines": [28, 29, 30, 31, 39, 40, 41, 44, 47, 49, 55, 56, 58, 59, 61, 63, 65, 66, 67, 69, 71, 72, 73, 75, 76, 77, 80, 81, 82, 84, 85, 86, 87, 89, 95, 97, 107, 108, 110, 111, 113, 114, 116, 120, 126, 132, 133, 136, 138, 139, 141, 143, 144, 146, 154, 157, 158, 159, 163, 164, 168, 169, 170, 171, 172, 175, 177, 178, 179, 188, 191, 192, 193, 195, 196, 197, 198, 203, 204, 205, 207, 208, 209, 212, 213, 214, 216, 218, 219, 220], "excluded_lines": [], "functions": {"CRUDItem.create": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [28, 29, 30, 31], "excluded_lines": [], "start_line": 27}, "CRUDItem.update": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [39, 40, 41], "excluded_lines": [], "start_line": 33}, "CRUDItem.equip": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 27, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [44, 47, 49, 55, 56, 58, 59, 61, 63, 65, 66, 67, 69, 71, 72, 73, 75, 76, 77, 80, 81, 82, 84, 85, 86, 87, 89], "excluded_lines": [], "start_line": 43}, "CRUDItem._fetch_unequip_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [95, 97, 107, 108, 110, 111, 113, 114, 116], "excluded_lines": [], "start_line": 92}, "CRUDItem._get_item_model": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [120], "excluded_lines": [], "start_line": 119}, "CRUDItem._update_item": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [126], "excluded_lines": [], "start_line": 123}, "CRUDItem._update_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [132, 133], "excluded_lines": [], "start_line": 131}, "CRUDItem.unequip": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [136, 138, 139, 141, 143, 144, 146], "excluded_lines": [], "start_line": 135}, "CRUDItem.convert_to_junk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [154, 157, 158, 159, 163, 164, 168, 169, 170, 171, 172, 175, 177, 178, 179, 188], "excluded_lines": [], "start_line": 149}, "CRUDItem.scrap": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [191, 192, 193, 195, 196, 197, 198], "excluded_lines": [], "start_line": 190}, "CRUDItem.add_caps_to_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [203, 204, 205, 207, 208, 209], "excluded_lines": [], "start_line": 201}, "CRUDItem.sell": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [212, 213, 214, 216, 218, 219, 220], "excluded_lines": [], "start_line": 211}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 13, 14, 15, 16, 17, 19, 20, 23, 27, 33, 43, 91, 92, 118, 119, 122, 123, 130, 131, 135, 148, 149, 190, 200, 201, 211], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDItem": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 90, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 90, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [28, 29, 30, 31, 39, 40, 41, 44, 47, 49, 55, 56, 58, 59, 61, 63, 65, 66, 67, 69, 71, 72, 73, 75, 76, 77, 80, 81, 82, 84, 85, 86, 87, 89, 95, 97, 107, 108, 110, 111, 113, 114, 116, 120, 126, 132, 133, 136, 138, 139, 141, 143, 144, 146, 154, 157, 158, 159, 163, 164, 168, 169, 170, 171, 172, 175, 177, 178, 179, 188, 191, 192, 193, 195, 196, 197, 198, 203, 204, 205, 207, 208, 209, 212, 213, 214, 216, 218, 219, 220], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 13, 14, 15, 16, 17, 19, 20, 23, 27, 33, 43, 91, 92, 118, 119, 122, 123, 130, 131, 135, 148, 149, 190, 200, 201, 211], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\junk.py": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDJunk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 6}, "": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\llm_interaction.py": {"executed_lines": [1, 2, 5, 6, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 5, 6, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDLLMInteraction": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 5}, "": {"executed_lines": [1, 2, 5, 6, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\mixins.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 10, 13, 14, 16, 28, 40, 50], "summary": {"covered_lines": 13, "num_statements": 28, "percent_covered": 46.42857142857143, "percent_covered_display": "46.43", "missing_lines": 15, "excluded_lines": 1, "percent_statements_covered": 46.42857142857143, "percent_statements_covered_display": "46.43"}, "missing_lines": [17, 20, 21, 23, 24, 26, 31, 34, 36, 38, 47, 51, 52, 53, 55], "excluded_lines": [48], "functions": {"CompletionMixin.get_link": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [17, 20, 21, 23, 24, 26], "excluded_lines": [], "start_line": 16}, "CompletionMixin._mark_as_complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 34, 36, 38], "excluded_lines": [], "start_line": 28}, "CompletionMixin._handle_completion_cascade": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 1, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [47], "excluded_lines": [48], "start_line": 40}, "CompletionMixin.complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [51, 52, 53, 55], "excluded_lines": [], "start_line": 50}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 10, 13, 14, 16, 28, 40, 50], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CompletionMixin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 1, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [17, 20, 21, 23, 24, 26, 31, 34, 36, 38, 47, 51, 52, 53, 55], "excluded_lines": [48], "start_line": 13}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 10, 13, 14, 16, 28, 40, 50], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\notification.py": {"executed_lines": [1, 2, 4, 5, 7, 8, 11, 12, 31, 42, 54, 70, 82], "summary": {"covered_lines": 13, "num_statements": 50, "percent_covered": 26.0, "percent_covered_display": "26.00", "missing_lines": 37, "excluded_lines": 0, "percent_statements_covered": 26.0, "percent_statements_covered_display": "26.00"}, "missing_lines": [22, 24, 25, 27, 28, 29, 33, 39, 40, 44, 45, 46, 47, 48, 49, 50, 51, 52, 56, 57, 58, 60, 61, 62, 63, 64, 65, 67, 68, 72, 73, 74, 75, 76, 77, 78, 79], "excluded_lines": [], "functions": {"CRUDNotification.get_user_notifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [22, 24, 25, 27, 28, 29], "excluded_lines": [], "start_line": 12}, "CRUDNotification.get_unread_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [33, 39, 40], "excluded_lines": [], "start_line": 31}, "CRUDNotification.mark_as_read": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [44, 45, 46, 47, 48, 49, 50, 51, 52], "excluded_lines": [], "start_line": 42}, "CRUDNotification.mark_all_as_read": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [56, 57, 58, 60, 61, 62, 63, 64, 65, 67, 68], "excluded_lines": [], "start_line": 54}, "CRUDNotification.dismiss": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [72, 73, 74, 75, 76, 77, 78, 79], "excluded_lines": [], "start_line": 70}, "": {"executed_lines": [1, 2, 4, 5, 7, 8, 11, 12, 31, 42, 54, 70, 82], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDNotification": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 37, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 37, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [22, 24, 25, 27, 28, 29, 33, 39, 40, 44, 45, 46, 47, 48, 49, 50, 51, 52, 56, 57, 58, 60, 61, 62, 63, 64, 65, 67, 68, 72, 73, 74, 75, 76, 77, 78, 79], "excluded_lines": [], "start_line": 11}, "": {"executed_lines": [1, 2, 4, 5, 7, 8, 11, 12, 31, 42, 54, 70, 82], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\objective.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 18, 19, 20, 22, 34, 59, 63, 99, 137], "summary": {"covered_lines": 19, "num_statements": 54, "percent_covered": 35.18518518518518, "percent_covered_display": "35.19", "missing_lines": 35, "excluded_lines": 0, "percent_statements_covered": 35.18518518518518, "percent_statements_covered_display": "35.19"}, "missing_lines": [23, 24, 26, 27, 29, 30, 32, 37, 44, 45, 47, 76, 79, 82, 83, 85, 87, 88, 91, 92, 94, 95, 97, 115, 118, 119, 121, 123, 124, 127, 129, 130, 132, 133, 134], "excluded_lines": [], "functions": {"CRUDObjective.__init__": {"executed_lines": [19, 20], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "CRUDObjective.create_for_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [23, 24, 26, 27, 29, 30, 32], "excluded_lines": [], "start_line": 22}, "CRUDObjective.get_multi_for_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [37, 44, 45, 47], "excluded_lines": [], "start_line": 34}, "CRUDObjective._handle_completion_cascade": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 59}, "CRUDObjective.complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [76, 79, 82, 83, 85, 87, 88, 91, 92, 94, 95, 97], "excluded_lines": [], "start_line": 63}, "CRUDObjective.update_progress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [115, 118, 119, 121, 123, 124, 127, 129, 130, 132, 133, 134], "excluded_lines": [], "start_line": 99}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 18, 22, 34, 59, 63, 99, 137], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDObjective": {"executed_lines": [19, 20], "summary": {"covered_lines": 2, "num_statements": 37, "percent_covered": 5.405405405405405, "percent_covered_display": "5.41", "missing_lines": 35, "excluded_lines": 0, "percent_statements_covered": 5.405405405405405, "percent_statements_covered_display": "5.41"}, "missing_lines": [23, 24, 26, 27, 29, 30, 32, 37, 44, 45, 47, 76, 79, 82, 83, 85, 87, 88, 91, 92, 94, 95, 97, 115, 118, 119, 121, 123, 124, 127, 129, 130, 132, 133, 134], "excluded_lines": [], "start_line": 14}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 18, 22, 34, 59, 63, 99, 137], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\outfit.py": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDOutfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 6}, "": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\prompt.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 4, 5, 8, 9, 10, 11, 12, 15], "excluded_lines": [], "functions": {"CRUDPrompt.get_prompt_by_name": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [10, 11, 12], "excluded_lines": [], "start_line": 9}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 4, 5, 8, 9, 15], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDPrompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [10, 11, 12], "excluded_lines": [], "start_line": 8}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 4, 5, 8, 9, 15], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\quest.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 21, 22, 24, 60, 61, 75, 79, 121], "summary": {"covered_lines": 22, "num_statements": 48, "percent_covered": 45.833333333333336, "percent_covered_display": "45.83", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 45.833333333333336, "percent_statements_covered_display": "45.83"}, "missing_lines": [30, 41, 42, 44, 62, 70, 71, 72, 73, 77, 95, 96, 97, 100, 103, 104, 106, 108, 109, 110, 111, 114, 115, 116, 117, 118], "excluded_lines": [], "functions": {"CRUDQuest.__init__": {"executed_lines": [21, 22], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "CRUDQuest.get_multi_for_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [30, 41, 42, 44], "excluded_lines": [], "start_line": 24}, "CRUDQuest.create_quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [62, 70, 71, 72, 73], "excluded_lines": [], "start_line": 61}, "CRUDQuest._handle_completion_cascade": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [77], "excluded_lines": [], "start_line": 75}, "CRUDQuest.assign_to_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [95, 96, 97, 100, 103, 104, 106, 108, 109, 110, 111, 114, 115, 116, 117, 118], "excluded_lines": [], "start_line": 79}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 24, 60, 61, 75, 79, 121], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDQuest": {"executed_lines": [21, 22], "summary": {"covered_lines": 2, "num_statements": 28, "percent_covered": 7.142857142857143, "percent_covered_display": "7.14", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 7.142857142857143, "percent_statements_covered_display": "7.14"}, "missing_lines": [30, 41, 42, 44, 62, 70, 71, 72, 73, 77, 95, 96, 97, 100, 103, 104, 106, 108, 109, 110, 111, 114, 115, 116, 117, 118], "excluded_lines": [], "start_line": 17}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 24, 60, 61, 75, 79, 121], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\relationship.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 18, 21, 45, 66, 102, 126, 146, 177, 211], "summary": {"covered_lines": 17, "num_statements": 49, "percent_covered": 34.69387755102041, "percent_covered_display": "34.69", "missing_lines": 32, "excluded_lines": 2, "percent_statements_covered": 34.69387755102041, "percent_statements_covered_display": "34.69"}, "missing_lines": [38, 42, 43, 60, 63, 64, 83, 85, 87, 89, 91, 92, 93, 99, 100, 117, 123, 124, 143, 144, 161, 163, 166, 167, 168, 174, 175, 198, 204, 205, 206, 207], "excluded_lines": [14, 15], "functions": {"CRUDRelationship.get_by_dweller_pair": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [38, 42, 43], "excluded_lines": [], "start_line": 21}, "CRUDRelationship.get_by_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [60, 63, 64], "excluded_lines": [], "start_line": 45}, "CRUDRelationship.get_by_type": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [83, 85, 87, 89, 91, 92, 93, 99, 100], "excluded_lines": [], "start_line": 66}, "CRUDRelationship.get_partners": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [117, 123, 124], "excluded_lines": [], "start_line": 102}, "CRUDRelationship.exists_between": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [143, 144], "excluded_lines": [], "start_line": 126}, "CRUDRelationship.get_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [161, 163, 166, 167, 168, 174, 175], "excluded_lines": [], "start_line": 146}, "CRUDRelationship.create_with_defaults": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [198, 204, 205, 206, 207], "excluded_lines": [], "start_line": 177}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 18, 21, 45, 66, 102, 126, 146, 177, 211], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [14, 15], "start_line": 1}}, "classes": {"CRUDRelationship": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 32, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 32, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [38, 42, 43, 60, 63, 64, 83, 85, 87, 89, 91, 92, 93, 99, 100, 117, 123, 124, 143, 144, 161, 163, 166, 167, 168, 174, 175, 198, 204, 205, 206, 207], "excluded_lines": [], "start_line": 18}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 12, 18, 21, 45, 66, 102, 126, 146, 177, 211], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [14, 15], "start_line": 1}}}, "app\\crud\\room.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 16, 19, 20, 21, 26, 27, 32, 33, 41, 42, 50, 51, 62, 63, 79, 80, 89, 101, 102, 108, 146, 160, 228], "summary": {"covered_lines": 34, "num_statements": 125, "percent_covered": 27.2, "percent_covered_display": "27.20", "missing_lines": 91, "excluded_lines": 0, "percent_statements_covered": 27.2, "percent_statements_covered_display": "27.20"}, "missing_lines": [23, 24, 29, 30, 34, 35, 36, 37, 38, 39, 43, 44, 45, 46, 47, 48, 55, 60, 69, 72, 74, 75, 76, 77, 82, 83, 86, 87, 91, 92, 93, 94, 95, 96, 99, 104, 110, 112, 115, 117, 121, 122, 123, 124, 126, 127, 129, 130, 132, 134, 135, 137, 139, 140, 144, 147, 148, 149, 153, 154, 158, 162, 163, 166, 169, 170, 171, 174, 175, 176, 177, 179, 180, 183, 186, 189, 193, 194, 196, 199, 200, 202, 204, 205, 208, 215, 216, 219, 220, 224, 225], "excluded_lines": [], "functions": {"CRUDRoom.get_multy_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [23, 24], "excluded_lines": [], "start_line": 21}, "CRUDRoom.get_existing_room_names": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [29, 30], "excluded_lines": [], "start_line": 27}, "CRUDRoom.evaluate_capacity_formula": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [34, 35, 36, 37, 38, 39], "excluded_lines": [], "start_line": 33}, "CRUDRoom.evaluate_output_formula": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [43, 44, 45, 46, 47, 48], "excluded_lines": [], "start_line": 42}, "CRUDRoom.get_room_by_coordinates": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [55, 60], "excluded_lines": [], "start_line": 51}, "CRUDRoom.get_room_build_price": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [69, 72, 74, 75, 76, 77], "excluded_lines": [], "start_line": 63}, "CRUDRoom.check_is_unique_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [82, 83, 86, 87], "excluded_lines": [], "start_line": 80}, "CRUDRoom.expand_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [91, 92, 93, 94, 95, 96, 99], "excluded_lines": [], "start_line": 89}, "CRUDRoom.requires_recalculation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [104], "excluded_lines": [], "start_line": 102}, "CRUDRoom.build": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [110, 112, 115, 117, 121, 122, 123, 124, 126, 127, 129, 130, 132, 134, 135, 137, 139, 140, 144], "excluded_lines": [], "start_line": 108}, "CRUDRoom.destroy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [147, 148, 149, 153, 154, 158], "excluded_lines": [], "start_line": 146}, "CRUDRoom.upgrade": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 30, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [162, 163, 166, 169, 170, 171, 174, 175, 176, 177, 179, 180, 183, 186, 189, 193, 194, 196, 199, 200, 202, 204, 205, 208, 215, 216, 219, 220, 224, 225], "excluded_lines": [], "start_line": 160}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 16, 19, 20, 21, 26, 27, 32, 33, 41, 42, 50, 51, 62, 63, 79, 80, 89, 101, 102, 108, 146, 160, 228], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDRoom": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 91, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 91, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [23, 24, 29, 30, 34, 35, 36, 37, 38, 39, 43, 44, 45, 46, 47, 48, 55, 60, 69, 72, 74, 75, 76, 77, 82, 83, 86, 87, 91, 92, 93, 94, 95, 96, 99, 104, 110, 112, 115, 117, 121, 122, 123, 124, 126, 127, 129, 130, 132, 134, 135, 137, 139, 140, 144, 147, 148, 149, 153, 154, 158, 162, 163, 166, 169, 170, 171, 174, 175, 176, 177, 179, 180, 183, 186, 189, 193, 194, 196, 199, 200, 202, 204, 205, 208, 215, 216, 219, 220, 224, 225], "excluded_lines": [], "start_line": 19}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 16, 19, 20, 21, 26, 27, 32, 33, 41, 42, 50, 51, 62, 63, 79, 80, 89, 101, 102, 108, 146, 160, 228], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\training.py": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 13, 16, 27, 38, 49, 74, 100], "summary": {"covered_lines": 14, "num_statements": 31, "percent_covered": 45.16129032258065, "percent_covered_display": "45.16", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 45.16129032258065, "percent_statements_covered_display": "45.16"}, "missing_lines": [22, 25, 33, 36, 44, 47, 66, 68, 69, 71, 72, 89, 90, 92, 94, 95, 97], "excluded_lines": [], "functions": {"CRUDTraining.get_active_by_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [22, 25], "excluded_lines": [], "start_line": 16}, "CRUDTraining.get_active_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [33, 36], "excluded_lines": [], "start_line": 27}, "CRUDTraining.get_active_by_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [44, 47], "excluded_lines": [], "start_line": 38}, "CRUDTraining.get_by_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [66, 68, 69, 71, 72], "excluded_lines": [], "start_line": 49}, "CRUDTraining.get_dwellers_for_trainings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [89, 90, 92, 94, 95, 97], "excluded_lines": [], "start_line": 74}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 13, 16, 27, 38, 49, 74, 100], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDTraining": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [22, 25, 33, 36, 44, 47, 66, 68, 69, 71, 72, 89, 90, 92, 94, 95, 97], "excluded_lines": [], "start_line": 13}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 13, 16, 27, 38, 49, 74, 100], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\user.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 16, 17, 21, 25, 26, 32, 33, 34, 35, 38, 39, 40, 47, 49, 62, 70, 71, 74, 75, 79], "summary": {"covered_lines": 31, "num_statements": 52, "percent_covered": 59.61538461538461, "percent_covered_display": "59.62", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 59.61538461538461, "percent_statements_covered_display": "59.62"}, "missing_lines": [18, 19, 22, 23, 41, 42, 43, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 68, 72, 76], "excluded_lines": [], "functions": {"CRUDUser.get_by_email": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [18, 19], "excluded_lines": [], "start_line": 17}, "CRUDUser.get_by_username": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [22, 23], "excluded_lines": [], "start_line": 21}, "CRUDUser.create": {"executed_lines": [26, 32, 33, 34, 35, 38, 39, 40, 47], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [41, 42, 43], "excluded_lines": [], "start_line": 25}, "CRUDUser.update": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [55, 56, 57, 58, 59, 60], "excluded_lines": [], "start_line": 49}, "CRUDUser.authenticate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [63, 64, 65, 66, 67, 68], "excluded_lines": [], "start_line": 62}, "CRUDUser.is_active": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [72], "excluded_lines": [], "start_line": 71}, "CRUDUser.is_superuser": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [76], "excluded_lines": [], "start_line": 75}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 16, 17, 21, 25, 49, 62, 70, 71, 74, 75, 79], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDUser": {"executed_lines": [26, 32, 33, 34, 35, 38, 39, 40, 47], "summary": {"covered_lines": 9, "num_statements": 30, "percent_covered": 30.0, "percent_covered_display": "30.00", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 30.0, "percent_statements_covered_display": "30.00"}, "missing_lines": [18, 19, 22, 23, 41, 42, 43, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 68, 72, 76], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 16, 17, 21, 25, 49, 62, 70, 71, 74, 75, 79], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\user_profile.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 19, 21, 54, 62, 63, 66, 67, 68, 70, 72, 86], "summary": {"covered_lines": 23, "num_statements": 41, "percent_covered": 56.09756097560975, "percent_covered_display": "56.10", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 56.09756097560975, "percent_statements_covered_display": "56.10"}, "missing_lines": [36, 37, 38, 39, 40, 41, 43, 44, 46, 47, 48, 50, 52, 64, 79, 80, 81, 83], "excluded_lines": [], "functions": {"CRUDUserProfile.get_by_user_id": {"executed_lines": [18, 19], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "CRUDUserProfile.create_for_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36, 37, 38, 39, 40, 41, 43, 44, 46, 47, 48, 50, 52], "excluded_lines": [], "start_line": 21}, "CRUDUserProfile.increment_statistic": {"executed_lines": [62, 63, 66, 67, 68, 70], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "85.71", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "85.71"}, "missing_lines": [64], "excluded_lines": [], "start_line": 54}, "CRUDUserProfile.update_statistics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [79, 80, 81, 83], "excluded_lines": [], "start_line": 72}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 21, 54, 72, 86], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDUserProfile": {"executed_lines": [18, 19, 62, 63, 66, 67, 68, 70], "summary": {"covered_lines": 8, "num_statements": 26, "percent_covered": 30.76923076923077, "percent_covered_display": "30.77", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 30.76923076923077, "percent_statements_covered_display": "30.77"}, "missing_lines": [36, 37, 38, 39, 40, 41, 43, 44, 46, 47, 48, 50, 52, 64, 79, 80, 81, 83], "excluded_lines": [], "start_line": 15}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 21, 54, 72, 86], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\vault.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 23, 24, 32, 59, 113, 114, 118, 119, 123, 129, 163, 195, 196, 202, 210, 221, 222, 251, 255, 262, 275], "summary": {"covered_lines": 36, "num_statements": 136, "percent_covered": 26.470588235294116, "percent_covered_display": "26.47", "missing_lines": 100, "excluded_lines": 0, "percent_statements_covered": 26.470588235294116, "percent_statements_covered_display": "26.47"}, "missing_lines": [20, 21, 25, 26, 27, 28, 29, 30, 47, 48, 50, 51, 53, 54, 55, 56, 57, 66, 67, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 86, 87, 88, 89, 92, 93, 95, 97, 100, 101, 103, 106, 107, 108, 109, 111, 115, 116, 120, 121, 124, 125, 126, 127, 132, 145, 146, 166, 179, 180, 181, 197, 198, 199, 200, 205, 206, 207, 208, 216, 217, 218, 219, 228, 236, 237, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 253, 257, 258, 259, 260, 265, 266, 267, 268, 269, 272], "excluded_lines": [], "functions": {"CRUDVault.get_by_user_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20, 21], "excluded_lines": [], "start_line": 19}, "CRUDVault._calculate_new_capacity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [25, 26, 27, 28, 29, 30], "excluded_lines": [], "start_line": 24}, "CRUDVault.update_storage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [47, 48, 50, 51, 53, 54, 55, 56, 57], "excluded_lines": [], "start_line": 32}, "CRUDVault.recalculate_vault_attributes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 31, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [66, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 86, 87, 88, 89, 92, 93, 95, 97, 100, 101, 103, 106, 107, 108, 109, 111], "excluded_lines": [], "start_line": 59}, "CRUDVault.recalculate_vault_attributes._update_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [67], "excluded_lines": [], "start_line": 66}, "CRUDVault.get_population": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [115, 116], "excluded_lines": [], "start_line": 114}, "CRUDVault.get_rooms_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [120, 121], "excluded_lines": [], "start_line": 119}, "CRUDVault.toggle_game_state": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [124, 125, 126, 127], "excluded_lines": [], "start_line": 123}, "CRUDVault.get_vaults_with_room_and_dweller_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [132, 145, 146], "excluded_lines": [], "start_line": 129}, "CRUDVault.get_vault_with_room_and_dweller_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [166, 179, 180, 181], "excluded_lines": [], "start_line": 163}, "CRUDVault.create_storage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [197, 198, 199, 200], "excluded_lines": [], "start_line": 196}, "CRUDVault.create_with_user_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [205, 206, 207, 208], "excluded_lines": [], "start_line": 202}, "CRUDVault.is_enough_dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [216, 217, 218, 219], "excluded_lines": [], "start_line": 210}, "CRUDVault.is_enough_population_space": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [228, 236, 237, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249], "excluded_lines": [], "start_line": 222}, "CRUDVault.deposit_caps": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [253], "excluded_lines": [], "start_line": 251}, "CRUDVault.withdraw_caps": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [257, 258, 259, 260], "excluded_lines": [], "start_line": 255}, "CRUDVault.delete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [265, 266, 267, 268, 269, 272], "excluded_lines": [], "start_line": 262}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 23, 24, 32, 59, 113, 114, 118, 119, 123, 129, 163, 195, 196, 202, 210, 221, 222, 251, 255, 262, 275], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDVault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 100, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 100, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20, 21, 25, 26, 27, 28, 29, 30, 47, 48, 50, 51, 53, 54, 55, 56, 57, 66, 67, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 86, 87, 88, 89, 92, 93, 95, 97, 100, 101, 103, 106, 107, 108, 109, 111, 115, 116, 120, 121, 124, 125, 126, 127, 132, 145, 146, 166, 179, 180, 181, 197, 198, 199, 200, 205, 206, 207, 208, 216, 217, 218, 219, 228, 236, 237, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 253, 257, 258, 259, 260, 265, 266, 267, 268, 269, 272], "excluded_lines": [], "start_line": 18}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 23, 24, 32, 59, 113, 114, 118, 119, 123, 129, 163, 195, 196, 202, 210, 221, 222, 251, 255, 262, 275], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\vault_mixin.py": {"executed_lines": [1, 2, 4, 5, 6, 8, 9, 11, 14, 15, 17, 29], "summary": {"covered_lines": 12, "num_statements": 25, "percent_covered": 48.0, "percent_covered_display": "48.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 48.0, "percent_statements_covered_display": "48.00"}, "missing_lines": [20, 21, 22, 23, 24, 25, 26, 27, 32, 33, 34, 36, 37], "excluded_lines": [], "functions": {"VaultActionsMixin.get_for_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20, 21, 22, 23, 24, 25, 26, 27], "excluded_lines": [], "start_line": 17}, "VaultActionsMixin.get_multi_for_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [32, 33, 34, 36, 37], "excluded_lines": [], "start_line": 29}, "": {"executed_lines": [1, 2, 4, 5, 6, 8, 9, 11, 14, 15, 17, 29], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"VaultActionsMixin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20, 21, 22, 23, 24, 25, 26, 27, 32, 33, 34, 36, 37], "excluded_lines": [], "start_line": 14}, "": {"executed_lines": [1, 2, 4, 5, 6, 8, 9, 11, 14, 15, 17, 29], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\crud\\weapon.py": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CRUDWeapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 6}, "": {"executed_lines": [1, 2, 3, 6, 7, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\db\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\db\\init_db.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 43, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 35, 36, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "excluded_lines": [], "functions": {"locate_quest_files": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36], "excluded_lines": [], "start_line": 35}, "init_db": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "excluded_lines": [], "start_line": 39}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 35, 39], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 43, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 35, 36, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "excluded_lines": [], "start_line": 1}}}, "app\\db\\session.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 24, 33], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [34, 35], "excluded_lines": [], "functions": {"get_async_session": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [34, 35], "excluded_lines": [], "start_line": 33}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 24, 33], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 9, 24, 33], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [34, 35], "excluded_lines": [], "start_line": 1}}}, "app\\middleware\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\middleware\\request_id.py": {"executed_lines": [3, 5, 7, 10, 13, 22], "summary": {"covered_lines": 6, "num_statements": 28, "percent_covered": 21.428571428571427, "percent_covered_display": "21.43", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 21.428571428571427, "percent_statements_covered_display": "21.43"}, "missing_lines": [20, 31, 32, 33, 36, 37, 38, 39, 40, 43, 44, 47, 50, 51, 52, 54, 56, 57, 58, 59, 60, 62], "excluded_lines": [], "functions": {"RequestIdMiddleware.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20], "excluded_lines": [], "start_line": 13}, "RequestIdMiddleware.__call__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 32, 33, 36, 37, 38, 39, 40, 43, 44, 47, 50, 51, 52, 54, 62], "excluded_lines": [], "start_line": 22}, "RequestIdMiddleware.__call__.send_with_request_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [56, 57, 58, 59, 60], "excluded_lines": [], "start_line": 54}, "": {"executed_lines": [3, 5, 7, 10, 13, 22], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RequestIdMiddleware": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 22, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20, 31, 32, 33, 36, 37, 38, 39, 40, 43, 44, 47, 50, 51, 52, 54, 56, 57, 58, 59, 60, 62], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [3, 5, 7, 10, 13, 22], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\middleware\\security.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 9, 10, 12, 14, 17, 25, 26, 27, 28, 29, 30, 31, 33, 61, 72], "excluded_lines": [], "functions": {"create_security_config": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [25, 26, 27, 28, 29, 30, 31, 33, 61, 72], "excluded_lines": [], "start_line": 17}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 9, 10, 12, 14, 17], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 9, 10, 12, 14, 17, 25, 26, 27, 28, 29, 30, 31, 33, 61, 72], "excluded_lines": [], "start_line": 1}}}, "app\\models\\__init__.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\base.py": {"executed_lines": [1, 2, 4, 5, 8, 9, 10, 16, 17, 25, 26, 27, 29, 34, 40, 41, 42, 43, 44, 45, 46, 47, 49], "summary": {"covered_lines": 23, "num_statements": 27, "percent_covered": 85.18518518518519, "percent_covered_display": "85.19", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 85.18518518518519, "percent_statements_covered_display": "85.19"}, "missing_lines": [31, 32, 36, 37], "excluded_lines": [], "functions": {"SoftDeleteMixin.soft_delete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 32], "excluded_lines": [], "start_line": 29}, "SoftDeleteMixin.restore": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36, 37], "excluded_lines": [], "start_line": 34}, "": {"executed_lines": [1, 2, 4, 5, 8, 9, 10, 16, 17, 25, 26, 27, 29, 34, 40, 41, 42, 43, 44, 45, 46, 47, 49], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TimeStampMixin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 8}, "BaseUUIDModel": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "SoftDeleteMixin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 32, 36, 37], "excluded_lines": [], "start_line": 25}, "SPECIALModel": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "": {"executed_lines": [1, 2, 4, 5, 8, 9, 10, 16, 17, 25, 26, 27, 29, 34, 40, 41, 42, 43, 44, 45, 46, 47, 49], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\chat_message.py": {"executed_lines": [1, 2, 3, 5, 7, 16, 17, 20, 21, 24, 25, 27, 30, 33, 34, 35, 38, 39, 42, 43, 49, 55, 61, 67, 70, 71, 74, 75, 76], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 5, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11, 12, 13], "functions": {"": {"executed_lines": [1, 2, 3, 5, 7, 16, 17, 20, 21, 24, 25, 27, 30, 33, 34, 35, 38, 39, 42, 43, 49, 55, 61, 67, 70, 71, 74, 75, 76], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 5, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11, 12, 13], "start_line": 1}}, "classes": {"ChatMessageBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "ChatMessage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "ChatMessageCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 70}, "ChatMessageRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 74}, "": {"executed_lines": [1, 2, 3, 5, 7, 16, 17, 20, 21, 24, 25, 27, 30, 33, 34, 35, 38, 39, 42, 43, 49, 55, 61, 67, 70, 71, 74, 75, 76], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 5, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11, 12, 13], "start_line": 1}}}, "app\\models\\dweller.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 9, 10, 21, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 43, 46, 47, 50, 53, 54, 55, 56, 57, 63, 64, 67, 68, 74, 75, 85, 86, 102, 103, 104, 106, 107, 110, 114, 118, 124, 125, 128, 131], "summary": {"covered_lines": 54, "num_statements": 70, "percent_covered": 77.14285714285714, "percent_covered_display": "77.14", "missing_lines": 16, "excluded_lines": 7, "percent_statements_covered": 77.14285714285714, "percent_statements_covered_display": "77.14"}, "missing_lines": [65, 70, 72, 77, 78, 80, 81, 83, 88, 90, 91, 93, 94, 96, 97, 99], "excluded_lines": [12, 13, 14, 15, 16, 17, 18], "functions": {"DwellerBase.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [65], "excluded_lines": [], "start_line": 64}, "DwellerBase.current_level_xp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [70, 72], "excluded_lines": [], "start_line": 68}, "DwellerBase.next_level_xp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [77, 78, 80, 81, 83], "excluded_lines": [], "start_line": 75}, "DwellerBase.xp_progress_percentage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [88, 90, 91, 93, 94, 96, 97, 99], "excluded_lines": [], "start_line": 86}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 9, 10, 21, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 43, 46, 47, 50, 53, 54, 55, 56, 57, 63, 64, 67, 68, 74, 75, 85, 86, 102, 103, 104, 106, 107, 110, 114, 118, 124, 125, 128, 131], "summary": {"covered_lines": 54, "num_statements": 54, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 7, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [12, 13, 14, 15, 16, 17, 18], "start_line": 1}}, "classes": {"DwellerBaseWithoutStats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "DwellerBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [65, 70, 72, 77, 78, 80, 81, 83, 88, 90, 91, 93, 94, 96, 97, 99], "excluded_lines": [], "start_line": 63}, "Dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 102}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 9, 10, 21, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 43, 46, 47, 50, 53, 54, 55, 56, 57, 63, 64, 67, 68, 74, 75, 85, 86, 102, 103, 104, 106, 107, 110, 114, 118, 124, 125, 128, 131], "summary": {"covered_lines": 54, "num_statements": 54, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 7, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [12, 13, 14, 15, 16, 17, 18], "start_line": 1}}}, "app\\models\\exploration.py": {"executed_lines": [3, 4, 6, 7, 8, 9, 10, 12, 15, 20, 23, 24, 25, 28, 31, 32, 33, 34, 37, 38, 41, 42, 43, 44, 45, 46, 47, 50, 51, 52, 55, 58, 59, 61, 65, 69, 74, 82, 90, 103, 108, 113, 127], "summary": {"covered_lines": 43, "num_statements": 76, "percent_covered": 56.578947368421055, "percent_covered_display": "56.58", "missing_lines": 33, "excluded_lines": 0, "percent_statements_covered": 56.578947368421055, "percent_statements_covered_display": "56.58"}, "missing_lines": [17, 63, 67, 71, 72, 76, 77, 78, 79, 80, 84, 85, 86, 87, 88, 92, 93, 95, 97, 99, 100, 101, 105, 106, 110, 111, 115, 121, 122, 123, 125, 129, 139], "excluded_lines": [], "functions": {"get_utc_now": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [17], "excluded_lines": [], "start_line": 15}, "Exploration.is_active": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [63], "excluded_lines": [], "start_line": 61}, "Exploration.is_completed": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [67], "excluded_lines": [], "start_line": 65}, "Exploration.elapsed_time_seconds": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [71, 72], "excluded_lines": [], "start_line": 69}, "Exploration.progress_percentage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [76, 77, 78, 79, 80], "excluded_lines": [], "start_line": 74}, "Exploration.time_remaining_seconds": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [84, 85, 86, 87, 88], "excluded_lines": [], "start_line": 82}, "Exploration.should_generate_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [92, 93, 95, 97, 99, 100, 101], "excluded_lines": [], "start_line": 90}, "Exploration.complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [105, 106], "excluded_lines": [], "start_line": 103}, "Exploration.recall": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [110, 111], "excluded_lines": [], "start_line": 108}, "Exploration.add_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [115, 121, 122, 123, 125], "excluded_lines": [], "start_line": 113}, "Exploration.add_loot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [129, 139], "excluded_lines": [], "start_line": 127}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 10, 12, 15, 20, 23, 24, 25, 28, 31, 32, 33, 34, 37, 38, 41, 42, 43, 44, 45, 46, 47, 50, 51, 52, 55, 58, 59, 61, 65, 69, 74, 82, 90, 103, 108, 113, 127], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ExplorationStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "ExplorationBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "Exploration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 32, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 32, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [63, 67, 71, 72, 76, 77, 78, 79, 80, 84, 85, 86, 87, 88, 92, 93, 95, 97, 99, 100, 101, 105, 106, 110, 111, 115, 121, 122, 123, 125, 129, 139], "excluded_lines": [], "start_line": 55}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 10, 12, 15, 20, 23, 24, 25, 28, 31, 32, 33, 34, 37, 38, 41, 42, 43, 44, 45, 46, 47, 50, 51, 52, 55, 58, 59, 61, 65, 69, 74, 82, 90, 103, 108, 113, 127], "summary": {"covered_lines": 43, "num_statements": 44, "percent_covered": 97.72727272727273, "percent_covered_display": "97.73", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.72727272727273, "percent_statements_covered_display": "97.73"}, "missing_lines": [17], "excluded_lines": [], "start_line": 1}}}, "app\\models\\game_state.py": {"executed_lines": [3, 5, 6, 8, 11, 14, 15, 16, 17, 18, 19, 22, 25, 27, 31, 36, 41], "summary": {"covered_lines": 17, "num_statements": 24, "percent_covered": 70.83333333333333, "percent_covered_display": "70.83", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 70.83333333333333, "percent_statements_covered_display": "70.83"}, "missing_lines": [29, 33, 34, 38, 39, 43, 44], "excluded_lines": [], "functions": {"GameState.calculate_offline_time": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [29], "excluded_lines": [], "start_line": 27}, "GameState.pause": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [33, 34], "excluded_lines": [], "start_line": 31}, "GameState.resume": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [38, 39], "excluded_lines": [], "start_line": 36}, "GameState.update_tick": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [43, 44], "excluded_lines": [], "start_line": 41}, "": {"executed_lines": [3, 5, 6, 8, 11, 14, 15, 16, 17, 18, 19, 22, 25, 27, 31, 36, 41], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"GameStateBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "GameState": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [29, 33, 34, 38, 39, 43, 44], "excluded_lines": [], "start_line": 22}, "": {"executed_lines": [3, 5, 6, 8, 11, 14, 15, 16, 17, 18, 19, 22, 25, 27, 31, 36, 41], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\incident.py": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 14, 17, 18, 19, 20, 21, 22, 25, 28, 29, 30, 31, 34, 37, 38, 39, 40, 41, 42, 45, 46, 49, 52, 53, 56, 59, 60, 62, 66, 70, 74, 79], "summary": {"covered_lines": 39, "num_statements": 48, "percent_covered": 81.25, "percent_covered_display": "81.25", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 81.25, "percent_statements_covered_display": "81.25"}, "missing_lines": [64, 68, 72, 76, 77, 81, 82, 83, 84], "excluded_lines": [], "functions": {"Incident.is_active": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [64], "excluded_lines": [], "start_line": 62}, "Incident.elapsed_time": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [68], "excluded_lines": [], "start_line": 66}, "Incident.should_spread": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [72], "excluded_lines": [], "start_line": 70}, "Incident.resolve": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [76, 77], "excluded_lines": [], "start_line": 74}, "Incident.spread_to_room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [81, 82, 83, 84], "excluded_lines": [], "start_line": 79}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 14, 17, 18, 19, 20, 21, 22, 25, 28, 29, 30, 31, 34, 37, 38, 39, 40, 41, 42, 45, 46, 49, 52, 53, 56, 59, 60, 62, 66, 70, 74, 79], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"IncidentType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "IncidentStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "IncidentBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "Incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [64, 68, 72, 76, 77, 81, 82, 83, 84], "excluded_lines": [], "start_line": 56}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 14, 17, 18, 19, 20, 21, 22, 25, 28, 29, 30, 31, 34, 37, 38, 39, 40, 41, 42, 45, 46, 49, 52, 53, 56, 59, 60, 62, 66, 70, 74, 79], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\item.py": {"executed_lines": [1, 2, 4, 7, 8, 9, 10, 11, 13, 19, 20, 21], "summary": {"covered_lines": 12, "num_statements": 15, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [22, 23, 24], "excluded_lines": [], "functions": {"ItemBase.set_default_value": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [22, 23, 24], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [1, 2, 4, 7, 8, 9, 10, 11, 13, 19, 20, 21], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ItemBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [22, 23, 24], "excluded_lines": [], "start_line": 7}, "": {"executed_lines": [1, 2, 4, 7, 8, 9, 10, 11, 13, 19, 20, 21], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\junk.py": {"executed_lines": [1, 3, 4, 6, 7, 8, 14, 15, 16, 18, 25, 26, 27, 29], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 93.33333333333333, "percent_covered_display": "93.33", "missing_lines": 1, "excluded_lines": 2, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93.33"}, "missing_lines": [30], "excluded_lines": [10, 11], "functions": {"Junk.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [30], "excluded_lines": [], "start_line": 29}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 14, 15, 16, 18, 25, 26, 27, 29], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}, "classes": {"JunkBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "Junk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [30], "excluded_lines": [], "start_line": 25}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 14, 15, 16, 18, 25, 26, 27, 29], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}}, "app\\models\\llm_interaction.py": {"executed_lines": [1, 2, 3, 5, 7, 14, 16, 17, 18, 20, 21, 24, 25, 27, 28, 30], "summary": {"covered_lines": 16, "num_statements": 17, "percent_covered": 94.11764705882354, "percent_covered_display": "94.12", "missing_lines": 1, "excluded_lines": 3, "percent_statements_covered": 94.11764705882354, "percent_statements_covered_display": "94.12"}, "missing_lines": [31], "excluded_lines": [9, 10, 11], "functions": {"LLMInteraction.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31], "excluded_lines": [], "start_line": 30}, "": {"executed_lines": [1, 2, 3, 5, 7, 14, 16, 17, 18, 20, 21, 24, 25, 27, 28, 30], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11], "start_line": 1}}, "classes": {"LLMInteractionBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "LLMInteraction": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31], "excluded_lines": [], "start_line": 24}, "": {"executed_lines": [1, 2, 3, 5, 7, 14, 16, 17, 18, 20, 21, 24, 25, 27, 28, 30], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11], "start_line": 1}}}, "app\\models\\notification.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 15, 19, 20, 21, 22, 23, 26, 27, 28, 31, 32, 33, 34, 37, 38, 39, 42, 43, 44, 47, 48, 49, 50, 51, 54, 55, 56, 59, 61, 62, 64, 65, 67, 68, 71, 74, 76, 77, 80, 85, 86, 89, 90, 91, 92, 93, 96, 97, 98, 99], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12], "functions": {"": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 15, 19, 20, 21, 22, 23, 26, 27, 28, 31, 32, 33, 34, 37, 38, 39, 42, 43, 44, 47, 48, 49, 50, 51, 54, 55, 56, 59, 61, 62, 64, 65, 67, 68, 71, 74, 76, 77, 80, 85, 86, 89, 90, 91, 92, 93, 96, 97, 98, 99], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12], "start_line": 1}}, "classes": {"NotificationType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "NotificationPriority": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 47}, "NotificationBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "Notification": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "NotificationCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 85}, "NotificationRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 89}, "NotificationUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 96}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 15, 19, 20, 21, 22, 23, 26, 27, 28, 31, 32, 33, 34, 37, 38, 39, 42, 43, 44, 47, 48, 49, 50, 51, 54, 55, 56, 59, 61, 62, 64, 65, 67, 68, 71, 74, 76, 77, 80, 85, 86, 89, 90, 91, 92, 93, 96, 97, 98, 99], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12], "start_line": 1}}}, "app\\models\\objective.py": {"executed_lines": [1, 3, 5, 6, 12, 13, 14, 16, 20, 21], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 90.9090909090909, "percent_covered_display": "90.91", "missing_lines": 1, "excluded_lines": 2, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "90.91"}, "missing_lines": [17], "excluded_lines": [8, 9], "functions": {"ObjectiveBase.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [17], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [1, 3, 5, 6, 12, 13, 14, 16, 20, 21], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [8, 9], "start_line": 1}}, "classes": {"ObjectiveBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [17], "excluded_lines": [], "start_line": 12}, "Objective": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "": {"executed_lines": [1, 3, 5, 6, 12, 13, 14, 16, 20, 21], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [8, 9], "start_line": 1}}}, "app\\models\\outfit.py": {"executed_lines": [1, 3, 4, 6, 7, 8, 15, 16, 17, 19, 23, 24, 25, 26, 27], "summary": {"covered_lines": 15, "num_statements": 16, "percent_covered": 93.75, "percent_covered_display": "93.75", "missing_lines": 1, "excluded_lines": 3, "percent_statements_covered": 93.75, "percent_statements_covered_display": "93.75"}, "missing_lines": [20], "excluded_lines": [10, 11, 12], "functions": {"OutfitBase.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20], "excluded_lines": [], "start_line": 19}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 15, 16, 17, 19, 23, 24, 25, 26, 27], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11, 12], "start_line": 1}}, "classes": {"OutfitBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20], "excluded_lines": [], "start_line": 15}, "Outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 15, 16, 17, 19, 23, 24, 25, 26, 27], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11, 12], "start_line": 1}}}, "app\\models\\pregnancy.py": {"executed_lines": [1, 2, 4, 5, 6, 8, 9, 15, 16, 17, 18, 19, 20, 23, 26, 32, 39, 42, 43, 48, 49, 62, 63], "summary": {"covered_lines": 23, "num_statements": 37, "percent_covered": 62.16216216216216, "percent_covered_display": "62.16", "missing_lines": 14, "excluded_lines": 2, "percent_statements_covered": 62.16216216216216, "percent_statements_covered_display": "62.16"}, "missing_lines": [40, 45, 46, 51, 52, 54, 55, 57, 58, 60, 65, 66, 68, 69], "excluded_lines": [11, 12], "functions": {"Pregnancy.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40], "excluded_lines": [], "start_line": 39}, "Pregnancy.is_due": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [45, 46], "excluded_lines": [], "start_line": 43}, "Pregnancy.progress_percentage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [51, 52, 54, 55, 57, 58, 60], "excluded_lines": [], "start_line": 49}, "Pregnancy.time_remaining_seconds": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [65, 66, 68, 69], "excluded_lines": [], "start_line": 63}, "": {"executed_lines": [1, 2, 4, 5, 6, 8, 9, 15, 16, 17, 18, 19, 20, 23, 26, 32, 39, 42, 43, 48, 49, 62, 63], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12], "start_line": 1}}, "classes": {"PregnancyBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "Pregnancy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40, 45, 46, 51, 52, 54, 55, 57, 58, 60, 65, 66, 68, 69], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [1, 2, 4, 5, 6, 8, 9, 15, 16, 17, 18, 19, 20, 23, 26, 32, 39, 42, 43, 48, 49, 62, 63], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12], "start_line": 1}}}, "app\\models\\prompt.py": {"executed_lines": [1, 2, 4, 5, 7, 13, 15, 16, 17, 18, 20, 26, 30, 31], "summary": {"covered_lines": 14, "num_statements": 16, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 2, "excluded_lines": 2, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50"}, "missing_lines": [24, 27], "excluded_lines": [9, 10], "functions": {"PromptBase.generate_prompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24], "excluded_lines": [], "start_line": 20}, "PromptBase.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [27], "excluded_lines": [], "start_line": 26}, "": {"executed_lines": [1, 2, 4, 5, 7, 13, 15, 16, 17, 18, 20, 26, 30, 31], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10], "start_line": 1}}, "classes": {"PromptBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24, 27], "excluded_lines": [], "start_line": 13}, "Prompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "": {"executed_lines": [1, 2, 4, 5, 7, 13, 15, 16, 17, 18, 20, 26, 30, 31], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10], "start_line": 1}}}, "app\\models\\quest.py": {"executed_lines": [1, 3, 5, 6, 14, 15, 16, 17, 18, 19, 22, 23], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "functions": {"": {"executed_lines": [1, 3, 5, 6, 14, 15, 16, 17, 18, 19, 22, 23], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}, "classes": {"QuestBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "Quest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 16, 17, 18, 19, 22, 23], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}}, "app\\models\\relationship.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 14, 15, 16, 17, 18, 21, 24, 30, 37], "summary": {"covered_lines": 15, "num_statements": 16, "percent_covered": 93.75, "percent_covered_display": "93.75", "missing_lines": 1, "excluded_lines": 2, "percent_statements_covered": 93.75, "percent_statements_covered_display": "93.75"}, "missing_lines": [38], "excluded_lines": [10, 11], "functions": {"Relationship.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [38], "excluded_lines": [], "start_line": 37}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 14, 15, 16, 17, 18, 21, 24, 30, 37], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}, "classes": {"RelationshipBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "Relationship": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [38], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 14, 15, 16, 17, 18, 21, 24, 30, 37], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}}, "app\\models\\room.py": {"executed_lines": [1, 3, 4, 6, 7, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 38, 39, 48, 49, 50, 52, 54], "summary": {"covered_lines": 33, "num_statements": 40, "percent_covered": 82.5, "percent_covered_display": "82.50", "missing_lines": 7, "excluded_lines": 3, "percent_statements_covered": 82.5, "percent_statements_covered_display": "82.50"}, "missing_lines": [36, 41, 42, 43, 44, 45, 55], "excluded_lines": [9, 10, 11], "functions": {"RoomBase.is_unique": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36], "excluded_lines": [], "start_line": 35}, "RoomBase.max_tier": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [41, 42, 43, 44, 45], "excluded_lines": [], "start_line": 39}, "Room.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [55], "excluded_lines": [], "start_line": 54}, "": {"executed_lines": [1, 3, 4, 6, 7, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 38, 39, 48, 49, 50, 52, 54], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11], "start_line": 1}}, "classes": {"RoomBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36, 41, 42, 43, 44, 45], "excluded_lines": [], "start_line": 14}, "Room": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [55], "excluded_lines": [], "start_line": 48}, "": {"executed_lines": [1, 3, 4, 6, 7, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 38, 39, 48, 49, 50, 52, 54], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11], "start_line": 1}}}, "app\\models\\storage.py": {"executed_lines": [1, 3, 4, 6, 15, 16, 17, 20, 21, 22, 24, 25, 26, 28], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 93.33333333333333, "percent_covered_display": "93.33", "missing_lines": 1, "excluded_lines": 5, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93.33"}, "missing_lines": [29], "excluded_lines": [8, 9, 10, 11, 12], "functions": {"Storage.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [29], "excluded_lines": [], "start_line": 28}, "": {"executed_lines": [1, 3, 4, 6, 15, 16, 17, 20, 21, 22, 24, 25, 26, 28], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 5, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [8, 9, 10, 11, 12], "start_line": 1}}, "classes": {"StorageBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "Storage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [29], "excluded_lines": [], "start_line": 20}, "": {"executed_lines": [1, 3, 4, 6, 15, 16, 17, 20, 21, 22, 24, 25, 26, 28], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 5, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [8, 9, 10, 11, 12], "start_line": 1}}}, "app\\models\\training.py": {"executed_lines": [3, 4, 5, 7, 8, 10, 11, 19, 22, 23, 24, 27, 30, 31, 32, 34, 35, 36, 38, 40, 41, 42, 44, 47, 51, 52, 53, 55, 59, 63, 67, 71, 88], "summary": {"covered_lines": 33, "num_statements": 47, "percent_covered": 70.2127659574468, "percent_covered_display": "70.21", "missing_lines": 14, "excluded_lines": 4, "percent_statements_covered": 70.2127659574468, "percent_statements_covered_display": "70.21"}, "missing_lines": [57, 61, 65, 69, 78, 79, 81, 82, 83, 85, 86, 90, 91, 92], "excluded_lines": [13, 14, 15, 16], "functions": {"Training.is_active": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [57], "excluded_lines": [], "start_line": 55}, "Training.is_completed": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [61], "excluded_lines": [], "start_line": 59}, "Training.is_cancelled": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [65], "excluded_lines": [], "start_line": 63}, "Training.progress_percentage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [69], "excluded_lines": [], "start_line": 67}, "Training.time_remaining_seconds": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [78, 79, 81, 82, 83, 85, 86], "excluded_lines": [], "start_line": 71}, "Training.is_ready_to_complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [90, 91, 92], "excluded_lines": [], "start_line": 88}, "": {"executed_lines": [3, 4, 5, 7, 8, 10, 11, 19, 22, 23, 24, 27, 30, 31, 32, 34, 35, 36, 38, 40, 41, 42, 44, 47, 51, 52, 53, 55, 59, 63, 67, 71, 88], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [13, 14, 15, 16], "start_line": 1}}, "classes": {"TrainingStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "TrainingBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "Training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [57, 61, 65, 69, 78, 79, 81, 82, 83, 85, 86, 90, 91, 92], "excluded_lines": [], "start_line": 47}, "": {"executed_lines": [3, 4, 5, 7, 8, 10, 11, 19, 22, 23, 24, 27, 30, 31, 32, 34, 35, 36, 38, 40, 41, 42, 44, 47, 51, 52, 53, 55, 59, 63, 67, 71, 88], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [13, 14, 15, 16], "start_line": 1}}}, "app\\models\\user.py": {"executed_lines": [1, 2, 4, 5, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 27, 29, 32, 33, 35], "summary": {"covered_lines": 20, "num_statements": 21, "percent_covered": 95.23809523809524, "percent_covered_display": "95.24", "missing_lines": 1, "excluded_lines": 4, "percent_statements_covered": 95.23809523809524, "percent_statements_covered_display": "95.24"}, "missing_lines": [36], "excluded_lines": [9, 10, 11, 12], "functions": {"User.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36], "excluded_lines": [], "start_line": 35}, "": {"executed_lines": [1, 2, 4, 5, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 27, 29, 32, 33, 35], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11, 12], "start_line": 1}}, "classes": {"UserBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "User": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36], "excluded_lines": [], "start_line": 26}, "": {"executed_lines": [1, 2, 4, 5, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 27, 29, 32, 33, 35], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10, 11, 12], "start_line": 1}}}, "app\\models\\user_profile.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 14, 15, 16, 17, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 32, 35, 36, 37, 39], "summary": {"covered_lines": 25, "num_statements": 26, "percent_covered": 96.15384615384616, "percent_covered_display": "96.15", "missing_lines": 1, "excluded_lines": 2, "percent_statements_covered": 96.15384615384616, "percent_statements_covered_display": "96.15"}, "missing_lines": [40], "excluded_lines": [10, 11], "functions": {"UserProfile.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40], "excluded_lines": [], "start_line": 39}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 14, 15, 16, 17, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 32, 35, 36, 37, 39], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}, "classes": {"UserProfileBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "UserProfile": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40], "excluded_lines": [], "start_line": 35}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 14, 15, 16, 17, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 32, 35, 36, 37, 39], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [10, 11], "start_line": 1}}}, "app\\models\\uuid_types.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 27, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 27, "excluded_lines": 3, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 8, 9, 11, 18, 30, 31, 37, 42, 43, 49, 51, 52, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 81, 84, 94, 98], "excluded_lines": [13, 14, 15], "functions": {"UUID7.__get_pydantic_core_schema__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [37], "excluded_lines": [], "start_line": 31}, "UUID7.__get_pydantic_json_schema__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [49], "excluded_lines": [], "start_line": 43}, "UUID7._validate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [64, 65, 66, 67, 68, 69, 70, 71], "excluded_lines": [], "start_line": 52}, "UUID7.timestamp_ms": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [81], "excluded_lines": [], "start_line": 74}, "uuid7": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [94], "excluded_lines": [], "start_line": 84}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 3, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 8, 9, 11, 18, 30, 31, 42, 43, 51, 52, 73, 74, 84, 98], "excluded_lines": [13, 14, 15], "start_line": 1}}, "classes": {"UUID7": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [37, 49, 64, 65, 66, 67, 68, 69, 70, 71, 81], "excluded_lines": [], "start_line": 18}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 3, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 8, 9, 11, 18, 30, 31, 42, 43, 51, 52, 73, 74, 84, 94, 98], "excluded_lines": [13, 14, 15], "start_line": 1}}}, "app\\models\\vault.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 22, 24, 25, 26, 29, 30, 31, 32, 33, 34, 37, 41, 46, 50, 51, 52, 54, 55, 56, 58, 63], "summary": {"covered_lines": 28, "num_statements": 29, "percent_covered": 96.55172413793103, "percent_covered_display": "96.55", "missing_lines": 1, "excluded_lines": 7, "percent_statements_covered": 96.55172413793103, "percent_statements_covered_display": "96.55"}, "missing_lines": [47], "excluded_lines": [13, 14, 15, 16, 17, 18, 19], "functions": {"VaultBase.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [47], "excluded_lines": [], "start_line": 46}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 22, 24, 25, 26, 29, 30, 31, 32, 33, 34, 37, 41, 46, 50, 51, 52, 54, 55, 56, 58, 63], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 7, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [13, 14, 15, 16, 17, 18, 19], "start_line": 1}}, "classes": {"VaultBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [47], "excluded_lines": [], "start_line": 22}, "Vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 50}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 22, 24, 25, 26, 29, 30, 31, 32, 33, 34, 37, 41, 46, 50, 51, 52, 54, 55, 56, 58, 63], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 7, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [13, 14, 15, 16, 17, 18, 19], "start_line": 1}}}, "app\\models\\vault_objective.py": {"executed_lines": [1, 2, 5, 6, 7, 8, 9, 10], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 5, 6, 7, 8, 9, 10], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"VaultObjectiveProgressLink": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 5}, "": {"executed_lines": [1, 2, 5, 6, 7, 8, 9, 10], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\vault_quest.py": {"executed_lines": [1, 2, 5, 6, 7, 8, 9], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 5, 6, 7, 8, 9], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"VaultQuestCompletionLink": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 5}, "": {"executed_lines": [1, 2, 5, 6, 7, 8, 9], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\models\\weapon.py": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 51, 55, 56, 57, 58, 59], "summary": {"covered_lines": 26, "num_statements": 43, "percent_covered": 60.46511627906977, "percent_covered_display": "60.47", "missing_lines": 17, "excluded_lines": 3, "percent_statements_covered": 60.46511627906977, "percent_statements_covered_display": "60.47"}, "missing_lines": [31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 49, 52], "excluded_lines": [11, 12, 13], "functions": {"WeaponBase.validate_weapon_subtype": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 49], "excluded_lines": [], "start_line": 30}, "WeaponBase.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [52], "excluded_lines": [], "start_line": 51}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 51, 55, 56, 57, 58, 59], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12, 13], "start_line": 1}}, "classes": {"WeaponBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 49, 52], "excluded_lines": [], "start_line": 16}, "Weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 55}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 51, 55, 56, 57, 58, 59], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [11, 12, 13], "start_line": 1}}}, "app\\schemas\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\common.py": {"executed_lines": [1, 4, 5, 6, 13, 14, 15, 18, 19, 20, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 40, 41, 42, 43, 46, 47, 48, 49, 50, 51, 52, 53, 56, 57, 58, 61, 62, 63, 64, 67, 68, 69, 70, 71, 72, 75, 76, 77, 78, 81, 82, 83, 84, 85, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 103, 104, 105, 106, 109, 110, 111, 112, 115, 116, 117, 118, 121, 122, 123, 124, 127, 128, 129, 130, 131, 132, 133, 134, 137, 138, 139, 140, 141, 142, 145, 146, 147, 148, 151, 152, 153, 154, 155, 156, 157, 158, 161, 162, 163, 164, 165, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 182, 183, 186], "summary": {"covered_lines": 132, "num_statements": 136, "percent_covered": 97.05882352941177, "percent_covered_display": "97.06", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 97.05882352941177, "percent_statements_covered_display": "97.06"}, "missing_lines": [7, 8, 9, 10], "excluded_lines": [], "functions": {"CaseInsensitiveEnum._missing_": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 8, 9, 10], "excluded_lines": [], "start_line": 6}, "": {"executed_lines": [1, 4, 5, 6, 13, 14, 15, 18, 19, 20, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 40, 41, 42, 43, 46, 47, 48, 49, 50, 51, 52, 53, 56, 57, 58, 61, 62, 63, 64, 67, 68, 69, 70, 71, 72, 75, 76, 77, 78, 81, 82, 83, 84, 85, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 103, 104, 105, 106, 109, 110, 111, 112, 115, 116, 117, 118, 121, 122, 123, 124, 127, 128, 129, 130, 131, 132, 133, 134, 137, 138, 139, 140, 141, 142, 145, 146, 147, 148, 151, 152, 153, 154, 155, 156, 157, 158, 161, 162, 163, 164, 165, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 182, 183, 186], "summary": {"covered_lines": 132, "num_statements": 132, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CaseInsensitiveEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [7, 8, 9, 10], "excluded_lines": [], "start_line": 4}, "GameStatusEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "RadioModeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "DwellerStatusEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "DeathCauseEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "RarityEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "SPECIALEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "GenderEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 56}, "AgeGroupEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 61}, "RelationshipTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 67}, "PregnancyStatusEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 75}, "RaceEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 81}, "FactionEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 88}, "SynthTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 103}, "GhoulFeralnessEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 109}, "SuperMutantMutationEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 115}, "ItemTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 121}, "JunkTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 127}, "OutfitTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 137}, "RoomActionEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 145}, "RoomTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 151}, "WeaponTypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 161}, "WeaponSubtypeEnum": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 168}, "AIModelType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 180}, "": {"executed_lines": [1, 4, 5, 6, 13, 14, 15, 18, 19, 20, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 40, 41, 42, 43, 46, 47, 48, 49, 50, 51, 52, 53, 56, 57, 58, 61, 62, 63, 64, 67, 68, 69, 70, 71, 72, 75, 76, 77, 78, 81, 82, 83, 84, 85, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 103, 104, 105, 106, 109, 110, 111, 112, 115, 116, 117, 118, 121, 122, 123, 124, 127, 128, 129, 130, 131, 132, 133, 134, 137, 138, 139, 140, 141, 142, 145, 146, 147, 148, 151, 152, 153, 154, 155, 156, 157, 158, 161, 162, 163, 164, 165, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 182, 183, 186], "summary": {"covered_lines": 132, "num_statements": 132, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\dweller.py": {"executed_lines": [1, 3, 4, 6, 7, 18, 19, 20, 21, 22, 24, 34, 41, 42, 43, 45, 48, 49, 52, 53, 54, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 70, 71, 77, 78, 81, 86, 89, 92, 93, 94, 95, 96, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 116, 117, 118, 119, 120, 121, 122, 125, 126, 127, 133, 134, 135, 136, 139, 140, 143, 144, 146, 149, 150, 151, 152, 153, 155, 158, 159, 160, 161, 164, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 178, 181, 184, 185, 186, 189, 192, 193, 194, 195, 196, 197, 198], "summary": {"covered_lines": 112, "num_statements": 112, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 6, 7, 18, 19, 20, 21, 22, 24, 34, 41, 42, 43, 45, 48, 49, 52, 53, 54, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 70, 71, 77, 78, 81, 86, 89, 92, 93, 94, 95, 96, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 116, 117, 118, 119, 120, 121, 122, 125, 126, 127, 133, 134, 135, 136, 139, 140, 143, 144, 146, 149, 150, 151, 152, 153, 155, 158, 159, 160, 161, 164, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 178, 181, 184, 185, 186, 189, 192, 193, 194, 195, 196, 197, 198], "summary": {"covered_lines": 112, "num_statements": 112, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"DwellerCreateWithoutVaultID": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "DwellerCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "DwellerVisualAttributesInput": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 52}, "DwellerCreateCommonOverride": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 89}, "DwellerReadLess": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "DwellerRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 133}, "DwellerReadWithVaultID": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 139}, "DwellerReadWithRoomID": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 143}, "DwellerReadFull": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 149}, "DwellerUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 159}, "DwellerDeadRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 164}, "DwellerReviveResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 181}, "RevivalCostResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 189}, "": {"executed_lines": [1, 3, 4, 6, 7, 18, 19, 20, 21, 22, 24, 34, 41, 42, 43, 45, 48, 49, 52, 53, 54, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 70, 71, 77, 78, 81, 86, 89, 92, 93, 94, 95, 96, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 116, 117, 118, 119, 120, 121, 122, 125, 126, 127, 133, 134, 135, 136, 139, 140, 143, 144, 146, 149, 150, 151, 152, 153, 155, 158, 159, 160, 161, 164, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 178, 181, 184, 185, 186, 189, 192, 193, 194, 195, 196, 197, 198], "summary": {"covered_lines": 112, "num_statements": 112, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\dweller_ai.py": {"executed_lines": [3, 6, 9, 15, 18, 24, 28, 29, 30, 31, 32, 33, 34, 35, 41, 42, 45], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 6, 9, 15, 18, 24, 28, 29, 30, 31, 32, 33, 34, 35, 41, 42, 45], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"DwellerBackstory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 6}, "ExtendedBio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "DwellerVisualAttributes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "": {"executed_lines": [3, 6, 9, 15, 18, 24, 28, 29, 30, 31, 32, 33, 34, 35, 41, 42, 45], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\exploration.py": {"executed_lines": [3, 5, 6, 8, 11, 14, 17, 20, 21, 22, 25, 28, 29, 30, 31, 32, 35, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 58, 59, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, 80, 81, 82, 83, 84, 85, 86, 89, 92, 93, 94, 95, 96, 99, 102, 103, 106, 109, 112, 115, 116], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 5, 6, 8, 11, 14, 17, 20, 21, 22, 25, 28, 29, 30, 31, 32, 35, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 58, 59, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, 80, 81, 82, 83, 84, 85, 86, 89, 92, 93, 94, 95, 96, 99, 102, 103, 106, 109, 112, 115, 116], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ExplorationBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "ExplorationCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "ExplorationUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "ExplorationRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "ExplorationReadShort": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 62}, "ExplorationProgress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 77}, "ExplorationEvent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 89}, "ExplorationSendRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "ExplorationRecallRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 106}, "ExplorationCompleteResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 112}, "": {"executed_lines": [3, 5, 6, 8, 11, 14, 17, 20, 21, 22, 25, 28, 29, 30, 31, 32, 35, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 58, 59, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, 80, 81, 82, 83, 84, 85, 86, 89, 92, 93, 94, 95, 96, 99, 102, 103, 106, 109, 112, 115, 116], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\exploration_event.py": {"executed_lines": [3, 5, 8, 11, 12, 13, 16, 19, 20, 21, 22, 23, 26, 29, 32, 37, 40, 43, 44, 45, 48, 51, 52, 53, 54, 57, 60, 61, 62, 63, 64, 67, 70, 71, 72, 75, 78, 79, 80, 83, 86, 87, 88, 91, 94, 95, 96, 99, 102, 103, 104, 105, 106, 107, 108, 109, 113], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 5, 8, 11, 12, 13, 16, 19, 20, 21, 22, 23, 26, 29, 32, 37, 40, 43, 44, 45, 48, 51, 52, 53, 54, 57, 60, 61, 62, 63, 64, 67, 70, 71, 72, 75, 78, 79, 80, 83, 86, 87, 88, 91, 94, 95, 96, 99, 102, 103, 104, 105, 106, 107, 108, 109, 113], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ItemSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 8}, "WeaponSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "OutfitSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "JunkSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "LootSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "EnemySchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "CombatEventSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "LootEventSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 67}, "DangerEventSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 75}, "RestEventSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "CombatOutcomeSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 91}, "RewardsSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "": {"executed_lines": [3, 5, 8, 11, 12, 13, 16, 19, 20, 21, 22, 23, 26, 29, 32, 37, 40, 43, 44, 45, 48, 51, 52, 53, 54, 57, 60, 61, 62, 63, 64, 67, 70, 71, 72, 75, 78, 79, 80, 83, 86, 87, 88, 91, 94, 95, 96, 99, 102, 103, 104, 105, 106, 107, 108, 109, 113], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\incident.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [3, 5, 7, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 34, 37, 40, 41, 42, 43, 44], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [3, 5, 7, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 34, 37, 40, 41, 42, 43, 44], "excluded_lines": [], "start_line": 1}}, "classes": {"IncidentRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "IncidentResolveRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "IncidentResolveResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 37}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [3, 5, 7, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 34, 37, 40, 41, 42, 43, 44], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\item.py": {"executed_lines": [1, 3, 4, 7, 8, 11, 12, 15, 16, 17], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 7, 8, 11, 12, 15, 16, 17], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ItemCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 7}, "ItemRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "ItemUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [1, 3, 4, 7, 8, 11, 12, 15, 16, 17], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\junk.py": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 14, 15, 16, 17, 20, 21, 22], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 14, 15, 16, 17, 20, 21, 22], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"JunkCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "JunkRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "JunkUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 14, 15, 16, 17, 20, 21, 22], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\llm_interaction.py": {"executed_lines": [1, 3, 5, 8, 9, 12, 13, 14, 15], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 8, 9, 12, 13, 14, 15], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"LLMInteractionCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 8}, "LLMInteractionRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "": {"executed_lines": [1, 3, 5, 8, 9, 12, 13, 14, 15], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\objective.py": {"executed_lines": [1, 3, 4, 7, 8, 11, 12, 13, 14, 15, 18, 19, 20], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 7, 8, 11, 12, 13, 14, 15, 18, 19, 20], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ObjectiveCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 7}, "ObjectiveRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "ObjectiveUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "": {"executed_lines": [1, 3, 4, 7, 8, 11, 12, 13, 14, 15, 18, 19, 20], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\outfit.py": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 24, 25, 26, 27, 30, 31, 32, 33], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 24, 25, 26, 27, 30, 31, 32, 33], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"SPECIALOutfitCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "OutfitCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "OutfitRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "OutfitUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 24, 25, 26, 27, 30, 31, 32, 33], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\pregnancy.py": {"executed_lines": [3, 5, 6, 8, 9, 12, 15, 16, 19, 22, 23, 24, 25, 27, 30, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 46, 49, 50, 51], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 5, 6, 8, 9, 12, 15, 16, 19, 22, 23, 24, 25, 27, 30, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 46, 49, 50, 51], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"PregnancyCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "PregnancyRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "PregnancyProgress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "DeliveryResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "": {"executed_lines": [3, 5, 6, 8, 9, 12, 15, 16, 19, 22, 23, 24, 25, 27, 30, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 46, 49, 50, 51], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\prompt.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 4, 7, 8, 11, 12, 15, 16, 17], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 4, 7, 8, 11, 12, 15, 16, 17], "excluded_lines": [], "start_line": 1}}, "classes": {"PromptCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 7}, "PromptRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "PromptUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 3, 4, 7, 8, 11, 12, 15, 16, 17], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\quest.py": {"executed_lines": [1, 2, 4, 5, 8, 9, 12, 13, 14, 15, 18, 19, 20, 21, 24, 25, 26, 29, 32, 35, 38, 39, 40, 41, 42, 44, 47, 50, 51], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 4, 5, 8, 9, 12, 13, 14, 15, 18, 19, 20, 21, 24, 25, 26, 29, 32, 35, 38, 39, 40, 41, 42, 44, 47, 50, 51], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"QuestCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 8}, "QuestRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "QuestReadShort": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "QuestUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "QuestObjectiveJSON": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "QuestJSON": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "QuestChainJSON": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 47}, "": {"executed_lines": [1, 2, 4, 5, 8, 9, 12, 13, 14, 15, 18, 19, 20, 21, 24, 25, 26, 29, 32, 35, 38, 39, 40, 41, 42, 44, 47, 50, 51], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\radio.py": {"executed_lines": [3, 4, 6, 9, 12, 13, 16, 19, 20, 21, 22, 23, 24, 25, 26, 29, 32, 37, 40, 41, 42], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 4, 6, 9, 12, 13, 16, 19, 20, 21, 22, 23, 24, 25, 26, 29, 32, 37, 40, 41, 42], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"SpeedupMultiplier": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "RadioStatsRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "ManualRecruitRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "RecruitmentResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 37}, "": {"executed_lines": [3, 4, 6, 9, 12, 13, 16, 19, 20, 21, 22, 23, 24, 25, 26, 29, 32, 37, 40, 41, 42], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\relationship.py": {"executed_lines": [3, 4, 6, 7, 10, 13, 14, 17, 20, 21, 23, 26, 29, 31, 34, 37, 38, 39, 40, 41, 42, 43, 46, 49], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 4, 6, 7, 10, 13, 14, 17, 20, 21, 23, 26, 29, 31, 34, 37, 38, 39, 40, 41, 42, 43, 46, 49], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RelationshipCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "RelationshipUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "RelationshipRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "CompatibilityScore": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "RelationshipAction": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "": {"executed_lines": [3, 4, 6, 7, 10, 13, 14, 17, 20, 21, 23, 26, 29, 31, 34, 37, 38, 39, 40, 41, 42, 43, 46, 49], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\room.py": {"executed_lines": [1, 3, 5, 6, 9, 10, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 9, 10, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RoomCreateWithoutVaultID": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "RoomCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "RoomRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "RoomUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "": {"executed_lines": [1, 3, 5, 6, 9, 10, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\token.py": {"executed_lines": [1, 4, 5, 6, 7, 10, 11], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 4, 5, 6, 7, 10, 11], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"Token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 4}, "TokenPayload": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [1, 4, 5, 6, 7, 10, 11], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\training.py": {"executed_lines": [3, 5, 7, 10, 14, 18, 21, 22, 23, 25, 26, 29, 32, 33, 36, 39, 40, 41, 42, 44, 45], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 5, 7, 10, 14, 18, 21, 22, 23, 25, 26, 29, 32, 33, 36, 39, 40, 41, 42, 44, 45], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TrainingCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "TrainingUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "TrainingRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "TrainingRead.Config": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "TrainingStartRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "TrainingProgress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 36}, "TrainingProgress.Config": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 44}, "": {"executed_lines": [3, 5, 7, 10, 14, 18, 21, 22, 23, 25, 26, 29, 32, 33, 36, 39, 40, 41, 42, 44, 45], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\user.py": {"executed_lines": [1, 2, 4, 6, 7, 13, 14, 17, 18, 19, 20, 23, 24, 25, 26, 29, 30, 33, 34, 35], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10], "functions": {"": {"executed_lines": [1, 2, 4, 6, 7, 13, 14, 17, 18, 19, 20, 23, 24, 25, 26, 29, 30, 33, 34, 35], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10], "start_line": 1}}, "classes": {"UserCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "UserRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "UserWithTokens": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "UserReadWithVaults": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "UserUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "": {"executed_lines": [1, 2, 4, 6, 7, 13, 14, 17, 18, 19, 20, 23, 24, 25, 26, 29, 30, 33, 34, 35], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [9, 10], "start_line": 1}}}, "app\\schemas\\user_profile.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 27, 28, 29, 30], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 27, 28, 29, 30], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ProfileRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "ProfileUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "ProfileUpdateStatistics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 27, 28, 29, 30], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\vault.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 11, 12, 15, 16, 19, 20, 23, 24, 25, 26, 27, 30, 31, 34, 35, 36, 39, 40, 41], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 11, 12, 15, 16, 19, 20, 23, 24, 25, 26, 27, 30, 31, 34, 35, 36, 39, 40, 41], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"VaultCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "VaultCreateWithUserID": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "VaultNumber": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "VaultRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "VaultReadWithUser": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "VaultReadWithNumbers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "VaultUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 11, 12, 15, 16, 19, 20, 23, 24, 25, 26, 27, 30, 31, 34, 35, 36, 39, 40, 41], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\schemas\\weapon.py": {"executed_lines": [1, 3, 5, 6, 9, 10, 13, 14, 15, 16, 19, 20, 21, 22], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 9, 10, 13, 14, 15, 16, 19, 20, 21, 22], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"WeaponCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "WeaponRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "WeaponUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "": {"executed_lines": [1, 3, 5, 6, 9, 10, 13, 14, 15, 16, 19, 20, 21, 22], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\breeding_service.py": {"executed_lines": [3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 22, 24, 27, 30, 31, 143, 144, 179, 180, 204, 205, 300, 301, 336, 337, 362, 363, 414, 415, 439], "summary": {"covered_lines": 31, "num_statements": 165, "percent_covered": 18.78787878787879, "percent_covered_display": "18.79", "missing_lines": 134, "excluded_lines": 0, "percent_statements_covered": 18.78787878787879, "percent_statements_covered_display": "18.79"}, "missing_lines": [46, 49, 51, 52, 54, 57, 64, 67, 68, 70, 71, 73, 75, 76, 79, 80, 83, 84, 85, 86, 89, 90, 92, 93, 96, 97, 100, 101, 104, 106, 110, 111, 115, 116, 118, 121, 123, 124, 125, 127, 128, 131, 136, 137, 141, 160, 161, 163, 171, 172, 173, 175, 177, 194, 202, 223, 224, 226, 227, 228, 230, 231, 232, 235, 236, 238, 239, 241, 242, 243, 246, 247, 248, 251, 252, 255, 257, 273, 274, 277, 278, 279, 280, 283, 284, 285, 286, 288, 291, 292, 294, 295, 296, 298, 312, 314, 315, 316, 317, 320, 323, 326, 329, 330, 332, 334, 349, 351, 352, 354, 357, 358, 360, 377, 379, 387, 389, 390, 392, 395, 396, 397, 398, 399, 400, 402, 403, 405, 407, 409, 410, 412, 429, 436], "excluded_lines": [], "functions": {"BreedingService.check_for_conception": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 45, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 45, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [46, 49, 51, 52, 54, 57, 64, 67, 68, 70, 71, 73, 75, 76, 79, 80, 83, 84, 85, 86, 89, 90, 92, 93, 96, 97, 100, 101, 104, 106, 110, 111, 115, 116, 118, 121, 123, 124, 125, 127, 128, 131, 136, 137, 141], "excluded_lines": [], "start_line": 31}, "BreedingService.create_pregnancy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [160, 161, 163, 171, 172, 173, 175, 177], "excluded_lines": [], "start_line": 144}, "BreedingService.check_due_pregnancies": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [194, 202], "excluded_lines": [], "start_line": 180}, "BreedingService.deliver_baby": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 39, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 39, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [223, 224, 226, 227, 228, 230, 231, 232, 235, 236, 238, 239, 241, 242, 243, 246, 247, 248, 251, 252, 255, 257, 273, 274, 277, 278, 279, 280, 283, 284, 285, 286, 288, 291, 292, 294, 295, 296, 298], "excluded_lines": [], "start_line": 205}, "BreedingService._calculate_inherited_stats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [312, 314, 315, 316, 317, 320, 323, 326, 329, 330, 332, 334], "excluded_lines": [], "start_line": 301}, "BreedingService._calculate_inherited_rarity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [349, 351, 352, 354, 357, 358, 360], "excluded_lines": [], "start_line": 337}, "BreedingService.age_children": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [377, 379, 387, 389, 390, 392, 395, 396, 397, 398, 399, 400, 402, 403, 405, 407, 409, 410, 412], "excluded_lines": [], "start_line": 363}, "BreedingService.get_active_pregnancies": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [429, 436], "excluded_lines": [], "start_line": 415}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 22, 24, 27, 30, 31, 143, 144, 179, 180, 204, 205, 300, 301, 336, 337, 362, 363, 414, 415, 439], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"BreedingService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 134, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 134, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [46, 49, 51, 52, 54, 57, 64, 67, 68, 70, 71, 73, 75, 76, 79, 80, 83, 84, 85, 86, 89, 90, 92, 93, 96, 97, 100, 101, 104, 106, 110, 111, 115, 116, 118, 121, 123, 124, 125, 127, 128, 131, 136, 137, 141, 160, 161, 163, 171, 172, 173, 175, 177, 194, 202, 223, 224, 226, 227, 228, 230, 231, 232, 235, 236, 238, 239, 241, 242, 243, 246, 247, 248, 251, 252, 255, 257, 273, 274, 277, 278, 279, 280, 283, 284, 285, 286, 288, 291, 292, 294, 295, 296, 298, 312, 314, 315, 316, 317, 320, 323, 326, 329, 330, 332, 334, 349, 351, 352, 354, 357, 358, 360, 377, 379, 387, 389, 390, 392, 395, 396, 397, 398, 399, 400, 402, 403, 405, 407, 409, 410, 412, 429, 436], "excluded_lines": [], "start_line": 27}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 22, 24, 27, 30, 31, 143, 144, 179, 180, 204, 205, 300, 301, 336, 337, 362, 363, 414, 415, 439], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\conversation_service.py": {"executed_lines": [3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 24, 30, 33, 34, 35, 37, 38, 53, 54, 93, 218], "summary": {"covered_lines": 27, "num_statements": 61, "percent_covered": 44.26229508196721, "percent_covered_display": "44.26", "missing_lines": 34, "excluded_lines": 0, "percent_statements_covered": 44.26229508196721, "percent_statements_covered_display": "44.26"}, "missing_lines": [48, 49, 51, 65, 66, 73, 77, 114, 115, 116, 117, 120, 121, 122, 125, 126, 127, 128, 137, 140, 143, 144, 152, 153, 154, 161, 162, 163, 164, 173, 179, 182, 196, 208], "excluded_lines": [], "functions": {"ConversationService.__init__": {"executed_lines": [34, 35], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "ConversationService._select_voice_for_gender": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [48, 49, 51], "excluded_lines": [], "start_line": 38}, "ConversationService._build_dweller_prompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [65, 66, 73, 77], "excluded_lines": [], "start_line": 54}, "ConversationService.process_audio_message": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 27, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [114, 115, 116, 117, 120, 121, 122, 125, 126, 127, 128, 137, 140, 143, 144, 152, 153, 154, 161, 162, 163, 164, 173, 179, 182, 196, 208], "excluded_lines": [], "start_line": 93}, "": {"executed_lines": [3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 24, 30, 33, 37, 38, 53, 54, 93, 218], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ConversationService": {"executed_lines": [34, 35], "summary": {"covered_lines": 2, "num_statements": 36, "percent_covered": 5.555555555555555, "percent_covered_display": "5.56", "missing_lines": 34, "excluded_lines": 0, "percent_statements_covered": 5.555555555555555, "percent_statements_covered_display": "5.56"}, "missing_lines": [48, 49, 51, 65, 66, 73, 77, 114, 115, 116, 117, 120, 121, 122, 125, 126, 127, 128, 137, 140, 143, 144, 152, 153, 154, 161, 162, 163, 164, 173, 179, 182, 196, 208], "excluded_lines": [], "start_line": 30}, "": {"executed_lines": [3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 24, 30, 33, 37, 38, 53, 54, 93, 218], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\death_service.py": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 22, 25, 42, 43, 46, 47, 50, 65, 67, 75, 77, 94, 96, 97, 99, 100, 103, 104, 107, 108, 109, 115, 117, 124, 127, 140, 148, 150, 162, 164, 171, 172, 174, 175, 177, 180, 182, 191, 194, 201, 202, 204, 205, 206, 211, 217, 219, 221, 229, 230, 246, 248, 262, 264, 267, 268, 269, 271, 275, 281, 282, 285, 288, 289, 291, 293, 300, 301, 305, 313, 314, 315, 316, 318, 320, 322, 330, 334], "summary": {"covered_lines": 92, "num_statements": 97, "percent_covered": 94.84536082474227, "percent_covered_display": "94.85", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 94.84536082474227, "percent_statements_covered_display": "94.85"}, "missing_lines": [105, 178, 231, 272, 302], "excluded_lines": [], "functions": {"DeathService.mark_as_dead": {"executed_lines": [42, 43, 46, 47, 50, 65, 67, 75], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "DeathService.revive_dweller": {"executed_lines": [94, 96, 97, 99, 100, 103, 104, 107, 108, 109, 115, 117, 124, 127, 140, 148], "summary": {"covered_lines": 16, "num_statements": 17, "percent_covered": 94.11764705882354, "percent_covered_display": "94.12", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.11764705882354, "percent_statements_covered_display": "94.12"}, "missing_lines": [105], "excluded_lines": [], "start_line": 77}, "DeathService.get_revival_cost": {"executed_lines": [162], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 150}, "DeathService.get_days_until_permanent": {"executed_lines": [171, 172, 174, 175, 177, 180], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "85.71", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "85.71"}, "missing_lines": [178], "excluded_lines": [], "start_line": 164}, "DeathService.check_and_mark_permanent_deaths": {"executed_lines": [191, 194, 201, 202, 204, 205, 206, 211, 217, 219], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 182}, "DeathService.get_death_statistics": {"executed_lines": [229, 230, 246, 248], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [231], "excluded_lines": [], "start_line": 221}, "DeathService._get_dead_dweller_counts": {"executed_lines": [264, 267, 268, 269, 271, 275, 281, 282, 285, 288, 289, 291], "summary": {"covered_lines": 12, "num_statements": 13, "percent_covered": 92.3076923076923, "percent_covered_display": "92.31", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92.31"}, "missing_lines": [272], "excluded_lines": [], "start_line": 262}, "DeathService._increment_death_stats": {"executed_lines": [300, 301, 305, 313, 314, 315, 316], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "87.50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "87.50"}, "missing_lines": [302], "excluded_lines": [], "start_line": 293}, "DeathService._generate_epitaph": {"executed_lines": [320, 322, 330], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 318}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 22, 25, 77, 150, 164, 182, 221, 262, 293, 318, 334], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"DeathService": {"executed_lines": [42, 43, 46, 47, 50, 65, 67, 75, 94, 96, 97, 99, 100, 103, 104, 107, 108, 109, 115, 117, 124, 127, 140, 148, 162, 171, 172, 174, 175, 177, 180, 191, 194, 201, 202, 204, 205, 206, 211, 217, 219, 229, 230, 246, 248, 264, 267, 268, 269, 271, 275, 281, 282, 285, 288, 289, 291, 300, 301, 305, 313, 314, 315, 316, 320, 322, 330], "summary": {"covered_lines": 67, "num_statements": 72, "percent_covered": 93.05555555555556, "percent_covered_display": "93.06", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 93.05555555555556, "percent_statements_covered_display": "93.06"}, "missing_lines": [105, 178, 231, 272, 302], "excluded_lines": [], "start_line": 22}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 22, 25, 77, 150, 164, 182, 221, 262, 293, 318, 334], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\dweller_ai.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 28, 31, 32, 33, 34, 36, 86, 116, 160, 213, 274, 315, 341], "summary": {"covered_lines": 31, "num_statements": 116, "percent_covered": 26.724137931034484, "percent_covered_display": "26.72", "missing_lines": 85, "excluded_lines": 0, "percent_statements_covered": 26.724137931034484, "percent_statements_covered_display": "26.72"}, "missing_lines": [46, 47, 48, 50, 51, 54, 62, 63, 66, 67, 68, 69, 71, 73, 79, 84, 88, 89, 90, 93, 96, 97, 99, 101, 103, 109, 114, 125, 126, 127, 130, 138, 143, 145, 147, 153, 158, 169, 170, 171, 173, 174, 175, 180, 188, 189, 192, 196, 200, 206, 211, 226, 227, 228, 230, 231, 232, 237, 238, 239, 240, 241, 242, 244, 251, 252, 253, 255, 261, 267, 272, 285, 290, 306, 308, 323, 324, 325, 327, 328, 331, 332, 335, 336, 338], "excluded_lines": [], "functions": {"DwellerAIService.__init__": {"executed_lines": [33, 34], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "DwellerAIService.generate_backstory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [46, 47, 48, 50, 51, 54, 62, 63, 66, 67, 68, 69, 71, 73, 79, 84], "excluded_lines": [], "start_line": 36}, "DwellerAIService.extend_bio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [88, 89, 90, 93, 96, 97, 99, 101, 103, 109, 114], "excluded_lines": [], "start_line": 86}, "DwellerAIService.generate_visual_attributes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [125, 126, 127, 130, 138, 143, 145, 147, 153, 158], "excluded_lines": [], "start_line": 116}, "DwellerAIService.generate_photo": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [169, 170, 171, 173, 174, 175, 180, 188, 189, 192, 196, 200, 206, 211], "excluded_lines": [], "start_line": 160}, "DwellerAIService.generate_audio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 20, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [226, 227, 228, 230, 231, 232, 237, 238, 239, 240, 241, 242, 244, 251, 252, 253, 255, 261, 267, 272], "excluded_lines": [], "start_line": 213}, "DwellerAIService.generate_dweller_avatar": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [285, 290, 306, 308], "excluded_lines": [], "start_line": 274}, "DwellerAIService.dweller_generate_pipeline": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [323, 324, 325, 327, 328, 331, 332, 335, 336, 338], "excluded_lines": [], "start_line": 315}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 28, 31, 32, 36, 86, 116, 160, 213, 274, 315, 341], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"DwellerAIService": {"executed_lines": [33, 34], "summary": {"covered_lines": 2, "num_statements": 87, "percent_covered": 2.2988505747126435, "percent_covered_display": "2.30", "missing_lines": 85, "excluded_lines": 0, "percent_statements_covered": 2.2988505747126435, "percent_statements_covered_display": "2.30"}, "missing_lines": [46, 47, 48, 50, 51, 54, 62, 63, 66, 67, 68, 69, 71, 73, 79, 84, 88, 89, 90, 93, 96, 97, 99, 101, 103, 109, 114, 125, 126, 127, 130, 138, 143, 145, 147, 153, 158, 169, 170, 171, 173, 174, 175, 180, 188, 189, 192, 196, 200, 206, 211, 226, 227, 228, 230, 231, 232, 237, 238, 239, 240, 241, 242, 244, 251, 252, 253, 255, 261, 267, 272, 285, 290, 306, 308, 323, 324, 325, 327, 328, 331, 332, 335, 336, 338], "excluded_lines": [], "start_line": 31}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 28, 31, 32, 36, 86, 116, 160, 213, 274, 315, 341], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\__init__.py": {"executed_lines": [3, 6, 8], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 6, 8], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 6, 8], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\combat_calculator.py": {"executed_lines": [3, 5, 6, 7, 8, 11, 14, 37, 74], "summary": {"covered_lines": 9, "num_statements": 29, "percent_covered": 31.03448275862069, "percent_covered_display": "31.03", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 31.03448275862069, "percent_statements_covered_display": "31.03"}, "missing_lines": [24, 25, 26, 29, 30, 32, 33, 35, 49, 52, 53, 58, 60, 62, 63, 64, 67, 68, 69, 70], "excluded_lines": [], "functions": {"CombatCalculator.select_enemy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24, 25, 26, 29, 30, 32, 33, 35], "excluded_lines": [], "start_line": 14}, "CombatCalculator.calculate_combat_outcome": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [49, 52, 53, 58, 60, 62, 63, 64, 67, 68, 69, 70], "excluded_lines": [], "start_line": 37}, "": {"executed_lines": [3, 5, 6, 7, 8, 11, 14, 37, 74], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CombatCalculator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 20, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24, 25, 26, 29, 30, 32, 33, 35, 49, 52, 53, 58, 60, 62, 63, 64, 67, 68, 69, 70], "excluded_lines": [], "start_line": 11}, "": {"executed_lines": [3, 5, 6, 7, 8, 11, 14, 37, 74], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\coordinator.py": {"executed_lines": [3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 24, 27, 79, 98, 120, 128, 153, 184, 209, 249, 316], "summary": {"covered_lines": 26, "num_statements": 135, "percent_covered": 19.25925925925926, "percent_covered_display": "19.26", "missing_lines": 109, "excluded_lines": 0, "percent_statements_covered": 19.25925925925926, "percent_statements_covered_display": "19.26"}, "missing_lines": [38, 40, 41, 45, 46, 47, 49, 54, 57, 58, 60, 61, 63, 64, 67, 70, 71, 74, 75, 76, 77, 81, 82, 83, 84, 87, 95, 96, 104, 106, 107, 109, 111, 112, 114, 117, 118, 122, 124, 125, 126, 139, 141, 142, 145, 148, 151, 164, 166, 167, 170, 173, 176, 179, 182, 186, 187, 188, 190, 192, 194, 196, 197, 198, 199, 200, 202, 205, 207, 213, 214, 217, 220, 221, 222, 223, 226, 227, 229, 230, 233, 236, 238, 240, 251, 252, 255, 258, 259, 261, 262, 263, 264, 267, 268, 269, 270, 272, 274, 275, 276, 287, 289, 291, 292, 293, 301, 305, 312], "excluded_lines": [], "functions": {"ExplorationCoordinator.process_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [38, 40, 41, 45, 46, 47, 49, 54, 57, 58, 60, 61, 63, 64, 67, 70, 71, 74, 75, 76, 77], "excluded_lines": [], "start_line": 27}, "ExplorationCoordinator._handle_loot_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [81, 82, 83, 84, 87, 95, 96], "excluded_lines": [], "start_line": 79}, "ExplorationCoordinator._apply_health_loss": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [104, 106, 107, 109, 111, 112, 114, 117, 118], "excluded_lines": [], "start_line": 98}, "ExplorationCoordinator._apply_health_restoration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [122, 124, 125, 126], "excluded_lines": [], "start_line": 120}, "ExplorationCoordinator.complete_exploration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [139, 141, 142, 145, 148, 151], "excluded_lines": [], "start_line": 128}, "ExplorationCoordinator.recall_exploration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [164, 166, 167, 170, 173, 176, 179, 182], "excluded_lines": [], "start_line": 153}, "ExplorationCoordinator._update_dweller_status_after_return": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [186, 187, 188, 190, 192, 194, 196, 197, 198, 199, 200, 202, 205, 207], "excluded_lines": [], "start_line": 184}, "ExplorationCoordinator._apply_rewards": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [213, 214, 217, 220, 221, 222, 223, 226, 227, 229, 230, 233, 236, 238, 240], "excluded_lines": [], "start_line": 209}, "ExplorationCoordinator._transfer_loot_to_storage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 25, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 25, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [251, 252, 255, 258, 259, 261, 262, 263, 264, 267, 268, 269, 270, 272, 274, 275, 276, 287, 289, 291, 292, 293, 301, 305, 312], "excluded_lines": [], "start_line": 249}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 24, 27, 79, 98, 120, 128, 153, 184, 209, 249, 316], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ExplorationCoordinator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 109, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 109, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [38, 40, 41, 45, 46, 47, 49, 54, 57, 58, 60, 61, 63, 64, 67, 70, 71, 74, 75, 76, 77, 81, 82, 83, 84, 87, 95, 96, 104, 106, 107, 109, 111, 112, 114, 117, 118, 122, 124, 125, 126, 139, 141, 142, 145, 148, 151, 164, 166, 167, 170, 173, 176, 179, 182, 186, 187, 188, 190, 192, 194, 196, 197, 198, 199, 200, 202, 205, 207, 213, 214, 217, 220, 221, 222, 223, 226, 227, 229, 230, 233, 236, 238, 240, 251, 252, 255, 258, 259, 261, 262, 263, 264, 267, 268, 269, 270, 272, 274, 275, 276, 287, 289, 291, 292, 293, 301, 305, 312], "excluded_lines": [], "start_line": 24}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 24, 27, 79, 98, 120, 128, 153, 184, 209, 249, 316], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\data_loader.py": {"executed_lines": [3, 4, 5, 7, 10, 11, 12, 15, 16, 28, 29, 39, 40, 50, 51, 61, 62, 76, 87], "summary": {"covered_lines": 19, "num_statements": 50, "percent_covered": 38.0, "percent_covered_display": "38.00", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 38.0, "percent_statements_covered_display": "38.00"}, "missing_lines": [18, 19, 20, 22, 23, 25, 31, 32, 33, 35, 36, 42, 43, 44, 46, 47, 53, 54, 55, 57, 58, 64, 65, 66, 68, 69, 70, 71, 73, 78, 89], "excluded_lines": [], "functions": {"load_enemies": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [18, 19, 20, 22, 23, 25], "excluded_lines": [], "start_line": 16}, "load_event_templates": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [31, 32, 33, 35, 36], "excluded_lines": [], "start_line": 29}, "load_junk_items": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42, 43, 44, 46, 47], "excluded_lines": [], "start_line": 40}, "load_weapons": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [53, 54, 55, 57, 58], "excluded_lines": [], "start_line": 51}, "load_outfits": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [64, 65, 66, 68, 69, 70, 71, 73], "excluded_lines": [], "start_line": 62}, "_get_fallback_enemies": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [78], "excluded_lines": [], "start_line": 76}, "_get_fallback_templates": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [89], "excluded_lines": [], "start_line": 87}, "": {"executed_lines": [3, 4, 5, 7, 10, 11, 12, 15, 16, 28, 29, 39, 40, 50, 51, 61, 62, 76, 87], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 4, 5, 7, 10, 11, 12, 15, 16, 28, 29, 39, 40, 50, 51, 61, 62, 76, 87], "summary": {"covered_lines": 19, "num_statements": 50, "percent_covered": 38.0, "percent_covered_display": "38.00", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 38.0, "percent_statements_covered_display": "38.00"}, "missing_lines": [18, 19, 20, 22, 23, 25, 31, 32, 33, 35, 36, 42, 43, 44, 46, 47, 53, 54, 55, 57, 58, 64, 65, 66, 68, 69, 70, 71, 73, 78, 89], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\event_generator.py": {"executed_lines": [3, 4, 6, 7, 8, 16, 17, 18, 21, 24, 54, 91, 104, 122, 133, 150], "summary": {"covered_lines": 16, "num_statements": 66, "percent_covered": 24.242424242424242, "percent_covered_display": "24.24", "missing_lines": 50, "excluded_lines": 0, "percent_statements_covered": 24.242424242424242, "percent_statements_covered_display": "24.24"}, "missing_lines": [34, 35, 37, 40, 41, 42, 43, 45, 47, 50, 51, 52, 64, 65, 68, 69, 76, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 97, 106, 107, 110, 111, 113, 114, 115, 117, 124, 125, 127, 128, 129, 131, 135, 136, 139, 140, 142, 143, 144, 146], "excluded_lines": [], "functions": {"EventGenerator.can_generate_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [34, 35, 37, 40, 41, 42, 43, 45, 47, 50, 51, 52], "excluded_lines": [], "start_line": 24}, "EventGenerator.generate_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [64, 65, 68, 69, 76, 83, 84, 85, 86, 87, 88, 89], "excluded_lines": [], "start_line": 54}, "EventGenerator._generate_combat_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [93, 94, 95, 97], "excluded_lines": [], "start_line": 91}, "EventGenerator._generate_loot_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [106, 107, 110, 111, 113, 114, 115, 117], "excluded_lines": [], "start_line": 104}, "EventGenerator._generate_danger_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [124, 125, 127, 128, 129, 131], "excluded_lines": [], "start_line": 122}, "EventGenerator._generate_rest_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [135, 136, 139, 140, 142, 143, 144, 146], "excluded_lines": [], "start_line": 133}, "": {"executed_lines": [3, 4, 6, 7, 8, 16, 17, 18, 21, 24, 54, 91, 104, 122, 133, 150], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"EventGenerator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 50, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 50, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [34, 35, 37, 40, 41, 42, 43, 45, 47, 50, 51, 52, 64, 65, 68, 69, 76, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 97, 106, 107, 110, 111, 113, 114, 115, 117, 124, 125, 127, 128, 129, 131, 135, 136, 139, 140, 142, 143, 144, 146], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [3, 4, 6, 7, 8, 16, 17, 18, 21, 24, 54, 91, 104, 122, 133, 150], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\loot_calculator.py": {"executed_lines": [3, 5, 6, 7, 10, 13, 27, 52, 80, 99, 118, 155, 172], "summary": {"covered_lines": 13, "num_statements": 65, "percent_covered": 20.0, "percent_covered_display": "20.00", "missing_lines": 52, "excluded_lines": 0, "percent_statements_covered": 20.0, "percent_statements_covered_display": "20.00"}, "missing_lines": [23, 25, 37, 40, 41, 42, 43, 44, 45, 50, 54, 55, 56, 67, 68, 74, 75, 76, 78, 82, 83, 84, 86, 87, 93, 94, 95, 97, 101, 102, 103, 105, 106, 112, 113, 114, 116, 128, 131, 132, 133, 134, 136, 142, 148, 149, 150, 151, 153, 166, 167, 168], "excluded_lines": [], "functions": {"LootCalculator.calculate_luck_multiplier": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [23, 25], "excluded_lines": [], "start_line": 13}, "LootCalculator.get_rarity_weights": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [37, 40, 41, 42, 43, 44, 45, 50], "excluded_lines": [], "start_line": 27}, "LootCalculator.select_random_weapon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [54, 55, 56, 67, 68, 74, 75, 76, 78], "excluded_lines": [], "start_line": 52}, "LootCalculator.select_random_outfit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [82, 83, 84, 86, 87, 93, 94, 95, 97], "excluded_lines": [], "start_line": 80}, "LootCalculator.select_random_junk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [101, 102, 103, 105, 106, 112, 113, 114, 116], "excluded_lines": [], "start_line": 99}, "LootCalculator.select_random_loot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [128, 131, 132, 133, 134, 136, 142, 148, 149, 150, 151, 153], "excluded_lines": [], "start_line": 118}, "LootCalculator.calculate_caps_found": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [166, 167, 168], "excluded_lines": [], "start_line": 155}, "": {"executed_lines": [3, 5, 6, 7, 10, 13, 27, 52, 80, 99, 118, 155, 172], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"LootCalculator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 52, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 52, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [23, 25, 37, 40, 41, 42, 43, 44, 45, 50, 54, 55, 56, 67, 68, 74, 75, 76, 78, 82, 83, 84, 86, 87, 93, 94, 95, 97, 101, 102, 103, 105, 106, 112, 113, 114, 116, 128, 131, 132, 133, 134, 136, 142, 148, 149, 150, 151, 153, 166, 167, 168], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [3, 5, 6, 7, 10, 13, 27, 52, 80, 99, 118, 155, 172], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration\\rewards_calculator.py": {"executed_lines": [3, 4, 7, 10, 49], "summary": {"covered_lines": 5, "num_statements": 16, "percent_covered": 31.25, "percent_covered_display": "31.25", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 31.25, "percent_statements_covered_display": "31.25"}, "missing_lines": [26, 29, 30, 31, 33, 36, 37, 38, 41, 43, 45], "excluded_lines": [], "functions": {"RewardsCalculator.calculate_exploration_xp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [26, 29, 30, 31, 33, 36, 37, 38, 41, 43, 45], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [3, 4, 7, 10, 49], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RewardsCalculator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [26, 29, 30, 31, 33, 36, 37, 38, 41, 43, 45], "excluded_lines": [], "start_line": 7}, "": {"executed_lines": [3, 4, 7, 10, 49], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\exploration_service.py": {"executed_lines": [7, 8, 10, 11, 12, 13, 14, 15, 18, 26, 38, 51, 64, 77, 109, 132, 152, 172, 195], "summary": {"covered_lines": 19, "num_statements": 39, "percent_covered": 48.717948717948715, "percent_covered_display": "48.72", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 48.717948717948715, "percent_statements_covered_display": "48.72"}, "missing_lines": [36, 49, 62, 75, 96, 98, 99, 102, 120, 122, 148, 149, 150, 168, 169, 170, 186, 188, 189, 191], "excluded_lines": [], "functions": {"ExplorationService.generate_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36], "excluded_lines": [], "start_line": 26}, "ExplorationService.process_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [49], "excluded_lines": [], "start_line": 38}, "ExplorationService.complete_exploration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [62], "excluded_lines": [], "start_line": 51}, "ExplorationService.recall_exploration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [75], "excluded_lines": [], "start_line": 64}, "ExplorationService.send_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [96, 98, 99, 102], "excluded_lines": [], "start_line": 77}, "ExplorationService.get_exploration_progress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [120, 122], "excluded_lines": [], "start_line": 109}, "ExplorationService.complete_exploration_with_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [148, 149, 150], "excluded_lines": [], "start_line": 132}, "ExplorationService.recall_exploration_with_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [168, 169, 170], "excluded_lines": [], "start_line": 152}, "ExplorationService.process_event_for_exploration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [186, 188, 189, 191], "excluded_lines": [], "start_line": 172}, "": {"executed_lines": [7, 8, 10, 11, 12, 13, 14, 15, 18, 26, 38, 51, 64, 77, 109, 132, 152, 172, 195], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ExplorationService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 20, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [36, 49, 62, 75, 96, 98, 99, 102, 120, 122, 148, 149, 150, 168, 169, 170, 186, 188, 189, 191], "excluded_lines": [], "start_line": 18}, "": {"executed_lines": [7, 8, 10, 11, 12, 13, 14, 15, 18, 26, 38, 51, 64, 77, 109, 132, 152, 172, 195], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\game_loop.py": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 26, 27, 28, 30, 68, 165, 176, 187, 200, 216, 231, 285, 329, 405, 463, 474, 553, 665, 709, 738, 766], "summary": {"covered_lines": 37, "num_statements": 365, "percent_covered": 10.136986301369863, "percent_covered_display": "10.14", "missing_lines": 328, "excluded_lines": 0, "percent_statements_covered": 10.136986301369863, "percent_statements_covered_display": "10.14"}, "missing_lines": [37, 44, 47, 49, 51, 52, 53, 54, 55, 56, 57, 59, 61, 66, 80, 83, 84, 85, 88, 91, 92, 95, 98, 100, 107, 109, 111, 112, 117, 119, 126, 127, 128, 131, 132, 135, 136, 139, 140, 143, 144, 147, 148, 151, 152, 156, 159, 160, 161, 163, 167, 168, 169, 170, 171, 173, 174, 178, 179, 180, 181, 182, 184, 185, 189, 191, 203, 204, 205, 207, 208, 211, 212, 213, 214, 218, 219, 220, 222, 223, 224, 225, 226, 227, 229, 238, 240, 242, 248, 250, 255, 257, 258, 260, 262, 263, 264, 267, 270, 271, 272, 273, 275, 277, 279, 280, 281, 283, 297, 298, 299, 301, 303, 304, 307, 310, 311, 313, 314, 317, 318, 319, 322, 323, 324, 325, 327, 337, 339, 340, 341, 342, 344, 351, 353, 354, 355, 358, 361, 362, 363, 364, 365, 368, 369, 371, 372, 375, 376, 377, 378, 379, 381, 382, 383, 384, 385, 388, 390, 391, 392, 393, 394, 396, 398, 400, 401, 403, 413, 415, 416, 417, 419, 425, 427, 428, 431, 433, 434, 436, 439, 443, 446, 447, 448, 453, 455, 457, 458, 459, 461, 472, 483, 485, 486, 488, 496, 498, 499, 500, 501, 502, 503, 506, 507, 510, 513, 514, 515, 517, 518, 520, 523, 524, 525, 528, 529, 530, 531, 533, 535, 538, 539, 540, 541, 544, 545, 547, 548, 549, 551, 564, 566, 567, 568, 569, 570, 572, 574, 576, 577, 578, 580, 581, 584, 585, 586, 587, 588, 591, 594, 597, 598, 601, 602, 603, 604, 605, 606, 609, 610, 611, 612, 615, 616, 618, 619, 621, 623, 629, 630, 631, 635, 636, 642, 645, 646, 647, 649, 650, 656, 658, 659, 660, 661, 663, 676, 678, 680, 683, 684, 685, 686, 687, 688, 689, 690, 691, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 707, 720, 722, 724, 726, 727, 728, 729, 730, 731, 732, 733, 734, 736, 748, 751, 754, 757], "excluded_lines": [], "functions": {"GameLoopService.__init__": {"executed_lines": [27, 28], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "GameLoopService.process_game_tick": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [37, 44, 47, 49, 51, 52, 53, 54, 55, 56, 57, 59, 61, 66], "excluded_lines": [], "start_line": 30}, "GameLoopService.process_vault_tick": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 36, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 36, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [80, 83, 84, 85, 88, 91, 92, 95, 98, 100, 107, 109, 111, 112, 117, 119, 126, 127, 128, 131, 132, 135, 136, 139, 140, 143, 144, 147, 148, 151, 152, 156, 159, 160, 161, 163], "excluded_lines": [], "start_line": 68}, "GameLoopService.pause_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [167, 168, 169, 170, 171, 173, 174], "excluded_lines": [], "start_line": 165}, "GameLoopService.resume_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [178, 179, 180, 181, 182, 184, 185], "excluded_lines": [], "start_line": 176}, "GameLoopService.get_vault_status": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [189, 191], "excluded_lines": [], "start_line": 187}, "GameLoopService._get_active_vaults": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [203, 204, 205, 207, 208, 211, 212, 213, 214], "excluded_lines": [], "start_line": 200}, "GameLoopService._get_or_create_game_state": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [218, 219, 220, 222, 223, 224, 225, 226, 227, 229], "excluded_lines": [], "start_line": 216}, "GameLoopService._process_explorations": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 23, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [238, 240, 242, 248, 250, 255, 257, 258, 260, 262, 263, 264, 267, 270, 271, 272, 273, 275, 277, 279, 280, 281, 283], "excluded_lines": [], "start_line": 231}, "GameLoopService._award_work_xp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [297, 298, 299, 301, 303, 304, 307, 310, 311, 313, 314, 317, 318, 319, 322, 323, 324, 325, 327], "excluded_lines": [], "start_line": 285}, "GameLoopService._process_dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 41, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 41, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [337, 339, 340, 341, 342, 344, 351, 353, 354, 355, 358, 361, 362, 363, 364, 365, 368, 369, 371, 372, 375, 376, 377, 378, 379, 381, 382, 383, 384, 385, 388, 390, 391, 392, 393, 394, 396, 398, 400, 401, 403], "excluded_lines": [], "start_line": 329}, "GameLoopService._process_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 23, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [413, 415, 416, 417, 419, 425, 427, 428, 431, 433, 434, 436, 439, 443, 446, 447, 448, 453, 455, 457, 458, 459, 461], "excluded_lines": [], "start_line": 405}, "GameLoopService._process_happiness": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [472], "excluded_lines": [], "start_line": 463}, "GameLoopService._process_incidents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 39, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 39, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [483, 485, 486, 488, 496, 498, 499, 500, 501, 502, 503, 506, 507, 510, 513, 514, 515, 517, 518, 520, 523, 524, 525, 528, 529, 530, 531, 533, 535, 538, 539, 540, 541, 544, 545, 547, 548, 549, 551], "excluded_lines": [], "start_line": 474}, "GameLoopService._update_room_relationships": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 55, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 55, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [564, 566, 567, 568, 569, 570, 572, 574, 576, 577, 578, 580, 581, 584, 585, 586, 587, 588, 591, 594, 597, 598, 601, 602, 603, 604, 605, 606, 609, 610, 611, 612, 615, 616, 618, 619, 621, 623, 629, 630, 631, 635, 636, 642, 645, 646, 647, 649, 650, 656, 658, 659, 660, 661, 663], "excluded_lines": [], "start_line": 553}, "GameLoopService._process_pregnancies_and_births": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 25, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 25, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [676, 678, 680, 683, 684, 685, 686, 687, 688, 689, 690, 691, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 707], "excluded_lines": [], "start_line": 665}, "GameLoopService._age_children": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [720, 722, 724, 726, 727, 728, 729, 730, 731, 732, 733, 734, 736], "excluded_lines": [], "start_line": 709}, "GameLoopService._process_breeding": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [748, 751, 754, 757], "excluded_lines": [], "start_line": 738}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 26, 30, 68, 165, 176, 187, 200, 216, 231, 285, 329, 405, 463, 474, 553, 665, 709, 738, 766], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"GameLoopService": {"executed_lines": [27, 28], "summary": {"covered_lines": 2, "num_statements": 330, "percent_covered": 0.6060606060606061, "percent_covered_display": "0.61", "missing_lines": 328, "excluded_lines": 0, "percent_statements_covered": 0.6060606060606061, "percent_statements_covered_display": "0.61"}, "missing_lines": [37, 44, 47, 49, 51, 52, 53, 54, 55, 56, 57, 59, 61, 66, 80, 83, 84, 85, 88, 91, 92, 95, 98, 100, 107, 109, 111, 112, 117, 119, 126, 127, 128, 131, 132, 135, 136, 139, 140, 143, 144, 147, 148, 151, 152, 156, 159, 160, 161, 163, 167, 168, 169, 170, 171, 173, 174, 178, 179, 180, 181, 182, 184, 185, 189, 191, 203, 204, 205, 207, 208, 211, 212, 213, 214, 218, 219, 220, 222, 223, 224, 225, 226, 227, 229, 238, 240, 242, 248, 250, 255, 257, 258, 260, 262, 263, 264, 267, 270, 271, 272, 273, 275, 277, 279, 280, 281, 283, 297, 298, 299, 301, 303, 304, 307, 310, 311, 313, 314, 317, 318, 319, 322, 323, 324, 325, 327, 337, 339, 340, 341, 342, 344, 351, 353, 354, 355, 358, 361, 362, 363, 364, 365, 368, 369, 371, 372, 375, 376, 377, 378, 379, 381, 382, 383, 384, 385, 388, 390, 391, 392, 393, 394, 396, 398, 400, 401, 403, 413, 415, 416, 417, 419, 425, 427, 428, 431, 433, 434, 436, 439, 443, 446, 447, 448, 453, 455, 457, 458, 459, 461, 472, 483, 485, 486, 488, 496, 498, 499, 500, 501, 502, 503, 506, 507, 510, 513, 514, 515, 517, 518, 520, 523, 524, 525, 528, 529, 530, 531, 533, 535, 538, 539, 540, 541, 544, 545, 547, 548, 549, 551, 564, 566, 567, 568, 569, 570, 572, 574, 576, 577, 578, 580, 581, 584, 585, 586, 587, 588, 591, 594, 597, 598, 601, 602, 603, 604, 605, 606, 609, 610, 611, 612, 615, 616, 618, 619, 621, 623, 629, 630, 631, 635, 636, 642, 645, 646, 647, 649, 650, 656, 658, 659, 660, 661, 663, 676, 678, 680, 683, 684, 685, 686, 687, 688, 689, 690, 691, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 707, 720, 722, 724, 726, 727, 728, 729, 730, 731, 732, 733, 734, 736, 748, 751, 754, 757], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 26, 30, 68, 165, 176, 187, 200, 216, 231, 285, 329, 405, 463, 474, 553, 665, 709, 738, 766], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\happiness_service.py": {"executed_lines": [3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 26, 27, 123, 124, 170, 171, 282, 283, 377], "summary": {"covered_lines": 25, "num_statements": 152, "percent_covered": 16.44736842105263, "percent_covered_display": "16.45", "missing_lines": 127, "excluded_lines": 0, "percent_statements_covered": 16.44736842105263, "percent_statements_covered_display": "16.45"}, "missing_lines": [43, 44, 45, 46, 49, 51, 52, 55, 58, 61, 63, 71, 73, 75, 76, 77, 80, 88, 89, 90, 93, 94, 95, 96, 97, 99, 102, 105, 106, 107, 110, 111, 113, 121, 137, 138, 139, 141, 147, 154, 155, 157, 158, 160, 190, 193, 198, 199, 200, 201, 204, 205, 208, 209, 212, 213, 214, 215, 216, 219, 220, 225, 226, 229, 230, 234, 235, 236, 238, 239, 241, 242, 245, 246, 249, 250, 253, 255, 256, 258, 261, 262, 265, 270, 273, 274, 277, 278, 280, 297, 298, 299, 301, 302, 303, 304, 306, 309, 311, 313, 320, 321, 323, 324, 326, 327, 329, 330, 334, 335, 336, 337, 338, 340, 341, 344, 345, 349, 350, 357, 358, 360, 361, 363, 366, 367, 374], "excluded_lines": [], "functions": {"HappinessService.update_vault_happiness": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 34, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 34, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [43, 44, 45, 46, 49, 51, 52, 55, 58, 61, 63, 71, 73, 75, 76, 77, 80, 88, 89, 90, 93, 94, 95, 96, 97, 99, 102, 105, 106, 107, 110, 111, 113, 121], "excluded_lines": [], "start_line": 27}, "HappinessService._calculate_vault_factors": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [137, 138, 139, 141, 147, 154, 155, 157, 158, 160], "excluded_lines": [], "start_line": 124}, "HappinessService._calculate_happiness_change": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 45, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 45, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [190, 193, 198, 199, 200, 201, 204, 205, 208, 209, 212, 213, 214, 215, 216, 219, 220, 225, 226, 229, 230, 234, 235, 236, 238, 239, 241, 242, 245, 246, 249, 250, 253, 255, 256, 258, 261, 262, 265, 270, 273, 274, 277, 278, 280], "excluded_lines": [], "start_line": 171}, "HappinessService.get_happiness_modifiers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 38, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 38, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [297, 298, 299, 301, 302, 303, 304, 306, 309, 311, 313, 320, 321, 323, 324, 326, 327, 329, 330, 334, 335, 336, 337, 338, 340, 341, 344, 345, 349, 350, 357, 358, 360, 361, 363, 366, 367, 374], "excluded_lines": [], "start_line": 283}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 26, 27, 123, 124, 170, 171, 282, 283, 377], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"HappinessService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 127, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 127, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [43, 44, 45, 46, 49, 51, 52, 55, 58, 61, 63, 71, 73, 75, 76, 77, 80, 88, 89, 90, 93, 94, 95, 96, 97, 99, 102, 105, 106, 107, 110, 111, 113, 121, 137, 138, 139, 141, 147, 154, 155, 157, 158, 160, 190, 193, 198, 199, 200, 201, 204, 205, 208, 209, 212, 213, 214, 215, 216, 219, 220, 225, 226, 229, 230, 234, 235, 236, 238, 239, 241, 242, 245, 246, 249, 250, 253, 255, 256, 258, 261, 262, 265, 270, 273, 274, 277, 278, 280, 297, 298, 299, 301, 302, 303, 304, 306, 309, 311, 313, 320, 321, 323, 324, 326, 327, 329, 330, 334, 335, 336, 337, 338, 340, 341, 344, 345, 349, 350, 357, 358, 360, 361, 363, 366, 367, 374], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 26, 27, 123, 124, 170, 171, 282, 283, 377], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\health_check.py": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 17, 18, 22, 25, 28, 29, 30, 33, 34, 37, 38, 39, 40, 43, 46, 47, 75, 76, 105, 106, 157, 158, 213, 214, 304, 305, 368, 419, 420], "summary": {"covered_lines": 40, "num_statements": 162, "percent_covered": 24.691358024691358, "percent_covered_display": "24.69", "missing_lines": 122, "excluded_lines": 0, "percent_statements_covered": 24.691358024691358, "percent_statements_covered_display": "24.69"}, "missing_lines": [19, 20, 57, 58, 59, 60, 66, 67, 68, 83, 84, 85, 86, 87, 93, 94, 95, 102, 103, 113, 114, 121, 123, 124, 125, 127, 128, 135, 136, 138, 148, 149, 150, 166, 167, 174, 175, 183, 184, 186, 196, 197, 198, 204, 205, 206, 222, 223, 230, 231, 233, 235, 236, 237, 238, 241, 242, 244, 245, 255, 268, 274, 275, 276, 277, 278, 285, 286, 287, 288, 293, 294, 295, 297, 312, 313, 319, 322, 323, 325, 327, 339, 340, 341, 347, 348, 349, 359, 360, 361, 388, 391, 392, 395, 396, 399, 400, 403, 404, 405, 408, 409, 410, 413, 414, 415, 417, 430, 432, 433, 434, 436, 437, 438, 440, 449, 450, 452, 454, 455, 457, 459], "excluded_lines": [], "functions": {"HealthCheckService.check_postgres": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [57, 58, 59, 60, 66, 67, 68], "excluded_lines": [], "start_line": 47}, "HealthCheckService.check_redis": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [83, 84, 85, 86, 87, 93, 94, 95, 102, 103], "excluded_lines": [], "start_line": 76}, "HealthCheckService.check_celery": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [113, 114, 121, 123, 124, 125, 127, 128, 135, 136, 138, 148, 149, 150], "excluded_lines": [], "start_line": 106}, "HealthCheckService.check_minio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [166, 167, 174, 175, 183, 184, 186, 196, 197, 198, 204, 205, 206], "excluded_lines": [], "start_line": 158}, "HealthCheckService.check_ollama": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [222, 223, 230, 231, 233, 235, 236, 237, 238, 241, 242, 244, 245, 255, 268, 274, 275, 276, 277, 278, 285, 286, 287, 288, 293, 294, 295, 297], "excluded_lines": [], "start_line": 214}, "HealthCheckService.check_smtp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [312, 313, 319, 322, 323, 325, 327, 339, 340, 341, 347, 348, 349, 359, 360, 361], "excluded_lines": [], "start_line": 305}, "HealthCheckService.check_all_services": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [388, 391, 392, 395, 396, 399, 400, 403, 404, 405, 408, 409, 410, 413, 414, 415, 417], "excluded_lines": [], "start_line": 368}, "HealthCheckService.log_health_check_results": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [430, 432, 433, 434, 436, 437, 438, 440, 449, 450, 452, 454, 455, 457, 459], "excluded_lines": [], "start_line": 420}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 17, 18, 22, 25, 28, 29, 30, 33, 34, 37, 38, 39, 40, 43, 46, 47, 75, 76, 105, 106, 157, 158, 213, 214, 304, 305, 368, 419, 420], "summary": {"covered_lines": 40, "num_statements": 42, "percent_covered": 95.23809523809524, "percent_covered_display": "95.24", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 95.23809523809524, "percent_statements_covered_display": "95.24"}, "missing_lines": [19, 20], "excluded_lines": [], "start_line": 1}}, "classes": {"ServiceStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "HealthCheckResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "HealthCheckService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 120, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 120, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [57, 58, 59, 60, 66, 67, 68, 83, 84, 85, 86, 87, 93, 94, 95, 102, 103, 113, 114, 121, 123, 124, 125, 127, 128, 135, 136, 138, 148, 149, 150, 166, 167, 174, 175, 183, 184, 186, 196, 197, 198, 204, 205, 206, 222, 223, 230, 231, 233, 235, 236, 237, 238, 241, 242, 244, 245, 255, 268, 274, 275, 276, 277, 278, 285, 286, 287, 288, 293, 294, 295, 297, 312, 313, 319, 322, 323, 325, 327, 339, 340, 341, 347, 348, 349, 359, 360, 361, 388, 391, 392, 395, 396, 399, 400, 403, 404, 405, 408, 409, 410, 413, 414, 415, 417, 430, 432, 433, 434, 436, 437, 438, 440, 449, 450, 452, 454, 455, 457, 459], "excluded_lines": [], "start_line": 43}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 17, 18, 22, 25, 28, 29, 30, 33, 34, 37, 38, 39, 40, 43, 46, 47, 75, 76, 105, 106, 157, 158, 213, 214, 304, 305, 368, 419, 420], "summary": {"covered_lines": 40, "num_statements": 42, "percent_covered": 95.23809523809524, "percent_covered_display": "95.24", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 95.23809523809524, "percent_statements_covered_display": "95.24"}, "missing_lines": [19, 20], "excluded_lines": [], "start_line": 1}}}, "app\\services\\incident_service.py": {"executed_lines": [3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 21, 24, 25, 27, 77, 186, 292, 359, 422, 445, 449, 455, 460, 493, 513], "summary": {"covered_lines": 28, "num_statements": 199, "percent_covered": 14.07035175879397, "percent_covered_display": "14.07", "missing_lines": 171, "excluded_lines": 0, "percent_statements_covered": 14.07035175879397, "percent_statements_covered_display": "14.07"}, "missing_lines": [40, 42, 43, 44, 46, 47, 50, 52, 53, 54, 57, 58, 60, 61, 66, 67, 68, 71, 72, 75, 98, 101, 102, 104, 107, 111, 112, 113, 116, 119, 121, 124, 125, 127, 128, 129, 132, 133, 134, 137, 147, 148, 151, 153, 154, 158, 161, 164, 171, 180, 184, 200, 201, 204, 206, 214, 215, 217, 219, 223, 224, 227, 228, 231, 232, 235, 236, 237, 238, 239, 241, 243, 244, 245, 248, 249, 250, 252, 253, 254, 257, 260, 261, 264, 265, 267, 269, 270, 273, 276, 278, 280, 281, 283, 309, 310, 311, 313, 314, 317, 318, 319, 320, 321, 324, 325, 328, 329, 330, 332, 335, 336, 337, 339, 340, 342, 343, 344, 345, 347, 351, 362, 363, 364, 366, 367, 370, 374, 393, 394, 397, 399, 401, 404, 414, 415, 417, 424, 425, 427, 434, 435, 436, 439, 441, 443, 447, 452, 453, 457, 458, 469, 471, 472, 475, 478, 480, 481, 484, 486, 487, 488, 491, 495, 500, 502, 503, 504, 505, 507, 509], "excluded_lines": [], "functions": {"IncidentService.__init__": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "IncidentService.should_spawn_incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 20, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40, 42, 43, 44, 46, 47, 50, 52, 53, 54, 57, 58, 60, 61, 66, 67, 68, 71, 72, 75], "excluded_lines": [], "start_line": 27}, "IncidentService.spawn_incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 31, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [98, 101, 102, 104, 107, 111, 112, 113, 116, 119, 121, 124, 125, 127, 128, 129, 132, 133, 134, 137, 147, 148, 151, 153, 154, 158, 161, 164, 171, 180, 184], "excluded_lines": [], "start_line": 77}, "IncidentService.process_incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 43, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [200, 201, 204, 206, 214, 215, 217, 219, 223, 224, 227, 228, 231, 232, 235, 236, 237, 238, 239, 241, 243, 244, 245, 248, 249, 250, 252, 253, 254, 257, 260, 261, 264, 265, 267, 269, 270, 273, 276, 278, 280, 281, 283], "excluded_lines": [], "start_line": 186}, "IncidentService.resolve_incident_manually": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 27, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [309, 310, 311, 313, 314, 317, 318, 319, 320, 321, 324, 325, 328, 329, 330, 332, 335, 336, 337, 339, 340, 342, 343, 344, 345, 347, 351], "excluded_lines": [], "start_line": 292}, "IncidentService._spread_incident": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [362, 363, 364, 366, 367, 370, 374, 393, 394, 397, 399, 401, 404, 414, 415, 417], "excluded_lines": [], "start_line": 359}, "IncidentService._calculate_dweller_combat_power": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [424, 425, 427, 434, 435, 436, 439, 441, 443], "excluded_lines": [], "start_line": 422}, "IncidentService._calculate_raider_power": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [447], "excluded_lines": [], "start_line": 445}, "IncidentService._calculate_damage_to_dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [452, 453], "excluded_lines": [], "start_line": 449}, "IncidentService._calculate_damage_to_raiders": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [457, 458], "excluded_lines": [], "start_line": 455}, "IncidentService._award_combat_xp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [469, 471, 472, 475, 478, 480, 481, 484, 486, 487, 488, 491], "excluded_lines": [], "start_line": 460}, "IncidentService._generate_loot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [495, 500, 502, 503, 504, 505, 507, 509], "excluded_lines": [], "start_line": 493}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 21, 24, 27, 77, 186, 292, 359, 422, 445, 449, 455, 460, 493, 513], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"IncidentService": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 172, "percent_covered": 0.5813953488372093, "percent_covered_display": "0.58", "missing_lines": 171, "excluded_lines": 0, "percent_statements_covered": 0.5813953488372093, "percent_statements_covered_display": "0.58"}, "missing_lines": [40, 42, 43, 44, 46, 47, 50, 52, 53, 54, 57, 58, 60, 61, 66, 67, 68, 71, 72, 75, 98, 101, 102, 104, 107, 111, 112, 113, 116, 119, 121, 124, 125, 127, 128, 129, 132, 133, 134, 137, 147, 148, 151, 153, 154, 158, 161, 164, 171, 180, 184, 200, 201, 204, 206, 214, 215, 217, 219, 223, 224, 227, 228, 231, 232, 235, 236, 237, 238, 239, 241, 243, 244, 245, 248, 249, 250, 252, 253, 254, 257, 260, 261, 264, 265, 267, 269, 270, 273, 276, 278, 280, 281, 283, 309, 310, 311, 313, 314, 317, 318, 319, 320, 321, 324, 325, 328, 329, 330, 332, 335, 336, 337, 339, 340, 342, 343, 344, 345, 347, 351, 362, 363, 364, 366, 367, 370, 374, 393, 394, 397, 399, 401, 404, 414, 415, 417, 424, 425, 427, 434, 435, 436, 439, 441, 443, 447, 452, 453, 457, 458, 469, 471, 472, 475, 478, 480, 481, 484, 486, 487, 488, 491, 495, 500, 502, 503, 504, 505, 507, 509], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 21, 24, 27, 77, 186, 292, 359, 422, 445, 449, 455, 460, 493, 513], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\leveling_service.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 43, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [3, 5, 6, 7, 10, 13, 14, 33, 34, 35, 37, 38, 49, 50, 51, 55, 66, 67, 69, 70, 73, 74, 75, 76, 77, 79, 81, 82, 83, 85, 87, 104, 105, 108, 109, 112, 113, 116, 119, 121, 128, 130, 134], "excluded_lines": [], "functions": {"LevelingService.calculate_xp_required": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [33, 34, 35], "excluded_lines": [], "start_line": 14}, "LevelingService.calculate_xp_for_level_range": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [49, 50, 51], "excluded_lines": [], "start_line": 38}, "LevelingService.check_level_up": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [66, 67, 69, 70, 73, 74, 75, 76, 77, 79, 81, 82, 83, 85], "excluded_lines": [], "start_line": 55}, "LevelingService.level_up_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [104, 105, 108, 109, 112, 113, 116, 119, 121, 128, 130], "excluded_lines": [], "start_line": 87}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [3, 5, 6, 7, 10, 13, 14, 37, 38, 55, 87, 134], "excluded_lines": [], "start_line": 1}}, "classes": {"LevelingService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 31, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [33, 34, 35, 49, 50, 51, 66, 67, 69, 70, 73, 74, 75, 76, 77, 79, 81, 82, 83, 85, 104, 105, 108, 109, 112, 113, 116, 119, 121, 128, 130], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [3, 5, 6, 7, 10, 13, 14, 37, 38, 55, 87, 134], "excluded_lines": [], "start_line": 1}}}, "app\\services\\minio.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 10, 11, 13, 37, 40, 41, 63, 64, 70, 80, 106, 136, 140, 154, 164, 165, 166], "summary": {"covered_lines": 24, "num_statements": 105, "percent_covered": 22.857142857142858, "percent_covered_display": "22.86", "missing_lines": 81, "excluded_lines": 0, "percent_statements_covered": 22.857142857142858, "percent_statements_covered_display": "22.86"}, "missing_lines": [42, 43, 44, 46, 47, 48, 54, 55, 56, 57, 58, 59, 61, 65, 66, 67, 68, 71, 72, 73, 74, 75, 76, 77, 78, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 99, 100, 101, 102, 103, 104, 109, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 125, 126, 127, 132, 133, 134, 137, 138, 141, 142, 143, 144, 146, 147, 148, 149, 150, 151, 152, 155, 156, 157, 159, 160, 161], "excluded_lines": [], "functions": {"MinioService.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42, 43, 44, 46, 47, 48, 54, 55, 56, 57, 58, 59, 61], "excluded_lines": [], "start_line": 41}, "MinioService._get_public_policy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [65, 66, 67, 68], "excluded_lines": [], "start_line": 64}, "MinioService._ensure_bucket_exists": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [71, 72, 73, 74, 75, 76, 77, 78], "excluded_lines": [], "start_line": 70}, "MinioService._ensure_bucket_policy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 99, 100, 101, 102, 103, 104], "excluded_lines": [], "start_line": 80}, "MinioService.upload_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [109, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 125, 126, 127, 132, 133, 134], "excluded_lines": [], "start_line": 106}, "MinioService.upload_thumbnail": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [137, 138], "excluded_lines": [], "start_line": 136}, "MinioService.download_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [141, 142, 143, 144, 146, 147, 148, 149, 150, 151, 152], "excluded_lines": [], "start_line": 140}, "MinioService.public_url": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [155, 156, 157, 159, 160, 161], "excluded_lines": [], "start_line": 154}, "get_minio_client": {"executed_lines": [166], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 165}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 10, 11, 13, 37, 40, 41, 63, 64, 70, 80, 106, 136, 140, 154, 164, 165], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"MinioService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 81, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 81, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42, 43, 44, 46, 47, 48, 54, 55, 56, 57, 58, 59, 61, 65, 66, 67, 68, 71, 72, 73, 74, 75, 76, 77, 78, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 99, 100, 101, 102, 103, 104, 109, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 125, 126, 127, 132, 133, 134, 137, 138, 141, 142, 143, 144, 146, 147, 148, 149, 150, 151, 152, 155, 156, 157, 159, 160, 161], "excluded_lines": [], "start_line": 40}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 9, 10, 11, 13, 37, 40, 41, 63, 64, 70, 80, 106, 136, 140, 154, 164, 165, 166], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\notification_service.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 37, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 37, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 4, 6, 7, 8, 11, 14, 15, 29, 44, 60, 64, 65, 75, 87, 88, 97, 109, 110, 120, 132, 133, 143, 155, 156, 166, 178, 179, 189, 200, 201, 211, 223, 224, 232, 245], "excluded_lines": [], "functions": {"NotificationService.create_and_send": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [29, 44, 60], "excluded_lines": [], "start_line": 15}, "NotificationService.notify_exploration_update": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [75], "excluded_lines": [], "start_line": 65}, "NotificationService.notify_exploration_complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [97], "excluded_lines": [], "start_line": 88}, "NotificationService.notify_level_up": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [120], "excluded_lines": [], "start_line": 110}, "NotificationService.notify_training_complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [143], "excluded_lines": [], "start_line": 133}, "NotificationService.notify_baby_born": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [166], "excluded_lines": [], "start_line": 156}, "NotificationService.notify_resource_low": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [189], "excluded_lines": [], "start_line": 179}, "NotificationService.notify_combat_victory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [211], "excluded_lines": [], "start_line": 201}, "NotificationService.notify_radio_new_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [232], "excluded_lines": [], "start_line": 224}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 26, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 4, 6, 7, 8, 11, 14, 15, 64, 65, 87, 88, 109, 110, 132, 133, 155, 156, 178, 179, 200, 201, 223, 224, 245], "excluded_lines": [], "start_line": 1}}, "classes": {"NotificationService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [29, 44, 60, 75, 97, 120, 143, 166, 189, 211, 232], "excluded_lines": [], "start_line": 11}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 26, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [1, 2, 4, 6, 7, 8, 11, 14, 15, 64, 65, 87, 88, 109, 110, 132, 133, 155, 156, 178, 179, 200, 201, 223, 224, 245], "excluded_lines": [], "start_line": 1}}}, "app\\services\\open_ai.py": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 13, 16, 17, 18, 20, 22, 23, 25, 26, 27, 36, 38, 41, 53, 70, 77, 93, 102, 131, 165, 166, 167], "summary": {"covered_lines": 31, "num_statements": 78, "percent_covered": 39.743589743589745, "percent_covered_display": "39.74", "missing_lines": 47, "excluded_lines": 0, "percent_statements_covered": 39.743589743589745, "percent_statements_covered_display": "39.74"}, "missing_lines": [28, 29, 30, 31, 32, 33, 34, 39, 42, 49, 51, 58, 59, 64, 65, 66, 67, 68, 71, 75, 78, 91, 94, 99, 100, 113, 115, 117, 118, 121, 125, 126, 127, 128, 129, 142, 145, 146, 147, 148, 149, 150, 151, 154, 157, 160, 162], "excluded_lines": [], "functions": {"AIService.__init__": {"executed_lines": [18, 20], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "AIService.get_model": {"executed_lines": [25, 26, 27, 36], "summary": {"covered_lines": 4, "num_statements": 11, "percent_covered": 36.36363636363637, "percent_covered_display": "36.36", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 36.36363636363637, "percent_statements_covered_display": "36.36"}, "missing_lines": [28, 29, 30, 31, 32, 33, 34], "excluded_lines": [], "start_line": 23}, "AIService.get_chatgpt_client": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [39], "excluded_lines": [], "start_line": 38}, "AIService.generate_image": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42, 49, 51], "excluded_lines": [], "start_line": 41}, "AIService.generate_audio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [58, 59, 64, 65, 66, 67, 68], "excluded_lines": [], "start_line": 53}, "AIService.generate_completion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [71, 75], "excluded_lines": [], "start_line": 70}, "AIService.generate_completion_json": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [78, 91], "excluded_lines": [], "start_line": 77}, "AIService.generate_speech_from_text": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [94, 99, 100], "excluded_lines": [], "start_line": 93}, "AIService.transcribe_audio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [113, 115, 117, 118, 121, 125, 126, 127, 128, 129], "excluded_lines": [], "start_line": 102}, "AIService.chat_completion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [142, 145, 146, 147, 148, 149, 150, 151, 154, 157, 160, 162], "excluded_lines": [], "start_line": 131}, "get_ai_service": {"executed_lines": [167], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 166}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 13, 16, 17, 22, 23, 38, 41, 53, 70, 77, 93, 102, 131, 165, 166], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AIService": {"executed_lines": [18, 20, 25, 26, 27, 36], "summary": {"covered_lines": 6, "num_statements": 53, "percent_covered": 11.320754716981131, "percent_covered_display": "11.32", "missing_lines": 47, "excluded_lines": 0, "percent_statements_covered": 11.320754716981131, "percent_statements_covered_display": "11.32"}, "missing_lines": [28, 29, 30, 31, 32, 33, 34, 39, 42, 49, 51, 58, 59, 64, 65, 66, 67, 68, 71, 75, 78, 91, 94, 99, 100, 113, 115, 117, 118, 121, 125, 126, 127, 128, 129, 142, 145, 146, 147, 148, 149, 150, 151, 154, 157, 160, 162], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [1, 2, 4, 5, 6, 7, 8, 10, 11, 13, 16, 17, 22, 23, 38, 41, 53, 70, 77, 93, 102, 131, 165, 166, 167], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\radio_service.py": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 23, 24, 44, 45, 93, 94, 138, 139, 166, 167, 223, 224, 291], "summary": {"covered_lines": 26, "num_statements": 94, "percent_covered": 27.659574468085108, "percent_covered_display": "27.66", "missing_lines": 68, "excluded_lines": 0, "percent_statements_covered": 27.659574468085108, "percent_statements_covered_display": "27.66"}, "missing_lines": [40, 42, 61, 62, 64, 65, 68, 71, 72, 73, 76, 80, 81, 83, 84, 85, 88, 89, 91, 109, 110, 112, 113, 116, 117, 120, 122, 123, 126, 129, 130, 131, 134, 136, 156, 162, 164, 189, 190, 192, 193, 194, 196, 197, 200, 201, 202, 203, 206, 207, 208, 211, 212, 215, 217, 221, 239, 240, 242, 243, 255, 257, 258, 270, 273, 274, 277, 279], "excluded_lines": [], "functions": {"RadioService.get_radio_rooms": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40, 42], "excluded_lines": [], "start_line": 24}, "RadioService.calculate_recruitment_rate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [61, 62, 64, 65, 68, 71, 72, 73, 76, 80, 81, 83, 84, 85, 88, 89, 91], "excluded_lines": [], "start_line": 45}, "RadioService.check_for_recruitment": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [109, 110, 112, 113, 116, 117, 120, 122, 123, 126, 129, 130, 131, 134, 136], "excluded_lines": [], "start_line": 94}, "RadioService.recruit_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [156, 162, 164], "excluded_lines": [], "start_line": 139}, "RadioService.manual_recruit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [189, 190, 192, 193, 194, 196, 197, 200, 201, 202, 203, 206, 207, 208, 211, 212, 215, 217, 221], "excluded_lines": [], "start_line": 167}, "RadioService.get_recruitment_stats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [239, 240, 242, 243, 255, 257, 258, 270, 273, 274, 277, 279], "excluded_lines": [], "start_line": 224}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 23, 24, 44, 45, 93, 94, 138, 139, 166, 167, 223, 224, 291], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RadioService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 68, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 68, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40, 42, 61, 62, 64, 65, 68, 71, 72, 73, 76, 80, 81, 83, 84, 85, 88, 89, 91, 109, 110, 112, 113, 116, 117, 120, 122, 123, 126, 129, 130, 131, 134, 136, 156, 162, 164, 189, 190, 192, 193, 194, 196, 197, 200, 201, 202, 203, 206, 207, 208, 211, 212, 215, 217, 221, 239, 240, 242, 243, 255, 257, 258, 270, 273, 274, 277, 279], "excluded_lines": [], "start_line": 20}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 23, 24, 44, 45, 93, 94, 138, 139, 166, 167, 223, 224, 291], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\relationship_service.py": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 22, 25, 26, 44, 45, 74, 75, 118, 119, 157, 158, 216, 217, 269, 270, 349, 350, 401, 402, 422], "summary": {"covered_lines": 34, "num_statements": 165, "percent_covered": 20.606060606060606, "percent_covered_display": "20.61", "missing_lines": 131, "excluded_lines": 0, "percent_statements_covered": 20.606060606060606, "percent_statements_covered_display": "20.61"}, "missing_lines": [42, 62, 63, 64, 67, 71, 72, 93, 94, 95, 96, 98, 99, 102, 104, 105, 106, 108, 111, 113, 116, 138, 139, 140, 141, 143, 144, 147, 149, 152, 154, 155, 177, 178, 179, 180, 182, 183, 184, 185, 187, 190, 194, 195, 196, 199, 200, 203, 204, 205, 206, 207, 208, 209, 210, 211, 213, 214, 229, 230, 231, 232, 233, 236, 237, 238, 239, 242, 243, 246, 247, 248, 249, 250, 251, 253, 254, 255, 256, 257, 260, 265, 267, 285, 286, 287, 291, 294, 300, 301, 303, 304, 305, 308, 309, 311, 312, 313, 316, 317, 320, 329, 331, 332, 335, 336, 337, 338, 339, 340, 341, 342, 343, 346, 347, 362, 363, 366, 367, 368, 369, 372, 373, 376, 377, 378, 381, 384, 391, 418, 419], "excluded_lines": [], "functions": {"RelationshipService.get_relationship": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42], "excluded_lines": [], "start_line": 26}, "RelationshipService.get_or_create_relationship": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [62, 63, 64, 67, 71, 72], "excluded_lines": [], "start_line": 45}, "RelationshipService.increase_affinity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [93, 94, 95, 96, 98, 99, 102, 104, 105, 106, 108, 111, 113, 116], "excluded_lines": [], "start_line": 75}, "RelationshipService.initiate_romance": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [138, 139, 140, 141, 143, 144, 147, 149, 152, 154, 155], "excluded_lines": [], "start_line": 119}, "RelationshipService.make_partners": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 26, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [177, 178, 179, 180, 182, 183, 184, 185, 187, 190, 194, 195, 196, 199, 200, 203, 204, 205, 206, 207, 208, 209, 210, 211, 213, 214], "excluded_lines": [], "start_line": 158}, "RelationshipService.break_up": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 25, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 25, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [229, 230, 231, 232, 233, 236, 237, 238, 239, 242, 243, 246, 247, 248, 249, 250, 251, 253, 254, 255, 256, 257, 260, 265, 267], "excluded_lines": [], "start_line": 217}, "RelationshipService.quick_pair_dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 32, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 32, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [285, 286, 287, 291, 294, 300, 301, 303, 304, 305, 308, 309, 311, 312, 313, 316, 317, 320, 329, 331, 332, 335, 336, 337, 338, 339, 340, 341, 342, 343, 346, 347], "excluded_lines": [], "start_line": 270}, "RelationshipService.calculate_compatibility_score": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [362, 363, 366, 367, 368, 369, 372, 373, 376, 377, 378, 381, 384, 391], "excluded_lines": [], "start_line": 350}, "RelationshipService.calculate_compatibility": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [418, 419], "excluded_lines": [], "start_line": 402}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 22, 25, 26, 44, 45, 74, 75, 118, 119, 157, 158, 216, 217, 269, 270, 349, 350, 401, 402, 422], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RelationshipService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 131, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 131, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [42, 62, 63, 64, 67, 71, 72, 93, 94, 95, 96, 98, 99, 102, 104, 105, 106, 108, 111, 113, 116, 138, 139, 140, 141, 143, 144, 147, 149, 152, 154, 155, 177, 178, 179, 180, 182, 183, 184, 185, 187, 190, 194, 195, 196, 199, 200, 203, 204, 205, 206, 207, 208, 209, 210, 211, 213, 214, 229, 230, 231, 232, 233, 236, 237, 238, 239, 242, 243, 246, 247, 248, 249, 250, 251, 253, 254, 255, 256, 257, 260, 265, 267, 285, 286, 287, 291, 294, 300, 301, 303, 304, 305, 308, 309, 311, 312, 313, 316, 317, 320, 329, 331, 332, 335, 336, 337, 338, 339, 340, 341, 342, 343, 346, 347, 362, 363, 366, 367, 368, 369, 372, 373, 376, 377, 378, 381, 384, 391, 418, 419], "excluded_lines": [], "start_line": 22}, "": {"executed_lines": [3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 22, 25, 26, 44, 45, 74, 75, 118, 119, 157, 158, 216, 217, 269, 270, 349, 350, 401, 402, 422], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\resource_manager.py": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 12, 13, 15, 18, 19, 20, 23, 24, 27, 28, 31, 34, 35, 37, 55, 98, 114, 136, 149, 150, 163, 164, 174, 175, 193, 201, 202, 240], "summary": {"covered_lines": 35, "num_statements": 103, "percent_covered": 33.980582524271846, "percent_covered_display": "33.98", "missing_lines": 68, "excluded_lines": 0, "percent_statements_covered": 33.980582524271846, "percent_statements_covered_display": "33.98"}, "missing_lines": [46, 49, 53, 69, 72, 73, 76, 77, 80, 83, 84, 87, 89, 102, 105, 106, 108, 118, 120, 121, 122, 125, 128, 129, 131, 132, 134, 138, 139, 140, 142, 147, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 168, 177, 179, 185, 186, 187, 188, 189, 191, 195, 210, 211, 213, 214, 217, 218, 221, 226, 229, 232, 233, 234, 235, 236, 238, 247], "excluded_lines": [], "functions": {"ResourceManager.__init__": {"executed_lines": [35], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "ResourceManager.process_vault_resources": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [46, 49, 53], "excluded_lines": [], "start_line": 37}, "ResourceManager._calculate_net_resource_change": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [69, 72, 73, 76, 77, 80, 83, 84, 87, 89], "excluded_lines": [], "start_line": 55}, "ResourceManager._calculate_consumption": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [102, 105, 106, 108], "excluded_lines": [], "start_line": 98}, "ResourceManager._calculate_production": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [118, 120, 121, 122, 125, 128, 129, 131, 132, 134], "excluded_lines": [], "start_line": 114}, "ResourceManager._calculate_room_production": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [138, 139, 140, 142, 147], "excluded_lines": [], "start_line": 136}, "ResourceManager._apply_room_production": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [152, 153, 154, 155, 156, 157, 158, 159, 160, 161], "excluded_lines": [], "start_line": 150}, "ResourceManager._apply_resource_changes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [168], "excluded_lines": [], "start_line": 164}, "ResourceManager._check_resource_warnings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [177, 179, 185, 186, 187, 188, 189, 191], "excluded_lines": [], "start_line": 175}, "ResourceManager._log_resource_changes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [195], "excluded_lines": [], "start_line": 193}, "ResourceManager._get_vault_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [210, 211, 213, 214, 217, 218, 221, 226, 229, 232, 233, 234, 235, 236, 238], "excluded_lines": [], "start_line": 202}, "ResourceManager.check_resource_availability": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [247], "excluded_lines": [], "start_line": 240}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 12, 13, 15, 18, 19, 20, 23, 24, 27, 28, 31, 34, 37, 55, 98, 114, 136, 149, 150, 163, 164, 174, 175, 193, 201, 202, 240], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ResourceManager": {"executed_lines": [35], "summary": {"covered_lines": 1, "num_statements": 69, "percent_covered": 1.4492753623188406, "percent_covered_display": "1.45", "missing_lines": 68, "excluded_lines": 0, "percent_statements_covered": 1.4492753623188406, "percent_statements_covered_display": "1.45"}, "missing_lines": [46, 49, 53, 69, 72, 73, 76, 77, 80, 83, 84, 87, 89, 102, 105, 106, 108, 118, 120, 121, 122, 125, 128, 129, 131, 132, 134, 138, 139, 140, 142, 147, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 168, 177, 179, 185, 186, 187, 188, 189, 191, 195, 210, 211, 213, 214, 217, 218, 221, 226, 229, 232, 233, 234, 235, 236, 238, 247], "excluded_lines": [], "start_line": 31}, "": {"executed_lines": [3, 4, 6, 7, 8, 9, 11, 12, 13, 15, 18, 19, 20, 23, 24, 27, 28, 31, 34, 37, 55, 98, 114, 136, 149, 150, 163, 164, 174, 175, 193, 201, 202, 240], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\training_service.py": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 23, 24, 26, 27, 59, 109, 194, 234, 297, 353], "summary": {"covered_lines": 24, "num_statements": 130, "percent_covered": 18.46153846153846, "percent_covered_display": "18.46", "missing_lines": 106, "excluded_lines": 0, "percent_statements_covered": 18.46153846153846, "percent_statements_covered_display": "18.46"}, "missing_lines": [48, 49, 51, 54, 55, 57, 77, 78, 81, 82, 83, 86, 87, 90, 91, 93, 94, 96, 98, 99, 103, 104, 105, 107, 132, 133, 134, 137, 139, 140, 141, 144, 145, 146, 147, 148, 151, 152, 154, 155, 156, 159, 162, 163, 176, 177, 178, 181, 183, 187, 192, 212, 213, 215, 218, 219, 222, 223, 224, 227, 228, 229, 230, 232, 255, 256, 257, 259, 260, 263, 264, 265, 266, 269, 270, 271, 273, 274, 277, 278, 279, 280, 283, 285, 287, 288, 290, 295, 319, 320, 321, 323, 324, 327, 328, 329, 330, 333, 334, 335, 338, 340, 342, 343, 345, 349], "excluded_lines": [], "functions": {"TrainingService.__init__": {"executed_lines": [24], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "TrainingService.calculate_training_duration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [48, 49, 51, 54, 55, 57], "excluded_lines": [], "start_line": 27}, "TrainingService.can_start_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [77, 78, 81, 82, 83, 86, 87, 90, 91, 93, 94, 96, 98, 99, 103, 104, 105, 107], "excluded_lines": [], "start_line": 59}, "TrainingService.start_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 27, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [132, 133, 134, 137, 139, 140, 141, 144, 145, 146, 147, 148, 151, 152, 154, 155, 156, 159, 162, 163, 176, 177, 178, 181, 183, 187, 192], "excluded_lines": [], "start_line": 109}, "TrainingService.update_training_progress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [212, 213, 215, 218, 219, 222, 223, 224, 227, 228, 229, 230, 232], "excluded_lines": [], "start_line": 194}, "TrainingService.complete_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 24, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [255, 256, 257, 259, 260, 263, 264, 265, 266, 269, 270, 271, 273, 274, 277, 278, 279, 280, 283, 285, 287, 288, 290, 295], "excluded_lines": [], "start_line": 234}, "TrainingService.cancel_training": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [319, 320, 321, 323, 324, 327, 328, 329, 330, 333, 334, 335, 338, 340, 342, 343, 345, 349], "excluded_lines": [], "start_line": 297}, "": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 23, 26, 27, 59, 109, 194, 234, 297, 353], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TrainingService": {"executed_lines": [24], "summary": {"covered_lines": 1, "num_statements": 107, "percent_covered": 0.9345794392523364, "percent_covered_display": "0.93", "missing_lines": 106, "excluded_lines": 0, "percent_statements_covered": 0.9345794392523364, "percent_statements_covered_display": "0.93"}, "missing_lines": [48, 49, 51, 54, 55, 57, 77, 78, 81, 82, 83, 86, 87, 90, 91, 93, 94, 96, 98, 99, 103, 104, 105, 107, 132, 133, 134, 137, 139, 140, 141, 144, 145, 146, 147, 148, 151, 152, 154, 155, 156, 159, 162, 163, 176, 177, 178, 181, 183, 187, 192, 212, 213, 215, 218, 219, 222, 223, 224, 227, 228, 229, 230, 232, 255, 256, 257, 259, 260, 263, 264, 265, 266, 269, 270, 271, 273, 274, 277, 278, 279, 280, 283, 285, 287, 288, 290, 295, 319, 320, 321, 323, 324, 327, 328, 329, 330, 333, 334, 335, 338, 340, 342, 343, 345, 349], "excluded_lines": [], "start_line": 20}, "": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 23, 26, 27, 59, 109, 194, 234, 297, 353], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\vault_service.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 29, 30, 31, 33, 34, 61, 124, 198, 262, 319, 337, 403, 413], "summary": {"covered_lines": 33, "num_statements": 179, "percent_covered": 18.435754189944134, "percent_covered_display": "18.44", "missing_lines": 146, "excluded_lines": 0, "percent_statements_covered": 18.435754189944134, "percent_statements_covered_display": "18.44"}, "missing_lines": [35, 36, 39, 40, 43, 44, 47, 48, 50, 59, 69, 70, 71, 74, 75, 76, 79, 80, 84, 87, 88, 89, 90, 97, 98, 101, 102, 103, 106, 107, 108, 117, 120, 122, 136, 137, 140, 141, 143, 145, 146, 147, 150, 152, 154, 157, 158, 160, 161, 164, 165, 166, 167, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 184, 185, 186, 187, 189, 192, 193, 194, 196, 208, 210, 219, 220, 221, 224, 229, 232, 233, 243, 244, 245, 246, 247, 251, 256, 258, 259, 260, 270, 271, 273, 275, 277, 279, 282, 283, 284, 285, 286, 289, 291, 292, 294, 296, 297, 299, 302, 303, 304, 310, 311, 312, 314, 315, 316, 317, 321, 323, 326, 327, 330, 332, 333, 334, 335, 361, 362, 363, 366, 367, 368, 373, 378, 379, 380, 381, 388, 393, 396, 399, 401, 405, 409], "excluded_lines": [], "functions": {"VaultService.__init__": {"executed_lines": [30, 31], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "VaultService._prepare_room_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [35, 36, 39, 40, 43, 44, 47, 48, 50, 59], "excluded_lines": [], "start_line": 34}, "VaultService._prepare_initial_rooms": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 24, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [69, 70, 71, 74, 75, 76, 79, 80, 84, 87, 88, 89, 90, 97, 98, 101, 102, 103, 106, 107, 108, 117, 120, 122], "excluded_lines": [], "start_line": 61}, "VaultService._create_initial_rooms": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 38, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 38, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [136, 137, 140, 141, 143, 145, 146, 147, 150, 152, 154, 157, 158, 160, 161, 164, 165, 166, 167, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 184, 185, 186, 187, 189, 192, 193, 194, 196], "excluded_lines": [], "start_line": 124}, "VaultService._create_initial_dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [208, 210, 219, 220, 221, 224, 229, 232, 233, 243, 244, 245, 246, 247, 251, 256, 258, 259, 260], "excluded_lines": [], "start_line": 198}, "VaultService._start_training_sessions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [270, 271, 273, 275, 277, 279, 282, 283, 284, 285, 286, 289, 291, 292, 294, 296, 297, 299, 302, 303, 304, 310, 311, 312, 314, 315, 316, 317], "excluded_lines": [], "start_line": 262}, "VaultService._assign_initial_objectives": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [321, 323, 326, 327, 330, 332, 333, 334, 335], "excluded_lines": [], "start_line": 319}, "VaultService.initiate_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [361, 362, 363, 366, 367, 368, 373, 378, 379, 380, 381, 388, 393, 396, 399, 401], "excluded_lines": [], "start_line": 337}, "VaultService.update_vault_resources": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [405, 409], "excluded_lines": [], "start_line": 403}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 29, 33, 34, 61, 124, 198, 262, 319, 337, 403, 413], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"VaultService": {"executed_lines": [30, 31], "summary": {"covered_lines": 2, "num_statements": 148, "percent_covered": 1.3513513513513513, "percent_covered_display": "1.35", "missing_lines": 146, "excluded_lines": 0, "percent_statements_covered": 1.3513513513513513, "percent_statements_covered_display": "1.35"}, "missing_lines": [35, 36, 39, 40, 43, 44, 47, 48, 50, 59, 69, 70, 71, 74, 75, 76, 79, 80, 84, 87, 88, 89, 90, 97, 98, 101, 102, 103, 106, 107, 108, 117, 120, 122, 136, 137, 140, 141, 143, 145, 146, 147, 150, 152, 154, 157, 158, 160, 161, 164, 165, 166, 167, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 184, 185, 186, 187, 189, 192, 193, 194, 196, 208, 210, 219, 220, 221, 224, 229, 232, 233, 243, 244, 245, 246, 247, 251, 256, 258, 259, 260, 270, 271, 273, 275, 277, 279, 282, 283, 284, 285, 286, 289, 291, 292, 294, 296, 297, 299, 302, 303, 304, 310, 311, 312, 314, 315, 316, 317, 321, 323, 326, 327, 330, 332, 333, 334, 335, 361, 362, 363, 366, 367, 368, 373, 378, 379, 380, 381, 388, 393, 396, 399, 401, 405, 409], "excluded_lines": [], "start_line": 26}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 29, 33, 34, 61, 124, 198, 262, 319, 337, 403, 413], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\services\\websocket_manager.py": {"executed_lines": [1, 2, 4, 7, 10, 12, 14, 16, 23, 32, 48, 53, 61, 71, 86, 96], "summary": {"covered_lines": 16, "num_statements": 58, "percent_covered": 27.586206896551722, "percent_covered_display": "27.59", "missing_lines": 42, "excluded_lines": 0, "percent_statements_covered": 27.586206896551722, "percent_statements_covered_display": "27.59"}, "missing_lines": [18, 19, 20, 21, 25, 26, 27, 29, 30, 34, 36, 37, 38, 39, 40, 42, 45, 46, 50, 51, 55, 56, 57, 58, 59, 63, 64, 65, 66, 68, 69, 73, 74, 75, 76, 77, 78, 79, 80, 83, 84, 88], "excluded_lines": [], "functions": {"ConnectionManager.__init__": {"executed_lines": [12, 14], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "ConnectionManager.connect": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [18, 19, 20, 21], "excluded_lines": [], "start_line": 16}, "ConnectionManager.disconnect": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [25, 26, 27, 29, 30], "excluded_lines": [], "start_line": 23}, "ConnectionManager.send_personal_message": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [34, 36, 37, 38, 39, 40, 42, 45, 46], "excluded_lines": [], "start_line": 32}, "ConnectionManager.broadcast_to_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [50, 51], "excluded_lines": [], "start_line": 48}, "ConnectionManager.connect_chat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [55, 56, 57, 58, 59], "excluded_lines": [], "start_line": 53}, "ConnectionManager.disconnect_chat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [63, 64, 65, 66, 68, 69], "excluded_lines": [], "start_line": 61}, "ConnectionManager.send_chat_message": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [73, 74, 75, 76, 77, 78, 79, 80, 83, 84], "excluded_lines": [], "start_line": 71}, "ConnectionManager.send_typing_indicator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [88], "excluded_lines": [], "start_line": 86}, "": {"executed_lines": [1, 2, 4, 7, 10, 16, 23, 32, 48, 53, 61, 71, 86, 96], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ConnectionManager": {"executed_lines": [12, 14], "summary": {"covered_lines": 2, "num_statements": 44, "percent_covered": 4.545454545454546, "percent_covered_display": "4.55", "missing_lines": 42, "excluded_lines": 0, "percent_statements_covered": 4.545454545454546, "percent_statements_covered_display": "4.55"}, "missing_lines": [18, 19, 20, 21, 25, 26, 27, 29, 30, 34, 36, 37, 38, 39, 40, 42, 45, 46, 50, 51, 55, 56, 57, 58, 59, 63, 64, 65, 66, 68, 69, 73, 74, 75, 76, 77, 78, 79, 80, 83, 84, 88], "excluded_lines": [], "start_line": 7}, "": {"executed_lines": [1, 2, 4, 7, 10, 16, 23, 32, 48, 53, 61, 71, 86, 96], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\dwellers.py": {"executed_lines": [1, 2, 4, 6, 7, 9, 12, 17, 23], "summary": {"covered_lines": 9, "num_statements": 18, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [14, 19, 20, 26, 27, 28, 29, 30, 31], "excluded_lines": [], "functions": {"get_gender_based_name": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [14], "excluded_lines": [], "start_line": 12}, "get_stats_by_rarity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [19, 20], "excluded_lines": [], "start_line": 17}, "create_random_common_dweller": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [26, 27, 28, 29, 30, 31], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [1, 2, 4, 6, 7, 9, 12, 17, 23], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 4, 6, 7, 9, 12, 17, 23], "summary": {"covered_lines": 9, "num_statements": 18, "percent_covered": 50.0, "percent_covered_display": "50.00", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50.00"}, "missing_lines": [14, 19, 20, 26, 27, 28, 29, 30, 31], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\exceptions.py": {"executed_lines": [1, 2, 4, 5, 7, 10, 18, 24, 34, 45, 54, 64, 72, 76, 84, 89, 92, 100, 109, 117, 125, 130, 133, 136, 144, 151, 160, 166, 167, 168, 169, 172, 180, 187, 191, 195, 199], "summary": {"covered_lines": 37, "num_statements": 54, "percent_covered": 68.51851851851852, "percent_covered_display": "68.52", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 68.51851851851852, "percent_statements_covered_display": "68.52"}, "missing_lines": [21, 41, 42, 60, 61, 73, 105, 106, 122, 145, 146, 147, 148, 181, 182, 183, 184], "excluded_lines": [], "functions": {"AccessDeniedException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [21], "excluded_lines": [], "start_line": 18}, "ResourceNotFoundException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [41, 42], "excluded_lines": [], "start_line": 34}, "ResourceAlreadyExistsException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [60, 61], "excluded_lines": [], "start_line": 54}, "ResourceConflictException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [73], "excluded_lines": [], "start_line": 72}, "ContentNoChangeException.__init__": {"executed_lines": [89], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 84}, "InvalidItemAssignmentException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [105, 106], "excluded_lines": [], "start_line": 100}, "InvalidVaultTransferException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [122], "excluded_lines": [], "start_line": 117}, "VaultOperationException.__init__": {"executed_lines": [133], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 130}, "NoSpaceAvailableException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [145, 146, 147, 148], "excluded_lines": [], "start_line": 144}, "InsufficientResourcesException.__init__": {"executed_lines": [166, 167, 168, 169], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 160}, "UniqueRoomViolationException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [181, 182, 183, 184], "excluded_lines": [], "start_line": 180}, "": {"executed_lines": [1, 2, 4, 5, 7, 10, 18, 24, 34, 45, 54, 64, 72, 76, 84, 92, 100, 109, 117, 125, 130, 136, 144, 151, 160, 172, 180, 187, 191, 195, 199], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AccessDeniedException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [21], "excluded_lines": [], "start_line": 10}, "ResourceNotFoundException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [41, 42], "excluded_lines": [], "start_line": 24}, "ResourceAlreadyExistsException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [60, 61], "excluded_lines": [], "start_line": 45}, "ResourceConflictException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [73], "excluded_lines": [], "start_line": 64}, "ContentNoChangeException": {"executed_lines": [89], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 76}, "InvalidItemAssignmentException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [105, 106], "excluded_lines": [], "start_line": 92}, "InvalidVaultTransferException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [122], "excluded_lines": [], "start_line": 109}, "VaultOperationException": {"executed_lines": [133], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 125}, "NoSpaceAvailableException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [145, 146, 147, 148], "excluded_lines": [], "start_line": 136}, "InsufficientResourcesException": {"executed_lines": [166, 167, 168, 169], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 151}, "UniqueRoomViolationException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [181, 182, 183, 184], "excluded_lines": [], "start_line": 172}, "MinioError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 187}, "BucketNotFoundError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 191}, "FileUploadError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 195}, "FileDownloadError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 199}, "": {"executed_lines": [1, 2, 4, 5, 7, 10, 18, 24, 34, 45, 54, 64, 72, 76, 84, 92, 100, 109, 117, 125, 130, 136, 144, 151, 160, 172, 180, 187, 191, 195, 199], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\image_processing.py": {"executed_lines": [1, 2, 4, 5, 7, 10, 23], "summary": {"covered_lines": 7, "num_statements": 20, "percent_covered": 35.0, "percent_covered_display": "35.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 35.0, "percent_statements_covered_display": "35.00"}, "missing_lines": [12, 13, 14, 15, 16, 17, 18, 20, 25, 26, 27, 28, 29], "excluded_lines": [], "functions": {"image_url_to_bytes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [12, 13, 14, 15, 16, 17, 18, 20], "excluded_lines": [], "start_line": 10}, "generate_thumbnail": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [25, 26, 27, 28, 29], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [1, 2, 4, 5, 7, 10, 23], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 7, 10, 23], "summary": {"covered_lines": 7, "num_statements": 20, "percent_covered": 35.0, "percent_covered_display": "35.00", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 35.0, "percent_statements_covered_display": "35.00"}, "missing_lines": [12, 13, 14, 15, 16, 17, 18, 20, 25, 26, 27, 28, 29], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\load_quests.py": {"executed_lines": [1, 2, 3, 5, 7, 10, 34], "summary": {"covered_lines": 7, "num_statements": 31, "percent_covered": 22.580645161290324, "percent_covered_display": "22.58", "missing_lines": 24, "excluded_lines": 6, "percent_statements_covered": 22.580645161290324, "percent_statements_covered_display": "22.58"}, "missing_lines": [20, 21, 22, 23, 24, 27, 30, 31, 45, 47, 48, 50, 52, 53, 54, 56, 57, 58, 59, 60, 63, 64, 66, 67], "excluded_lines": [70, 71, 73, 74, 75, 76], "functions": {"load_quest_chain_from_json": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [20, 21, 22, 23, 24, 27, 30, 31], "excluded_lines": [], "start_line": 10}, "load_all_quest_chain_files": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [45, 47, 48, 50, 52, 53, 54, 56, 57, 58, 59, 60, 63, 64, 66, 67], "excluded_lines": [], "start_line": 34}, "": {"executed_lines": [1, 2, 3, 5, 7, 10, 34], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 6, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [70, 71, 73, 74, 75, 76], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 5, 7, 10, 34], "summary": {"covered_lines": 7, "num_statements": 31, "percent_covered": 22.580645161290324, "percent_covered_display": "22.58", "missing_lines": 24, "excluded_lines": 6, "percent_statements_covered": 22.580645161290324, "percent_statements_covered_display": "22.58"}, "missing_lines": [20, 21, 22, 23, 24, 27, 30, 31, 45, 47, 48, 50, 52, 53, 54, 56, 57, 58, 59, 60, 63, 64, 66, 67], "excluded_lines": [70, 71, 73, 74, 75, 76], "start_line": 1}}}, "app\\utils\\partial.py": {"executed_lines": [5, 6, 7, 9, 10, 12, 15, 21, 22, 24, 25, 27, 28, 29, 30, 31, 33, 36, 47], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 95.0, "percent_covered_display": "95.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95.00"}, "missing_lines": [34], "excluded_lines": [], "functions": {"optional": {"executed_lines": [21, 22, 24, 47], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "optional.wrapper": {"executed_lines": [25, 27, 33, 36], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80.00"}, "missing_lines": [34], "excluded_lines": [], "start_line": 24}, "optional.wrapper.make_field_optional": {"executed_lines": [28, 29, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "": {"executed_lines": [5, 6, 7, 9, 10, 12, 15], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [5, 6, 7, 9, 10, 12, 15, 21, 22, 24, 25, 27, 28, 29, 30, 31, 33, 36, 47], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 95.0, "percent_covered_display": "95.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95.00"}, "missing_lines": [34], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\seed_objectives.py": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 13, 16], "summary": {"covered_lines": 9, "num_statements": 48, "percent_covered": 18.75, "percent_covered_display": "18.75", "missing_lines": 39, "excluded_lines": 0, "percent_statements_covered": 18.75, "percent_statements_covered_display": "18.75"}, "missing_lines": [27, 28, 29, 31, 32, 33, 36, 37, 38, 39, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 53, 56, 57, 60, 61, 62, 63, 67, 68, 69, 71, 72, 73, 75, 76, 77, 78, 79, 80], "excluded_lines": [], "functions": {"seed_objectives_from_json": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 39, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 39, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [27, 28, 29, 31, 32, 33, 36, 37, 38, 39, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 53, 56, 57, 60, 61, 62, 63, 67, 68, 69, 71, 72, 73, 75, 76, 77, 78, 79, 80], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 13, 16], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 13, 16], "summary": {"covered_lines": 9, "num_statements": 48, "percent_covered": 18.75, "percent_covered_display": "18.75", "missing_lines": 39, "excluded_lines": 0, "percent_statements_covered": 18.75, "percent_statements_covered_display": "18.75"}, "missing_lines": [27, 28, 29, 31, 32, 33, 36, 37, 38, 39, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 53, 56, 57, 60, 61, 62, 63, 67, 68, 69, 71, 72, 73, 75, 76, 77, 78, 79, 80], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\seed_quests.py": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 13, 16], "summary": {"covered_lines": 9, "num_statements": 33, "percent_covered": 27.272727272727273, "percent_covered_display": "27.27", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 27.272727272727273, "percent_statements_covered_display": "27.27"}, "missing_lines": [27, 29, 32, 33, 34, 36, 39, 40, 43, 44, 46, 47, 56, 57, 58, 60, 61, 62, 64, 65, 66, 67, 68, 69], "excluded_lines": [], "functions": {"seed_quests_from_json": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 24, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [27, 29, 32, 33, 34, 36, 39, 40, 43, 44, 46, 47, 56, 57, 58, 60, 61, 62, 64, 65, 66, 67, 68, 69], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 13, 16], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 4, 6, 7, 9, 10, 11, 13, 16], "summary": {"covered_lines": 9, "num_statements": 33, "percent_covered": 27.272727272727273, "percent_covered_display": "27.27", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 27.272727272727273, "percent_statements_covered_display": "27.27"}, "missing_lines": [27, 29, 32, 33, 34, 36, 39, 40, 43, 44, 46, 47, 56, 57, 58, 60, 61, 62, 64, 65, 66, 67, 68, 69], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\static_data.py": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 38, 39, 44, 45, 55, 56, 61, 62, 67, 92, 93, 105, 106, 122, 123, 133], "summary": {"covered_lines": 41, "num_statements": 97, "percent_covered": 42.2680412371134, "percent_covered_display": "42.27", "missing_lines": 56, "excluded_lines": 0, "percent_statements_covered": 42.2680412371134, "percent_statements_covered_display": "42.27"}, "missing_lines": [32, 33, 34, 35, 36, 40, 41, 42, 46, 47, 48, 49, 50, 51, 52, 53, 57, 58, 59, 63, 64, 65, 78, 79, 81, 82, 85, 86, 88, 90, 95, 96, 98, 99, 100, 101, 102, 103, 108, 109, 110, 111, 112, 113, 114, 115, 118, 119, 120, 124, 125, 126, 127, 128, 129, 130], "excluded_lines": [], "functions": {"StaticGameData.__init__": {"executed_lines": [22, 23, 24, 25, 26, 27, 28], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "StaticGameData.dwellers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [32, 33, 34, 35, 36], "excluded_lines": [], "start_line": 31}, "StaticGameData.junk_items": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [40, 41, 42], "excluded_lines": [], "start_line": 39}, "StaticGameData.outfits": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [46, 47, 48, 49, 50, 51, 52, 53], "excluded_lines": [], "start_line": 45}, "StaticGameData.weapons": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [57, 58, 59], "excluded_lines": [], "start_line": 56}, "StaticGameData.rooms": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [63, 64, 65], "excluded_lines": [], "start_line": 62}, "StaticGameData.get_buildable_rooms": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [78, 79, 81, 82, 85, 86, 88, 90], "excluded_lines": [], "start_line": 67}, "StaticGameData.quests": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [95, 96, 98, 99, 100, 101, 102, 103], "excluded_lines": [], "start_line": 93}, "StaticGameData.objectives": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [108, 109, 110, 111, 112, 113, 114, 115, 118, 119, 120], "excluded_lines": [], "start_line": 106}, "StaticGameData.load_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [124, 125, 126, 127, 128, 129, 130], "excluded_lines": [], "start_line": 123}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 20, 21, 30, 31, 38, 39, 44, 45, 55, 56, 61, 62, 67, 92, 93, 105, 106, 122, 123, 133], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"StaticGameData": {"executed_lines": [22, 23, 24, 25, 26, 27, 28], "summary": {"covered_lines": 7, "num_statements": 63, "percent_covered": 11.11111111111111, "percent_covered_display": "11.11", "missing_lines": 56, "excluded_lines": 0, "percent_statements_covered": 11.11111111111111, "percent_statements_covered_display": "11.11"}, "missing_lines": [32, 33, 34, 35, 36, 40, 41, 42, 46, 47, 48, 49, 50, 51, 52, 53, 57, 58, 59, 63, 64, 65, 78, 79, 81, 82, 85, 86, 88, 90, 95, 96, 98, 99, 100, 101, 102, 103, 108, 109, 110, 111, 112, 113, 114, 115, 118, 119, 120, 124, 125, 126, 127, 128, 129, 130], "excluded_lines": [], "start_line": 20}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 20, 21, 30, 31, 38, 39, 44, 45, 55, 56, 61, 62, 67, 92, 93, 105, 106, 122, 123, 133], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100.00", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100.00"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "app\\utils\\version.py": {"executed_lines": [7, 8, 11, 12, 17, 34], "summary": {"covered_lines": 6, "num_statements": 16, "percent_covered": 37.5, "percent_covered_display": "37.50", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 37.5, "percent_statements_covered_display": "37.50"}, "missing_lines": [13, 14, 24, 26, 27, 28, 29, 30, 31, 41], "excluded_lines": [], "functions": {"get_app_version": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [24, 26, 27, 28, 29, 30, 31], "excluded_lines": [], "start_line": 17}, "get_python_version": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0.00", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0.00"}, "missing_lines": [41], "excluded_lines": [], "start_line": 34}, "": {"executed_lines": [7, 8, 11, 12, 17, 34], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 75.0, "percent_covered_display": "75.00", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75.00"}, "missing_lines": [13, 14], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [7, 8, 11, 12, 17, 34], "summary": {"covered_lines": 6, "num_statements": 16, "percent_covered": 37.5, "percent_covered_display": "37.50", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 37.5, "percent_statements_covered_display": "37.50"}, "missing_lines": [13, 14, 24, 26, 27, 28, 29, 30, 31, 41], "excluded_lines": [], "start_line": 1}}}}, "totals": {"covered_lines": 3743, "num_statements": 8120, "percent_covered": 46.09605911330049, "percent_covered_display": "46.10", "missing_lines": 4377, "excluded_lines": 76, "percent_statements_covered": 46.09605911330049, "percent_statements_covered_display": "46.10"}} diff --git a/frontend/src/modules/dwellers/routes/index.ts b/frontend/src/modules/dwellers/routes/index.ts index ba7bb3a7..1775e600 100644 --- a/frontend/src/modules/dwellers/routes/index.ts +++ b/frontend/src/modules/dwellers/routes/index.ts @@ -7,6 +7,12 @@ export const dwellersRoutes: RouteRecordRaw[] = [ component: () => import('../views/DwellersView.vue'), meta: { requiresAuth: true, hideFromNav: true } }, + { + path: '/vault/:id/dwellers/graveyard', + name: 'graveyard', + component: () => import('../views/GraveyardView.vue'), + meta: { requiresAuth: true, hideFromNav: true } + }, { path: '/vault/:id/dwellers/:dwellerId', name: 'dwellerDetail', diff --git a/frontend/src/modules/dwellers/views/DwellerDetailView.vue b/frontend/src/modules/dwellers/views/DwellerDetailView.vue index 534fd92b..e9297d4f 100644 --- a/frontend/src/modules/dwellers/views/DwellerDetailView.vue +++ b/frontend/src/modules/dwellers/views/DwellerDetailView.vue @@ -1,5 +1,5 @@ + + + + diff --git a/frontend/src/modules/profile/views/ProfileView.vue b/frontend/src/modules/profile/views/ProfileView.vue index ba246309..27a4d58c 100644 --- a/frontend/src/modules/profile/views/ProfileView.vue +++ b/frontend/src/modules/profile/views/ProfileView.vue @@ -4,9 +4,9 @@ import { useRouter } from 'vue-router'; import { Icon } from '@iconify/vue'; import { useProfileStore } from '../stores/profile'; import { useAuthStore } from '@/modules/auth/stores/auth'; -import { UButton } from '@/core/components/ui'; +import { UButton, UCard } from '@/core/components/ui'; import ProfileEditor from '../components/ProfileEditor.vue'; -import ProfileStats from '../components/ProfileStats.vue'; +import { LifeDeathStatistics } from '@/modules/dwellers/components/death'; import type { ProfileUpdate } from '../models/profile'; const router = useRouter(); @@ -16,6 +16,7 @@ const isEditing = ref(false); onMounted(async () => { await fetchProfile(); + await profileStore.fetchDeathStatistics(); }); const fetchProfile = async () => { @@ -62,7 +63,7 @@ const formatDate = (dateString: string) => {