sportsball 0.3.30__tar.gz → 0.3.32__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.30/sportsball.egg-info → sportsball-0.3.32}/PKG-INFO +1 -1
- {sportsball-0.3.30 → sportsball-0.3.32}/setup.py +1 -1
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/__init__.py +1 -1
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/google/google_address_model.py +12 -18
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/oddsportal/oddsportal_league_model.py +21 -14
- {sportsball-0.3.30 → sportsball-0.3.32/sportsball.egg-info}/PKG-INFO +1 -1
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball.egg-info/SOURCES.txt +1 -0
- sportsball-0.3.32/tests/data/oddsportal/oddsportal_league_model_test.py +19 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/LICENSE +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/MANIFEST.in +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/README.md +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/requirements.txt +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/setup.cfg +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/__main__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/args.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/cache.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/address_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/afl/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/afl/afltables/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/afl/afltables/afl_afltables_game_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/afl/afltables/afl_afltables_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/afl/afltables/afl_afltables_player_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/afl/afltables/afl_afltables_team_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/afl/afltables/afl_afltables_venue_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/afl/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/afl/aussportsbetting/afl_aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/afl/combined/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/afl/combined/afl_combined_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/afl/espn/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/afl/espn/afl_espn_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/afl/oddsportal/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/afl/oddsportal/afl_oddsportal_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/aussportsbetting/aussportsbetting_bookie_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/aussportsbetting/aussportsbetting_game_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/aussportsbetting/aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/aussportsbetting/aussportsbetting_odds_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/aussportsbetting/aussportsbetting_team_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/aussportsbetting/aussportsbetting_venue_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/bookie_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/combined/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/combined/combined_address_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/combined/combined_game_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/combined/combined_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/combined/combined_player_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/combined/combined_team_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/combined/combined_venue_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/combined/combined_weather_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/espn/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/espn/espn_bookie_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/espn/espn_game_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/espn/espn_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/espn/espn_odds_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/espn/espn_player_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/espn/espn_team_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/espn/espn_venue_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/field_type.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/game_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/google/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/google/google_news_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/league.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nba/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nba/combined/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nba/combined/nba_combined_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nba/espn/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nba/espn/nba_espn_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nba/nba/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nba/nba/nba_nba_game_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nba/nba/nba_nba_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nba/nba/nba_nba_player_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nba/nba/nba_nba_team_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nba/oddsportal/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nba/oddsportal/nba_oddsportal_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nba/sportsdb/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nba/sportsdb/nba_sportsdb_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nba/sportsreference/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nba/sportsreference/nba_sportsreference_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/ncaab/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/ncaab/combined/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/ncaab/combined/ncaab_combined_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/ncaab/espn/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/ncaab/espn/ncaab_espn_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/ncaab/oddsportal/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/ncaab/oddsportal/ncaab_oddsportal_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/ncaab/sportsreference/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/ncaab/sportsreference/ncaab_sportsreference_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/ncaaf/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/ncaaf/combined/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/ncaaf/combined/ncaaf_combined_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/ncaaf/espn/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/ncaaf/espn/ncaaf_espn_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/ncaaf/oddsportal/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/ncaaf/oddsportal/ncaaf_oddsportal_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/news_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nfl/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nfl/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nfl/aussportsbetting/nfl_aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nfl/combined/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nfl/combined/nfl_combined_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nfl/espn/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nfl/espn/nfl_espn_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nfl/oddsportal/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nfl/oddsportal/nfl_oddsportal_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nfl/sportsdb/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nfl/sportsdb/nfl_sportsdb_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/odds_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/oddsportal/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/oddsportal/decrypt.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/oddsportal/oddsportal_bookie_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/oddsportal/oddsportal_game_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/oddsportal/oddsportal_odds_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/oddsportal/oddsportal_team_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/oddsportal/oddsportal_venue_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/player_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/season_type.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/social_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/sportsdb/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/sportsdb/sportsdb_game_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/sportsdb/sportsdb_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/sportsdb/sportsdb_team_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/sportsdb/sportsdb_venue_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/sportsreference/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/sportsreference/sportsreference_game_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/sportsreference/sportsreference_league_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/sportsreference/sportsreference_player_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/sportsreference/sportsreference_team_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/sportsreference/sportsreference_venue_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/team_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/venue_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/weather/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/weather/gribstream/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/weather/gribstream/gribstream_weather_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/weather/multi_weather_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/weather/openmeteo/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/weather/openmeteo/openmeteo_weather_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/weather_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/wikipedia/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/wikipedia/wikipedia_venue_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/x/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/x/x_social_model.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/logger.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/loglevel.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/proxy_session.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/session.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/sportsball.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/vendor/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball/vendor/pygooglenews/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball.egg-info/dependency_links.txt +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball.egg-info/entry_points.txt +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball.egg-info/not-zip-safe +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball.egg-info/requires.txt +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/sportsball.egg-info/top_level.txt +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/afl/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/afl/afltables/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/afl/afltables/afl_afltables_league_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/afl/afltables/afl_afltables_player_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/aussportsbetting/aussportsbetting_game_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/combined/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/combined/combined_game_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/combined/combined_player_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/espn/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/espn/espn_game_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/espn/espn_player_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/game_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/google/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/google/google_address_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/google/google_news_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/nba/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/nba/nba/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/nba/nba/nba_nba_game_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/nba/nba/nba_nba_league_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/nba/nba/nba_nba_player_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/nba/nba/nba_nba_team_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/nba/sportsdb/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/nba/sportsdb/nba_sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/nba/sportsreference/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/nba/sportsreference/nba_sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/ncaab/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/ncaab/sportsreference/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/ncaab/sportsreference/ncaab_sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/nfl/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/nfl/sportsdb/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/nfl/sportsdb/nfl_sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/oddsportal/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/oddsportal/oddsportal_game_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/player_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/social_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/sportsdb/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/sportsdb/sportsdb_game_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/sportsdb/sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/sportsdb/sportsdb_team_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/sportsdb/sportsdb_venue_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/sportsreference/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/sportsreference/sportsreference_game_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/sportsreference/sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/sportsreference/sportsreference_player_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/sportsreference/sportsreference_team_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/sportsreference/sportsreference_venue_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/team_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/x/__init__.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/data/x/x_social_model_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/proxy_session_test.py +0 -0
- {sportsball-0.3.30 → sportsball-0.3.32}/tests/sportsball_test.py +0 -0
@@ -26,7 +26,7 @@ def install_requires() -> typing.List[str]:
|
|
26
26
|
|
27
27
|
setup(
|
28
28
|
name='sportsball',
|
29
|
-
version='0.3.
|
29
|
+
version='0.3.32',
|
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',
|
@@ -1441,6 +1441,15 @@ TED_CONSTANT_CONVOCATION_CENTER = SportsballGeocodeTuple(
|
|
1441
1441
|
housenumber="4320",
|
1442
1442
|
country="USA",
|
1443
1443
|
)
|
1444
|
+
STONY_BROOK_ARENA = SportsballGeocodeTuple(
|
1445
|
+
city="Stony Brook",
|
1446
|
+
state="NY",
|
1447
|
+
postal="11790",
|
1448
|
+
lat=40.91741,
|
1449
|
+
lng=-73.125955,
|
1450
|
+
housenumber="100",
|
1451
|
+
country="USA",
|
1452
|
+
)
|
1444
1453
|
_CACHED_GEOCODES: dict[str, Any] = {
|
1445
1454
|
"S.C.G. - Australia": SCG,
|
1446
1455
|
"Victoria Park - Australia": SportsballGeocodeTuple(
|
@@ -5554,15 +5563,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
5554
5563
|
housenumber="4000",
|
5555
5564
|
country="USA",
|
5556
5565
|
),
|
5557
|
-
"Island Federal Credit Union, Stony Brook, New York":
|
5558
|
-
city="Stony Brook",
|
5559
|
-
state="NY",
|
5560
|
-
postal="11790",
|
5561
|
-
lat=40.91741,
|
5562
|
-
lng=-73.125955,
|
5563
|
-
housenumber="100",
|
5564
|
-
country="USA",
|
5565
|
-
),
|
5566
|
+
"Island Federal Credit Union, Stony Brook, New York": STONY_BROOK_ARENA,
|
5566
5567
|
"Cajundome, Lafayette, Louisiana": SportsballGeocodeTuple(
|
5567
5568
|
city="Lafayette",
|
5568
5569
|
state="LA",
|
@@ -7588,15 +7589,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
7588
7589
|
housenumber="11200",
|
7589
7590
|
country="USA",
|
7590
7591
|
),
|
7591
|
-
"Island Federal Credit Union Arena, Stony Brook, New York":
|
7592
|
-
city="Stony Brook",
|
7593
|
-
state="NY",
|
7594
|
-
postal="11790",
|
7595
|
-
lat=40.91741,
|
7596
|
-
lng=-73.125955,
|
7597
|
-
housenumber="100",
|
7598
|
-
country="USA",
|
7599
|
-
),
|
7592
|
+
"Island Federal Credit Union Arena, Stony Brook, New York": STONY_BROOK_ARENA,
|
7600
7593
|
"Phoenix, Arizona": SportsballGeocodeTuple(
|
7601
7594
|
city="Phoenix",
|
7602
7595
|
state="AZ",
|
@@ -7834,6 +7827,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
7834
7827
|
housenumber="",
|
7835
7828
|
country="USA",
|
7836
7829
|
),
|
7830
|
+
"Island Federal Credit Union Arena, New York, NY, USA": STONY_BROOK_ARENA,
|
7837
7831
|
}
|
7838
7832
|
|
7839
7833
|
|
{sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/oddsportal/oddsportal_league_model.py
RENAMED
@@ -13,6 +13,7 @@ import requests_cache
|
|
13
13
|
import tqdm
|
14
14
|
from bs4 import BeautifulSoup
|
15
15
|
|
16
|
+
from ...proxy_session import X_NO_WAYBACK
|
16
17
|
from ..game_model import GameModel
|
17
18
|
from ..league import League
|
18
19
|
from ..league_model import LeagueModel
|
@@ -30,6 +31,17 @@ USA = "usa"
|
|
30
31
|
NCAA = "ncaa"
|
31
32
|
|
32
33
|
|
34
|
+
def _find_ids(text: str) -> tuple[str, str]:
|
35
|
+
sentinel = "var pageOutrightsVar = '"
|
36
|
+
sanitised_text = text[text.find(sentinel) + len(sentinel) :]
|
37
|
+
sanitised_text = sanitised_text[: sanitised_text.find("'")]
|
38
|
+
try:
|
39
|
+
page_outrights = json.loads(sanitised_text)
|
40
|
+
except json.decoder.JSONDecodeError as exc:
|
41
|
+
raise exc
|
42
|
+
return str(page_outrights["sid"]), page_outrights["id"]
|
43
|
+
|
44
|
+
|
33
45
|
def _process_results_pages(
|
34
46
|
url: str,
|
35
47
|
session: requests_cache.CachedSession,
|
@@ -39,11 +51,7 @@ def _process_results_pages(
|
|
39
51
|
response: requests.Response,
|
40
52
|
) -> Iterator[GameModel]:
|
41
53
|
# Fetch first page
|
42
|
-
|
43
|
-
sanitised_text = sanitised_text[: sanitised_text.find("'")]
|
44
|
-
page_outrights = json.loads(sanitised_text)
|
45
|
-
sports_id = page_outrights["sid"]
|
46
|
-
oddsportal_id = page_outrights["id"]
|
54
|
+
sports_id, oddsportal_id = _find_ids(response.text)
|
47
55
|
|
48
56
|
current_page = 1
|
49
57
|
total_pages = None
|
@@ -53,14 +61,17 @@ def _process_results_pages(
|
|
53
61
|
dat_url = f"https://www.oddsportal.com/ajax-sport-country-tournament-archive_/{sports_id}/{oddsportal_id}/X134529032X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X512X32X0X0X0X0X0X0X131072X0X2048/1/-5/page/{current_page}//"
|
54
62
|
parsed_data = fetch_data(dat_url, session, url, soup)
|
55
63
|
d = parsed_data["d"]
|
56
|
-
|
64
|
+
if d.get("total") == 0:
|
65
|
+
return
|
66
|
+
for row in d.get("rows", []):
|
57
67
|
game_model = create_oddsportal_game_model(
|
58
68
|
session, urllib.parse.urljoin(url, row["url"]), league, False
|
59
69
|
)
|
60
70
|
pbar.update(1)
|
61
71
|
pbar.set_description(f"OddsPortal {game_model.dt}")
|
62
72
|
yield game_model
|
63
|
-
|
73
|
+
pagination = d["pagination"]
|
74
|
+
total_pages = pagination["pages"]
|
64
75
|
current_page += 1
|
65
76
|
|
66
77
|
|
@@ -118,17 +129,13 @@ class OddsPortalLeagueModel(LeagueModel):
|
|
118
129
|
url = queued_urls.pop()
|
119
130
|
if url in seen_urls:
|
120
131
|
continue
|
121
|
-
logging.debug("processing url: %s", url)
|
122
132
|
seen_urls.add(url)
|
123
133
|
|
124
|
-
|
125
|
-
|
126
|
-
response = self.session.get(url)
|
127
|
-
else:
|
128
|
-
response = self.session.get(url)
|
134
|
+
with self.session.cache_disabled():
|
135
|
+
response = self.session.get(url, headers={X_NO_WAYBACK: "1"})
|
129
136
|
response.raise_for_status()
|
130
137
|
|
131
|
-
soup = BeautifulSoup(response.text, "
|
138
|
+
soup = BeautifulSoup(response.text, "html.parser")
|
132
139
|
|
133
140
|
# Find next URLs
|
134
141
|
for option in soup.find_all("option"):
|
@@ -191,6 +191,7 @@ tests/data/nfl/sportsdb/__init__.py
|
|
191
191
|
tests/data/nfl/sportsdb/nfl_sportsdb_league_model_test.py
|
192
192
|
tests/data/oddsportal/__init__.py
|
193
193
|
tests/data/oddsportal/oddsportal_game_model_test.py
|
194
|
+
tests/data/oddsportal/oddsportal_league_model_test.py
|
194
195
|
tests/data/sportsdb/__init__.py
|
195
196
|
tests/data/sportsdb/sportsdb_game_model_test.py
|
196
197
|
tests/data/sportsdb/sportsdb_league_model_test.py
|
@@ -0,0 +1,19 @@
|
|
1
|
+
"""Tests for the oddsportal league model class."""
|
2
|
+
import os
|
3
|
+
import unittest
|
4
|
+
|
5
|
+
import requests_cache
|
6
|
+
from sportsball.data.oddsportal.oddsportal_league_model import _find_ids
|
7
|
+
|
8
|
+
|
9
|
+
class TestOddsPortalLeagueModel(unittest.TestCase):
|
10
|
+
|
11
|
+
def setUp(self):
|
12
|
+
self.session = requests_cache.CachedSession(backend="memory")
|
13
|
+
self.dir = os.path.dirname(__file__)
|
14
|
+
|
15
|
+
def test_current_html_ids(self):
|
16
|
+
with open(os.path.join(self.dir, "results.html"), "r") as handle:
|
17
|
+
sports_id, oddsportal_id = _find_ids(handle.read())
|
18
|
+
self.assertEqual(sports_id, "18")
|
19
|
+
self.assertEqual(oddsportal_id, "6y3HOkJ7")
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/afl/afltables/afl_afltables_game_model.py
RENAMED
File without changes
|
{sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/afl/afltables/afl_afltables_league_model.py
RENAMED
File without changes
|
{sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/afl/afltables/afl_afltables_player_model.py
RENAMED
File without changes
|
{sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/afl/afltables/afl_afltables_team_model.py
RENAMED
File without changes
|
{sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/afl/afltables/afl_afltables_venue_model.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/afl/combined/afl_combined_league_model.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nba/combined/nba_combined_league_model.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nba/sportsdb/nba_sportsdb_league_model.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/ncaab/espn/ncaab_espn_league_model.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/ncaaf/espn/ncaaf_espn_league_model.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nfl/combined/nfl_combined_league_model.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/nfl/sportsdb/nfl_sportsdb_league_model.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/oddsportal/oddsportal_bookie_model.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/oddsportal/oddsportal_venue_model.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{sportsball-0.3.30 → sportsball-0.3.32}/sportsball/data/weather/openmeteo/openmeteo_weather_model.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{sportsball-0.3.30 → sportsball-0.3.32}/tests/data/afl/afltables/afl_afltables_league_model_test.py
RENAMED
File without changes
|
{sportsball-0.3.30 → sportsball-0.3.32}/tests/data/afl/afltables/afl_afltables_player_model_test.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{sportsball-0.3.30 → sportsball-0.3.32}/tests/data/nba/sportsdb/nba_sportsdb_league_model_test.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{sportsball-0.3.30 → sportsball-0.3.32}/tests/data/nfl/sportsdb/nfl_sportsdb_league_model_test.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|