sportsball 0.4.1__tar.gz → 0.4.2__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 (260) hide show
  1. {sportsball-0.4.1/sportsball.egg-info → sportsball-0.4.2}/PKG-INFO +1 -1
  2. {sportsball-0.4.1 → sportsball-0.4.2}/setup.py +1 -1
  3. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/__init__.py +1 -1
  4. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/afl/afltables/afl_afltables_coach_model.py +1 -1
  5. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/google/google_address_model.py +2 -0
  6. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/hkjc/hkjc/hkjc_hkjc_coach_model.py +2 -0
  7. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/hkjc/hkjc/hkjc_hkjc_game_model.py +13 -1
  8. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/hkjc/hkjc/hkjc_hkjc_player_model.py +4 -0
  9. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/sportsreference/sportsreference_team_model.py +4 -5
  10. {sportsball-0.4.1 → sportsball-0.4.2/sportsball.egg-info}/PKG-INFO +1 -1
  11. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball.egg-info/SOURCES.txt +1 -0
  12. sportsball-0.4.2/tests/data/afl/afltables/afl_afltables_coach_model_test.py +30 -0
  13. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/afl/afltables/afl_afltables_game_model_test.py +4 -0
  14. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/hkjc/hkjc/hkjc_hkjc_game_model_test.py +12 -0
  15. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/sportsreference/sportsreference_team_model_test.py +24 -0
  16. {sportsball-0.4.1 → sportsball-0.4.2}/LICENSE +0 -0
  17. {sportsball-0.4.1 → sportsball-0.4.2}/MANIFEST.in +0 -0
  18. {sportsball-0.4.1 → sportsball-0.4.2}/README.md +0 -0
  19. {sportsball-0.4.1 → sportsball-0.4.2}/requirements.txt +0 -0
  20. {sportsball-0.4.1 → sportsball-0.4.2}/setup.cfg +0 -0
  21. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/__main__.py +0 -0
  22. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/args.py +0 -0
  23. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/cache.py +0 -0
  24. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/__init__.py +0 -0
  25. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/address_model.py +0 -0
  26. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/afl/__init__.py +0 -0
  27. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/afl/afl/__init__.py +0 -0
  28. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/afl/afl/afl_afl_bookie_model.py +0 -0
  29. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/afl/afl/afl_afl_game_model.py +0 -0
  30. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/afl/afl/afl_afl_league_model.py +0 -0
  31. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/afl/afl/afl_afl_odds_model.py +0 -0
  32. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/afl/afl/afl_afl_player_model.py +0 -0
  33. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/afl/afl/afl_afl_team_model.py +0 -0
  34. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/afl/afl/afl_afl_venue_model.py +0 -0
  35. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/afl/afltables/__init__.py +0 -0
  36. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/afl/afltables/afl_afltables_game_model.py +0 -0
  37. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/afl/afltables/afl_afltables_league_model.py +0 -0
  38. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/afl/afltables/afl_afltables_player_model.py +0 -0
  39. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/afl/afltables/afl_afltables_team_model.py +0 -0
  40. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/afl/afltables/afl_afltables_venue_model.py +0 -0
  41. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/afl/aussportsbetting/__init__.py +0 -0
  42. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/afl/aussportsbetting/afl_aussportsbetting_league_model.py +0 -0
  43. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/afl/combined/__init__.py +0 -0
  44. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/afl/combined/afl_combined_league_model.py +0 -0
  45. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/afl/espn/__init__.py +0 -0
  46. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/afl/espn/afl_espn_league_model.py +0 -0
  47. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/afl/oddsportal/__init__.py +0 -0
  48. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/afl/oddsportal/afl_oddsportal_league_model.py +0 -0
  49. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/afl/position.py +0 -0
  50. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/aussportsbetting/__init__.py +0 -0
  51. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/aussportsbetting/aussportsbetting_bookie_model.py +0 -0
  52. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/aussportsbetting/aussportsbetting_game_model.py +0 -0
  53. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/aussportsbetting/aussportsbetting_league_model.py +0 -0
  54. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/aussportsbetting/aussportsbetting_odds_model.py +0 -0
  55. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/aussportsbetting/aussportsbetting_team_model.py +0 -0
  56. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/aussportsbetting/aussportsbetting_venue_model.py +0 -0
  57. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/bet.py +0 -0
  58. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/bookie_model.py +0 -0
  59. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/coach_model.py +0 -0
  60. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/combined/__init__.py +0 -0
  61. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/combined/combined_address_model.py +0 -0
  62. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/combined/combined_coach_model.py +0 -0
  63. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/combined/combined_game_model.py +0 -0
  64. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/combined/combined_league_model.py +0 -0
  65. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/combined/combined_player_model.py +0 -0
  66. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/combined/combined_team_model.py +0 -0
  67. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/combined/combined_venue_model.py +0 -0
  68. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/combined/combined_weather_model.py +0 -0
  69. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/combined/null_check.py +0 -0
  70. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/dividend_model.py +0 -0
  71. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/espn/__init__.py +0 -0
  72. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/espn/espn_bookie_model.py +0 -0
  73. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/espn/espn_coach_model.py +0 -0
  74. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/espn/espn_game_model.py +0 -0
  75. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/espn/espn_league_model.py +0 -0
  76. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/espn/espn_odds_model.py +0 -0
  77. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/espn/espn_player_model.py +0 -0
  78. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/espn/espn_team_model.py +0 -0
  79. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/espn/espn_venue_model.py +0 -0
  80. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/field_type.py +0 -0
  81. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/game_model.py +0 -0
  82. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/google/__init__.py +0 -0
  83. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/google/google_news_model.py +0 -0
  84. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/hkjc/__init__.py +0 -0
  85. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/hkjc/hkjc/__init__.py +0 -0
  86. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/hkjc/hkjc/hkjc_hkjc_bookie_model.py +0 -0
  87. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/hkjc/hkjc/hkjc_hkjc_dividend_model.py +0 -0
  88. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/hkjc/hkjc/hkjc_hkjc_league_model.py +0 -0
  89. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/hkjc/hkjc/hkjc_hkjc_odds_model.py +0 -0
  90. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/hkjc/hkjc/hkjc_hkjc_owner_model.py +0 -0
  91. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/hkjc/hkjc/hkjc_hkjc_team_model.py +0 -0
  92. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/hkjc/hkjc/hkjc_hkjc_venue_model.py +0 -0
  93. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/hkjc/position.py +0 -0
  94. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/league.py +0 -0
  95. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/league_model.py +0 -0
  96. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/model.py +0 -0
  97. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nba/__init__.py +0 -0
  98. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nba/combined/__init__.py +0 -0
  99. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nba/combined/nba_combined_league_model.py +0 -0
  100. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nba/espn/__init__.py +0 -0
  101. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nba/espn/nba_espn_league_model.py +0 -0
  102. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nba/nba/__init__.py +0 -0
  103. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nba/nba/nba_nba_game_model.py +0 -0
  104. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nba/nba/nba_nba_league_model.py +0 -0
  105. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nba/nba/nba_nba_team_model.py +0 -0
  106. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nba/nbacom/__init__.py +0 -0
  107. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nba/nbacom/nba_nbacom_game_model.py +0 -0
  108. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nba/nbacom/nba_nbacom_league_model.py +0 -0
  109. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nba/nbacom/nba_nbacom_player_model.py +0 -0
  110. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nba/nbacom/nba_nbacom_team_model.py +0 -0
  111. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nba/nbacom/nba_nbacom_venue_model.py +0 -0
  112. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nba/oddsportal/__init__.py +0 -0
  113. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nba/oddsportal/nba_oddsportal_league_model.py +0 -0
  114. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nba/position.py +0 -0
  115. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nba/sportsdb/__init__.py +0 -0
  116. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nba/sportsdb/nba_sportsdb_league_model.py +0 -0
  117. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nba/sportsreference/__init__.py +0 -0
  118. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nba/sportsreference/nba_sportsreference_league_model.py +0 -0
  119. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/ncaab/__init__.py +0 -0
  120. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/ncaab/combined/__init__.py +0 -0
  121. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/ncaab/combined/ncaab_combined_league_model.py +0 -0
  122. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/ncaab/espn/__init__.py +0 -0
  123. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/ncaab/espn/ncaab_espn_league_model.py +0 -0
  124. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/ncaab/oddsportal/__init__.py +0 -0
  125. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/ncaab/oddsportal/ncaab_oddsportal_league_model.py +0 -0
  126. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/ncaab/sportsreference/__init__.py +0 -0
  127. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/ncaab/sportsreference/ncaab_sportsreference_league_model.py +0 -0
  128. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/ncaaf/__init__.py +0 -0
  129. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/ncaaf/combined/__init__.py +0 -0
  130. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/ncaaf/combined/ncaaf_combined_league_model.py +0 -0
  131. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/ncaaf/espn/__init__.py +0 -0
  132. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/ncaaf/espn/ncaaf_espn_league_model.py +0 -0
  133. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/ncaaf/oddsportal/__init__.py +0 -0
  134. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/ncaaf/oddsportal/ncaaf_oddsportal_league_model.py +0 -0
  135. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/news_model.py +0 -0
  136. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nfl/__init__.py +0 -0
  137. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nfl/aussportsbetting/__init__.py +0 -0
  138. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nfl/aussportsbetting/nfl_aussportsbetting_league_model.py +0 -0
  139. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nfl/combined/__init__.py +0 -0
  140. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nfl/combined/nfl_combined_league_model.py +0 -0
  141. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nfl/espn/__init__.py +0 -0
  142. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nfl/espn/nfl_espn_league_model.py +0 -0
  143. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nfl/oddsportal/__init__.py +0 -0
  144. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nfl/oddsportal/nfl_oddsportal_league_model.py +0 -0
  145. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nfl/position.py +0 -0
  146. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nfl/sportsdb/__init__.py +0 -0
  147. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/nfl/sportsdb/nfl_sportsdb_league_model.py +0 -0
  148. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/odds_model.py +0 -0
  149. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/oddsportal/__init__.py +0 -0
  150. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/oddsportal/decrypt.py +0 -0
  151. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/oddsportal/oddsportal_bookie_model.py +0 -0
  152. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/oddsportal/oddsportal_game_model.py +0 -0
  153. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/oddsportal/oddsportal_league_model.py +0 -0
  154. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/oddsportal/oddsportal_odds_model.py +0 -0
  155. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/oddsportal/oddsportal_team_model.py +0 -0
  156. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/oddsportal/oddsportal_venue_model.py +0 -0
  157. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/owner_model.py +0 -0
  158. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/player_model.py +0 -0
  159. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/season_type.py +0 -0
  160. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/sex.py +0 -0
  161. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/social_model.py +0 -0
  162. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/species.py +0 -0
  163. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/sportsdb/__init__.py +0 -0
  164. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/sportsdb/sportsdb_game_model.py +0 -0
  165. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/sportsdb/sportsdb_league_model.py +0 -0
  166. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/sportsdb/sportsdb_team_model.py +0 -0
  167. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/sportsdb/sportsdb_venue_model.py +0 -0
  168. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/sportsreference/__init__.py +0 -0
  169. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/sportsreference/sportsreference_coach_model.py +0 -0
  170. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/sportsreference/sportsreference_game_model.py +0 -0
  171. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/sportsreference/sportsreference_league_model.py +0 -0
  172. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/sportsreference/sportsreference_player_model.py +0 -0
  173. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/sportsreference/sportsreference_venue_model.py +0 -0
  174. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/team_model.py +0 -0
  175. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/venue_model.py +0 -0
  176. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/weather/__init__.py +0 -0
  177. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/weather/gribstream/__init__.py +0 -0
  178. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/weather/gribstream/gribstream_weather_model.py +0 -0
  179. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/weather/multi_weather_model.py +0 -0
  180. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/weather/openmeteo/__init__.py +0 -0
  181. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/weather/openmeteo/openmeteo_weather_model.py +0 -0
  182. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/weather_model.py +0 -0
  183. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/wikipedia/__init__.py +0 -0
  184. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/wikipedia/wikipedia_venue_model.py +0 -0
  185. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/x/__init__.py +0 -0
  186. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/data/x/x_social_model.py +0 -0
  187. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/logger.py +0 -0
  188. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/loglevel.py +0 -0
  189. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/playwright.py +0 -0
  190. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/proxy_session.py +0 -0
  191. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/session.py +0 -0
  192. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/sportsball.py +0 -0
  193. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/vendor/__init__.py +0 -0
  194. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball/vendor/pygooglenews/__init__.py +0 -0
  195. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball.egg-info/dependency_links.txt +0 -0
  196. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball.egg-info/entry_points.txt +0 -0
  197. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball.egg-info/not-zip-safe +0 -0
  198. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball.egg-info/requires.txt +0 -0
  199. {sportsball-0.4.1 → sportsball-0.4.2}/sportsball.egg-info/top_level.txt +0 -0
  200. {sportsball-0.4.1 → sportsball-0.4.2}/tests/__init__.py +0 -0
  201. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/__init__.py +0 -0
  202. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/afl/__init__.py +0 -0
  203. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/afl/afl/__init__.py +0 -0
  204. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/afl/afl/afl_afl_game_model_test.py +0 -0
  205. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/afl/afl/afl_afl_league_model_test.py +0 -0
  206. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/afl/afltables/__init__.py +0 -0
  207. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/afl/afltables/afl_afltables_league_model_test.py +0 -0
  208. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/afl/afltables/afl_afltables_player_model_test.py +0 -0
  209. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/aussportsbetting/__init__.py +0 -0
  210. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/aussportsbetting/aussportsbetting_game_model_test.py +0 -0
  211. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/combined/__init__.py +0 -0
  212. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/combined/combined_game_model_test.py +0 -0
  213. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/combined/combined_player_model_test.py +0 -0
  214. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/combined/combined_team_model_test.py +0 -0
  215. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/espn/__init__.py +0 -0
  216. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/espn/espn_game_model_test.py +0 -0
  217. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/espn/espn_player_model_test.py +0 -0
  218. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/game_model_test.py +0 -0
  219. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/google/__init__.py +0 -0
  220. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/google/google_address_model_test.py +0 -0
  221. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/google/google_news_model_test.py +0 -0
  222. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/hkjc/__init__.py +0 -0
  223. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/hkjc/hkjc/__init__.py +0 -0
  224. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/nba/__init__.py +0 -0
  225. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/nba/nba/__init__.py +0 -0
  226. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/nba/nba/nba_nba_game_model_test.py +0 -0
  227. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/nba/nba/nba_nba_league_model_test.py +0 -0
  228. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/nba/nba/nba_nba_team_model_test.py +0 -0
  229. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/nba/sportsdb/__init__.py +0 -0
  230. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/nba/sportsdb/nba_sportsdb_league_model_test.py +0 -0
  231. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/nba/sportsreference/__init__.py +0 -0
  232. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/nba/sportsreference/nba_sportsreference_league_model_test.py +0 -0
  233. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/ncaab/__init__.py +0 -0
  234. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/ncaab/sportsreference/__init__.py +0 -0
  235. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/ncaab/sportsreference/ncaab_sportsreference_league_model_test.py +0 -0
  236. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/nfl/__init__.py +0 -0
  237. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/nfl/sportsdb/__init__.py +0 -0
  238. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/nfl/sportsdb/nfl_sportsdb_league_model_test.py +0 -0
  239. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/oddsportal/__init__.py +0 -0
  240. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/oddsportal/decrypt_test.py +0 -0
  241. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/oddsportal/oddsportal_game_model_test.py +0 -0
  242. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/oddsportal/oddsportal_league_model_test.py +0 -0
  243. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/player_model_test.py +0 -0
  244. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/social_model_test.py +0 -0
  245. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/sportsdb/__init__.py +0 -0
  246. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/sportsdb/sportsdb_game_model_test.py +0 -0
  247. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/sportsdb/sportsdb_league_model_test.py +0 -0
  248. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/sportsdb/sportsdb_team_model_test.py +0 -0
  249. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/sportsdb/sportsdb_venue_model_test.py +0 -0
  250. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/sportsreference/__init__.py +0 -0
  251. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/sportsreference/sportsreference_coach_model_test.py +0 -0
  252. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/sportsreference/sportsreference_game_model_test.py +0 -0
  253. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/sportsreference/sportsreference_league_model_test.py +0 -0
  254. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/sportsreference/sportsreference_player_model_test.py +0 -0
  255. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/sportsreference/sportsreference_venue_model_test.py +0 -0
  256. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/team_model_test.py +0 -0
  257. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/x/__init__.py +0 -0
  258. {sportsball-0.4.1 → sportsball-0.4.2}/tests/data/x/x_social_model_test.py +0 -0
  259. {sportsball-0.4.1 → sportsball-0.4.2}/tests/proxy_session_test.py +0 -0
  260. {sportsball-0.4.1 → sportsball-0.4.2}/tests/sportsball_test.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: sportsball
