sportsball 0.6.22__tar.gz → 0.7.0__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 (261) hide show
  1. {sportsball-0.6.22/sportsball.egg-info → sportsball-0.7.0}/PKG-INFO +14 -2
  2. {sportsball-0.6.22 → sportsball-0.7.0}/README.md +11 -0
  3. {sportsball-0.6.22 → sportsball-0.7.0}/requirements.txt +2 -1
  4. {sportsball-0.6.22 → sportsball-0.7.0}/setup.py +1 -1
  5. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/__init__.py +1 -1
  6. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/address_model.py +6 -0
  7. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/afl/afl/afl_afl_game_model.py +14 -7
  8. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/afl/afl/afl_afl_league_model.py +19 -17
  9. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/afl/afl/afl_afl_player_model.py +2 -1
  10. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/afl/afl/afl_afl_team_model.py +2 -0
  11. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/afl/afl/afl_afl_venue_model.py +2 -0
  12. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/afl/afltables/afl_afltables_coach_model.py +17 -6
  13. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/afl/afltables/afl_afltables_game_model.py +31 -25
  14. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/afl/afltables/afl_afltables_player_model.py +7 -1
  15. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/afl/afltables/afl_afltables_team_model.py +28 -10
  16. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/afl/afltables/afl_afltables_venue_model.py +16 -6
  17. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/aussportsbetting/aussportsbetting_game_model.py +48 -25
  18. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/aussportsbetting/aussportsbetting_team_model.py +2 -0
  19. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/aussportsbetting/aussportsbetting_venue_model.py +6 -1
  20. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/coach_model.py +23 -1
  21. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/combined/combined_coach_model.py +9 -12
  22. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/combined/combined_game_model.py +2 -1
  23. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/combined/combined_player_model.py +4 -12
  24. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/combined/combined_team_model.py +4 -12
  25. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/combined/combined_venue_model.py +5 -2
  26. sportsball-0.7.0/sportsball/data/combined/ffill.py +23 -0
  27. sportsball-0.7.0/sportsball/data/delimiter.py +3 -0
  28. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/espn/espn_coach_model.py +9 -4
  29. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/espn/espn_game_model.py +43 -28
  30. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/espn/espn_player_model.py +11 -2
  31. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/espn/espn_team_model.py +31 -18
  32. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/espn/espn_venue_model.py +5 -1
  33. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/game_model.py +5 -0
  34. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/google/google_address_model.py +15 -0
  35. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/hkjc/hkjc/hkjc_hkjc_coach_model.py +9 -4
  36. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/hkjc/hkjc/hkjc_hkjc_game_model.py +15 -4
  37. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/hkjc/hkjc/hkjc_hkjc_league_model.py +3 -0
  38. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/hkjc/hkjc/hkjc_hkjc_player_model.py +7 -1
  39. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/hkjc/hkjc/hkjc_hkjc_team_model.py +7 -1
  40. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/hkjc/hkjc/hkjc_hkjc_venue_model.py +2 -0
  41. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/league_model.py +1 -1
  42. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nba/nba/nba_nba_game_model.py +25 -4
  43. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nba/nba/nba_nba_team_model.py +29 -4
  44. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nba/nbacom/nba_nbacom_game_model.py +15 -4
  45. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nba/nbacom/nba_nbacom_league_model.py +4 -2
  46. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nba/nbacom/nba_nbacom_player_model.py +2 -1
  47. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nba/nbacom/nba_nbacom_team_model.py +2 -0
  48. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nba/nbacom/nba_nbacom_venue_model.py +2 -0
  49. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/oddsportal/oddsportal_game_model.py +13 -4
  50. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/oddsportal/oddsportal_team_model.py +37 -31
  51. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/oddsportal/oddsportal_venue_model.py +26 -5
  52. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/player_model.py +11 -11
  53. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/sex.py +7 -0
  54. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/sportsdb/sportsdb_game_model.py +32 -5
  55. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/sportsdb/sportsdb_team_model.py +30 -5
  56. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/sportsdb/sportsdb_venue_model.py +19 -6
  57. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/sportsreference/sportsreference_coach_model.py +7 -6
  58. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/sportsreference/sportsreference_game_model.py +21 -4
  59. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/sportsreference/sportsreference_player_model.py +7 -1
  60. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/sportsreference/sportsreference_team_model.py +9 -1
  61. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/sportsreference/sportsreference_venue_model.py +19 -6
  62. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/team_model.py +5 -0
  63. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/venue_model.py +4 -0
  64. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/wikipedia/wikipedia_venue_model.py +3 -1
  65. {sportsball-0.6.22 → sportsball-0.7.0/sportsball.egg-info}/PKG-INFO +14 -2
  66. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball.egg-info/SOURCES.txt +2 -0
  67. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball.egg-info/requires.txt +2 -1
  68. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/afl/afltables/afl_afltables_game_model_test.py +3 -1
  69. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/combined/combined_game_model_test.py +2 -1
  70. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/combined/combined_player_model_test.py +2 -1
  71. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/combined/combined_team_model_test.py +77 -2
  72. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/combined/combined_venue_model_test.py +3 -1
  73. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/game_model_test.py +2 -1
  74. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/player_model_test.py +2 -1
  75. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/team_model_test.py +2 -1
  76. {sportsball-0.6.22 → sportsball-0.7.0}/LICENSE +0 -0
  77. {sportsball-0.6.22 → sportsball-0.7.0}/MANIFEST.in +0 -0
  78. {sportsball-0.6.22 → sportsball-0.7.0}/setup.cfg +0 -0
  79. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/__main__.py +0 -0
  80. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/args.py +0 -0
  81. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/cache.py +0 -0
  82. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/__init__.py +0 -0
  83. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/afl/__init__.py +0 -0
  84. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/afl/afl/__init__.py +0 -0
  85. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/afl/afl/afl_afl_bookie_model.py +0 -0
  86. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/afl/afl/afl_afl_odds_model.py +0 -0
  87. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/afl/afltables/__init__.py +0 -0
  88. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/afl/afltables/afl_afltables_league_model.py +0 -0
  89. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/afl/aussportsbetting/__init__.py +0 -0
  90. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/afl/aussportsbetting/afl_aussportsbetting_league_model.py +0 -0
  91. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/afl/combined/__init__.py +0 -0
  92. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/afl/combined/afl_combined_league_model.py +0 -0
  93. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/afl/espn/__init__.py +0 -0
  94. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/afl/espn/afl_espn_league_model.py +0 -0
  95. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/afl/oddsportal/__init__.py +0 -0
  96. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/afl/oddsportal/afl_oddsportal_league_model.py +0 -0
  97. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/afl/position.py +0 -0
  98. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/aussportsbetting/__init__.py +0 -0
  99. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/aussportsbetting/aussportsbetting_bookie_model.py +0 -0
  100. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/aussportsbetting/aussportsbetting_league_model.py +0 -0
  101. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/aussportsbetting/aussportsbetting_odds_model.py +0 -0
  102. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/bet.py +0 -0
  103. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/bookie_model.py +0 -0
  104. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/combined/__init__.py +0 -0
  105. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/combined/combined_address_model.py +0 -0
  106. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/combined/combined_league_model.py +0 -0
  107. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/combined/combined_weather_model.py +0 -0
  108. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/combined/null_check.py +0 -0
  109. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/dividend_model.py +0 -0
  110. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/espn/__init__.py +0 -0
  111. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/espn/espn_bookie_model.py +0 -0
  112. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/espn/espn_league_model.py +0 -0
  113. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/espn/espn_odds_model.py +0 -0
  114. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/field_type.py +0 -0
  115. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/google/__init__.py +0 -0
  116. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/google/google_news_model.py +0 -0
  117. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/hkjc/__init__.py +0 -0
  118. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/hkjc/hkjc/__init__.py +0 -0
  119. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/hkjc/hkjc/hkjc_hkjc_bookie_model.py +0 -0
  120. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/hkjc/hkjc/hkjc_hkjc_dividend_model.py +0 -0
  121. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/hkjc/hkjc/hkjc_hkjc_odds_model.py +0 -0
  122. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/hkjc/hkjc/hkjc_hkjc_owner_model.py +0 -0
  123. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/hkjc/position.py +0 -0
  124. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/league.py +0 -0
  125. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/model.py +0 -0
  126. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nba/__init__.py +0 -0
  127. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nba/combined/__init__.py +0 -0
  128. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nba/combined/nba_combined_league_model.py +0 -0
  129. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nba/espn/__init__.py +0 -0
  130. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nba/espn/nba_espn_league_model.py +0 -0
  131. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nba/nba/__init__.py +0 -0
  132. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nba/nba/nba_nba_league_model.py +0 -0
  133. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nba/nbacom/__init__.py +0 -0
  134. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nba/oddsportal/__init__.py +0 -0
  135. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nba/oddsportal/nba_oddsportal_league_model.py +0 -0
  136. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nba/position.py +0 -0
  137. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nba/sportsdb/__init__.py +0 -0
  138. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nba/sportsdb/nba_sportsdb_league_model.py +0 -0
  139. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nba/sportsreference/__init__.py +0 -0
  140. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nba/sportsreference/nba_sportsreference_league_model.py +0 -0
  141. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/ncaab/__init__.py +0 -0
  142. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/ncaab/combined/__init__.py +0 -0
  143. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/ncaab/combined/ncaab_combined_league_model.py +0 -0
  144. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/ncaab/espn/__init__.py +0 -0
  145. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/ncaab/espn/ncaab_espn_league_model.py +0 -0
  146. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/ncaab/oddsportal/__init__.py +0 -0
  147. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/ncaab/oddsportal/ncaab_oddsportal_league_model.py +0 -0
  148. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/ncaab/sportsreference/__init__.py +0 -0
  149. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/ncaab/sportsreference/ncaab_sportsreference_league_model.py +0 -0
  150. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/ncaaf/__init__.py +0 -0
  151. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/ncaaf/combined/__init__.py +0 -0
  152. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/ncaaf/combined/ncaaf_combined_league_model.py +0 -0
  153. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/ncaaf/espn/__init__.py +0 -0
  154. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/ncaaf/espn/ncaaf_espn_league_model.py +0 -0
  155. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/ncaaf/oddsportal/__init__.py +0 -0
  156. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/ncaaf/oddsportal/ncaaf_oddsportal_league_model.py +0 -0
  157. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/news_model.py +0 -0
  158. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nfl/__init__.py +0 -0
  159. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nfl/aussportsbetting/__init__.py +0 -0
  160. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nfl/aussportsbetting/nfl_aussportsbetting_league_model.py +0 -0
  161. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nfl/combined/__init__.py +0 -0
  162. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nfl/combined/nfl_combined_league_model.py +0 -0
  163. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nfl/espn/__init__.py +0 -0
  164. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nfl/espn/nfl_espn_league_model.py +0 -0
  165. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nfl/oddsportal/__init__.py +0 -0
  166. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nfl/oddsportal/nfl_oddsportal_league_model.py +0 -0
  167. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nfl/position.py +0 -0
  168. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nfl/sportsdb/__init__.py +0 -0
  169. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/nfl/sportsdb/nfl_sportsdb_league_model.py +0 -0
  170. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/odds_model.py +0 -0
  171. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/oddsportal/__init__.py +0 -0
  172. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/oddsportal/decrypt.py +0 -0
  173. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/oddsportal/oddsportal_bookie_model.py +0 -0
  174. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/oddsportal/oddsportal_league_model.py +0 -0
  175. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/oddsportal/oddsportal_odds_model.py +0 -0
  176. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/owner_model.py +0 -0
  177. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/season_type.py +0 -0
  178. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/social_model.py +0 -0
  179. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/species.py +0 -0
  180. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/sportsdb/__init__.py +0 -0
  181. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/sportsdb/sportsdb_league_model.py +0 -0
  182. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/sportsreference/__init__.py +0 -0
  183. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/sportsreference/sportsreference_league_model.py +0 -0
  184. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/weather/__init__.py +0 -0
  185. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/weather/gribstream/__init__.py +0 -0
  186. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/weather/gribstream/gribstream_weather_model.py +0 -0
  187. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/weather/multi_weather_model.py +0 -0
  188. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/weather/openmeteo/__init__.py +0 -0
  189. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/weather/openmeteo/openmeteo_weather_model.py +0 -0
  190. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/weather_model.py +0 -0
  191. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/wikipedia/__init__.py +0 -0
  192. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/x/__init__.py +0 -0
  193. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/data/x/x_social_model.py +0 -0
  194. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/logger.py +0 -0
  195. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/loglevel.py +0 -0
  196. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/playwright.py +0 -0
  197. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/sportsball.py +0 -0
  198. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/vendor/__init__.py +0 -0
  199. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball/vendor/pygooglenews/__init__.py +0 -0
  200. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball.egg-info/dependency_links.txt +0 -0
  201. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball.egg-info/entry_points.txt +0 -0
  202. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball.egg-info/not-zip-safe +0 -0
  203. {sportsball-0.6.22 → sportsball-0.7.0}/sportsball.egg-info/top_level.txt +0 -0
  204. {sportsball-0.6.22 → sportsball-0.7.0}/tests/__init__.py +0 -0
  205. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/__init__.py +0 -0
  206. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/afl/__init__.py +0 -0
  207. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/afl/afl/__init__.py +0 -0
  208. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/afl/afl/afl_afl_game_model_test.py +0 -0
  209. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/afl/afl/afl_afl_league_model_test.py +0 -0
  210. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/afl/afltables/__init__.py +0 -0
  211. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/afl/afltables/afl_afltables_coach_model_test.py +0 -0
  212. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/afl/afltables/afl_afltables_league_model_test.py +0 -0
  213. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/afl/afltables/afl_afltables_player_model_test.py +0 -0
  214. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/aussportsbetting/__init__.py +0 -0
  215. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/aussportsbetting/aussportsbetting_game_model_test.py +0 -0
  216. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/combined/__init__.py +0 -0
  217. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/espn/__init__.py +0 -0
  218. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/espn/espn_game_model_test.py +0 -0
  219. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/espn/espn_player_model_test.py +0 -0
  220. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/google/__init__.py +0 -0
  221. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/google/google_address_model_test.py +0 -0
  222. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/google/google_news_model_test.py +0 -0
  223. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/hkjc/__init__.py +0 -0
  224. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/hkjc/hkjc/__init__.py +0 -0
  225. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/hkjc/hkjc/hkjc_hkjc_game_model_test.py +0 -0
  226. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/hkjc/hkjc/hkjc_hkjc_player_model_test.py +0 -0
  227. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/nba/__init__.py +0 -0
  228. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/nba/nba/__init__.py +0 -0
  229. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/nba/nba/nba_nba_game_model_test.py +0 -0
  230. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/nba/nba/nba_nba_league_model_test.py +0 -0
  231. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/nba/nba/nba_nba_team_model_test.py +0 -0
  232. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/nba/sportsdb/__init__.py +0 -0
  233. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/nba/sportsdb/nba_sportsdb_league_model_test.py +0 -0
  234. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/nba/sportsreference/__init__.py +0 -0
  235. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/nba/sportsreference/nba_sportsreference_league_model_test.py +0 -0
  236. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/ncaab/__init__.py +0 -0
  237. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/ncaab/sportsreference/__init__.py +0 -0
  238. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/ncaab/sportsreference/ncaab_sportsreference_league_model_test.py +0 -0
  239. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/nfl/__init__.py +0 -0
  240. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/nfl/sportsdb/__init__.py +0 -0
  241. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/nfl/sportsdb/nfl_sportsdb_league_model_test.py +0 -0
  242. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/oddsportal/__init__.py +0 -0
  243. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/oddsportal/decrypt_test.py +0 -0
  244. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/oddsportal/oddsportal_game_model_test.py +0 -0
  245. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/oddsportal/oddsportal_league_model_test.py +0 -0
  246. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/social_model_test.py +0 -0
  247. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/sportsdb/__init__.py +0 -0
  248. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/sportsdb/sportsdb_game_model_test.py +0 -0
  249. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/sportsdb/sportsdb_league_model_test.py +0 -0
  250. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/sportsdb/sportsdb_team_model_test.py +0 -0
  251. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/sportsdb/sportsdb_venue_model_test.py +0 -0
  252. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/sportsreference/__init__.py +0 -0
  253. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/sportsreference/sportsreference_coach_model_test.py +0 -0
  254. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/sportsreference/sportsreference_game_model_test.py +0 -0
  255. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/sportsreference/sportsreference_league_model_test.py +0 -0
  256. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/sportsreference/sportsreference_player_model_test.py +0 -0
  257. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/sportsreference/sportsreference_team_model_test.py +0 -0
  258. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/sportsreference/sportsreference_venue_model_test.py +0 -0
  259. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/x/__init__.py +0 -0
  260. {sportsball-0.6.22 → sportsball-0.7.0}/tests/data/x/x_social_model_test.py +0 -0
  261. {sportsball-0.6.22 → sportsball-0.7.0}/tests/sportsball_test.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: sportsball
