Skip to content

Commit 0bbb080

Browse files
committed
Migrate docstrings to google-style
1 parent ac21105 commit 0bbb080

File tree

13 files changed

+207
-228
lines changed

13 files changed

+207
-228
lines changed

.flake8

Lines changed: 0 additions & 12 deletions
This file was deleted.

pyproject.toml

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,24 @@ select = [
2929
# pycodestyle
3030
"E",
3131
"W",
32+
# pydocstyle
33+
"D",
3234
# Pyflakes
3335
"F",
3436
]
3537
ignore = [
36-
# TODO: Remove E501 by fixing docstrings
37-
"E501"
38+
# Missing docstring in magic method
39+
"D105",
40+
# Taken care of by formatting. Ignore for docstrings
41+
"E501",
3842
]
3943

4044
[tool.ruff.lint.mccabe]
4145
# Double the max complexity
4246
max-complexity = 20
4347

4448
[tool.ruff.lint.per-file-ignores]
45-
"__init__.py" = ["E402"]
49+
"__init__.py" = ["D104"]
50+
51+
[tool.ruff.lint.pydocstyle]
52+
convention = "google"

src/ff_toolbox/model/core/draft.py

Lines changed: 35 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ def __init__(
1414
player_pool: list[Player],
1515
settings: LeagueSettings,
1616
) -> None:
17-
"""
18-
Create a draft, tracking the teams, available players, and settings of the league.
17+
"""Create a draft, tracking the teams, available players, and settings of the league.
1918
20-
:param order: List of teams participating in snake draft, sorted by the order they pick in round 1
21-
:param rounds: Number of rounds in draft
22-
:param player_pool: Players available to pick from in the draft
23-
:param settings: Settings of the league the draft is occurring in
19+
Params:
20+
order (list[Team]): List of teams participating in snake draft, sorted by the order they pick in round 1
21+
rounds (int): Number of rounds in draft
22+
player_pool (list[Player]): Players available to pick from in the draft
23+
settings (LeagueSettings): Settings of the league the draft is occurring in
2424
"""
2525
self._order: list[Team] = order
2626
self._rounds: int = rounds
@@ -29,13 +29,15 @@ def __init__(
2929
self._settings: LeagueSettings = settings
3030

3131
def set_pick(self, player: Player, pick_num: int | None = None) -> None:
32-
"""
33-
Set the xth pick of the draft (starting at 1) as the given player.
32+
"""Set the xth pick of the draft (starting at 1) as the given player.
33+
34+
Params:
35+
player (Player): Player who was drafted at given spot (or next spot)
36+
pick_num (int | None, optional): If int, location in draft player was picked. If None, evaluates internally to next pick. Defaults to None.
3437
35-
:param player: Player who was drafted at given spot (or next spot)
36-
:param pick_num: If int, location in draft player was picked. If None, evaluates internally to next pick
37-
:raises ValueError: Pick number provided out of range (not a past pick or immediate next pick)
38-
:raises RuntimeError: Player unavailable to pick, can't add another pick
38+
Raises:
39+
ValueError: Pick number provided out of range (not a past pick or immediate next pick)
40+
RuntimeError: Player unavailable to pick, can't add another pick
3941
"""
4042
if player not in self._undrafted:
4143
raise RuntimeError(f"Player {player} not available to pick")
@@ -60,10 +62,10 @@ def set_pick(self, player: Player, pick_num: int | None = None) -> None:
6062
self._picks[pick_num - 1] = player
6163

6264
def delete_picks(self, num_picks: int | None) -> None:
63-
"""
64-
Deletes the given numbers of picks from end of the draft
65+
"""Delete the given numbers of picks from the end of the draft.
6566
66-
:param num_picks: Number of picks to delete from end of draft. None to delete all picks.
67+
Params:
68+
num_picks (int | None): Number of picks to delete from end of draft. None to delete all picks.
6769
"""
6870
new_num_picks = num_picks if num_picks else len(self._picks)
6971
for pick in range(new_num_picks):
@@ -74,12 +76,16 @@ def delete_picks(self, num_picks: int | None) -> None:
7476
self._picks.pop()
7577

7678
def pick_num_to_team(self, pick_num: int) -> Team:
77-
"""
78-
Convert a pick number to the team picking at that spot.
79+
"""Convert a pick number to the team picking at that spot.
7980
80-
:param pick_num: Pick number to convert (1-based)
81-
:raises ValueError: Pick number out of bounds of draft picks
82-
:return: Team picking at given pick number
81+
Params:
82+
pick_num (int): Pick number to convert (1-based)
83+
84+
Raises:
85+
ValueError: Pick number out of bounds of draft picks
86+
87+
Returns:
88+
Team: team picking at given pick number
8389
"""
8490
num_picks: int = len(self._order) * self._rounds
8591
if pick_num <= 0 or pick_num > num_picks:
@@ -92,27 +98,27 @@ def pick_num_to_team(self, pick_num: int) -> Team:
9298