3
- Version: 0.4.1
3
+ Version: 0.4.2
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.4.1',
29
+ version='0.4.2',
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.4.1"
7
+ __VERSION__ = "0.4.2"
@@ -47,7 +47,7 @@ def _create_afl_afltables_coach_model(
47
47
  start_year, end_year = [int(x) for x in year_range.split("-")]
48
48
  else:
49
49
  start_year = end_year = int(year_range)
50
- if start_year <= year >= end_year:
50
+ if start_year <= year <= end_year:
51
51
  name = names[count].strip()
52
52
  break
53
53
  if name is None:
@@ -15525,6 +15525,8 @@ _CACHED_GEOCODES: dict[str, Any] = {
15525
15525
  housenumber="",
15526
15526
  country="Italy",
15527
15527
  ),
15528
+ "TIO Traeger Park, Alice Springs": TIO_STADIUM,
15529
+ "Hard Rock Stadium, Miami Gardens, FL, USA": HARD_ROCK_STADIUM,
15528
15530
  }
15529
15531
 
15530
15532
 
@@ -32,6 +32,8 @@ def _create_hkjc_hkjc_coach_model(
32
32
  age_str = df.iat[1, 0].strip().split(":")[-1].strip().split(",")[0].strip()
33
33
  if "–" in age_str:
34
34
  age_str = age_str.split("–")[-1].strip()
35
+ if "-" in age_str:
36
+ age_str = age_str.split("-")[-1].strip()
35
37
  age = int(age_str)
36
38
 
37
39
  if name is None:
@@ -3,6 +3,7 @@
3
3
  # pylint: disable=too-many-nested-blocks,too-many-statements,too-many-branches,too-many-locals
4
4
  import datetime
5
5
  import io
6
+ import logging
6
7
  import urllib.parse
7
8
  from urllib.parse import urlparse
8
9
 
@@ -36,6 +37,10 @@ def _create_hkjc_hkjc_game_model(
36
37
  div_text = div.get_text().strip()
37
38
  if div_text.lower() == "no information.":
38
39
  return None
40
+ for div in soup.find_all("div"):
41
+ div_text = div.get_text().strip()
42
+ if "this race is declared abandoned" in div_text.lower():
43
+ return None
39
44
 
40
45
  o = urlparse(url)
41
46
  query = urllib.parse.parse_qs(o.query)
@@ -55,7 +60,13 @@ def _create_hkjc_hkjc_game_model(
55
60
  for count, df in enumerate(dfs):
56
61
  if count == 1:
57
62
  race_track = df.iat[2, 2].split("-")[0].strip()
58
- distance = float(df.iat[1, 0].split("-")[1].strip().replace("M", ""))
63
+ distance = 0.0
64
+ try:
65
+ distance = float(df.iat[1, 0].split("-")[1].strip().replace("M", ""))
66
+ except IndexError:
67
+ logging.error(html)
68
+ logging.error(url)
69
+ raise
59
70
  pot = float(df.iat[3, 0].split()[-1].strip().replace(",", ""))
60
71
  elif count == 2:
61
72
  for _, row in df.iterrows():
@@ -165,6 +176,7 @@ def _create_hkjc_hkjc_game_model(
165
176
  dividend_str = str(row_df.iat[2, 0]).strip().lower()
166
177
  if dividend_str == "details":
167
178
  continue
179
+ dividend_str = dividend_str.split("/", maxsplit=1)[0].replace(",", "")
168
180
  dividend = float(dividend_str)
169
181
 
170
182
  combination = None
@@ -40,6 +40,10 @@ def _create_hkjc_hkjc_player_model(
40
40
  dfs = pd.read_html(handle)
41
41
  except AttributeError as exc:
42
42
  logging.warning(str(exc))
43
+ except ValueError:
44
+ logging.error(response.text)
45
+ logging.error(url)
46
+ raise
43
47
  o = urlparse(url)
44
48
  soup = BeautifulSoup(response.text, "lxml")
45
49
 
@@ -41,6 +41,7 @@ _NON_WAYBACK_URLS: set[str] = {
41
41
  "https://www.sports-reference.com/cbb/schools/rice/women/2019.html",
42
42
  "https://www.sports-reference.com/cbb/schools/north-carolina/women/2018.html",
43
43
  "https://www.sports-reference.com/cbb/schools/minnesota/women/2009.html",
44
+ "https://www.basketball-reference.com/teams/GSW/2016.html",
44
45
  }
45
46
  _BAD_TEAM_URLS = {
46
47
  "https://www.sports-reference.com/cbb/schools/mid-atlantic-christian/2016.html",
@@ -173,10 +174,6 @@ def _create_sportsreference_team_model(
173
174
  if entity_identifier == "coaches":
174
175
  coach_url = a_url
175
176
  break
176
- if coach_url is None:
177
- logging.error(response.text)
178
- logging.error(response.url)
179
- raise ValueError("coach_url is null")
180
177
 
181
178
  o = urlparse(url)
182
179
  sex_id = o.path.split("/")[-2]
@@ -226,7 +223,9 @@ def _create_sportsreference_team_model(
226
223
  location=None,
227
224
  news=create_google_news_models(name, session, dt, league),
228
225
  social=create_x_social_model(name, session, dt),
229
- coaches=[create_sportsreference_coach_model(session, coach_url, dt)],
226
+ coaches=[create_sportsreference_coach_model(session, coach_url, dt)]
227
+ if coach_url is not None
228
+ else [],
230
229
  lbw=None,
231
230
  end_dt=None,
232
231
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: sportsball
3
- Version: 0.4.1
3
+ Version: 0.4.2
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
@@ -204,6 +204,7 @@ tests/data/afl/afl/__init__.py
204
204
  tests/data/afl/afl/afl_afl_game_model_test.py
205
205
  tests/data/afl/afl/afl_afl_league_model_test.py
206
206
  tests/data/afl/afltables/__init__.py
207
+ tests/data/afl/afltables/afl_afltables_coach_model_test.py
207
208
  tests/data/afl/afltables/afl_afltables_game_model_test.py
208
209
  tests/data/afl/afltables/afl_afltables_league_model_test.py
209
210
  tests/data/afl/afltables/afl_afltables_player_model_test.py
@@ -0,0 +1,30 @@
1
+ """Tests for the afltables coach model class."""
2
+ import os
3
+ import unittest
4
+ import datetime
5
+
6
+ import requests_mock
7
+ import requests_cache
8
+ from sportsball.data.afl.afltables.afl_afltables_coach_model import create_afl_afltables_coach_model
9
+
10
+
11
+ class TestAFLTablesCoachModel(unittest.TestCase):
12
+
13
+ def setUp(self):
14
+ self._session = requests_cache.CachedSession(backend="memory")
15
+ self.dir = os.path.dirname(__file__)
16
+
17
+ def test_dt(self):
18
+ with requests_mock.Mocker() as m:
19
+ url = "https://afltables.com/afl/stats/coaches/goldcoast.html"
20
+ with open(os.path.join(self.dir, "coaches_goldcoast.html"), "rb") as f:
21
+ m.get(url, content=f.read())
22
+ with open(os.path.join(self.dir, "Guy_McKenna.html"), "rb") as f:
23
+ m.get("https://afltables.com/afl/stats/coaches/Guy_McKenna.html", content=f.read())
24
+ coach_model = create_afl_afltables_coach_model(
25
+ url=url,
26
+ session=self._session,
27
+ year=2012,
28
+ dt=datetime.datetime(2012, 10, 10),
29
+ )
30
+ self.assertEqual(coach_model.name, "McKenna, Guy")
@@ -126,6 +126,10 @@ class TestAFLTablesGameModel(unittest.TestCase):
126
126
  m.get("https://afltables.com/afl/stats/coaches/John_Worsfold.html", content=f.read())
127
127
  with open(os.path.join(self.dir, "Ross_Lyon.html"), "rb") as f:
128
128
  m.get("https://afltables.com/afl/stats/coaches/Ross_Lyon.html", content=f.read())
129
+ with open(os.path.join(self.dir, "Andrew_McQualter.html"), "rb") as f:
130
+ m.get("https://afltables.com/afl/stats/coaches/Andrew_McQualter.html", content=f.read())
131
+ with open(os.path.join(self.dir, "Justin_Longmuir.html"), "rb") as f:
132
+ m.get("https://afltables.com/afl/stats/coaches/Justin_Longmuir.html", content=f.read())
129
133
  m.get("https://historical-forecast-api.open-meteo.com/v1/forecast?latitude=-31.9511597&longitude=115.884175&start_date=2025-03-29&end_date=2025-03-30&hourly=temperature_2m&hourly=relative_humidity_2m&hourly=dew_point_2m&hourly=apparent_temperature&hourly=precipitation&hourly=rain&hourly=snowfall&hourly=snow_depth&hourly=weather_code&hourly=pressure_msl&hourly=surface_pressure&hourly=cloud_cover&hourly=cloud_cover_low&hourly=cloud_cover_mid&hourly=cloud_cover_high&hourly=et0_fao_evapotranspiration&hourly=vapour_pressure_deficit&hourly=wind_speed_10m&hourly=wind_speed_100m&hourly=wind_direction_10m&hourly=wind_direction_100m&hourly=wind_gusts_10m&hourly=soil_temperature_0_to_7cm&hourly=soil_temperature_7_to_28cm&hourly=soil_temperature_28_to_100cm&hourly=soil_temperature_100_to_255cm&hourly=soil_moisture_0_to_7cm&hourly=soil_moisture_7_to_28cm&hourly=soil_moisture_28_to_100cm&hourly=soil_moisture_100_to_255cm&daily=weather_code&daily=temperature_2m_max&daily=temperature_2m_min&daily=temperature_2m_mean&daily=apparent_temperature_max&daily=apparent_temperature_min&daily=apparent_temperature_mean&daily=sunrise&daily=sunset&daily=daylight_duration&daily=sunshine_duration&daily=precipitation_sum&daily=rain_sum&daily=snowfall_sum&daily=precipitation_hours&daily=wind_speed_10m_max&daily=wind_gusts_10m_max&daily=wind_direction_10m_dominant&daily=shortwave_radiation_sum&daily=et0_fao_evapotranspiration&timezone=Australia%2FPerth&format=flatbuffers")
130
134
 
131
135
  game_model = _create_afl_afltables_game_model(
@@ -118,3 +118,15 @@ class TestHKJCHKJCGameModel(unittest.TestCase):
118
118
  url="https://racing.hkjc.com/racing/information/English/Racing/LocalResults.aspx?RaceDate=2025/05/26&Racecourse=HV&RaceNo=1",
119
119
  )
120
120
  self.assertIsNone(game_model)
121
+
122
+ def test_race_declared_abandoned(self):
123
+ with requests_mock.Mocker() as m:
124
+ html = ""
125
+ with open(os.path.join(self.dir, "game3.html"), "r") as f:
126
+ html = f.read()
127
+ game_model = create_hkjc_hkjc_game_model(
128
+ session=self._session,
129
+ html=html,
130
+ url="https://racing.hkjc.com/racing/information/English/Racing/LocalResults.aspx?RaceDate=2024%2F11%2F13&RaceNo=7&Racecourse=HV",
131
+ )
132
+ self.assertIsNone(game_model)
@@ -218,3 +218,27 @@ class TestSportsReferenceTeamModel(unittest.TestCase):
218
218
  {},
219
219
  )
220
220
  self.assertEqual(team_model.name, "Boston Celtics")
221
+
222
+ def test_coach_url_null(self):
223
+ url = "https://www.basketball-reference.com/teams/GSW/2016.html"
224
+ with requests_mock.Mocker() as m:
225
+ with open(os.path.join(self.dir, "GSW_2016_2.html"), "rb") as f:
226
+ m.get(url, content=f.read())
227
+ with open(os.path.join(self.dir, "kerrst01c.html"), "rb") as f:
228
+ m.get("https://www.basketball-reference.com/coaches/kerrst01c.html", content=f.read())
229
+ team_model = create_sportsreference_team_model(
230
+ session=self.session,
231
+ url=url,
232
+ dt=datetime.datetime(2010, 10, 10, 10, 10, 00),
233
+ league=League.NBA,
234
+ player_urls=set(),
235
+ points=10.0,
236
+ fg={},
237
+ fga={},
238
+ offensive_rebounds={},
239
+ assists={},
240
+ turnovers={},
241
+ team_name="",
242
+ positions_validator={},
243
+ )
244
+ self.assertListEqual(team_model.coaches, [])
File without changes
File without changes
File without changes
File without changes
File without changes