sportsball 0.3.52__tar.gz → 0.3.54__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 (216) hide show
  1. {sportsball-0.3.52/sportsball.egg-info → sportsball-0.3.54}/PKG-INFO +1 -1
  2. {sportsball-0.3.52 → sportsball-0.3.54}/setup.py +1 -1
  3. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/__init__.py +1 -1
  4. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/google/google_address_model.py +176 -18
  5. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/sportsreference/sportsreference_game_model.py +3 -0
  6. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/sportsreference/sportsreference_team_model.py +4 -2
  7. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/logger.py +8 -1
  8. {sportsball-0.3.52 → sportsball-0.3.54/sportsball.egg-info}/PKG-INFO +1 -1
  9. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/sportsreference/sportsreference_game_model_test.py +62 -0
  10. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/sportsreference/sportsreference_team_model_test.py +20 -0
  11. {sportsball-0.3.52 → sportsball-0.3.54}/LICENSE +0 -0
  12. {sportsball-0.3.52 → sportsball-0.3.54}/MANIFEST.in +0 -0
  13. {sportsball-0.3.52 → sportsball-0.3.54}/README.md +0 -0
  14. {sportsball-0.3.52 → sportsball-0.3.54}/requirements.txt +0 -0
  15. {sportsball-0.3.52 → sportsball-0.3.54}/setup.cfg +0 -0
  16. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/__main__.py +0 -0
  17. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/args.py +0 -0
  18. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/cache.py +0 -0
  19. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/__init__.py +0 -0
  20. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/address_model.py +0 -0
  21. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/afl/__init__.py +0 -0
  22. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/afl/afl/__init__.py +0 -0
  23. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/afl/afl/afl_afl_game_model.py +0 -0
  24. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/afl/afl/afl_afl_league_model.py +0 -0
  25. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/afl/afl/afl_afl_player_model.py +0 -0
  26. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/afl/afl/afl_afl_team_model.py +0 -0
  27. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/afl/afl/afl_afl_venue_model.py +0 -0
  28. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/afl/afltables/__init__.py +0 -0
  29. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/afl/afltables/afl_afltables_game_model.py +0 -0
  30. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/afl/afltables/afl_afltables_league_model.py +0 -0
  31. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/afl/afltables/afl_afltables_player_model.py +0 -0
  32. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/afl/afltables/afl_afltables_team_model.py +0 -0
  33. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/afl/afltables/afl_afltables_venue_model.py +0 -0
  34. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/afl/aussportsbetting/__init__.py +0 -0
  35. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/afl/aussportsbetting/afl_aussportsbetting_league_model.py +0 -0
  36. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/afl/combined/__init__.py +0 -0
  37. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/afl/combined/afl_combined_league_model.py +0 -0
  38. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/afl/espn/__init__.py +0 -0
  39. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/afl/espn/afl_espn_league_model.py +0 -0
  40. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/afl/oddsportal/__init__.py +0 -0
  41. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/afl/oddsportal/afl_oddsportal_league_model.py +0 -0
  42. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/aussportsbetting/__init__.py +0 -0
  43. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/aussportsbetting/aussportsbetting_bookie_model.py +0 -0
  44. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/aussportsbetting/aussportsbetting_game_model.py +0 -0
  45. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/aussportsbetting/aussportsbetting_league_model.py +0 -0
  46. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/aussportsbetting/aussportsbetting_odds_model.py +0 -0
  47. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/aussportsbetting/aussportsbetting_team_model.py +0 -0
  48. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/aussportsbetting/aussportsbetting_venue_model.py +0 -0
  49. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/bookie_model.py +0 -0
  50. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/combined/__init__.py +0 -0
  51. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/combined/combined_address_model.py +0 -0
  52. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/combined/combined_game_model.py +0 -0
  53. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/combined/combined_league_model.py +0 -0
  54. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/combined/combined_player_model.py +0 -0
  55. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/combined/combined_team_model.py +0 -0
  56. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/combined/combined_venue_model.py +0 -0
  57. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/combined/combined_weather_model.py +0 -0
  58. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/espn/__init__.py +0 -0
  59. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/espn/espn_bookie_model.py +0 -0
  60. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/espn/espn_game_model.py +0 -0
  61. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/espn/espn_league_model.py +0 -0
  62. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/espn/espn_odds_model.py +0 -0
  63. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/espn/espn_player_model.py +0 -0
  64. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/espn/espn_team_model.py +0 -0
  65. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/espn/espn_venue_model.py +0 -0
  66. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/field_type.py +0 -0
  67. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/game_model.py +0 -0
  68. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/google/__init__.py +0 -0
  69. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/google/google_news_model.py +0 -0
  70. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/league.py +0 -0
  71. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/league_model.py +0 -0
  72. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/model.py +0 -0
  73. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/nba/__init__.py +0 -0
  74. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/nba/combined/__init__.py +0 -0
  75. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/nba/combined/nba_combined_league_model.py +0 -0
  76. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/nba/espn/__init__.py +0 -0
  77. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/nba/espn/nba_espn_league_model.py +0 -0
  78. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/nba/nba/__init__.py +0 -0
  79. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/nba/nba/nba_nba_game_model.py +0 -0
  80. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/nba/nba/nba_nba_league_model.py +0 -0
  81. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/nba/nba/nba_nba_team_model.py +0 -0
  82. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/nba/oddsportal/__init__.py +0 -0
  83. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/nba/oddsportal/nba_oddsportal_league_model.py +0 -0
  84. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/nba/sportsdb/__init__.py +0 -0
  85. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/nba/sportsdb/nba_sportsdb_league_model.py +0 -0
  86. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/nba/sportsreference/__init__.py +0 -0
  87. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/nba/sportsreference/nba_sportsreference_league_model.py +0 -0
  88. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/ncaab/__init__.py +0 -0
  89. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/ncaab/combined/__init__.py +0 -0
  90. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/ncaab/combined/ncaab_combined_league_model.py +0 -0
  91. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/ncaab/espn/__init__.py +0 -0
  92. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/ncaab/espn/ncaab_espn_league_model.py +0 -0
  93. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/ncaab/oddsportal/__init__.py +0 -0
  94. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/ncaab/oddsportal/ncaab_oddsportal_league_model.py +0 -0
  95. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/ncaab/sportsreference/__init__.py +0 -0
  96. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/ncaab/sportsreference/ncaab_sportsreference_league_model.py +0 -0
  97. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/ncaaf/__init__.py +0 -0
  98. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/ncaaf/combined/__init__.py +0 -0
  99. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/ncaaf/combined/ncaaf_combined_league_model.py +0 -0
  100. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/ncaaf/espn/__init__.py +0 -0
  101. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/ncaaf/espn/ncaaf_espn_league_model.py +0 -0
  102. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/ncaaf/oddsportal/__init__.py +0 -0
  103. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/ncaaf/oddsportal/ncaaf_oddsportal_league_model.py +0 -0
  104. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/news_model.py +0 -0
  105. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/nfl/__init__.py +0 -0
  106. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/nfl/aussportsbetting/__init__.py +0 -0
  107. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/nfl/aussportsbetting/nfl_aussportsbetting_league_model.py +0 -0
  108. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/nfl/combined/__init__.py +0 -0
  109. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/nfl/combined/nfl_combined_league_model.py +0 -0
  110. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/nfl/espn/__init__.py +0 -0
  111. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/nfl/espn/nfl_espn_league_model.py +0 -0
  112. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/nfl/oddsportal/__init__.py +0 -0
  113. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/nfl/oddsportal/nfl_oddsportal_league_model.py +0 -0
  114. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/nfl/sportsdb/__init__.py +0 -0
  115. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/nfl/sportsdb/nfl_sportsdb_league_model.py +0 -0
  116. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/odds_model.py +0 -0
  117. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/oddsportal/__init__.py +0 -0
  118. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/oddsportal/decrypt.py +0 -0
  119. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/oddsportal/oddsportal_bookie_model.py +0 -0
  120. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/oddsportal/oddsportal_game_model.py +0 -0
  121. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/oddsportal/oddsportal_league_model.py +0 -0
  122. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/oddsportal/oddsportal_odds_model.py +0 -0
  123. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/oddsportal/oddsportal_team_model.py +0 -0
  124. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/oddsportal/oddsportal_venue_model.py +0 -0
  125. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/player_model.py +0 -0
  126. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/season_type.py +0 -0
  127. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/social_model.py +0 -0
  128. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/sportsdb/__init__.py +0 -0
  129. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/sportsdb/sportsdb_game_model.py +0 -0
  130. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/sportsdb/sportsdb_league_model.py +0 -0
  131. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/sportsdb/sportsdb_team_model.py +0 -0
  132. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/sportsdb/sportsdb_venue_model.py +0 -0
  133. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/sportsreference/__init__.py +0 -0
  134. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/sportsreference/sportsreference_league_model.py +0 -0
  135. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/sportsreference/sportsreference_player_model.py +0 -0
  136. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/sportsreference/sportsreference_venue_model.py +0 -0
  137. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/team_model.py +0 -0
  138. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/venue_model.py +0 -0
  139. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/weather/__init__.py +0 -0
  140. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/weather/gribstream/__init__.py +0 -0
  141. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/weather/gribstream/gribstream_weather_model.py +0 -0
  142. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/weather/multi_weather_model.py +0 -0
  143. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/weather/openmeteo/__init__.py +0 -0
  144. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/weather/openmeteo/openmeteo_weather_model.py +0 -0
  145. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/weather_model.py +0 -0
  146. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/wikipedia/__init__.py +0 -0
  147. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/wikipedia/wikipedia_venue_model.py +0 -0
  148. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/x/__init__.py +0 -0
  149. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/data/x/x_social_model.py +0 -0
  150. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/loglevel.py +0 -0
  151. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/playwright.py +0 -0
  152. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/proxy_session.py +0 -0
  153. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/session.py +0 -0
  154. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/sportsball.py +0 -0
  155. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/vendor/__init__.py +0 -0
  156. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball/vendor/pygooglenews/__init__.py +0 -0
  157. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball.egg-info/SOURCES.txt +0 -0
  158. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball.egg-info/dependency_links.txt +0 -0
  159. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball.egg-info/entry_points.txt +0 -0
  160. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball.egg-info/not-zip-safe +0 -0
  161. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball.egg-info/requires.txt +0 -0
  162. {sportsball-0.3.52 → sportsball-0.3.54}/sportsball.egg-info/top_level.txt +0 -0
  163. {sportsball-0.3.52 → sportsball-0.3.54}/tests/__init__.py +0 -0
  164. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/__init__.py +0 -0
  165. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/afl/__init__.py +0 -0
  166. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/afl/afltables/__init__.py +0 -0
  167. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/afl/afltables/afl_afltables_game_model_test.py +0 -0
  168. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/afl/afltables/afl_afltables_league_model_test.py +0 -0
  169. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/afl/afltables/afl_afltables_player_model_test.py +0 -0
  170. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/aussportsbetting/__init__.py +0 -0
  171. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/aussportsbetting/aussportsbetting_game_model_test.py +0 -0
  172. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/combined/__init__.py +0 -0
  173. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/combined/combined_game_model_test.py +0 -0
  174. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/combined/combined_player_model_test.py +0 -0
  175. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/espn/__init__.py +0 -0
  176. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/espn/espn_game_model_test.py +0 -0
  177. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/espn/espn_player_model_test.py +0 -0
  178. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/game_model_test.py +0 -0
  179. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/google/__init__.py +0 -0
  180. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/google/google_address_model_test.py +0 -0
  181. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/google/google_news_model_test.py +0 -0
  182. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/nba/__init__.py +0 -0
  183. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/nba/nba/__init__.py +0 -0
  184. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/nba/nba/nba_nba_game_model_test.py +0 -0
  185. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/nba/nba/nba_nba_league_model_test.py +0 -0
  186. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/nba/nba/nba_nba_team_model_test.py +0 -0
  187. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/nba/sportsdb/__init__.py +0 -0
  188. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/nba/sportsdb/nba_sportsdb_league_model_test.py +0 -0
  189. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/nba/sportsreference/__init__.py +0 -0
  190. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/nba/sportsreference/nba_sportsreference_league_model_test.py +0 -0
  191. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/ncaab/__init__.py +0 -0
  192. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/ncaab/sportsreference/__init__.py +0 -0
  193. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/ncaab/sportsreference/ncaab_sportsreference_league_model_test.py +0 -0
  194. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/nfl/__init__.py +0 -0
  195. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/nfl/sportsdb/__init__.py +0 -0
  196. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/nfl/sportsdb/nfl_sportsdb_league_model_test.py +0 -0
  197. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/oddsportal/__init__.py +0 -0
  198. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/oddsportal/decrypt_test.py +0 -0
  199. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/oddsportal/oddsportal_game_model_test.py +0 -0
  200. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/oddsportal/oddsportal_league_model_test.py +0 -0
  201. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/player_model_test.py +0 -0
  202. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/social_model_test.py +0 -0
  203. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/sportsdb/__init__.py +0 -0
  204. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/sportsdb/sportsdb_game_model_test.py +0 -0
  205. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/sportsdb/sportsdb_league_model_test.py +0 -0
  206. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/sportsdb/sportsdb_team_model_test.py +0 -0
  207. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/sportsdb/sportsdb_venue_model_test.py +0 -0
  208. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/sportsreference/__init__.py +0 -0
  209. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/sportsreference/sportsreference_league_model_test.py +0 -0
  210. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/sportsreference/sportsreference_player_model_test.py +0 -0
  211. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/sportsreference/sportsreference_venue_model_test.py +0 -0
  212. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/team_model_test.py +0 -0
  213. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/x/__init__.py +0 -0
  214. {sportsball-0.3.52 → sportsball-0.3.54}/tests/data/x/x_social_model_test.py +0 -0
  215. {sportsball-0.3.52 → sportsball-0.3.54}/tests/proxy_session_test.py +0 -0
  216. {sportsball-0.3.52 → sportsball-0.3.54}/tests/sportsball_test.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: sportsball
