sportsball 0.3.55__tar.gz → 0.3.56__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.55/sportsball.egg-info → sportsball-0.3.56}/PKG-INFO +1 -1
  2. {sportsball-0.3.55 → sportsball-0.3.56}/setup.py +1 -1
  3. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/__init__.py +1 -1
  4. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/afl/afl_afl_player_model.py +1 -0
  5. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/afltables/afl_afltables_game_model.py +12 -5
  6. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/afltables/afl_afltables_player_model.py +9 -4
  7. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/afltables/afl_afltables_team_model.py +12 -6
  8. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/combined/combined_player_model.py +6 -1
  9. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/espn/espn_player_model.py +1 -0
  10. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/google/google_address_model.py +10 -0
  11. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/player_model.py +6 -0
  12. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/sportsreference/sportsreference_game_model.py +3 -0
  13. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/sportsreference/sportsreference_player_model.py +1 -0
  14. {sportsball-0.3.55 → sportsball-0.3.56/sportsball.egg-info}/PKG-INFO +1 -1
  15. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/afl/afltables/afl_afltables_player_model_test.py +1 -0
  16. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/combined/combined_player_model_test.py +1 -0
  17. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/player_model_test.py +1 -0
  18. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/sportsreference/sportsreference_game_model_test.py +14 -0
  19. {sportsball-0.3.55 → sportsball-0.3.56}/LICENSE +0 -0
  20. {sportsball-0.3.55 → sportsball-0.3.56}/MANIFEST.in +0 -0
  21. {sportsball-0.3.55 → sportsball-0.3.56}/README.md +0 -0
  22. {sportsball-0.3.55 → sportsball-0.3.56}/requirements.txt +0 -0
  23. {sportsball-0.3.55 → sportsball-0.3.56}/setup.cfg +0 -0
  24. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/__main__.py +0 -0
  25. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/args.py +0 -0
  26. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/cache.py +0 -0
  27. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/__init__.py +0 -0
  28. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/address_model.py +0 -0
  29. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/__init__.py +0 -0
  30. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/afl/__init__.py +0 -0
  31. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/afl/afl_afl_game_model.py +0 -0
  32. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/afl/afl_afl_league_model.py +0 -0
  33. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/afl/afl_afl_team_model.py +0 -0
  34. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/afl/afl_afl_venue_model.py +0 -0
  35. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/afltables/__init__.py +0 -0
  36. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/afltables/afl_afltables_league_model.py +0 -0
  37. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/afltables/afl_afltables_venue_model.py +0 -0
  38. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/aussportsbetting/__init__.py +0 -0
  39. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/aussportsbetting/afl_aussportsbetting_league_model.py +0 -0
  40. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/combined/__init__.py +0 -0
  41. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/combined/afl_combined_league_model.py +0 -0
  42. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/espn/__init__.py +0 -0
  43. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/espn/afl_espn_league_model.py +0 -0
  44. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/oddsportal/__init__.py +0 -0
  45. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/oddsportal/afl_oddsportal_league_model.py +0 -0
  46. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/aussportsbetting/__init__.py +0 -0
  47. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/aussportsbetting/aussportsbetting_bookie_model.py +0 -0
  48. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/aussportsbetting/aussportsbetting_game_model.py +0 -0
  49. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/aussportsbetting/aussportsbetting_league_model.py +0 -0
  50. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/aussportsbetting/aussportsbetting_odds_model.py +0 -0
  51. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/aussportsbetting/aussportsbetting_team_model.py +0 -0
  52. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/aussportsbetting/aussportsbetting_venue_model.py +0 -0
  53. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/bookie_model.py +0 -0
  54. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/combined/__init__.py +0 -0
  55. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/combined/combined_address_model.py +0 -0
  56. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/combined/combined_game_model.py +0 -0
  57. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/combined/combined_league_model.py +0 -0
  58. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/combined/combined_team_model.py +0 -0
  59. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/combined/combined_venue_model.py +0 -0
  60. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/combined/combined_weather_model.py +0 -0
  61. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/espn/__init__.py +0 -0
  62. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/espn/espn_bookie_model.py +0 -0
  63. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/espn/espn_game_model.py +0 -0
  64. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/espn/espn_league_model.py +0 -0
  65. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/espn/espn_odds_model.py +0 -0
  66. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/espn/espn_team_model.py +0 -0
  67. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/espn/espn_venue_model.py +0 -0
  68. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/field_type.py +0 -0
  69. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/game_model.py +0 -0
  70. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/google/__init__.py +0 -0
  71. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/google/google_news_model.py +0 -0
  72. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/league.py +0 -0
  73. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/league_model.py +0 -0
  74. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/model.py +0 -0
  75. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/__init__.py +0 -0
  76. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/combined/__init__.py +0 -0
  77. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/combined/nba_combined_league_model.py +0 -0
  78. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/espn/__init__.py +0 -0
  79. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/espn/nba_espn_league_model.py +0 -0
  80. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/nba/__init__.py +0 -0
  81. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/nba/nba_nba_game_model.py +0 -0
  82. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/nba/nba_nba_league_model.py +0 -0
  83. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/nba/nba_nba_team_model.py +0 -0
  84. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/oddsportal/__init__.py +0 -0
  85. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/oddsportal/nba_oddsportal_league_model.py +0 -0
  86. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/sportsdb/__init__.py +0 -0
  87. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/sportsdb/nba_sportsdb_league_model.py +0 -0
  88. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/sportsreference/__init__.py +0 -0
  89. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/sportsreference/nba_sportsreference_league_model.py +0 -0
  90. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaab/__init__.py +0 -0
  91. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaab/combined/__init__.py +0 -0
  92. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaab/combined/ncaab_combined_league_model.py +0 -0
  93. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaab/espn/__init__.py +0 -0
  94. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaab/espn/ncaab_espn_league_model.py +0 -0
  95. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaab/oddsportal/__init__.py +0 -0
  96. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaab/oddsportal/ncaab_oddsportal_league_model.py +0 -0
  97. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaab/sportsreference/__init__.py +0 -0
  98. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaab/sportsreference/ncaab_sportsreference_league_model.py +0 -0
  99. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaaf/__init__.py +0 -0
  100. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaaf/combined/__init__.py +0 -0
  101. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaaf/combined/ncaaf_combined_league_model.py +0 -0
  102. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaaf/espn/__init__.py +0 -0
  103. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaaf/espn/ncaaf_espn_league_model.py +0 -0
  104. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaaf/oddsportal/__init__.py +0 -0
  105. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaaf/oddsportal/ncaaf_oddsportal_league_model.py +0 -0
  106. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/news_model.py +0 -0
  107. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nfl/__init__.py +0 -0
  108. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nfl/aussportsbetting/__init__.py +0 -0
  109. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nfl/aussportsbetting/nfl_aussportsbetting_league_model.py +0 -0
  110. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nfl/combined/__init__.py +0 -0
  111. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nfl/combined/nfl_combined_league_model.py +0 -0
  112. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nfl/espn/__init__.py +0 -0
  113. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nfl/espn/nfl_espn_league_model.py +0 -0
  114. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nfl/oddsportal/__init__.py +0 -0
  115. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nfl/oddsportal/nfl_oddsportal_league_model.py +0 -0
  116. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nfl/sportsdb/__init__.py +0 -0
  117. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nfl/sportsdb/nfl_sportsdb_league_model.py +0 -0
  118. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/odds_model.py +0 -0
  119. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/oddsportal/__init__.py +0 -0
  120. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/oddsportal/decrypt.py +0 -0
  121. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/oddsportal/oddsportal_bookie_model.py +0 -0
  122. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/oddsportal/oddsportal_game_model.py +0 -0
  123. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/oddsportal/oddsportal_league_model.py +0 -0
  124. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/oddsportal/oddsportal_odds_model.py +0 -0
  125. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/oddsportal/oddsportal_team_model.py +0 -0
  126. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/oddsportal/oddsportal_venue_model.py +0 -0
  127. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/season_type.py +0 -0
  128. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/social_model.py +0 -0
  129. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/sportsdb/__init__.py +0 -0
  130. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/sportsdb/sportsdb_game_model.py +0 -0
  131. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/sportsdb/sportsdb_league_model.py +0 -0
  132. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/sportsdb/sportsdb_team_model.py +0 -0
  133. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/sportsdb/sportsdb_venue_model.py +0 -0
  134. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/sportsreference/__init__.py +0 -0
  135. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/sportsreference/sportsreference_league_model.py +0 -0
  136. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/sportsreference/sportsreference_team_model.py +0 -0
  137. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/sportsreference/sportsreference_venue_model.py +0 -0
  138. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/team_model.py +0 -0
  139. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/venue_model.py +0 -0
  140. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/weather/__init__.py +0 -0
  141. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/weather/gribstream/__init__.py +0 -0
  142. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/weather/gribstream/gribstream_weather_model.py +0 -0
  143. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/weather/multi_weather_model.py +0 -0
  144. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/weather/openmeteo/__init__.py +0 -0
  145. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/weather/openmeteo/openmeteo_weather_model.py +0 -0
  146. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/weather_model.py +0 -0
  147. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/wikipedia/__init__.py +0 -0
  148. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/wikipedia/wikipedia_venue_model.py +0 -0
  149. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/x/__init__.py +0 -0
  150. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/x/x_social_model.py +0 -0
  151. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/logger.py +0 -0
  152. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/loglevel.py +0 -0
  153. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/playwright.py +0 -0
  154. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/proxy_session.py +0 -0
  155. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/session.py +0 -0
  156. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/sportsball.py +0 -0
  157. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/vendor/__init__.py +0 -0
  158. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/vendor/pygooglenews/__init__.py +0 -0
  159. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball.egg-info/SOURCES.txt +0 -0
  160. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball.egg-info/dependency_links.txt +0 -0
  161. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball.egg-info/entry_points.txt +0 -0
  162. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball.egg-info/not-zip-safe +0 -0
  163. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball.egg-info/requires.txt +0 -0
  164. {sportsball-0.3.55 → sportsball-0.3.56}/sportsball.egg-info/top_level.txt +0 -0
  165. {sportsball-0.3.55 → sportsball-0.3.56}/tests/__init__.py +0 -0
  166. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/__init__.py +0 -0
  167. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/afl/__init__.py +0 -0
  168. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/afl/afltables/__init__.py +0 -0
  169. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/afl/afltables/afl_afltables_game_model_test.py +0 -0
  170. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/afl/afltables/afl_afltables_league_model_test.py +0 -0
  171. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/aussportsbetting/__init__.py +0 -0
  172. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/aussportsbetting/aussportsbetting_game_model_test.py +0 -0
  173. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/combined/__init__.py +0 -0
  174. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/combined/combined_game_model_test.py +0 -0
  175. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/espn/__init__.py +0 -0
  176. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/espn/espn_game_model_test.py +0 -0
  177. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/espn/espn_player_model_test.py +0 -0
  178. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/game_model_test.py +0 -0
  179. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/google/__init__.py +0 -0
  180. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/google/google_address_model_test.py +0 -0
  181. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/google/google_news_model_test.py +0 -0
  182. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/nba/__init__.py +0 -0
  183. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/nba/nba/__init__.py +0 -0
  184. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/nba/nba/nba_nba_game_model_test.py +0 -0
  185. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/nba/nba/nba_nba_league_model_test.py +0 -0
  186. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/nba/nba/nba_nba_team_model_test.py +0 -0
  187. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/nba/sportsdb/__init__.py +0 -0
  188. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/nba/sportsdb/nba_sportsdb_league_model_test.py +0 -0
  189. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/nba/sportsreference/__init__.py +0 -0
  190. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/nba/sportsreference/nba_sportsreference_league_model_test.py +0 -0
  191. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/ncaab/__init__.py +0 -0
  192. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/ncaab/sportsreference/__init__.py +0 -0
  193. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/ncaab/sportsreference/ncaab_sportsreference_league_model_test.py +0 -0
  194. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/nfl/__init__.py +0 -0
  195. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/nfl/sportsdb/__init__.py +0 -0
  196. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/nfl/sportsdb/nfl_sportsdb_league_model_test.py +0 -0
  197. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/oddsportal/__init__.py +0 -0
  198. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/oddsportal/decrypt_test.py +0 -0
  199. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/oddsportal/oddsportal_game_model_test.py +0 -0
  200. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/oddsportal/oddsportal_league_model_test.py +0 -0
  201. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/social_model_test.py +0 -0
  202. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/sportsdb/__init__.py +0 -0
  203. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/sportsdb/sportsdb_game_model_test.py +0 -0
  204. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/sportsdb/sportsdb_league_model_test.py +0 -0
  205. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/sportsdb/sportsdb_team_model_test.py +0 -0
  206. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/sportsdb/sportsdb_venue_model_test.py +0 -0
  207. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/sportsreference/__init__.py +0 -0
  208. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/sportsreference/sportsreference_league_model_test.py +0 -0
  209. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/sportsreference/sportsreference_player_model_test.py +0 -0
  210. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/sportsreference/sportsreference_team_model_test.py +0 -0
  211. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/sportsreference/sportsreference_venue_model_test.py +0 -0
  212. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/team_model_test.py +0 -0
  213. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/x/__init__.py +0 -0
  214. {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/x/x_social_model_test.py +0 -0
  215. {sportsball-0.3.55 → sportsball-0.3.56}/tests/proxy_session_test.py +0 -0
  216. {sportsball-0.3.55 → sportsball-0.3.56}/tests/sportsball_test.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: sportsball
3
- Version: 0.3.55
3
+ Version: 0.3.56
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.55',
29
+ version='0.3.56',
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.55"
3
+ __VERSION__ = "0.3.56"
@@ -21,4 +21,5 @@ def create_afl_afl_player_model(
21
21
  assists=None,
22
22
  turnovers=None,
23
23
  name=name,
24
+ marks=None,
24
25
  )
@@ -1,6 +1,6 @@
1
1
  """AFL AFLTables game model."""
2
2
 
3
- # pylint: disable=too-many-arguments
3
+ # pylint: disable=too-many-arguments,too-many-branches
4
4
  import datetime
5
5
  import urllib.parse
6
6
  from urllib.parse import urlparse
@@ -152,7 +152,7 @@ def _create_afl_afltables_game_model(
152
152
 
153
153
  def _find_teams_metadata(
154
154
  soup: BeautifulSoup, team_infos: list[tuple[str, str, int]]
155
- ) -> list[tuple[str, list[tuple[str, str, int | None, str]], int]]:
155
+ ) -> list[tuple[str, list[tuple[str, str, int | None, str, int | None]], int]]:
156
156
  def _is_correct_table(table: Tag, name: str) -> bool:
157
157
  for th in table.find_all("th"):
158
158
  header_text = th.get_text().strip()
@@ -160,8 +160,10 @@ def _create_afl_afltables_game_model(
160
160
  return True
161
161
  return False
162
162
 
163
- def _find_players(table: Tag) -> list[tuple[str, str, int | None, str]]:
164
- players: list[tuple[str, str, int | None, str]] = []
163
+ def _find_players(
164
+ table: Tag,
165
+ ) -> list[tuple[str, str, int | None, str, int | None]]:
166
+ players: list[tuple[str, str, int | None, str, int | None]] = []
165
167
  for tr in table.find_all("tr"):
166
168
  player_row = False
167
169
  player_url = None
@@ -174,6 +176,7 @@ def _create_afl_afltables_game_model(
174
176
  jersey = None
175
177
  name = None
176
178
  kicks = None
179
+ marks = None
177
180
  for count, td in enumerate(tr.find_all("td")):
178
181
  if count == 0:
179
182
  jersey = td.get_text().strip()
@@ -188,13 +191,17 @@ def _create_afl_afltables_game_model(
188
191
  kicks_text = td.get_text().strip()
189
192
  if kicks_text:
190
193
  kicks = int(kicks_text)
194
+ elif count == 3:
195
+ marks_text = td.get_text().strip()
196
+ if marks_text:
197
+ marks = int(marks_text)
191
198
 
192
199
  if jersey is None:
193
200
  raise ValueError("jersey is null.")
194
201
  if name is None:
195
202
  raise ValueError("name is null")
196
203
 
197
- players.append((player_url, jersey, kicks, name))
204
+ players.append((player_url, jersey, kicks, name, marks))
198
205
  return players
199
206
 
200
207
  team_metadata = []
@@ -13,7 +13,7 @@ from ...player_model import PlayerModel
13
13
 
14
14
 
15
15
  def _create_afl_afltables_player_model(
16
- player_url: str, jersey: str, kicks: int | None, name: str
16
+ player_url: str, jersey: str, kicks: int | None, name: str, marks: int | None
17
17
  ) -> PlayerModel:
18
18
  o = urlparse(player_url)
19
19
  last_component = o.path.split("/")[-1]
@@ -31,14 +31,15 @@ def _create_afl_afltables_player_model(
31
31
  assists=None,
32
32
  turnovers=None,
33
33
  name=name,
34
+ marks=marks,
34
35
  )
35
36
 
36
37
 
37
38
  @MEMORY.cache
38
39
  def _cached_create_afl_afltables_player_model(
39
- player_url: str, jersey: str, kicks: int | None, name: str
40
+ player_url: str, jersey: str, kicks: int | None, name: str, marks: int | None
40
41
  ) -> PlayerModel:
41
- return _create_afl_afltables_player_model(player_url, jersey, kicks, name)
42
+ return _create_afl_afltables_player_model(player_url, jersey, kicks, name, marks)
42
43
 
43
44
 
44
45
  def create_afl_afltables_player_model(
@@ -48,6 +49,7 @@ def create_afl_afltables_player_model(
48
49
  dt: datetime.datetime,
49
50
  session: requests_cache.CachedSession,
50
51
  name: str,
52
+ marks: int | None,
51
53
  ) -> PlayerModel:
52
54
  """Create a player model from AFL Tables."""
53
55
  if (
@@ -59,6 +61,9 @@ def create_afl_afltables_player_model(
59
61
  jersey,
60
62
  kicks,
61
63
  name, # pyright: ignore
64
+ marks,
62
65
  )
63
66
  with session.cache_disabled():
64
- return _create_afl_afltables_player_model(player_url, jersey, kicks, name)
67
+ return _create_afl_afltables_player_model(
68
+ player_url, jersey, kicks, name, marks
69
+ )
@@ -44,7 +44,7 @@ _TEAM_NAME_MAP = {
44
44
 
45
45
  def _create_afl_afltables_team_model(
46
46
  team_url: str,
47
- players: list[tuple[str, str, int | None, str]],
47
+ players: list[tuple[str, str, int | None, str, int | None]],
48
48
  points: float,
49
49
  session: requests_cache.CachedSession,
50
50
  last_ladder_ranks: dict[str, int] | None,
@@ -72,9 +72,9 @@ def _create_afl_afltables_team_model(
72
72
  name=name,
73
73
  players=[ # pyright: ignore
74
74
  create_afl_afltables_player_model(
75
- player_url, jersey, kicks, dt, session, name
75
+ player_url, jersey, kicks, dt, session, name, marks
76
76
  )
77
- for player_url, jersey, kicks, name in players
77
+ for player_url, jersey, kicks, name, marks in players
78
78
  ],
79
79
  odds=[],
80
80
  points=points,
@@ -89,7 +89,7 @@ def _create_afl_afltables_team_model(
89
89
  @MEMORY.cache(ignore=["session"])
90
90
  def _cached_create_afl_afltables_team_model(
91
91
  team_url: str,
92
- players: list[tuple[str, str, int | None, str]],
92
+ players: list[tuple[str, str, int | None, str, int | None]],
93
93
  points: float,
94
94
  session: requests_cache.CachedSession,
95
95
  last_ladder_ranks: dict[str, int] | None,
@@ -97,13 +97,19 @@ def _cached_create_afl_afltables_team_model(
97
97
  league: League,
98
98
  ) -> TeamModel:
99
99
  return _create_afl_afltables_team_model(
100
- team_url, players, points, session, last_ladder_ranks, dt, league
100
+ team_url,
101
+ players,
102
+ points,
103
+ session,
104
+ last_ladder_ranks,
105
+ dt,
106
+ league,
101
107
  )
102
108
 
103
109
 
104
110
  def create_afl_afltables_team_model(
105
111
  team_url: str,
106
- players: list[tuple[str, str, int | None, str]],
112
+ players: list[tuple[str, str, int | None, str, int | None]],
107
113
  points: float,
108
114
  session: requests_cache.CachedSession,
109
115
  last_ladder_ranks: dict[str, int] | None,
@@ -1,6 +1,6 @@
1
1
  """Combined player model."""
2
2
 
3
- # pylint: disable=too-many-locals
3
+ # pylint: disable=too-many-locals,too-many-branches
4
4
  from ..player_model import PlayerModel
5
5
 
6
6
 
@@ -18,6 +18,7 @@ def create_combined_player_model(
18
18
  assists = None
19
19
  turnovers = None
20
20
  name = None
21
+ marks = None
21
22
  for player_model in player_models:
22
23
  player_model_jersey = player_model.jersey
23
24
  if player_model_jersey is not None:
@@ -49,6 +50,9 @@ def create_combined_player_model(
49
50
  player_model_name = player_model.name
50
51
  if player_model_name is not None:
51
52
  name = player_model_name
53
+ player_model_marks = player_model.marks
54
+ if player_model_marks is not None:
55
+ marks = player_model_marks
52
56
  if name is None:
53
57
  raise ValueError("name is null.")
54
58
  return PlayerModel(
@@ -63,4 +67,5 @@ def create_combined_player_model(
63
67
  assists=assists,
64
68
  turnovers=turnovers,
65
69
  name=name,
70
+ marks=marks,
66
71
  )
@@ -45,6 +45,7 @@ def _create_espn_player_model(
45
45
  assists=None,
46
46
  turnovers=None,
47
47
  name=name,
48
+ marks=None,
48
49
  )
49
50
 
50
51
 
@@ -12661,6 +12661,16 @@ _CACHED_GEOCODES: dict[str, Any] = {
12661
12661
  housenumber="",
12662
12662
  country="USA",
12663
12663
  ),
12664
+ "Monroe, Louisiana": SportsballGeocodeTuple(
12665
+ city="Monroe",
12666
+ state="LA",
12667
+ postal="",
12668
+ lat=32.509444,
12669
+ lng=-92.118333,
12670
+ housenumber="",
12671
+ country="USA",
12672
+ ),
12673
+ "Bison Sports Arena, Fargo, North Dakota": SCHEELS_ARENA,
12664
12674
  }
12665
12675
 
12666
12676
 
@@ -15,6 +15,7 @@ FIELD_GOALS_ATTEMPTED_COLUMN: Literal["field_goals_attempted"] = "field_goals_at
15
15
  OFFENSIVE_REBOUNDS_COLUMN: Literal["offensive_rebounds"] = "offensive_rebounds"
16
16
  ASSISTS_COLUMN: Literal["assists"] = "assists"
17
17
  TURNOVERS_COLUMN: Literal["turnovers"] = "turnovers"
18
+ PLAYER_MARKS_COLUMN: Literal["marks"] = "marks"
18
19
 
19
20
 
20
21
  class PlayerModel(BaseModel):
@@ -67,3 +68,8 @@ class PlayerModel(BaseModel):
67
68
  alias=TURNOVERS_COLUMN,
68
69
  )
69
70
  name: str
71
+ marks: int | None = Field(
72
+ ...,
73
+ json_schema_extra={TYPE_KEY: FieldType.LOOKAHEAD},
74
+ alias=PLAYER_MARKS_COLUMN,
75
+ )
@@ -210,12 +210,15 @@ def _find_old_dt(
210
210
  dt = parse(date)
211
211
  for df in dfs:
212
212
  test_row = df.iat[0, 0]
213
+ if isinstance(test_row, float):
214
+ continue
213
215
  try:
214
216
  if "Prev Game" in test_row:
215
217
  _process_team_row(df)
216
218
  break
217
219
  except TypeError as exc:
218
220
  logging.error(test_row)
221
+ logging.error(response.url)
219
222
  logging.error(response.text)
220
223
  raise exc
221
224
 
@@ -78,6 +78,7 @@ def _create_sportsreference_player_model(
78
78
  assists=assists.get(name),
79
79
  turnovers=turnovers.get(name),
80
80
  name=name,
81
+ marks=None,
81
82
  )
82
83
 
83
84
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: sportsball
3
- Version: 0.3.55
3
+ Version: 0.3.56
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
@@ -24,5 +24,6 @@ class TestAFLTablesPlayerModel(unittest.TestCase):
24
24
  dt,
25
25
  self._session,
26
26
  "Dennis Armfield",
27
+ 0,
27
28
  )
28
29
  self.assertEqual(player_model.identifier, "Dennis_Armfield")
@@ -30,6 +30,7 @@ class TestCombinedPlayerModel(unittest.TestCase):
30
30
  assists=None,
31
31
  turnovers=None,
32
32
  name="James Jones",
33
+ marks=None,
33
34
  )
34
35
  combined_player_model = create_combined_player_model(
35
36
  [player_model],
@@ -19,6 +19,7 @@ class TestPlayerModel(unittest.TestCase):
19
19
  assists=None,
20
20
  turnovers=None,
21
21
  name="James Jones",
22
+ marks=None,
22
23
  )
23
24
 
24
25
  def test_field_goals_attempted(self):
@@ -1005,3 +1005,17 @@ class TestSportsReferenceGameModel(unittest.TestCase):
1005
1005
  datetime.datetime(2010, 10, 10, 10, 10, 0),
1006
1006
  )
1007
1007
  self.assertEqual(game_model.dt, datetime.datetime(2016, 3, 24, 0, 0))
1008
+
1009
+ def test_dt_old_style_20(self):
1010
+ url = "https://www.sports-reference.com/cbb/boxscores/2016-02-23-savannah-state.html"
1011
+ with requests_mock.Mocker() as m:
1012
+ with open(os.path.join(self.dir, "2016-02-23-savannah-state.html"), "rb") as f:
1013
+ m.get(url, content=f.read())
1014
+
1015
+ game_model = create_sportsreference_game_model(
1016
+ self.session,
1017
+ url,
1018
+ League.NBA,
1019
+ datetime.datetime(2010, 10, 10, 10, 10, 0),
1020
+ )
1021
+ self.assertEqual(game_model.dt, datetime.datetime(2016, 2, 23, 0, 0))
File without changes
File without changes
File without changes
File without changes