sportsball 0.5.22__tar.gz → 0.5.23__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 (262) hide show
  1. {sportsball-0.5.22/sportsball.egg-info → sportsball-0.5.23}/PKG-INFO +3 -1
  2. {sportsball-0.5.22 → sportsball-0.5.23}/README.md +1 -0
  3. sportsball-0.5.22/sportsball.egg-info/requires.txt → sportsball-0.5.23/requirements.txt +1 -0
  4. {sportsball-0.5.22 → sportsball-0.5.23}/setup.py +1 -1
  5. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/__init__.py +1 -1
  6. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/afl/afl/afl_afl_league_model.py +5 -5
  7. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/afl/afltables/afl_afltables_league_model.py +3 -3
  8. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/afl/aussportsbetting/afl_aussportsbetting_league_model.py +3 -2
  9. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/afl/combined/afl_combined_league_model.py +3 -2
  10. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/afl/espn/afl_espn_league_model.py +3 -2
  11. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/afl/oddsportal/afl_oddsportal_league_model.py +3 -2
  12. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/aussportsbetting/aussportsbetting_league_model.py +2 -2
  13. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/combined/combined_league_model.py +3 -2
  14. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/espn/espn_league_model.py +2 -2
  15. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/hkjc/hkjc/hkjc_hkjc_coach_model.py +4 -4
  16. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/hkjc/hkjc/hkjc_hkjc_game_model.py +4 -4
  17. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/hkjc/hkjc/hkjc_hkjc_league_model.py +2 -2
  18. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/hkjc/hkjc/hkjc_hkjc_player_model.py +4 -4
  19. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/hkjc/hkjc/hkjc_hkjc_team_model.py +4 -4
  20. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/league_model.py +2 -2
  21. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/model.py +13 -6
  22. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nba/combined/nba_combined_league_model.py +2 -2
  23. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nba/espn/nba_espn_league_model.py +3 -2
  24. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nba/nba/nba_nba_league_model.py +2 -2
  25. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nba/nbacom/nba_nbacom_league_model.py +3 -2
  26. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nba/oddsportal/nba_oddsportal_league_model.py +3 -2
  27. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nba/sportsdb/nba_sportsdb_league_model.py +3 -2
  28. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nba/sportsreference/nba_sportsreference_league_model.py +3 -2
  29. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/ncaab/combined/ncaab_combined_league_model.py +3 -2
  30. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/ncaab/espn/ncaab_espn_league_model.py +3 -2
  31. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/ncaab/oddsportal/ncaab_oddsportal_league_model.py +3 -2
  32. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/ncaab/sportsreference/ncaab_sportsreference_league_model.py +3 -2
  33. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/ncaaf/combined/ncaaf_combined_league_model.py +3 -2
  34. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/ncaaf/espn/ncaaf_espn_league_model.py +3 -2
  35. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/ncaaf/oddsportal/ncaaf_oddsportal_league_model.py +3 -2
  36. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nfl/aussportsbetting/nfl_aussportsbetting_league_model.py +3 -2
  37. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nfl/combined/nfl_combined_league_model.py +3 -2
  38. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nfl/espn/nfl_espn_league_model.py +3 -2
  39. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nfl/oddsportal/nfl_oddsportal_league_model.py +3 -2
  40. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nfl/sportsdb/nfl_sportsdb_league_model.py +3 -2
  41. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/oddsportal/decrypt.py +3 -4
  42. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/oddsportal/oddsportal_game_model.py +4 -4
  43. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/oddsportal/oddsportal_league_model.py +2 -2
  44. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/sportsdb/sportsdb_league_model.py +2 -2
  45. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/sportsreference/sportsreference_coach_model.py +4 -4
  46. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/sportsreference/sportsreference_game_model.py +6 -6
  47. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/sportsreference/sportsreference_league_model.py +2 -2
  48. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/sportsreference/sportsreference_player_model.py +1 -1
  49. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/sportsreference/sportsreference_team_model.py +4 -4
  50. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/sportsball.py +11 -3
  51. {sportsball-0.5.22 → sportsball-0.5.23/sportsball.egg-info}/PKG-INFO +3 -1
  52. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball.egg-info/SOURCES.txt +0 -3
  53. sportsball-0.5.22/requirements.txt → sportsball-0.5.23/sportsball.egg-info/requires.txt +2 -1
  54. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/hkjc/hkjc/hkjc_hkjc_game_model_test.py +2 -3
  55. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/hkjc/hkjc/hkjc_hkjc_player_model_test.py +2 -2
  56. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/oddsportal/decrypt_test.py +2 -2
  57. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/oddsportal/oddsportal_game_model_test.py +2 -3
  58. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/sportsreference/sportsreference_team_model_test.py +2 -2
  59. sportsball-0.5.22/sportsball/proxy_session.py +0 -326
  60. sportsball-0.5.22/sportsball/session.py +0 -3
  61. sportsball-0.5.22/tests/proxy_session_test.py +0 -63
  62. {sportsball-0.5.22 → sportsball-0.5.23}/LICENSE +0 -0
  63. {sportsball-0.5.22 → sportsball-0.5.23}/MANIFEST.in +0 -0
  64. {sportsball-0.5.22 → sportsball-0.5.23}/setup.cfg +0 -0
  65. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/__main__.py +0 -0
  66. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/args.py +0 -0
  67. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/cache.py +0 -0
  68. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/__init__.py +0 -0
  69. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/address_model.py +0 -0
  70. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/afl/__init__.py +0 -0
  71. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/afl/afl/__init__.py +0 -0
  72. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/afl/afl/afl_afl_bookie_model.py +0 -0
  73. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/afl/afl/afl_afl_game_model.py +0 -0
  74. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/afl/afl/afl_afl_odds_model.py +0 -0
  75. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/afl/afl/afl_afl_player_model.py +0 -0
  76. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/afl/afl/afl_afl_team_model.py +0 -0
  77. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/afl/afl/afl_afl_venue_model.py +0 -0
  78. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/afl/afltables/__init__.py +0 -0
  79. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/afl/afltables/afl_afltables_coach_model.py +0 -0
  80. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/afl/afltables/afl_afltables_game_model.py +0 -0
  81. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/afl/afltables/afl_afltables_player_model.py +0 -0
  82. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/afl/afltables/afl_afltables_team_model.py +0 -0
  83. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/afl/afltables/afl_afltables_venue_model.py +0 -0
  84. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/afl/aussportsbetting/__init__.py +0 -0
  85. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/afl/combined/__init__.py +0 -0
  86. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/afl/espn/__init__.py +0 -0
  87. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/afl/oddsportal/__init__.py +0 -0
  88. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/afl/position.py +0 -0
  89. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/aussportsbetting/__init__.py +0 -0
  90. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/aussportsbetting/aussportsbetting_bookie_model.py +0 -0
  91. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/aussportsbetting/aussportsbetting_game_model.py +0 -0
  92. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/aussportsbetting/aussportsbetting_odds_model.py +0 -0
  93. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/aussportsbetting/aussportsbetting_team_model.py +0 -0
  94. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/aussportsbetting/aussportsbetting_venue_model.py +0 -0
  95. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/bet.py +0 -0
  96. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/bookie_model.py +0 -0
  97. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/coach_model.py +0 -0
  98. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/combined/__init__.py +0 -0
  99. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/combined/combined_address_model.py +0 -0
  100. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/combined/combined_coach_model.py +0 -0
  101. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/combined/combined_game_model.py +0 -0
  102. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/combined/combined_player_model.py +0 -0
  103. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/combined/combined_team_model.py +0 -0
  104. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/combined/combined_venue_model.py +0 -0
  105. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/combined/combined_weather_model.py +0 -0
  106. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/combined/null_check.py +0 -0
  107. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/dividend_model.py +0 -0
  108. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/espn/__init__.py +0 -0
  109. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/espn/espn_bookie_model.py +0 -0
  110. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/espn/espn_coach_model.py +0 -0
  111. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/espn/espn_game_model.py +0 -0
  112. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/espn/espn_odds_model.py +0 -0
  113. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/espn/espn_player_model.py +0 -0
  114. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/espn/espn_team_model.py +0 -0
  115. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/espn/espn_venue_model.py +0 -0
  116. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/field_type.py +0 -0
  117. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/game_model.py +0 -0
  118. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/google/__init__.py +0 -0
  119. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/google/google_address_model.py +0 -0
  120. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/google/google_news_model.py +0 -0
  121. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/hkjc/__init__.py +0 -0
  122. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/hkjc/hkjc/__init__.py +0 -0
  123. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/hkjc/hkjc/hkjc_hkjc_bookie_model.py +0 -0
  124. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/hkjc/hkjc/hkjc_hkjc_dividend_model.py +0 -0
  125. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/hkjc/hkjc/hkjc_hkjc_odds_model.py +0 -0
  126. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/hkjc/hkjc/hkjc_hkjc_owner_model.py +0 -0
  127. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/hkjc/hkjc/hkjc_hkjc_venue_model.py +0 -0
  128. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/hkjc/position.py +0 -0
  129. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/league.py +0 -0
  130. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nba/__init__.py +0 -0
  131. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nba/combined/__init__.py +0 -0
  132. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nba/espn/__init__.py +0 -0
  133. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nba/nba/__init__.py +0 -0
  134. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nba/nba/nba_nba_game_model.py +0 -0
  135. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nba/nba/nba_nba_team_model.py +0 -0
  136. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nba/nbacom/__init__.py +0 -0
  137. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nba/nbacom/nba_nbacom_game_model.py +0 -0
  138. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nba/nbacom/nba_nbacom_player_model.py +0 -0
  139. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nba/nbacom/nba_nbacom_team_model.py +0 -0
  140. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nba/nbacom/nba_nbacom_venue_model.py +0 -0
  141. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nba/oddsportal/__init__.py +0 -0
  142. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nba/position.py +0 -0
  143. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nba/sportsdb/__init__.py +0 -0
  144. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nba/sportsreference/__init__.py +0 -0
  145. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/ncaab/__init__.py +0 -0
  146. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/ncaab/combined/__init__.py +0 -0
  147. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/ncaab/espn/__init__.py +0 -0
  148. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/ncaab/oddsportal/__init__.py +0 -0
  149. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/ncaab/sportsreference/__init__.py +0 -0
  150. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/ncaaf/__init__.py +0 -0
  151. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/ncaaf/combined/__init__.py +0 -0
  152. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/ncaaf/espn/__init__.py +0 -0
  153. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/ncaaf/oddsportal/__init__.py +0 -0
  154. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/news_model.py +0 -0
  155. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nfl/__init__.py +0 -0
  156. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nfl/aussportsbetting/__init__.py +0 -0
  157. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nfl/combined/__init__.py +0 -0
  158. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nfl/espn/__init__.py +0 -0
  159. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nfl/oddsportal/__init__.py +0 -0
  160. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nfl/position.py +0 -0
  161. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/nfl/sportsdb/__init__.py +0 -0
  162. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/odds_model.py +0 -0
  163. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/oddsportal/__init__.py +0 -0
  164. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/oddsportal/oddsportal_bookie_model.py +0 -0
  165. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/oddsportal/oddsportal_odds_model.py +0 -0
  166. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/oddsportal/oddsportal_team_model.py +0 -0
  167. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/oddsportal/oddsportal_venue_model.py +0 -0
  168. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/owner_model.py +0 -0
  169. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/player_model.py +0 -0
  170. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/season_type.py +0 -0
  171. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/sex.py +0 -0
  172. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/social_model.py +0 -0
  173. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/species.py +0 -0
  174. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/sportsdb/__init__.py +0 -0
  175. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/sportsdb/sportsdb_game_model.py +0 -0
  176. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/sportsdb/sportsdb_team_model.py +0 -0
  177. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/sportsdb/sportsdb_venue_model.py +0 -0
  178. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/sportsreference/__init__.py +0 -0
  179. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/sportsreference/sportsreference_venue_model.py +0 -0
  180. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/team_model.py +0 -0
  181. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/venue_model.py +0 -0
  182. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/weather/__init__.py +0 -0
  183. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/weather/gribstream/__init__.py +0 -0
  184. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/weather/gribstream/gribstream_weather_model.py +0 -0
  185. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/weather/multi_weather_model.py +0 -0
  186. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/weather/openmeteo/__init__.py +0 -0
  187. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/weather/openmeteo/openmeteo_weather_model.py +0 -0
  188. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/weather_model.py +0 -0
  189. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/wikipedia/__init__.py +0 -0
  190. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/wikipedia/wikipedia_venue_model.py +0 -0
  191. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/x/__init__.py +0 -0
  192. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/data/x/x_social_model.py +0 -0
  193. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/logger.py +0 -0
  194. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/loglevel.py +0 -0
  195. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/playwright.py +0 -0
  196. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/vendor/__init__.py +0 -0
  197. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball/vendor/pygooglenews/__init__.py +0 -0
  198. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball.egg-info/dependency_links.txt +0 -0
  199. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball.egg-info/entry_points.txt +0 -0
  200. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball.egg-info/not-zip-safe +0 -0
  201. {sportsball-0.5.22 → sportsball-0.5.23}/sportsball.egg-info/top_level.txt +0 -0
  202. {sportsball-0.5.22 → sportsball-0.5.23}/tests/__init__.py +0 -0
  203. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/__init__.py +0 -0
  204. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/afl/__init__.py +0 -0
  205. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/afl/afl/__init__.py +0 -0
  206. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/afl/afl/afl_afl_game_model_test.py +0 -0
  207. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/afl/afl/afl_afl_league_model_test.py +0 -0
  208. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/afl/afltables/__init__.py +0 -0
  209. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/afl/afltables/afl_afltables_coach_model_test.py +0 -0
  210. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/afl/afltables/afl_afltables_game_model_test.py +0 -0
  211. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/afl/afltables/afl_afltables_league_model_test.py +0 -0
  212. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/afl/afltables/afl_afltables_player_model_test.py +0 -0
  213. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/aussportsbetting/__init__.py +0 -0
  214. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/aussportsbetting/aussportsbetting_game_model_test.py +0 -0
  215. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/combined/__init__.py +0 -0
  216. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/combined/combined_game_model_test.py +0 -0
  217. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/combined/combined_player_model_test.py +0 -0
  218. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/combined/combined_team_model_test.py +0 -0
  219. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/combined/combined_venue_model_test.py +0 -0
  220. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/espn/__init__.py +0 -0
  221. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/espn/espn_game_model_test.py +0 -0
  222. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/espn/espn_player_model_test.py +0 -0
  223. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/game_model_test.py +0 -0
  224. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/google/__init__.py +0 -0
  225. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/google/google_address_model_test.py +0 -0
  226. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/google/google_news_model_test.py +0 -0
  227. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/hkjc/__init__.py +0 -0
  228. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/hkjc/hkjc/__init__.py +0 -0
  229. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/nba/__init__.py +0 -0
  230. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/nba/nba/__init__.py +0 -0
  231. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/nba/nba/nba_nba_game_model_test.py +0 -0
  232. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/nba/nba/nba_nba_league_model_test.py +0 -0
  233. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/nba/nba/nba_nba_team_model_test.py +0 -0
  234. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/nba/sportsdb/__init__.py +0 -0
  235. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/nba/sportsdb/nba_sportsdb_league_model_test.py +0 -0
  236. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/nba/sportsreference/__init__.py +0 -0
  237. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/nba/sportsreference/nba_sportsreference_league_model_test.py +0 -0
  238. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/ncaab/__init__.py +0 -0
  239. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/ncaab/sportsreference/__init__.py +0 -0
  240. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/ncaab/sportsreference/ncaab_sportsreference_league_model_test.py +0 -0
  241. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/nfl/__init__.py +0 -0
  242. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/nfl/sportsdb/__init__.py +0 -0
  243. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/nfl/sportsdb/nfl_sportsdb_league_model_test.py +0 -0
  244. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/oddsportal/__init__.py +0 -0
  245. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/oddsportal/oddsportal_league_model_test.py +0 -0
  246. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/player_model_test.py +0 -0
  247. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/social_model_test.py +0 -0
  248. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/sportsdb/__init__.py +0 -0
  249. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/sportsdb/sportsdb_game_model_test.py +0 -0
  250. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/sportsdb/sportsdb_league_model_test.py +0 -0
  251. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/sportsdb/sportsdb_team_model_test.py +0 -0
  252. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/sportsdb/sportsdb_venue_model_test.py +0 -0
  253. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/sportsreference/__init__.py +0 -0
  254. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/sportsreference/sportsreference_coach_model_test.py +0 -0
  255. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/sportsreference/sportsreference_game_model_test.py +0 -0
  256. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/sportsreference/sportsreference_league_model_test.py +0 -0
  257. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/sportsreference/sportsreference_player_model_test.py +0 -0
  258. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/sportsreference/sportsreference_venue_model_test.py +0 -0
  259. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/team_model_test.py +0 -0
  260. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/x/__init__.py +0 -0
  261. {sportsball-0.5.22 → sportsball-0.5.23}/tests/data/x/x_social_model_test.py +0 -0
  262. {sportsball-0.5.22 → sportsball-0.5.23}/tests/sportsball_test.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: sportsball
