sportsball 0.3.25__tar.gz → 0.3.27__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 (207) hide show
  1. {sportsball-0.3.25/sportsball.egg-info → sportsball-0.3.27}/PKG-INFO +1 -1
  2. {sportsball-0.3.25 → sportsball-0.3.27}/setup.py +1 -1
  3. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/__init__.py +1 -1
  4. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/afl/afltables/afl_afltables_league_model.py +4 -2
  5. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/afl/aussportsbetting/afl_aussportsbetting_league_model.py +4 -2
  6. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/afl/combined/afl_combined_league_model.py +3 -3
  7. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/afl/espn/afl_espn_league_model.py +4 -2
  8. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/afl/oddsportal/afl_oddsportal_league_model.py +4 -2
  9. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/aussportsbetting/aussportsbetting_league_model.py +8 -3
  10. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/espn/espn_league_model.py +7 -3
  11. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/google/google_address_model.py +290 -90
  12. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/league_model.py +7 -1
  13. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/nba/combined/nba_combined_league_model.py +6 -4
  14. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/nba/espn/nba_espn_league_model.py +4 -2
  15. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/nba/nba/nba_nba_league_model.py +5 -3
  16. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/nba/oddsportal/nba_oddsportal_league_model.py +4 -2
  17. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/nba/sportsdb/nba_sportsdb_league_model.py +4 -2
  18. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/nba/sportsreference/nba_sportsreference_league_model.py +7 -2
  19. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/ncaab/espn/ncaab_espn_league_model.py +4 -2
  20. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/ncaab/oddsportal/ncaab_oddsportal_league_model.py +4 -2
  21. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/ncaab/sportsreference/ncaab_sportsreference_league_model.py +7 -2
  22. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/ncaaf/combined/ncaaf_combined_league_model.py +2 -2
  23. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/ncaaf/espn/ncaaf_espn_league_model.py +4 -2
  24. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/ncaaf/oddsportal/ncaaf_oddsportal_league_model.py +4 -2
  25. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/nfl/aussportsbetting/nfl_aussportsbetting_league_model.py +4 -2
  26. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/nfl/combined/nfl_combined_league_model.py +5 -3
  27. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/nfl/espn/nfl_espn_league_model.py +4 -2
  28. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/nfl/oddsportal/nfl_oddsportal_league_model.py +4 -2
  29. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/nfl/sportsdb/nfl_sportsdb_league_model.py +4 -2
  30. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/oddsportal/oddsportal_game_model.py +12 -8
  31. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/oddsportal/oddsportal_league_model.py +47 -14
  32. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/sportsdb/sportsdb_league_model.py +7 -3
  33. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/sportsreference/sportsreference_league_model.py +7 -3
  34. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/proxy_session.py +11 -2
  35. {sportsball-0.3.25 → sportsball-0.3.27/sportsball.egg-info}/PKG-INFO +1 -1
  36. {sportsball-0.3.25 → sportsball-0.3.27}/LICENSE +0 -0
  37. {sportsball-0.3.25 → sportsball-0.3.27}/MANIFEST.in +0 -0
  38. {sportsball-0.3.25 → sportsball-0.3.27}/README.md +0 -0
  39. {sportsball-0.3.25 → sportsball-0.3.27}/requirements.txt +0 -0
  40. {sportsball-0.3.25 → sportsball-0.3.27}/setup.cfg +0 -0
  41. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/__main__.py +0 -0
  42. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/args.py +0 -0
  43. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/cache.py +0 -0
  44. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/__init__.py +0 -0
  45. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/address_model.py +0 -0
  46. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/afl/__init__.py +0 -0
  47. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/afl/afltables/__init__.py +0 -0
  48. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/afl/afltables/afl_afltables_game_model.py +0 -0
  49. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/afl/afltables/afl_afltables_player_model.py +0 -0
  50. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/afl/afltables/afl_afltables_team_model.py +0 -0
  51. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/afl/afltables/afl_afltables_venue_model.py +0 -0
  52. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/afl/aussportsbetting/__init__.py +0 -0
  53. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/afl/combined/__init__.py +0 -0
  54. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/afl/espn/__init__.py +0 -0
  55. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/afl/oddsportal/__init__.py +0 -0
  56. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/aussportsbetting/__init__.py +0 -0
  57. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/aussportsbetting/aussportsbetting_bookie_model.py +0 -0
  58. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/aussportsbetting/aussportsbetting_game_model.py +0 -0
  59. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/aussportsbetting/aussportsbetting_odds_model.py +0 -0
  60. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/aussportsbetting/aussportsbetting_team_model.py +0 -0
  61. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/aussportsbetting/aussportsbetting_venue_model.py +0 -0
  62. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/bookie_model.py +0 -0
  63. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/combined/__init__.py +0 -0
  64. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/combined/combined_address_model.py +0 -0
  65. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/combined/combined_game_model.py +0 -0
  66. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/combined/combined_league_model.py +0 -0
  67. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/combined/combined_player_model.py +0 -0
  68. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/combined/combined_team_model.py +0 -0
  69. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/combined/combined_venue_model.py +0 -0
  70. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/combined/combined_weather_model.py +0 -0
  71. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/espn/__init__.py +0 -0
  72. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/espn/espn_bookie_model.py +0 -0
  73. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/espn/espn_game_model.py +0 -0
  74. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/espn/espn_odds_model.py +0 -0
  75. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/espn/espn_player_model.py +0 -0
  76. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/espn/espn_team_model.py +0 -0
  77. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/espn/espn_venue_model.py +0 -0
  78. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/field_type.py +0 -0
  79. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/game_model.py +0 -0
  80. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/google/__init__.py +0 -0
  81. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/google/google_news_model.py +0 -0
  82. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/league.py +0 -0
  83. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/model.py +0 -0
  84. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/nba/__init__.py +0 -0
  85. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/nba/combined/__init__.py +0 -0
  86. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/nba/espn/__init__.py +0 -0
  87. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/nba/nba/__init__.py +0 -0
  88. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/nba/nba/nba_nba_game_model.py +0 -0
  89. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/nba/nba/nba_nba_player_model.py +0 -0
  90. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/nba/nba/nba_nba_team_model.py +0 -0
  91. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/nba/oddsportal/__init__.py +0 -0
  92. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/nba/sportsdb/__init__.py +0 -0
  93. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/nba/sportsreference/__init__.py +0 -0
  94. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/ncaab/__init__.py +0 -0
  95. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/ncaab/combined/__init__.py +0 -0
  96. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/ncaab/combined/ncaab_combined_league_model.py +0 -0
  97. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/ncaab/espn/__init__.py +0 -0
  98. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/ncaab/oddsportal/__init__.py +0 -0
  99. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/ncaab/sportsreference/__init__.py +0 -0
  100. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/ncaaf/__init__.py +0 -0
  101. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/ncaaf/combined/__init__.py +0 -0
  102. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/ncaaf/espn/__init__.py +0 -0
  103. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/ncaaf/oddsportal/__init__.py +0 -0
  104. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/news_model.py +0 -0
  105. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/nfl/__init__.py +0 -0
  106. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/nfl/aussportsbetting/__init__.py +0 -0
  107. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/nfl/combined/__init__.py +0 -0
  108. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/nfl/espn/__init__.py +0 -0
  109. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/nfl/oddsportal/__init__.py +0 -0
  110. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/nfl/sportsdb/__init__.py +0 -0
  111. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/odds_model.py +0 -0
  112. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/oddsportal/__init__.py +0 -0
  113. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/oddsportal/oddsportal_bookie_model.py +0 -0
  114. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/oddsportal/oddsportal_odds_model.py +0 -0
  115. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/oddsportal/oddsportal_team_model.py +0 -0
  116. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/oddsportal/oddsportal_venue_model.py +0 -0
  117. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/player_model.py +0 -0
  118. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/season_type.py +0 -0
  119. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/social_model.py +0 -0
  120. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/sportsdb/__init__.py +0 -0
  121. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/sportsdb/sportsdb_game_model.py +0 -0
  122. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/sportsdb/sportsdb_team_model.py +0 -0
  123. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/sportsdb/sportsdb_venue_model.py +0 -0
  124. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/sportsreference/__init__.py +0 -0
  125. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/sportsreference/sportsreference_game_model.py +0 -0
  126. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/sportsreference/sportsreference_player_model.py +0 -0
  127. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/sportsreference/sportsreference_team_model.py +0 -0
  128. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/sportsreference/sportsreference_venue_model.py +0 -0
  129. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/team_model.py +0 -0
  130. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/venue_model.py +0 -0
  131. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/weather/__init__.py +0 -0
  132. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/weather/gribstream/__init__.py +0 -0
  133. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/weather/gribstream/gribstream_weather_model.py +0 -0
  134. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/weather/multi_weather_model.py +0 -0
  135. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/weather/openmeteo/__init__.py +0 -0
  136. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/weather/openmeteo/openmeteo_weather_model.py +0 -0
  137. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/weather_model.py +0 -0
  138. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/wikipedia/__init__.py +0 -0
  139. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/wikipedia/wikipedia_venue_model.py +0 -0
  140. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/x/__init__.py +0 -0
  141. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/data/x/x_social_model.py +0 -0
  142. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/logger.py +0 -0
  143. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/loglevel.py +0 -0
  144. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/session.py +0 -0
  145. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/sportsball.py +0 -0
  146. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/vendor/__init__.py +0 -0
  147. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball/vendor/pygooglenews/__init__.py +0 -0
  148. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball.egg-info/SOURCES.txt +0 -0
  149. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball.egg-info/dependency_links.txt +0 -0
  150. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball.egg-info/entry_points.txt +0 -0
  151. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball.egg-info/not-zip-safe +0 -0
  152. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball.egg-info/requires.txt +0 -0
  153. {sportsball-0.3.25 → sportsball-0.3.27}/sportsball.egg-info/top_level.txt +0 -0
  154. {sportsball-0.3.25 → sportsball-0.3.27}/tests/__init__.py +0 -0
  155. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/__init__.py +0 -0
  156. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/afl/__init__.py +0 -0
  157. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/afl/afltables/__init__.py +0 -0
  158. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/afl/afltables/afl_afltables_league_model_test.py +0 -0
  159. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/afl/afltables/afl_afltables_player_model_test.py +0 -0
  160. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/aussportsbetting/__init__.py +0 -0
  161. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/aussportsbetting/aussportsbetting_game_model_test.py +0 -0
  162. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/combined/__init__.py +0 -0
  163. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/combined/combined_game_model_test.py +0 -0
  164. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/combined/combined_player_model_test.py +0 -0
  165. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/espn/__init__.py +0 -0
  166. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/espn/espn_game_model_test.py +0 -0
  167. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/espn/espn_player_model_test.py +0 -0
  168. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/game_model_test.py +0 -0
  169. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/google/__init__.py +0 -0
  170. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/google/google_address_model_test.py +0 -0
  171. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/google/google_news_model_test.py +0 -0
  172. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/nba/__init__.py +0 -0
  173. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/nba/nba/__init__.py +0 -0
  174. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/nba/nba/nba_nba_game_model_test.py +0 -0
  175. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/nba/nba/nba_nba_league_model_test.py +0 -0
  176. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/nba/nba/nba_nba_player_model_test.py +0 -0
  177. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/nba/nba/nba_nba_team_model_test.py +0 -0
  178. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/nba/sportsdb/__init__.py +0 -0
  179. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/nba/sportsdb/nba_sportsdb_league_model_test.py +0 -0
  180. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/nba/sportsreference/__init__.py +0 -0
  181. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/nba/sportsreference/nba_sportsreference_league_model_test.py +0 -0
  182. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/ncaab/__init__.py +0 -0
  183. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/ncaab/sportsreference/__init__.py +0 -0
  184. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/ncaab/sportsreference/ncaab_sportsreference_league_model_test.py +0 -0
  185. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/nfl/__init__.py +0 -0
  186. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/nfl/sportsdb/__init__.py +0 -0
  187. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/nfl/sportsdb/nfl_sportsdb_league_model_test.py +0 -0
  188. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/oddsportal/__init__.py +0 -0
  189. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/oddsportal/oddsportal_game_model_test.py +0 -0
  190. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/player_model_test.py +0 -0
  191. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/social_model_test.py +0 -0
  192. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/sportsdb/__init__.py +0 -0
  193. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/sportsdb/sportsdb_game_model_test.py +0 -0
  194. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/sportsdb/sportsdb_league_model_test.py +0 -0
  195. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/sportsdb/sportsdb_team_model_test.py +0 -0
  196. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/sportsdb/sportsdb_venue_model_test.py +0 -0
  197. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/sportsreference/__init__.py +0 -0
  198. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/sportsreference/sportsreference_game_model_test.py +0 -0
  199. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/sportsreference/sportsreference_league_model_test.py +0 -0
  200. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/sportsreference/sportsreference_player_model_test.py +0 -0
  201. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/sportsreference/sportsreference_team_model_test.py +0 -0
  202. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/sportsreference/sportsreference_venue_model_test.py +0 -0
  203. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/team_model_test.py +0 -0
  204. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/x/__init__.py +0 -0
  205. {sportsball-0.3.25 → sportsball-0.3.27}/tests/data/x/x_social_model_test.py +0 -0
  206. {sportsball-0.3.25 → sportsball-0.3.27}/tests/proxy_session_test.py +0 -0
  207. {sportsball-0.3.25 → sportsball-0.3.27}/tests/sportsball_test.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: sportsball
