sportsball 0.4.21__tar.gz → 0.5.1__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.4.21/sportsball.egg-info → sportsball-0.5.1}/PKG-INFO +29 -1
- {sportsball-0.4.21 → sportsball-0.5.1}/README.md +28 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/setup.py +1 -1
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/__init__.py +1 -1
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/afl/afl/afl_afl_player_model.py +12 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/afl/afltables/afl_afltables_player_model.py +12 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/aussportsbetting/aussportsbetting_league_model.py +1 -1
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/combined/combined_player_model.py +64 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/espn/espn_game_model.py +3 -1
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/espn/espn_player_model.py +12 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/espn/espn_team_model.py +3 -1
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/google/google_address_model.py +39 -9
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/hkjc/hkjc/hkjc_hkjc_player_model.py +12 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nba/nbacom/nba_nbacom_player_model.py +12 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/player_model.py +150 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/sportsreference/sportsreference_game_model.py +190 -52
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/sportsreference/sportsreference_player_model.py +87 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/sportsreference/sportsreference_team_model.py +123 -39
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/team_model.py +240 -0
- {sportsball-0.4.21 → sportsball-0.5.1/sportsball.egg-info}/PKG-INFO +29 -1
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/combined/combined_player_model_test.py +12 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/combined/combined_team_model_test.py +48 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/player_model_test.py +12 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/sportsreference/sportsreference_player_model_test.py +12 -0
- sportsball-0.5.1/tests/data/sportsreference/sportsreference_team_model_test.py +353 -0
- sportsball-0.4.21/tests/data/sportsreference/sportsreference_team_model_test.py +0 -245
- {sportsball-0.4.21 → sportsball-0.5.1}/LICENSE +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/MANIFEST.in +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/requirements.txt +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/setup.cfg +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/__main__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/args.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/cache.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/address_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/afl/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/afl/afl/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/afl/afl/afl_afl_bookie_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/afl/afl/afl_afl_game_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/afl/afl/afl_afl_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/afl/afl/afl_afl_odds_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/afl/afl/afl_afl_team_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/afl/afl/afl_afl_venue_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/afl/afltables/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/afl/afltables/afl_afltables_coach_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/afl/afltables/afl_afltables_game_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/afl/afltables/afl_afltables_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/afl/afltables/afl_afltables_team_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/afl/afltables/afl_afltables_venue_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/afl/aussportsbetting/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/afl/aussportsbetting/afl_aussportsbetting_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/afl/combined/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/afl/combined/afl_combined_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/afl/espn/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/afl/espn/afl_espn_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/afl/oddsportal/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/afl/oddsportal/afl_oddsportal_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/afl/position.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/aussportsbetting/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/aussportsbetting/aussportsbetting_bookie_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/aussportsbetting/aussportsbetting_game_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/aussportsbetting/aussportsbetting_odds_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/aussportsbetting/aussportsbetting_team_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/aussportsbetting/aussportsbetting_venue_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/bet.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/bookie_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/coach_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/combined/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/combined/combined_address_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/combined/combined_coach_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/combined/combined_game_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/combined/combined_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/combined/combined_team_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/combined/combined_venue_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/combined/combined_weather_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/combined/null_check.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/dividend_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/espn/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/espn/espn_bookie_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/espn/espn_coach_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/espn/espn_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/espn/espn_odds_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/espn/espn_venue_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/field_type.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/game_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/google/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/google/google_news_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/hkjc/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/hkjc/hkjc/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/hkjc/hkjc/hkjc_hkjc_bookie_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/hkjc/hkjc/hkjc_hkjc_coach_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/hkjc/hkjc/hkjc_hkjc_dividend_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/hkjc/hkjc/hkjc_hkjc_game_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/hkjc/hkjc/hkjc_hkjc_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/hkjc/hkjc/hkjc_hkjc_odds_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/hkjc/hkjc/hkjc_hkjc_owner_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/hkjc/hkjc/hkjc_hkjc_team_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/hkjc/hkjc/hkjc_hkjc_venue_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/hkjc/position.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/league.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nba/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nba/combined/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nba/combined/nba_combined_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nba/espn/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nba/espn/nba_espn_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nba/nba/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nba/nba/nba_nba_game_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nba/nba/nba_nba_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nba/nba/nba_nba_team_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nba/nbacom/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nba/nbacom/nba_nbacom_game_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nba/nbacom/nba_nbacom_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nba/nbacom/nba_nbacom_team_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nba/nbacom/nba_nbacom_venue_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nba/oddsportal/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nba/oddsportal/nba_oddsportal_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nba/position.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nba/sportsdb/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nba/sportsdb/nba_sportsdb_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nba/sportsreference/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nba/sportsreference/nba_sportsreference_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/ncaab/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/ncaab/combined/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/ncaab/combined/ncaab_combined_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/ncaab/espn/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/ncaab/espn/ncaab_espn_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/ncaab/oddsportal/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/ncaab/oddsportal/ncaab_oddsportal_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/ncaab/sportsreference/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/ncaab/sportsreference/ncaab_sportsreference_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/ncaaf/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/ncaaf/combined/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/ncaaf/combined/ncaaf_combined_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/ncaaf/espn/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/ncaaf/espn/ncaaf_espn_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/ncaaf/oddsportal/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/ncaaf/oddsportal/ncaaf_oddsportal_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/news_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nfl/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nfl/aussportsbetting/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nfl/aussportsbetting/nfl_aussportsbetting_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nfl/combined/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nfl/combined/nfl_combined_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nfl/espn/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nfl/espn/nfl_espn_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nfl/oddsportal/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nfl/oddsportal/nfl_oddsportal_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nfl/position.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nfl/sportsdb/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nfl/sportsdb/nfl_sportsdb_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/odds_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/oddsportal/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/oddsportal/decrypt.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/oddsportal/oddsportal_bookie_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/oddsportal/oddsportal_game_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/oddsportal/oddsportal_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/oddsportal/oddsportal_odds_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/oddsportal/oddsportal_team_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/oddsportal/oddsportal_venue_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/owner_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/season_type.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/sex.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/social_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/species.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/sportsdb/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/sportsdb/sportsdb_game_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/sportsdb/sportsdb_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/sportsdb/sportsdb_team_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/sportsdb/sportsdb_venue_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/sportsreference/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/sportsreference/sportsreference_coach_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/sportsreference/sportsreference_league_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/sportsreference/sportsreference_venue_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/venue_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/weather/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/weather/gribstream/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/weather/gribstream/gribstream_weather_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/weather/multi_weather_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/weather/openmeteo/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/weather/openmeteo/openmeteo_weather_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/weather_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/wikipedia/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/wikipedia/wikipedia_venue_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/x/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/x/x_social_model.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/logger.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/loglevel.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/playwright.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/proxy_session.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/session.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/sportsball.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/vendor/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball/vendor/pygooglenews/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball.egg-info/SOURCES.txt +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball.egg-info/dependency_links.txt +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball.egg-info/entry_points.txt +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball.egg-info/not-zip-safe +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball.egg-info/requires.txt +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/sportsball.egg-info/top_level.txt +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/afl/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/afl/afl/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/afl/afl/afl_afl_game_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/afl/afl/afl_afl_league_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/afl/afltables/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/afl/afltables/afl_afltables_coach_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/afl/afltables/afl_afltables_game_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/afl/afltables/afl_afltables_league_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/afl/afltables/afl_afltables_player_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/aussportsbetting/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/aussportsbetting/aussportsbetting_game_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/combined/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/combined/combined_game_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/combined/combined_venue_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/espn/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/espn/espn_game_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/espn/espn_player_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/game_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/google/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/google/google_address_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/google/google_news_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/hkjc/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/hkjc/hkjc/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/hkjc/hkjc/hkjc_hkjc_game_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/hkjc/hkjc/hkjc_hkjc_player_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/nba/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/nba/nba/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/nba/nba/nba_nba_game_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/nba/nba/nba_nba_league_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/nba/nba/nba_nba_team_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/nba/sportsdb/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/nba/sportsdb/nba_sportsdb_league_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/nba/sportsreference/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/nba/sportsreference/nba_sportsreference_league_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/ncaab/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/ncaab/sportsreference/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/ncaab/sportsreference/ncaab_sportsreference_league_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/nfl/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/nfl/sportsdb/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/nfl/sportsdb/nfl_sportsdb_league_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/oddsportal/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/oddsportal/decrypt_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/oddsportal/oddsportal_game_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/oddsportal/oddsportal_league_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/social_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/sportsdb/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/sportsdb/sportsdb_game_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/sportsdb/sportsdb_league_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/sportsdb/sportsdb_team_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/sportsdb/sportsdb_venue_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/sportsreference/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/sportsreference/sportsreference_coach_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/sportsreference/sportsreference_game_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/sportsreference/sportsreference_league_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/sportsreference/sportsreference_venue_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/team_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/x/__init__.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/data/x/x_social_model_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/proxy_session_test.py +0 -0
- {sportsball-0.4.21 → sportsball-0.5.1}/tests/sportsball_test.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: sportsball
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.5.1
|
4
4
|
Summary: A library for pulling in and normalising sports stats.
|
5
5
|
Home-page: https://github.com/8W9aG/sportsball
|
6
6
|
Author: Will Sackfield
|
@@ -210,6 +210,18 @@ A representation of a team within a game.
|
|
210
210
|
* **coaches**: The coaches on the team during the game.
|
211
211
|
* **lbw**: Length behind winner, expressed in metres.
|
212
212
|
* **dividends**: The dividends the game pays out.
|
213
|
+
* **field_goals_percentage**: The ratio of field goals scored by field goals attempted by the players on the team in the game.
|
214
|
+
* **three_point_field_goals**: The number of three point field goals scored by the players on the team in the game.
|
215
|
+
* **three_point_field_goals_attempted**: The number of three point field goals attempted by the players on the team in the game.
|
216
|
+
* **three_point_field_goals_percentage**: The ratio of three point field goals scored by the three point field goals attempted by the players on the team in the game.
|
217
|
+
* **free_throws**: The number of free throws scored by the players on the team in the game.
|
218
|
+
* **free_throws_attempted**: The number of free throws attempted by the players on the team in the game.
|
219
|
+
* **free_throws_percentage**: The ratio of free throws scored by the free throws attempted by the players on the team in the game.
|
220
|
+
* **defensive_rebounds**: The number of defensive rebounds made by the players on the team in the game.
|
221
|
+
* **total_rebounds**: The number of offensive and defensive rebounds made by the players on the team in the game.
|
222
|
+
* **steals**: The number of steals made by the players on the team in the game.
|
223
|
+
* **blocks**: The number of blocks made by the players on the team in the game.
|
224
|
+
* **personal_fouls**: The number of personal fouls made by the players on the team in the game.
|
213
225
|
|
214
226
|
#### Player
|
215
227
|
|
@@ -257,6 +269,22 @@ A representation of a player within a team within a game.
|
|
257
269
|
* **starting_position**: The starting position of the player.
|
258
270
|
* **weight**: The weight of the player in (in KGs).
|
259
271
|
* **birth_address**: The address model for the players birth location.
|
272
|
+
* **seconds_played**: The amount of seconds the player played the game for.
|
273
|
+
* **field_goals_percentage**: The ratio of field goals scored by field goals attempted for the player during the game.
|
274
|
+
* **three_point_field_goals**: The number of three point field goals scored by the player during the game.
|
275
|
+
* **three_point_field_goals_attempted**: The number of three point field goals attempted by the player during the game.
|
276
|
+
* **three_point_field_goals_percentage**: The ratio of three point field goals scored by three point field goals attempted by the player during the game.
|
277
|
+
* **free_throws**: The number of free throws scored by the player during the game.
|
278
|
+
* **free_throws_attempted**: The number of free throws attempted by the player during the game.
|
279
|
+
* **free_throws_percentage**: The ratio of free throws scored by free throws attempted by the player during the game.
|
280
|
+
* **defensive_rebounds**: The number of defensive rebounds made by the player during the game.
|
281
|
+
* **total_rebounds**: The number of rebounds (both offensive and defensive) made by the player during the game.
|
282
|
+
* **steals**: The number of steals made by the player during the game.
|
283
|
+
* **blocks**: The number of blocks made by the player during the game.
|
284
|
+
* **personal_fouls**: The number of personal fouls made by the player during the game.
|
285
|
+
* **points**: The points made by the player during the game.
|
286
|
+
* **game_score**: The [John Hollinger game score](https://www.nbastuffer.com/analytics101/game-score/) of the player during the game.
|
287
|
+
* **point_differential**: The points scored by the players team while the player was on the court minus the points scored by the opposing team when the player is off the court.
|
260
288
|
|
261
289
|
#### Odds
|
262
290
|
|
@@ -150,6 +150,18 @@ A representation of a team within a game.
|
|
150
150
|
* **coaches**: The coaches on the team during the game.
|
151
151
|
* **lbw**: Length behind winner, expressed in metres.
|
152
152
|
* **dividends**: The dividends the game pays out.
|
153
|
+
* **field_goals_percentage**: The ratio of field goals scored by field goals attempted by the players on the team in the game.
|
154
|
+
* **three_point_field_goals**: The number of three point field goals scored by the players on the team in the game.
|
155
|
+
* **three_point_field_goals_attempted**: The number of three point field goals attempted by the players on the team in the game.
|
156
|
+
* **three_point_field_goals_percentage**: The ratio of three point field goals scored by the three point field goals attempted by the players on the team in the game.
|
157
|
+
* **free_throws**: The number of free throws scored by the players on the team in the game.
|
158
|
+
* **free_throws_attempted**: The number of free throws attempted by the players on the team in the game.
|
159
|
+
* **free_throws_percentage**: The ratio of free throws scored by the free throws attempted by the players on the team in the game.
|
160
|
+
* **defensive_rebounds**: The number of defensive rebounds made by the players on the team in the game.
|
161
|
+
* **total_rebounds**: The number of offensive and defensive rebounds made by the players on the team in the game.
|
162
|
+
* **steals**: The number of steals made by the players on the team in the game.
|
163
|
+
* **blocks**: The number of blocks made by the players on the team in the game.
|
164
|
+
* **personal_fouls**: The number of personal fouls made by the players on the team in the game.
|
153
165
|
|
154
166
|
#### Player
|
155
167
|
|
@@ -197,6 +209,22 @@ A representation of a player within a team within a game.
|
|
197
209
|
* **starting_position**: The starting position of the player.
|
198
210
|
* **weight**: The weight of the player in (in KGs).
|
199
211
|
* **birth_address**: The address model for the players birth location.
|
212
|
+
* **seconds_played**: The amount of seconds the player played the game for.
|
213
|
+
* **field_goals_percentage**: The ratio of field goals scored by field goals attempted for the player during the game.
|
214
|
+
* **three_point_field_goals**: The number of three point field goals scored by the player during the game.
|
215
|
+
* **three_point_field_goals_attempted**: The number of three point field goals attempted by the player during the game.
|
216
|
+
* **three_point_field_goals_percentage**: The ratio of three point field goals scored by three point field goals attempted by the player during the game.
|
217
|
+
* **free_throws**: The number of free throws scored by the player during the game.
|
218
|
+
* **free_throws_attempted**: The number of free throws attempted by the player during the game.
|
219
|
+
* **free_throws_percentage**: The ratio of free throws scored by free throws attempted by the player during the game.
|
220
|
+
* **defensive_rebounds**: The number of defensive rebounds made by the player during the game.
|
221
|
+
* **total_rebounds**: The number of rebounds (both offensive and defensive) made by the player during the game.
|
222
|
+
* **steals**: The number of steals made by the player during the game.
|
223
|
+
* **blocks**: The number of blocks made by the player during the game.
|
224
|
+
* **personal_fouls**: The number of personal fouls made by the player during the game.
|
225
|
+
* **points**: The points made by the player during the game.
|
226
|
+
* **game_score**: The [John Hollinger game score](https://www.nbastuffer.com/analytics101/game-score/) of the player during the game.
|
227
|
+
* **point_differential**: The points scored by the players team while the player was on the court minus the points scored by the opposing team when the player is off the court.
|
200
228
|
|
201
229
|
#### Odds
|
202
230
|
|
@@ -26,7 +26,7 @@ def install_requires() -> typing.List[str]:
|
|
26
26
|
|
27
27
|
setup(
|
28
28
|
name='sportsball',
|
29
|
-
version='0.
|
29
|
+
version='0.5.1',
|
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',
|
@@ -58,4 +58,16 @@ def create_afl_afl_player_model(
|
|
58
58
|
weight=None,
|
59
59
|
birth_address=None,
|
60
60
|
owner=None,
|
61
|
+
seconds_played=None,
|
62
|
+
three_point_field_goals=None,
|
63
|
+
three_point_field_goals_attempted=None,
|
64
|
+
free_throws=None,
|
65
|
+
free_throws_attempted=None,
|
66
|
+
defensive_rebounds=None,
|
67
|
+
steals=None,
|
68
|
+
blocks=None,
|
69
|
+
personal_fouls=None,
|
70
|
+
points=None,
|
71
|
+
game_score=None,
|
72
|
+
point_differential=None,
|
61
73
|
)
|
{sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/afl/afltables/afl_afltables_player_model.py
RENAMED
@@ -116,6 +116,18 @@ def _create_afl_afltables_player_model(
|
|
116
116
|
weight=weight,
|
117
117
|
birth_address=None,
|
118
118
|
owner=None,
|
119
|
+
seconds_played=None,
|
120
|
+
three_point_field_goals=None,
|
121
|
+
three_point_field_goals_attempted=None,
|
122
|
+
free_throws=None,
|
123
|
+
free_throws_attempted=None,
|
124
|
+
defensive_rebounds=None,
|
125
|
+
steals=None,
|
126
|
+
blocks=None,
|
127
|
+
personal_fouls=None,
|
128
|
+
points=None,
|
129
|
+
game_score=None,
|
130
|
+
point_differential=None,
|
119
131
|
)
|
120
132
|
|
121
133
|
|
@@ -75,7 +75,7 @@ class AusSportsBettingLeagueModel(LeagueModel):
|
|
75
75
|
if self.league == League.NFL:
|
76
76
|
current_cell_idx += 2
|
77
77
|
else:
|
78
|
-
current_cell_idx +=
|
78
|
+
current_cell_idx += 5
|
79
79
|
home_odds = float(row[current_cell_idx].value) # type: ignore
|
80
80
|
current_cell_idx += 1
|
81
81
|
if self.league == League.NFL:
|
@@ -51,6 +51,18 @@ def create_combined_player_model(
|
|
51
51
|
weight = None
|
52
52
|
birth_address = None
|
53
53
|
owner = None
|
54
|
+
seconds_played = None
|
55
|
+
three_point_field_goals = None
|
56
|
+
three_point_field_goals_attempted = None
|
57
|
+
free_throws = None
|
58
|
+
free_throws_attempted = None
|
59
|
+
defensive_rebounds = None
|
60
|
+
steals = None
|
61
|
+
blocks = None
|
62
|
+
personal_fouls = None
|
63
|
+
points = None
|
64
|
+
game_score = None
|
65
|
+
point_differential = None
|
54
66
|
for player_model in player_models:
|
55
67
|
player_model_jersey = player_model.jersey
|
56
68
|
if not is_null(player_model_jersey):
|
@@ -178,6 +190,46 @@ def create_combined_player_model(
|
|
178
190
|
player_model_owner = player_model.owner
|
179
191
|
if not is_null(player_model_owner):
|
180
192
|
owner = player_model_owner
|
193
|
+
player_model_seconds_played = player_model.seconds_played
|
194
|
+
if not is_null(player_model_seconds_played):
|
195
|
+
seconds_played = player_model_seconds_played
|
196
|
+
player_model_three_point_field_goals = player_model.three_point_field_goals
|
197
|
+
if not is_null(player_model_three_point_field_goals):
|
198
|
+
three_point_field_goals = player_model_three_point_field_goals
|
199
|
+
player_model_three_point_field_goals_attempted = (
|
200
|
+
player_model.three_point_field_goals_attempted
|
201
|
+
)
|
202
|
+
if not is_null(player_model_three_point_field_goals_attempted):
|
203
|
+
three_point_field_goals_attempted = (
|
204
|
+
player_model_three_point_field_goals_attempted
|
205
|
+
)
|
206
|
+
player_model_free_throws = player_model.free_throws
|
207
|
+
if not is_null(player_model_free_throws):
|
208
|
+
free_throws = player_model_free_throws
|
209
|
+
player_model_free_throws_attempted = player_model.free_throws_attempted
|
210
|
+
if not is_null(player_model_free_throws_attempted):
|
211
|
+
free_throws_attempted = player_model_free_throws_attempted
|
212
|
+
player_model_defensive_rebounds = player_model.defensive_rebounds
|
213
|
+
if not is_null(player_model_defensive_rebounds):
|
214
|
+
defensive_rebounds = player_model_defensive_rebounds
|
215
|
+
player_model_steals = player_model.steals
|
216
|
+
if not is_null(player_model_steals):
|
217
|
+
steals = player_model_steals
|
218
|
+
player_model_blocks = player_model.blocks
|
219
|
+
if not is_null(player_model_blocks):
|
220
|
+
blocks = player_model_blocks
|
221
|
+
player_model_personal_fouls = player_model.personal_fouls
|
222
|
+
if not is_null(player_model_personal_fouls):
|
223
|
+
personal_fouls = player_model_personal_fouls
|
224
|
+
player_model_points = player_model.points
|
225
|
+
if not is_null(player_model_points):
|
226
|
+
points = player_model_points
|
227
|
+
player_model_game_score = player_model.game_score
|
228
|
+
if not is_null(player_model_game_score):
|
229
|
+
game_score = player_model_game_score
|
230
|
+
player_model_point_differential = player_model.point_differential
|
231
|
+
if not is_null(player_model_point_differential):
|
232
|
+
point_differential = player_model_point_differential
|
181
233
|
if name is None:
|
182
234
|
raise ValueError("name is null")
|
183
235
|
if species is None:
|
@@ -226,4 +278,16 @@ def create_combined_player_model(
|
|
226
278
|
weight=weight,
|
227
279
|
birth_address=birth_address,
|
228
280
|
owner=owner,
|
281
|
+
seconds_played=seconds_played,
|
282
|
+
three_point_field_goals=three_point_field_goals,
|
283
|
+
three_point_field_goals_attempted=three_point_field_goals_attempted,
|
284
|
+
free_throws=free_throws,
|
285
|
+
free_throws_attempted=free_throws_attempted,
|
286
|
+
defensive_rebounds=defensive_rebounds,
|
287
|
+
steals=steals,
|
288
|
+
blocks=blocks,
|
289
|
+
personal_fouls=personal_fouls,
|
290
|
+
points=points,
|
291
|
+
game_score=game_score,
|
292
|
+
point_differential=point_differential,
|
229
293
|
)
|
@@ -17,7 +17,7 @@ from ..team_model import TeamModel
|
|
17
17
|
from ..venue_model import VenueModel
|
18
18
|
from .espn_bookie_model import create_espn_bookie_model
|
19
19
|
from .espn_odds_model import MONEYLINE_KEY, create_espn_odds_model
|
20
|
-
from .espn_team_model import create_espn_team_model
|
20
|
+
from .espn_team_model import ID_KEY, create_espn_team_model
|
21
21
|
from .espn_venue_model import create_espn_venue_model
|
22
22
|
|
23
23
|
|
@@ -103,6 +103,8 @@ def _create_teams(
|
|
103
103
|
odds_dict = odds_response.json()
|
104
104
|
|
105
105
|
for competitor in competition["competitors"]:
|
106
|
+
if competitor[ID_KEY] == "-1":
|
107
|
+
continue
|
106
108
|
teams.append(
|
107
109
|
_create_espn_team(
|
108
110
|
competitor, odds_dict, session, dt, league, positions_validator
|
@@ -103,6 +103,18 @@ def _create_espn_player_model(
|
|
103
103
|
dt=None,
|
104
104
|
),
|
105
105
|
owner=None,
|
106
|
+
seconds_played=None,
|
107
|
+
three_point_field_goals=None,
|
108
|
+
three_point_field_goals_attempted=None,
|
109
|
+
free_throws=None,
|
110
|
+
free_throws_attempted=None,
|
111
|
+
defensive_rebounds=None,
|
112
|
+
steals=None,
|
113
|
+
blocks=None,
|
114
|
+
personal_fouls=None,
|
115
|
+
points=None,
|
116
|
+
game_score=None,
|
117
|
+
point_differential=None,
|
106
118
|
)
|
107
119
|
|
108
120
|
|
@@ -19,6 +19,8 @@ from ..x.x_social_model import create_x_social_model
|
|
19
19
|
from .espn_coach_model import create_espn_coach_model
|
20
20
|
from .espn_player_model import create_espn_player_model
|
21
21
|
|
22
|
+
ID_KEY = "id"
|
23
|
+
|
22
24
|
|
23
25
|
def _create_espn_team_model(
|
24
26
|
session: requests_cache.CachedSession,
|
@@ -30,7 +32,7 @@ def _create_espn_team_model(
|
|
30
32
|
league: League,
|
31
33
|
positions_validator: dict[str, str],
|
32
34
|
) -> TeamModel:
|
33
|
-
identifier = team[
|
35
|
+
identifier = team[ID_KEY]
|
34
36
|
name = team.get("name", team.get("fullName", team.get("displayName")))
|
35
37
|
if name is None:
|
36
38
|
raise ValueError("name is null")
|
@@ -3223,6 +3223,15 @@ CROKE_PARK = SportsballGeocodeTuple(
|
|
3223
3223
|
housenumber="",
|
3224
3224
|
country="Ireland",
|
3225
3225
|
)
|
3226
|
+
MADISON = SportsballGeocodeTuple(
|
3227
|
+
city="Madison",
|
3228
|
+
state="WI",
|
3229
|
+
postal="",
|
3230
|
+
lat=43.074722,
|
3231
|
+
lng=-89.384167,
|
3232
|
+
housenumber="",
|
3233
|
+
country="USA",
|
3234
|
+
)
|
3226
3235
|
_CACHED_GEOCODES: dict[str, Any] = {
|
3227
3236
|
"S.C.G. - Australia": SCG,
|
3228
3237
|
"Victoria Park - Australia": SportsballGeocodeTuple(
|
@@ -11169,15 +11178,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
11169
11178
|
housenumber="",
|
11170
11179
|
country="USA",
|
11171
11180
|
),
|
11172
|
-
"Madison, Wisconsin":
|
11173
|
-
city="Madison",
|
11174
|
-
state="WI",
|
11175
|
-
postal="",
|
11176
|
-
lat=43.074722,
|
11177
|
-
lng=-89.384167,
|
11178
|
-
housenumber="",
|
11179
|
-
country="USA",
|
11180
|
-
),
|
11181
|
+
"Madison, Wisconsin": MADISON,
|
11181
11182
|
"College Park, Maryland": SportsballGeocodeTuple(
|
11182
11183
|
city="College Park",
|
11183
11184
|
state="MD",
|
@@ -15645,6 +15646,35 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
15645
15646
|
housenumber="",
|
15646
15647
|
country="USA",
|
15647
15648
|
),
|
15649
|
+
"Madison, Wisconsin, United States": MADISON,
|
15650
|
+
"Schenectady, New York, United States": SportsballGeocodeTuple(
|
15651
|
+
city="Schenectady",
|
15652
|
+
state="NY",
|
15653
|
+
postal="",
|
15654
|
+
lat=42.814167,
|
15655
|
+
lng=-73.937222,
|
15656
|
+
housenumber="",
|
15657
|
+
country="USA",
|
15658
|
+
),
|
15659
|
+
"Bellevue, WA, USA": SportsballGeocodeTuple(
|
15660
|
+
city="Bellevue",
|
15661
|
+
state="WA",
|
15662
|
+
postal="",
|
15663
|
+
lat=47.614444,
|
15664
|
+
lng=-122.153611,
|
15665
|
+
housenumber="",
|
15666
|
+
country="USA",
|
15667
|
+
),
|
15668
|
+
"ZIM": SportsballGeocodeTuple(
|
15669
|
+
city="",
|
15670
|
+
state="",
|
15671
|
+
postal="",
|
15672
|
+
lat=-19.0,
|
15673
|
+
lng=30.0,
|
15674
|
+
housenumber="",
|
15675
|
+
country="Zimbabwe",
|
15676
|
+
),
|
15677
|
+
"Corroboree Group Oval Manuka, Canberra": MANUKA_OVAL,
|
15648
15678
|
}
|
15649
15679
|
|
15650
15680
|
|
@@ -173,6 +173,18 @@ def _create_hkjc_hkjc_player_model(
|
|
173
173
|
weight=weight,
|
174
174
|
birth_address=birth_address,
|
175
175
|
owner=owner,
|
176
|
+
seconds_played=None,
|
177
|
+
three_point_field_goals=None,
|
178
|
+
three_point_field_goals_attempted=None,
|
179
|
+
free_throws=None,
|
180
|
+
free_throws_attempted=None,
|
181
|
+
defensive_rebounds=None,
|
182
|
+
steals=None,
|
183
|
+
blocks=None,
|
184
|
+
personal_fouls=None,
|
185
|
+
points=None,
|
186
|
+
game_score=None,
|
187
|
+
point_differential=None,
|
176
188
|
)
|
177
189
|
|
178
190
|
|
{sportsball-0.4.21 → sportsball-0.5.1}/sportsball/data/nba/nbacom/nba_nbacom_player_model.py
RENAMED
@@ -55,4 +55,16 @@ def create_nba_nbacom_player_model(player_dict: dict[str, Any]) -> PlayerModel:
|
|
55
55
|
weight=None,
|
56
56
|
birth_address=None,
|
57
57
|
owner=None,
|
58
|
+
seconds_played=None,
|
59
|
+
three_point_field_goals=None,
|
60
|
+
three_point_field_goals_attempted=None,
|
61
|
+
free_throws=None,
|
62
|
+
free_throws_attempted=None,
|
63
|
+
defensive_rebounds=None,
|
64
|
+
steals=None,
|
65
|
+
blocks=None,
|
66
|
+
personal_fouls=None,
|
67
|
+
points=None,
|
68
|
+
game_score=None,
|
69
|
+
point_differential=None,
|
58
70
|
)
|
@@ -59,6 +59,34 @@ PLAYER_STARTING_POSITION_COLUMN: Literal["starting_position"] = "starting_positi
|
|
59
59
|
PLAYER_WEIGHT_COLUMN: Literal["weight"] = "weight"
|
60
60
|
PLAYER_BIRTH_ADDRESS_COLUMN: Literal["birth_address"] = "birth_address"
|
61
61
|
PLAYER_OWNER_COLUMN: Literal["owner"] = "owner"
|
62
|
+
PLAYER_SECONDS_PLAYED_COLUMN: Literal["seconds_played"] = "seconds_played"
|
63
|
+
PLAYER_FIELD_GOALS_PERCENTAGE_COLUMN: Literal["field_goals_percentage"] = (
|
64
|
+
"field_goals_percentage"
|
65
|
+
)
|
66
|
+
PLAYER_THREE_POINT_FIELD_GOALS_COLUMN: Literal["three_point_field_goals"] = (
|
67
|
+
"three_point_field_goals"
|
68
|
+
)
|
69
|
+
PLAYER_THREE_POINT_FIELD_GOALS_ATTEMPTED_COLUMN: Literal[
|
70
|
+
"three_point_field_goals_attempted"
|
71
|
+
] = "three_point_field_goals_attempted"
|
72
|
+
PLAYER_THREE_POINT_FIELD_GOALS_PERCENTAGE_COLUMN: Literal[
|
73
|
+
"three_point_field_goals_percentage"
|
74
|
+
] = "three_point_field_goals_percentage"
|
75
|
+
PLAYER_FREE_THROWS_COLUMN: Literal["free_throws"] = "free_throws"
|
76
|
+
PLAYER_FREE_THROWS_ATTEMPTED_COLUMN: Literal["free_throws_attempted"] = (
|
77
|
+
"free_throws_attempted"
|
78
|
+
)
|
79
|
+
PLAYER_FREE_THROWS_PERCENTAGE_COLUMN: Literal["free_throws_percentage"] = (
|
80
|
+
"free_throws_percentage"
|
81
|
+
)
|
82
|
+
PLAYER_DEFENSIVE_REBOUNDS_COLUMN: Literal["defensive_rebounds"] = "defensive_rebounds"
|
83
|
+
PLAYER_TOTAL_REBOUNDS_COLUMN: Literal["total_rebounds"] = "total_rebounds"
|
84
|
+
PLAYER_STEALS_COLUMN: Literal["steals"] = "steals"
|
85
|
+
PLAYER_BLOCKS_COLUMN: Literal["blocks"] = "blocks"
|
86
|
+
PLAYER_PERSONAL_FOULS_COLUMN: Literal["personal_fouls"] = "personal_fouls"
|
87
|
+
PLAYER_POINTS_COLUMN: Literal["points"] = "points"
|
88
|
+
PLAYER_GAME_SCORE_COLUMN: Literal["game_score"] = "game_score"
|
89
|
+
PLAYER_POINT_DIFFERENTIAL_COLUMN: Literal["point_differential"] = "point_differential"
|
62
90
|
|
63
91
|
_GENDER_DETECTOR = gender.Detector()
|
64
92
|
_MALE_GENDERS = {"male", "mostly_male"}
|
@@ -78,6 +106,48 @@ def _guess_sex(data: dict[str, Any]) -> str | None:
|
|
78
106
|
return None
|
79
107
|
|
80
108
|
|
109
|
+
def _calculate_field_goals_percentage(data: dict[str, Any]) -> float | None:
|
110
|
+
field_goals = data.get(FIELD_GOALS_COLUMN)
|
111
|
+
if field_goals is None:
|
112
|
+
return None
|
113
|
+
field_goals_attempted = data.get(FIELD_GOALS_ATTEMPTED_COLUMN)
|
114
|
+
if field_goals_attempted is None:
|
115
|
+
return None
|
116
|
+
return float(field_goals) / float(field_goals_attempted) # type: ignore
|
117
|
+
|
118
|
+
|
119
|
+
def _calculate_three_point_field_goals_percentage(data: dict[str, Any]) -> float | None:
|
120
|
+
three_point_field_goals = data.get(PLAYER_THREE_POINT_FIELD_GOALS_COLUMN)
|
121
|
+
if three_point_field_goals is None:
|
122
|
+
return None
|
123
|
+
three_point_field_goals_attempted = data.get(
|
124
|
+
PLAYER_THREE_POINT_FIELD_GOALS_ATTEMPTED_COLUMN
|
125
|
+
)
|
126
|
+
if three_point_field_goals_attempted is None:
|
127
|
+
return None
|
128
|
+
return float(three_point_field_goals) / float(three_point_field_goals_attempted) # type: ignore
|
129
|
+
|
130
|
+
|
131
|
+
def _calculate_free_throws_percentage(data: dict[str, Any]) -> float | None:
|
132
|
+
free_throws = data.get(PLAYER_FREE_THROWS_COLUMN)
|
133
|
+
if free_throws is None:
|
134
|
+
return None
|
135
|
+
free_throws_attempted = data.get(PLAYER_FREE_THROWS_ATTEMPTED_COLUMN)
|
136
|
+
if free_throws_attempted is None:
|
137
|
+
return None
|
138
|
+
return float(free_throws) / float(free_throws_attempted) # type: ignore
|
139
|
+
|
140
|
+
|
141
|
+
def _calculate_total_rebounds(data: dict[str, Any]) -> int | None:
|
142
|
+
offensive_rebounds = data.get(OFFENSIVE_REBOUNDS_COLUMN)
|
143
|
+
if offensive_rebounds is None:
|
144
|
+
return None
|
145
|
+
defensive_rebounds = data.get(PLAYER_DEFENSIVE_REBOUNDS_COLUMN)
|
146
|
+
if defensive_rebounds:
|
147
|
+
return None
|
148
|
+
return offensive_rebounds + defensive_rebounds
|
149
|
+
|
150
|
+
|
81
151
|
class PlayerModel(BaseModel):
|
82
152
|
"""The serialisable player class."""
|
83
153
|
|
@@ -260,3 +330,83 @@ class PlayerModel(BaseModel):
|
|
260
330
|
weight: float | None = Field(..., alias=PLAYER_WEIGHT_COLUMN)
|
261
331
|
birth_address: AddressModel | None = Field(..., alias=PLAYER_BIRTH_ADDRESS_COLUMN)
|
262
332
|
owner: OwnerModel | None = Field(..., alias=PLAYER_OWNER_COLUMN)
|
333
|
+
seconds_played: int | None = Field(
|
334
|
+
...,
|
335
|
+
json_schema_extra={TYPE_KEY: FieldType.LOOKAHEAD},
|
336
|
+
alias=PLAYER_SECONDS_PLAYED_COLUMN,
|
337
|
+
)
|
338
|
+
field_goals_percentage: float | None = Field(
|
339
|
+
default_factory=_calculate_field_goals_percentage,
|
340
|
+
json_schema_extra={TYPE_KEY: FieldType.LOOKAHEAD},
|
341
|
+
alias=PLAYER_FIELD_GOALS_PERCENTAGE_COLUMN,
|
342
|
+
)
|
343
|
+
three_point_field_goals: int | None = Field(
|
344
|
+
...,
|
345
|
+
json_schema_extra={TYPE_KEY: FieldType.LOOKAHEAD},
|
346
|
+
alias=PLAYER_THREE_POINT_FIELD_GOALS_COLUMN,
|
347
|
+
)
|
348
|
+
three_point_field_goals_attempted: int | None = Field(
|
349
|
+
...,
|
350
|
+
json_schema_extra={TYPE_KEY: FieldType.LOOKAHEAD},
|
351
|
+
alias=PLAYER_THREE_POINT_FIELD_GOALS_ATTEMPTED_COLUMN,
|
352
|
+
)
|
353
|
+
three_point_field_goals_percentage: float | None = Field(
|
354
|
+
default_factory=_calculate_three_point_field_goals_percentage,
|
355
|
+
json_schema_extra={TYPE_KEY: FieldType.LOOKAHEAD},
|
356
|
+
alias=PLAYER_THREE_POINT_FIELD_GOALS_PERCENTAGE_COLUMN,
|
357
|
+
)
|
358
|
+
free_throws: int | None = Field(
|
359
|
+
...,
|
360
|
+
json_schema_extra={TYPE_KEY: FieldType.LOOKAHEAD},
|
361
|
+
alias=PLAYER_FREE_THROWS_COLUMN,
|
362
|
+
)
|
363
|
+
free_throws_attempted: int | None = Field(
|
364
|
+
...,
|
365
|
+
json_schema_extra={TYPE_KEY: FieldType.LOOKAHEAD},
|
366
|
+
alias=PLAYER_FREE_THROWS_ATTEMPTED_COLUMN,
|
367
|
+
)
|
368
|
+
free_throws_percentage: float | None = Field(
|
369
|
+
default_factory=_calculate_free_throws_percentage,
|
370
|
+
json_schema_extra={TYPE_KEY: FieldType.LOOKAHEAD},
|
371
|
+
alias=PLAYER_FREE_THROWS_PERCENTAGE_COLUMN,
|
372
|
+
)
|
373
|
+
defensive_rebounds: int | None = Field(
|
374
|
+
...,
|
375
|
+
json_schema_extra={TYPE_KEY: FieldType.LOOKAHEAD},
|
376
|
+
alias=PLAYER_DEFENSIVE_REBOUNDS_COLUMN,
|
377
|
+
)
|
378
|
+
total_rebounds: int | None = Field(
|
379
|
+
default_factory=_calculate_total_rebounds,
|
380
|
+
json_schema_extra={TYPE_KEY: FieldType.LOOKAHEAD},
|
381
|
+
alias=PLAYER_TOTAL_REBOUNDS_COLUMN,
|
382
|
+
)
|
383
|
+
steals: int | None = Field(
|
384
|
+
...,
|
385
|
+
json_schema_extra={TYPE_KEY: FieldType.LOOKAHEAD},
|
386
|
+
alias=PLAYER_STEALS_COLUMN,
|
387
|
+
)
|
388
|
+
blocks: int | None = Field(
|
389
|
+
...,
|
390
|
+
json_schema_extra={TYPE_KEY: FieldType.LOOKAHEAD},
|
391
|
+
alias=PLAYER_BLOCKS_COLUMN,
|
392
|
+
)
|
393
|
+
personal_fouls: int | None = Field(
|
394
|
+
...,
|
395
|
+
json_schema_extra={TYPE_KEY: FieldType.LOOKAHEAD},
|
396
|
+
alias=PLAYER_PERSONAL_FOULS_COLUMN,
|
397
|
+
)
|
398
|
+
points: int | None = Field(
|
399
|
+
...,
|
400
|
+
json_schema_extra={TYPE_KEY: FieldType.LOOKAHEAD},
|
401
|
+
alias=PLAYER_POINTS_COLUMN,
|
402
|
+
)
|
403
|
+
game_score: float | None = Field(
|
404
|
+
...,
|
405
|
+
json_schema_extra={TYPE_KEY: FieldType.LOOKAHEAD},
|
406
|
+
alias=PLAYER_GAME_SCORE_COLUMN,
|
407
|
+
)
|
408
|
+
point_differential: int | None = Field(
|
409
|
+
...,
|
410
|
+
json_schema_extra={TYPE_KEY: FieldType.LOOKAHEAD},
|
411
|
+
alias=PLAYER_POINT_DIFFERENTIAL_COLUMN,
|
412
|
+
)
|