brlib 0.3.0__tar.gz → 0.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (600) hide show
  1. {brlib-0.3.0 → brlib-0.4.0}/PKG-INFO +6 -7
  2. {brlib-0.3.0 → brlib-0.4.0}/README.md +1 -3
  3. {brlib-0.3.0 → brlib-0.4.0}/pyproject.toml +8 -4
  4. brlib-0.4.0/scripts/refresh_tests.py +125 -0
  5. brlib-0.3.0/scripts/wiki.py → brlib-0.4.0/scripts/refresh_wiki.py +5 -2
  6. {brlib-0.3.0 → brlib-0.4.0}/src/brlib/__init__.py +1 -1
  7. {brlib-0.3.0 → brlib-0.4.0}/src/brlib/_helpers/abbreviations_manager.py +27 -9
  8. {brlib-0.3.0 → brlib-0.4.0}/src/brlib/_helpers/constants.py +28 -42
  9. {brlib-0.3.0 → brlib-0.4.0}/src/brlib/_helpers/inputs.py +60 -45
  10. {brlib-0.3.0 → brlib-0.4.0}/src/brlib/_helpers/no_hitter_dicts.py +18 -14
  11. {brlib-0.3.0 → brlib-0.4.0}/src/brlib/_helpers/requests_manager.py +1 -1
  12. brlib-0.4.0/src/brlib/_helpers/typechecking.py +75 -0
  13. {brlib-0.3.0 → brlib-0.4.0}/src/brlib/_helpers/utils.py +17 -77
  14. {brlib-0.3.0 → brlib-0.4.0}/src/brlib/find_asg.py +12 -12
  15. {brlib-0.3.0 → brlib-0.4.0}/src/brlib/find_games.py +28 -28
  16. {brlib-0.3.0 → brlib-0.4.0}/src/brlib/find_teams.py +19 -19
  17. {brlib-0.3.0 → brlib-0.4.0}/src/brlib/game.py +121 -196
  18. {brlib-0.3.0 → brlib-0.4.0}/src/brlib/game_set.py +44 -76
  19. {brlib-0.3.0 → brlib-0.4.0}/src/brlib/get_games.py +12 -18
  20. {brlib-0.3.0 → brlib-0.4.0}/src/brlib/get_players.py +2 -2
  21. {brlib-0.3.0 → brlib-0.4.0}/src/brlib/get_teams.py +12 -14
  22. {brlib-0.3.0 → brlib-0.4.0}/src/brlib/options.py +2 -2
  23. {brlib-0.3.0 → brlib-0.4.0}/src/brlib/player.py +28 -30
  24. {brlib-0.3.0 → brlib-0.4.0}/src/brlib/player_set.py +4 -6
  25. {brlib-0.3.0 → brlib-0.4.0}/src/brlib/team.py +38 -43
  26. {brlib-0.3.0 → brlib-0.4.0}/src/brlib/team_set.py +15 -17
  27. {brlib-0.3.0 → brlib-0.4.0}/tests/_helpers/test_abbreviations_manager.py +38 -7
  28. {brlib-0.3.0 → brlib-0.4.0}/tests/_helpers/test_inputs.py +36 -32
  29. {brlib-0.3.0 → brlib-0.4.0}/tests/_helpers/test_no_hitter_dicts.py +10 -12
  30. brlib-0.4.0/tests/_helpers/test_typechecking.py +23 -0
  31. {brlib-0.3.0 → brlib-0.4.0}/tests/_helpers/test_utils.py +1 -22
  32. {brlib-0.3.0 → brlib-0.4.0}/tests/conftest.py +53 -23
  33. brlib-0.4.0/tests/expected/games/original/1961-allstar-game-1/batting.csv +46 -0
  34. brlib-0.4.0/tests/expected/games/original/1961-allstar-game-1/fielding.csv +41 -0
  35. brlib-0.4.0/tests/expected/games/original/1961-allstar-game-1/pitching.csv +15 -0
  36. brlib-0.4.0/tests/expected/games/original/2025-allstar-game/batting.csv +42 -0
  37. brlib-0.4.0/tests/expected/games/original/2025-allstar-game/fielding.csv +60 -0
  38. brlib-0.4.0/tests/expected/games/original/2025-allstar-game/pitching.csv +27 -0
  39. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/ANA202305090/batting.csv +24 -24
  40. brlib-0.4.0/tests/expected/games/original/ANA202305090/fielding.csv +25 -0
  41. brlib-0.4.0/tests/expected/games/original/ANA202305090/pitching.csv +7 -0
  42. brlib-0.4.0/tests/expected/games/original/ANA202305090/teams.json +1 -0
  43. {brlib-0.3.0/tests/expected/games/updated → brlib-0.4.0/tests/expected/games/original}/BOS201708250/batting.csv +27 -27
  44. brlib-0.4.0/tests/expected/games/original/BOS201708250/fielding.csv +32 -0
  45. brlib-0.4.0/tests/expected/games/original/BOS201708250/pitching.csv +11 -0
  46. brlib-0.4.0/tests/expected/games/original/BOS201708250/teams.json +1 -0
  47. brlib-0.4.0/tests/expected/games/original/CHN196207291/batting.csv +28 -0
  48. brlib-0.4.0/tests/expected/games/original/CHN196207291/fielding.csv +26 -0
  49. brlib-0.4.0/tests/expected/games/original/CHN196207291/info.csv +2 -0
  50. brlib-0.4.0/tests/expected/games/original/CHN196207291/linescore.csv +3 -0
  51. brlib-0.4.0/tests/expected/games/original/CHN196207291/pitching.csv +9 -0
  52. brlib-0.4.0/tests/expected/games/original/CHN196207291/players.json +1 -0
  53. brlib-0.4.0/tests/expected/games/original/CHN196207291/team_info.csv +3 -0
  54. brlib-0.4.0/tests/expected/games/original/CHN196207291/teams.json +1 -0
  55. brlib-0.4.0/tests/expected/games/original/CHN196207291/ump_info.csv +5 -0
  56. {brlib-0.3.0/tests/expected/games/updated → brlib-0.4.0/tests/expected/games/original}/FLO199407290/batting.csv +36 -36
  57. brlib-0.4.0/tests/expected/games/original/FLO199407290/fielding.csv +32 -0
  58. brlib-0.4.0/tests/expected/games/original/FLO199407290/pitching.csv +12 -0
  59. brlib-0.4.0/tests/expected/games/original/FLO199407290/teams.json +1 -0
  60. brlib-0.4.0/tests/expected/games/original/MLA190105301/batting.csv +21 -0
  61. brlib-0.4.0/tests/expected/games/original/MLA190105301/fielding.csv +21 -0
  62. brlib-0.4.0/tests/expected/games/original/MLA190105301/pitching.csv +5 -0
  63. brlib-0.4.0/tests/expected/games/original/MLA190105301/teams.json +1 -0
  64. {brlib-0.3.0/tests/expected/games/updated → brlib-0.4.0/tests/expected/games/original}/NYN200908230/batting.csv +31 -31
  65. brlib-0.4.0/tests/expected/games/original/NYN200908230/fielding.csv +28 -0
  66. brlib-0.4.0/tests/expected/games/original/NYN200908230/pitching.csv +12 -0
  67. brlib-0.4.0/tests/expected/games/original/NYN200908230/teams.json +1 -0
  68. brlib-0.4.0/tests/expected/games/original/PHI202211020/batting.csv +22 -0
  69. brlib-0.4.0/tests/expected/games/original/PHI202211020/fielding.csv +30 -0
  70. brlib-0.4.0/tests/expected/games/original/PHI202211020/info.csv +2 -0
  71. brlib-0.4.0/tests/expected/games/original/PHI202211020/pitching.csv +13 -0
  72. brlib-0.4.0/tests/expected/games/original/PHI202211020/teams.json +1 -0
  73. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/PIT192010023/batting.csv +22 -22
  74. brlib-0.4.0/tests/expected/games/original/PIT192010023/fielding.csv +22 -0
  75. brlib-0.4.0/tests/expected/games/original/PIT192010023/pitching.csv +5 -0
  76. brlib-0.4.0/tests/expected/games/original/PIT192010023/teams.json +1 -0
  77. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SEA197805231/batting.csv +24 -24
  78. brlib-0.4.0/tests/expected/games/original/SEA197805231/fielding.csv +24 -0
  79. brlib-0.4.0/tests/expected/games/original/SEA197805231/pitching.csv +6 -0
  80. brlib-0.4.0/tests/expected/games/original/SEA197805231/teams.json +1 -0
  81. brlib-0.4.0/tests/expected/games/original/SEA201106250/batting.csv +27 -0
  82. brlib-0.4.0/tests/expected/games/original/SEA201106250/fielding.csv +25 -0
  83. brlib-0.4.0/tests/expected/games/original/SEA201106250/info.csv +2 -0
  84. brlib-0.4.0/tests/expected/games/original/SEA201106250/linescore.csv +3 -0
  85. brlib-0.4.0/tests/expected/games/original/SEA201106250/pitching.csv +9 -0
  86. brlib-0.4.0/tests/expected/games/original/SEA201106250/players.json +1 -0
  87. brlib-0.4.0/tests/expected/games/original/SEA201106250/team_info.csv +3 -0
  88. brlib-0.4.0/tests/expected/games/original/SEA201106250/teams.json +1 -0
  89. brlib-0.4.0/tests/expected/games/original/SEA201106250/ump_info.csv +5 -0
  90. {brlib-0.3.0/tests/expected/games/updated → brlib-0.4.0/tests/expected/games/original}/SEA201208150/batting.csv +23 -23
  91. brlib-0.4.0/tests/expected/games/original/SEA201208150/fielding.csv +22 -0
  92. brlib-0.4.0/tests/expected/games/original/SEA201208150/pitching.csv +6 -0
  93. brlib-0.4.0/tests/expected/games/original/SEA201208150/teams.json +1 -0
  94. {brlib-0.3.0/tests/expected/games/updated → brlib-0.4.0/tests/expected/games/original}/SEA201804190/batting.csv +24 -24
  95. brlib-0.4.0/tests/expected/games/original/SEA201804190/fielding.csv +30 -0
  96. brlib-0.4.0/tests/expected/games/original/SEA201804190/pitching.csv +11 -0
  97. brlib-0.4.0/tests/expected/games/original/SEA201804190/teams.json +1 -0
  98. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SEA201905270/batting.csv +21 -21
  99. brlib-0.4.0/tests/expected/games/original/SEA201905270/fielding.csv +27 -0
  100. brlib-0.4.0/tests/expected/games/original/SEA201905270/pitching.csv +11 -0
  101. brlib-0.4.0/tests/expected/games/original/SEA201905270/teams.json +1 -0
  102. brlib-0.4.0/tests/expected/games/original/SEA202210150/batting.csv +26 -0
  103. brlib-0.4.0/tests/expected/games/original/SEA202210150/fielding.csv +40 -0
  104. brlib-0.4.0/tests/expected/games/original/SEA202210150/info.csv +2 -0
  105. brlib-0.4.0/tests/expected/games/original/SEA202210150/pitching.csv +21 -0
  106. brlib-0.4.0/tests/expected/games/original/SEA202210150/teams.json +1 -0
  107. brlib-0.4.0/tests/expected/games/original/SLN190710051/batting.csv +22 -0
  108. brlib-0.4.0/tests/expected/games/original/SLN190710051/fielding.csv +22 -0
  109. brlib-0.4.0/tests/expected/games/original/SLN190710051/pitching.csv +5 -0
  110. brlib-0.4.0/tests/expected/games/original/SLN190710051/teams.json +1 -0
  111. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/records.csv +4 -4
  112. brlib-0.4.0/tests/expected/games/updated/1961-allstar-game-1/batting.csv +46 -0
  113. brlib-0.4.0/tests/expected/games/updated/1961-allstar-game-1/fielding.csv +41 -0
  114. brlib-0.4.0/tests/expected/games/updated/1961-allstar-game-1/pitching.csv +15 -0
  115. brlib-0.4.0/tests/expected/games/updated/2025-allstar-game/batting.csv +42 -0
  116. brlib-0.4.0/tests/expected/games/updated/2025-allstar-game/fielding.csv +60 -0
  117. brlib-0.4.0/tests/expected/games/updated/2025-allstar-game/pitching.csv +27 -0
  118. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/ANA202305090/batting.csv +24 -24
  119. brlib-0.4.0/tests/expected/games/updated/ANA202305090/fielding.csv +25 -0
  120. brlib-0.4.0/tests/expected/games/updated/ANA202305090/pitching.csv +7 -0
  121. {brlib-0.3.0/tests/expected/games/original → brlib-0.4.0/tests/expected/games/updated}/BOS201708250/batting.csv +27 -27
  122. brlib-0.4.0/tests/expected/games/updated/BOS201708250/fielding.csv +32 -0
  123. brlib-0.4.0/tests/expected/games/updated/BOS201708250/pitching.csv +11 -0
  124. brlib-0.4.0/tests/expected/games/updated/CHN196207291/batting.csv +28 -0
  125. brlib-0.4.0/tests/expected/games/updated/CHN196207291/fielding.csv +26 -0
  126. brlib-0.4.0/tests/expected/games/updated/CHN196207291/info.csv +2 -0
  127. brlib-0.4.0/tests/expected/games/updated/CHN196207291/linescore.csv +3 -0
  128. brlib-0.4.0/tests/expected/games/updated/CHN196207291/pitching.csv +9 -0
  129. brlib-0.4.0/tests/expected/games/updated/CHN196207291/team_info.csv +3 -0
  130. {brlib-0.3.0/tests/expected/games/original → brlib-0.4.0/tests/expected/games/updated}/FLO199407290/batting.csv +36 -36
  131. brlib-0.4.0/tests/expected/games/updated/FLO199407290/fielding.csv +32 -0
  132. brlib-0.4.0/tests/expected/games/updated/FLO199407290/pitching.csv +12 -0
  133. brlib-0.4.0/tests/expected/games/updated/MLA190105301/batting.csv +21 -0
  134. brlib-0.4.0/tests/expected/games/updated/MLA190105301/fielding.csv +21 -0
  135. brlib-0.4.0/tests/expected/games/updated/MLA190105301/pitching.csv +5 -0
  136. {brlib-0.3.0/tests/expected/games/original → brlib-0.4.0/tests/expected/games/updated}/NYN200908230/batting.csv +31 -31
  137. brlib-0.4.0/tests/expected/games/updated/NYN200908230/fielding.csv +28 -0
  138. brlib-0.4.0/tests/expected/games/updated/NYN200908230/pitching.csv +12 -0
  139. brlib-0.4.0/tests/expected/games/updated/PHI202211020/batting.csv +22 -0
  140. brlib-0.4.0/tests/expected/games/updated/PHI202211020/fielding.csv +30 -0
  141. brlib-0.4.0/tests/expected/games/updated/PHI202211020/info.csv +2 -0
  142. brlib-0.4.0/tests/expected/games/updated/PHI202211020/pitching.csv +13 -0
  143. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/PIT192010023/batting.csv +22 -22
  144. brlib-0.4.0/tests/expected/games/updated/PIT192010023/fielding.csv +22 -0
  145. brlib-0.4.0/tests/expected/games/updated/PIT192010023/pitching.csv +5 -0
  146. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/SEA197805231/batting.csv +24 -24
  147. brlib-0.4.0/tests/expected/games/updated/SEA197805231/fielding.csv +24 -0
  148. brlib-0.4.0/tests/expected/games/updated/SEA197805231/pitching.csv +6 -0
  149. brlib-0.4.0/tests/expected/games/updated/SEA201106250/batting.csv +27 -0
  150. brlib-0.4.0/tests/expected/games/updated/SEA201106250/fielding.csv +25 -0
  151. brlib-0.4.0/tests/expected/games/updated/SEA201106250/info.csv +2 -0
  152. brlib-0.4.0/tests/expected/games/updated/SEA201106250/linescore.csv +3 -0
  153. brlib-0.4.0/tests/expected/games/updated/SEA201106250/pitching.csv +9 -0
  154. brlib-0.4.0/tests/expected/games/updated/SEA201106250/team_info.csv +3 -0
  155. {brlib-0.3.0/tests/expected/games/original → brlib-0.4.0/tests/expected/games/updated}/SEA201208150/batting.csv +23 -23
  156. brlib-0.4.0/tests/expected/games/updated/SEA201208150/fielding.csv +22 -0
  157. brlib-0.4.0/tests/expected/games/updated/SEA201208150/pitching.csv +6 -0
  158. {brlib-0.3.0/tests/expected/games/original → brlib-0.4.0/tests/expected/games/updated}/SEA201804190/batting.csv +24 -24
  159. brlib-0.4.0/tests/expected/games/updated/SEA201804190/fielding.csv +30 -0
  160. brlib-0.4.0/tests/expected/games/updated/SEA201804190/pitching.csv +11 -0
  161. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/SEA201905270/batting.csv +21 -21
  162. brlib-0.4.0/tests/expected/games/updated/SEA201905270/fielding.csv +27 -0
  163. brlib-0.4.0/tests/expected/games/updated/SEA201905270/pitching.csv +11 -0
  164. brlib-0.4.0/tests/expected/games/updated/SEA202210150/batting.csv +26 -0
  165. brlib-0.4.0/tests/expected/games/updated/SEA202210150/fielding.csv +40 -0
  166. brlib-0.4.0/tests/expected/games/updated/SEA202210150/info.csv +2 -0
  167. brlib-0.4.0/tests/expected/games/updated/SEA202210150/pitching.csv +21 -0
  168. brlib-0.4.0/tests/expected/games/updated/SLN190710051/batting.csv +22 -0
  169. brlib-0.4.0/tests/expected/games/updated/SLN190710051/fielding.csv +22 -0
  170. brlib-0.4.0/tests/expected/games/updated/SLN190710051/pitching.csv +5 -0
  171. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/aloumo01/batting.csv +5 -5
  172. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/aloumo01/fielding.csv +39 -39
  173. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/aloumo01/info.csv +1 -1
  174. brlib-0.4.0/tests/expected/players/original/aloumo01/teams.json +1 -0
  175. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/bendech01/batting.csv +4 -4
  176. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/bendech01/fielding.csv +2 -2
  177. {brlib-0.3.0/tests/expected/players/updated → brlib-0.4.0/tests/expected/players/original}/bendech01/info.csv +1 -1
  178. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/bendech01/pitching.csv +18 -18
  179. brlib-0.4.0/tests/expected/players/original/bendech01/teams.json +1 -0
  180. brlib-0.4.0/tests/expected/players/original/colli05/teams.json +1 -0
  181. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/cormirh01/fielding.csv +14 -14
  182. {brlib-0.3.0/tests/expected/players/updated → brlib-0.4.0/tests/expected/players/original}/cormirh01/info.csv +1 -1
  183. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/cormirh01/pitching.csv +18 -18
  184. brlib-0.4.0/tests/expected/players/original/cormirh01/teams.json +1 -0
  185. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/gibsojo99/fielding.csv +15 -15
  186. {brlib-0.3.0/tests/expected/players/updated → brlib-0.4.0/tests/expected/players/original}/gibsojo99/info.csv +1 -1
  187. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/gibsojo99/pitching.csv +2 -2
  188. brlib-0.4.0/tests/expected/players/original/gibsojo99/teams.json +1 -0
  189. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/hallaro01/batting.csv +3 -3
  190. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/hallaro01/fielding.csv +10 -10
  191. {brlib-0.3.0/tests/expected/players/updated → brlib-0.4.0/tests/expected/players/original}/hallaro01/info.csv +1 -1
  192. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/hallaro01/pitching.csv +17 -17
  193. brlib-0.4.0/tests/expected/players/original/hallaro01/teams.json +1 -0
  194. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/jacksre01/batting.csv +12 -12
  195. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/jacksre01/fielding.csv +41 -41
  196. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/jacksre01/info.csv +1 -1
  197. brlib-0.4.0/tests/expected/players/original/jacksre01/teams.json +1 -0
  198. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/kigerma01/info.csv +1 -1
  199. brlib-0.4.0/tests/expected/players/original/kigerma01/teams.json +1 -0
  200. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/pressry01/fielding.csv +18 -18
  201. {brlib-0.3.0/tests/expected/players/updated → brlib-0.4.0/tests/expected/players/original}/pressry01/info.csv +1 -1
  202. brlib-0.4.0/tests/expected/players/original/pressry01/pitching.csv +34 -0
  203. brlib-0.4.0/tests/expected/players/original/pressry01/teams.json +1 -0
  204. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/vogtst01/batting.csv +2 -2
  205. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/vogtst01/fielding.csv +17 -17
  206. {brlib-0.3.0/tests/expected/players/updated → brlib-0.4.0/tests/expected/players/original}/vogtst01/info.csv +1 -1
  207. brlib-0.4.0/tests/expected/players/original/vogtst01/teams.json +1 -0
  208. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/updated/aloumo01/info.csv +1 -1
  209. {brlib-0.3.0/tests/expected/players/original → brlib-0.4.0/tests/expected/players/updated}/bendech01/info.csv +1 -1
  210. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/updated/bendech01/pitching.csv +18 -18
  211. {brlib-0.3.0/tests/expected/players/original → brlib-0.4.0/tests/expected/players/updated}/cormirh01/info.csv +1 -1
  212. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/updated/cormirh01/pitching.csv +18 -18
  213. {brlib-0.3.0/tests/expected/players/original → brlib-0.4.0/tests/expected/players/updated}/gibsojo99/info.csv +1 -1
  214. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/updated/gibsojo99/pitching.csv +2 -2
  215. {brlib-0.3.0/tests/expected/players/original → brlib-0.4.0/tests/expected/players/updated}/hallaro01/info.csv +1 -1
  216. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/updated/hallaro01/pitching.csv +17 -17
  217. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/updated/jacksre01/info.csv +1 -1
  218. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/updated/kigerma01/info.csv +1 -1
  219. {brlib-0.3.0/tests/expected/players/original → brlib-0.4.0/tests/expected/players/updated}/pressry01/info.csv +1 -1
  220. brlib-0.4.0/tests/expected/players/updated/pressry01/pitching.csv +34 -0
  221. {brlib-0.3.0/tests/expected/players/original → brlib-0.4.0/tests/expected/players/updated}/vogtst01/info.csv +1 -1
  222. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/BBB1924/fielding.csv +6 -6
  223. brlib-0.4.0/tests/expected/teams/original/BBB1924/info.csv +2 -0
  224. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/BBB1924/pitching.csv +6 -6
  225. brlib-0.4.0/tests/expected/teams/original/BEG1939/info.csv +2 -0
  226. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/BEG1939/pitching.csv +10 -10
  227. {brlib-0.3.0/tests/expected/teams/updated → brlib-0.4.0/tests/expected/teams/original}/CHC2020/fielding.csv +33 -33
  228. brlib-0.4.0/tests/expected/teams/original/CHC2020/info.csv +2 -0
  229. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/CHC2020/pitching.csv +24 -24
  230. brlib-0.4.0/tests/expected/teams/original/COT1932/info.csv +2 -0
  231. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/HOU2022/fielding.csv +34 -34
  232. brlib-0.4.0/tests/expected/teams/original/HOU2022/info.csv +2 -0
  233. brlib-0.4.0/tests/expected/teams/original/HOU2022/pitching.csv +37 -0
  234. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/LAA2012/fielding.csv +27 -27
  235. brlib-0.4.0/tests/expected/teams/original/LAA2012/info.csv +2 -0
  236. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/LAA2012/pitching.csv +15 -15
  237. brlib-0.4.0/tests/expected/teams/original/MIN2019/batting.csv +67 -0
  238. brlib-0.4.0/tests/expected/teams/original/MIN2019/fielding.csv +76 -0
  239. brlib-0.4.0/tests/expected/teams/original/MIN2019/info.csv +2 -0
  240. brlib-0.4.0/tests/expected/teams/original/MIN2019/pitching.csv +46 -0
  241. brlib-0.4.0/tests/expected/teams/original/MIN2019/players.json +1 -0
  242. {brlib-0.3.0/tests/expected/teams/updated → brlib-0.4.0/tests/expected/teams/original}/SEA2012/fielding.csv +29 -29
  243. brlib-0.4.0/tests/expected/teams/original/SEA2012/info.csv +2 -0
  244. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/SEA2012/pitching.csv +13 -13
  245. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/WSH1904/fielding.csv +1 -1
  246. brlib-0.4.0/tests/expected/teams/original/WSH1904/info.csv +2 -0
  247. brlib-0.4.0/tests/expected/teams/original/WSH1904/pitching.csv +11 -0
  248. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/records.csv +1 -1
  249. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/updated/BBB1924/fielding.csv +6 -6
  250. brlib-0.4.0/tests/expected/teams/updated/BBB1924/info.csv +2 -0
  251. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/updated/BBB1924/pitching.csv +6 -6
  252. brlib-0.4.0/tests/expected/teams/updated/BEG1939/info.csv +2 -0
  253. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/updated/BEG1939/pitching.csv +10 -10
  254. {brlib-0.3.0/tests/expected/teams/original → brlib-0.4.0/tests/expected/teams/updated}/CHC2020/fielding.csv +33 -33
  255. brlib-0.4.0/tests/expected/teams/updated/CHC2020/info.csv +2 -0
  256. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/updated/CHC2020/pitching.csv +24 -24
  257. brlib-0.4.0/tests/expected/teams/updated/COT1932/info.csv +2 -0
  258. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/updated/HOU2022/fielding.csv +34 -34
  259. brlib-0.4.0/tests/expected/teams/updated/HOU2022/info.csv +2 -0
  260. brlib-0.4.0/tests/expected/teams/updated/HOU2022/pitching.csv +37 -0
  261. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/updated/LAA2012/fielding.csv +27 -27
  262. brlib-0.4.0/tests/expected/teams/updated/LAA2012/info.csv +2 -0
  263. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/updated/LAA2012/pitching.csv +15 -15
  264. brlib-0.4.0/tests/expected/teams/updated/MIN2019/batting.csv +67 -0
  265. brlib-0.4.0/tests/expected/teams/updated/MIN2019/fielding.csv +76 -0
  266. brlib-0.4.0/tests/expected/teams/updated/MIN2019/info.csv +2 -0
  267. brlib-0.4.0/tests/expected/teams/updated/MIN2019/pitching.csv +46 -0
  268. {brlib-0.3.0/tests/expected/teams/original → brlib-0.4.0/tests/expected/teams/updated}/SEA2012/fielding.csv +29 -29
  269. brlib-0.4.0/tests/expected/teams/updated/SEA2012/info.csv +2 -0
  270. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/updated/SEA2012/pitching.csv +13 -13
  271. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/updated/WSH1904/fielding.csv +1 -1
  272. brlib-0.4.0/tests/expected/teams/updated/WSH1904/info.csv +2 -0
  273. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/updated/WSH1904/pitching.csv +8 -8
  274. {brlib-0.3.0 → brlib-0.4.0}/tests/get_expected.py +2 -4
  275. {brlib-0.3.0 → brlib-0.4.0}/tests/test_find_asg.py +14 -14
  276. {brlib-0.3.0 → brlib-0.4.0}/tests/test_find_games.py +30 -31
  277. brlib-0.4.0/tests/test_find_teams.py +76 -0
  278. {brlib-0.3.0 → brlib-0.4.0}/tests/test_game.py +0 -1
  279. {brlib-0.3.0 → brlib-0.4.0}/tests/test_player.py +0 -1
  280. {brlib-0.3.0 → brlib-0.4.0}/tests/test_team.py +2 -4
  281. {brlib-0.3.0 → brlib-0.4.0}/tests/test_team_set.py +4 -6
  282. brlib-0.4.0/uv.lock +840 -0
  283. brlib-0.3.0/tests/expected/games/original/1961-allstar-game-1/batting.csv +0 -46
  284. brlib-0.3.0/tests/expected/games/original/1961-allstar-game-1/fielding.csv +0 -41
  285. brlib-0.3.0/tests/expected/games/original/1961-allstar-game-1/pitching.csv +0 -15
  286. brlib-0.3.0/tests/expected/games/original/2025-allstar-game/batting.csv +0 -42
  287. brlib-0.3.0/tests/expected/games/original/2025-allstar-game/fielding.csv +0 -60
  288. brlib-0.3.0/tests/expected/games/original/2025-allstar-game/pitching.csv +0 -27
  289. brlib-0.3.0/tests/expected/games/original/ANA202305090/fielding.csv +0 -25
  290. brlib-0.3.0/tests/expected/games/original/ANA202305090/pitching.csv +0 -7
  291. brlib-0.3.0/tests/expected/games/original/ANA202305090/teams.json +0 -1
  292. brlib-0.3.0/tests/expected/games/original/BOS201708250/fielding.csv +0 -32
  293. brlib-0.3.0/tests/expected/games/original/BOS201708250/pitching.csv +0 -11
  294. brlib-0.3.0/tests/expected/games/original/BOS201708250/teams.json +0 -1
  295. brlib-0.3.0/tests/expected/games/original/FLO199407290/fielding.csv +0 -32
  296. brlib-0.3.0/tests/expected/games/original/FLO199407290/pitching.csv +0 -12
  297. brlib-0.3.0/tests/expected/games/original/FLO199407290/teams.json +0 -1
  298. brlib-0.3.0/tests/expected/games/original/MLA190105301/batting.csv +0 -21
  299. brlib-0.3.0/tests/expected/games/original/MLA190105301/fielding.csv +0 -21
  300. brlib-0.3.0/tests/expected/games/original/MLA190105301/pitching.csv +0 -5
  301. brlib-0.3.0/tests/expected/games/original/MLA190105301/teams.json +0 -1
  302. brlib-0.3.0/tests/expected/games/original/NYN200908230/fielding.csv +0 -28
  303. brlib-0.3.0/tests/expected/games/original/NYN200908230/pitching.csv +0 -12
  304. brlib-0.3.0/tests/expected/games/original/NYN200908230/teams.json +0 -1
  305. brlib-0.3.0/tests/expected/games/original/PHI202211020/batting.csv +0 -22
  306. brlib-0.3.0/tests/expected/games/original/PHI202211020/fielding.csv +0 -30
  307. brlib-0.3.0/tests/expected/games/original/PHI202211020/info.csv +0 -2
  308. brlib-0.3.0/tests/expected/games/original/PHI202211020/pitching.csv +0 -13
  309. brlib-0.3.0/tests/expected/games/original/PHI202211020/teams.json +0 -1
  310. brlib-0.3.0/tests/expected/games/original/PIT192010023/fielding.csv +0 -22
  311. brlib-0.3.0/tests/expected/games/original/PIT192010023/pitching.csv +0 -5
  312. brlib-0.3.0/tests/expected/games/original/PIT192010023/teams.json +0 -1
  313. brlib-0.3.0/tests/expected/games/original/SEA197805231/fielding.csv +0 -24
  314. brlib-0.3.0/tests/expected/games/original/SEA197805231/pitching.csv +0 -6
  315. brlib-0.3.0/tests/expected/games/original/SEA197805231/teams.json +0 -1
  316. brlib-0.3.0/tests/expected/games/original/SEA201208150/fielding.csv +0 -22
  317. brlib-0.3.0/tests/expected/games/original/SEA201208150/pitching.csv +0 -6
  318. brlib-0.3.0/tests/expected/games/original/SEA201208150/teams.json +0 -1
  319. brlib-0.3.0/tests/expected/games/original/SEA201804190/fielding.csv +0 -30
  320. brlib-0.3.0/tests/expected/games/original/SEA201804190/pitching.csv +0 -11
  321. brlib-0.3.0/tests/expected/games/original/SEA201804190/teams.json +0 -1
  322. brlib-0.3.0/tests/expected/games/original/SEA201905270/fielding.csv +0 -27
  323. brlib-0.3.0/tests/expected/games/original/SEA201905270/pitching.csv +0 -11
  324. brlib-0.3.0/tests/expected/games/original/SEA201905270/teams.json +0 -1
  325. brlib-0.3.0/tests/expected/games/original/SEA202210150/batting.csv +0 -26
  326. brlib-0.3.0/tests/expected/games/original/SEA202210150/fielding.csv +0 -40
  327. brlib-0.3.0/tests/expected/games/original/SEA202210150/info.csv +0 -2
  328. brlib-0.3.0/tests/expected/games/original/SEA202210150/pitching.csv +0 -21
  329. brlib-0.3.0/tests/expected/games/original/SEA202210150/teams.json +0 -1
  330. brlib-0.3.0/tests/expected/games/original/SLN190710051/batting.csv +0 -22
  331. brlib-0.3.0/tests/expected/games/original/SLN190710051/fielding.csv +0 -22
  332. brlib-0.3.0/tests/expected/games/original/SLN190710051/pitching.csv +0 -5
  333. brlib-0.3.0/tests/expected/games/original/SLN190710051/teams.json +0 -1
  334. brlib-0.3.0/tests/expected/games/updated/1961-allstar-game-1/batting.csv +0 -46
  335. brlib-0.3.0/tests/expected/games/updated/1961-allstar-game-1/fielding.csv +0 -41
  336. brlib-0.3.0/tests/expected/games/updated/1961-allstar-game-1/pitching.csv +0 -15
  337. brlib-0.3.0/tests/expected/games/updated/2025-allstar-game/batting.csv +0 -42
  338. brlib-0.3.0/tests/expected/games/updated/2025-allstar-game/fielding.csv +0 -60
  339. brlib-0.3.0/tests/expected/games/updated/2025-allstar-game/pitching.csv +0 -27
  340. brlib-0.3.0/tests/expected/games/updated/ANA202305090/fielding.csv +0 -25
  341. brlib-0.3.0/tests/expected/games/updated/ANA202305090/pitching.csv +0 -7
  342. brlib-0.3.0/tests/expected/games/updated/BOS201708250/fielding.csv +0 -32
  343. brlib-0.3.0/tests/expected/games/updated/BOS201708250/pitching.csv +0 -11
  344. brlib-0.3.0/tests/expected/games/updated/FLO199407290/fielding.csv +0 -32
  345. brlib-0.3.0/tests/expected/games/updated/FLO199407290/pitching.csv +0 -12
  346. brlib-0.3.0/tests/expected/games/updated/MLA190105301/batting.csv +0 -21
  347. brlib-0.3.0/tests/expected/games/updated/MLA190105301/fielding.csv +0 -21
  348. brlib-0.3.0/tests/expected/games/updated/MLA190105301/pitching.csv +0 -5
  349. brlib-0.3.0/tests/expected/games/updated/NYN200908230/fielding.csv +0 -28
  350. brlib-0.3.0/tests/expected/games/updated/NYN200908230/pitching.csv +0 -12
  351. brlib-0.3.0/tests/expected/games/updated/PHI202211020/batting.csv +0 -22
  352. brlib-0.3.0/tests/expected/games/updated/PHI202211020/fielding.csv +0 -30
  353. brlib-0.3.0/tests/expected/games/updated/PHI202211020/info.csv +0 -2
  354. brlib-0.3.0/tests/expected/games/updated/PHI202211020/pitching.csv +0 -13
  355. brlib-0.3.0/tests/expected/games/updated/PIT192010023/fielding.csv +0 -22
  356. brlib-0.3.0/tests/expected/games/updated/PIT192010023/pitching.csv +0 -5
  357. brlib-0.3.0/tests/expected/games/updated/SEA197805231/fielding.csv +0 -24
  358. brlib-0.3.0/tests/expected/games/updated/SEA197805231/pitching.csv +0 -6
  359. brlib-0.3.0/tests/expected/games/updated/SEA201208150/fielding.csv +0 -22
  360. brlib-0.3.0/tests/expected/games/updated/SEA201208150/pitching.csv +0 -6
  361. brlib-0.3.0/tests/expected/games/updated/SEA201804190/fielding.csv +0 -30
  362. brlib-0.3.0/tests/expected/games/updated/SEA201804190/pitching.csv +0 -11
  363. brlib-0.3.0/tests/expected/games/updated/SEA201905270/fielding.csv +0 -27
  364. brlib-0.3.0/tests/expected/games/updated/SEA201905270/pitching.csv +0 -11
  365. brlib-0.3.0/tests/expected/games/updated/SEA202210150/batting.csv +0 -26
  366. brlib-0.3.0/tests/expected/games/updated/SEA202210150/fielding.csv +0 -40
  367. brlib-0.3.0/tests/expected/games/updated/SEA202210150/info.csv +0 -2
  368. brlib-0.3.0/tests/expected/games/updated/SEA202210150/pitching.csv +0 -21
  369. brlib-0.3.0/tests/expected/games/updated/SLN190710051/batting.csv +0 -22
  370. brlib-0.3.0/tests/expected/games/updated/SLN190710051/fielding.csv +0 -22
  371. brlib-0.3.0/tests/expected/games/updated/SLN190710051/pitching.csv +0 -5
  372. brlib-0.3.0/tests/expected/players/original/aloumo01/teams.json +0 -1
  373. brlib-0.3.0/tests/expected/players/original/bendech01/teams.json +0 -1
  374. brlib-0.3.0/tests/expected/players/original/colli05/teams.json +0 -1
  375. brlib-0.3.0/tests/expected/players/original/cormirh01/teams.json +0 -1
  376. brlib-0.3.0/tests/expected/players/original/gibsojo99/teams.json +0 -1
  377. brlib-0.3.0/tests/expected/players/original/hallaro01/teams.json +0 -1
  378. brlib-0.3.0/tests/expected/players/original/jacksre01/teams.json +0 -1
  379. brlib-0.3.0/tests/expected/players/original/kigerma01/teams.json +0 -1
  380. brlib-0.3.0/tests/expected/players/original/pressry01/pitching.csv +0 -34
  381. brlib-0.3.0/tests/expected/players/original/pressry01/teams.json +0 -1
  382. brlib-0.3.0/tests/expected/players/original/vogtst01/teams.json +0 -1
  383. brlib-0.3.0/tests/expected/players/updated/pressry01/pitching.csv +0 -34
  384. brlib-0.3.0/tests/expected/teams/original/BBB1924/info.csv +0 -2
  385. brlib-0.3.0/tests/expected/teams/original/BEG1939/info.csv +0 -2
  386. brlib-0.3.0/tests/expected/teams/original/CHC2020/info.csv +0 -2
  387. brlib-0.3.0/tests/expected/teams/original/COT1932/info.csv +0 -2
  388. brlib-0.3.0/tests/expected/teams/original/HOU2022/info.csv +0 -2
  389. brlib-0.3.0/tests/expected/teams/original/HOU2022/pitching.csv +0 -37
  390. brlib-0.3.0/tests/expected/teams/original/LAA2012/info.csv +0 -2
  391. brlib-0.3.0/tests/expected/teams/original/SEA2012/info.csv +0 -2
  392. brlib-0.3.0/tests/expected/teams/original/WSH1904/info.csv +0 -2
  393. brlib-0.3.0/tests/expected/teams/original/WSH1904/pitching.csv +0 -11
  394. brlib-0.3.0/tests/expected/teams/updated/BBB1924/info.csv +0 -2
  395. brlib-0.3.0/tests/expected/teams/updated/BEG1939/info.csv +0 -2
  396. brlib-0.3.0/tests/expected/teams/updated/CHC2020/info.csv +0 -2
  397. brlib-0.3.0/tests/expected/teams/updated/COT1932/info.csv +0 -2
  398. brlib-0.3.0/tests/expected/teams/updated/HOU2022/info.csv +0 -2
  399. brlib-0.3.0/tests/expected/teams/updated/HOU2022/pitching.csv +0 -37
  400. brlib-0.3.0/tests/expected/teams/updated/LAA2012/info.csv +0 -2
  401. brlib-0.3.0/tests/expected/teams/updated/SEA2012/info.csv +0 -2
  402. brlib-0.3.0/tests/expected/teams/updated/WSH1904/info.csv +0 -2
  403. brlib-0.3.0/tests/test_find_teams.py +0 -76
  404. {brlib-0.3.0 → brlib-0.4.0}/.github/workflows/full-test.yml +0 -0
  405. {brlib-0.3.0 → brlib-0.4.0}/.github/workflows/publish.yml +0 -0
  406. {brlib-0.3.0 → brlib-0.4.0}/.github/workflows/test.yml +0 -0
  407. {brlib-0.3.0 → brlib-0.4.0}/LICENSE.txt +0 -0
  408. {brlib-0.3.0 → brlib-0.4.0}/src/brlib/_helpers/__init__.py +0 -0
  409. {brlib-0.3.0 → brlib-0.4.0}/src/brlib/_helpers/singleton.py +0 -0
  410. {brlib-0.3.0 → brlib-0.4.0}/src/brlib/all_players.py +0 -0
  411. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/1961-allstar-game-1/info.csv +0 -0
  412. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/1961-allstar-game-1/linescore.csv +0 -0
  413. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/1961-allstar-game-1/players.json +0 -0
  414. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/1961-allstar-game-1/team_info.csv +0 -0
  415. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/1961-allstar-game-1/teams.json +0 -0
  416. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/1961-allstar-game-1/ump_info.csv +0 -0
  417. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/2025-allstar-game/info.csv +0 -0
  418. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/2025-allstar-game/linescore.csv +0 -0
  419. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/2025-allstar-game/players.json +0 -0
  420. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/2025-allstar-game/team_info.csv +0 -0
  421. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/2025-allstar-game/teams.json +0 -0
  422. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/2025-allstar-game/ump_info.csv +0 -0
  423. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/ANA202305090/info.csv +0 -0
  424. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/ANA202305090/linescore.csv +0 -0
  425. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/ANA202305090/players.json +0 -0
  426. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/ANA202305090/team_info.csv +0 -0
  427. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/ANA202305090/ump_info.csv +0 -0
  428. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/BOS201708250/info.csv +0 -0
  429. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/BOS201708250/linescore.csv +0 -0
  430. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/BOS201708250/players.json +0 -0
  431. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/BOS201708250/team_info.csv +0 -0
  432. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/BOS201708250/ump_info.csv +0 -0
  433. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/FLO199407290/info.csv +0 -0
  434. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/FLO199407290/linescore.csv +0 -0
  435. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/FLO199407290/players.json +0 -0
  436. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/FLO199407290/team_info.csv +0 -0
  437. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/FLO199407290/ump_info.csv +0 -0
  438. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/MLA190105301/info.csv +0 -0
  439. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/MLA190105301/linescore.csv +0 -0
  440. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/MLA190105301/players.json +0 -0
  441. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/MLA190105301/team_info.csv +0 -0
  442. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/MLA190105301/ump_info.csv +0 -0
  443. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/NYN200908230/info.csv +0 -0
  444. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/NYN200908230/linescore.csv +0 -0
  445. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/NYN200908230/players.json +0 -0
  446. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/NYN200908230/team_info.csv +0 -0
  447. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/NYN200908230/ump_info.csv +0 -0
  448. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/PHI202211020/linescore.csv +0 -0
  449. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/PHI202211020/players.json +0 -0
  450. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/PHI202211020/team_info.csv +0 -0
  451. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/PHI202211020/ump_info.csv +0 -0
  452. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/PIT192010023/info.csv +0 -0
  453. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/PIT192010023/linescore.csv +0 -0
  454. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/PIT192010023/players.json +0 -0
  455. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/PIT192010023/team_info.csv +0 -0
  456. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/PIT192010023/ump_info.csv +0 -0
  457. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SEA197805231/info.csv +0 -0
  458. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SEA197805231/linescore.csv +0 -0
  459. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SEA197805231/players.json +0 -0
  460. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SEA197805231/team_info.csv +0 -0
  461. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SEA197805231/ump_info.csv +0 -0
  462. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SEA201208150/info.csv +0 -0
  463. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SEA201208150/linescore.csv +0 -0
  464. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SEA201208150/players.json +0 -0
  465. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SEA201208150/team_info.csv +0 -0
  466. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SEA201208150/ump_info.csv +0 -0
  467. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SEA201804190/info.csv +0 -0
  468. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SEA201804190/linescore.csv +0 -0
  469. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SEA201804190/players.json +0 -0
  470. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SEA201804190/team_info.csv +0 -0
  471. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SEA201804190/ump_info.csv +0 -0
  472. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SEA201905270/info.csv +0 -0
  473. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SEA201905270/linescore.csv +0 -0
  474. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SEA201905270/players.json +0 -0
  475. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SEA201905270/team_info.csv +0 -0
  476. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SEA201905270/ump_info.csv +0 -0
  477. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SEA202210150/linescore.csv +0 -0
  478. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SEA202210150/players.json +0 -0
  479. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SEA202210150/team_info.csv +0 -0
  480. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SEA202210150/ump_info.csv +0 -0
  481. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SLN190710051/info.csv +0 -0
  482. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SLN190710051/linescore.csv +0 -0
  483. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SLN190710051/players.json +0 -0
  484. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SLN190710051/team_info.csv +0 -0
  485. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/original/SLN190710051/ump_info.csv +0 -0
  486. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/1961-allstar-game-1/info.csv +0 -0
  487. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/1961-allstar-game-1/linescore.csv +0 -0
  488. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/1961-allstar-game-1/team_info.csv +0 -0
  489. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/2025-allstar-game/info.csv +0 -0
  490. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/2025-allstar-game/linescore.csv +0 -0
  491. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/2025-allstar-game/team_info.csv +0 -0
  492. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/ANA202305090/info.csv +0 -0
  493. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/ANA202305090/linescore.csv +0 -0
  494. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/ANA202305090/team_info.csv +0 -0
  495. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/BOS201708250/info.csv +0 -0
  496. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/BOS201708250/linescore.csv +0 -0
  497. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/BOS201708250/team_info.csv +0 -0
  498. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/FLO199407290/info.csv +0 -0
  499. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/FLO199407290/linescore.csv +0 -0
  500. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/FLO199407290/team_info.csv +0 -0
  501. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/MLA190105301/info.csv +0 -0
  502. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/MLA190105301/linescore.csv +0 -0
  503. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/MLA190105301/team_info.csv +0 -0
  504. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/NYN200908230/info.csv +0 -0
  505. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/NYN200908230/linescore.csv +0 -0
  506. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/NYN200908230/team_info.csv +0 -0
  507. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/PHI202211020/linescore.csv +0 -0
  508. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/PHI202211020/team_info.csv +0 -0
  509. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/PIT192010023/info.csv +0 -0
  510. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/PIT192010023/linescore.csv +0 -0
  511. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/PIT192010023/team_info.csv +0 -0
  512. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/SEA197805231/info.csv +0 -0
  513. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/SEA197805231/linescore.csv +0 -0
  514. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/SEA197805231/team_info.csv +0 -0
  515. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/SEA201208150/info.csv +0 -0
  516. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/SEA201208150/linescore.csv +0 -0
  517. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/SEA201208150/team_info.csv +0 -0
  518. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/SEA201804190/info.csv +0 -0
  519. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/SEA201804190/linescore.csv +0 -0
  520. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/SEA201804190/team_info.csv +0 -0
  521. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/SEA201905270/info.csv +0 -0
  522. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/SEA201905270/linescore.csv +0 -0
  523. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/SEA201905270/team_info.csv +0 -0
  524. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/SEA202210150/linescore.csv +0 -0
  525. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/SEA202210150/team_info.csv +0 -0
  526. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/SLN190710051/info.csv +0 -0
  527. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/SLN190710051/linescore.csv +0 -0
  528. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/games/updated/SLN190710051/team_info.csv +0 -0
  529. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/aloumo01/bling.csv +0 -0
  530. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/aloumo01/pitching.csv +0 -0
  531. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/aloumo01/relatives.json +0 -0
  532. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/bendech01/bling.csv +0 -0
  533. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/bendech01/relatives.json +0 -0
  534. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/colli05/batting.csv +0 -0
  535. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/colli05/bling.csv +0 -0
  536. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/colli05/fielding.csv +0 -0
  537. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/colli05/info.csv +0 -0
  538. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/colli05/pitching.csv +0 -0
  539. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/colli05/relatives.json +0 -0
  540. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/cormirh01/batting.csv +0 -0
  541. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/cormirh01/bling.csv +0 -0
  542. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/cormirh01/relatives.json +0 -0
  543. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/gibsojo99/batting.csv +0 -0
  544. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/gibsojo99/bling.csv +0 -0
  545. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/gibsojo99/relatives.json +0 -0
  546. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/hallaro01/bling.csv +0 -0
  547. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/hallaro01/relatives.json +0 -0
  548. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/jacksre01/bling.csv +0 -0
  549. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/jacksre01/pitching.csv +0 -0
  550. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/jacksre01/relatives.json +0 -0
  551. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/kigerma01/batting.csv +0 -0
  552. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/kigerma01/bling.csv +0 -0
  553. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/kigerma01/fielding.csv +0 -0
  554. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/kigerma01/pitching.csv +0 -0
  555. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/kigerma01/relatives.json +0 -0
  556. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/pressry01/batting.csv +0 -0
  557. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/pressry01/bling.csv +0 -0
  558. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/pressry01/relatives.json +0 -0
  559. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/vogtst01/bling.csv +0 -0
  560. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/vogtst01/pitching.csv +0 -0
  561. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/original/vogtst01/relatives.json +0 -0
  562. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/updated/aloumo01/pitching.csv +0 -0
  563. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/updated/colli05/info.csv +0 -0
  564. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/updated/colli05/pitching.csv +0 -0
  565. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/updated/jacksre01/pitching.csv +0 -0
  566. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/updated/kigerma01/pitching.csv +0 -0
  567. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/players/updated/vogtst01/pitching.csv +0 -0
  568. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/BBB1924/batting.csv +0 -0
  569. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/BBB1924/players.json +0 -0
  570. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/BEG1939/batting.csv +0 -0
  571. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/BEG1939/fielding.csv +0 -0
  572. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/BEG1939/players.json +0 -0
  573. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/CHC2020/batting.csv +0 -0
  574. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/CHC2020/players.json +0 -0
  575. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/COT1932/batting.csv +0 -0
  576. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/COT1932/fielding.csv +0 -0
  577. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/COT1932/pitching.csv +0 -0
  578. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/COT1932/players.json +0 -0
  579. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/HOU2022/batting.csv +0 -0
  580. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/HOU2022/players.json +0 -0
  581. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/LAA2012/batting.csv +0 -0
  582. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/LAA2012/players.json +0 -0
  583. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/SEA2012/batting.csv +0 -0
  584. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/SEA2012/players.json +0 -0
  585. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/WSH1904/batting.csv +0 -0
  586. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/original/WSH1904/players.json +0 -0
  587. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/updated/BBB1924/batting.csv +0 -0
  588. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/updated/BEG1939/batting.csv +0 -0
  589. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/updated/BEG1939/fielding.csv +0 -0
  590. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/updated/CHC2020/batting.csv +0 -0
  591. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/updated/COT1932/batting.csv +0 -0
  592. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/updated/COT1932/fielding.csv +0 -0
  593. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/updated/COT1932/pitching.csv +0 -0
  594. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/updated/HOU2022/batting.csv +0 -0
  595. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/updated/LAA2012/batting.csv +0 -0
  596. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/updated/SEA2012/batting.csv +0 -0
  597. {brlib-0.3.0 → brlib-0.4.0}/tests/expected/teams/updated/WSH1904/batting.csv +0 -0
  598. {brlib-0.3.0 → brlib-0.4.0}/tests/test_all_players.py +0 -0
  599. {brlib-0.3.0 → brlib-0.4.0}/tests/test_game_set.py +0 -0
  600. {brlib-0.3.0 → brlib-0.4.0}/tests/test_player_set.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: brlib
