sportsball 0.3.17__tar.gz → 0.3.19__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.
- {sportsball-0.3.17/sportsball.egg-info → sportsball-0.3.19}/PKG-INFO +6 -1
- {sportsball-0.3.17 → sportsball-0.3.19}/README.md +4 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/requirements.txt +1 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/setup.py +1 -1
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/__init__.py +1 -1
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/afl/afltables/afl_afltables_player_model.py +1 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/afl/combined/afl_combined_league_model.py +2 -0
- sportsball-0.3.19/sportsball/data/afl/oddsportal/afl_oddsportal_league_model.py +15 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/aussportsbetting/aussportsbetting_odds_model.py +1 -1
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/combined/combined_player_model.py +5 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/espn/espn_odds_model.py +1 -1
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/espn/espn_player_model.py +2 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/google/google_address_model.py +153 -81
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/nba/nba/nba_nba_player_model.py +1 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/nba/nba/nba_nba_team_model.py +1 -0
- sportsball-0.3.19/sportsball/data/nba/oddsportal/nba_oddsportal_league_model.py +15 -0
- sportsball-0.3.19/sportsball/data/ncaab/oddsportal/ncaab_oddsportal_league_model.py +15 -0
- sportsball-0.3.19/sportsball/data/nfl/oddsportal/nfl_oddsportal_league_model.py +15 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/odds_model.py +9 -0
- sportsball-0.3.19/sportsball/data/oddsportal/oddsportal_bookie_model.py +10 -0
- sportsball-0.3.19/sportsball/data/oddsportal/oddsportal_game_model.py +148 -0
- sportsball-0.3.19/sportsball/data/oddsportal/oddsportal_league_model.py +98 -0
- sportsball-0.3.19/sportsball/data/oddsportal/oddsportal_odds_model.py +16 -0
- sportsball-0.3.19/sportsball/data/oddsportal/oddsportal_team_model.py +189 -0
- sportsball-0.3.19/sportsball/data/oddsportal/oddsportal_venue_model.py +59 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/player_model.py +6 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/sportsreference/sportsreference_game_model.py +8 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/sportsreference/sportsreference_player_model.py +7 -3
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/sportsreference/sportsreference_team_model.py +8 -2
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/team_model.py +21 -0
- {sportsball-0.3.17 → sportsball-0.3.19/sportsball.egg-info}/PKG-INFO +6 -1
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball.egg-info/SOURCES.txt +15 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball.egg-info/requires.txt +1 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/combined/combined_player_model_test.py +1 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/nba/nba/nba_nba_game_model_test.py +4 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/nba/nba/nba_nba_team_model_test.py +2 -0
- sportsball-0.3.19/tests/data/nfl/__init__.py +0 -0
- sportsball-0.3.19/tests/data/nfl/sportsdb/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/player_model_test.py +1 -0
- sportsball-0.3.19/tests/data/sportsdb/__init__.py +0 -0
- sportsball-0.3.19/tests/data/sportsreference/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/sportsreference/sportsreference_player_model_test.py +1 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/sportsreference/sportsreference_team_model_test.py +3 -0
- sportsball-0.3.19/tests/data/x/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/LICENSE +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/MANIFEST.in +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/setup.cfg +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/__main__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/args.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/cache.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/address_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/afl/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/afl/afltables/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/afl/afltables/afl_afltables_game_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/afl/afltables/afl_afltables_league_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/afl/afltables/afl_afltables_team_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/afl/afltables/afl_afltables_venue_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/afl/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/afl/aussportsbetting/afl_aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/afl/combined/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/afl/espn/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/afl/espn/afl_espn_league_model.py +0 -0
- {sportsball-0.3.17/sportsball/data/aussportsbetting → sportsball-0.3.19/sportsball/data/afl/oddsportal}/__init__.py +0 -0
- {sportsball-0.3.17/sportsball/data/combined → sportsball-0.3.19/sportsball/data/aussportsbetting}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/aussportsbetting/aussportsbetting_bookie_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/aussportsbetting/aussportsbetting_game_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/aussportsbetting/aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/aussportsbetting/aussportsbetting_team_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/aussportsbetting/aussportsbetting_venue_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/bookie_model.py +0 -0
- {sportsball-0.3.17/sportsball/data/espn → sportsball-0.3.19/sportsball/data/combined}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/combined/combined_address_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/combined/combined_game_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/combined/combined_league_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/combined/combined_team_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/combined/combined_venue_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/combined/combined_weather_model.py +0 -0
- {sportsball-0.3.17/sportsball/data/google → sportsball-0.3.19/sportsball/data/espn}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/espn/espn_bookie_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/espn/espn_game_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/espn/espn_league_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/espn/espn_team_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/espn/espn_venue_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/field_type.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/game_model.py +0 -0
- {sportsball-0.3.17/sportsball/data/nba/combined → sportsball-0.3.19/sportsball/data/google}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/google/google_news_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/league.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/league_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/nba/__init__.py +0 -0
- {sportsball-0.3.17/sportsball/data/nba/espn → sportsball-0.3.19/sportsball/data/nba/combined}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/nba/combined/nba_combined_league_model.py +0 -0
- {sportsball-0.3.17/sportsball/data/nba/nba → sportsball-0.3.19/sportsball/data/nba/espn}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/nba/espn/nba_espn_league_model.py +0 -0
- {sportsball-0.3.17/sportsball/data/nba/sportsdb → sportsball-0.3.19/sportsball/data/nba/nba}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/nba/nba/nba_nba_game_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/nba/nba/nba_nba_league_model.py +0 -0
- {sportsball-0.3.17/sportsball/data/nba/sportsreference → sportsball-0.3.19/sportsball/data/nba/oddsportal}/__init__.py +0 -0
- {sportsball-0.3.17/sportsball/data/ncaab/combined → sportsball-0.3.19/sportsball/data/nba/sportsdb}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/nba/sportsdb/nba_sportsdb_league_model.py +0 -0
- {sportsball-0.3.17/sportsball/data/ncaab/espn → sportsball-0.3.19/sportsball/data/nba/sportsreference}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/nba/sportsreference/nba_sportsreference_league_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/ncaab/__init__.py +0 -0
- {sportsball-0.3.17/sportsball/data/ncaab/sportsreference → sportsball-0.3.19/sportsball/data/ncaab/combined}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/ncaab/combined/ncaab_combined_league_model.py +0 -0
- {sportsball-0.3.17/sportsball/data/ncaaf → sportsball-0.3.19/sportsball/data/ncaab}/espn/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/ncaab/espn/ncaab_espn_league_model.py +0 -0
- {sportsball-0.3.17/sportsball/data/nfl/aussportsbetting → sportsball-0.3.19/sportsball/data/ncaab/oddsportal}/__init__.py +0 -0
- {sportsball-0.3.17/sportsball/data/nfl/combined → sportsball-0.3.19/sportsball/data/ncaab/sportsreference}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/ncaab/sportsreference/ncaab_sportsreference_league_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/ncaaf/__init__.py +0 -0
- {sportsball-0.3.17/sportsball/data/nfl/sportsdb → sportsball-0.3.19/sportsball/data/ncaaf/espn}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/ncaaf/espn/ncaaf_espn_league_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/news_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/nfl/__init__.py +0 -0
- {sportsball-0.3.17/sportsball/data/sportsdb → sportsball-0.3.19/sportsball/data/nfl/aussportsbetting}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/nfl/aussportsbetting/nfl_aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.17/sportsball/data/sportsreference → sportsball-0.3.19/sportsball/data/nfl/combined}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/nfl/combined/nfl_combined_league_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/nfl/espn/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/nfl/espn/nfl_espn_league_model.py +0 -0
- {sportsball-0.3.17/sportsball/data/weather → sportsball-0.3.19/sportsball/data/nfl/oddsportal}/__init__.py +0 -0
- {sportsball-0.3.17/sportsball/data/weather/gribstream → sportsball-0.3.19/sportsball/data/nfl/sportsdb}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/nfl/sportsdb/nfl_sportsdb_league_model.py +0 -0
- {sportsball-0.3.17/sportsball/data/weather/openmeteo → sportsball-0.3.19/sportsball/data/oddsportal}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/season_type.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/social_model.py +0 -0
- {sportsball-0.3.17/sportsball/data/wikipedia → sportsball-0.3.19/sportsball/data/sportsdb}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/sportsdb/sportsdb_game_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/sportsdb/sportsdb_league_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/sportsdb/sportsdb_team_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/sportsdb/sportsdb_venue_model.py +0 -0
- {sportsball-0.3.17/sportsball/data/x → sportsball-0.3.19/sportsball/data/sportsreference}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/sportsreference/sportsreference_league_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/sportsreference/sportsreference_venue_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/venue_model.py +0 -0
- {sportsball-0.3.17/tests → sportsball-0.3.19/sportsball/data/weather}/__init__.py +0 -0
- {sportsball-0.3.17/tests/data → sportsball-0.3.19/sportsball/data/weather/gribstream}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/weather/gribstream/gribstream_weather_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/weather/multi_weather_model.py +0 -0
- {sportsball-0.3.17/tests/data/afl → sportsball-0.3.19/sportsball/data/weather/openmeteo}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/weather/openmeteo/openmeteo_weather_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/weather_model.py +0 -0
- {sportsball-0.3.17/tests/data/afl/afltables → sportsball-0.3.19/sportsball/data/wikipedia}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/wikipedia/wikipedia_venue_model.py +0 -0
- {sportsball-0.3.17/tests/data/aussportsbetting → sportsball-0.3.19/sportsball/data/x}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/x/x_social_model.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/logger.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/loglevel.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/proxy_session.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/session.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball/sportsball.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball.egg-info/dependency_links.txt +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball.egg-info/entry_points.txt +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball.egg-info/not-zip-safe +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/sportsball.egg-info/top_level.txt +0 -0
- {sportsball-0.3.17/tests/data/combined → sportsball-0.3.19/tests}/__init__.py +0 -0
- {sportsball-0.3.17/tests/data/espn → sportsball-0.3.19/tests/data}/__init__.py +0 -0
- {sportsball-0.3.17/tests/data/google → sportsball-0.3.19/tests/data/afl}/__init__.py +0 -0
- {sportsball-0.3.17/tests/data/nba → sportsball-0.3.19/tests/data/afl/afltables}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/afl/afltables/afl_afltables_player_model_test.py +0 -0
- {sportsball-0.3.17/tests/data/nba/nba → sportsball-0.3.19/tests/data/aussportsbetting}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/aussportsbetting/aussportsbetting_game_model_test.py +0 -0
- {sportsball-0.3.17/tests/data/nba/sportsdb → sportsball-0.3.19/tests/data/combined}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/combined/combined_game_model_test.py +0 -0
- {sportsball-0.3.17/tests/data/nba/sportsreference → sportsball-0.3.19/tests/data/espn}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/espn/espn_game_model_test.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/espn/espn_player_model_test.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/game_model_test.py +0 -0
- {sportsball-0.3.17/tests/data/ncaab → sportsball-0.3.19/tests/data/google}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/google/google_address_model_test.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/google/google_news_model_test.py +0 -0
- {sportsball-0.3.17/tests/data/ncaab/sportsreference → sportsball-0.3.19/tests/data/nba}/__init__.py +0 -0
- {sportsball-0.3.17/tests/data/nfl → sportsball-0.3.19/tests/data/nba/nba}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/nba/nba/nba_nba_league_model_test.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/nba/nba/nba_nba_player_model_test.py +0 -0
- {sportsball-0.3.17/tests/data/nfl → sportsball-0.3.19/tests/data/nba}/sportsdb/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/nba/sportsdb/nba_sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.17/tests/data/sportsdb → sportsball-0.3.19/tests/data/nba/sportsreference}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/nba/sportsreference/nba_sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.17/tests/data/sportsreference → sportsball-0.3.19/tests/data/ncaab}/__init__.py +0 -0
- {sportsball-0.3.17/tests/data/x → sportsball-0.3.19/tests/data/ncaab/sportsreference}/__init__.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/ncaab/sportsreference/ncaab_sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/nfl/sportsdb/nfl_sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/social_model_test.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/sportsdb/sportsdb_game_model_test.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/sportsdb/sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/sportsdb/sportsdb_team_model_test.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/sportsdb/sportsdb_venue_model_test.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/sportsreference/sportsreference_game_model_test.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/sportsreference/sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/sportsreference/sportsreference_venue_model_test.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/team_model_test.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/data/x/x_social_model_test.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/proxy_session_test.py +0 -0
- {sportsball-0.3.17 → sportsball-0.3.19}/tests/sportsball_test.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: sportsball
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.19
|
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
|
@@ -40,6 +40,7 @@ Requires-Dist: func-timeout>=4.3.5
|
|
40
40
|
Requires-Dist: tenacity>=9.0.0
|
41
41
|
Requires-Dist: random_user_agent>=1.0.1
|
42
42
|
Requires-Dist: wayback>=0.4.5
|
43
|
+
Requires-Dist: cryptography>=44.0.0
|
43
44
|
Dynamic: author
|
44
45
|
Dynamic: author-email
|
45
46
|
Dynamic: classifier
|
@@ -95,6 +96,7 @@ Python 3.11.6:
|
|
95
96
|
- [tenacity](https://github.com/jd/tenacity)
|
96
97
|
- [random_user_agent](https://github.com/Luqman-Ud-Din/random_user_agent)
|
97
98
|
- [wayback](https://github.com/edgi-govdata-archiving/wayback)
|
99
|
+
- [cryptography](https://cryptography.io/en/latest/)
|
98
100
|
|
99
101
|
## Raison D'être :thought_balloon:
|
100
102
|
|
@@ -165,6 +167,7 @@ A representation of a team within a game.
|
|
165
167
|
* **field_goals_attempted**: The sum of the field goals attempted by the team in the game.
|
166
168
|
* **offensive_rebounds**: The number of rebounds during offense by the team in the game.
|
167
169
|
* **assists**: The number of times the player on the team made a pass that resulted in a field goal in the game.
|
170
|
+
* **turnovers**: The number of times a player on the team loses possession of the ball in the game.
|
168
171
|
|
169
172
|
#### Player
|
170
173
|
|
@@ -179,6 +182,7 @@ A representation of a player within a team within a game.
|
|
179
182
|
* **field_goals_attempted**: The number of field goal attempts the player made in the game.
|
180
183
|
* **offensive_rebounds**: The number of rebounds during offense by the player made in the game.
|
181
184
|
* **assists**: The number of times the player made a pass that resulted in a field goal in the game.
|
185
|
+
* **turnovers**: The number of times a player loses possession of the ball in the game.
|
182
186
|
|
183
187
|
#### Odds
|
184
188
|
|
@@ -186,6 +190,7 @@ A representation of the odds for a team to win within a game.
|
|
186
190
|
|
187
191
|
* **odds**: The decimal odds offered by a bookie for the team to win in the game.
|
188
192
|
* **bookie**: The bookie offering these odds.
|
193
|
+
* **dt**: When the odds were posted.
|
189
194
|
|
190
195
|
#### Venue
|
191
196
|
|
@@ -42,6 +42,7 @@ Python 3.11.6:
|
|
42
42
|
- [tenacity](https://github.com/jd/tenacity)
|
43
43
|
- [random_user_agent](https://github.com/Luqman-Ud-Din/random_user_agent)
|
44
44
|
- [wayback](https://github.com/edgi-govdata-archiving/wayback)
|
45
|
+
- [cryptography](https://cryptography.io/en/latest/)
|
45
46
|
|
46
47
|
## Raison D'être :thought_balloon:
|
47
48
|
|
@@ -112,6 +113,7 @@ A representation of a team within a game.
|
|
112
113
|
* **field_goals_attempted**: The sum of the field goals attempted by the team in the game.
|
113
114
|
* **offensive_rebounds**: The number of rebounds during offense by the team in the game.
|
114
115
|
* **assists**: The number of times the player on the team made a pass that resulted in a field goal in the game.
|
116
|
+
* **turnovers**: The number of times a player on the team loses possession of the ball in the game.
|
115
117
|
|
116
118
|
#### Player
|
117
119
|
|
@@ -126,6 +128,7 @@ A representation of a player within a team within a game.
|
|
126
128
|
* **field_goals_attempted**: The number of field goal attempts the player made in the game.
|
127
129
|
* **offensive_rebounds**: The number of rebounds during offense by the player made in the game.
|
128
130
|
* **assists**: The number of times the player made a pass that resulted in a field goal in the game.
|
131
|
+
* **turnovers**: The number of times a player loses possession of the ball in the game.
|
129
132
|
|
130
133
|
#### Odds
|
131
134
|
|
@@ -133,6 +136,7 @@ A representation of the odds for a team to win within a game.
|
|
133
136
|
|
134
137
|
* **odds**: The decimal odds offered by a bookie for the team to win in the game.
|
135
138
|
* **bookie**: The bookie offering these odds.
|
139
|
+
* **dt**: When the odds were posted.
|
136
140
|
|
137
141
|
#### Venue
|
138
142
|
|
@@ -23,7 +23,7 @@ def install_requires() -> typing.List[str]:
|
|
23
23
|
|
24
24
|
setup(
|
25
25
|
name='sportsball',
|
26
|
-
version='0.3.
|
26
|
+
version='0.3.19',
|
27
27
|
description='A library for pulling in and normalising sports stats.',
|
28
28
|
long_description=long_description,
|
29
29
|
long_description_content_type='text/markdown',
|
{sportsball-0.3.17 → sportsball-0.3.19}/sportsball/data/afl/combined/afl_combined_league_model.py
RENAMED
@@ -8,6 +8,7 @@ from ..afltables.afl_afltables_league_model import AFLAFLTablesLeagueModel
|
|
8
8
|
from ..aussportsbetting.afl_aussportsbetting_league_model import \
|
9
9
|
AFLAusSportsBettingLeagueModel
|
10
10
|
from ..espn.afl_espn_league_model import AFLESPNLeagueModel
|
11
|
+
from ..oddsportal.afl_oddsportal_league_model import AFLOddsPortalLeagueModel
|
11
12
|
|
12
13
|
FITZROY = "fitzroy_idx"
|
13
14
|
CARLTON = "carlton_idx"
|
@@ -212,6 +213,7 @@ class AFLCombinedLeagueModel(CombinedLeagueModel):
|
|
212
213
|
AFLAFLTablesLeagueModel(session),
|
213
214
|
AFLESPNLeagueModel(session),
|
214
215
|
AFLAusSportsBettingLeagueModel(session),
|
216
|
+
AFLOddsPortalLeagueModel(session),
|
215
217
|
],
|
216
218
|
)
|
217
219
|
|
@@ -0,0 +1,15 @@
|
|
1
|
+
"""AFL OddsPortal league model."""
|
2
|
+
|
3
|
+
# pylint: disable=line-too-long
|
4
|
+
|
5
|
+
import requests_cache
|
6
|
+
|
7
|
+
from ...league import League
|
8
|
+
from ...oddsportal.oddsportal_league_model import OddsPortalLeagueModel
|
9
|
+
|
10
|
+
|
11
|
+
class AFLOddsPortalLeagueModel(OddsPortalLeagueModel):
|
12
|
+
"""AFL OddsPortal implementation of the league model."""
|
13
|
+
|
14
|
+
def __init__(self, session: requests_cache.CachedSession) -> None:
|
15
|
+
super().__init__(League.AFL, session)
|
@@ -9,4 +9,4 @@ from .aussportsbetting_bookie_model import create_aussportsbetting_bookie_model
|
|
9
9
|
def create_aussportsbetting_odds_model(odds: float) -> OddsModel:
|
10
10
|
"""Create an odds model based off aus sports betting."""
|
11
11
|
bookie = create_aussportsbetting_bookie_model()
|
12
|
-
return OddsModel(odds=odds, bookie=bookie) # pyright: ignore
|
12
|
+
return OddsModel(odds=odds, bookie=bookie, dt=None) # pyright: ignore
|
@@ -16,6 +16,7 @@ def create_combined_player_model(
|
|
16
16
|
field_goals_attempted = None
|
17
17
|
offensive_rebounds = None
|
18
18
|
assists = None
|
19
|
+
turnovers = None
|
19
20
|
for player_model in player_models:
|
20
21
|
player_model_jersey = player_model.jersey
|
21
22
|
if player_model_jersey is not None:
|
@@ -41,6 +42,9 @@ def create_combined_player_model(
|
|
41
42
|
player_model_assists = player_model.assists
|
42
43
|
if player_model_assists is not None:
|
43
44
|
assists = player_model_assists
|
45
|
+
player_model_turnovers = player_model.turnovers
|
46
|
+
if player_model_turnovers is not None:
|
47
|
+
turnovers = player_model_turnovers
|
44
48
|
return PlayerModel(
|
45
49
|
identifier=identifier,
|
46
50
|
jersey=jersey,
|
@@ -51,4 +55,5 @@ def create_combined_player_model(
|
|
51
55
|
field_goals_attempted=field_goals_attempted,
|
52
56
|
offensive_rebounds=offensive_rebounds,
|
53
57
|
assists=assists,
|
58
|
+
turnovers=turnovers,
|
54
59
|
)
|
@@ -18,4 +18,4 @@ def create_espn_odds_model(odds: dict[str, Any], bookie: BookieModel) -> OddsMod
|
|
18
18
|
odds_val = (float(moneyline) / 100.0) + 1.0
|
19
19
|
elif moneyline < 0:
|
20
20
|
odds_val = (100.0 / float(abs(moneyline))) + 1.0
|
21
|
-
return OddsModel(odds=odds_val, bookie=bookie)
|
21
|
+
return OddsModel(odds=odds_val, bookie=bookie, dt=None)
|
@@ -1,5 +1,6 @@
|
|
1
1
|
"""ESPN player model."""
|
2
2
|
|
3
|
+
# pylint: disable=duplicate-code
|
3
4
|
import datetime
|
4
5
|
from typing import Any
|
5
6
|
|
@@ -38,6 +39,7 @@ def _create_espn_player_model(
|
|
38
39
|
field_goals_attempted=None,
|
39
40
|
offensive_rebounds=None,
|
40
41
|
assists=None,
|
42
|
+
turnovers=None,
|
41
43
|
)
|
42
44
|
|
43
45
|
|
@@ -1027,6 +1027,87 @@ ESPN_WIDE_WORLD_OF_SPORTS_COMPLEX = SportsballGeocodeTuple(
|
|
1027
1027
|
housenumber="1375",
|
1028
1028
|
country="USA",
|
1029
1029
|
)
|
1030
|
+
QUICKEN_LOANS_ARENA = SportsballGeocodeTuple(
|
1031
|
+
city="Cleveland",
|
1032
|
+
state="OH",
|
1033
|
+
postal="",
|
1034
|
+
lat=41.496389,
|
1035
|
+
lng=-81.688056,
|
1036
|
+
housenumber="1",
|
1037
|
+
country="USA",
|
1038
|
+
)
|
1039
|
+
KASEYA_CENTER = SportsballGeocodeTuple(
|
1040
|
+
city="Miami",
|
1041
|
+
state="FL",
|
1042
|
+
postal="",
|
1043
|
+
lat=25.781389,
|
1044
|
+
lng=-80.188056,
|
1045
|
+
housenumber="601",
|
1046
|
+
country="USA",
|
1047
|
+
)
|
1048
|
+
DUNN_OLIVER_ACADOME = SportsballGeocodeTuple(
|
1049
|
+
city="Montgomery",
|
1050
|
+
state="AL",
|
1051
|
+
postal="",
|
1052
|
+
lat=32.36185,
|
1053
|
+
lng=-86.293158,
|
1054
|
+
housenumber="",
|
1055
|
+
country="USA",
|
1056
|
+
)
|
1057
|
+
OAKLAND_ARENA = SportsballGeocodeTuple(
|
1058
|
+
city="Oakland",
|
1059
|
+
state="CA",
|
1060
|
+
postal="",
|
1061
|
+
lat=37.750278,
|
1062
|
+
lng=-122.203056,
|
1063
|
+
housenumber="7000",
|
1064
|
+
country="USA",
|
1065
|
+
)
|
1066
|
+
SCOTIABANK_ARENA = SportsballGeocodeTuple(
|
1067
|
+
city="Toronto",
|
1068
|
+
state="ON",
|
1069
|
+
postal="",
|
1070
|
+
lat=43.643333,
|
1071
|
+
lng=-79.379167,
|
1072
|
+
housenumber="40",
|
1073
|
+
country="Canada",
|
1074
|
+
)
|
1075
|
+
BRADLEY_CENTER = SportsballGeocodeTuple(
|
1076
|
+
city="Milwaukee",
|
1077
|
+
state="WI",
|
1078
|
+
postal="",
|
1079
|
+
lat=43.043611,
|
1080
|
+
lng=-87.916944,
|
1081
|
+
housenumber="1001",
|
1082
|
+
country="USA",
|
1083
|
+
)
|
1084
|
+
THE_PIT = SportsballGeocodeTuple(
|
1085
|
+
city="Albuquerque",
|
1086
|
+
state="NM",
|
1087
|
+
postal="",
|
1088
|
+
lat=35.067,
|
1089
|
+
lng=-106.632,
|
1090
|
+
housenumber="",
|
1091
|
+
country="USA",
|
1092
|
+
)
|
1093
|
+
JOHN_GLASER_ARENA = SportsballGeocodeTuple(
|
1094
|
+
city="Philadelphia",
|
1095
|
+
state="PA",
|
1096
|
+
postal="19141",
|
1097
|
+
lat=40.039993,
|
1098
|
+
lng=-75.15654,
|
1099
|
+
housenumber="15",
|
1100
|
+
country="USA",
|
1101
|
+
)
|
1102
|
+
TEXAS_AM_COMMERCE_FIELD_HOUSE = SportsballGeocodeTuple(
|
1103
|
+
city="Commerce",
|
1104
|
+
state="TX",
|
1105
|
+
postal="75428",
|
1106
|
+
lat=33.245337,
|
1107
|
+
lng=-95.907619,
|
1108
|
+
housenumber="2600",
|
1109
|
+
country="USA",
|
1110
|
+
)
|
1030
1111
|
_CACHED_GEOCODES: dict[str, Any] = {
|
1031
1112
|
"S.C.G. - Australia": SCG,
|
1032
1113
|
"Victoria Park - Australia": SportsballGeocodeTuple(
|
@@ -3050,15 +3131,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
3050
3131
|
housenumber="2650",
|
3051
3132
|
country="USA",
|
3052
3133
|
),
|
3053
|
-
"The Pit, Albuquerque, New Mexico":
|
3054
|
-
city="Albuquerque",
|
3055
|
-
state="NM",
|
3056
|
-
postal="",
|
3057
|
-
lat=35.067,
|
3058
|
-
lng=-106.632,
|
3059
|
-
housenumber="",
|
3060
|
-
country="USA",
|
3061
|
-
),
|
3134
|
+
"The Pit, Albuquerque, New Mexico": THE_PIT,
|
3062
3135
|
"Gill Coliseum, Corvallis, Oregon": SportsballGeocodeTuple(
|
3063
3136
|
city="Corvallis",
|
3064
3137
|
state="OR",
|
@@ -3654,15 +3727,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
3654
3727
|
housenumber="1801",
|
3655
3728
|
country="USA",
|
3656
3729
|
),
|
3657
|
-
"John Glaser Arena, Philadelphia, Pennsylvania":
|
3658
|
-
city="Philadelphia",
|
3659
|
-
state="PA",
|
3660
|
-
postal="19141",
|
3661
|
-
lat=40.039993,
|
3662
|
-
lng=-75.15654,
|
3663
|
-
housenumber="15",
|
3664
|
-
country="USA",
|
3665
|
-
),
|
3730
|
+
"John Glaser Arena, Philadelphia, Pennsylvania": JOHN_GLASER_ARENA,
|
3666
3731
|
"University Center, Hammond, Louisiana": SportsballGeocodeTuple(
|
3667
3732
|
city="Hammond",
|
3668
3733
|
state="LA",
|
@@ -5853,15 +5918,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
5853
5918
|
housenumber="1000",
|
5854
5919
|
country="USA",
|
5855
5920
|
),
|
5856
|
-
"DunnâOliver Acadome, Montgomery, Alabama":
|
5857
|
-
city="Montgomery",
|
5858
|
-
state="AL",
|
5859
|
-
postal="",
|
5860
|
-
lat=32.36185,
|
5861
|
-
lng=-86.293158,
|
5862
|
-
housenumber="",
|
5863
|
-
country="USA",
|
5864
|
-
),
|
5921
|
+
"DunnâOliver Acadome, Montgomery, Alabama": DUNN_OLIVER_ACADOME,
|
5865
5922
|
"Health & Physical Education Arena, Houston, Texas": SportsballGeocodeTuple(
|
5866
5923
|
city="Houston",
|
5867
5924
|
state="TX",
|
@@ -5889,15 +5946,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
5889
5946
|
housenumber="",
|
5890
5947
|
country="USA",
|
5891
5948
|
),
|
5892
|
-
"Texas A&MâCommerce Field House, Commerce, Texas":
|
5893
|
-
city="Commerce",
|
5894
|
-
state="TX",
|
5895
|
-
postal="75428",
|
5896
|
-
lat=33.245337,
|
5897
|
-
lng=-95.907619,
|
5898
|
-
housenumber="2600",
|
5899
|
-
country="USA",
|
5900
|
-
),
|
5949
|
+
"Texas A&MâCommerce Field House, Commerce, Texas": TEXAS_AM_COMMERCE_FIELD_HOUSE,
|
5901
5950
|
"William J. Nicks Building, Prairie View, Texas": SportsballGeocodeTuple(
|
5902
5951
|
city="Prairie View",
|
5903
5952
|
state="TX",
|
@@ -6521,29 +6570,13 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
6521
6570
|
country="USA",
|
6522
6571
|
),
|
6523
6572
|
"America West Arena": AMERICA_WEST_ARENA,
|
6524
|
-
"Quicken Loans Arena - Cleveland, Ohio - United States":
|
6525
|
-
city="Cleveland",
|
6526
|
-
state="OH",
|
6527
|
-
postal="",
|
6528
|
-
lat=41.496389,
|
6529
|
-
lng=-81.688056,
|
6530
|
-
housenumber="1",
|
6531
|
-
country="USA",
|
6532
|
-
),
|
6573
|
+
"Quicken Loans Arena - Cleveland, Ohio - United States": QUICKEN_LOANS_ARENA,
|
6533
6574
|
"Pepsi Center - Denver, Colorado, U.S. - United States": PEPSI_CENTRE,
|
6534
6575
|
"Staples Center": STAPLES_CENTRE,
|
6535
6576
|
"American Airlines Arena": AMERICAN_AIRLINES_ARENA,
|
6536
6577
|
"Chesapeake Energy Arena - Oklahoma City, Oklahoma - United States": CHESAPEAKE_ENERGY_ARENA,
|
6537
6578
|
"AT&T Center - San Antonio, Texas - United States": ATT_CENTER,
|
6538
|
-
"Oakland Arena - Oakland, California - United States":
|
6539
|
-
city="Oakland",
|
6540
|
-
state="CA",
|
6541
|
-
postal="",
|
6542
|
-
lat=37.750278,
|
6543
|
-
lng=-122.203056,
|
6544
|
-
housenumber="7000",
|
6545
|
-
country="USA",
|
6546
|
-
),
|
6579
|
+
"Oakland Arena - Oakland, California - United States": OAKLAND_ARENA,
|
6547
6580
|
"ESPN Wide World of Sports Complex": ESPN_WIDE_WORLD_OF_SPORTS_COMPLEX,
|
6548
6581
|
"International Amphitheatre": SportsballGeocodeTuple(
|
6549
6582
|
city="Chicago",
|
@@ -6762,15 +6795,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
6762
6795
|
housenumber="1255",
|
6763
6796
|
country="USA",
|
6764
6797
|
),
|
6765
|
-
"Bradley Center":
|
6766
|
-
city="Milwaukee",
|
6767
|
-
state="WI",
|
6768
|
-
postal="",
|
6769
|
-
lat=43.043611,
|
6770
|
-
lng=-87.916944,
|
6771
|
-
housenumber="1001",
|
6772
|
-
country="USA",
|
6773
|
-
),
|
6798
|
+
"Bradley Center": BRADLEY_CENTER,
|
6774
6799
|
"Charlotte Coliseum": SportsballGeocodeTuple(
|
6775
6800
|
city="Charlotte",
|
6776
6801
|
state="NC",
|
@@ -6949,24 +6974,8 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
6949
6974
|
country="USA",
|
6950
6975
|
),
|
6951
6976
|
"Golden 1 Center, Sacramento, California": GOLDEN_1_CENTER,
|
6952
|
-
"Kaseya Center, Miami, Florida":
|
6953
|
-
|
6954
|
-
state="FL",
|
6955
|
-
postal="",
|
6956
|
-
lat=25.781389,
|
6957
|
-
lng=-80.188056,
|
6958
|
-
housenumber="601",
|
6959
|
-
country="USA",
|
6960
|
-
),
|
6961
|
-
"Scotiabank Arena, Toronto, Canada": SportsballGeocodeTuple(
|
6962
|
-
city="Toronto",
|
6963
|
-
state="ON",
|
6964
|
-
postal="",
|
6965
|
-
lat=43.643333,
|
6966
|
-
lng=-79.379167,
|
6967
|
-
housenumber="40",
|
6968
|
-
country="Canada",
|
6969
|
-
),
|
6977
|
+
"Kaseya Center, Miami, Florida": KASEYA_CENTER,
|
6978
|
+
"Scotiabank Arena, Toronto, Canada": SCOTIABANK_ARENA,
|
6970
6979
|
"Smoothie King Center, New Orleans, Louisiana": CAESARS_SUPERDOME,
|
6971
6980
|
"TD Garden, Boston, Massachusetts": TD_GARDEN,
|
6972
6981
|
"Frost Bank Center, San Antonio, Texas": SportsballGeocodeTuple(
|
@@ -6994,6 +7003,69 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
6994
7003
|
"Chesapeake Energy Arena, Oklahoma City, Oklahoma": CHESAPEAKE_ENERGY_ARENA,
|
6995
7004
|
"The Arena, Bay Lake, Florida": ESPN_WIDE_WORLD_OF_SPORTS_COMPLEX,
|
6996
7005
|
"HP Field House, Bay Lake, Florida": ESPN_WIDE_WORLD_OF_SPORTS_COMPLEX,
|
7006
|
+
"Mexico City Arena, Mexico City, Mexico": SportsballGeocodeTuple(
|
7007
|
+
city="Mexico City",
|
7008
|
+
state="",
|
7009
|
+
postal="04650",
|
7010
|
+
lat=19.496309,
|
7011
|
+
lng=-99.175429,
|
7012
|
+
housenumber="",
|
7013
|
+
country="Mexico",
|
7014
|
+
),
|
7015
|
+
"Amway Center, Orlando, Florida": ORLANDO_ARENA,
|
7016
|
+
"Phoenix Suns Arena, Phoenix, Arizona": AMERICA_WEST_ARENA,
|
7017
|
+
"Quicken Loans Arena, Cleveland, Ohio": QUICKEN_LOANS_ARENA,
|
7018
|
+
"STAPLES Center, Los Angeles, California": STAPLES_CENTRE,
|
7019
|
+
"Bankers Life Fieldhouse, Indianapolis, Indiana": GAINBRIDGE_FIELDHOUSE,
|
7020
|
+
"AmericanAirlines Arena, Miami, Florida": KASEYA_CENTER,
|
7021
|
+
"Amalie Arena, Tampa, Florida": SportsballGeocodeTuple(
|
7022
|
+
city="Tampa",
|
7023
|
+
state="FL",
|
7024
|
+
postal="",
|
7025
|
+
lat=27.942778,
|
7026
|
+
lng=-82.451944,
|
7027
|
+
housenumber="401",
|
7028
|
+
country="USA",
|
7029
|
+
),
|
7030
|
+
"Pepsi Center, Denver, Colorado": PEPSI_CENTRE,
|
7031
|
+
"Visa Athletic Center, Bay Lake, Florida": ESPN_WIDE_WORLD_OF_SPORTS_COMPLEX,
|
7032
|
+
"Dunn–Oliver Acadome, Montgomery, Alabama": DUNN_OLIVER_ACADOME,
|
7033
|
+
"Talking Stick Resort Arena, Phoenix, Arizona": AMERICA_WEST_ARENA,
|
7034
|
+
"Oracle Arena, Oakland, California": OAKLAND_ARENA,
|
7035
|
+
"The O2 Arena, London, United Kingdom": SportsballGeocodeTuple(
|
7036
|
+
city="London",
|
7037
|
+
state="",
|
7038
|
+
postal="SE10",
|
7039
|
+
lat=51.5029,
|
7040
|
+
lng=0.0032,
|
7041
|
+
housenumber="",
|
7042
|
+
country="UK",
|
7043
|
+
),
|
7044
|
+
"Air Canada Centre, Toronto, Canada": SCOTIABANK_ARENA,
|
7045
|
+
"BMO Harris Bradley Center, Milwaukee, Wisconsin": BRADLEY_CENTER,
|
7046
|
+
"Philips Arena, Atlanta, Georgia": STATE_FARM_ARENA,
|
7047
|
+
"UW–Milwaukee Panther Arena, Milwaukee, Wisconsin": MILWAUKEE_ARENA,
|
7048
|
+
"Dreamstyle Arena, Albuquerque, New Mexico": THE_PIT,
|
7049
|
+
"Tom Gola Arena, Philadelphia, Pennsylvania": JOHN_GLASER_ARENA,
|
7050
|
+
"Texas A&M–Commerce Field House, Commerce, Texas": TEXAS_AM_COMMERCE_FIELD_HOUSE,
|
7051
|
+
"Detroit, Michigan": SportsballGeocodeTuple(
|
7052
|
+
city="Detroit",
|
7053
|
+
state="MI",
|
7054
|
+
postal="",
|
7055
|
+
lat=42.333333,
|
7056
|
+
lng=-83.05,
|
7057
|
+
housenumber="",
|
7058
|
+
country="USA",
|
7059
|
+
),
|
7060
|
+
"Rec Hall, University Park, Pennsylvania": SportsballGeocodeTuple(
|
7061
|
+
city="University Park",
|
7062
|
+
state="PA",
|
7063
|
+
postal="16802",
|
7064
|
+
lat=40.79578,
|
7065
|
+
lng=-77.869399,
|
7066
|
+
housenumber="",
|
7067
|
+
country="USA",
|
7068
|
+
),
|
6997
7069
|
}
|
6998
7070
|
|
6999
7071
|
|
@@ -0,0 +1,15 @@
|
|
1
|
+
"""NBA OddsPortal league model."""
|
2
|
+
|
3
|
+
# pylint: disable=line-too-long
|
4
|
+
|
5
|
+
import requests_cache
|
6
|
+
|
7
|
+
from ...league import League
|
8
|
+
from ...oddsportal.oddsportal_league_model import OddsPortalLeagueModel
|
9
|
+
|
10
|
+
|
11
|
+
class NBAOddsPortalLeagueModel(OddsPortalLeagueModel):
|
12
|
+
"""NBA OddsPortal implementation of the league model."""
|
13
|
+
|
14
|
+
def __init__(self, session: requests_cache.CachedSession) -> None:
|
15
|
+
super().__init__(League.NBA, session)
|
@@ -0,0 +1,15 @@
|
|
1
|
+
"""NCAAB OddsPortal league model."""
|
2
|
+
|
3
|
+
# pylint: disable=line-too-long
|
4
|
+
|
5
|
+
import requests_cache
|
6
|
+
|
7
|
+
from ...league import League
|
8
|
+
from ...oddsportal.oddsportal_league_model import OddsPortalLeagueModel
|
9
|
+
|
10
|
+
|
11
|
+
class NCAABOddsPortalLeagueModel(OddsPortalLeagueModel):
|
12
|
+
"""NCAAB OddsPortal implementation of the league model."""
|
13
|
+
|
14
|
+
def __init__(self, session: requests_cache.CachedSession) -> None:
|
15
|
+
super().__init__(League.NCAAB, session)
|
@@ -0,0 +1,15 @@
|
|
1
|
+
"""NFL OddsPortal league model."""
|
2
|
+
|
3
|
+
# pylint: disable=line-too-long
|
4
|
+
|
5
|
+
import requests_cache
|
6
|
+
|
7
|
+
from ...league import League
|
8
|
+
from ...oddsportal.oddsportal_league_model import OddsPortalLeagueModel
|
9
|
+
|
10
|
+
|
11
|
+
class NFLOddsPortalLeagueModel(OddsPortalLeagueModel):
|
12
|
+
"""NFL OddsPortal implementation of the league model."""
|
13
|
+
|
14
|
+
def __init__(self, session: requests_cache.CachedSession) -> None:
|
15
|
+
super().__init__(League.NFL, session)
|
@@ -1,13 +1,22 @@
|
|
1
1
|
"""The prototype class for odds."""
|
2
2
|
|
3
|
+
import datetime
|
4
|
+
from typing import Literal
|
5
|
+
|
3
6
|
from pydantic import BaseModel, Field
|
4
7
|
|
5
8
|
from .bookie_model import BookieModel
|
6
9
|
from .field_type import TYPE_KEY, FieldType
|
7
10
|
|
11
|
+
DT_COLUMN: Literal["dt"] = "dt"
|
12
|
+
|
8
13
|
|
9
14
|
class OddsModel(BaseModel):
|
10
15
|
"""The serialisable odds class."""
|
11
16
|
|
12
17
|
odds: float = Field(..., json_schema_extra={TYPE_KEY: FieldType.ODDS})
|
13
18
|
bookie: BookieModel
|
19
|
+
dt: datetime.datetime | None = Field(
|
20
|
+
...,
|
21
|
+
alias=DT_COLUMN,
|
22
|
+
)
|
@@ -0,0 +1,10 @@
|
|
1
|
+
"""OddsPortal bookie model."""
|
2
|
+
|
3
|
+
from ...cache import MEMORY
|
4
|
+
from ..bookie_model import BookieModel
|
5
|
+
|
6
|
+
|
7
|
+
@MEMORY.cache
|
8
|
+
def create_oddsportal_bookie_model(bookie_name: str, bookie_id: str) -> BookieModel:
|
9
|
+
"""Create bookie model from odds portal."""
|
10
|
+
return BookieModel(identifier=bookie_id, name=bookie_name)
|