sportsball 0.3.57__tar.gz → 0.3.59__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.57/sportsball.egg-info → sportsball-0.3.59}/PKG-INFO +1 -1
- {sportsball-0.3.57 → sportsball-0.3.59}/setup.py +1 -1
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/__init__.py +1 -1
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/afl/afl/afl_afl_game_model.py +3 -2
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/afl/afl/afl_afl_league_model.py +30 -2
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/afl/afl/afl_afl_team_model.py +2 -1
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/google/google_address_model.py +20 -9
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/sportsreference/sportsreference_game_model.py +30 -26
- {sportsball-0.3.57 → sportsball-0.3.59/sportsball.egg-info}/PKG-INFO +1 -1
- {sportsball-0.3.57 → sportsball-0.3.59}/LICENSE +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/MANIFEST.in +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/README.md +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/requirements.txt +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/setup.cfg +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/__main__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/args.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/cache.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/address_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/afl/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/afl/afl/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/afl/afl/afl_afl_player_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/afl/afl/afl_afl_venue_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/afl/afltables/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/afl/afltables/afl_afltables_game_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/afl/afltables/afl_afltables_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/afl/afltables/afl_afltables_player_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/afl/afltables/afl_afltables_team_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/afl/afltables/afl_afltables_venue_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/afl/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/afl/aussportsbetting/afl_aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/afl/combined/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/afl/combined/afl_combined_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/afl/espn/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/afl/espn/afl_espn_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/afl/oddsportal/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/afl/oddsportal/afl_oddsportal_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/aussportsbetting/aussportsbetting_bookie_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/aussportsbetting/aussportsbetting_game_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/aussportsbetting/aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/aussportsbetting/aussportsbetting_odds_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/aussportsbetting/aussportsbetting_team_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/aussportsbetting/aussportsbetting_venue_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/bookie_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/combined/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/combined/combined_address_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/combined/combined_game_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/combined/combined_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/combined/combined_player_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/combined/combined_team_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/combined/combined_venue_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/combined/combined_weather_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/espn/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/espn/espn_bookie_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/espn/espn_game_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/espn/espn_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/espn/espn_odds_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/espn/espn_player_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/espn/espn_team_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/espn/espn_venue_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/field_type.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/game_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/google/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/google/google_news_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/league.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/nba/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/nba/combined/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/nba/combined/nba_combined_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/nba/espn/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/nba/espn/nba_espn_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/nba/nba/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/nba/nba/nba_nba_game_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/nba/nba/nba_nba_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/nba/nba/nba_nba_team_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/nba/oddsportal/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/nba/oddsportal/nba_oddsportal_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/nba/sportsdb/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/nba/sportsdb/nba_sportsdb_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/nba/sportsreference/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/nba/sportsreference/nba_sportsreference_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/ncaab/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/ncaab/combined/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/ncaab/combined/ncaab_combined_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/ncaab/espn/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/ncaab/espn/ncaab_espn_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/ncaab/oddsportal/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/ncaab/oddsportal/ncaab_oddsportal_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/ncaab/sportsreference/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/ncaab/sportsreference/ncaab_sportsreference_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/ncaaf/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/ncaaf/combined/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/ncaaf/combined/ncaaf_combined_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/ncaaf/espn/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/ncaaf/espn/ncaaf_espn_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/ncaaf/oddsportal/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/ncaaf/oddsportal/ncaaf_oddsportal_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/news_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/nfl/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/nfl/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/nfl/aussportsbetting/nfl_aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/nfl/combined/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/nfl/combined/nfl_combined_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/nfl/espn/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/nfl/espn/nfl_espn_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/nfl/oddsportal/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/nfl/oddsportal/nfl_oddsportal_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/nfl/sportsdb/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/nfl/sportsdb/nfl_sportsdb_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/odds_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/oddsportal/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/oddsportal/decrypt.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/oddsportal/oddsportal_bookie_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/oddsportal/oddsportal_game_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/oddsportal/oddsportal_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/oddsportal/oddsportal_odds_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/oddsportal/oddsportal_team_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/oddsportal/oddsportal_venue_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/player_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/season_type.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/social_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/sportsdb/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/sportsdb/sportsdb_game_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/sportsdb/sportsdb_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/sportsdb/sportsdb_team_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/sportsdb/sportsdb_venue_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/sportsreference/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/sportsreference/sportsreference_league_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/sportsreference/sportsreference_player_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/sportsreference/sportsreference_team_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/sportsreference/sportsreference_venue_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/team_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/venue_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/weather/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/weather/gribstream/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/weather/gribstream/gribstream_weather_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/weather/multi_weather_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/weather/openmeteo/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/weather/openmeteo/openmeteo_weather_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/weather_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/wikipedia/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/wikipedia/wikipedia_venue_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/x/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/x/x_social_model.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/logger.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/loglevel.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/playwright.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/proxy_session.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/session.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/sportsball.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/vendor/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball/vendor/pygooglenews/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball.egg-info/SOURCES.txt +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball.egg-info/dependency_links.txt +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball.egg-info/entry_points.txt +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball.egg-info/not-zip-safe +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball.egg-info/requires.txt +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/sportsball.egg-info/top_level.txt +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/afl/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/afl/afltables/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/afl/afltables/afl_afltables_game_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/afl/afltables/afl_afltables_league_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/afl/afltables/afl_afltables_player_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/aussportsbetting/aussportsbetting_game_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/combined/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/combined/combined_game_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/combined/combined_player_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/espn/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/espn/espn_game_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/espn/espn_player_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/game_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/google/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/google/google_address_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/google/google_news_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/nba/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/nba/nba/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/nba/nba/nba_nba_game_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/nba/nba/nba_nba_league_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/nba/nba/nba_nba_team_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/nba/sportsdb/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/nba/sportsdb/nba_sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/nba/sportsreference/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/nba/sportsreference/nba_sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/ncaab/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/ncaab/sportsreference/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/ncaab/sportsreference/ncaab_sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/nfl/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/nfl/sportsdb/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/nfl/sportsdb/nfl_sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/oddsportal/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/oddsportal/decrypt_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/oddsportal/oddsportal_game_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/oddsportal/oddsportal_league_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/player_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/social_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/sportsdb/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/sportsdb/sportsdb_game_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/sportsdb/sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/sportsdb/sportsdb_team_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/sportsdb/sportsdb_venue_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/sportsreference/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/sportsreference/sportsreference_game_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/sportsreference/sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/sportsreference/sportsreference_player_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/sportsreference/sportsreference_team_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/sportsreference/sportsreference_venue_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/team_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/x/__init__.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/data/x/x_social_model_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/tests/proxy_session_test.py +0 -0
- {sportsball-0.3.57 → sportsball-0.3.59}/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.59',
|
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',
|
@@ -1,6 +1,6 @@
|
|
1
1
|
"""AFL AFL game model."""
|
2
2
|
|
3
|
-
# pylint: disable=too-many-statements,protected-access
|
3
|
+
# pylint: disable=too-many-statements,protected-access,too-many-arguments
|
4
4
|
import datetime
|
5
5
|
|
6
6
|
import requests_cache
|
@@ -17,11 +17,12 @@ def create_afl_afl_game_model(
|
|
17
17
|
dt: datetime.datetime,
|
18
18
|
venue_name: str,
|
19
19
|
session: requests_cache.CachedSession,
|
20
|
+
ladder: list[str],
|
20
21
|
) -> GameModel:
|
21
22
|
"""Create a game model from AFL Tables."""
|
22
23
|
venue_model = create_afl_afl_venue_model(venue_name, session, dt)
|
23
24
|
teams = [
|
24
|
-
create_afl_afl_team_model(x, players[count], session, dt)
|
25
|
+
create_afl_afl_team_model(x, players[count], session, dt, ladder)
|
25
26
|
for count, x in enumerate(team_names)
|
26
27
|
]
|
27
28
|
return GameModel(
|
@@ -1,7 +1,8 @@
|
|
1
1
|
"""AFL AFL league model."""
|
2
2
|
|
3
|
-
# pylint: disable=too-many-statements,protected-access,too-many-locals
|
3
|
+
# pylint: disable=too-many-statements,protected-access,too-many-locals,bare-except
|
4
4
|
import datetime
|
5
|
+
import logging
|
5
6
|
import re
|
6
7
|
from typing import Iterator
|
7
8
|
|
@@ -24,9 +25,36 @@ class AFLAFLLeagueModel(LeagueModel):
|
|
24
25
|
) -> None:
|
25
26
|
super().__init__(League.AFL, session)
|
26
27
|
|
28
|
+
@property
|
29
|
+
def _ladder(self) -> list[str]:
|
30
|
+
ladder = []
|
31
|
+
ensure_install()
|
32
|
+
with sync_playwright() as p:
|
33
|
+
browser = p.chromium.launch()
|
34
|
+
context = browser.new_context()
|
35
|
+
page = context.new_page()
|
36
|
+
try:
|
37
|
+
page.goto(
|
38
|
+
"https://www.afl.com.au/ladder",
|
39
|
+
wait_until="networkidle",
|
40
|
+
timeout=60000.0,
|
41
|
+
)
|
42
|
+
except: # noqa: E722
|
43
|
+
logging.warning("Ladder URL timed out.")
|
44
|
+
soup = BeautifulSoup(page.content(), "lxml")
|
45
|
+
for span in soup.find_all(
|
46
|
+
"span", {"class": re.compile(".*stats-table__club-name.*")}
|
47
|
+
):
|
48
|
+
team_name = span.get_text().strip()
|
49
|
+
if team_name in ladder:
|
50
|
+
continue
|
51
|
+
ladder.append(team_name)
|
52
|
+
return ladder
|
53
|
+
|
27
54
|
@property
|
28
55
|
def games(self) -> Iterator[GameModel]:
|
29
56
|
# https://www.afl.com.au/matches/team-lineups
|
57
|
+
ladder = self._ladder
|
30
58
|
ensure_install()
|
31
59
|
with sync_playwright() as p:
|
32
60
|
browser = p.chromium.launch()
|
@@ -100,5 +128,5 @@ class AFLAFLLeagueModel(LeagueModel):
|
|
100
128
|
if dt is None:
|
101
129
|
raise ValueError("dt is null")
|
102
130
|
yield create_afl_afl_game_model(
|
103
|
-
team_names, teams_players, dt, venue_name, self.session
|
131
|
+
team_names, teams_players, dt, venue_name, self.session, ladder
|
104
132
|
)
|
@@ -16,6 +16,7 @@ def create_afl_afl_team_model(
|
|
16
16
|
players: list[tuple[str, str, str, str]],
|
17
17
|
session: requests_cache.CachedSession,
|
18
18
|
dt: datetime.datetime,
|
19
|
+
ladder: list[str],
|
19
20
|
) -> TeamModel:
|
20
21
|
"""Create a team model from AFL AFL."""
|
21
22
|
player_models = [
|
@@ -31,7 +32,7 @@ def create_afl_afl_team_model(
|
|
31
32
|
players=player_models,
|
32
33
|
odds=[],
|
33
34
|
points=None,
|
34
|
-
ladder_rank=
|
35
|
+
ladder_rank=ladder.index(team_name) + 1,
|
35
36
|
kicks=None,
|
36
37
|
news=create_google_news_models(team_name, session, dt, League.AFL),
|
37
38
|
social=[],
|
@@ -2278,6 +2278,15 @@ BROOKSHIRE_GROCERY_ARENA = SportsballGeocodeTuple(
|
|
2278
2278
|
housenumber="2000",
|
2279
2279
|
country="USA",
|
2280
2280
|
)
|
2281
|
+
NEW_ORLEANS_CITY = SportsballGeocodeTuple(
|
2282
|
+
city="New Orleans",
|
2283
|
+
state="LA",
|
2284
|
+
postal="",
|
2285
|
+
lat=29.976111,
|
2286
|
+
lng=-90.078333,
|
2287
|
+
housenumber="",
|
2288
|
+
country="USA",
|
2289
|
+
)
|
2281
2290
|
_CACHED_GEOCODES: dict[str, Any] = {
|
2282
2291
|
"S.C.G. - Australia": SCG,
|
2283
2292
|
"Victoria Park - Australia": SportsballGeocodeTuple(
|
@@ -11298,15 +11307,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
11298
11307
|
housenumber="",
|
11299
11308
|
country="USA",
|
11300
11309
|
),
|
11301
|
-
"New Orleans, Louisiana":
|
11302
|
-
city="New Orleans",
|
11303
|
-
state="LA",
|
11304
|
-
postal="",
|
11305
|
-
lat=29.976111,
|
11306
|
-
lng=-90.078333,
|
11307
|
-
housenumber="",
|
11308
|
-
country="USA",
|
11309
|
-
),
|
11310
|
+
"New Orleans, Louisiana": NEW_ORLEANS_CITY,
|
11310
11311
|
"San Jose Civic Auditorium, San Jose, California": SAN_JOSE_CIVIC_AUDITORIUM,
|
11311
11312
|
"Blackham Coliseum, Lafeyette, Louisiana": SportsballGeocodeTuple(
|
11312
11313
|
city="Lafeyette",
|
@@ -12698,6 +12699,16 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
12698
12699
|
housenumber="",
|
12699
12700
|
country="USA",
|
12700
12701
|
),
|
12702
|
+
"Thibodaux, Louisiana": SportsballGeocodeTuple(
|
12703
|
+
city="Thibodaux",
|
12704
|
+
state="LA",
|
12705
|
+
postal="",
|
12706
|
+
lat=29.792222,
|
12707
|
+
lng=-90.82,
|
12708
|
+
housenumber="",
|
12709
|
+
country="USA",
|
12710
|
+
),
|
12711
|
+
"New Orleans , Louisiana": NEW_ORLEANS_CITY,
|
12701
12712
|
}
|
12702
12713
|
|
12703
12714
|
|
@@ -328,37 +328,41 @@ def _create_sportsreference_game_model(
|
|
328
328
|
handle = io.StringIO()
|
329
329
|
handle.write(response.text)
|
330
330
|
handle.seek(0)
|
331
|
-
dfs = pd.read_html(handle)
|
332
331
|
fg = {}
|
333
332
|
fga = {}
|
334
333
|
offensive_rebounds = {}
|
335
334
|
assists = {}
|
336
335
|
turnovers = {}
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
if "
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
336
|
+
try:
|
337
|
+
dfs = pd.read_html(handle)
|
338
|
+
for df in dfs:
|
339
|
+
if df.index.nlevels > 1:
|
340
|
+
df.columns = df.columns.get_level_values(1)
|
341
|
+
if "Starters" in df.columns.values:
|
342
|
+
players = df["Starters"].tolist()
|
343
|
+
if "FG" in df.columns.values:
|
344
|
+
fgs = df["FG"].tolist()
|
345
|
+
for idx, player in enumerate(players):
|
346
|
+
fg[player] = fgs[idx]
|
347
|
+
if "FGA" in df.columns.values:
|
348
|
+
fgas = df["FGA"].tolist()
|
349
|
+
for idx, player in enumerate(players):
|
350
|
+
fga[player] = fgas[idx]
|
351
|
+
if "OREB" in df.columns.values:
|
352
|
+
orebs = df["OREB"].tolist()
|
353
|
+
for idx, player in enumerate(players):
|
354
|
+
offensive_rebounds[player] = orebs[idx]
|
355
|
+
if "AST" in df.columns.values:
|
356
|
+
asts = df["AST"].tolist()
|
357
|
+
for idx, player in enumerate(players):
|
358
|
+
assists[player] = asts[idx]
|
359
|
+
if "TOV" in df.columns.values:
|
360
|
+
tovs = df["TOV"].tolist()
|
361
|
+
for idx, player in enumerate(players):
|
362
|
+
turnovers[player] = tovs[idx]
|
363
|
+
except ValueError as exc:
|
364
|
+
logging.error(response.text)
|
365
|
+
raise exc
|
362
366
|
|
363
367
|
scorebox_meta_div = soup.find("div", class_="scorebox_meta")
|
364
368
|
if not isinstance(scorebox_meta_div, Tag):
|
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.57 → sportsball-0.3.59}/sportsball/data/afl/afltables/afl_afltables_game_model.py
RENAMED
File without changes
|
{sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/afl/afltables/afl_afltables_league_model.py
RENAMED
File without changes
|
{sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/afl/afltables/afl_afltables_player_model.py
RENAMED
File without changes
|
{sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/afl/afltables/afl_afltables_team_model.py
RENAMED
File without changes
|
{sportsball-0.3.57 → sportsball-0.3.59}/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.57 → sportsball-0.3.59}/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.57 → sportsball-0.3.59}/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
|
{sportsball-0.3.57 → sportsball-0.3.59}/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.57 → sportsball-0.3.59}/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.57 → sportsball-0.3.59}/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.57 → sportsball-0.3.59}/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.57 → sportsball-0.3.59}/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.57 → sportsball-0.3.59}/sportsball/data/oddsportal/oddsportal_bookie_model.py
RENAMED
File without changes
|
File without changes
|
{sportsball-0.3.57 → sportsball-0.3.59}/sportsball/data/oddsportal/oddsportal_league_model.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{sportsball-0.3.57 → sportsball-0.3.59}/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
|
{sportsball-0.3.57 → sportsball-0.3.59}/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
|
File without changes
|
File without changes
|
{sportsball-0.3.57 → sportsball-0.3.59}/tests/data/afl/afltables/afl_afltables_game_model_test.py
RENAMED
File without changes
|
{sportsball-0.3.57 → sportsball-0.3.59}/tests/data/afl/afltables/afl_afltables_league_model_test.py
RENAMED
File without changes
|
{sportsball-0.3.57 → sportsball-0.3.59}/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
|
{sportsball-0.3.57 → sportsball-0.3.59}/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.57 → sportsball-0.3.59}/tests/data/nfl/sportsdb/nfl_sportsdb_league_model_test.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{sportsball-0.3.57 → sportsball-0.3.59}/tests/data/oddsportal/oddsportal_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
|