9399
@property
94100
def undrafted(self) -> list[Player]:
95-
"""
96-
Return list of undrafted players as effectively read-only. No outside source should change this.
101+
"""Return list of undrafted players as effectively read-only. No outside source should change this.
97102
98-
:return: Undrafted players
103+
Returns:
104+
list[Player]: Undrafted players
99105
"""
100106
return self._undrafted
101107

102108
@property
103109
def drafted(self) -> list[Player]:
104-
"""
105-
Return list of drafted players as effectively read-only. No outside source should change this.
110+
"""Return list of drafted players as effectively read-only. No outside source should change this.
106111
107-
:return: Drafted players
112+
Returns:
113+
list[Player] Drafted players
108114
"""
109115
return self._picks
110116

111117
@property
112118
def settings(self) -> LeagueSettings:
113-
"""
114-
Return current league settings as effectively read-only. No outside source should change this
119+
"""Return current league settings as effectively read-only. No outside source should change this.
115120
116-
:return: League settings
121+
Returns:
122+
LeagueSettings: League settings
117123
"""
118124
return self._settings

src/ff_toolbox/model/core/phys_representations.py

Lines changed: 55 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class Position(Enum):
1616

1717

1818
class RosterSpot(Enum):
19-
"""Possible roster spots on a roster, listed in order of priority"""
19+
"""Possible roster spots on a roster, listed in order of priority."""
2020

2121
QB = 0
2222
RB = 1
@@ -32,13 +32,13 @@ class RosterSpot(Enum):
3232

3333
@dataclass
3434
class Player:
35-
"""
36-
Representation of football player in fantasy football.
35+
"""Representation of football player in fantasy football.
3736
38-
:param position: Primary position of player
39-
:param name: Full name of player
40-
:param team: NFL team of player
41-
:param ir_eligible: Whether player can use IR slot or not
37+
Params:
38+
position (Position): Primary position of player
39+
name (str): Full name of player
40+
team (str): NFL team of player
41+
ir_eligible (bool): Whether player can use IR slot or not
4242
"""
4343

4444
position: Position
@@ -47,11 +47,13 @@ class Player:
4747
ir_eligible: bool
4848

4949
def is_roster_eligible(self, roster_spot: RosterSpot) -> bool:
50-
"""
51-
Return whether player is eligible for given roster spot on a fantasy team.
50+
"""Return whether player is eligible for given roster spot on a fantasy team.
51+
52+
Params:
53+
roster_spot (RosterSpot): Roster spot to check eligibility for
5254
53-
:param roster_spot: Roster spot to check eligibility for
54-
:return: True if player is eligible for roster spot, False if not
55+
Returns:
56+
bool: True if player is eligible for roster spot, False if not
5557
"""
5658
match roster_spot:
5759
case RosterSpot.QB:
@@ -85,28 +87,25 @@ def __str__(self) -> str:
8587

8688

8789
class Roster:
88-
"""
89-
Representation of an owner's roster in fantasy football.
90-
91-
:param settings: Roster spot settings
92-
:param players: Current players on the roster associated with each roster spot
93-
"""
90+
"""Representation of an owner's roster in fantasy football."""
9491

9592
def __init__(self, settings: dict[RosterSpot, int]) -> None:
96-
"""
97-
Create a new, empty roster with given roster settings.
93+
"""Create a new, empty roster with given roster settings.
9894
99-
:param settings: Max number of players for each roster spot type
95+
Params:
96+
settings (dict[RosterSpot, int]): Max number of players for each roster spot type
10097
"""
10198
self._settings: dict[RosterSpot, int] = settings
10299
self._players: dict[RosterSpot, list[Player]] = {pos: [] for pos in RosterSpot}
103100

104101
def add_player(self, player: Player) -> None:
105-
"""
106-
Add new player to roster if possible.
102+
"""Add new player to roster if possible.
103+
104+
Params:
105+
player (Player): Player to add to roster
107106
108-
:param player: Player to add to roster
109-
:raises RuntimeError: No space on roster for player
107+
Raises:
108+
RuntimeError: No space on roster for player
110109
"""
111110
added: bool = False
112111
for spot in RosterSpot:
@@ -120,22 +119,24 @@ def add_player(self, player: Player) -> None:
120119
raise RuntimeError(f"No space on roster for player {player}")
121120

122121
def remove_player(self, player: Player) -> None:
123-
"""
124-
Remove given player from roster if on roster.
122+
"""Remove given player from roster if on roster.
125123
126-
:param player: Player to remove from roster
124+
Params:
125+
player (Player): Player to remove from roster
127126
"""
128127
for roster_spot, players in self._players.items():
129128
if player in players:
130129
self._players[roster_spot].remove(player)
131130

132131
def swap_players(self, player1: Player, player2: Player) -> None:
133-
"""
134-
Swap roster spots of two players on roster.
132+
"""Swap roster spots of two players on roster.
133+
134+
Params:
135+
player1 (Player): First player to swap
136+
player2 (Player): Second player to swap
135137
136-
:param player1: First player to swap
137-
:param player2: Second player to swap
138-
:raise RuntimeError: Unable to swap two players
138+
Raises:
139+
RuntimeError: Unable to swap two players
139140
"""
140141
# Validate each other's roster spot
141142
p1_roster_spot: RosterSpot | None = None
@@ -156,11 +157,11 @@ def swap_players(self, player1: Player, player2: Player) -> None:
156157
self._players[p2_roster_spot].append(player1)
157158

158159
def move_player(self, player: Player, roster_spot: RosterSpot) -> None:
159-
"""
160-
Move player from current roster spot to a given open roster spot.
160+
"""Move player from current roster spot to a given open roster spot.
161161
162-
:param player: Player whose spot to change
163-
:param roster_spot: Roster spot to move to
162+
Params:
163+
player (Player): Player whose spot to change
164+
roster_spot (RosterSpot): Roster spot to move to
164165
"""
165166
# Verify there's space at roster spot for player and player is eligible to play there
166167
if len(self._players[roster_spot]) >= self._settings[roster_spot]:
@@ -195,12 +196,12 @@ def __str__(self) -> str:
195196

196197
@dataclass
197198
class Team:
198-
"""
199-
Representation of an owner's fantasy team in fantasy football.
199+
"""Representation of an owner's fantasy team in fantasy football.
200200
201-
:param name: Team name
202-
:param owner: Owner's name
203-
:param roster: Team's roster
201+
Params:
202+
name (str): Team name
203+
owner (str): Owner's name
204+
roster (Roster): Team's roster
204205
"""
205206

206207
name: str
@@ -209,29 +210,31 @@ class Team:
209210

210211

211212
class PlayerRanking:
212-
"""Holds a list of player rankings and gets different types of rankings based on overall"""
213+
"""Holds a list of player rankings and gets different types of rankings based on overall."""
213214

214215
def __init__(self, players: list[Player]) -> None:
215-
"""
216-
Store an overall list of players as a ranking, from highest rank to lowest rank.
216+
"""Store an overall list of players as a ranking, from highest rank to lowest rank.
217217
218-
:param players: List of players, ranked
218+
Params:
219+
players (list[Player]): List of players, ranked
219220
"""
220221
self._players: list[Player] = players
221222

222223
def get_ovr_rankings(self) -> list[Player]:
223-
"""
224-
Return current overall rankings, with all positions mixed in
224+
"""Return current overall rankings, with all positions mixed in.
225225
226-
:return: List of overall rankings, high ranking to low
226+
Returns:
227+
list[Player] List of overall rankings, high ranking to low
227228
"""
228229
return self._players
229230

230231
def get_pos_rankings(self, position: Position) -> list[Player]:
231-
"""
232-
Return current player rankings, filtered by a given position
232+
"""Return current player rankings, filtered by a given position.
233+
234+
Params:
235+
position (Position): Player position to filter by
233236
234-
:param position: Player position to filter by
235-
:return: List of players at given position
237+
Returns:
238+
list[Player] List of players at given position
236239
"""
237240
return [player for player in self._players if player.position == position]

0 commit comments

Comments
 (0)