sportsball 0.3.33__tar.gz → 0.3.35__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.33/sportsball.egg-info → sportsball-0.3.35}/PKG-INFO +1 -1
- {sportsball-0.3.33 → sportsball-0.3.35}/setup.py +1 -1
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/__init__.py +1 -1
- sportsball-0.3.35/sportsball/cache.py +5 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/afl/afltables/afl_afltables_game_model.py +1 -1
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/afl/afltables/afl_afltables_league_model.py +18 -15
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/afl/combined/afl_combined_league_model.py +22 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/aussportsbetting/aussportsbetting_game_model.py +1 -1
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/combined/combined_game_model.py +1 -1
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/combined/combined_league_model.py +11 -22
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/espn/espn_game_model.py +1 -1
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/game_model.py +1 -2
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/google/google_address_model.py +8414 -4811
- sportsball-0.3.35/sportsball/data/nba/combined/nba_combined_league_model.py +911 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/nba/nba/nba_nba_game_model.py +1 -1
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/nba/nba/nba_nba_team_model.py +6 -1
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/oddsportal/decrypt.py +8 -1
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/oddsportal/oddsportal_game_model.py +6 -3
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/oddsportal/oddsportal_team_model.py +2 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/sportsdb/sportsdb_game_model.py +1 -1
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/sportsreference/sportsreference_game_model.py +190 -35
- sportsball-0.3.35/sportsball/data/sportsreference/sportsreference_league_model.py +123 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/sportsreference/sportsreference_player_model.py +24 -2
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/sportsreference/sportsreference_team_model.py +69 -12
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/sportsreference/sportsreference_venue_model.py +3 -3
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/team_model.py +2 -0
- sportsball-0.3.35/sportsball/data/wikipedia/wikipedia_venue_model.py +111 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/proxy_session.py +11 -6
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/session.py +1 -1
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/sportsball.py +0 -11
- {sportsball-0.3.33 → sportsball-0.3.35/sportsball.egg-info}/PKG-INFO +1 -1
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball.egg-info/SOURCES.txt +1 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/afl/afltables/afl_afltables_league_model_test.py +9 -1
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/combined/combined_game_model_test.py +1 -1
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/game_model_test.py +1 -1
- sportsball-0.3.35/tests/data/oddsportal/decrypt_test.py +28 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/oddsportal/oddsportal_game_model_test.py +2 -2
- sportsball-0.3.35/tests/data/sportsreference/sportsreference_game_model_test.py +885 -0
- sportsball-0.3.35/tests/data/sportsreference/sportsreference_league_model_test.py +151 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/sportsreference/sportsreference_team_model_test.py +60 -0
- sportsball-0.3.33/sportsball/cache.py +0 -7
- sportsball-0.3.33/sportsball/data/nba/combined/nba_combined_league_model.py +0 -250
- sportsball-0.3.33/sportsball/data/sportsreference/sportsreference_league_model.py +0 -84
- sportsball-0.3.33/sportsball/data/wikipedia/wikipedia_venue_model.py +0 -39
- sportsball-0.3.33/tests/data/sportsreference/sportsreference_game_model_test.py +0 -97
- sportsball-0.3.33/tests/data/sportsreference/sportsreference_league_model_test.py +0 -16
- {sportsball-0.3.33 → sportsball-0.3.35}/LICENSE +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/MANIFEST.in +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/README.md +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/requirements.txt +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/setup.cfg +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/__main__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/args.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/address_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/afl/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/afl/afltables/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/afl/afltables/afl_afltables_player_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/afl/afltables/afl_afltables_team_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/afl/afltables/afl_afltables_venue_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/afl/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/afl/aussportsbetting/afl_aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/afl/combined/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/afl/espn/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/afl/espn/afl_espn_league_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/afl/oddsportal/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/afl/oddsportal/afl_oddsportal_league_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/aussportsbetting/aussportsbetting_bookie_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/aussportsbetting/aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/aussportsbetting/aussportsbetting_odds_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/aussportsbetting/aussportsbetting_team_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/aussportsbetting/aussportsbetting_venue_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/bookie_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/combined/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/combined/combined_address_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/combined/combined_player_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/combined/combined_team_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/combined/combined_venue_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/combined/combined_weather_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/espn/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/espn/espn_bookie_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/espn/espn_league_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/espn/espn_odds_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/espn/espn_player_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/espn/espn_team_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/espn/espn_venue_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/field_type.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/google/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/google/google_news_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/league.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/league_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/nba/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/nba/combined/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/nba/espn/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/nba/espn/nba_espn_league_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/nba/nba/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/nba/nba/nba_nba_league_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/nba/nba/nba_nba_player_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/nba/oddsportal/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/nba/oddsportal/nba_oddsportal_league_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/nba/sportsdb/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/nba/sportsdb/nba_sportsdb_league_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/nba/sportsreference/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/nba/sportsreference/nba_sportsreference_league_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/ncaab/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/ncaab/combined/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/ncaab/combined/ncaab_combined_league_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/ncaab/espn/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/ncaab/espn/ncaab_espn_league_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/ncaab/oddsportal/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/ncaab/oddsportal/ncaab_oddsportal_league_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/ncaab/sportsreference/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/ncaab/sportsreference/ncaab_sportsreference_league_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/ncaaf/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/ncaaf/combined/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/ncaaf/combined/ncaaf_combined_league_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/ncaaf/espn/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/ncaaf/espn/ncaaf_espn_league_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/ncaaf/oddsportal/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/ncaaf/oddsportal/ncaaf_oddsportal_league_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/news_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/nfl/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/nfl/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/nfl/aussportsbetting/nfl_aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/nfl/combined/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/nfl/combined/nfl_combined_league_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/nfl/espn/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/nfl/espn/nfl_espn_league_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/nfl/oddsportal/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/nfl/oddsportal/nfl_oddsportal_league_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/nfl/sportsdb/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/nfl/sportsdb/nfl_sportsdb_league_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/odds_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/oddsportal/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/oddsportal/oddsportal_bookie_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/oddsportal/oddsportal_league_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/oddsportal/oddsportal_odds_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/oddsportal/oddsportal_venue_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/player_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/season_type.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/social_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/sportsdb/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/sportsdb/sportsdb_league_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/sportsdb/sportsdb_team_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/sportsdb/sportsdb_venue_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/sportsreference/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/venue_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/weather/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/weather/gribstream/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/weather/gribstream/gribstream_weather_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/weather/multi_weather_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/weather/openmeteo/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/weather/openmeteo/openmeteo_weather_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/weather_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/wikipedia/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/x/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/x/x_social_model.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/logger.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/loglevel.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/vendor/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball/vendor/pygooglenews/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball.egg-info/dependency_links.txt +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball.egg-info/entry_points.txt +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball.egg-info/not-zip-safe +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball.egg-info/requires.txt +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/sportsball.egg-info/top_level.txt +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/afl/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/afl/afltables/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/afl/afltables/afl_afltables_player_model_test.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/aussportsbetting/aussportsbetting_game_model_test.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/combined/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/combined/combined_player_model_test.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/espn/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/espn/espn_game_model_test.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/espn/espn_player_model_test.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/google/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/google/google_address_model_test.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/google/google_news_model_test.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/nba/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/nba/nba/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/nba/nba/nba_nba_game_model_test.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/nba/nba/nba_nba_league_model_test.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/nba/nba/nba_nba_player_model_test.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/nba/nba/nba_nba_team_model_test.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/nba/sportsdb/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/nba/sportsdb/nba_sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/nba/sportsreference/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/nba/sportsreference/nba_sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/ncaab/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/ncaab/sportsreference/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/ncaab/sportsreference/ncaab_sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/nfl/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/nfl/sportsdb/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/nfl/sportsdb/nfl_sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/oddsportal/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/oddsportal/oddsportal_league_model_test.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/player_model_test.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/social_model_test.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/sportsdb/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/sportsdb/sportsdb_game_model_test.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/sportsdb/sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/sportsdb/sportsdb_team_model_test.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/sportsdb/sportsdb_venue_model_test.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/sportsreference/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/sportsreference/sportsreference_player_model_test.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/sportsreference/sportsreference_venue_model_test.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/team_model_test.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/x/__init__.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/data/x/x_social_model_test.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/tests/proxy_session_test.py +0 -0
- {sportsball-0.3.33 → sportsball-0.3.35}/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.35',
|
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.33 → sportsball-0.3.35}/sportsball/data/afl/afltables/afl_afltables_league_model.py
RENAMED
@@ -22,6 +22,23 @@ from .afl_afltables_game_model import create_afl_afltables_game_model
|
|
22
22
|
_SEASON_URL = "https://afltables.com/afl/seas/season_idx.html"
|
23
23
|
|
24
24
|
|
25
|
+
def _find_dt(td_text: str, season_url: str) -> datetime.datetime:
|
26
|
+
cleaned_text = (
|
27
|
+
td_text.split("Venue:")[0].split("Att:")[0].strip().split("(")[0].strip()
|
28
|
+
)
|
29
|
+
cleaned_text = " ".join(cleaned_text.split()[-3:])
|
30
|
+
try:
|
31
|
+
return parser.parse(cleaned_text)
|
32
|
+
except parser._parser.ParserError: # type: ignore
|
33
|
+
# Handle text like "Richmond Thu 13-Mar-2025 Venue: M.C.G."
|
34
|
+
cleaned_text = cleaned_text.split()[-1]
|
35
|
+
try:
|
36
|
+
return parser.parse(cleaned_text)
|
37
|
+
except parser._parser.ParserError as exc: # type: ignore
|
38
|
+
logging.error("Failed to parse date in season URL: %s", season_url)
|
39
|
+
raise exc
|
40
|
+
|
41
|
+
|
25
42
|
class AFLAFLTablesLeagueModel(LeagueModel):
|
26
43
|
"""AFL AFLTables implementation of the league model."""
|
27
44
|
|
@@ -60,21 +77,7 @@ class AFLAFLTablesLeagueModel(LeagueModel):
|
|
60
77
|
for td in table.find_all("td"):
|
61
78
|
td_text = td.get_text().strip()
|
62
79
|
if "Venue:" in td_text:
|
63
|
-
|
64
|
-
td_text.split("Venue:")[0]
|
65
|
-
.split("Att:")[0]
|
66
|
-
.strip()
|
67
|
-
.split("(")[0]
|
68
|
-
.strip()
|
69
|
-
)
|
70
|
-
cleaned_text = " ".join(cleaned_text.split()[-3:])
|
71
|
-
try:
|
72
|
-
current_dt = parser.parse(cleaned_text)
|
73
|
-
except parser._parser.ParserError as exc: # type: ignore
|
74
|
-
logging.error(
|
75
|
-
"Failed to parse date in season URL: %s", season_url
|
76
|
-
)
|
77
|
-
raise exc
|
80
|
+
current_dt = _find_dt(td_text, season_url)
|
78
81
|
for a in table.find_all("a", href=True):
|
79
82
|
if a.get_text().strip().lower() == "match stats":
|
80
83
|
url = urllib.parse.urljoin(season_url, a.get("href"))
|
{sportsball-0.3.33 → sportsball-0.3.35}/sportsball/data/afl/combined/afl_combined_league_model.py
RENAMED
@@ -138,6 +138,12 @@ BLACKTOWN = "blacktown"
|
|
138
138
|
RIVERWAY = "riverway"
|
139
139
|
NORWOOD = "norwood"
|
140
140
|
SUMMIT = "summit"
|
141
|
+
ANGEL_STADIUM = "Angel Stadium of Anaheim"
|
142
|
+
THUNDERDOME_STADIUM = "Thunderdome Stadium"
|
143
|
+
SPOTLAND_STADIUM = "Spotland Stadium"
|
144
|
+
GIANTS_STADIUM = "Giants Stadium"
|
145
|
+
TIPOS_ARENA = "Ondrej Nepela Arena"
|
146
|
+
BAROSSA_PARK = "Barossa Park"
|
141
147
|
AFL_VENUE_IDENTITY_MAP = {
|
142
148
|
"brunswick_st": BRUNSWICK_ST,
|
143
149
|
"victoria_park": VICTORIA_PARK,
|
@@ -189,6 +195,7 @@ AFL_VENUE_IDENTITY_MAP = {
|
|
189
195
|
"riverway": RIVERWAY,
|
190
196
|
"norwood": NORWOOD,
|
191
197
|
"summit": SUMMIT,
|
198
|
+
# Aus Sports Betting
|
192
199
|
"MCG": MCG,
|
193
200
|
"SCG": SCG,
|
194
201
|
"ENGIE Stadium": STADIUM_AUSTRALIA,
|
@@ -217,6 +224,21 @@ AFL_VENUE_IDENTITY_MAP = {
|
|
217
224
|
"Blacktown Park": BLACKTOWN,
|
218
225
|
# OddsPortal
|
219
226
|
"Melbourne Cricket Ground": MCG,
|
227
|
+
"Angel Stadium of Anaheim": ANGEL_STADIUM,
|
228
|
+
"The Gabba": GABBA,
|
229
|
+
"Sydney Cricket Ground": SCG,
|
230
|
+
"Subiaco Oval": SUBIACO,
|
231
|
+
"Thunderdome Stadium": THUNDERDOME_STADIUM,
|
232
|
+
"University of Tasmania Stadium": YORK_PARK,
|
233
|
+
"Spotland Stadium": SPOTLAND_STADIUM,
|
234
|
+
"Engie Stadium": STADIUM_AUSTRALIA,
|
235
|
+
"Cazaly's Stadium": CAZALYS_STADIUM,
|
236
|
+
"Jiangwan Stadium": JIANGWAN,
|
237
|
+
"TIO Traeger Park": TRAEGER,
|
238
|
+
"Marrara Oval": MARRARA_OVAL,
|
239
|
+
"Giants Stadium": GIANTS_STADIUM,
|
240
|
+
"Ondrej Nepela Arena": TIPOS_ARENA,
|
241
|
+
"Barossa Park": BAROSSA_PARK,
|
220
242
|
}
|
221
243
|
|
222
244
|
|
@@ -3,13 +3,11 @@
|
|
3
3
|
# pylint: disable=raise-missing-from
|
4
4
|
import logging
|
5
5
|
import multiprocessing
|
6
|
-
import
|
7
|
-
from multiprocessing import Pool
|
6
|
+
from concurrent.futures import ThreadPoolExecutor
|
8
7
|
from typing import Any, Iterator
|
9
8
|
|
10
9
|
import requests_cache
|
11
10
|
|
12
|
-
from ...logger import setup_logger
|
13
11
|
from ..game_model import GameModel
|
14
12
|
from ..league import League
|
15
13
|
from ..league_model import LeagueModel
|
@@ -17,13 +15,7 @@ from .combined_game_model import create_combined_game_model
|
|
17
15
|
|
18
16
|
|
19
17
|
def _produce_league_games(league_model: LeagueModel) -> list[dict[str, Any]]:
|
20
|
-
|
21
|
-
try:
|
22
|
-
return [x.model_dump() for x in league_model.games]
|
23
|
-
except Exception as exc:
|
24
|
-
logging.error("Exception: %s", str(exc))
|
25
|
-
logging.error(traceback.format_exc())
|
26
|
-
raise ValueError(str(exc))
|
18
|
+
return [x.model_dump() for x in league_model.games]
|
27
19
|
|
28
20
|
|
29
21
|
class CombinedLeagueModel(LeagueModel):
|
@@ -58,21 +50,18 @@ class CombinedLeagueModel(LeagueModel):
|
|
58
50
|
team_identity_map = self.team_identity_map()
|
59
51
|
for league_model in self._league_models:
|
60
52
|
league_model.clear_session()
|
61
|
-
with
|
53
|
+
with ThreadPoolExecutor(
|
54
|
+
min(multiprocessing.cpu_count(), len(self._league_models))
|
55
|
+
) as p:
|
62
56
|
# We want to terminate immediately if any of our runners runs into trouble.
|
63
|
-
def _error_callback(exc: BaseException) -> None:
|
64
|
-
p.terminate()
|
65
|
-
raise ValueError(str(exc))
|
66
57
|
|
67
|
-
results =
|
68
|
-
p.
|
69
|
-
_produce_league_games,
|
58
|
+
results = list(
|
59
|
+
p.map(
|
60
|
+
_produce_league_games,
|
61
|
+
self._league_models,
|
70
62
|
)
|
71
|
-
|
72
|
-
|
73
|
-
game_lists = [
|
74
|
-
[GameModel.model_validate(y) for y in x.get()] for x in results
|
75
|
-
]
|
63
|
+
)
|
64
|
+
game_lists = [[GameModel.model_validate(y) for y in x] for x in results]
|
76
65
|
|
77
66
|
for game_list in game_lists:
|
78
67
|
for game_model in game_list:
|
@@ -7,7 +7,6 @@ import pytz
|
|
7
7
|
from pydantic import BaseModel, Field
|
8
8
|
|
9
9
|
from .field_type import TYPE_KEY, FieldType
|
10
|
-
from .league import League
|
11
10
|
from .season_type import SeasonType
|
12
11
|
from .team_model import TeamModel
|
13
12
|
from .venue_model import VenueModel
|
@@ -54,7 +53,7 @@ class GameModel(BaseModel):
|
|
54
53
|
..., json_schema_extra={TYPE_KEY: FieldType.LOOKAHEAD}, alias=END_DT_COLUMN
|
55
54
|
)
|
56
55
|
attendance: int | None = Field(..., alias=GAME_ATTENDANCE_COLUMN)
|
57
|
-
league:
|
56
|
+
league: str = Field(..., alias=LEAGUE_COLUMN)
|
58
57
|
year: int | None
|
59
58
|
season_type: SeasonType | None
|
60
59
|
postponed: bool | None = Field(
|