sportsball 0.3.55__tar.gz → 0.3.56__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.55/sportsball.egg-info → sportsball-0.3.56}/PKG-INFO +1 -1
- {sportsball-0.3.55 → sportsball-0.3.56}/setup.py +1 -1
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/__init__.py +1 -1
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/afl/afl_afl_player_model.py +1 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/afltables/afl_afltables_game_model.py +12 -5
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/afltables/afl_afltables_player_model.py +9 -4
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/afltables/afl_afltables_team_model.py +12 -6
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/combined/combined_player_model.py +6 -1
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/espn/espn_player_model.py +1 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/google/google_address_model.py +10 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/player_model.py +6 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/sportsreference/sportsreference_game_model.py +3 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/sportsreference/sportsreference_player_model.py +1 -0
- {sportsball-0.3.55 → sportsball-0.3.56/sportsball.egg-info}/PKG-INFO +1 -1
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/afl/afltables/afl_afltables_player_model_test.py +1 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/combined/combined_player_model_test.py +1 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/player_model_test.py +1 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/sportsreference/sportsreference_game_model_test.py +14 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/LICENSE +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/MANIFEST.in +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/README.md +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/requirements.txt +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/setup.cfg +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/__main__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/args.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/cache.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/address_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/afl/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/afl/afl_afl_game_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/afl/afl_afl_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/afl/afl_afl_team_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/afl/afl_afl_venue_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/afltables/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/afltables/afl_afltables_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/afltables/afl_afltables_venue_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/aussportsbetting/afl_aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/combined/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/combined/afl_combined_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/espn/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/espn/afl_espn_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/oddsportal/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/oddsportal/afl_oddsportal_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/aussportsbetting/aussportsbetting_bookie_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/aussportsbetting/aussportsbetting_game_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/aussportsbetting/aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/aussportsbetting/aussportsbetting_odds_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/aussportsbetting/aussportsbetting_team_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/aussportsbetting/aussportsbetting_venue_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/bookie_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/combined/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/combined/combined_address_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/combined/combined_game_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/combined/combined_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/combined/combined_team_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/combined/combined_venue_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/combined/combined_weather_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/espn/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/espn/espn_bookie_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/espn/espn_game_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/espn/espn_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/espn/espn_odds_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/espn/espn_team_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/espn/espn_venue_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/field_type.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/game_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/google/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/google/google_news_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/league.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/combined/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/combined/nba_combined_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/espn/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/espn/nba_espn_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/nba/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/nba/nba_nba_game_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/nba/nba_nba_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/nba/nba_nba_team_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/oddsportal/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/oddsportal/nba_oddsportal_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/sportsdb/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/sportsdb/nba_sportsdb_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/sportsreference/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nba/sportsreference/nba_sportsreference_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaab/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaab/combined/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaab/combined/ncaab_combined_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaab/espn/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaab/espn/ncaab_espn_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaab/oddsportal/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaab/oddsportal/ncaab_oddsportal_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaab/sportsreference/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaab/sportsreference/ncaab_sportsreference_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaaf/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaaf/combined/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaaf/combined/ncaaf_combined_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaaf/espn/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaaf/espn/ncaaf_espn_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaaf/oddsportal/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/ncaaf/oddsportal/ncaaf_oddsportal_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/news_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nfl/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nfl/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nfl/aussportsbetting/nfl_aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nfl/combined/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nfl/combined/nfl_combined_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nfl/espn/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nfl/espn/nfl_espn_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nfl/oddsportal/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nfl/oddsportal/nfl_oddsportal_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nfl/sportsdb/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/nfl/sportsdb/nfl_sportsdb_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/odds_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/oddsportal/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/oddsportal/decrypt.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/oddsportal/oddsportal_bookie_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/oddsportal/oddsportal_game_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/oddsportal/oddsportal_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/oddsportal/oddsportal_odds_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/oddsportal/oddsportal_team_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/oddsportal/oddsportal_venue_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/season_type.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/social_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/sportsdb/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/sportsdb/sportsdb_game_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/sportsdb/sportsdb_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/sportsdb/sportsdb_team_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/sportsdb/sportsdb_venue_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/sportsreference/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/sportsreference/sportsreference_league_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/sportsreference/sportsreference_team_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/sportsreference/sportsreference_venue_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/team_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/venue_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/weather/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/weather/gribstream/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/weather/gribstream/gribstream_weather_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/weather/multi_weather_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/weather/openmeteo/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/weather/openmeteo/openmeteo_weather_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/weather_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/wikipedia/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/wikipedia/wikipedia_venue_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/x/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/x/x_social_model.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/logger.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/loglevel.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/playwright.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/proxy_session.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/session.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/sportsball.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/vendor/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball/vendor/pygooglenews/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball.egg-info/SOURCES.txt +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball.egg-info/dependency_links.txt +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball.egg-info/entry_points.txt +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball.egg-info/not-zip-safe +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball.egg-info/requires.txt +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/sportsball.egg-info/top_level.txt +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/afl/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/afl/afltables/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/afl/afltables/afl_afltables_game_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/afl/afltables/afl_afltables_league_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/aussportsbetting/aussportsbetting_game_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/combined/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/combined/combined_game_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/espn/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/espn/espn_game_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/espn/espn_player_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/game_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/google/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/google/google_address_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/google/google_news_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/nba/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/nba/nba/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/nba/nba/nba_nba_game_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/nba/nba/nba_nba_league_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/nba/nba/nba_nba_team_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/nba/sportsdb/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/nba/sportsdb/nba_sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/nba/sportsreference/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/nba/sportsreference/nba_sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/ncaab/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/ncaab/sportsreference/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/ncaab/sportsreference/ncaab_sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/nfl/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/nfl/sportsdb/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/nfl/sportsdb/nfl_sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/oddsportal/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/oddsportal/decrypt_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/oddsportal/oddsportal_game_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/oddsportal/oddsportal_league_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/social_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/sportsdb/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/sportsdb/sportsdb_game_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/sportsdb/sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/sportsdb/sportsdb_team_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/sportsdb/sportsdb_venue_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/sportsreference/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/sportsreference/sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/sportsreference/sportsreference_player_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/sportsreference/sportsreference_team_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/sportsreference/sportsreference_venue_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/team_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/x/__init__.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/data/x/x_social_model_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/tests/proxy_session_test.py +0 -0
- {sportsball-0.3.55 → sportsball-0.3.56}/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.56',
|
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.55 → sportsball-0.3.56}/sportsball/data/afl/afltables/afl_afltables_game_model.py
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
"""AFL AFLTables game model."""
|
2
2
|
|
3
|
-
# pylint: disable=too-many-arguments
|
3
|
+
# pylint: disable=too-many-arguments,too-many-branches
|
4
4
|
import datetime
|
5
5
|
import urllib.parse
|
6
6
|
from urllib.parse import urlparse
|
@@ -152,7 +152,7 @@ def _create_afl_afltables_game_model(
|
|
152
152
|
|
153
153
|
def _find_teams_metadata(
|
154
154
|
soup: BeautifulSoup, team_infos: list[tuple[str, str, int]]
|
155
|
-
) -> list[tuple[str, list[tuple[str, str, int | None, str]], int]]:
|
155
|
+
) -> list[tuple[str, list[tuple[str, str, int | None, str, int | None]], int]]:
|
156
156
|
def _is_correct_table(table: Tag, name: str) -> bool:
|
157
157
|
for th in table.find_all("th"):
|
158
158
|
header_text = th.get_text().strip()
|
@@ -160,8 +160,10 @@ def _create_afl_afltables_game_model(
|
|
160
160
|
return True
|
161
161
|
return False
|
162
162
|
|
163
|
-
def _find_players(
|
164
|
-
|
163
|
+
def _find_players(
|
164
|
+
table: Tag,
|
165
|
+
) -> list[tuple[str, str, int | None, str, int | None]]:
|
166
|
+
players: list[tuple[str, str, int | None, str, int | None]] = []
|
165
167
|
for tr in table.find_all("tr"):
|
166
168
|
player_row = False
|
167
169
|
player_url = None
|
@@ -174,6 +176,7 @@ def _create_afl_afltables_game_model(
|
|
174
176
|
jersey = None
|
175
177
|
name = None
|
176
178
|
kicks = None
|
179
|
+
marks = None
|
177
180
|
for count, td in enumerate(tr.find_all("td")):
|
178
181
|
if count == 0:
|
179
182
|
jersey = td.get_text().strip()
|
@@ -188,13 +191,17 @@ def _create_afl_afltables_game_model(
|
|
188
191
|
kicks_text = td.get_text().strip()
|
189
192
|
if kicks_text:
|
190
193
|
kicks = int(kicks_text)
|
194
|
+
elif count == 3:
|
195
|
+
marks_text = td.get_text().strip()
|
196
|
+
if marks_text:
|
197
|
+
marks = int(marks_text)
|
191
198
|
|
192
199
|
if jersey is None:
|
193
200
|
raise ValueError("jersey is null.")
|
194
201
|
if name is None:
|
195
202
|
raise ValueError("name is null")
|
196
203
|
|
197
|
-
players.append((player_url, jersey, kicks, name))
|
204
|
+
players.append((player_url, jersey, kicks, name, marks))
|
198
205
|
return players
|
199
206
|
|
200
207
|
team_metadata = []
|
{sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/afltables/afl_afltables_player_model.py
RENAMED
@@ -13,7 +13,7 @@ from ...player_model import PlayerModel
|
|
13
13
|
|
14
14
|
|
15
15
|
def _create_afl_afltables_player_model(
|
16
|
-
player_url: str, jersey: str, kicks: int | None, name: str
|
16
|
+
player_url: str, jersey: str, kicks: int | None, name: str, marks: int | None
|
17
17
|
) -> PlayerModel:
|
18
18
|
o = urlparse(player_url)
|
19
19
|
last_component = o.path.split("/")[-1]
|
@@ -31,14 +31,15 @@ def _create_afl_afltables_player_model(
|
|
31
31
|
assists=None,
|
32
32
|
turnovers=None,
|
33
33
|
name=name,
|
34
|
+
marks=marks,
|
34
35
|
)
|
35
36
|
|
36
37
|
|
37
38
|
@MEMORY.cache
|
38
39
|
def _cached_create_afl_afltables_player_model(
|
39
|
-
player_url: str, jersey: str, kicks: int | None, name: str
|
40
|
+
player_url: str, jersey: str, kicks: int | None, name: str, marks: int | None
|
40
41
|
) -> PlayerModel:
|
41
|
-
return _create_afl_afltables_player_model(player_url, jersey, kicks, name)
|
42
|
+
return _create_afl_afltables_player_model(player_url, jersey, kicks, name, marks)
|
42
43
|
|
43
44
|
|
44
45
|
def create_afl_afltables_player_model(
|
@@ -48,6 +49,7 @@ def create_afl_afltables_player_model(
|
|
48
49
|
dt: datetime.datetime,
|
49
50
|
session: requests_cache.CachedSession,
|
50
51
|
name: str,
|
52
|
+
marks: int | None,
|
51
53
|
) -> PlayerModel:
|
52
54
|
"""Create a player model from AFL Tables."""
|
53
55
|
if (
|
@@ -59,6 +61,9 @@ def create_afl_afltables_player_model(
|
|
59
61
|
jersey,
|
60
62
|
kicks,
|
61
63
|
name, # pyright: ignore
|
64
|
+
marks,
|
62
65
|
)
|
63
66
|
with session.cache_disabled():
|
64
|
-
return _create_afl_afltables_player_model(
|
67
|
+
return _create_afl_afltables_player_model(
|
68
|
+
player_url, jersey, kicks, name, marks
|
69
|
+
)
|
{sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/afl/afltables/afl_afltables_team_model.py
RENAMED
@@ -44,7 +44,7 @@ _TEAM_NAME_MAP = {
|
|
44
44
|
|
45
45
|
def _create_afl_afltables_team_model(
|
46
46
|
team_url: str,
|
47
|
-
players: list[tuple[str, str, int | None, str]],
|
47
|
+
players: list[tuple[str, str, int | None, str, int | None]],
|
48
48
|
points: float,
|
49
49
|
session: requests_cache.CachedSession,
|
50
50
|
last_ladder_ranks: dict[str, int] | None,
|
@@ -72,9 +72,9 @@ def _create_afl_afltables_team_model(
|
|
72
72
|
name=name,
|
73
73
|
players=[ # pyright: ignore
|
74
74
|
create_afl_afltables_player_model(
|
75
|
-
player_url, jersey, kicks, dt, session, name
|
75
|
+
player_url, jersey, kicks, dt, session, name, marks
|
76
76
|
)
|
77
|
-
for player_url, jersey, kicks, name in players
|
77
|
+
for player_url, jersey, kicks, name, marks in players
|
78
78
|
],
|
79
79
|
odds=[],
|
80
80
|
points=points,
|
@@ -89,7 +89,7 @@ def _create_afl_afltables_team_model(
|
|
89
89
|
@MEMORY.cache(ignore=["session"])
|
90
90
|
def _cached_create_afl_afltables_team_model(
|
91
91
|
team_url: str,
|
92
|
-
players: list[tuple[str, str, int | None, str]],
|
92
|
+
players: list[tuple[str, str, int | None, str, int | None]],
|
93
93
|
points: float,
|
94
94
|
session: requests_cache.CachedSession,
|
95
95
|
last_ladder_ranks: dict[str, int] | None,
|
@@ -97,13 +97,19 @@ def _cached_create_afl_afltables_team_model(
|
|
97
97
|
league: League,
|
98
98
|
) -> TeamModel:
|
99
99
|
return _create_afl_afltables_team_model(
|
100
|
-
team_url,
|
100
|
+
team_url,
|
101
|
+
players,
|
102
|
+
points,
|
103
|
+
session,
|
104
|
+
last_ladder_ranks,
|
105
|
+
dt,
|
106
|
+
league,
|
101
107
|
)
|
102
108
|
|
103
109
|
|
104
110
|
def create_afl_afltables_team_model(
|
105
111
|
team_url: str,
|
106
|
-
players: list[tuple[str, str, int | None, str]],
|
112
|
+
players: list[tuple[str, str, int | None, str, int | None]],
|
107
113
|
points: float,
|
108
114
|
session: requests_cache.CachedSession,
|
109
115
|
last_ladder_ranks: dict[str, int] | None,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
"""Combined player model."""
|
2
2
|
|
3
|
-
# pylint: disable=too-many-locals
|
3
|
+
# pylint: disable=too-many-locals,too-many-branches
|
4
4
|
from ..player_model import PlayerModel
|
5
5
|
|
6
6
|
|
@@ -18,6 +18,7 @@ def create_combined_player_model(
|
|
18
18
|
assists = None
|
19
19
|
turnovers = None
|
20
20
|
name = None
|
21
|
+
marks = None
|
21
22
|
for player_model in player_models:
|
22
23
|
player_model_jersey = player_model.jersey
|
23
24
|
if player_model_jersey is not None:
|
@@ -49,6 +50,9 @@ def create_combined_player_model(
|
|
49
50
|
player_model_name = player_model.name
|
50
51
|
if player_model_name is not None:
|
51
52
|
name = player_model_name
|
53
|
+
player_model_marks = player_model.marks
|
54
|
+
if player_model_marks is not None:
|
55
|
+
marks = player_model_marks
|
52
56
|
if name is None:
|
53
57
|
raise ValueError("name is null.")
|
54
58
|
return PlayerModel(
|
@@ -63,4 +67,5 @@ def create_combined_player_model(
|
|
63
67
|
assists=assists,
|
64
68
|
turnovers=turnovers,
|
65
69
|
name=name,
|
70
|
+
marks=marks,
|
66
71
|
)
|
@@ -12661,6 +12661,16 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
12661
12661
|
housenumber="",
|
12662
12662
|
country="USA",
|
12663
12663
|
),
|
12664
|
+
"Monroe, Louisiana": SportsballGeocodeTuple(
|
12665
|
+
city="Monroe",
|
12666
|
+
state="LA",
|
12667
|
+
postal="",
|
12668
|
+
lat=32.509444,
|
12669
|
+
lng=-92.118333,
|
12670
|
+
housenumber="",
|
12671
|
+
country="USA",
|
12672
|
+
),
|
12673
|
+
"Bison Sports Arena, Fargo, North Dakota": SCHEELS_ARENA,
|
12664
12674
|
}
|
12665
12675
|
|
12666
12676
|
|
@@ -15,6 +15,7 @@ FIELD_GOALS_ATTEMPTED_COLUMN: Literal["field_goals_attempted"] = "field_goals_at
|
|
15
15
|
OFFENSIVE_REBOUNDS_COLUMN: Literal["offensive_rebounds"] = "offensive_rebounds"
|
16
16
|
ASSISTS_COLUMN: Literal["assists"] = "assists"
|
17
17
|
TURNOVERS_COLUMN: Literal["turnovers"] = "turnovers"
|
18
|
+
PLAYER_MARKS_COLUMN: Literal["marks"] = "marks"
|
18
19
|
|
19
20
|
|
20
21
|
class PlayerModel(BaseModel):
|
@@ -67,3 +68,8 @@ class PlayerModel(BaseModel):
|
|
67
68
|
alias=TURNOVERS_COLUMN,
|
68
69
|
)
|
69
70
|
name: str
|
71
|
+
marks: int | None = Field(
|
72
|
+
...,
|
73
|
+
json_schema_extra={TYPE_KEY: FieldType.LOOKAHEAD},
|
74
|
+
alias=PLAYER_MARKS_COLUMN,
|
75
|
+
)
|
@@ -210,12 +210,15 @@ def _find_old_dt(
|
|
210
210
|
dt = parse(date)
|
211
211
|
for df in dfs:
|
212
212
|
test_row = df.iat[0, 0]
|
213
|
+
if isinstance(test_row, float):
|
214
|
+
continue
|
213
215
|
try:
|
214
216
|
if "Prev Game" in test_row:
|
215
217
|
_process_team_row(df)
|
216
218
|
break
|
217
219
|
except TypeError as exc:
|
218
220
|
logging.error(test_row)
|
221
|
+
logging.error(response.url)
|
219
222
|
logging.error(response.text)
|
220
223
|
raise exc
|
221
224
|
|
@@ -1005,3 +1005,17 @@ class TestSportsReferenceGameModel(unittest.TestCase):
|
|
1005
1005
|
datetime.datetime(2010, 10, 10, 10, 10, 0),
|
1006
1006
|
)
|
1007
1007
|
self.assertEqual(game_model.dt, datetime.datetime(2016, 3, 24, 0, 0))
|
1008
|
+
|
1009
|
+
def test_dt_old_style_20(self):
|
1010
|
+
url = "https://www.sports-reference.com/cbb/boxscores/2016-02-23-savannah-state.html"
|
1011
|
+
with requests_mock.Mocker() as m:
|
1012
|
+
with open(os.path.join(self.dir, "2016-02-23-savannah-state.html"), "rb") as f:
|
1013
|
+
m.get(url, content=f.read())
|
1014
|
+
|
1015
|
+
game_model = create_sportsreference_game_model(
|
1016
|
+
self.session,
|
1017
|
+
url,
|
1018
|
+
League.NBA,
|
1019
|
+
datetime.datetime(2010, 10, 10, 10, 10, 0),
|
1020
|
+
)
|
1021
|
+
self.assertEqual(game_model.dt, datetime.datetime(2016, 2, 23, 0, 0))
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
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.55 → sportsball-0.3.56}/sportsball/data/afl/afltables/afl_afltables_league_model.py
RENAMED
File without changes
|
{sportsball-0.3.55 → sportsball-0.3.56}/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.55 → sportsball-0.3.56}/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
|
{sportsball-0.3.55 → sportsball-0.3.56}/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.55 → sportsball-0.3.56}/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.55 → sportsball-0.3.56}/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.55 → sportsball-0.3.56}/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.55 → sportsball-0.3.56}/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.55 → sportsball-0.3.56}/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.55 → sportsball-0.3.56}/sportsball/data/oddsportal/oddsportal_bookie_model.py
RENAMED
File without changes
|
File without changes
|
{sportsball-0.3.55 → sportsball-0.3.56}/sportsball/data/oddsportal/oddsportal_league_model.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{sportsball-0.3.55 → sportsball-0.3.56}/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
|
{sportsball-0.3.55 → sportsball-0.3.56}/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.55 → sportsball-0.3.56}/tests/data/afl/afltables/afl_afltables_game_model_test.py
RENAMED
File without changes
|
{sportsball-0.3.55 → sportsball-0.3.56}/tests/data/afl/afltables/afl_afltables_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
|
{sportsball-0.3.55 → sportsball-0.3.56}/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.55 → sportsball-0.3.56}/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.55 → sportsball-0.3.56}/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
|