sportsball 0.3.32__tar.gz → 0.3.34__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 (214) hide show
  1. {sportsball-0.3.32/sportsball.egg-info → sportsball-0.3.34}/PKG-INFO +1 -1
  2. {sportsball-0.3.32 → sportsball-0.3.34}/setup.py +1 -1
  3. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/__init__.py +1 -1
  4. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/address_model.py +3 -1
  5. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/afl/afltables/afl_afltables_game_model.py +1 -1
  6. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/afl/afltables/afl_afltables_league_model.py +18 -15
  7. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/afl/combined/afl_combined_league_model.py +20 -0
  8. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/aussportsbetting/aussportsbetting_game_model.py +1 -1
  9. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/combined/combined_game_model.py +1 -1
  10. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/combined/combined_league_model.py +3 -2
  11. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/espn/espn_game_model.py +1 -1
  12. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/game_model.py +1 -2
  13. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/google/google_address_model.py +8226 -4708
  14. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/nba/combined/nba_combined_league_model.py +129 -1
  15. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/nba/nba/nba_nba_game_model.py +1 -1
  16. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/nba/nba/nba_nba_team_model.py +6 -1
  17. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/oddsportal/decrypt.py +22 -3
  18. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/oddsportal/oddsportal_game_model.py +15 -8
  19. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/oddsportal/oddsportal_league_model.py +6 -2
  20. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/oddsportal/oddsportal_team_model.py +29 -21
  21. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/sportsdb/sportsdb_game_model.py +1 -1
  22. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/sportsreference/sportsreference_game_model.py +154 -35
  23. sportsball-0.3.34/sportsball/data/sportsreference/sportsreference_league_model.py +121 -0
  24. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/sportsreference/sportsreference_player_model.py +24 -2
  25. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/sportsreference/sportsreference_team_model.py +56 -11
  26. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/sportsreference/sportsreference_venue_model.py +3 -3
  27. sportsball-0.3.34/sportsball/data/wikipedia/wikipedia_venue_model.py +107 -0
  28. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/proxy_session.py +11 -6
  29. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/session.py +1 -1
  30. {sportsball-0.3.32 → sportsball-0.3.34/sportsball.egg-info}/PKG-INFO +1 -1
  31. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball.egg-info/SOURCES.txt +1 -0
  32. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/afl/afltables/afl_afltables_league_model_test.py +9 -1
  33. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/combined/combined_game_model_test.py +1 -1
  34. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/game_model_test.py +1 -1
  35. sportsball-0.3.34/tests/data/oddsportal/decrypt_test.py +28 -0
  36. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/oddsportal/oddsportal_game_model_test.py +2 -2
  37. sportsball-0.3.34/tests/data/sportsreference/sportsreference_game_model_test.py +748 -0
  38. sportsball-0.3.34/tests/data/sportsreference/sportsreference_league_model_test.py +151 -0
  39. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/sportsreference/sportsreference_team_model_test.py +60 -0
  40. sportsball-0.3.32/sportsball/data/sportsreference/sportsreference_league_model.py +0 -84
  41. sportsball-0.3.32/sportsball/data/wikipedia/wikipedia_venue_model.py +0 -39
  42. sportsball-0.3.32/tests/data/sportsreference/sportsreference_game_model_test.py +0 -97
  43. sportsball-0.3.32/tests/data/sportsreference/sportsreference_league_model_test.py +0 -16
  44. {sportsball-0.3.32 → sportsball-0.3.34}/LICENSE +0 -0
  45. {sportsball-0.3.32 → sportsball-0.3.34}/MANIFEST.in +0 -0
  46. {sportsball-0.3.32 → sportsball-0.3.34}/README.md +0 -0
  47. {sportsball-0.3.32 → sportsball-0.3.34}/requirements.txt +0 -0
  48. {sportsball-0.3.32 → sportsball-0.3.34}/setup.cfg +0 -0
  49. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/__main__.py +0 -0
  50. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/args.py +0 -0
  51. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/cache.py +0 -0
  52. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/__init__.py +0 -0
  53. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/afl/__init__.py +0 -0
  54. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/afl/afltables/__init__.py +0 -0
  55. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/afl/afltables/afl_afltables_player_model.py +0 -0
  56. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/afl/afltables/afl_afltables_team_model.py +0 -0
  57. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/afl/afltables/afl_afltables_venue_model.py +0 -0
  58. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/afl/aussportsbetting/__init__.py +0 -0
  59. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/afl/aussportsbetting/afl_aussportsbetting_league_model.py +0 -0
  60. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/afl/combined/__init__.py +0 -0
  61. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/afl/espn/__init__.py +0 -0
  62. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/afl/espn/afl_espn_league_model.py +0 -0
  63. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/afl/oddsportal/__init__.py +0 -0
  64. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/afl/oddsportal/afl_oddsportal_league_model.py +0 -0
  65. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/aussportsbetting/__init__.py +0 -0
  66. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/aussportsbetting/aussportsbetting_bookie_model.py +0 -0
  67. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/aussportsbetting/aussportsbetting_league_model.py +0 -0
  68. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/aussportsbetting/aussportsbetting_odds_model.py +0 -0
  69. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/aussportsbetting/aussportsbetting_team_model.py +0 -0
  70. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/aussportsbetting/aussportsbetting_venue_model.py +0 -0
  71. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/bookie_model.py +0 -0
  72. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/combined/__init__.py +0 -0
  73. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/combined/combined_address_model.py +0 -0
  74. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/combined/combined_player_model.py +0 -0
  75. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/combined/combined_team_model.py +0 -0
  76. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/combined/combined_venue_model.py +0 -0
  77. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/combined/combined_weather_model.py +0 -0
  78. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/espn/__init__.py +0 -0
  79. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/espn/espn_bookie_model.py +0 -0
  80. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/espn/espn_league_model.py +0 -0
  81. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/espn/espn_odds_model.py +0 -0
  82. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/espn/espn_player_model.py +0 -0
  83. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/espn/espn_team_model.py +0 -0
  84. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/espn/espn_venue_model.py +0 -0
  85. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/field_type.py +0 -0
  86. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/google/__init__.py +0 -0
  87. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/google/google_news_model.py +0 -0
  88. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/league.py +0 -0
  89. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/league_model.py +0 -0
  90. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/model.py +0 -0
  91. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/nba/__init__.py +0 -0
  92. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/nba/combined/__init__.py +0 -0
  93. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/nba/espn/__init__.py +0 -0
  94. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/nba/espn/nba_espn_league_model.py +0 -0
  95. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/nba/nba/__init__.py +0 -0
  96. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/nba/nba/nba_nba_league_model.py +0 -0
  97. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/nba/nba/nba_nba_player_model.py +0 -0
  98. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/nba/oddsportal/__init__.py +0 -0
  99. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/nba/oddsportal/nba_oddsportal_league_model.py +0 -0
  100. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/nba/sportsdb/__init__.py +0 -0
  101. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/nba/sportsdb/nba_sportsdb_league_model.py +0 -0
  102. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/nba/sportsreference/__init__.py +0 -0
  103. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/nba/sportsreference/nba_sportsreference_league_model.py +0 -0
  104. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/ncaab/__init__.py +0 -0
  105. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/ncaab/combined/__init__.py +0 -0
  106. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/ncaab/combined/ncaab_combined_league_model.py +0 -0
  107. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/ncaab/espn/__init__.py +0 -0
  108. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/ncaab/espn/ncaab_espn_league_model.py +0 -0
  109. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/ncaab/oddsportal/__init__.py +0 -0
  110. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/ncaab/oddsportal/ncaab_oddsportal_league_model.py +0 -0
  111. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/ncaab/sportsreference/__init__.py +0 -0
  112. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/ncaab/sportsreference/ncaab_sportsreference_league_model.py +0 -0
  113. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/ncaaf/__init__.py +0 -0
  114. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/ncaaf/combined/__init__.py +0 -0
  115. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/ncaaf/combined/ncaaf_combined_league_model.py +0 -0
  116. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/ncaaf/espn/__init__.py +0 -0
  117. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/ncaaf/espn/ncaaf_espn_league_model.py +0 -0
  118. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/ncaaf/oddsportal/__init__.py +0 -0
  119. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/ncaaf/oddsportal/ncaaf_oddsportal_league_model.py +0 -0
  120. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/news_model.py +0 -0
  121. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/nfl/__init__.py +0 -0
  122. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/nfl/aussportsbetting/__init__.py +0 -0
  123. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/nfl/aussportsbetting/nfl_aussportsbetting_league_model.py +0 -0
  124. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/nfl/combined/__init__.py +0 -0
  125. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/nfl/combined/nfl_combined_league_model.py +0 -0
  126. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/nfl/espn/__init__.py +0 -0
  127. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/nfl/espn/nfl_espn_league_model.py +0 -0
  128. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/nfl/oddsportal/__init__.py +0 -0
  129. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/nfl/oddsportal/nfl_oddsportal_league_model.py +0 -0
  130. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/nfl/sportsdb/__init__.py +0 -0
  131. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/nfl/sportsdb/nfl_sportsdb_league_model.py +0 -0
  132. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/odds_model.py +0 -0
  133. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/oddsportal/__init__.py +0 -0
  134. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/oddsportal/oddsportal_bookie_model.py +0 -0
  135. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/oddsportal/oddsportal_odds_model.py +0 -0
  136. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/oddsportal/oddsportal_venue_model.py +0 -0
  137. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/player_model.py +0 -0
  138. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/season_type.py +0 -0
  139. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/social_model.py +0 -0
  140. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/sportsdb/__init__.py +0 -0
  141. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/sportsdb/sportsdb_league_model.py +0 -0
  142. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/sportsdb/sportsdb_team_model.py +0 -0
  143. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/sportsdb/sportsdb_venue_model.py +0 -0
  144. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/sportsreference/__init__.py +0 -0
  145. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/team_model.py +0 -0
  146. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/venue_model.py +0 -0
  147. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/weather/__init__.py +0 -0
  148. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/weather/gribstream/__init__.py +0 -0
  149. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/weather/gribstream/gribstream_weather_model.py +0 -0
  150. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/weather/multi_weather_model.py +0 -0
  151. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/weather/openmeteo/__init__.py +0 -0
  152. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/weather/openmeteo/openmeteo_weather_model.py +0 -0
  153. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/weather_model.py +0 -0
  154. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/wikipedia/__init__.py +0 -0
  155. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/x/__init__.py +0 -0
  156. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/data/x/x_social_model.py +0 -0
  157. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/logger.py +0 -0
  158. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/loglevel.py +0 -0
  159. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/sportsball.py +0 -0
  160. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/vendor/__init__.py +0 -0
  161. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball/vendor/pygooglenews/__init__.py +0 -0
  162. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball.egg-info/dependency_links.txt +0 -0
  163. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball.egg-info/entry_points.txt +0 -0
  164. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball.egg-info/not-zip-safe +0 -0
  165. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball.egg-info/requires.txt +0 -0
  166. {sportsball-0.3.32 → sportsball-0.3.34}/sportsball.egg-info/top_level.txt +0 -0
  167. {sportsball-0.3.32 → sportsball-0.3.34}/tests/__init__.py +0 -0
  168. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/__init__.py +0 -0
  169. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/afl/__init__.py +0 -0
  170. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/afl/afltables/__init__.py +0 -0
  171. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/afl/afltables/afl_afltables_player_model_test.py +0 -0
  172. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/aussportsbetting/__init__.py +0 -0
  173. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/aussportsbetting/aussportsbetting_game_model_test.py +0 -0
  174. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/combined/__init__.py +0 -0
  175. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/combined/combined_player_model_test.py +0 -0
  176. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/espn/__init__.py +0 -0
  177. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/espn/espn_game_model_test.py +0 -0
  178. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/espn/espn_player_model_test.py +0 -0
  179. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/google/__init__.py +0 -0
  180. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/google/google_address_model_test.py +0 -0
  181. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/google/google_news_model_test.py +0 -0
  182. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/nba/__init__.py +0 -0
  183. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/nba/nba/__init__.py +0 -0
  184. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/nba/nba/nba_nba_game_model_test.py +0 -0
  185. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/nba/nba/nba_nba_league_model_test.py +0 -0
  186. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/nba/nba/nba_nba_player_model_test.py +0 -0
  187. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/nba/nba/nba_nba_team_model_test.py +0 -0
  188. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/nba/sportsdb/__init__.py +0 -0
  189. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/nba/sportsdb/nba_sportsdb_league_model_test.py +0 -0
  190. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/nba/sportsreference/__init__.py +0 -0
  191. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/nba/sportsreference/nba_sportsreference_league_model_test.py +0 -0
  192. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/ncaab/__init__.py +0 -0
  193. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/ncaab/sportsreference/__init__.py +0 -0
  194. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/ncaab/sportsreference/ncaab_sportsreference_league_model_test.py +0 -0
  195. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/nfl/__init__.py +0 -0
  196. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/nfl/sportsdb/__init__.py +0 -0
  197. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/nfl/sportsdb/nfl_sportsdb_league_model_test.py +0 -0
  198. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/oddsportal/__init__.py +0 -0
  199. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/oddsportal/oddsportal_league_model_test.py +0 -0
  200. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/player_model_test.py +0 -0
  201. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/social_model_test.py +0 -0
  202. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/sportsdb/__init__.py +0 -0
  203. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/sportsdb/sportsdb_game_model_test.py +0 -0
  204. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/sportsdb/sportsdb_league_model_test.py +0 -0
  205. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/sportsdb/sportsdb_team_model_test.py +0 -0
  206. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/sportsdb/sportsdb_venue_model_test.py +0 -0
  207. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/sportsreference/__init__.py +0 -0
  208. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/sportsreference/sportsreference_player_model_test.py +0 -0
  209. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/sportsreference/sportsreference_venue_model_test.py +0 -0
  210. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/team_model_test.py +0 -0
  211. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/x/__init__.py +0 -0
  212. {sportsball-0.3.32 → sportsball-0.3.34}/tests/data/x/x_social_model_test.py +0 -0
  213. {sportsball-0.3.32 → sportsball-0.3.34}/tests/proxy_session_test.py +0 -0
  214. {sportsball-0.3.32 → sportsball-0.3.34}/tests/sportsball_test.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: sportsball
