sportsball 0.3.31__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.31/sportsball.egg-info → sportsball-0.3.32}/PKG-INFO +1 -1
- {sportsball-0.3.31 → sportsball-0.3.32}/setup.py +1 -1
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/__init__.py +1 -1
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/oddsportal/oddsportal_league_model.py +20 -10
- {sportsball-0.3.31 → sportsball-0.3.32/sportsball.egg-info}/PKG-INFO +1 -1
- {sportsball-0.3.31 → 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.31 → sportsball-0.3.32}/LICENSE +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/MANIFEST.in +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/README.md +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/requirements.txt +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/setup.cfg +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/__main__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/args.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/cache.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/address_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/afl/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/afl/afltables/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/afl/afltables/afl_afltables_game_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/afl/afltables/afl_afltables_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/afl/afltables/afl_afltables_player_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/afl/afltables/afl_afltables_team_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/afl/afltables/afl_afltables_venue_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/afl/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/afl/aussportsbetting/afl_aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/afl/combined/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/afl/combined/afl_combined_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/afl/espn/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/afl/espn/afl_espn_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/afl/oddsportal/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/afl/oddsportal/afl_oddsportal_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/aussportsbetting/aussportsbetting_bookie_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/aussportsbetting/aussportsbetting_game_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/aussportsbetting/aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/aussportsbetting/aussportsbetting_odds_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/aussportsbetting/aussportsbetting_team_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/aussportsbetting/aussportsbetting_venue_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/bookie_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/combined/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/combined/combined_address_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/combined/combined_game_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/combined/combined_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/combined/combined_player_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/combined/combined_team_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/combined/combined_venue_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/combined/combined_weather_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/espn/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/espn/espn_bookie_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/espn/espn_game_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/espn/espn_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/espn/espn_odds_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/espn/espn_player_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/espn/espn_team_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/espn/espn_venue_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/field_type.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/game_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/google/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/google/google_address_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/google/google_news_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/league.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/nba/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/nba/combined/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/nba/combined/nba_combined_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/nba/espn/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/nba/espn/nba_espn_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/nba/nba/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/nba/nba/nba_nba_game_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/nba/nba/nba_nba_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/nba/nba/nba_nba_player_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/nba/nba/nba_nba_team_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/nba/oddsportal/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/nba/oddsportal/nba_oddsportal_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/nba/sportsdb/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/nba/sportsdb/nba_sportsdb_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/nba/sportsreference/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/nba/sportsreference/nba_sportsreference_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/ncaab/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/ncaab/combined/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/ncaab/combined/ncaab_combined_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/ncaab/espn/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/ncaab/espn/ncaab_espn_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/ncaab/oddsportal/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/ncaab/oddsportal/ncaab_oddsportal_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/ncaab/sportsreference/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/ncaab/sportsreference/ncaab_sportsreference_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/ncaaf/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/ncaaf/combined/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/ncaaf/combined/ncaaf_combined_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/ncaaf/espn/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/ncaaf/espn/ncaaf_espn_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/ncaaf/oddsportal/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/ncaaf/oddsportal/ncaaf_oddsportal_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/news_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/nfl/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/nfl/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/nfl/aussportsbetting/nfl_aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/nfl/combined/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/nfl/combined/nfl_combined_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/nfl/espn/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/nfl/espn/nfl_espn_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/nfl/oddsportal/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/nfl/oddsportal/nfl_oddsportal_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/nfl/sportsdb/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/nfl/sportsdb/nfl_sportsdb_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/odds_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/oddsportal/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/oddsportal/decrypt.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/oddsportal/oddsportal_bookie_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/oddsportal/oddsportal_game_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/oddsportal/oddsportal_odds_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/oddsportal/oddsportal_team_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/oddsportal/oddsportal_venue_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/player_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/season_type.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/social_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/sportsdb/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/sportsdb/sportsdb_game_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/sportsdb/sportsdb_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/sportsdb/sportsdb_team_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/sportsdb/sportsdb_venue_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/sportsreference/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/sportsreference/sportsreference_game_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/sportsreference/sportsreference_league_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/sportsreference/sportsreference_player_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/sportsreference/sportsreference_team_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/sportsreference/sportsreference_venue_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/team_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/venue_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/weather/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/weather/gribstream/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/weather/gribstream/gribstream_weather_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/weather/multi_weather_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/weather/openmeteo/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/weather/openmeteo/openmeteo_weather_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/weather_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/wikipedia/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/wikipedia/wikipedia_venue_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/x/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/x/x_social_model.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/logger.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/loglevel.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/proxy_session.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/session.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/sportsball.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/vendor/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball/vendor/pygooglenews/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball.egg-info/dependency_links.txt +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball.egg-info/entry_points.txt +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball.egg-info/not-zip-safe +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball.egg-info/requires.txt +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/sportsball.egg-info/top_level.txt +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/afl/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/afl/afltables/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/afl/afltables/afl_afltables_league_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/afl/afltables/afl_afltables_player_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/aussportsbetting/aussportsbetting_game_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/combined/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/combined/combined_game_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/combined/combined_player_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/espn/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/espn/espn_game_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/espn/espn_player_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/game_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/google/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/google/google_address_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/google/google_news_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/nba/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/nba/nba/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/nba/nba/nba_nba_game_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/nba/nba/nba_nba_league_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/nba/nba/nba_nba_player_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/nba/nba/nba_nba_team_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/nba/sportsdb/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/nba/sportsdb/nba_sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/nba/sportsreference/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/nba/sportsreference/nba_sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/ncaab/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/ncaab/sportsreference/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/ncaab/sportsreference/ncaab_sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/nfl/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/nfl/sportsdb/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/nfl/sportsdb/nfl_sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/oddsportal/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/oddsportal/oddsportal_game_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/player_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/social_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/sportsdb/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/sportsdb/sportsdb_game_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/sportsdb/sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/sportsdb/sportsdb_team_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/sportsdb/sportsdb_venue_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/sportsreference/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/sportsreference/sportsreference_game_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/sportsreference/sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/sportsreference/sportsreference_player_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/sportsreference/sportsreference_team_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/sportsreference/sportsreference_venue_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/team_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/x/__init__.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/data/x/x_social_model_test.py +0 -0
- {sportsball-0.3.31 → sportsball-0.3.32}/tests/proxy_session_test.py +0 -0
- {sportsball-0.3.31 → 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',
|
{sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/oddsportal/oddsportal_league_model.py
RENAMED
@@ -31,6 +31,17 @@ USA = "usa"
|
|
31
31
|
NCAA = "ncaa"
|
32
32
|
|
33
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
|
+
|
34
45
|
def _process_results_pages(
|
35
46
|
url: str,
|
36
47
|
session: requests_cache.CachedSession,
|
@@ -40,11 +51,7 @@ def _process_results_pages(
|
|
40
51
|
response: requests.Response,
|
41
52
|
) -> Iterator[GameModel]:
|
42
53
|
# Fetch first page
|
43
|
-
|
44
|
-
sanitised_text = sanitised_text[: sanitised_text.find("'")]
|
45
|
-
page_outrights = json.loads(sanitised_text)
|
46
|
-
sports_id = page_outrights["sid"]
|
47
|
-
oddsportal_id = page_outrights["id"]
|
54
|
+
sports_id, oddsportal_id = _find_ids(response.text)
|
48
55
|
|
49
56
|
current_page = 1
|
50
57
|
total_pages = None
|
@@ -54,14 +61,17 @@ def _process_results_pages(
|
|
54
61
|
dat_url = f"https://www.oddsportal.com/ajax-sport-country-tournament-archive_/{sports_id}/{oddsportal_id}/X134529032X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X512X32X0X0X0X0X0X0X131072X0X2048/1/-5/page/{current_page}//"
|
55
62
|
parsed_data = fetch_data(dat_url, session, url, soup)
|
56
63
|
d = parsed_data["d"]
|
57
|
-
|
64
|
+
if d.get("total") == 0:
|
65
|
+
return
|
66
|
+
for row in d.get("rows", []):
|
58
67
|
game_model = create_oddsportal_game_model(
|
59
68
|
session, urllib.parse.urljoin(url, row["url"]), league, False
|
60
69
|
)
|
61
70
|
pbar.update(1)
|
62
71
|
pbar.set_description(f"OddsPortal {game_model.dt}")
|
63
72
|
yield game_model
|
64
|
-
|
73
|
+
pagination = d["pagination"]
|
74
|
+
total_pages = pagination["pages"]
|
65
75
|
current_page += 1
|
66
76
|
|
67
77
|
|
@@ -119,13 +129,13 @@ class OddsPortalLeagueModel(LeagueModel):
|
|
119
129
|
url = queued_urls.pop()
|
120
130
|
if url in seen_urls:
|
121
131
|
continue
|
122
|
-
logging.debug("processing url: %s", url)
|
123
132
|
seen_urls.add(url)
|
124
133
|
|
125
|
-
|
134
|
+
with self.session.cache_disabled():
|
135
|
+
response = self.session.get(url, headers={X_NO_WAYBACK: "1"})
|
126
136
|
response.raise_for_status()
|
127
137
|
|
128
|
-
soup = BeautifulSoup(response.text, "
|
138
|
+
soup = BeautifulSoup(response.text, "html.parser")
|
129
139
|
|
130
140
|
# Find next URLs
|
131
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.31 → sportsball-0.3.32}/sportsball/data/afl/afltables/afl_afltables_game_model.py
RENAMED
File without changes
|
{sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/afl/afltables/afl_afltables_league_model.py
RENAMED
File without changes
|
{sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/afl/afltables/afl_afltables_player_model.py
RENAMED
File without changes
|
{sportsball-0.3.31 → sportsball-0.3.32}/sportsball/data/afl/afltables/afl_afltables_team_model.py
RENAMED
File without changes
|
{sportsball-0.3.31 → 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.31 → 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
|
File without changes
|
{sportsball-0.3.31 → 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.31 → 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.31 → 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.31 → 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.31 → 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.31 → 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.31 → 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.31 → 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.31 → 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.31 → sportsball-0.3.32}/tests/data/afl/afltables/afl_afltables_league_model_test.py
RENAMED
File without changes
|
{sportsball-0.3.31 → 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.31 → 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.31 → 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
|