3
- Version: 0.3.25
3
+ Version: 0.3.27
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.25',
29
+ version='0.3.27',
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.25"
3
+ __VERSION__ = "0.3.27"
@@ -24,7 +24,9 @@ _SEASON_URL = "https://afltables.com/afl/seas/season_idx.html"
24
24
  class AFLAFLTablesLeagueModel(LeagueModel):
25
25
  """AFL AFLTables implementation of the league model."""
26
26
 
27
- def __init__(self, session: requests_cache.CachedSession) -> None:
27
+ def __init__(
28
+ self, session: requests_cache.CachedSession, position: int | None = None
29
+ ) -> None:
28
30
  super().__init__(League.AFL, session)
29
31
 
30
32
  def _produce_games(
@@ -132,7 +134,7 @@ class AFLAFLTablesLeagueModel(LeagueModel):
132
134
  def games(self) -> Iterator[GameModel]:
133
135
  response = self.session.get(_SEASON_URL)
134
136
  soup = BeautifulSoup(response.text, "html.parser")
135
- with tqdm.tqdm() as pbar:
137
+ with tqdm.tqdm(position=self.position) as pbar:
136
138
  for table in soup.find_all("table"):
137
139
  for tr in table.find_all("tr"):
138
140
  for td in tr.find_all("td"):
@@ -10,5 +10,7 @@ from ...league import League
10
10
  class AFLAusSportsBettingLeagueModel(AusSportsBettingLeagueModel):
11
11
  """AFL AusSportsBetting implementation of the league model."""
12
12
 
13
- def __init__(self, session: requests_cache.CachedSession) -> None:
14
- super().__init__(League.AFL, session)
13
+ def __init__(
14
+ self, session: requests_cache.CachedSession, position: int | None = None
15
+ ) -> None:
16
+ super().__init__(League.AFL, session, position=position)
@@ -210,9 +210,9 @@ class AFLCombinedLeagueModel(CombinedLeagueModel):
210
210
  session,
211
211
  League.AFL,
212
212
  [
213
- AFLAFLTablesLeagueModel(session),
214
- AFLESPNLeagueModel(session),
215
- AFLAusSportsBettingLeagueModel(session),
213
+ AFLAFLTablesLeagueModel(session, position=0),
214
+ AFLESPNLeagueModel(session, position=1),
215
+ AFLAusSportsBettingLeagueModel(session, position=2),
216
216
  AFLOddsPortalLeagueModel(session),
217
217
  ],
218
218
  )