3
- Version: 0.3.32
3
+ Version: 0.3.34
4
4
  Summary: A library for pulling in and normalising sports stats.
5
5
  Home-page: https://github.com/8W9aG/sportsball
6
6
  Author: Will Sackfield
@@ -26,7 +26,7 @@ def install_requires() -> typing.List[str]:
26
26
 
27
27
  setup(
28
28
  name='sportsball',
29
- version='0.3.32',
29
+ version='0.3.34',
30
30
  description='A library for pulling in and normalising sports stats.',
31
31
  long_description=long_description,
32
32
  long_description_content_type='text/markdown',
@@ -1,3 +1,3 @@
1
1
  """The main module for sportsball."""
2
2
 
3
- __VERSION__ = "0.3.32"
3
+ __VERSION__ = "0.3.34"
@@ -11,7 +11,9 @@ class AddressModel(BaseModel):
11
11
 
12
12
  city: str = Field(..., json_schema_extra={TYPE_KEY: FieldType.CATEGORICAL})
13
13
  state: str = Field(..., json_schema_extra={TYPE_KEY: FieldType.CATEGORICAL})
14
- zipcode: str = Field(..., json_schema_extra={TYPE_KEY: FieldType.CATEGORICAL})
14
+ zipcode: str | None = Field(
15
+ ..., json_schema_extra={TYPE_KEY: FieldType.CATEGORICAL}
16
+ )
15
17
  latitude: float | None
16
18
  longitude: float | None
17
19
  housenumber: str | None = Field(
@@ -218,7 +218,7 @@ def _create_afl_afltables_game_model(
218
218
  ],
219
219
  end_dt=end_dt,
220
220
  attendance=attendance,
221
- league=league,
221
+ league=str(league),
222
222
  year=season_year,
223
223
  season_type=season_type,
224
224
  postponed=None,
@@ -22,6 +22,23 @@ from .afl_afltables_game_model import create_afl_afltables_game_model
22
22
  _SEASON_URL = "https://afltables.com/afl/seas/season_idx.html"
23
23
 
24
24
 
25
+ def _find_dt(td_text: str, season_url: str) -> datetime.datetime:
26
+ cleaned_text = (
27
+ td_text.split("Venue:")[0].split("Att:")[0].strip().split("(")[0].strip()
28
+ )
29
+ cleaned_text = " ".join(cleaned_text.split()[-3:])
30
+ try:
31
+ return parser.parse(cleaned_text)
32
+ except parser._parser.ParserError: # type: ignore
33
+ # Handle text like "Richmond  Thu 13-Mar-2025 Venue: M.C.G."
34
+ cleaned_text = cleaned_text.split()[-1]
35
+ try:
36
+ return parser.parse(cleaned_text)
37
+ except parser._parser.ParserError as exc: # type: ignore
38
+ logging.error("Failed to parse date in season URL: %s", season_url)
39
+ raise exc
40
+
41
+
25
42
  class AFLAFLTablesLeagueModel(LeagueModel):
26
43
  """AFL AFLTables implementation of the league model."""
27
44
 
@@ -60,21 +77,7 @@ class AFLAFLTablesLeagueModel(LeagueModel):
60
77
  for td in table.find_all("td"):
61
78
  td_text = td.get_text().strip()
62
79
  if "Venue:" in td_text:
63
- cleaned_text = (
64
- td_text.split("Venue:")[0]
65
- .split("Att:")[0]
66
- .strip()
67
- .split("(")[0]
68
- .strip()
69
- )
70
- cleaned_text = " ".join(cleaned_text.split()[-3:])
71
- try:
72
- current_dt = parser.parse(cleaned_text)
73
- except parser._parser.ParserError as exc: # type: ignore
74
- logging.error(
75
- "Failed to parse date in season URL: %s", season_url
76
- )
77
- raise exc
80
+ current_dt = _find_dt(td_text, season_url)
78
81
  for a in table.find_all("a", href=True):
79
82
  if a.get_text().strip().lower() == "match stats":
80
83
  url = urllib.parse.urljoin(season_url, a.get("href"))
@@ -138,6 +138,11 @@ BLACKTOWN = "blacktown"
138
138
  RIVERWAY = "riverway"
139
139
  NORWOOD = "norwood"
140
140
  SUMMIT = "summit"
141
+ ANGEL_STADIUM = "Angel Stadium of Anaheim"
142
+ THUNDERDOME_STADIUM = "Thunderdome Stadium"
143
+ SPOTLAND_STADIUM = "Spotland Stadium"
144
+ GIANTS_STADIUM = "Giants Stadium"
145
+ TIPOS_ARENA = "Ondrej Nepela Arena"
141
146
  AFL_VENUE_IDENTITY_MAP = {
142
147
  "brunswick_st": BRUNSWICK_ST,
143
148
  "victoria_park": VICTORIA_PARK,
@@ -189,6 +194,7 @@ AFL_VENUE_IDENTITY_MAP = {
189
194
  "riverway": RIVERWAY,
190
195
  "norwood": NORWOOD,
191
196
  "summit": SUMMIT,
197
+ # Aus Sports Betting
192
198
  "MCG": MCG,
193
199
  "SCG": SCG,
194
200
  "ENGIE Stadium": STADIUM_AUSTRALIA,
@@ -217,6 +223,20 @@ AFL_VENUE_IDENTITY_MAP = {
217
223
  "Blacktown Park": BLACKTOWN,
218
224
  # OddsPortal
219
225
  "Melbourne Cricket Ground": MCG,
226
+ "Angel Stadium of Anaheim": ANGEL_STADIUM,
227
+ "The Gabba": GABBA,
228
+ "Sydney Cricket Ground": SCG,
229
+ "Subiaco Oval": SUBIACO,
230
+ "Thunderdome Stadium": THUNDERDOME_STADIUM,
231
+ "University of Tasmania Stadium": YORK_PARK,
232
+ "Spotland Stadium": SPOTLAND_STADIUM,
233
+ "Engie Stadium": STADIUM_AUSTRALIA,
234
+ "Cazaly's Stadium": CAZALYS_STADIUM,
235
+ "Jiangwan Stadium": JIANGWAN,
236
+ "TIO Traeger Park": TRAEGER,
237
+ "Marrara Oval": MARRARA_OVAL,
238
+ "Giants Stadium": GIANTS_STADIUM,
239
+ "Ondrej Nepela Arena": TIPOS_ARENA,
220
240
  }
221
241
 
222
242
 
@@ -43,7 +43,7 @@ def _create_aussportsbetting_game_model(
43
43
  teams=[home_team_model, away_team_model], # pyright: ignore
44
44
  end_dt=None,
45
45
  attendance=None,
46
- league=league,
46
+ league=str(league),
47
47
  year=None,
48
48
  season_type=None,
49
49
  postponed=None,
@@ -112,7 +112,7 @@ def create_combined_game_model(
112
112
  teams=full_team_models,
113
113
  end_dt=end_dt,
114
114
  attendance=attendance,
115
- league=game_models[0].league,
115
+ league=str(game_models[0].league),
116
116
  year=year,
117
117
  season_type=season_type,
118
118
  postponed=postponed,
@@ -3,6 +3,7 @@
3
3
  # pylint: disable=raise-missing-from
4
4
  import logging
5
5
  import multiprocessing
6
+ import sys
6
7
  import traceback
7
8
  from multiprocessing import Pool
8
9
  from typing import Any, Iterator
@@ -61,8 +62,8 @@ class CombinedLeagueModel(LeagueModel):
61
62
  with Pool(min(multiprocessing.cpu_count(), len(self._league_models))) as p:
62
63
  # We want to terminate immediately if any of our runners runs into trouble.
63
64
  def _error_callback(exc: BaseException) -> None:
64
- p.terminate()
65
- raise ValueError(str(exc))
65
+ logging.error(str(exc))
66
+ sys.exit(1)
66
67
 
67
68
  results = [
68
69
  p.apply_async(
@@ -140,7 +140,7 @@ def _create_espn_game_model(
140
140
  teams=teams,
141
141
  end_dt=end_dt,
142
142
  attendance=attendance,
143
- league=league,
143
+ league=str(league),
144
144
  year=year,
145
145
  season_type=season_type,
146
146
  postponed=None,
@@ -7,7 +7,6 @@ import pytz
7
7
  from pydantic import BaseModel, Field
8
8
 
9
9
  from .field_type import TYPE_KEY, FieldType
10
- from .league import League
11
10
  from .season_type import SeasonType
12
11
  from .team_model import TeamModel
13
12
  from .venue_model import VenueModel
@@ -54,7 +53,7 @@ class GameModel(BaseModel):
54
53
  ..., json_schema_extra={TYPE_KEY: FieldType.LOOKAHEAD}, alias=END_DT_COLUMN
55
54
  )
56
55
  attendance: int | None = Field(..., alias=GAME_ATTENDANCE_COLUMN)
57
- league: League = Field(..., alias=LEAGUE_COLUMN)
56
+ league: str = Field(..., alias=LEAGUE_COLUMN)
58
57
  year: int | None
59
58
  season_type: SeasonType | None
60
59
  postponed: bool | None = Field(