3
- Version: 0.5.22
3
+ Version: 0.5.23
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
@@ -47,6 +47,7 @@ Requires-Dist: playwright>=1.51.0
47
47
  Requires-Dist: cchardet>=2.2.0a2
48
48
  Requires-Dist: lxml>=5.3.0
49
49
  Requires-Dist: gender-guesser>=0.4.0
50
+ Requires-Dist: scrapesession>=0.0.1
50
51
  Dynamic: author
51
52
  Dynamic: author-email
52
53
  Dynamic: classifier
@@ -109,6 +110,7 @@ Python 3.11.6:
109
110
  - [cchardet](https://github.com/PyYoshi/cChardet)
110
111
  - [lxml](https://lxml.de/)
111
112
  - [gender-guesser](https://github.com/lead-ratings/gender-guesser)
113
+ - [scrapesession](https://github.com/8W9aG/scrapesession)
112
114
 
113
115
  ## Raison D'être :thought_balloon:
114
116
 
@@ -49,6 +49,7 @@ Python 3.11.6:
49
49
  - [cchardet](https://github.com/PyYoshi/cChardet)
50
50
  - [lxml](https://lxml.de/)
51
51
  - [gender-guesser](https://github.com/lead-ratings/gender-guesser)
52
+ - [scrapesession](https://github.com/8W9aG/scrapesession)
52
53
 
53
54
  ## Raison D'être :thought_balloon:
54
55
 
@@ -34,3 +34,4 @@ playwright>=1.51.0
34
34
  cchardet>=2.2.0a2
35
35
  lxml>=5.3.0
36
36
  gender-guesser>=0.4.0
37
+ scrapesession>=0.0.1
@@ -26,7 +26,7 @@ def install_requires() -> typing.List[str]:
26
26
 
27
27
  setup(
28
28
  name='sportsball',
29
- version='0.5.22',
29
+ version='0.5.23',
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',
@@ -4,4 +4,4 @@
4
4
  import cchardet # type: ignore
5
5
  import lxml # noqa: ignore
6
6
 
7
- __VERSION__ = "0.5.22"
7
+ __VERSION__ = "0.5.23"
@@ -10,9 +10,9 @@ from typing import Iterator
10
10
  from bs4 import BeautifulSoup, Tag
11
11
  from dateutil.parser import parse
12
12
  from playwright.sync_api import Playwright, sync_playwright
13
+ from scrapesession.scrapesession import ScrapeSession # type: ignore
13
14
 
14
15
  from ....playwright import ensure_install
15
- from ....proxy_session import ProxySession
16
16
  from ...game_model import GameModel
17
17
  from ...league import League
18
18
  from ...league_model import LeagueModel
@@ -22,7 +22,7 @@ from .afl_afl_game_model import create_afl_afl_game_model, parse_players_v1
22
22
 
23
23
  def _parse_v1(
24
24
  soup: BeautifulSoup,
25
- session: ProxySession,
25
+ session: ScrapeSession,
26
26
  ladder: list[str],
27
27
  html_url: str,
28
28
  playwright: Playwright,
@@ -143,7 +143,7 @@ def _parse_v2_soup(
143
143
 
144
144
  def _parse_v2(
145
145
  soup: BeautifulSoup,
146
- session: ProxySession,
146
+ session: ScrapeSession,
147
147
  ladder: list[str],
148
148
  html_url: str,
149
149
  playwright: Playwright,
@@ -163,7 +163,7 @@ def _parse_v2(
163
163
 
164
164
  def _parse_game_info(
165
165
  html: str,
166
- session: ProxySession,
166
+ session: ScrapeSession,
167
167
  ladder: list[str],
168
168
  html_url: str,
169
169
  playwright: Playwright,
@@ -180,7 +180,7 @@ def _parse_game_info(
180
180
  class AFLAFLLeagueModel(LeagueModel):
181
181
  """AFL AFL implementation of the league model."""
182
182
 
183
- def __init__(self, session: ProxySession, position: int | None = None) -> None:
183
+ def __init__(self, session: ScrapeSession, position: int | None = None) -> None:
184
184
  super().__init__(League.AFL, session, position=position)
185
185
 
186
186
  @classmethod
@@ -11,8 +11,8 @@ from urllib.parse import urlparse
11
11
  import tqdm
12
12
  from bs4 import BeautifulSoup
13
13
  from dateutil import parser
14
+ from scrapesession.scrapesession import ScrapeSession # type: ignore
14
15
 
15
- from ....proxy_session import ProxySession
16
16
  from ...game_model import GameModel
17
17
  from ...league import League
18
18
  from ...league_model import LeagueModel
@@ -42,8 +42,8 @@ def _find_dt(td_text: str, season_url: str) -> datetime.datetime:
42
42
  class AFLAFLTablesLeagueModel(LeagueModel):
43
43
  """AFL AFLTables implementation of the league model."""
44
44
 
45
- def __init__(self, session: ProxySession, position: int | None = None) -> None:
46
- super().__init__(League.AFL, session)
45
+ def __init__(self, session: ScrapeSession, position: int | None = None) -> None:
46
+ super().__init__(League.AFL, session, position=position)
47
47
 
48
48
  @classmethod
49
49
  def name(cls) -> str:
@@ -1,6 +1,7 @@
1
1
  """AFL aussportsbetting league model."""
2
2
 
3
- from ....proxy_session import ProxySession
3
+ from scrapesession.scrapesession import ScrapeSession # type: ignore
4
+
4
5
  from ...aussportsbetting.aussportsbetting_league_model import \
5
6
  AusSportsBettingLeagueModel
6
7
  from ...league import League
@@ -9,7 +10,7 @@ from ...league import League
9
10
  class AFLAusSportsBettingLeagueModel(AusSportsBettingLeagueModel):
10
11
  """AFL AusSportsBetting implementation of the league model."""
11
12
 
12
- def __init__(self, session: ProxySession, position: int | None = None) -> None:
13
+ def __init__(self, session: ScrapeSession, position: int | None = None) -> None:
13
14
  super().__init__(League.AFL, session, position=position)
14
15
 
15
16
  @classmethod
@@ -1,6 +1,7 @@
1
1
  """AFL combined league model."""
2
2
 
3
- from ....proxy_session import ProxySession
3
+ from scrapesession.scrapesession import ScrapeSession # type: ignore
4
+
4
5
  from ...combined.combined_league_model import CombinedLeagueModel
5
6
  from ...league import League
6
7
  from ..afl.afl_afl_league_model import AFLAFLLeagueModel
@@ -275,7 +276,7 @@ AFL_VENUE_IDENTITY_MAP = {
275
276
  class AFLCombinedLeagueModel(CombinedLeagueModel):
276
277
  """AFL combined implementation of the league model."""
277
278
 
278
- def __init__(self, session: ProxySession, league_filter: str | None) -> None:
279
+ def __init__(self, session: ScrapeSession, league_filter: str | None) -> None:
279
280
  super().__init__(
280
281
  session,
281
282
  League.AFL,
@@ -2,7 +2,8 @@
2
2
 
3
3
  # pylint: disable=line-too-long
4
4
 
5
- from ....proxy_session import ProxySession
5
+ from scrapesession.scrapesession import ScrapeSession # type: ignore
6
+
6
7
  from ...espn.espn_league_model import ESPNLeagueModel
7
8
  from ...league import League
8
9
 
@@ -12,7 +13,7 @@ _SEASON_URL = "https://sports.core.api.espn.com/v2/sports/australian-football/le
12
13
  class AFLESPNLeagueModel(ESPNLeagueModel):
13
14
  """AFL ESPN implementation of the league model."""
14
15
 
15
- def __init__(self, session: ProxySession, position: int | None = None) -> None:
16
+ def __init__(self, session: ScrapeSession, position: int | None = None) -> None:
16
17
  super().__init__(_SEASON_URL, League.AFL, session, position=position)
17
18
 
18
19
  @classmethod
@@ -2,7 +2,8 @@
2
2
 
3
3
  # pylint: disable=line-too-long
4
4
 
5
- from ....proxy_session import ProxySession
5
+ from scrapesession.scrapesession import ScrapeSession # type: ignore
6
+
6
7
  from ...league import League
7
8
  from ...oddsportal.oddsportal_league_model import OddsPortalLeagueModel
8
9
 
@@ -10,7 +11,7 @@ from ...oddsportal.oddsportal_league_model import OddsPortalLeagueModel
10
11
  class AFLOddsPortalLeagueModel(OddsPortalLeagueModel):
11
12
  """AFL OddsPortal implementation of the league model."""
12
13
 
13
- def __init__(self, session: ProxySession, position: int | None = None) -> None:
14
+ def __init__(self, session: ScrapeSession, position: int | None = None) -> None:
14
15
  super().__init__(League.AFL, session, position=position)
15
16
 
16
17
  @classmethod
@@ -7,8 +7,8 @@ from typing import Any, Iterator
7
7
  import tqdm
8
8
  from dateutil.parser import parse
9
9
  from openpyxl import load_workbook
10
+ from scrapesession.scrapesession import ScrapeSession # type: ignore
10
11
 
11
- from ...proxy_session import ProxySession
12
12
  from ..game_model import GameModel
13
13
  from ..league import League
14
14
  from ..league_model import LeagueModel
@@ -21,7 +21,7 @@ class AusSportsBettingLeagueModel(LeagueModel):
21
21
  def __init__(
22
22
  self,
23
23
  league: League,
24
- session: ProxySession,
24
+ session: ScrapeSession,
25
25
  position: int | None = None,
26
26
  ) -> None:
27
27
  super().__init__(league, session, position=position)
@@ -6,7 +6,8 @@ import multiprocessing
6
6
  from concurrent.futures import ThreadPoolExecutor
7
7
  from typing import Any, Iterator
8
8
 
9
- from ...proxy_session import ProxySession
9
+ from scrapesession.scrapesession import ScrapeSession # type: ignore
10
+
10
11
  from ..game_model import GameModel
11
12
  from ..league import League
12
13
  from ..league_model import LeagueModel
@@ -22,7 +23,7 @@ class CombinedLeagueModel(LeagueModel):
22
23
 
23
24
  def __init__(
24
25
  self,
25
- session: ProxySession,
26
+ session: ScrapeSession,
26
27
  league: League,
27
28
  league_models: list[LeagueModel],
28
29
  league_filter: str | None,
@@ -4,8 +4,8 @@
4
4
  from typing import Any, Iterator
5
5
 
6
6
  import tqdm
7
+ from scrapesession.scrapesession import ScrapeSession # type: ignore
7
8
 
8
- from ...proxy_session import ProxySession
9
9
  from ..game_model import GameModel
10
10
  from ..league import League
11
11
  from ..league_model import LeagueModel
@@ -32,7 +32,7 @@ class ESPNLeagueModel(LeagueModel):
32
32
  self,
33
33
  start_url: str,
34
34
  league: League,
35
- session: ProxySession,
35
+ session: ScrapeSession,
36
36
  position: int | None = None,
37
37
  ) -> None:
38
38
  super().__init__(league, session, position=position)
@@ -4,14 +4,14 @@ import io
4
4
 
5
5
  import pandas as pd
6
6
  import pytest_is_running
7
+ from scrapesession.scrapesession import ScrapeSession # type: ignore
7
8
 
8
9
  from ....cache import MEMORY
9
- from ....proxy_session import ProxySession
10
10
  from ...coach_model import CoachModel
11
11
 
12
12
 
13
13
  def _create_hkjc_hkjc_coach_model(
14
- session: ProxySession,
14
+ session: ScrapeSession,
15
15
  url: str,
16
16
  ) -> CoachModel:
17
17
  with session.wayback_disabled():
@@ -48,14 +48,14 @@ def _create_hkjc_hkjc_coach_model(
48
48
 
49
49
  @MEMORY.cache(ignore=["session"])
50
50
  def _cached_create_hkjc_hkjc_coach_model(
51
- session: ProxySession,
51
+ session: ScrapeSession,
52
52
  url: str,
53
53
  ) -> CoachModel:
54
54
  return _create_hkjc_hkjc_coach_model(session=session, url=url)
55
55
 
56
56
 
57
57
  def create_hkjc_hkjc_coach_model(
58
- session: ProxySession,
58
+ session: ScrapeSession,
59
59
  url: str,
60
60
  ) -> CoachModel:
61
61
  """Create a coach model based off HKJC."""
@@ -11,9 +11,9 @@ import pandas as pd
11
11
  import pytest_is_running
12
12
  from bs4 import BeautifulSoup
13
13
  from dateutil.parser import parse
14
+ from scrapesession.scrapesession import ScrapeSession # type: ignore
14
15
 
15
16
  from ....cache import MEMORY
16
- from ....proxy_session import ProxySession
17
17
  from ...game_model import GameModel
18
18
  from ...league import League
19
19
  from ..position import position_from_str
@@ -28,7 +28,7 @@ RACE_COURSE_QUERY_KEY = "Racecourse"
28
28
 
29
29
 
30
30
  def _create_hkjc_hkjc_game_model(
31
- session: ProxySession,
31
+ session: ScrapeSession,
32
32
  html: str,
33
33
  url: str,
34
34
  ) -> GameModel | None:
@@ -344,7 +344,7 @@ def _create_hkjc_hkjc_game_model(
344
344
 
345
345
  @MEMORY.cache(ignore=["session"])
346
346
  def _cached_create_hkjc_hkjc_game_model(
347
- session: ProxySession,
347
+ session: ScrapeSession,
348
348
  html: str,
349
349
  url: str,
350
350
  ) -> GameModel | None:
@@ -353,7 +353,7 @@ def _cached_create_hkjc_hkjc_game_model(
353
353
 
354
354
 
355
355
  def create_hkjc_hkjc_game_model(
356
- session: ProxySession,
356
+ session: ScrapeSession,
357
357
  html: str,
358
358
  url: str,
359
359
  ) -> GameModel | None:
@@ -8,8 +8,8 @@ from urllib.parse import urlparse
8
8
 
9
9
  import tqdm
10
10
  from bs4 import BeautifulSoup
11
+ from scrapesession.scrapesession import ScrapeSession # type: ignore
11
12
 
12
- from ....proxy_session import ProxySession
13
13
  from ...game_model import GameModel
14
14
  from ...league import League
15
15
  from ...league_model import LeagueModel
@@ -22,7 +22,7 @@ from .hkjc_hkjc_venue_model import HAPPY_VALLEY_VENUE_CODE, SHA_TIN_VENUE_CODE
22
22
  class HKJCHKJCLeagueModel(LeagueModel):
23
23
  """HKJC HKJC implementation of the league model."""
24
24
 
25
- def __init__(self, session: ProxySession, position: int | None = None) -> None:
25
+ def __init__(self, session: ScrapeSession, position: int | None = None) -> None:
26
26
  super().__init__(League.HKJC, session, position=position)
27
27
 
28
28
  @classmethod
@@ -9,9 +9,9 @@ from urllib.parse import urlparse
9
9
  import pandas as pd
10
10
  import pytest_is_running
11
11
  from bs4 import BeautifulSoup
12
+ from scrapesession.scrapesession import ScrapeSession # type: ignore
12
13
 
13
14
  from ....cache import MEMORY
14
- from ....proxy_session import ProxySession
15
15
  from ...google.google_address_model import create_google_address_model
16
16
  from ...player_model import PlayerModel
17
17
  from ...sex import sex_from_str
@@ -21,7 +21,7 @@ from .hkjc_hkjc_owner_model import create_hkjc_hkjc_owner_model
21
21
 
22
22
 
23
23
  def _create_hkjc_hkjc_player_model(
24
- session: ProxySession,
24
+ session: ScrapeSession,
25
25
  url: str,
26
26
  jersey: str | None,
27
27
  handicap_weight: float | None,
@@ -193,7 +193,7 @@ def _create_hkjc_hkjc_player_model(
193
193
 
194
194
  @MEMORY.cache(ignore=["session"])
195
195
  def _cached_create_hkjc_hkjc_player_model(
196
- session: ProxySession,
196
+ session: ScrapeSession,
197
197
  url: str,
198
198
  jersey: str | None,
199
199
  handicap_weight: float | None,
@@ -211,7 +211,7 @@ def _cached_create_hkjc_hkjc_player_model(
211
211
 
212
212
 
213
213
  def create_hkjc_hkjc_player_model(
214
- session: ProxySession,
214
+ session: ScrapeSession,
215
215
  url: str,
216
216
  jersey: str | None,
217
217
  handicap_weight: float | None,
@@ -4,9 +4,9 @@
4
4
  import datetime
5
5
 
6
6
  import pytest_is_running
7
+ from scrapesession.scrapesession import ScrapeSession # type: ignore
7
8
 
8
9
  from ....cache import MEMORY
9
- from ....proxy_session import ProxySession
10
10
  from ...odds_model import OddsModel
11
11
  from ...team_model import TeamModel
12
12
  from ..position import Position
@@ -15,7 +15,7 @@ from .hkjc_hkjc_player_model import create_hkjc_hkjc_player_model
15
15
 
16
16
 
17
17
  def _create_hkjc_hkjc_team_model(
18
- session: ProxySession,
18
+ session: ScrapeSession,
19
19
  horse_url: str,
20
20
  jockey_url: str | None,
21
21
  trainer_url: str | None,
@@ -75,7 +75,7 @@ def _create_hkjc_hkjc_team_model(
75
75
 
76
76
  @MEMORY.cache(ignore=["session"])
77
77
  def _cached_create_hkjc_hkjc_team_model(
78
- session: ProxySession,
78
+ session: ScrapeSession,
79
79
  horse_url: str,
80
80
  jockey_url: str | None,
81
81
  trainer_url: str | None,
@@ -105,7 +105,7 @@ def _cached_create_hkjc_hkjc_team_model(
105
105
 
106
106
 
107
107
  def create_hkjc_hkjc_team_model(
108
- session: ProxySession,
108
+ session: ScrapeSession,
109
109
  horse_url: str,
110
110
  jockey_url: str | None,
111
111
  trainer_url: str | None,
@@ -8,8 +8,8 @@ import pandas as pd
8
8
  import tqdm
9
9
  from flatten_json import flatten # type: ignore
10
10
  from pydantic import BaseModel
11
+ from scrapesession.scrapesession import ScrapeSession # type: ignore
11
12
 
12
- from ..proxy_session import ProxySession
13
13
  from .address_model import ADDRESS_TIMEZONE_COLUMN
14
14
  from .field_type import FieldType
15
15
  from .game_model import GAME_DT_COLUMN, VENUE_COLUMN_PREFIX, GameModel
@@ -82,7 +82,7 @@ class LeagueModel(Model):
82
82
  def __init__(
83
83
  self,
84
84
  league: League,
85
- session: ProxySession,
85
+ session: ScrapeSession,
86
86
  position: int | None = None,
87
87
  ) -> None:
88
88
  super().__init__(session)
@@ -2,24 +2,31 @@
2
2
 
3
3
  # pylint: disable=too-few-public-methods
4
4
  import pandas as pd
5
-
6
- from ..proxy_session import ProxySession, create_proxy_session
5
+ from scrapesession.scrapesession import ScrapeSession # type: ignore
6
+ from scrapesession.scrapesession import create_scrape_session
7
7
 
8
8
 
9
9
  class Model:
10
10
  """The base model class."""
11
11
 
12
- _session: ProxySession | None
12
+ _session: ScrapeSession | None
13
13
 
14
- def __init__(self, session: ProxySession) -> None:
14
+ def __init__(self, session: ScrapeSession) -> None:
15
15
  self._session = session
16
16
 
17
17
  @property
18
- def session(self) -> ProxySession:
18
+ def session(self) -> ScrapeSession:
19
19
  """Fetch a session that can never be null."""
20
20
  session = self._session
21
21
  if session is None:
22
- session = create_proxy_session()
22
+ session = create_scrape_session(
23
+ "sportsball",
24
+ fast_fail_urls={
25
+ "https://news.google.com/",
26
+ "https://historical-forecast-api.open-meteo.com/",
27
+ "https://api.open-meteo.com/",
28
+ },
29
+ )
23
30
  self._session = session
24
31
  return session
25
32
 
@@ -1,8 +1,8 @@
1
1
  """NBA combined league model."""
2
2
 
3
3
  # pylint: disable=line-too-long
4
+ from scrapesession.scrapesession import ScrapeSession # type: ignore
4
5
 
5
- from ....proxy_session import ProxySession
6
6
  from ...combined.combined_league_model import CombinedLeagueModel
7
7
  from ...league import League
8
8
  from ..espn.nba_espn_league_model import NBAESPNLeagueModel
@@ -896,7 +896,7 @@ NBA_PLAYER_IDENTITY_MAP: dict[str, str] = {}
896
896
  class NBACombinedLeagueModel(CombinedLeagueModel):
897
897
  """NBA combined implementation of the league model."""
898
898
 
899
- def __init__(self, session: ProxySession, league_filter: str | None) -> None:
899
+ def __init__(self, session: ScrapeSession, league_filter: str | None) -> None:
900
900
  super().__init__(
901
901
  session,
902
902
  League.NBA,
@@ -1,6 +1,7 @@
1
1
  """NBA ESPN league model."""
2
2
 
3
- from ....proxy_session import ProxySession
3
+ from scrapesession.scrapesession import ScrapeSession # type: ignore
4
+
4
5
  from ...espn.espn_league_model import ESPNLeagueModel
5
6
  from ...league import League
6
7
  from ..position import Position
@@ -13,7 +14,7 @@ _SEASON_URL = (
13
14
  class NBAESPNLeagueModel(ESPNLeagueModel):
14
15
  """NBA ESPN implementation of the league model."""
15
16
 
16
- def __init__(self, session: ProxySession, position: int | None = None) -> None:
17
+ def __init__(self, session: ScrapeSession, position: int | None = None) -> None:
17
18
  super().__init__(_SEASON_URL, League.NBA, session, position=position)
18
19
 
19
20
  @classmethod
@@ -9,8 +9,8 @@ from dateutil.parser import parse
9
9
  from dateutil.relativedelta import relativedelta
10
10
  from nba_api.library.http import NBAHTTP # type: ignore
11
11
  from nba_api.stats.endpoints import leaguegamefinder # type: ignore
12
+ from scrapesession.scrapesession import ScrapeSession # type: ignore
12
13
 
13
- from ....proxy_session import ProxySession
14
14
  from ...game_model import GameModel
15
15
  from ...league import League
16
16
  from ...league_model import LeagueModel
@@ -67,7 +67,7 @@ class NBANBALeagueModel(LeagueModel):
67
67
  start: datetime.datetime
68
68
  games: int
69
69
 
70
- def __init__(self, session: ProxySession, position: int | None = None) -> None:
70
+ def __init__(self, session: ScrapeSession, position: int | None = None) -> None:
71
71
  super().__init__(League.NBA, session, position=position)
72
72
  self._league_id = "00"
73
73
  NBAHTTP.set_session(session)
@@ -5,7 +5,8 @@ import datetime
5
5
  import logging
6
6
  from typing import Iterator
7
7
 
8
- from ....proxy_session import ProxySession
8
+ from scrapesession.scrapesession import ScrapeSession # type: ignore
9
+
9
10
  from ...game_model import GameModel
10
11
  from ...league import League
11
12
  from ...league_model import LeagueModel
@@ -15,7 +16,7 @@ from .nba_nbacom_game_model import create_nba_nbacom_game_model
15
16
  class NBANBAComLeagueModel(LeagueModel):
16
17
  """NBA NBA.com implementation of the league model."""
17
18
 
18
- def __init__(self, session: ProxySession, position: int | None = None) -> None:
19
+ def __init__(self, session: ScrapeSession, position: int | None = None) -> None:
19
20
  super().__init__(League.AFL, session, position=position)
20
21
 
21
22
  @classmethod
@@ -2,7 +2,8 @@
2
2
 
3
3
  # pylint: disable=line-too-long
4
4
 
5
- from ....proxy_session import ProxySession
5
+ from scrapesession.scrapesession import ScrapeSession # type: ignore
6
+
6
7
  from ...league import League
7
8
  from ...oddsportal.oddsportal_league_model import OddsPortalLeagueModel
8
9
 
@@ -10,5 +11,5 @@ from ...oddsportal.oddsportal_league_model import OddsPortalLeagueModel
10
11
  class NBAOddsPortalLeagueModel(OddsPortalLeagueModel):
11
12
  """NBA OddsPortal implementation of the league model."""
12
13
 
13
- def __init__(self, session: ProxySession, position: int | None = None) -> None:
14
+ def __init__(self, session: ScrapeSession, position: int | None = None) -> None:
14
15
  super().__init__(League.NBA, session, position=position)
@@ -1,6 +1,7 @@
1
1
  """NBA Sports DB league model."""
2
2
 
3
- from ....proxy_session import ProxySession
3
+ from scrapesession.scrapesession import ScrapeSession # type: ignore
4
+
4
5
  from ...league import League
5
6
  from ...sportsdb.sportsdb_league_model import SportsDBLeagueModel
6
7
 
@@ -8,5 +9,5 @@ from ...sportsdb.sportsdb_league_model import SportsDBLeagueModel
8
9
  class NBASportsDBLeagueModel(SportsDBLeagueModel):
9
10
  """NBA SportsDB implementation of the league model."""
10
11
 
11
- def __init__(self, session: ProxySession, position: int | None = None) -> None:
12
+ def __init__(self, session: ScrapeSession, position: int | None = None) -> None:
12
13
  super().__init__(session, "4387", League.NBA, position=position)
@@ -2,7 +2,8 @@
2
2
 
3
3
  # pylint: disable=line-too-long
4
4
 
5
- from ....proxy_session import ProxySession
5
+ from scrapesession.scrapesession import ScrapeSession # type: ignore
6
+
6
7
  from ...league import League
7
8
  from ...sportsreference.sportsreference_league_model import \
8
9
  SportsReferenceLeagueModel
@@ -12,7 +13,7 @@ from ..position import Position
12
13
  class NBASportsReferenceLeagueModel(SportsReferenceLeagueModel):
13
14
  """NBA Sports Reference implementation of the league model."""
14
15
 
15
- def __init__(self, session: ProxySession, position: int | None = None) -> None:
16
+ def __init__(self, session: ScrapeSession, position: int | None = None) -> None:
16
17
  super().__init__(
17
18
  session,
18
19
  League.NBA,
@@ -1,6 +1,7 @@
1
1
  """NCAAB combined league model."""
2
2
 
3
- from ....proxy_session import ProxySession
3
+ from scrapesession.scrapesession import ScrapeSession # type: ignore
4
+
4
5
  from ...combined.combined_league_model import CombinedLeagueModel
5
6
  from ...league import League
6
7
  from ..espn.ncaab_espn_league_model import NCAABESPNLeagueModel
@@ -746,7 +747,7 @@ NCAAB_PLAYER_IDENTITY_MAP: dict[str, str] = {}
746
747
  class NCAABCombinedLeagueModel(CombinedLeagueModel):
747
748
  """NCAAB combined implementation of the league model."""
748
749
 
749
- def __init__(self, session: ProxySession, league_filter: str | None) -> None:
750
+ def __init__(self, session: ScrapeSession, league_filter: str | None) -> None:
750
751
  super().__init__(
751
752
  session,
752
753
  League.NCAAB,
@@ -2,7 +2,8 @@
2
2
 
3
3
  # pylint: disable=line-too-long
4
4
 
5
- from ....proxy_session import ProxySession
5
+ from scrapesession.scrapesession import ScrapeSession # type: ignore
6
+
6
7
  from ...espn.espn_league_model import ESPNLeagueModel
7
8
  from ...league import League
8
9
  from ...nba.position import Position
@@ -13,7 +14,7 @@ _SEASON_URL = "http://sports.core.api.espn.com/v2/sports/basketball/leagues/mens
13
14
  class NCAABESPNLeagueModel(ESPNLeagueModel):
14
15
  """NCAAB ESPN implementation of the league model."""
15
16
 
16
- def __init__(self, session: ProxySession, position: int | None = None) -> None:
17
+ def __init__(self, session: ScrapeSession, position: int | None = None) -> None:
17
18
  super().__init__(_SEASON_URL, League.NCAAB, session, position=position)
18
19
 
19
20
  @classmethod