toetactic/board.py - A
toetactic/logger.py - A
toetactic/game.py - A
toetactic/__init__.py - A
toetactic/player.py - A
toetactic/board.py
    M 124:4 Board.has_winner - B (10)
    M 55:4 Board.parse_move - B (8)
    C 6:0 Board - A (5)
    M 27:4 Board.render - A (5)
    M 16:4 Board.__init__ - A (4)
    M 111:4 Board.available_moves - A (4)
    M 98:4 Board.place_mark - A (2)
    M 80:4 Board.move_to_label - A (1)
    M 89:4 Board.is_cell_empty - A (1)
    M 143:4 Board.is_full - A (1)
toetactic/logger.py
    F 10:0 init - A (2)
toetactic/game.py
    M 87:4 Game.run - B (6)
    C 43:0 Game - A (4)
    M 136:4 Game._prompt_human_move - A (4)
    C 29:0 HumanPlayer - A (2)
    M 65:4 Game.setup - A (2)
    M 32:4 HumanPlayer.choose_move - A (1)
    M 54:4 Game.__init__ - A (1)
    M 123:4 Game._render - A (1)
toetactic/__init__.py
    F 8:0 play_game - A (1)
    F 21:0 cli - A (1)
toetactic/player.py
    C 42:0 Dikembe - A (5)
    C 70:0 Godzilla - A (5)
    C 113:0 Eleanor - A (5)
    F 145:0 _find_immediate_line_move - A (4)
    F 167:0 _non_diagonal_moves - A (4)
    F 196:0 _best_line_building_move - A (4)
    M 45:4 Dikembe.choose_move - A (4)
    M 73:4 Godzilla.choose_move - A (4)
    M 116:4 Eleanor.choose_move - A (4)
    F 182:0 _line_progress - A (3)
    F 222:0 _center_move - A (3)
    F 238:0 _corner_move - A (3)
    C 11:0 Player - A (2)
    C 98:0 Noober - A (2)
    M 21:4 Player.__init__ - A (1)
    M 32:4 Player.choose_move - A (1)
    M 101:4 Noober.choose_move - A (1)

38 blocks (classes, functions, methods) analyzed.
Average complexity: A (3.1842105263157894)