@@ -13,5 +13,7 @@ _SEASON_URL = "https://sports.core.api.espn.com/v2/sports/australian-football/le
13
13
  class AFLESPNLeagueModel(ESPNLeagueModel):
14
14
  """AFL ESPN implementation of the league model."""
15
15
 
16
- def __init__(self, session: requests_cache.CachedSession) -> None:
17
- super().__init__(_SEASON_URL, League.AFL, session)
16
+ def __init__(
17
+ self, session: requests_cache.CachedSession, position: int | None = None
18
+ ) -> None:
19
+ super().__init__(_SEASON_URL, League.AFL, session, position=position)
@@ -11,5 +11,7 @@ from ...oddsportal.oddsportal_league_model import OddsPortalLeagueModel
11
11
  class AFLOddsPortalLeagueModel(OddsPortalLeagueModel):
12
12
  """AFL OddsPortal implementation of the league model."""
13
13
 
14
- def __init__(self, session: requests_cache.CachedSession) -> None:
15
- super().__init__(League.AFL, session)
14
+ def __init__(
15
+ self, session: requests_cache.CachedSession, position: int | None = None
16
+ ) -> None:
17
+ super().__init__(League.AFL, session, position=position)
@@ -18,8 +18,13 @@ from .aussportsbetting_game_model import create_aussportsbetting_game_model
18
18
  class AusSportsBettingLeagueModel(LeagueModel):