3
- Version: 0.6.22
3
+ Version: 0.7.0
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,7 +47,8 @@ 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
+ Requires-Dist: scrapesession>=0.0.3
51
+ Requires-Dist: pyhigh>=0.0.6
51
52
  Dynamic: author
52
53
  Dynamic: author-email
53
54
  Dynamic: classifier
@@ -111,6 +112,7 @@ Python 3.11.6:
111
112
  - [lxml](https://lxml.de/)
112
113
  - [gender-guesser](https://github.com/lead-ratings/gender-guesser)
113
114
  - [scrapesession](https://github.com/8W9aG/scrapesession)
115
+ - [pyhigh](https://github.com/sgherbst/pyhigh)
114
116
 
115
117
  ## Raison D'être :thought_balloon:
116
118
 
@@ -168,6 +170,7 @@ A representation of the game within a season.
168
170
  * **postponed**: Whether the game was postponed.
169
171
  * **playoff**: Whether the game was a playoff game.
170
172
  * **distance**: The distance the game was played over.
173
+ * **version**: The version of the game model.
171
174
 
172
175
  #### Team
173
176
 
@@ -224,6 +227,7 @@ A representation of a team within a game.
224
227
  * **steals**: The number of steals made by the players on the team in the game.
225
228
  * **blocks**: The number of blocks made by the players on the team in the game.
226
229
  * **personal_fouls**: The number of personal fouls made by the players on the team in the game.
230
+ * **version**: The version of the team model.
227
231
 
228
232
  #### Player
229
233
 
@@ -287,6 +291,7 @@ A representation of a player within a team within a game.
287
291
  * **points**: The points made by the player during the game.
288
292
  * **game_score**: The [John Hollinger game score](https://www.nbastuffer.com/analytics101/game-score/) of the player during the game.
289
293
  * **point_differential**: The points scored by the players team while the player was on the court minus the points scored by the opposing team when the player is off the court.
294
+ * **version**: The version of the player model.
290
295
 
291
296
  #### Odds
292
297
 
@@ -307,6 +312,9 @@ The venue the game is played at.
307
312
  * **address**: The address of the venue.
308
313
  * **is_grass**: Whether the venue has a grass field.
309
314
  * **is_indoor**: Whether the venue is indoors.
315
+ * **is_turf**: Whether the venue is turf.
316
+ * **is_dirt**: Whether the venue is dirt.
317
+ * **version**: The version of the game model.
310
318
 
311
319
  #### Address
312
320
 
@@ -321,6 +329,8 @@ The address of the venue.
321
329
  * **weather**: The weather at the address at the game start time.
322
330
  * **timezone**: The time zone at the address.
323
331
  * **country**: The country of the address.
332
+ * **altitude**: The altitude of the address.
333
+ * **version**: The version of the address model.
324
334
 
325
335
  #### Weather
326
336
 
@@ -421,6 +431,8 @@ The coach on the team at the time of the game.
421
431
  * **name**: The name of the coach.
422
432
  * **birth_date**: The birth date of the coach.
423
433
  * **age**: The age of the coach.
434
+ * **sex**: The sex of the coach.
435
+ * **version**: The version of the coach model.
424
436
 
425
437
  #### Dividend
426
438
 
@@ -50,6 +50,7 @@ Python 3.11.6:
50
50
  - [lxml](https://lxml.de/)
51
51
  - [gender-guesser](https://github.com/lead-ratings/gender-guesser)
52
52
  - [scrapesession](https://github.com/8W9aG/scrapesession)
53
+ - [pyhigh](https://github.com/sgherbst/pyhigh)
53
54
 
54
55
  ## Raison D'être :thought_balloon:
55
56
 
@@ -107,6 +108,7 @@ A representation of the game within a season.
107
108
  * **postponed**: Whether the game was postponed.
108
109
  * **playoff**: Whether the game was a playoff game.
109
110
  * **distance**: The distance the game was played over.
111
+ * **version**: The version of the game model.
110
112
 
111
113
  #### Team
112
114
 
@@ -163,6 +165,7 @@ A representation of a team within a game.
163
165
  * **steals**: The number of steals made by the players on the team in the game.
164
166
  * **blocks**: The number of blocks made by the players on the team in the game.
165
167
  * **personal_fouls**: The number of personal fouls made by the players on the team in the game.
168
+ * **version**: The version of the team model.
166
169
 
167
170
  #### Player
168
171
 
@@ -226,6 +229,7 @@ A representation of a player within a team within a game.
226
229
  * **points**: The points made by the player during the game.
227
230
  * **game_score**: The [John Hollinger game score](https://www.nbastuffer.com/analytics101/game-score/) of the player during the game.
228
231
  * **point_differential**: The points scored by the players team while the player was on the court minus the points scored by the opposing team when the player is off the court.
232
+ * **version**: The version of the player model.
229
233
 
230
234
  #### Odds
231
235
 
@@ -246,6 +250,9 @@ The venue the game is played at.
246
250
  * **address**: The address of the venue.
247
251
  * **is_grass**: Whether the venue has a grass field.
248
252
  * **is_indoor**: Whether the venue is indoors.
253
+ * **is_turf**: Whether the venue is turf.
254
+ * **is_dirt**: Whether the venue is dirt.
255
+ * **version**: The version of the game model.
249
256
 
250
257
  #### Address
251
258
 
@@ -260,6 +267,8 @@ The address of the venue.
260
267
  * **weather**: The weather at the address at the game start time.
261
268
  * **timezone**: The time zone at the address.
262
269
  * **country**: The country of the address.
270
+ * **altitude**: The altitude of the address.
271
+ * **version**: The version of the address model.
263
272
 
264
273
  #### Weather
265
274
 
@@ -360,6 +369,8 @@ The coach on the team at the time of the game.
360
369
  * **name**: The name of the coach.
361
370
  * **birth_date**: The birth date of the coach.
362
371
  * **age**: The age of the coach.
372
+ * **sex**: The sex of the coach.
373
+ * **version**: The version of the coach model.
363
374
 
364
375
  #### Dividend
365
376
 
@@ -34,4 +34,5 @@ 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
37
+ scrapesession>=0.0.3
38
+ pyhigh>=0.0.6
@@ -26,7 +26,7 @@ def install_requires() -> typing.List[str]:
26
26
 
27
27
  setup(
28
28
  name='sportsball',
29
- version='0.6.22',
29
+ version='0.7.0',
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.6.22"
7
+ __VERSION__ = "0.7.0"
@@ -4,12 +4,16 @@ from typing import Literal
4
4
 
5
5
  from pydantic import BaseModel, Field
6
6
 
7
+ from .delimiter import DELIMITER
7
8
  from .field_type import TYPE_KEY, FieldType
9
+ from .weather_model import VERSION as WEATHER_VERSION
8
10
  from .weather_model import WeatherModel
9
11
 
10
12
  ADDRESS_LATITUDE_COLUMN: Literal["latitude"] = "latitude"
11
13
  ADDRESS_LONGITUDE_COLUMN: Literal["longitude"] = "longitude"
12
14
  ADDRESS_TIMEZONE_COLUMN: Literal["timezone"] = "timezone"
15
+ ADDRESS_ALTITUDE_COLUMN: Literal["altitude"] = "altitude"
16
+ VERSION = DELIMITER.join(["0.0.1", WEATHER_VERSION])
13
17
 
14
18
 
15
19
  class AddressModel(BaseModel):
@@ -32,3 +36,5 @@ class AddressModel(BaseModel):
32
36
  alias=ADDRESS_TIMEZONE_COLUMN,
33
37
  )
34
38
  country: str = Field(..., json_schema_extra={TYPE_KEY: FieldType.CATEGORICAL})
39
+ altitude: float | None = Field(..., alias=ADDRESS_ALTITUDE_COLUMN)
40
+ version: str = VERSION
@@ -12,6 +12,8 @@ from playwright.sync_api import Playwright
12
12
  from ....playwright import ensure_install
13
13
  from ...game_model import GameModel
14
14
  from ...league import League
15
+ from ...team_model import VERSION
16
+ from ...venue_model import VERSION as VENUE_VERSION
15
17
  from ..position import Position, position_from_str
16
18
  from .afl_afl_team_model import create_afl_afl_team_model
17
19
  from .afl_afl_venue_model import create_afl_afl_venue_model
@@ -121,6 +123,7 @@ def create_afl_afl_game_model(
121
123
  ladder: list[str],
122
124
  url: str | None,
123
125
  playwright: Playwright,
126
+ version: str,
124
127
  ) -> GameModel:
125
128
  """Create a game model from AFL Tables."""
126
129
  odds: list[float] = []
@@ -137,15 +140,18 @@ def create_afl_afl_game_model(
137
140
  if dt is None:
138
141
  raise ValueError("dt is null")
139
142
 
140
- venue_model = create_afl_afl_venue_model(venue_name, session, dt)
143
+ venue_model = create_afl_afl_venue_model(
144
+ venue_name=venue_name, session=session, dt=dt, version=VENUE_VERSION
145
+ )
141
146
  teams = [
142
147
  create_afl_afl_team_model(
143
- x,
144
- players[count],
145
- session,
146
- dt,
147
- ladder,
148
- odds[count] if count < len(odds) else None,
148
+ team_name=x,
149
+ players=players[count],
150
+ session=session,
151
+ dt=dt,
152
+ ladder=ladder,
153
+ odds=odds[count] if count < len(odds) else None,
154
+ version=VERSION,
149
155
  )
150
156
  for count, x in enumerate(team_names)
151
157
  ]
@@ -165,4 +171,5 @@ def create_afl_afl_game_model(
165
171
  distance=None,
166
172
  dividends=[],
167
173
  pot=None,
174
+ version=version,
168
175
  )
@@ -13,7 +13,7 @@ from playwright.sync_api import Playwright, sync_playwright
13
13
  from scrapesession.scrapesession import ScrapeSession # type: ignore
14
14
 
15
15
  from ....playwright import ensure_install
16
- from ...game_model import GameModel
16
+ from ...game_model import VERSION, GameModel
17
17
  from ...league import League
18
18
  from ...league_model import LeagueModel
19
19
  from ..position import Position, position_from_str
@@ -59,14 +59,15 @@ def _parse_v1(
59
59
  ):
60
60
  url = urllib.parse.urljoin(html_url, a.get("href"))
61
61
  yield create_afl_afl_game_model(
62
- team_names,
63
- teams_players,
64
- dt,
65
- venue_name,
66
- session,
67
- ladder,
68
- url,
69
- playwright,
62
+ team_names=team_names,
63
+ players=teams_players,
64
+ dt=dt,
65
+ venue_name=venue_name,
66
+ session=session,
67
+ ladder=ladder,
68
+ url=url,
69
+ playwright=playwright,
70
+ version=VERSION,
70
71
  )
71
72
 
72
73
 
@@ -150,14 +151,15 @@ def _parse_v2(
150
151
  ) -> Iterator[GameModel]:
151
152
  for team_names, team_players, venue_name, url in _parse_v2_soup(soup, html_url):
152
153
  yield create_afl_afl_game_model(
153
- team_names,
154
- team_players,
155
- None,
156
- venue_name,
157
- session,
158
- ladder,
159
- url,
160
- playwright,
154
+ team_names=team_names,
155
+ players=team_players,
156
+ dt=None,
157
+ venue_name=venue_name,
158
+ session=session,
159
+ ladder=ladder,
160
+ url=url,
161
+ playwright=playwright,
162
+ version=VERSION,
161
163
  )
162
164
 
163
165
 
@@ -1,7 +1,7 @@
1
1
  """AFL AFL player model."""
2
2
 
3
3
  # pylint: disable=duplicate-code
4
- from ...player_model import PlayerModel
4
+ from ...player_model import VERSION, PlayerModel
5
5
  from ...sex import Sex
6
6
  from ...species import Species
7
7
  from ..position import Position
@@ -70,4 +70,5 @@ def create_afl_afl_player_model(
70
70
  points=None,
71
71
  game_score=None,
72
72
  point_differential=None,
73
+ version=VERSION,
73
74
  )
@@ -20,6 +20,7 @@ def create_afl_afl_team_model(
20
20
  dt: datetime.datetime,
21
21
  ladder: list[str],
22
22
  odds: float | None,
23
+ version: str,
23
24
  ) -> TeamModel:
24
25
  """Create a team model from AFL AFL."""
25
26
  player_models = [
@@ -52,4 +53,5 @@ def create_afl_afl_team_model(
52
53
  coaches=[],
53
54
  lbw=None,
54
55
  end_dt=None,
56
+ version=version,
55
57
  )
@@ -13,6 +13,7 @@ def create_afl_afl_venue_model(
13
13
  venue_name: str,
14
14
  session: requests_cache.CachedSession,
15
15
  dt: datetime.datetime,
16
+ version: str,
16
17
  ) -> VenueModel:
17
18
  """Create a game model from AFL Tables."""
18
19
  address_model = create_google_address_model(venue_name, session, dt)
@@ -24,4 +25,5 @@ def create_afl_afl_venue_model(
24
25
  is_indoor=None,
25
26
  is_turf=None,
26
27
  is_dirt=None,
28
+ version=version,
27
29
  )
@@ -16,13 +16,17 @@ from dateutil.parser import parse
16
16
  from dateutil.relativedelta import relativedelta
17
17
 
18
18
  from ....cache import MEMORY
19
- from ...coach_model import CoachModel
19
+ from ...coach_model import VERSION, CoachModel
20
20
 
21
21
  _COACH_URL_CACHE: dict[str, str] = {}
22
22
 
23
23
 
24
24
  def _create_afl_afltables_coach_model(
25
- url: str, session: requests_cache.CachedSession, year: int, dt: datetime.datetime
25
+ url: str,
26
+ session: requests_cache.CachedSession,
27
+ year: int,
28
+ dt: datetime.datetime,
29
+ version: str,
26
30
  ) -> CoachModel | None:
27
31
  html = _COACH_URL_CACHE.get(url)
28
32
  if html is None:
@@ -84,14 +88,21 @@ def _create_afl_afltables_coach_model(
84
88
  name=name,
85
89
  birth_date=birth_date,
86
90
  age=relativedelta(birth_date, dt).years if birth_date is not None else None,
91
+ version=version,
87
92
  )
88
93
 
89
94
 
90
95
  @MEMORY.cache(ignore=["session"])
91
96
  def _cached_create_afl_afltables_coach_model(
92
- url: str, session: requests_cache.CachedSession, year: int, dt: datetime.datetime
97
+ url: str,
98
+ session: requests_cache.CachedSession,
99
+ year: int,
100
+ dt: datetime.datetime,
101
+ version: str,
93
102
  ) -> CoachModel | None:
94
- return _create_afl_afltables_coach_model(url=url, session=session, year=year, dt=dt)
103
+ return _create_afl_afltables_coach_model(
104
+ url=url, session=session, year=year, dt=dt, version=version
105
+ )
95
106
 
96
107
 
97
108
  def create_afl_afltables_coach_model(
@@ -100,9 +111,9 @@ def create_afl_afltables_coach_model(
100
111
  """Create a coach model from AFL tables."""
101
112
  if not pytest_is_running.is_running():
102
113
  return _cached_create_afl_afltables_coach_model(
103
- url=url, session=session, year=year, dt=dt
114
+ url=url, session=session, year=year, dt=dt, version=VERSION
104
115
  )
105
116
  with session.cache_disabled():
106
117
  return _create_afl_afltables_coach_model(
107
- url=url, session=session, year=year, dt=dt
118
+ url=url, session=session, year=year, dt=dt, version=VERSION
108
119
  )
@@ -11,7 +11,7 @@ from bs4 import BeautifulSoup, Tag
11
11
  from dateutil.parser import parse
12
12
 
13
13
  from ....cache import MEMORY
14
- from ...game_model import GameModel
14
+ from ...game_model import VERSION, GameModel
15
15
  from ...league import League
16
16
  from ...season_type import SeasonType
17
17
  from .afl_afltables_team_model import create_afl_afltables_team_model
@@ -144,6 +144,7 @@ def _create_afl_afltables_game_model(
144
144
  league: League,
145
145
  season_year: int | None,
146
146
  season_type: SeasonType | None,
147
+ version: str,
147
148
  ) -> GameModel:
148
149
  # pylint: disable=too-many-locals
149
150
  response = session.get(url)
@@ -472,6 +473,7 @@ def _create_afl_afltables_game_model(
472
473
  distance=None,
473
474
  dividends=[],
474
475
  pot=None,
476
+ version=version,
475
477
  )
476
478
 
477
479
 
@@ -485,16 +487,18 @@ def _cached_create_afl_afltables_game_model(
485
487
  league: League,
486
488
  season_year: int | None,
487
489
  season_type: SeasonType | None,
490
+ version: str,
488
491
  ) -> GameModel:
489
492
  return _create_afl_afltables_game_model(
490
- game_number,
491
- session,
492
- url,
493
- last_round_number,
494
- last_ladder_ranks,
495
- league,
496
- season_year,
497
- season_type,
493
+ game_number=game_number,
494
+ session=session,
495
+ url=url,
496
+ last_round_number=last_round_number,
497
+ last_ladder_ranks=last_ladder_ranks,
498
+ league=league,
499
+ season_year=season_year,
500
+ season_type=season_type,
501
+ version=version,
498
502
  )
499
503
 
500
504
 
@@ -511,23 +515,25 @@ def create_afl_afltables_game_model(
511
515
  """Create a game model from AFL Tables."""
512
516
  if not pytest_is_running.is_running():
513
517
  return _cached_create_afl_afltables_game_model(
514
- game_number,
515
- session,
516
- url,
517
- last_round_number,
518
- last_ladder_ranks,
519
- league,
520
- season_year,
521
- season_type,
518
+ game_number=game_number,
519
+ session=session,
520
+ url=url,
521
+ last_round_number=last_round_number,
522
+ last_ladder_ranks=last_ladder_ranks,
523
+ league=league,
524
+ season_year=season_year,
525
+ season_type=season_type,
526
+ version=VERSION,
522
527
  )
523
528
  with session.cache_disabled():
524
529
  return _create_afl_afltables_game_model(
525
- game_number,
526
- session,
527
- url,
528
- last_round_number,
529
- last_ladder_ranks,
530
- league,
531
- season_year,
532
- season_type,
530
+ game_number=game_number,
531
+ session=session,
532
+ url=url,
533
+ last_round_number=last_round_number,
534
+ last_ladder_ranks=last_ladder_ranks,
535
+ league=league,
536
+ season_year=season_year,
537
+ season_type=season_type,
538
+ version=VERSION,
533
539
  )
@@ -13,7 +13,7 @@ from dateutil.parser import parse
13
13
  from dateutil.relativedelta import relativedelta
14
14
 
15
15
  from ....cache import MEMORY
16
- from ...player_model import PlayerModel
16
+ from ...player_model import VERSION, PlayerModel
17
17
  from ...sex import Sex
18
18
  from ...species import Species
19
19
 
@@ -47,6 +47,7 @@ def _create_afl_afltables_player_model(
47
47
  percentage_played: float | None,
48
48
  session: requests_cache.CachedSession,
49
49
  dt: datetime.datetime,
50
+ version: str,
50
51
  ) -> PlayerModel:
51
52
  o = urlparse(player_url)
52
53
  last_component = o.path.split("/")[-1]
@@ -128,6 +129,7 @@ def _create_afl_afltables_player_model(
128
129
  points=None,
129
130
  game_score=None,
130
131
  point_differential=None,
132
+ version=version,
131
133
  )
132
134
 
133
135
 
@@ -161,6 +163,7 @@ def _cached_create_afl_afltables_player_model(
161
163
  percentage_played: float | None,
162
164
  session: requests_cache.CachedSession,
163
165
  dt: datetime.datetime,
166
+ version: str,
164
167
  ) -> PlayerModel:
165
168
  return _create_afl_afltables_player_model(
166
169
  player_url=player_url,
@@ -191,6 +194,7 @@ def _cached_create_afl_afltables_player_model(
191
194
  percentage_played=percentage_played,
192
195
  session=session,
193
196
  dt=dt,
197
+ version=version,
194
198
  )
195
199
 
196
200
 
@@ -255,6 +259,7 @@ def create_afl_afltables_player_model(
255
259
  percentage_played=percentage_played,
256
260
  session=session,
257
261
  dt=dt,
262
+ version=VERSION,
258
263
  )
259
264
  with session.cache_disabled():
260
265
  return _create_afl_afltables_player_model(
@@ -286,4 +291,5 @@ def create_afl_afltables_player_model(
286
291
  percentage_played=percentage_played,
287
292
  session=session,
288
293
  dt=dt,
294
+ version=VERSION,
289
295
  )
@@ -13,7 +13,7 @@ from bs4 import BeautifulSoup
13
13
  from ....cache import MEMORY
14
14
  from ...google.google_news_model import create_google_news_models
15
15
  from ...league import League
16
- from ...team_model import TeamModel
16
+ from ...team_model import VERSION, TeamModel
17
17
  from ...x.x_social_model import create_x_social_model
18
18
  from .afl_afltables_coach_model import create_afl_afltables_coach_model
19
19
  from .afl_afltables_player_model import create_afl_afltables_player_model
@@ -81,6 +81,7 @@ def _create_afl_afltables_team_model(
81
81
  last_ladder_ranks: dict[str, int] | None,
82
82
  dt: datetime.datetime,
83
83
  league: League,
84
+ version: str,
84
85
  ) -> TeamModel:
85
86
  response = session.get(team_url)
86
87
  soup = BeautifulSoup(response.text, "lxml")
@@ -157,6 +158,7 @@ def _create_afl_afltables_team_model(
157
158
  coaches=[coach_model] if coach_model is not None else [],
158
159
  lbw=None,
159
160
  end_dt=None,
161
+ version=version,
160
162
  )
161
163
 
162
164
 
@@ -198,15 +200,17 @@ def _cached_create_afl_afltables_team_model(
198
200
  last_ladder_ranks: dict[str, int] | None,
199
201
  dt: datetime.datetime,
200
202
  league: League,
203
+ version: str,
201
204
  ) -> TeamModel:
202
205
  return _create_afl_afltables_team_model(
203
- team_url,
204
- players,
205
- points,
206
- session,
207
- last_ladder_ranks,
208
- dt,
209
- league,
206
+ team_url=team_url,
207
+ players=players,
208
+ points=points,
209
+ session=session,
210
+ last_ladder_ranks=last_ladder_ranks,
211
+ dt=dt,
212
+ league=league,
213
+ version=version,
210
214
  )
211
215
 
212
216
 
@@ -251,9 +255,23 @@ def create_afl_afltables_team_model(
251
255
  """Create a team model from AFL Tables."""
252
256
  if not pytest_is_running.is_running():
253
257
  return _cached_create_afl_afltables_team_model(
254
- team_url, players, points, session, last_ladder_ranks, dt, league
258
+ team_url=team_url,
259
+ players=players,
260
+ points=points,
261
+ session=session,
262
+ last_ladder_ranks=last_ladder_ranks,
263
+ dt=dt,
264
+ league=league,
265
+ version=VERSION,
255
266
  )
256
267
  with session.cache_disabled():
257
268
  return _create_afl_afltables_team_model(
258
- team_url, players, points, session, last_ladder_ranks, dt, league
269
+ team_url=team_url,
270
+ players=players,
271
+ points=points,
272
+ session=session,
273
+ last_ladder_ranks=last_ladder_ranks,
274
+ dt=dt,
275
+ league=league,
276
+ version=VERSION,
259
277
  )
@@ -10,11 +10,14 @@ from bs4 import BeautifulSoup
10
10
 
11
11
  from ....cache import MEMORY
12
12
  from ...google.google_address_model import create_google_address_model
13
- from ...venue_model import VenueModel
13
+ from ...venue_model import VERSION, VenueModel
14
14
 
15
15
 
16
16
  def _create_afl_afltables_venue_model(
17
- url: str, session: requests_cache.CachedSession, dt: datetime.datetime
17
+ url: str,
18
+ session: requests_cache.CachedSession,
19
+ dt: datetime.datetime,
20
+ version: str,
18
21
  ) -> VenueModel:
19
22
  o = urlparse(url)
20
23
  last_component = o.path.split("/")[-1]
@@ -35,14 +38,17 @@ def _create_afl_afltables_venue_model(
35
38
  is_indoor=None,
36
39
  is_turf=None,
37
40
  is_dirt=None,
41
+ version=version,
38
42
  )
39
43
 
40
44
 
41
45
  @MEMORY.cache(ignore=["session"])
42
46
  def _cached_create_afl_afltables_venue_model(
43
- url: str, session: requests_cache.CachedSession, dt: datetime.datetime
47
+ url: str, session: requests_cache.CachedSession, dt: datetime.datetime, version: str
44
48
  ) -> VenueModel:
45
- return _create_afl_afltables_venue_model(url, session, dt)
49
+ return _create_afl_afltables_venue_model(
50
+ url=url, session=session, dt=dt, version=version
51
+ )
46
52
 
47
53
 
48
54
  def create_afl_afltables_venue_model(
@@ -50,6 +56,10 @@ def create_afl_afltables_venue_model(
50
56
  ) -> VenueModel:
51
57
  """Create a venue model from AFL tables."""
52
58
  if not pytest_is_running.is_running():
53
- return _cached_create_afl_afltables_venue_model(url, session, dt)
59
+ return _cached_create_afl_afltables_venue_model(
60
+ url=url, session=session, dt=dt, version=VERSION
61
+ )
54
62
  with session.cache_disabled():
55
- return _create_afl_afltables_venue_model(url, session, dt)
63
+ return _create_afl_afltables_venue_model(
64
+ url=url, session=session, dt=dt, version=VERSION
65
+ )