3
- Version: 0.3.52
3
+ Version: 0.3.54
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.52',
29
+ version='0.3.54',
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.52"
3
+ __VERSION__ = "0.3.54"
@@ -2260,6 +2260,24 @@ FINNERAN_PAVILION = SportsballGeocodeTuple(
2260
2260
  housenumber="",
2261
2261
  country="USA",
2262
2262
  )
2263
+ SCHEELS_ARENA = SportsballGeocodeTuple(
2264
+ city="Fargo",
2265
+ state="ND",
2266
+ postal="",
2267
+ lat=46.900442,
2268
+ lng=-96.799025,
2269
+ housenumber="1600",
2270
+ country="USA",
2271
+ )
2272
+ BROOKSHIRE_GROCERY_ARENA = SportsballGeocodeTuple(
2273
+ city="Bossier City",
2274
+ state="LA",
2275
+ postal="",
2276
+ lat=32.465167,
2277
+ lng=-93.673583,
2278
+ housenumber="2000",
2279
+ country="USA",
2280
+ )
2263
2281
  _CACHED_GEOCODES: dict[str, Any] = {
2264
2282
  "S.C.G. - Australia": SCG,
2265
2283
  "Victoria Park - Australia": SportsballGeocodeTuple(
@@ -4556,15 +4574,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
4556
4574
  housenumber="936",
4557
4575
  country="USA",
4558
4576
  ),
4559
- "Scheels Center, Fargo, North Dakota": SportsballGeocodeTuple(
4560
- city="Fargo",
4561
- state="ND",
4562
- postal="",
4563
- lat=46.900442,
4564
- lng=-96.799025,
4565
- housenumber="1600",
4566
- country="USA",
4567
- ),
4577
+ "Scheels Center, Fargo, North Dakota": SCHEELS_ARENA,
4568
4578
  "Findlay Toyota Court at Walkup Skydome, Flagstaff, Arizona": WALKUP_SKYDOME,
4569
4579
  "Sanford Coyote Sports Center, Vermillon, South Dakota": SportsballGeocodeTuple(
4570
4580
  city="Vermillon",
@@ -11458,15 +11468,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
11458
11468
  housenumber="2300",
11459
11469
  country="USA",
11460
11470
  ),
11461
- "Brookshire Grocery Arena, Bossier City, Louisiana": SportsballGeocodeTuple(
11462
- city="Bossier City",
11463
- state="LA",
11464
- postal="",
11465
- lat=32.465167,
11466
- lng=-93.673583,
11467
- housenumber="2000",
11468
- country="USA",
11469
- ),
11471
+ "Brookshire Grocery Arena, Bossier City, Louisiana": BROOKSHIRE_GROCERY_ARENA,
11470
11472
  "Roberto Clemente Coliseum, San Juan": SportsballGeocodeTuple(
11471
11473
  city="San Juan",
11472
11474
  state="PR",
@@ -12494,6 +12496,162 @@ _CACHED_GEOCODES: dict[str, Any] = {
12494
12496
  country="USA",
12495
12497
  ),
12496
12498
  "The Pavilion, Villanova, Pennsylvania": FINNERAN_PAVILION,
12499
+ "Scheels Arena, Fargo, North Dakota": SCHEELS_ARENA,
12500
+ "DakotaDome , Vermillion, South Dakota": SportsballGeocodeTuple(
12501
+ city="Vermillion",
12502
+ state="SD",
12503
+ postal="",
12504
+ lat=42.791111,
12505
+ lng=-96.927778,
12506
+ housenumber="1101",
12507
+ country="USA",
12508
+ ),
12509
+ "Benjamin Johnson Arena, Spartanburg, South Carolina": SportsballGeocodeTuple(
12510
+ city="Spartanburg",
12511
+ state="SC",
12512
+ postal="",
12513
+ lat=34.960278,
12514
+ lng=-81.932778,
12515
+ housenumber="",
12516
+ country="USA",
12517
+ ),
12518
+ "Hartford, Connecticut": SportsballGeocodeTuple(
12519
+ city="Hartford",
12520
+ state="CT",
12521
+ postal="",
12522
+ lat=41.7625,
12523
+ lng=-72.674167,
12524
+ housenumber="",
12525
+ country="USA",
12526
+ ),
12527
+ "Quest MultiSport, Chicago, Illinois": SportsballGeocodeTuple(
12528
+ city="Chicago",
12529
+ state="IL",
12530
+ postal="60612",
12531
+ lat=41.8733479,
12532
+ lng=-87.6923655,
12533
+ housenumber="2641",
12534
+ country="USA",
12535
+ ),
12536
+ "ICI Center (Embry-Riddle), Daytona Beach, Florida": SportsballGeocodeTuple(
12537
+ city="Daytona Beach",
12538
+ state="FL",
12539
+ postal="32114",
12540
+ lat=29.1886,
12541
+ lng=-81.0487,
12542
+ housenumber="1",
12543
+ country="USA",
12544
+ ),
12545
+ "South Point Arena, Las Vegas, Nevada": SportsballGeocodeTuple(
12546
+ city="Las Vegas",
12547
+ state="NV",
12548
+ postal="89183",
12549
+ lat=36.0112358,
12550
+ lng=-115.1752286,
12551
+ housenumber="9777",
12552
+ country="USA",
12553
+ ),
12554
+ "Abrams Physical Fitness Center, Fort Hood, Texas": SportsballGeocodeTuple(
12555
+ city="Fort Hood",
12556
+ state="TX",
12557
+ postal="76544",
12558
+ lat=31.1382238,
12559
+ lng=-97.7772131,
12560
+ housenumber="",
12561
+ country="USA",
12562
+ ),
12563
+ "CenturyLink Center (LA), Bossier City, Louisiana": BROOKSHIRE_GROCERY_ARENA,
12564
+ "Dothan Civic Center, Dothan, Alabama": SportsballGeocodeTuple(
12565
+ city="Dothan",
12566
+ state="AL",
12567
+ postal="",
12568
+ lat=31.224722,
12569
+ lng=-85.39,
12570
+ housenumber="",
12571
+ country="USA",
12572
+ ),
12573
+ "Stockton Arena, Stockton, California": SportsballGeocodeTuple(
12574
+ city="Stockton",
12575
+ state="CA",
12576
+ postal="95203",
12577
+ lat=37.9561651,
12578
+ lng=-121.2960735,
12579
+ housenumber="248",
12580
+ country="USA",
12581
+ ),
12582
+ "Le Moyne Events Center, Syracuse, New York": SportsballGeocodeTuple(
12583
+ city="Syracuse",
12584
+ state="NY",
12585
+ postal="13214",
12586
+ lat=43.0502,
12587
+ lng=-76.0848,
12588
+ housenumber="500",
12589
+ country="USA",
12590
+ ),
12591
+ "Bloch Arena, Honolulu, Hawaii": SportsballGeocodeTuple(
12592
+ city="Honolulu",
12593
+ state="HI",
12594
+ postal="96818",
12595
+ lat=21.3477415,
12596
+ lng=-157.9412764,
12597
+ housenumber="224",
12598
+ country="USA",
12599
+ ),
12600
+ "Charleston Civic Center, Charleston, West Virginia": SportsballGeocodeTuple(
12601
+ city="Charleston",
12602
+ state="WV",
12603
+ postal="25301",
12604
+ lat=38.35519,
12605
+ lng=-81.64152,
12606
+ housenumber="200",
12607
+ country="USA",
12608
+ ),
12609
+ "Kezar Pavillion, San Francisco, California": KEZAR_STADIUM,
12610
+ "H.E.B. Center at Cedar Park, Cedar Park, Texas": SportsballGeocodeTuple(
12611
+ city="Cedar Park",
12612
+ state="TX",
12613
+ postal="",
12614
+ lat=30.5414,
12615
+ lng=-97.8202,
12616
+ housenumber="2100",
12617
+ country="USA",
12618
+ ),
12619
+ "Tom Golisano Field House, Ave Maria, Florida": SportsballGeocodeTuple(
12620
+ city="Ave Maria",
12621
+ state="FL",
12622
+ postal="34142",
12623
+ lat=26.3396049,
12624
+ lng=-81.4410362,
12625
+ housenumber="4810",
12626
+ country="USA",
12627
+ ),
12628
+ "Tuba City HS Gym, Tuba City, Arizona": SportsballGeocodeTuple(
12629
+ city="Tuba City",
12630
+ state="AZ",
12631
+ postal="86045",
12632
+ lat=36.126661,
12633
+ lng=-111.223479,
12634
+ housenumber="",
12635
+ country="USA",
12636
+ ),
12637
+ "Lakeland Center, Lakeland, Florida": SportsballGeocodeTuple(
12638
+ city="Lakeland",
12639
+ state="FL",
12640
+ postal="33815",
12641
+ lat=28.041053,
12642
+ lng=-81.963619,
12643
+ housenumber="701",
12644
+ country="USA",
12645
+ ),
12646
+ "'Iolani School Gym, Honolulu, Hawaii": SportsballGeocodeTuple(
12647
+ city="Honolulu",
12648
+ state="HI",
12649
+ postal="96826",
12650
+ lat=21.2865,
12651
+ lng=-157.824567,
12652
+ housenumber="563",
12653
+ country="USA",
12654
+ ),
12497
12655
  }
12498
12656
 
12499
12657
 
@@ -142,8 +142,11 @@ def _find_old_dt(
142
142
  points = int(team_name.split()[-1].strip())
143
143
  team_name = " ".join(team_name.split()[:-1]).strip()
144
144
  break
145
+ team_name = team_name.split("(")[0].strip()
145
146
  team_a = soup.find("a", text=team_name, href=True)
146
147
  if not isinstance(team_a, Tag):
148
+ logging.error(team_name)
149
+ logging.error(response.url)
147
150
  logging.error(response.text)
148
151
  raise ValueError("team_a is not a tag.")
149
152
  team_url = urllib.parse.urljoin(url, str(team_a.get("href")))
@@ -66,8 +66,10 @@ def _find_name(response: requests.Response, soup: BeautifulSoup, url: str) -> st
66
66
  return a.get_text().strip()
67
67
  name_tag = soup.find("meta", itemprop="name")
68
68
  if not isinstance(name_tag, Tag):
69
- logging.error(response.text)
70
- raise ValueError("name_tag not a tag.") from exc
69
+ name_tag = soup.find("meta", itemprop="og:title")
70
+ if not isinstance(name_tag, Tag):
71
+ logging.error(response.text)
72
+ raise ValueError("name_tag not a tag.") from exc
71
73
  content = name_tag.get("content")
72
74
  if not isinstance(content, str):
73
75
  raise ValueError("content not a tag.") from exc
@@ -8,7 +8,14 @@ from .loglevel import LogLevel
8
8
 
9
9
  def setup_logger() -> None:
10
10
  """Setup the logger to perform the required logging."""
11
- logging.basicConfig()
11
+ logging.basicConfig(
12
+ filename="sportsball.log", # Specify the log file name
13
+ filemode="w", # 'a' for append, 'w' to overwrite
14
+ encoding="utf-8", # Optional, specify encoding
15
+ level=logging.INFO, # Set the logging level
16
+ format="%(asctime)s - %(levelname)s - %(message)s", # Define the log message format
17
+ datefmt="%Y-%m-%d %H:%M:%S", # Define the date and time format
18
+ )
12
19
  logger = logging.getLogger()
13
20
  args = parse_args()
14
21
  match args.loglevel:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: sportsball
3
- Version: 0.3.52
3
+ Version: 0.3.54
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
@@ -883,3 +883,65 @@ class TestSportsReferenceGameModel(unittest.TestCase):
883
883
  datetime.datetime(2010, 10, 10, 10, 10, 0),
884
884
  )
885
885
  self.assertEqual(game_model.dt, datetime.datetime(1968, 4, 14, 0, 0))
886
+
887
+ def test_dt_old_style_18(self):
888
+ url = "https://www.sports-reference.com/cbb/boxscores/2016-04-02-north-carolina.html"
889
+ with requests_mock.Mocker() as m:
890
+ with open(os.path.join(self.dir, "2016-04-02-north-carolina.html"), "rb") as f:
891
+ m.get(url, content=f.read())
892
+ with open(os.path.join(self.dir, "syracuse_2016.html"), "rb") as f:
893
+ m.get("https://www.sports-reference.com/cbb/schools/syracuse/2016.html", content=f.read())
894
+ with open(os.path.join(self.dir, "franklin-howard-1.html"), "rb") as f:
895
+ m.get("https://www.sports-reference.com/cbb/players/franklin-howard-1.html", content=f.read())
896
+ with open(os.path.join(self.dir, "michael-gbinije-1.html"), "rb") as f:
897
+ m.get("https://www.sports-reference.com/cbb/players/michael-gbinije-1.html", content=f.read())
898
+ with open(os.path.join(self.dir, "malachi-richardson-1.html"), "rb") as f:
899
+ m.get("https://www.sports-reference.com/cbb/players/malachi-richardson-1.html", content=f.read())
900
+ with open(os.path.join(self.dir, "dajuan-coleman-1.html"), "rb") as f:
901
+ m.get("https://www.sports-reference.com/cbb/players/dajuan-coleman-1.html", content=f.read())
902
+ with open(os.path.join(self.dir, "trevor-cooney-1.html"), "rb") as f:
903
+ m.get("https://www.sports-reference.com/cbb/players/trevor-cooney-1.html", content=f.read())
904
+ with open(os.path.join(self.dir, "tyler-roberson-1.html"), "rb") as f:
905
+ m.get("https://www.sports-reference.com/cbb/players/tyler-roberson-1.html", content=f.read())
906
+ with open(os.path.join(self.dir, "tyler-lydon-1.html"), "rb") as f:
907
+ m.get("https://www.sports-reference.com/cbb/players/tyler-lydon-1.html", content=f.read())
908
+ with open(os.path.join(self.dir, "north-carolina-2016.html"), "rb") as f:
909
+ m.get("https://www.sports-reference.com/cbb/schools/north-carolina/2016.html", content=f.read())
910
+ with open(os.path.join(self.dir, "kenny-williams-3.html"), "rb") as f:
911
+ m.get("https://www.sports-reference.com/cbb/players/kenny-williams-3.html", content=f.read())
912
+ with open(os.path.join(self.dir, "joel-berry-1.html"), "rb") as f:
913
+ m.get("https://www.sports-reference.com/cbb/players/joel-berry-1.html", content=f.read())
914
+ with open(os.path.join(self.dir, "brice-johnson-1.html"), "rb") as f:
915
+ m.get("https://www.sports-reference.com/cbb/players/brice-johnson-1.html", content=f.read())
916
+ with open(os.path.join(self.dir, "luke-maye-1.html"), "rb") as f:
917
+ m.get("https://www.sports-reference.com/cbb/players/luke-maye-1.html", content=f.read())
918
+ with open(os.path.join(self.dir, "nate-britt-1.html"), "rb") as f:
919
+ m.get("https://www.sports-reference.com/cbb/players/nate-britt-1.html", content=f.read())
920
+ with open(os.path.join(self.dir, "kanler-coker-1.html"), "rb") as f:
921
+ m.get("https://www.sports-reference.com/cbb/players/kanler-coker-1.html", content=f.read())
922
+ with open(os.path.join(self.dir, "theo-pinson-1.html"), "rb") as f:
923
+ m.get("https://www.sports-reference.com/cbb/players/theo-pinson-1.html", content=f.read())
924
+ with open(os.path.join(self.dir, "kennedy-meeks-1.html"), "rb") as f:
925
+ m.get("https://www.sports-reference.com/cbb/players/kennedy-meeks-1.html", content=f.read())
926
+ with open(os.path.join(self.dir, "marcus-paige-1.html"), "rb") as f:
927
+ m.get("https://www.sports-reference.com/cbb/players/marcus-paige-1.html", content=f.read())
928
+ with open(os.path.join(self.dir, "joel-james-1.html"), "rb") as f:
929
+ m.get("https://www.sports-reference.com/cbb/players/joel-james-1.html", content=f.read())
930
+ with open(os.path.join(self.dir, "spenser-dalton-1.html"), "rb") as f:
931
+ m.get("https://www.sports-reference.com/cbb/players/spenser-dalton-1.html", content=f.read())
932
+ with open(os.path.join(self.dir, "justin-jackson-4.html"), "rb") as f:
933
+ m.get("https://www.sports-reference.com/cbb/players/justin-jackson-4.html", content=f.read())
934
+ with open(os.path.join(self.dir, "toby-egbuna-1.html"), "rb") as f:
935
+ m.get("https://www.sports-reference.com/cbb/players/toby-egbuna-1.html", content=f.read())
936
+ with open(os.path.join(self.dir, "stilman-white-1.html"), "rb") as f:
937
+ m.get("https://www.sports-reference.com/cbb/players/stilman-white-1.html", content=f.read())
938
+ with open(os.path.join(self.dir, "isaiah-hicks-1.html"), "rb") as f:
939
+ m.get("https://www.sports-reference.com/cbb/players/isaiah-hicks-1.html", content=f.read())
940
+
941
+ game_model = create_sportsreference_game_model(
942
+ self.session,
943
+ url,
944
+ League.NBA,
945
+ datetime.datetime(2010, 10, 10, 10, 10, 0),
946
+ )
947
+ self.assertEqual(game_model.dt, datetime.datetime(2016, 4, 2, 0, 0))
@@ -146,3 +146,23 @@ class TestSportsReferenceTeamModel(unittest.TestCase):
146
146
  {},
147
147
  )
148
148
  self.assertEqual(team_model.name, "Cleveland Cavaliers")
149
+
150
+ def test_name_2(self):
151
+ url = "http://www.basketball-reference.com/teams/LAL/2015.html"
152
+ with requests_mock.Mocker() as m:
153
+ with open(os.path.join(self.dir, "LAL_2015.html"), "rb") as f:
154
+ m.get(url, content=f.read())
155
+ team_model = create_sportsreference_team_model(
156
+ self.session,
157
+ url,
158
+ datetime.datetime(2010, 10, 10, 10, 10, 00),
159
+ League.NBA,
160
+ set(),
161
+ 10.0,
162
+ {},
163
+ {},
164
+ {},
165
+ {},
166
+ {},
167
+ )
168
+ self.assertEqual(team_model.name, "Los Angeles Lakers")
File without changes
File without changes
File without changes
File without changes