19
19
  """AusSportsBetting implementation of the league model."""
20
20
 
21
- def __init__(self, league: League, session: requests_cache.CachedSession) -> None:
22
- super().__init__(league, session)
21
+ def __init__(
22
+ self,
23
+ league: League,
24
+ session: requests_cache.CachedSession,
25
+ position: int | None = None,
26
+ ) -> None:
27
+ super().__init__(league, session, position=position)
23
28
  match league:
24
29
  case League.AFL:
25
30
  self._spreadsheet_url = (
@@ -96,7 +101,7 @@ class AusSportsBettingLeagueModel(LeagueModel):
96
101
  ws = workbook.active
97
102
  if ws is None:
98
103
  raise ValueError("ws is null.")
99
- with tqdm.tqdm() as pbar:
104
+ with tqdm.tqdm(position=self.position) as pbar:
100
105
  for row in ws.iter_rows():
101
106
  game_model = self._row_to_game(row)
102
107
  if game_model is not None:
@@ -29,9 +29,13 @@ class ESPNLeagueModel(LeagueModel):
29
29
  """ESPN implementation of the league model."""
30
30
 
31
31
  def __init__(
32
- self, start_url: str, league: League, session: requests_cache.CachedSession
32
+ self,
33
+ start_url: str,
34
+ league: League,
35
+ session: requests_cache.CachedSession,
36
+ position: int | None = None,
33
37
  ) -> None:
34
- super().__init__(league, session)
38
+ super().__init__(league, session, position=position)
35
39
  self._start_url = start_url
36
40
 
37
41
  def _produce_games(
@@ -138,7 +142,7 @@ class ESPNLeagueModel(LeagueModel):
138
142
  @property
139
143
  def games(self) -> Iterator[GameModel]:
140
144
  page = 1
141
- with tqdm.tqdm() as pbar:
145
+ with tqdm.tqdm(position=self.position) as pbar:
142
146
  while True:
143
147
  if page == 1:
144
148
  with self.session.cache_disabled():
@@ -1297,6 +1297,96 @@ ROSS_E_TEMPLETON_CENTER = SportsballGeocodeTuple(
1297
1297
  housenumber="503",
1298
1298
  country="USA",
1299
1299
  )
1300
+ LEVIEN_GYM = SportsballGeocodeTuple(
1301
+ city="New York",
1302
+ state="NY",
1303
+ postal="",
1304
+ lat=40.80979,
1305
+ lng=-73.961715,
1306
+ housenumber="3030",
1307
+ country="USA",
1308
+ )
1309
+ CRISLER_CENTER = SportsballGeocodeTuple(
1310
+ city="Ann Arbor",
1311
+ state="MI",
1312
+ postal="48104",
1313
+ lat=42.265037,
1314
+ lng=-83.746768,
1315
+ housenumber="333",
1316
+ country="USA",
1317
+ )
1318
+ HYNES_ATHELTIC_CENTER = SportsballGeocodeTuple(
1319
+ city="New Rochelle",
1320
+ state="NY",
1321
+ postal="",
1322
+ lat=40.92664,
1323
+ lng=-73.784325,
1324
+ housenumber="",
1325
+ country="USA",
1326
+ )
1327
+ OLE_MISS = SportsballGeocodeTuple(
1328
+ city="Oxford",
1329
+ state="MS",
1330
+ postal="38677",
1331
+ lat=34.363164,
1332
+ lng=-89.535453,
1333
+ housenumber="",
1334
+ country="USA",
1335
+ )
1336
+ HOLMES_CENTER = SportsballGeocodeTuple(
1337
+ city="Boone",
1338
+ state="NC",
1339
+ postal="28608",
1340
+ lat=36.210624,
1341
+ lng=-81.675952,
1342
+ housenumber="111",
1343
+ country="USA",
1344
+ )
1345
+ FARRIS_CENTER = SportsballGeocodeTuple(
1346
+ city="Conway",
1347
+ state="AR",
1348
+ postal="",
1349
+ lat=35.081667,
1350
+ lng=-92.459444,
1351
+ housenumber="",
1352
+ country="USA",
1353
+ )
1354
+ HTC_CENTER = SportsballGeocodeTuple(
1355
+ city="Conway",
1356
+ state="SC",
1357
+ postal="29579",
1358
+ lat=33.799167,
1359
+ lng=-79.015556,
1360
+ housenumber="104",
1361
+ country="USA",
1362
+ )
1363
+ GERSTEN_PAVILION = SportsballGeocodeTuple(
1364
+ city="Los Angeles",
1365
+ state="CA",
1366
+ postal="90045",
1367
+ lat=33.9675,
1368
+ lng=-118.415556,
1369
+ housenumber="1",
1370
+ country="USA",
1371
+ )
1372
+ BOGOTA_SAVINGS_BANK_CENTER = SportsballGeocodeTuple(
1373
+ city="Teaneck",
1374
+ state="NJ",
1375
+ postal="07601",
1376
+ lat=40.8967,
1377
+ lng=-74.0324,
1378
+ housenumber="",
1379
+ country="USA",
1380
+ )
1381
+ CORBETT_SPORTS_CENTER = SportsballGeocodeTuple(
1382
+ city="Greensboro",
1383
+ state="NC",
1384
+ postal="27411",
1385
+ lat=36.076783,
1386
+ lng=-79.768849,
1387
+ housenumber="1601",
1388
+ country="USA",
1389
+ )
1300
1390
  _CACHED_GEOCODES: dict[str, Any] = {
1301
1391
  "S.C.G. - Australia": SCG,
1302
1392
  "Victoria Park - Australia": SportsballGeocodeTuple(
@@ -3510,15 +3600,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
3510
3600
  housenumber="",
3511
3601
  country="USA",
3512
3602
  ),
3513
- "The HTC Center, Conway, South Carolina": SportsballGeocodeTuple(
3514
- city="Conway",
3515
- state="SC",
3516
- postal="29579",
3517
- lat=33.799167,
3518
- lng=-79.015556,
3519
- housenumber="104",
3520
- country="USA",
3521
- ),
3603
+ "The HTC Center, Conway, South Carolina": HTC_CENTER,
3522
3604
  "Daskalakis Athletic Center, Philadelphia, Pennsylvania": SportsballGeocodeTuple(
3523
3605
  city="Philadelphia",
3524
3606
  state="PA",
@@ -3546,15 +3628,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
3546
3628
  housenumber="100",
3547
3629
  country="USA",
3548
3630
  ),
3549
- "Hynes Athletics Center, New Rochelle, New York": SportsballGeocodeTuple(
3550
- city="New Rochelle",
3551
- state="NY",
3552
- postal="",
3553
- lat=40.92664,
3554
- lng=-73.784325,
3555
- housenumber="",
3556
- country="USA",
3557
- ),
3631
+ "Hynes Athletics Center, New Rochelle, New York": HYNES_ATHELTIC_CENTER,
3558
3632
  "Swisher Gymnasium, Jacksonville, Florida": SportsballGeocodeTuple(
3559
3633
  city="Jacksonville",
3560
3634
  state="FL",
@@ -3592,15 +3666,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
3592
3666
  housenumber="111",
3593
3667
  country="USA",
3594
3668
  ),
3595
- "Ellis Corbett Sports Center, Greensboro, North Carolina": SportsballGeocodeTuple(
3596
- city="Greensboro",
3597
- state="NC",
3598
- postal="27411",
3599
- lat=36.076783,
3600
- lng=-79.768849,
3601
- housenumber="1601",
3602
- country="USA",
3603
- ),
3669
+ "Ellis Corbett Sports Center, Greensboro, North Carolina": CORBETT_SPORTS_CENTER,
3604
3670
  "Trask Coliseum, Wilmington, North Carolina": SportsballGeocodeTuple(
3605
3671
  city="Wilmington",
3606
3672
  state="NC",
@@ -3783,15 +3849,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
3783
3849
  housenumber="1250",
3784
3850
  country="USA",
3785
3851
  ),
3786
- "Albert Gersten Pavilion, Los Angeles, California": SportsballGeocodeTuple(
3787
- city="Los Angeles",
3788
- state="CA",
3789
- postal="90045",
3790
- lat=33.9675,
3791
- lng=-118.415556,
3792
- housenumber="1",
3793
- country="USA",
3794
- ),
3852
+ "Albert Gersten Pavilion, Los Angeles, California": GERSTEN_PAVILION,
3795
3853
  "Firestone Fieldhouse, Malibu, California": SportsballGeocodeTuple(
3796
3854
  city="Malibu",
3797
3855
  state="CA",
@@ -4661,15 +4719,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
4661
4719
  housenumber="900",
4662
4720
  country="USA",
4663
4721
  ),
4664
- "Crisler Arena, Ann Arbor, Michigan": SportsballGeocodeTuple(
4665
- city="Ann Arbor",
4666
- state="MI",
4667
- postal="48104",
4668
- lat=42.265037,
4669
- lng=-83.746768,
4670
- housenumber="333",
4671
- country="USA",
4672
- ),
4722
+ "Crisler Arena, Ann Arbor, Michigan": CRISLER_CENTER,
4673
4723
  "FAU Arena, Boca Raton, Florida": SportsballGeocodeTuple(
4674
4724
  city="Boca Raton",
4675
4725
  state="FL",
@@ -4706,15 +4756,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
4706
4756
  housenumber="1615",
4707
4757
  country="USA",
4708
4758
  ),
4709
- "Bogota Savings Bank Center, Teaneck, New Jersey": SportsballGeocodeTuple(
4710
- city="Teaneck",
4711
- state="NJ",
4712
- postal="07601",
4713
- lat=40.8967,
4714
- lng=-74.0324,
4715
- housenumber="",
4716
- country="USA",
4717
- ),
4759
+ "Bogota Savings Bank Center, Teaneck, New Jersey": BOGOTA_SAVINGS_BANK_CENTER,
4718
4760
  "Emil and Patricia Jones Convocation Center, Chicago, Illinois": SportsballGeocodeTuple(
4719
4761
  city="Chicago",
4720
4762
  state="IL",
@@ -4862,15 +4904,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
4862
4904
  country="USA",
4863
4905
  ),
4864
4906
  "FedExForum, Memphis, Tennessee": FEDEX_FORUM,
4865
- "The Pavilion at Ole Miss, Oxford, Mississippi": SportsballGeocodeTuple(
4866
- city="Oxford",
4867
- state="MS",
4868
- postal="38677",
4869
- lat=34.363164,
4870
- lng=-89.535453,
4871
- housenumber="",
4872
- country="USA",
4873
- ),
4907
+ "The Pavilion at Ole Miss, Oxford, Mississippi": OLE_MISS,
4874
4908
  "Dee Glen Smith Spectrum, Logan, Utah": SportsballGeocodeTuple(
4875
4909
  city="Logan",
4876
4910
  state="UT",
@@ -4880,15 +4914,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
4880
4914
  housenumber="900",
4881
4915
  country="USA",
4882
4916
  ),
4883
- "Holmes Convocation Center, Boone, North Carolina": SportsballGeocodeTuple(
4884
- city="Boone",
4885
- state="NC",
4886
- postal="28608",
4887
- lat=36.210624,
4888
- lng=-81.675952,
4889
- housenumber="111",
4890
- country="USA",
4891
- ),
4917
+ "Holmes Convocation Center, Boone, North Carolina": HOLMES_CENTER,
4892
4918
  "Leede Arena, Hanover, New Hampshire": SportsballGeocodeTuple(
4893
4919
  city="Hanover",
4894
4920
  state="NH",
@@ -5177,15 +5203,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
5177
5203
  housenumber="13",
5178
5204
  country="USA",
5179
5205
  ),
5180
- "Levien Gym, New York, New York": SportsballGeocodeTuple(
5181
- city="New York",
5182
- state="NY",
5183
- postal="",
5184
- lat=40.80979,
5185
- lng=-73.961715,
5186
- housenumber="3030",
5187
- country="USA",
5188
- ),
5206
+ "Levien Gym, New York, New York": LEVIEN_GYM,
5189
5207
  "Belk Arena, Davidson, North Carolina": SportsballGeocodeTuple(
5190
5208
  city="Davidson",
5191
5209
  state="NC",
@@ -6129,15 +6147,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
6129
6147
  housenumber="4400",
6130
6148
  country="USA",
6131
6149
  ),
6132
- "Jeff Farris Center, Conway, Arkansas": SportsballGeocodeTuple(
6133
- city="Conway",
6134
- state="AR",
6135
- postal="",
6136
- lat=35.081667,
6137
- lng=-92.459444,
6138
- housenumber="",
6139
- country="USA",
6140
- ),
6150
+ "Jeff Farris Center, Conway, Arkansas": FARRIS_CENTER,
6141
6151
  "TD Arena, Charleston, South Carolina": SportsballGeocodeTuple(
6142
6152
  city="Charleston",
6143
6153
  state="SC",
@@ -7487,6 +7497,196 @@ _CACHED_GEOCODES: dict[str, Any] = {
7487
7497
  country="USA",
7488
7498
  ),
7489
7499
  "Ross E. Templeton Center, Clinton, South Carolina": ROSS_E_TEMPLETON_CENTER,
7500
+ "PPG Paints Arena, Pittsburgh, Pennsylvania": SportsballGeocodeTuple(
7501
+ city="Pittsburgh",
7502
+ state="PA",
7503
+ postal="",
7504
+ lat=40.439444,
7505
+ lng=-79.989167,
7506
+ housenumber="1001",
7507
+ country="USA",
7508
+ ),
7509
+ "Levien Gymnasium, New York, New York": LEVIEN_GYM,
7510
+ "Simon Skjodt Assembly Hall, Bloomington, Indiana": SportsballGeocodeTuple(
7511
+ city="Bloomington",
7512
+ state="IN",
7513
+ postal="47408",
7514
+ lat=39.1808334,
7515
+ lng=-86.522222,
7516
+ housenumber="1001",
7517
+ country="USA",
7518
+ ),
7519
+ "Crisler Center, Ann Arbor, Michigan": CRISLER_CENTER,
7520
+ "Jersey Mike's Arena, New Brunswick, New Jersey": SportsballGeocodeTuple(
7521
+ city="New Brunswick",
7522
+ state="NJ",
7523
+ postal="08854",
7524
+ lat=40.525278,
7525
+ lng=-74.441111,
7526
+ housenumber="83",
7527
+ country="USA",
7528
+ ),
7529
+ "Fertitta Center, Houston, Texas": SportsballGeocodeTuple(
7530
+ city="Houston",
7531
+ state="TX",
7532
+ postal="77004",
7533
+ lat=29.724722,
7534
+ lng=-95.346944,
7535
+ housenumber="3875",
7536
+ country="USA",
7537
+ ),
7538
+ "UMPC Cooper Fieldhouse, Pittsburgh, Pennsylvania": SportsballGeocodeTuple(
7539
+ city="Pittsburgh",
7540
+ state="PA",
7541
+ postal="15282",
7542
+ lat=40.4374,
7543
+ lng=-79.9879,
7544
+ housenumber="600",
7545
+ country="USA",
7546
+ ),
7547
+ "Davey Whitney Complex, Alcorn State, Mississippi": SportsballGeocodeTuple(
7548
+ city="Alcorn State",
7549
+ state="MS",
7550
+ postal="",
7551
+ lat=31.873225,
7552
+ lng=-91.13318,
7553
+ housenumber="",
7554
+ country="USA",
7555
+ ),
7556
+ "John J. Lee Amphitheater, New Haven, Connecticut": SportsballGeocodeTuple(
7557
+ city="New Haven",
7558
+ state="CT",
7559
+ postal="06511",
7560
+ lat=41.313611,
7561
+ lng=-72.930556,
7562
+ housenumber="70",
7563
+ country="USA",
7564
+ ),
7565
+ "Hynes Athletic Center, New Rochelle, New York": HYNES_ATHELTIC_CENTER,
7566
+ "The Sandy and John Black Pavilion at Ole Miss, Oxford, Mississippi": OLE_MISS,
7567
+ "Moscow, Idaho": SportsballGeocodeTuple(
7568
+ city="Moscow",
7569
+ state="ID",
7570
+ postal="",
7571
+ lat=46.741667,
7572
+ lng=-117.0,
7573
+ housenumber="",
7574
+ country="USA",
7575
+ ),
7576
+ "Ocean Bank Convocation Center, Miami, Florida": SportsballGeocodeTuple(
7577
+ city="Miami",
7578
+ state="FL",
7579
+ postal="33199",
7580
+ lat=25.756667,
7581
+ lng=-80.379444,
7582
+ housenumber="11200",
7583
+ country="USA",
7584
+ ),
7585
+ "Island Federal Credit Union Arena, Stony Brook, New York": SportsballGeocodeTuple(
7586
+ city="Stony Brook",
7587
+ state="NY",
7588
+ postal="11790",
7589
+ lat=40.91741,
7590
+ lng=-73.125955,
7591
+ housenumber="100",
7592
+ country="USA",
7593
+ ),
7594
+ "Phoenix, Arizona": SportsballGeocodeTuple(
7595
+ city="Phoenix",
7596
+ state="AZ",
7597
+ postal="",
7598
+ lat=33.448333,
7599
+ lng=-112.073889,
7600
+ housenumber="",
7601
+ country="USA",
7602
+ ),
7603
+ "Evansville, Indiana": SportsballGeocodeTuple(
7604
+ city="Evansville",
7605
+ state="IN",
7606
+ postal="",
7607
+ lat=37.977222,
7608
+ lng=-87.550556,
7609
+ housenumber="",
7610
+ country="USA",
7611
+ ),
7612
+ "America First Event Center, Cedar City, Utah": SportsballGeocodeTuple(
7613
+ city="Cedar City",
7614
+ state="UT",
7615
+ postal="84720",
7616
+ lat=37.675556,
7617
+ lng=-113.073056,
7618
+ housenumber="351",
7619
+ country="USA",
7620
+ ),
7621
+ "St. Paul, Minnesota": SportsballGeocodeTuple(
7622
+ city="St. Paul",
7623
+ state="MN",
7624
+ postal="",
7625
+ lat=44.947778,
7626
+ lng=-93.103889,
7627
+ housenumber="",
7628
+ country="USA",
7629
+ ),
7630
+ "Jenny Craig Pavilion, San Diego, California": SportsballGeocodeTuple(
7631
+ city="San Diego",
7632
+ state="CA",
7633
+ postal="",
7634
+ lat=32.7745,
7635
+ lng=-117.1837,
7636
+ housenumber="5998",
7637
+ country="USA",
7638
+ ),
7639
+ "George M. Holmes Convocation Center, Boone, North Carolina": HOLMES_CENTER,
7640
+ "Farris Center, Conway, Arkansas": FARRIS_CENTER,
7641
+ "HTC Center, Conway, South Carolina": HTC_CENTER,
7642
+ "Atlanta, Georgia": SportsballGeocodeTuple(
7643
+ city="Atlanta",
7644
+ state="GA",
7645
+ postal="",
7646
+ lat=33.748889,
7647
+ lng=-84.39,
7648
+ housenumber="",
7649
+ country="USA",
7650
+ ),
7651
+ "UNF Arena, Jacksonville, Florida": SportsballGeocodeTuple(
7652
+ city="Jacksonville",
7653
+ state="FL",
7654
+ postal="32224",
7655
+ lat=30.2734,
7656
+ lng=-81.5079,
7657
+ housenumber="11852",
7658
+ country="USA",
7659
+ ),
7660
+ "Strahan Arena, San Marcos, Texas": SportsballGeocodeTuple(
7661
+ city="San Marcos",
7662
+ state="TX",
7663
+ postal="78666",
7664
+ lat=29.888611,
7665
+ lng=-97.932778,
7666
+ housenumber="601",
7667
+ country="USA",
7668
+ ),
7669
+ "Wellness and Events Center, Newark, New Jersey": SportsballGeocodeTuple(
7670
+ city="Newark",
7671
+ state="NJ",
7672
+ postal="07102",
7673
+ lat=40.7453,
7674
+ lng=-74.183,
7675
+ housenumber="100",
7676
+ country="USA",
7677
+ ),
7678
+ "Gersten Pavilion, Los Angeles, California": GERSTEN_PAVILION,
7679
+ "Rothman Center, Teaneck, New Jersey": BOGOTA_SAVINGS_BANK_CENTER,
7680
+ "Corbett Sports Center, Greensboro, North Carolina": CORBETT_SPORTS_CENTER,
7681
+ "Easton, Massachusetts": SportsballGeocodeTuple(
7682
+ city="Easton",
7683
+ state="MA",
7684
+ postal="",
7685
+ lat=42.024444,
7686
+ lng=-71.129167,
7687
+ housenumber="",
7688
+ country="USA",
7689
+ ),
7490
7690
  }
7491
7691
 
7492
7692
 
@@ -32,10 +32,16 @@ class LeagueModel(Model):
32
32
 
33
33
  _df: pd.DataFrame | None
34
34
 
35
- def __init__(self, league: League, session: requests_cache.CachedSession) -> None:
35
+ def __init__(
36
+ self,
37
+ league: League,
38
+ session: requests_cache.CachedSession,
39
+ position: int | None = None,
40
+ ) -> None:
36
41
  super().__init__(session)
37
42
  self._league = league
38
43
  self._df = None
44
+ self.position = position
39
45
 
40
46
  @property
41
47
  def games(self) -> Iterator[GameModel]:
@@ -6,6 +6,7 @@ from ...combined.combined_league_model import CombinedLeagueModel
6
6
  from ...league import League
7
7
  from ..espn.nba_espn_league_model import NBAESPNLeagueModel
8
8
  from ..nba.nba_nba_league_model import NBANBALeagueModel
9
+ from ..oddsportal.nba_oddsportal_league_model import NBAOddsPortalLeagueModel
9
10
  from ..sportsdb.nba_sportsdb_league_model import NBASportsDBLeagueModel
10
11
  from ..sportsreference.nba_sportsreference_league_model import \
11
12
  NBASportsReferenceLeagueModel
@@ -232,10 +233,11 @@ class NBACombinedLeagueModel(CombinedLeagueModel):
232
233
  session,
233
234
  League.NBA,
234
235
  [
235
- NBANBALeagueModel(session),
236
- NBAESPNLeagueModel(session),
237
- NBASportsDBLeagueModel(session),
238
- NBASportsReferenceLeagueModel(session),
236
+ NBANBALeagueModel(session, position=0),
237
+ NBAESPNLeagueModel(session, position=1),
238
+ NBASportsDBLeagueModel(session, position=2),
239
+ NBASportsReferenceLeagueModel(session, position=3),
240
+ NBAOddsPortalLeagueModel(session, position=4),
239
241
  ],
240
242
  )
241
243
 
@@ -13,5 +13,7 @@ _SEASON_URL = (
13
13
  class NBAESPNLeagueModel(ESPNLeagueModel):
14
14
  """NBA ESPN implementation of the league model."""
15
15
 
16
- def __init__(self, session: requests_cache.CachedSession) -> None:
17
- super().__init__(_SEASON_URL, League.NBA, session)
16
+ def __init__(
17
+ self, session: requests_cache.CachedSession, position: int | None = None
18
+ ) -> None:
19
+ super().__init__(_SEASON_URL, League.NBA, session, position=position)
@@ -67,8 +67,10 @@ class NBANBALeagueModel(LeagueModel):
67
67
  start: datetime.datetime
68
68
  games: int
69
69
 
70
- def __init__(self, session: requests_cache.CachedSession) -> None:
71
- super().__init__(League.NBA, session)
70
+ def __init__(
71
+ self, session: requests_cache.CachedSession, position: int | None = None
72
+ ) -> None:
73
+ super().__init__(League.NBA, session, position=position)
72
74
  self._league_id = "00"
73
75
  NBAHTTP.set_session(session)
74
76
 
@@ -111,7 +113,7 @@ class NBANBALeagueModel(LeagueModel):
111
113
  to_date = datetime.datetime.today().date()
112
114
  seasons: dict[str, NBANBALeagueModel._SeasonInfo] = {}
113
115
  first_call = False
114
- with tqdm.tqdm() as pbar:
116
+ with tqdm.tqdm(position=self.position) as pbar:
115
117
  while True:
116
118
  next_date = to_date - relativedelta(years=1)
117
119
  if not first_call: