Coverage report: 100.0%

Files Functions Classes

coverage.py v7.13.4, created at 2026-03-09 19:37 +0000

File function   statements missing excluded   coverage
src / beaverbunch / __init__.py (no function)   1 0 0   100.0%
src / beaverbunch / core / actions.py (no function)   20 0 0   100.0%
src / beaverbunch / core / card.py Card.points   9 0 0   100.0%
src / beaverbunch / core / card.py Card.is_joker   1 0 0   100.0%
src / beaverbunch / core / card.py Card.bonus_action   4 0 0   100.0%
src / beaverbunch / core / card.py Card.__post_init__   10 0 0   100.0%
src / beaverbunch / core / card.py (no function)   20 0 0   100.0%
src / beaverbunch / core / deck.py Deck.create_new   4 0 0   100.0%
src / beaverbunch / core / deck.py Deck.create_custom   1 0 0   100.0%
src / beaverbunch / core / deck.py Deck.shuffle   2 0 0   100.0%
src / beaverbunch / core / deck.py Deck.draw   3 0 0   100.0%
src / beaverbunch / core / deck.py Deck.draw_n   3 0 0   100.0%
src / beaverbunch / core / deck.py Deck.__len__   1 0 0   100.0%
src / beaverbunch / core / deck.py (no function)   15 0 0   100.0%
src / beaverbunch / core / game.py GameState.add_player   1 0 0   100.0%
src / beaverbunch / core / game.py GameState.next_player   2 0 0   100.0%
src / beaverbunch / core / game.py GameState.is_game_over   1 0 0   100.0%
src / beaverbunch / core / game.py GameState.set_phase   1 0 0   100.0%
src / beaverbunch / core / game.py GameState.current_player   1 0 0   100.0%
src / beaverbunch / core / game.py GameState.top_discard   1 0 0   100.0%
src / beaverbunch / core / game.py Game.__init__   2 0 0   100.0%
src / beaverbunch / core / game.py Game.start   16 0 1   100.0%
src / beaverbunch / core / game.py Game.peek_initial   11 0 0   100.0%
src / beaverbunch / core / game.py Game.draw_card   6 0 0   100.0%
src / beaverbunch / core / game.py Game.draw_from_discard   5 0 0   100.0%
src / beaverbunch / core / game.py Game.keep_drawn_card   9 0 0   100.0%
src / beaverbunch / core / game.py Game.discard_drawn_card   13 0 0   100.0%
src / beaverbunch / core / game.py Game.execute_peek   6 0 0   100.0%
src / beaverbunch / core / game.py Game.execute_swap   8 0 0   100.0%
src / beaverbunch / core / game.py Game.execute_king_bonus   6 0 0   100.0%
src / beaverbunch / core / game.py Game.skip_bonus   3 0 0   100.0%
src / beaverbunch / core / game.py Game.trigger_last_round   3 0 0   100.0%
src / beaverbunch / core / game.py Game.snap   13 0 0   100.0%
src / beaverbunch / core / game.py Game.get_scores   1 0 0   100.0%
src / beaverbunch / core / game.py Game.get_winner   1 0 0   100.0%
src / beaverbunch / core / game.py Game._advance_turn   9 0 0   100.0%
src / beaverbunch / core / game.py Game._refill_deck_if_needed   5 0 0   100.0%
src / beaverbunch / core / game.py (no function)   54 0 0   100.0%
src / beaverbunch / core / game_settings.py (no function)   11 0 0   100.0%
src / beaverbunch / core / hand.py Hand._check_index   1 0 1   100.0%
src / beaverbunch / core / hand.py Hand.__getitem__   2 0 0   100.0%
src / beaverbunch / core / hand.py Hand.__iter__   1 0 0   100.0%
src / beaverbunch / core / hand.py Hand.__len__   1 0 0   100.0%
src / beaverbunch / core / hand.py Hand.replace_card   4 0 0   100.0%
src / beaverbunch / core / hand.py Hand.add_card   1 0 0   100.0%
src / beaverbunch / core / hand.py Hand.remove_card   2 0 0   100.0%
src / beaverbunch / core / hand.py (no function)   15 0 0   100.0%
src / beaverbunch / core / player.py Player.__post_init__   2 0 0   100.0%
src / beaverbunch / core / player.py Player.get_points   1 0 0   100.0%
src / beaverbunch / core / player.py (no function)   6 0 0   100.0%
src / beaverbunch / core / rules.py _require_phase   3 0 0   100.0%
src / beaverbunch / core / rules.py _get_player   4 0 0   100.0%
src / beaverbunch / core / rules.py _current_player   1 0 0   100.0%
src / beaverbunch / core / rules.py validate_player_count   4 0 0   100.0%
src / beaverbunch / core / rules.py validate_start   6 0 0   100.0%
src / beaverbunch / core / rules.py validate_initial_peek   11 0 0   100.0%
src / beaverbunch / core / rules.py validate_draw   11 0 0   100.0%
src / beaverbunch / core / rules.py validate_draw_from_discard   11 0 0   100.0%
src / beaverbunch / core / rules.py validate_replace_card   11 0 0   100.0%
src / beaverbunch / core / rules.py validate_discard_drawn   9 0 0   100.0%
src / beaverbunch / core / rules.py validate_peek   11 0 0   100.0%
src / beaverbunch / core / rules.py validate_swap   16 0 0   100.0%
src / beaverbunch / core / rules.py validate_skip_bonus   11 0 0   100.0%
src / beaverbunch / core / rules.py validate_beaver   8 0 0   100.0%
src / beaverbunch / core / rules.py validate_snap   8 0 0   100.0%
src / beaverbunch / core / rules.py calculate_scores   3 0 0   100.0%
src / beaverbunch / core / rules.py determine_winner   7 0 0   100.0%
src / beaverbunch / core / rules.py (no function)   21 0 5   100.0%
src / beaverbunch / main.py main   4 0 0   100.0%
src / beaverbunch / main.py (no function)   7 0 0   100.0%
src / beaverbunch / network / __init__.py (no function)   4 0 0   100.0%
src / beaverbunch / network / app.py _get_server   1 0 0   100.0%
src / beaverbunch / network / app.py _dispatch   1 0 0   100.0%
src / beaverbunch / network / app.py create_app   47 0 0   100.0%
src / beaverbunch / network / app.py create_app.health   1 0 0   100.0%
src / beaverbunch / network / app.py create_app.ready   3 0 0   100.0%
src / beaverbunch / network / app.py create_app.create_session   4 0 0   100.0%
src / beaverbunch / network / app.py create_app.join_session   1 0 0   100.0%
src / beaverbunch / network / app.py create_app.start_session   1 0 0   100.0%
src / beaverbunch / network / app.py create_app.get_session   1 0 0   100.0%
src / beaverbunch / network / app.py create_app.leave_session   1 0 0   100.0%
src / beaverbunch / network / app.py create_app.close_session   1 0 0   100.0%
src / beaverbunch / network / app.py create_app.get_game   1 0 0   100.0%
src / beaverbunch / network / app.py create_app.peek_initial   1 0 0   100.0%
src / beaverbunch / network / app.py create_app.draw_card   1 0 0   100.0%
src / beaverbunch / network / app.py create_app.draw_discard   1 0 0   100.0%
src / beaverbunch / network / app.py create_app.keep_card   1 0 0   100.0%
src / beaverbunch / network / app.py create_app.discard_drawn   1 0 0   100.0%
src / beaverbunch / network / app.py create_app.peek_own   1 0 0   100.0%
src / beaverbunch / network / app.py create_app.swap_card   1 0 0   100.0%
src / beaverbunch / network / app.py create_app.skip_bonus   1 0 0   100.0%
src / beaverbunch / network / app.py create_app.snap   1 0 0   100.0%
src / beaverbunch / network / app.py create_app.beaver   1 0 0   100.0%
src / beaverbunch / network / app.py create_app.king_bonus   1 0 0   100.0%
src / beaverbunch / network / app.py (no function)   55 0 0   100.0%
src / beaverbunch / network / config.py load_runtime_config   1 0 0   100.0%
src / beaverbunch / network / config.py _read_int_env   8 0 2   100.0%
src / beaverbunch / network / config.py _read_cors_origins   5 0 0   100.0%
src / beaverbunch / network / config.py (no function)   17 0 0   100.0%
src / beaverbunch / network / protocol.py SessionSettingsPayload.from_settings   1 0 0   100.0%
src / beaverbunch / network / protocol.py SessionSettingsPayload.from_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py SessionSettingsPayload.to_settings   1 0 0   100.0%
src / beaverbunch / network / protocol.py SessionSettingsPayload.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py SessionSnapshot.from_session   4 0 0   100.0%
src / beaverbunch / network / protocol.py SessionSnapshot.from_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py SessionSnapshot.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py CreateSessionRequest.from_dict   3 0 0   100.0%
src / beaverbunch / network / protocol.py CreateSessionRequest.to_dict   4 0 0   100.0%
src / beaverbunch / network / protocol.py JoinSessionRequest.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py JoinSessionRequest.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py StartSessionRequest.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py StartSessionRequest.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py GetSessionRequest.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py GetSessionRequest.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py LeaveSessionRequest.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py LeaveSessionRequest.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py CloseSessionRequest.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py CloseSessionRequest.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py CreateSessionResponse.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py CreateSessionResponse.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py JoinSessionResponse.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py JoinSessionResponse.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py StartSessionResponse.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py StartSessionResponse.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py GetSessionResponse.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py GetSessionResponse.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py LeaveSessionResponse.from_dict   3 0 0   100.0%
src / beaverbunch / network / protocol.py LeaveSessionResponse.to_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py CloseSessionResponse.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py CloseSessionResponse.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py ErrorResponse.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py ErrorResponse.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py request_from_dict   8 0 0   100.0%
src / beaverbunch / network / protocol.py response_from_dict   8 0 0   100.0%
src / beaverbunch / network / protocol.py _require_type   3 0 0   100.0%
src / beaverbunch / network / protocol.py GameCardSlot.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py GameCardSlot.from_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py PlayerGameView.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py PlayerGameView.from_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py GameSnapshot.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py GameSnapshot.from_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py GameSnapshot.from_game   21 0 0   100.0%
src / beaverbunch / network / protocol.py GameSnapshot.from_game._card_slot   6 0 0   100.0%
src / beaverbunch / network / protocol.py GetGameRequest.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py GetGameRequest.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py GetGameResponse.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py GetGameResponse.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py PeekInitialRequest.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py PeekInitialRequest.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py PeekInitialResponse.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py PeekInitialResponse.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py DrawCardRequest.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py DrawCardRequest.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py DrawCardResponse.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py DrawCardResponse.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py DrawDiscardRequest.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py DrawDiscardRequest.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py DrawDiscardResponse.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py DrawDiscardResponse.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py KeepCardRequest.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py KeepCardRequest.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py KeepCardResponse.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py KeepCardResponse.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py DiscardDrawnRequest.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py DiscardDrawnRequest.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py DiscardDrawnResponse.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py DiscardDrawnResponse.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py PeekOwnRequest.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py PeekOwnRequest.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py PeekOwnResponse.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py PeekOwnResponse.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py SwapCardRequest.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py SwapCardRequest.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py SwapCardResponse.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py SwapCardResponse.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py SkipBonusRequest.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py SkipBonusRequest.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py SkipBonusResponse.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py SkipBonusResponse.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py SnapRequest.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py SnapRequest.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py SnapResponse.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py SnapResponse.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py BeaverRequest.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py BeaverRequest.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py BeaverResponse.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py BeaverResponse.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py KingBonusRequest.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py KingBonusRequest.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py KingBonusResponse.from_dict   2 0 0   100.0%
src / beaverbunch / network / protocol.py KingBonusResponse.to_dict   1 0 0   100.0%
src / beaverbunch / network / protocol.py (no function)   361 0 0   100.0%
src / beaverbunch / network / server.py SessionServer.handle   57 0 4   100.0%
src / beaverbunch / network / server.py SessionServer._handle_create_session   2 0 0   100.0%
src / beaverbunch / network / server.py SessionServer._handle_join_session   2 0 0   100.0%
src / beaverbunch / network / server.py SessionServer._handle_start_session   3 0 0   100.0%
src / beaverbunch / network / server.py SessionServer._handle_get_session   2 0 0   100.0%
src / beaverbunch / network / server.py SessionServer._handle_leave_session   3 0 0   100.0%
src / beaverbunch / network / server.py SessionServer._handle_close_session   2 0 0   100.0%
src / beaverbunch / network / server.py SessionServer._get_game_and_player   6 0 0   100.0%
src / beaverbunch / network / server.py SessionServer._handle_get_game   2 0 0   100.0%
src / beaverbunch / network / server.py SessionServer._handle_peek_initial   4 0 0   100.0%
src / beaverbunch / network / server.py SessionServer._handle_draw_card   4 0 0   100.0%
src / beaverbunch / network / server.py SessionServer._handle_draw_discard   4 0 0   100.0%
src / beaverbunch / network / server.py SessionServer._handle_keep_card   5 0 0   100.0%
src / beaverbunch / network / server.py SessionServer._handle_discard_drawn   5 0 0   100.0%
src / beaverbunch / network / server.py SessionServer._handle_peek_own   5 0 0   100.0%
src / beaverbunch / network / server.py SessionServer._handle_swap_card   4 0 0   100.0%
src / beaverbunch / network / server.py SessionServer._handle_skip_bonus   3 0 0   100.0%
src / beaverbunch / network / server.py SessionServer._handle_snap   4 0 0   100.0%
src / beaverbunch / network / server.py SessionServer._handle_beaver   3 0 0   100.0%
src / beaverbunch / network / server.py SessionServer._handle_king_bonus   3 0 0   100.0%
src / beaverbunch / network / server.py (no function)   31 0 0   100.0%
src / beaverbunch / network / session.py Session.player_count   1 0 0   100.0%
src / beaverbunch / network / session.py Session.is_joinable   1 0 0   100.0%
src / beaverbunch / network / session.py Session.add_player   19 0 0   100.0%
src / beaverbunch / network / session.py Session.resolve_token   4 0 0   100.0%
src / beaverbunch / network / session.py Session.remove_player   13 0 0   100.0%
src / beaverbunch / network / session.py Session.close   4 0 0   100.0%
src / beaverbunch / network / session.py Session.can_start   2 0 0   100.0%
src / beaverbunch / network / session.py Session.start_game   14 0 2   100.0%
src / beaverbunch / network / session.py Session._refresh_lobby_state   7 0 0   100.0%
src / beaverbunch / network / session.py SessionManager.__post_init__   6 0 0   100.0%
src / beaverbunch / network / session.py SessionManager.session_count   2 0 0   100.0%
src / beaverbunch / network / session.py SessionManager.create_session   10 0 0   100.0%
src / beaverbunch / network / session.py SessionManager.get_session   6 0 0   100.0%
src / beaverbunch / network / session.py SessionManager.join_session   4 0 0   100.0%
src / beaverbunch / network / session.py SessionManager.start_session   4 0 0   100.0%
src / beaverbunch / network / session.py SessionManager.leave_session   8 0 0   100.0%
src / beaverbunch / network / session.py SessionManager.close_session   8 0 0   100.0%
src / beaverbunch / network / session.py SessionManager.remove_session   6 0 0   100.0%
src / beaverbunch / network / session.py SessionManager._generate_join_code   5 0 0   100.0%
src / beaverbunch / network / session.py _normalize_player_name   4 0 0   100.0%
src / beaverbunch / network / session.py _normalize_join_code   4 0 0   100.0%
src / beaverbunch / network / session.py (no function)   66 0 0   100.0%
Total     1542 0 15   100.0%

No items found using the specified filter.