3
- Version: 0.3.0
3
+ Version: 0.4.0
4
4
  Summary: A library for collecting baseball statistics from Baseball Reference
5
5
  Project-URL: Documentation, https://github.com/john-bieren/brlib/wiki
6
6
  Project-URL: GitHub, https://github.com/john-bieren/brlib
@@ -23,6 +23,7 @@ Classifier: Programming Language :: Python :: 3.11
23
23
  Classifier: Programming Language :: Python :: 3.12
24
24
  Classifier: Programming Language :: Python :: 3.13
25
25
  Classifier: Programming Language :: Python :: 3.14
26
+ Classifier: Programming Language :: Python :: Implementation :: CPython
26
27
  Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search
27
28
  Classifier: Topic :: Scientific/Engineering :: Information Analysis
28
29
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
@@ -34,9 +35,9 @@ Requires-Dist: pandas<3.0.0,>=2.2.0
34
35
  Requires-Dist: platformdirs<5.0.0,>=4.0.0
35
36
  Requires-Dist: tqdm<5.0.0,>=4.66.0
36
37
  Provides-Extra: dev
37
- Requires-Dist: black==26.1.0; extra == 'dev'
38
- Requires-Dist: isort==7.0.0; extra == 'dev'
39
- Requires-Dist: pytest>=7.0.0; extra == 'dev'
38
+ Requires-Dist: black==26.3.0; extra == 'dev'
39
+ Requires-Dist: isort==8.0.1; extra == 'dev'
40
+ Requires-Dist: pytest<10.0.0,>=7.0.0; extra == 'dev'
40
41
  Description-Content-Type: text/markdown
41
42
 
42
43
  # brlib
@@ -72,11 +73,9 @@ brlib can be installed using pip:
72
73
  pip install brlib
73
74
  ```
74
75
 
75
- or from this repo, in which case you'll want to install the development dependencies as well:
76
+ or by cloning this repo, in which case you'll want to install the development dependencies as well:
76
77
 
77
78
  ```
78
- git clone https://github.com/john-bieren/brlib.git
79
- cd brlib
80
79
  pip install -e .[dev]
81
80
  ```
82
81
 
@@ -31,11 +31,9 @@ brlib can be installed using pip:
31
31
  pip install brlib
32
32
  ```
33
33
 
34
- or from this repo, in which case you'll want to install the development dependencies as well:
34
+ or by cloning this repo, in which case you'll want to install the development dependencies as well:
35
35
 
36
36
  ```
37
- git clone https://github.com/john-bieren/brlib.git
38
- cd brlib
39
37
  pip install -e .[dev]
40
38
  ```
41
39
 
@@ -14,7 +14,7 @@ dependencies = [
14
14
  "lxml>=5.0.0,<7.0.0",
15
15
  "pandas>=2.2.0,<3.0.0",
16
16
  "platformdirs>=4.0.0,<5.0.0",
17
- "tqdm>=4.66.0,<5.0.0"
17
+ "tqdm>=4.66.0,<5.0.0",
18
18
  ]
19
19
  readme = "README.md"
20
20
  license = "MIT"
@@ -33,6 +33,7 @@ classifiers = [
33
33
  "Programming Language :: Python :: 3.12",
34
34
  "Programming Language :: Python :: 3.13",
35
35
  "Programming Language :: Python :: 3.14",
36
+ "Programming Language :: Python :: Implementation :: CPython",
36
37
  "Topic :: Internet :: WWW/HTTP :: Indexing/Search",
37
38
  "Topic :: Scientific/Engineering :: Information Analysis",
38
39
  "Topic :: Software Development :: Libraries :: Python Modules",
@@ -41,9 +42,9 @@ keywords = ["baseball reference", "baseball", "baseball stats", "mlb", "mlb stat
41
42
 
42
43
  [project.optional-dependencies]
43
44
  dev = [
44
- "black==26.1.0",
45
- "isort==7.0.0",
46
- "pytest>=7.0.0"
45
+ "black==26.3.0",
46
+ "isort==8.0.1",
47
+ "pytest>=7.0.0,<10.0.0",
47
48
  ]
48
49
 
49
50
  [project.urls]
@@ -67,3 +68,6 @@ target-version = ["py310", "py311", "py312", "py313", "py314"]
67
68
  profile = "black"
68
69
  line_length = 100
69
70
  known_first_party = ["brlib"]
71
+
72
+ [tool.uv]
73
+ package = true
@@ -0,0 +1,125 @@
1
+ #!/usr/bin/env python3
2
+
3
+ """
4
+ Refreshes the expected data for games, players, and teams to match their current outputs. This is
5
+ meant to automate the process of adapting to stat adjustments and other changes on Baseball
6
+ Reference. All changes should be reviewed to make sure that they accurately reflect changes to the
7
+ site, so as not to introduce errors into the test suite.
8
+ """
9
+
10
+ import json
11
+ from pathlib import Path
12
+
13
+ from tqdm import tqdm
14
+
15
+ import brlib as br
16
+
17
+
18
+ def main():
19
+ """Refreshes the expected data for games, players, and teams to match their current outputs."""
20
+ expected_dir = Path(__file__).parent.parent / "tests" / "expected"
21
+ br.options.add_no_hitters = False
22
+ br.options.update_team_names = False
23
+ br.options.update_venue_names = False
24
+
25
+ tqdm.write("Refreshing expected game data")
26
+ refresh_games(expected_dir / "games")
27
+
28
+ tqdm.write("Refreshing expected player data")
29
+ refresh_players(expected_dir / "players")
30
+
31
+ tqdm.write("Refreshing expected team data")
32
+ refresh_teams(expected_dir / "teams")
33
+
34
+
35
+ def refresh_games(games_dir: Path) -> None:
36
+ """Refreshes expected data for games in `games_dir`."""
37
+ ids_dir = games_dir / "original"
38
+ total = sum(1 for entry in ids_dir.iterdir() if entry.is_dir())
39
+ for game_dir in tqdm(ids_dir.iterdir(), total=total, unit="game"):
40
+ if not game_dir.is_dir():
41
+ continue
42
+
43
+ # refresh original data
44
+ game = br.Game(game_dir.name)
45
+ original_dir = games_dir / "original" / game_dir.name
46
+ game.info.to_csv(original_dir / "info.csv", index=False)
47
+ game.batting.to_csv(original_dir / "batting.csv", index=False)
48
+ game.pitching.to_csv(original_dir / "pitching.csv", index=False)
49
+ game.fielding.to_csv(original_dir / "fielding.csv", index=False)
50
+ game.team_info.to_csv(original_dir / "team_info.csv", index=False)
51
+ game.ump_info.to_csv(original_dir / "ump_info.csv", index=False)
52
+ game.linescore.to_csv(original_dir / "linescore.csv", index=False)
53
+ (original_dir / "players.json").write_text(json.dumps(game.players))
54
+ (original_dir / "teams.json").write_text(json.dumps(game.teams))
55
+
56
+ # refresh updated data
57
+ game.add_no_hitters()
58
+ game.update_team_names()
59
+ game.update_venue_names()
60
+ updated_dir = games_dir / "updated" / game_dir.name
61
+ game.info.to_csv(updated_dir / "info.csv", index=False)
62
+ game.batting.to_csv(updated_dir / "batting.csv", index=False)
63
+ game.pitching.to_csv(updated_dir / "pitching.csv", index=False)
64
+ game.fielding.to_csv(updated_dir / "fielding.csv", index=False)
65
+ game.team_info.to_csv(updated_dir / "team_info.csv", index=False)
66
+ game.linescore.to_csv(updated_dir / "linescore.csv", index=False)
67
+
68
+
69
+ def refresh_players(players_dir: Path) -> None:
70
+ """Refreshes expected data for players in `players_dir`."""
71
+ ids_dir = players_dir / "original"
72
+ total = sum(1 for entry in ids_dir.iterdir() if entry.is_dir())
73
+ for player_dir in tqdm(ids_dir.iterdir(), total=total, unit="player"):
74
+ if not player_dir.is_dir():
75
+ continue
76
+
77
+ # refresh original data
78
+ player = br.Player(player_dir.name)
79
+ original_dir = players_dir / "original" / player_dir.name
80
+ player.info.to_csv(original_dir / "info.csv", index=False)
81
+ player.bling.to_csv(original_dir / "bling.csv", index=False)
82
+ player.batting.to_csv(original_dir / "batting.csv", index=False)
83
+ player.pitching.to_csv(original_dir / "pitching.csv", index=False)
84
+ player.fielding.to_csv(original_dir / "fielding.csv", index=False)
85
+ (original_dir / "relatives.json").write_text(json.dumps(player.relatives))
86
+ (original_dir / "teams.json").write_text(json.dumps(player.teams))
87
+
88
+ # refresh updated data
89
+ player.add_no_hitters()
90
+ player.update_team_names()
91
+ updated_dir = players_dir / "updated" / player_dir.name
92
+ player.info.to_csv(updated_dir / "info.csv", index=False)
93
+ player.pitching.to_csv(updated_dir / "pitching.csv", index=False)
94
+
95
+
96
+ def refresh_teams(teams_dir: Path) -> None:
97
+ """Refreshes expected data for the teams in `teams_dir`."""
98
+ ids_dir = teams_dir / "original"
99
+ total = sum(1 for entry in ids_dir.iterdir() if entry.is_dir())
100
+ for team_dir in tqdm(ids_dir.iterdir(), total=total, unit="team"):
101
+ if not team_dir.is_dir():
102
+ continue
103
+
104
+ # refresh original data
105
+ team = br.Team(team_dir.name)
106
+ original_dir = teams_dir / "original" / team_dir.name
107
+ team.info.to_csv(original_dir / "info.csv", index=False)
108
+ team.batting.to_csv(original_dir / "batting.csv", index=False)
109
+ team.pitching.to_csv(original_dir / "pitching.csv", index=False)
110
+ team.fielding.to_csv(original_dir / "fielding.csv", index=False)
111
+ (original_dir / "players.json").write_text(json.dumps(team.players))
112
+
113
+ # refresh updated data
114
+ team.add_no_hitters()
115
+ team.update_team_names()
116
+ team.update_venue_names()
117
+ updated_dir = teams_dir / "updated" / team_dir.name
118
+ team.info.to_csv(updated_dir / "info.csv", index=False)
119
+ team.batting.to_csv(updated_dir / "batting.csv", index=False)
120
+ team.pitching.to_csv(updated_dir / "pitching.csv", index=False)
121
+ team.fielding.to_csv(updated_dir / "fielding.csv", index=False)
122
+
123
+
124
+ if __name__ == "__main__":
125
+ main()
@@ -8,6 +8,8 @@ presumably a clone of brlib's GitHub wiki repo. This is used to refresh the wiki
8
8
  import inspect
9
9
  from pathlib import Path
10
10
 
11
+ from tqdm import tqdm
12
+
11
13
  import brlib
12
14
 
13
15
 
@@ -16,12 +18,13 @@ def main() -> None:
16
18
  Copies public member docstrings into Markdown files in an adjacent "wiki" directory,
17
19
  presumably a clone of brlib's GitHub wiki repo. This is used to refresh the wiki's contents.
18
20
  """
21
+ tqdm.write("Refreshing wiki files")
19
22
  wiki_dir = Path(__file__).parent.parent / "wiki"
20
23
  public_members = {
21
24
  name: mem for name, mem in inspect.getmembers(brlib) if not name.startswith("_")
22
25
  }
23
26
 
24
- for member_name, member in public_members.items():
27
+ for member_name, member in tqdm(public_members.items(), unit="files"):
25
28
  if inspect.ismodule(member):
26
29
  continue
27
30
  file_path = wiki_dir / f"{member_name}.md"
@@ -40,7 +43,7 @@ def main() -> None:
40
43
  def clean_docstring(docstring: str) -> str:
41
44
  """Reformat whitespace in `docstring`."""
42
45
  # remove leading newline
43
- if docstring[0] == "\n":
46
+ if docstring.startswith("\n"):
44
47
  docstring = docstring[1:]
45
48
  return docstring
46
49
 
@@ -20,7 +20,7 @@ from .player_set import PlayerSet
20
20
  from .team import Team
21
21
  from .team_set import TeamSet
22
22
 
23
- __version__ = "0.3.0"
23
+ __version__ = "0.4.0"
24
24
 
25
25
  __all__ = [
26
26
  "all_players",
@@ -16,7 +16,8 @@ from .constants import (
16
16
  CURRENT_YEAR,
17
17
  CY_BASEBALL,
18
18
  FIRST_GAMES_YEAR,
19
- SEASON_START_DATE,
19
+ SEASON_START_DAY,
20
+ SEASON_START_MONTH,
20
21
  TEAM_ALIASES,
21
22
  )
22
23
  from .requests_manager import req_man
@@ -26,19 +27,35 @@ from .singleton import Singleton
26
27
  class AbbreviationsManager(Singleton):
27
28
  """
28
29
  A wrapper for a DataFrame which contains information on all historical team and
29
- franchise abbreviations used by Baseball Reference. Manages retrieval and caching of the data,
30
- loads data on import of brlib. Has methods for working with these abbreviations.
30
+ franchise abbreviations used by Baseball Reference. Has methods for working with these
31
+ abbreviations. Manages retrieval and caching of the data, loads data on import of brlib.
31
32
  """
32
33
 
33
34
  def __init__(self) -> None:
34
35
  self._cache_file = CACHE_DIR / "abv_data_v1.csv"
36
+ self._populated = False
37
+
35
38
  self.df = pd.DataFrame()
36
39
 
40
+ self.populate()
41
+
42
+ def reset(self) -> None:
43
+ """Re-initializes `AbbreviationsManager`, resulting in `self.df` being reloaded."""
44
+ self.__init__()
45
+
46
+ def populate(self) -> None:
47
+ """Populates `self.df` from cache or the web if it is not already populated."""
48
+ if self._populated:
49
+ return
50
+
37
51
  if self._has_valid_cache:
38
52
  self._load()
39
53
  else:
40
54
  self._get()
41
55
 
56
+ assert not self.df.empty
57
+ self._populated = True
58
+
42
59
  @property
43
60
  def _has_valid_cache(self) -> bool:
44
61
  """
@@ -51,7 +68,7 @@ class AbbreviationsManager(Singleton):
51
68
  last_save = os.path.getmtime(self._cache_file)
52
69
  last_save_time = datetime.fromtimestamp(last_save).astimezone(CACHE_TIMEZONE)
53
70
 
54
- cy_refresh_date = f"{CURRENT_YEAR}-{SEASON_START_DATE}"
71
+ cy_refresh_date = f"{CURRENT_YEAR}-{SEASON_START_MONTH}-{SEASON_START_DAY}"
55
72
  refresh_time = datetime.strptime(cy_refresh_date, "%Y-%m-%d").astimezone(CACHE_TIMEZONE)
56
73
 
57
74
  current_time = datetime.now(CACHE_TIMEZONE)
@@ -66,12 +83,11 @@ class AbbreviationsManager(Singleton):
66
83
  self.df.loc[self.df["Alias"].isna(), "Alias"] = ""
67
84
 
68
85
  def _get(self) -> None:
69
- """Gets abbreviations data from Baseball Reference."""
86
+ """Gets abbreviations data from Baseball Reference, save to cache."""
70
87
  write("brlib: gathering team abbreviations")
71
88
  page = req_man.get_page("/about/team_IDs.shtml")
72
89
  self._gather_abbreviations(page)
73
90
  self.df.to_csv(self._cache_file, index=False)
74
- self.df.rename({"Team ID": "Team", "Franchise ID": "Franchise"}, axis=1, inplace=True)
75
91
 
76
92
  def _gather_abbreviations(self, page: Response) -> None:
77
93
  """Scrapes team_IDs page and create `self.df`."""
@@ -92,7 +108,7 @@ class AbbreviationsManager(Singleton):
92
108
  if i == 0:
93
109
  record.append("BML")
94
110
  else:
95
- # noinspection PyTypeChecker
111
+ # noinspection PyTypeChecker TODO
96
112
  record.append(record[0] in BML_FRANCHISE_ABVS)
97
113
  records.append(record)
98
114
 
@@ -204,7 +220,8 @@ class AbbreviationsManager(Singleton):
204
220
  team_row = self._find_correct_teams(abbreviation, season, era_adjustment=False)
205
221
  if not team_row.empty:
206
222
  alias = team_row["Alias"].values[0]
207
- if alias != "":
223
+ # the Angels have used LAA in two stints, the first stint did not use an alias
224
+ if alias != "" and not (alias == "ANA" and season in range(1961, 1965)):
208
225
  return alias
209
226
  return abbreviation
210
227
 
@@ -223,7 +240,8 @@ class AbbreviationsManager(Singleton):
223
240
  alias_rows = self.df.loc[self.df["Alias"] == abbreviation]
224
241
  years_mask = (alias_rows["First Year"] <= season) & (alias_rows["Last Year"] >= season)
225
242
  correct_row = alias_rows.loc[years_mask]
226
- if correct_row.empty:
243
+ # the Angels have used LAA in two stints, the first stint did not use an alias
244
+ if correct_row.empty or (abbreviation == "ANA" and season in range(1961, 1965)):
227
245
  return abbreviation
228
246
  return correct_row["Team"].values[0]
229
247
 
@@ -26,41 +26,36 @@ NO_POSTSEASON_YEARS = {1901, 1902, 1904, 1994}
26
26
 
27
27
  # the day after (that's when the stats are posted) the expected earliest/latest possible game dates
28
28
  # these dates allow for games that are two days earlier/later than the most extreme past examples
29
- SEASON_START_DATE = "03-17"
30
- SEASON_END_DATE = "11-08"
29
+ SEASON_START_MONTH, SEASON_START_DAY = "03", "17"
30
+ SEASON_END_MONTH, SEASON_END_DAY = "11", "08"
31
31
 
32
32
  # determine if there's been baseball played in the current year
33
- SEASON_START_MONTH, SEASON_START_DAY = [int(s) for s in SEASON_START_DATE.split("-", maxsplit=1)]
34
- if (
35
- CURRENT_MONTH < SEASON_START_MONTH
36
- or CURRENT_MONTH == SEASON_START_MONTH
37
- and CURRENT_DAY < SEASON_START_DAY
38
- ):
39
- CY_BASEBALL = False
40
- else:
41
- CY_BASEBALL = True
42
-
33
+ CY_BASEBALL = (
34
+ CURRENT_MONTH > int(SEASON_START_MONTH)
35
+ or CURRENT_MONTH == int(SEASON_START_MONTH)
36
+ and CURRENT_DAY >= int(SEASON_START_DAY)
37
+ )
43
38
  # best safe guess at earliest plausible ASG date
44
- if CURRENT_YEAR in NO_ASG_YEARS:
45
- CY_ASG = False
46
- else:
47
- CY_ASG = CURRENT_MONTH > 7 or CURRENT_MONTH == 7 and CURRENT_DAY > 7
39
+ CY_ASG = CURRENT_YEAR not in NO_ASG_YEARS and (
40
+ CURRENT_MONTH > 7 or CURRENT_MONTH == 7 and CURRENT_DAY > 7
41
+ )
48
42
 
49
43
  # selected so that hour 0 lines up with when BR should have posted the previous day's results
50
44
  CACHE_TIMEZONE = pytz.timezone("US/Aleutian")
51
45
 
52
46
  # pre-compiled regular expressions
53
- MULTI_TEAM_REGEX = re.compile("^[1-9]TM$")
54
- SEASON_REGEX = re.compile("^[1-2][0-9]{3}$")
55
- SEASON_RANGE_REGEX = re.compile("^[1-2][0-9]{3}-[1-2][0-9]{3}$")
56
- GAME_DATE_REGEX = re.compile("^[0-9]{4}[0-1][0-9][0-3][0-9]$")
57
- DOUBLEHEADER_REGEX = re.compile("^[0-3]$")
58
- DATE_REGEX = re.compile("^[0-1]?[0-9][0-3][0-9]$")
59
- DATE_RANGE_REGEX = re.compile("^[0-1]?[0-9][0-3][0-9]-[0-1]?[0-9][0-3][0-9]$")
60
- PLAYER_ID_REGEX = re.compile("^[a-z.'_]{3,7}[0-9]{2}$")
47
+ MULTI_TEAM_REGEX = re.compile("[1-9]TM")
48
+ SEASON_REGEX = re.compile("[0-9]{4}")
49
+ SEASON_RANGE_REGEX = re.compile("[0-9]{4}-[0-9]{4}")
50
+ DATE_REGEX = re.compile("[0-1]?[0-9][0-3][0-9]")
51
+ DATE_RANGE_REGEX = re.compile("[0-1]?[0-9][0-3][0-9]-[0-1]?[0-9][0-3][0-9]")
52
+ GAME_ID_REGEX = re.compile("[A-Z1-4]{2,3}[0-9]{9}", re.IGNORECASE)
53
+ ASG_ID_REGEX = re.compile("[0-9]{4}-allstar-game(?P<doubleheader>-[12])?", re.IGNORECASE)
54
+ PLAYER_ID_REGEX = re.compile("[a-z.'_]{3,7}[0-9]{2}")
55
+ TEAM_ID_REGEX = re.compile("[A-Z1-4]{2,3}[0-9]{4}", re.IGNORECASE)
61
56
  SCHEDULE_TAG_REGEX = re.compile("^all_[0-9]")
62
57
  GAME_URL_REGEX = re.compile(
63
- r"https://www\.baseball-reference\.com/boxes/[A-Z1-2]{2,3}/[A-Z1-2]{2,3}[0-9]{4}[0-1][0-9][0-3][0-9][0-3]\.shtml"
58
+ r"https://www\.baseball-reference\.com/boxes/[A-Z1-4]{2,3}/[A-Z1-4]{2,3}[0-9]{4}[0-1][0-9][0-3][0-9][0-3]\.shtml"
64
59
  )
65
60
  ALLSTAR_GAME_URL_REGEX = re.compile(
66
61
  r"https://www\.baseball-reference\.com/allstar/[1-2][0-9]{3}-allstar-game-?[1-2]?\.shtml"
@@ -72,12 +67,16 @@ TEAM_URL_REGEX = re.compile(
72
67
  r"https://www\.baseball-reference\.com/teams/[A-Z1-4]{2,3}/[1-2][0-9]{3}\.shtml"
73
68
  )
74
69
  SB_ATTEMPT_REGEX = re.compile(
75
- r"^(?P<base>2nd base|3rd base|Home) (?:off|by) (?P<pitcher>\D+)/(?P<catcher>\D+)(?P<times>[0-9]?)$"
70
+ r"(?P<base>2nd base|3rd base|Home) (?:off|by) (?P<pitcher>\D+)/(?P<catcher>\D+)(?P<times>[0-9]?)"
76
71
  )
77
72
  PICKOFF_REGEX = re.compile(
78
- r"^(?P<base>1st base|2nd base|3rd base|Home) by (?P<pitcher>\D+)(?P<times>[0-9]?)$"
73
+ r"(?P<base>1st base|2nd base|3rd base|Home) by (?P<pitcher>\D+)(?P<times>[0-9]?)"
79
74
  )
80
75
 
76
+ # exponent used when calculating team Pythagorean W-L%
77
+ # see https://www.sports-reference.com/blog/baseball-reference-faqs/
78
+ PYTHAGOREAN_EXPONENT = 1.83
79
+
81
80
  # old names for teams (which have box scores) that didn't relocate
82
81
  TEAM_REPLACEMENTS = {
83
82
  "Boston Americans": "Boston Red Sox",
@@ -539,13 +538,8 @@ GAME_BATTING_COLS = (
539
538
  "2-Out RBI",
540
539
  "LOB",
541
540
  "RISP",
542
- "Team",
543
541
  "Team ID",
544
- "Opponent",
545
542
  "Opponent Team ID",
546
- "Team Score",
547
- "Result for Team",
548
- "Home/Away",
549
543
  "Game ID",
550
544
  )
551
545
 
@@ -595,13 +589,8 @@ GAME_PITCHING_COLS = (
595
589
  "NH",
596
590
  "PG",
597
591
  "CNH",
598
- "Team",
599
592
  "Team ID",
600
- "Opponent",
601
593
  "Opponent Team ID",
602
- "Team Score",
603
- "Result for Team",
604
- "Home/Away",
605
594
  "Game ID",
606
595
  )
607
596
 
@@ -628,13 +617,8 @@ GAME_FIELDING_COLS = (
628
617
  "1B Pick",
629
618
  "2B Pick",
630
619
  "3B Pick",
631
- "Team",
632
620
  "Team ID",
633
- "Opponent",
634
621
  "Opponent Team ID",
635
- "Team Score",
636
- "Result for Team",
637
- "Home/Away",
638
622
  "Game ID",
639
623
  )
640
624
 
@@ -943,6 +927,7 @@ TEAM_INFO_COLS = (
943
927
  "Wins",
944
928
  "Losses",
945
929
  "Ties",
930
+ "W-L%",
946
931
  "Division Finish",
947
932
  "Division",
948
933
  "Postseason Finish",
@@ -960,6 +945,7 @@ TEAM_INFO_COLS = (
960
945
  "One-Year Pitching Park Factor",
961
946
  "Pythagorean Wins",
962
947
  "Pythagorean Losses",
948
+ "Pythagorean W-L%",
963
949
  "Runs",
964
950
  "Runs Allowed",
965
951
  "Team Gold Glove",