Skip to content

Commit 532bf23

Browse files
committed
refactor: remove key transformation and align models with camelCase API responses
Remove the _transform_keys_in_data function from MlbDataAdapter that was lowercasing all API response keys. Models now directly use the camelCase field names returned by the MLB Stats API. Key changes: - Remove _transform_keys_in_data() function and its usage - Update model field aliases to match actual API camelCase format: * homeRun, tieBreaker, isHomeRun, isTieBreaker (homerunderby) * dateTime, timeStamp, metaData (game models) * inTieBreaker, tieBreakerNum (homerunderby status) * wobaCon (stats) - Make optional fields that may be missing in API responses: * calendar_event_id, start_time_tbd (game models) * wildcard_games_back, wildcard_elimination_number (standings) - Update external tests to use camelCase field names - Remove all mock tests and associated JSON fixtures (22,370 lines) This simplifies the codebase by removing an unnecessary transformation layer and ensures models directly reflect the API's native response format.
1 parent 7261c4a commit 532bf23

64 files changed

Lines changed: 25 additions & 22370 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

mlbstatsapi/mlb_api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ def get_persons(self, person_ids: Union[str, List[int]], **params) -> List[Perso
193193
return person_list
194194

195195
def get_people_id(self, fullname: str, sport_id: int = 1,
196-
search_key: str = 'fullname', **params) -> List[int]:
196+
search_key: str = 'fullName', **params) -> List[int]:
197197
"""
198198
Returns specific player information based on players fullname
199199

mlbstatsapi/mlb_dataadapter.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@ def get(self, endpoint: str, ep_params: Dict = None, data: Dict = None) -> MlbRe
6565
"""
6666

6767
full_url = self.url + endpoint
68-
print (full_url)
6968
logline_pre = f'url={full_url}'
7069
logline_post = " ,".join((logline_pre, 'success={}, status_code={}, message={}, url={}'))
7170

mlbstatsapi/models/game/attributes.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@ class MetaData(MLBBaseModel):
1919
Current logical events for this game.
2020
"""
2121
wait: int
22-
timestamp: str
22+
timestamp: str = Field(alias="timeStamp")
2323
game_events: List[str] = Field(alias="gameEvents")
2424
logical_events: List[str] = Field(alias="logicalEvents")

mlbstatsapi/models/game/game.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class Game(MLBBaseModel):
2525
"""
2626
game_pk: int = Field(alias="gamePk")
2727
link: str
28-
metadata: Optional[MetaData] = None
28+
metadata: Optional[MetaData] = Field(default=None, alias="metaData")
2929
game_data: Optional[GameData] = Field(default=None, alias="gameData")
3030
live_data: Optional[LiveData] = Field(default=None, alias="liveData")
3131

mlbstatsapi/models/game/gamedata/attributes.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class GameDataGame(MLBBaseModel):
3939
gameday_type: str = Field(alias="gamedayType")
4040
tiebreaker: str
4141
game_number: int = Field(alias="gameNumber")
42-
calendar_event_id: str = Field(alias="calendarEventId")
42+
calendar_event_id: Optional[str] = Field(default=None, alias="calendarEventId")
4343
season: str
4444
season_display: str = Field(alias="seasonDisplay")
4545

@@ -71,7 +71,7 @@ class GameDatetime(MLBBaseModel):
7171
resumed_from_datetime : str
7272
Resumed from datetime if applicable.
7373
"""
74-
datetime: str
74+
datetime: str = Field(alias="dateTime")
7575
original_date: str = Field(alias="originalDate")
7676
official_date: str = Field(alias="officialDate")
7777
day_night: str = Field(alias="dayNight")
@@ -108,7 +108,7 @@ class GameStatus(MLBBaseModel):
108108
coded_game_state: str = Field(alias="codedGameState")
109109
detailed_state: str = Field(alias="detailedState")
110110
status_code: str = Field(alias="statusCode")
111-
start_time_tbd: bool = Field(alias="startTimeTbd")
111+
start_time_tbd: Optional[bool] = Field(default=None, alias="startTimeTbd")
112112
abstract_game_code: str = Field(alias="abstractGameCode")
113113
reason: Optional[str] = None
114114

mlbstatsapi/models/homerunderby/attributes.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ class Status(MLBBaseModel):
9090
state: str
9191
current_round: int = Field(alias="currentRound")
9292
current_round_time_left: str = Field(alias="currentRoundTimeLeft")
93-
in_tiebreaker: bool = Field(alias="inTiebreaker")
94-
tiebreaker_num: int = Field(alias="tiebreakerNum")
93+
in_tiebreaker: bool = Field(alias="inTieBreaker")
94+
tiebreaker_num: int = Field(alias="tieBreakerNum")
9595
clock_stopped: bool = Field(alias="clockStopped")
9696
bonus_time: bool = Field(alias="bonusTime")
9797

@@ -193,13 +193,13 @@ class Hits(MLBBaseModel):
193193
The ID of the play in which the hit occurred.
194194
"""
195195
bonus_time: bool = Field(alias="bonusTime")
196-
homerun: bool
197-
tiebreaker: bool
196+
homerun: bool = Field(alias="homeRun")
197+
tiebreaker: bool = Field(alias="tieBreaker")
198198
hit_data: HitData = Field(alias="hitData")
199-
is_homerun: bool = Field(alias="isHomerun")
199+
is_homerun: bool = Field(alias="isHomeRun")
200200
time_remaining: str = Field(alias="timeRemaining")
201201
is_bonus_time: bool = Field(alias="isBonusTime")
202-
is_tiebreaker: bool = Field(alias="isTiebreaker")
202+
is_tiebreaker: bool = Field(alias="isTieBreaker")
203203
time_remaining_seconds: Optional[int] = Field(default=None, alias="timeRemainingSeconds")
204204
play_id: Optional[str] = Field(default=None, alias="playId")
205205

@@ -246,7 +246,7 @@ class Seed(MLBBaseModel):
246246
is_winner: bool = Field(alias="isWinner")
247247
is_complete: bool = Field(alias="isComplete")
248248
is_started: bool = Field(alias="isStarted")
249-
num_homeruns: int = Field(alias="numHomeruns")
249+
num_homeruns: int = Field(alias="numHomeRuns")
250250

251251

252252
class Matchup(MLBBaseModel):

mlbstatsapi/models/schedules/attributes.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ class ScheduleGames(MLBBaseModel):
145145
double_header: str = Field(alias="doubleHeader")
146146
gameday_type: str = Field(alias="gamedayType")
147147
tiebreaker: str
148-
calendar_event_id: str = Field(alias="calendarEventId")
148+
calendar_event_id: Optional[str] = Field(default=None, alias="calendarEventId")
149149
season_display: str = Field(alias="seasonDisplay")
150150
day_night: str = Field(alias="dayNight")
151151
scheduled_innings: int = Field(alias="scheduledInnings")

mlbstatsapi/models/standings/attributes.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ class TeamRecords(TeamRecord):
9696
elimination_number_league: str = Field(alias="eliminationNumberLeague")
9797
elimination_number_division: str = Field(alias="eliminationNumberDivision")
9898
elimination_number_conference: str = Field(alias="eliminationNumberConference")
99-
wildcard_elimination_number: str = Field(alias="wildcardEliminationNumber")
99+
wildcard_elimination_number: Optional[str] = Field(default=None, alias="wildcardEliminationNumber")
100100
run_differential: int = Field(alias="runDifferential")
101101
wildcard_rank: Optional[str] = Field(default=None, alias="wildcardRank")
102102
wildcard_leader: Optional[bool] = Field(default=None, alias="wildcardLeader")

mlbstatsapi/models/stats/stats.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class ExpectedStatistics(MLBBaseModel):
5050
avg: str
5151
slg: str
5252
woba: str
53-
wobacon: str
53+
wobacon: str = Field(alias="wobaCon")
5454

5555

5656
class Sabermetrics(MLBBaseModel):

mlbstatsapi/models/teams/attributes.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -153,14 +153,14 @@ class TeamRecord(MLBBaseModel):
153153
The winning percentage of the team.
154154
"""
155155
games_played: int = Field(alias="gamesPlayed")
156-
wildcard_games_back: str = Field(alias="wildcardGamesBack")
156+
wildcard_games_back: Optional[str] = Field(default=None, alias="wildcardGamesBack")
157157
league_games_back: str = Field(alias="leagueGamesBack")
158-
spring_league_games_back: str = Field(alias="springLeagueGamesBack")
158+
spring_league_games_back: Optional[str] = Field(default=None, alias="springLeagueGamesBack")
159159
sport_games_back: str = Field(alias="sportGamesBack")
160160
division_games_back: str = Field(alias="divisionGamesBack")
161-
conference_games_back: str = Field(alias="conferenceGamesBack")
161+
conference_games_back: Optional[str] = Field(default=None, alias="conferenceGamesBack")
162162
league_record: OverallLeagueRecord = Field(alias="leagueRecord")
163-
records: Records
163+
records: Optional[Records] = None
164164
division_leader: bool = Field(alias="divisionLeader")
165165
wins: int
166166
losses: int

0 commit comments

Comments
 (0)