sportsball 0.4.1__tar.gz → 0.4.3__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.1/sportsball.egg-info → sportsball-0.4.3}/PKG-INFO +1 -1
- {sportsball-0.4.1 → sportsball-0.4.3}/setup.py +1 -1
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/__init__.py +1 -1
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/afltables/afl_afltables_coach_model.py +1 -1
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/espn/espn_game_model.py +1 -1
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/google/google_address_model.py +24 -18
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/hkjc/hkjc/hkjc_hkjc_coach_model.py +2 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/hkjc/hkjc/hkjc_hkjc_game_model.py +24 -9
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/hkjc/hkjc/hkjc_hkjc_player_model.py +10 -1
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/hkjc/hkjc/hkjc_hkjc_team_model.py +3 -3
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/sportsreference/sportsreference_team_model.py +4 -5
- {sportsball-0.4.1 → sportsball-0.4.3/sportsball.egg-info}/PKG-INFO +1 -1
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball.egg-info/SOURCES.txt +2 -0
- sportsball-0.4.3/tests/data/afl/afltables/afl_afltables_coach_model_test.py +30 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/afl/afltables/afl_afltables_game_model_test.py +4 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/hkjc/hkjc/hkjc_hkjc_game_model_test.py +12 -0
- sportsball-0.4.3/tests/data/hkjc/hkjc/hkjc_hkjc_player_model_test.py +29 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/sportsreference/sportsreference_team_model_test.py +24 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/LICENSE +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/MANIFEST.in +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/README.md +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/requirements.txt +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/setup.cfg +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/__main__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/args.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/cache.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/address_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/afl/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/afl/afl_afl_bookie_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/afl/afl_afl_game_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/afl/afl_afl_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/afl/afl_afl_odds_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/afl/afl_afl_player_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/afl/afl_afl_team_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/afl/afl_afl_venue_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/afltables/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/afltables/afl_afltables_game_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/afltables/afl_afltables_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/afltables/afl_afltables_player_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/afltables/afl_afltables_team_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/afltables/afl_afltables_venue_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/aussportsbetting/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/aussportsbetting/afl_aussportsbetting_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/combined/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/combined/afl_combined_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/espn/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/espn/afl_espn_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/oddsportal/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/oddsportal/afl_oddsportal_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/position.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/aussportsbetting/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/aussportsbetting/aussportsbetting_bookie_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/aussportsbetting/aussportsbetting_game_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/aussportsbetting/aussportsbetting_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/aussportsbetting/aussportsbetting_odds_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/aussportsbetting/aussportsbetting_team_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/aussportsbetting/aussportsbetting_venue_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/bet.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/bookie_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/coach_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/combined/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/combined/combined_address_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/combined/combined_coach_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/combined/combined_game_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/combined/combined_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/combined/combined_player_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/combined/combined_team_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/combined/combined_venue_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/combined/combined_weather_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/combined/null_check.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/dividend_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/espn/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/espn/espn_bookie_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/espn/espn_coach_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/espn/espn_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/espn/espn_odds_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/espn/espn_player_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/espn/espn_team_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/espn/espn_venue_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/field_type.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/game_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/google/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/google/google_news_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/hkjc/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/hkjc/hkjc/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/hkjc/hkjc/hkjc_hkjc_bookie_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/hkjc/hkjc/hkjc_hkjc_dividend_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/hkjc/hkjc/hkjc_hkjc_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/hkjc/hkjc/hkjc_hkjc_odds_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/hkjc/hkjc/hkjc_hkjc_owner_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/hkjc/hkjc/hkjc_hkjc_venue_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/hkjc/position.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/league.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nba/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nba/combined/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nba/combined/nba_combined_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nba/espn/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nba/espn/nba_espn_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nba/nba/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nba/nba/nba_nba_game_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nba/nba/nba_nba_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nba/nba/nba_nba_team_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nba/nbacom/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nba/nbacom/nba_nbacom_game_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nba/nbacom/nba_nbacom_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nba/nbacom/nba_nbacom_player_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nba/nbacom/nba_nbacom_team_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nba/nbacom/nba_nbacom_venue_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nba/oddsportal/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nba/oddsportal/nba_oddsportal_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nba/position.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nba/sportsdb/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nba/sportsdb/nba_sportsdb_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nba/sportsreference/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nba/sportsreference/nba_sportsreference_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/ncaab/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/ncaab/combined/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/ncaab/combined/ncaab_combined_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/ncaab/espn/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/ncaab/espn/ncaab_espn_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/ncaab/oddsportal/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/ncaab/oddsportal/ncaab_oddsportal_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/ncaab/sportsreference/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/ncaab/sportsreference/ncaab_sportsreference_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/ncaaf/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/ncaaf/combined/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/ncaaf/combined/ncaaf_combined_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/ncaaf/espn/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/ncaaf/espn/ncaaf_espn_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/ncaaf/oddsportal/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/ncaaf/oddsportal/ncaaf_oddsportal_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/news_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nfl/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nfl/aussportsbetting/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nfl/aussportsbetting/nfl_aussportsbetting_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nfl/combined/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nfl/combined/nfl_combined_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nfl/espn/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nfl/espn/nfl_espn_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nfl/oddsportal/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nfl/oddsportal/nfl_oddsportal_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nfl/position.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nfl/sportsdb/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/nfl/sportsdb/nfl_sportsdb_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/odds_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/oddsportal/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/oddsportal/decrypt.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/oddsportal/oddsportal_bookie_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/oddsportal/oddsportal_game_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/oddsportal/oddsportal_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/oddsportal/oddsportal_odds_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/oddsportal/oddsportal_team_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/oddsportal/oddsportal_venue_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/owner_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/player_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/season_type.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/sex.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/social_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/species.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/sportsdb/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/sportsdb/sportsdb_game_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/sportsdb/sportsdb_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/sportsdb/sportsdb_team_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/sportsdb/sportsdb_venue_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/sportsreference/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/sportsreference/sportsreference_coach_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/sportsreference/sportsreference_game_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/sportsreference/sportsreference_league_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/sportsreference/sportsreference_player_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/sportsreference/sportsreference_venue_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/team_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/venue_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/weather/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/weather/gribstream/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/weather/gribstream/gribstream_weather_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/weather/multi_weather_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/weather/openmeteo/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/weather/openmeteo/openmeteo_weather_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/weather_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/wikipedia/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/wikipedia/wikipedia_venue_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/x/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/x/x_social_model.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/logger.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/loglevel.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/playwright.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/proxy_session.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/session.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/sportsball.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/vendor/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball/vendor/pygooglenews/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball.egg-info/dependency_links.txt +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball.egg-info/entry_points.txt +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball.egg-info/not-zip-safe +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball.egg-info/requires.txt +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/sportsball.egg-info/top_level.txt +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/afl/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/afl/afl/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/afl/afl/afl_afl_game_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/afl/afl/afl_afl_league_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/afl/afltables/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/afl/afltables/afl_afltables_league_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/afl/afltables/afl_afltables_player_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/aussportsbetting/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/aussportsbetting/aussportsbetting_game_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/combined/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/combined/combined_game_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/combined/combined_player_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/combined/combined_team_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/espn/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/espn/espn_game_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/espn/espn_player_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/game_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/google/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/google/google_address_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/google/google_news_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/hkjc/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/hkjc/hkjc/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/nba/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/nba/nba/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/nba/nba/nba_nba_game_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/nba/nba/nba_nba_league_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/nba/nba/nba_nba_team_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/nba/sportsdb/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/nba/sportsdb/nba_sportsdb_league_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/nba/sportsreference/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/nba/sportsreference/nba_sportsreference_league_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/ncaab/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/ncaab/sportsreference/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/ncaab/sportsreference/ncaab_sportsreference_league_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/nfl/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/nfl/sportsdb/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/nfl/sportsdb/nfl_sportsdb_league_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/oddsportal/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/oddsportal/decrypt_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/oddsportal/oddsportal_game_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/oddsportal/oddsportal_league_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/player_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/social_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/sportsdb/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/sportsdb/sportsdb_game_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/sportsdb/sportsdb_league_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/sportsdb/sportsdb_team_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/sportsdb/sportsdb_venue_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/sportsreference/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/sportsreference/sportsreference_coach_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/sportsreference/sportsreference_game_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/sportsreference/sportsreference_league_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/sportsreference/sportsreference_player_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/sportsreference/sportsreference_venue_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/team_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/x/__init__.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/data/x/x_social_model_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/tests/proxy_session_test.py +0 -0
- {sportsball-0.4.1 → sportsball-0.4.3}/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.4.
|
29
|
+
version='0.4.3',
|
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.4.1 → sportsball-0.4.3}/sportsball/data/afl/afltables/afl_afltables_coach_model.py
RENAMED
@@ -47,7 +47,7 @@ def _create_afl_afltables_coach_model(
|
|
47
47
|
start_year, end_year = [int(x) for x in year_range.split("-")]
|
48
48
|
else:
|
49
49
|
start_year = end_year = int(year_range)
|
50
|
-
if start_year <= year
|
50
|
+
if start_year <= year <= end_year:
|
51
51
|
name = names[count].strip()
|
52
52
|
break
|
53
53
|
if name is None:
|
@@ -198,7 +198,7 @@ def create_espn_game_model(
|
|
198
198
|
dt = parse(event["date"])
|
199
199
|
if (
|
200
200
|
not pytest_is_running.is_running()
|
201
|
-
and dt < datetime.datetime.now() - datetime.timedelta(days=7)
|
201
|
+
and dt < datetime.datetime.now().date() - datetime.timedelta(days=7)
|
202
202
|
):
|
203
203
|
return _cached_create_espn_game_model(
|
204
204
|
event,
|
@@ -3196,6 +3196,24 @@ MONROE = SportsballGeocodeTuple(
|
|
3196
3196
|
housenumber="",
|
3197
3197
|
country="USA",
|
3198
3198
|
)
|
3199
|
+
YOKOHAMA_ARENA = SportsballGeocodeTuple(
|
3200
|
+
city="Kanagawa",
|
3201
|
+
state="",
|
3202
|
+
postal="",
|
3203
|
+
lat=35.512389,
|
3204
|
+
lng=139.620056,
|
3205
|
+
housenumber="",
|
3206
|
+
country="Japan",
|
3207
|
+
)
|
3208
|
+
BELL_CENTRE = SportsballGeocodeTuple(
|
3209
|
+
city="Montreal",
|
3210
|
+
state="QC",
|
3211
|
+
postal="",
|
3212
|
+
lat=45.496111,
|
3213
|
+
lng=-73.569444,
|
3214
|
+
housenumber="1909",
|
3215
|
+
country="CA",
|
3216
|
+
)
|
3199
3217
|
_CACHED_GEOCODES: dict[str, Any] = {
|
3200
3218
|
"S.C.G. - Australia": SCG,
|
3201
3219
|
"Victoria Park - Australia": SportsballGeocodeTuple(
|
@@ -7990,15 +8008,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
7990
8008
|
"Target Center - Minneapolis, Minnesota - United States": TARGET_CENTER,
|
7991
8009
|
"Thomas & Mack Center - Paradise, NV - United States": THOMAS_AND_MACK_CENTER,
|
7992
8010
|
"Delta Center - Salt Lake City, Utah - United States": DELTA_CENTER,
|
7993
|
-
"Yokohama Arena":
|
7994
|
-
city="Kanagawa",
|
7995
|
-
state="",
|
7996
|
-
postal="",
|
7997
|
-
lat=35.512389,
|
7998
|
-
lng=139.620056,
|
7999
|
-
housenumber="",
|
8000
|
-
country="Japan",
|
8001
|
-
),
|
8011
|
+
"Yokohama Arena": YOKOHAMA_ARENA,
|
8002
8012
|
"Anaheim Convention Center": ANAHEIM_CONVENTION_CENTER,
|
8003
8013
|
"TD Banknorth Garden": TD_GARDEN,
|
8004
8014
|
"Amway Arena": ORLANDO_ARENA,
|
@@ -8875,15 +8885,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
8875
8885
|
"Climate Pledge Arena - Seattle, Washington - United States": CLIMATE_PLEDGE_ARENA,
|
8876
8886
|
"Wells Fargo Center - Philadelphia, PA - United States": SPECTRUM,
|
8877
8887
|
"State Farm Arena - Atlanta, Georgia - United States": STATE_FARM_ARENA,
|
8878
|
-
"Bell Centre":
|
8879
|
-
city="Montreal",
|
8880
|
-
state="QC",
|
8881
|
-
postal="",
|
8882
|
-
lat=45.496111,
|
8883
|
-
lng=-73.569444,
|
8884
|
-
housenumber="1909",
|
8885
|
-
country="CA",
|
8886
|
-
),
|
8888
|
+
"Bell Centre": BELL_CENTRE,
|
8887
8889
|
"Footprint Center - Phoenix, Arizona - United States": AMERICA_WEST_ARENA,
|
8888
8890
|
"Smoothie King Center - New Orleans, Louisiana, USA - United States": CAESARS_SUPERDOME,
|
8889
8891
|
"Kaseya Center - Miami, Florida - United States": KASEYA_CENTER,
|
@@ -15525,6 +15527,10 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
15525
15527
|
housenumber="",
|
15526
15528
|
country="Italy",
|
15527
15529
|
),
|
15530
|
+
"TIO Traeger Park, Alice Springs": TIO_STADIUM,
|
15531
|
+
"Hard Rock Stadium, Miami Gardens, FL, USA": HARD_ROCK_STADIUM,
|
15532
|
+
"Yokohama Arena - Yokohama, Kanagawa - Japan": YOKOHAMA_ARENA,
|
15533
|
+
"Centre Bell - Montreal, Quebec, Canada - Canada": BELL_CENTRE,
|
15528
15534
|
}
|
15529
15535
|
|
15530
15536
|
|
@@ -32,6 +32,8 @@ def _create_hkjc_hkjc_coach_model(
|
|
32
32
|
age_str = df.iat[1, 0].strip().split(":")[-1].strip().split(",")[0].strip()
|
33
33
|
if "–" in age_str:
|
34
34
|
age_str = age_str.split("–")[-1].strip()
|
35
|
+
if "-" in age_str:
|
36
|
+
age_str = age_str.split("-")[-1].strip()
|
35
37
|
age = int(age_str)
|
36
38
|
|
37
39
|
if name is None:
|
@@ -3,6 +3,7 @@
|
|
3
3
|
# pylint: disable=too-many-nested-blocks,too-many-statements,too-many-branches,too-many-locals
|
4
4
|
import datetime
|
5
5
|
import io
|
6
|
+
import logging
|
6
7
|
import urllib.parse
|
7
8
|
from urllib.parse import urlparse
|
8
9
|
|
@@ -36,6 +37,10 @@ def _create_hkjc_hkjc_game_model(
|
|
36
37
|
div_text = div.get_text().strip()
|
37
38
|
if div_text.lower() == "no information.":
|
38
39
|
return None
|
40
|
+
for div in soup.find_all("div"):
|
41
|
+
div_text = div.get_text().strip()
|
42
|
+
if "this race is declared abandoned" in div_text.lower():
|
43
|
+
return None
|
39
44
|
|
40
45
|
o = urlparse(url)
|
41
46
|
query = urllib.parse.parse_qs(o.query)
|
@@ -55,7 +60,13 @@ def _create_hkjc_hkjc_game_model(
|
|
55
60
|
for count, df in enumerate(dfs):
|
56
61
|
if count == 1:
|
57
62
|
race_track = df.iat[2, 2].split("-")[0].strip()
|
58
|
-
distance =
|
63
|
+
distance = 0.0
|
64
|
+
try:
|
65
|
+
distance = float(df.iat[1, 0].split("-")[1].strip().replace("M", ""))
|
66
|
+
except IndexError:
|
67
|
+
logging.error(html)
|
68
|
+
logging.error(url)
|
69
|
+
raise
|
59
70
|
pot = float(df.iat[3, 0].split()[-1].strip().replace(",", ""))
|
60
71
|
elif count == 2:
|
61
72
|
for _, row in df.iterrows():
|
@@ -80,7 +91,7 @@ def _create_hkjc_hkjc_game_model(
|
|
80
91
|
if starting_position_str.strip() != "---":
|
81
92
|
starting_position = position_from_str(starting_position_str.strip())
|
82
93
|
|
83
|
-
lbw = 0.0
|
94
|
+
lbw: float | None = 0.0
|
84
95
|
lbw_str = row["LBW"].strip()
|
85
96
|
if lbw_str == "HD":
|
86
97
|
lbw = 2.4 * 0.2
|
@@ -88,14 +99,17 @@ def _create_hkjc_hkjc_game_model(
|
|
88
99
|
lbw = 2.4 * 0.2 * 0.5
|
89
100
|
elif lbw_str in {"NOSE", "N"}:
|
90
101
|
lbw = 2.4 * 0.05
|
102
|
+
elif lbw_str == "ML":
|
103
|
+
lbw = None
|
91
104
|
elif lbw_str and lbw_str != "-" and lbw_str != "---":
|
92
|
-
if
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
105
|
+
if lbw is not None:
|
106
|
+
if "-" in lbw_str:
|
107
|
+
lbw_horses, lbw_str = lbw_str.split("-")
|
108
|
+
lbw += 2.4 * int(lbw_horses)
|
109
|
+
if "/" in lbw_str:
|
110
|
+
lbw += 2.4 * (1.0 / int(lbw_str.split("/")[-1]))
|
111
|
+
else:
|
112
|
+
lbw += 2.4 * int(lbw_str)
|
99
113
|
|
100
114
|
finish_time_str = row["Finish Time"].strip()
|
101
115
|
end_dt = None
|
@@ -165,6 +179,7 @@ def _create_hkjc_hkjc_game_model(
|
|
165
179
|
dividend_str = str(row_df.iat[2, 0]).strip().lower()
|
166
180
|
if dividend_str == "details":
|
167
181
|
continue
|
182
|
+
dividend_str = dividend_str.split("/", maxsplit=1)[0].replace(",", "")
|
168
183
|
dividend = float(dividend_str)
|
169
184
|
|
170
185
|
combination = None
|
@@ -32,6 +32,10 @@ def _create_hkjc_hkjc_player_model(
|
|
32
32
|
headers = {X_NO_WAYBACK: "1"}
|
33
33
|
response = session.get(url, headers=headers)
|
34
34
|
response.raise_for_status()
|
35
|
+
|
36
|
+
o = urlparse(url)
|
37
|
+
is_sire = o.path.endswith("Horse/SameSire.aspx")
|
38
|
+
|
35
39
|
handle = io.StringIO()
|
36
40
|
handle.write(response.text)
|
37
41
|
handle.seek(0)
|
@@ -40,7 +44,12 @@ def _create_hkjc_hkjc_player_model(
|
|
40
44
|
dfs = pd.read_html(handle)
|
41
45
|
except AttributeError as exc:
|
42
46
|
logging.warning(str(exc))
|
43
|
-
|
47
|
+
except ValueError:
|
48
|
+
if not is_sire:
|
49
|
+
logging.error(response.text)
|
50
|
+
logging.error(url)
|
51
|
+
raise
|
52
|
+
|
44
53
|
soup = BeautifulSoup(response.text, "lxml")
|
45
54
|
|
46
55
|
name = None
|
@@ -24,7 +24,7 @@ def _create_hkjc_hkjc_team_model(
|
|
24
24
|
handicap_weight: float,
|
25
25
|
horse_weight: float | None,
|
26
26
|
starting_position: Position | None,
|
27
|
-
lbw: float,
|
27
|
+
lbw: float | None,
|
28
28
|
end_dt: datetime.datetime | None,
|
29
29
|
odds: list[OddsModel],
|
30
30
|
) -> TeamModel:
|
@@ -75,7 +75,7 @@ def _cached_create_hkjc_hkjc_team_model(
|
|
75
75
|
handicap_weight: float,
|
76
76
|
horse_weight: float | None,
|
77
77
|
starting_position: Position | None,
|
78
|
-
lbw: float,
|
78
|
+
lbw: float | None,
|
79
79
|
end_dt: datetime.datetime | None,
|
80
80
|
odds: list[OddsModel],
|
81
81
|
) -> TeamModel:
|
@@ -105,7 +105,7 @@ def create_hkjc_hkjc_team_model(
|
|
105
105
|
handicap_weight: float,
|
106
106
|
horse_weight: float | None,
|
107
107
|
starting_position: Position | None,
|
108
|
-
lbw: float,
|
108
|
+
lbw: float | None,
|
109
109
|
end_dt: datetime.datetime | None,
|
110
110
|
odds: list[OddsModel],
|
111
111
|
) -> TeamModel:
|
{sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/sportsreference/sportsreference_team_model.py
RENAMED
@@ -41,6 +41,7 @@ _NON_WAYBACK_URLS: set[str] = {
|
|
41
41
|
"https://www.sports-reference.com/cbb/schools/rice/women/2019.html",
|
42
42
|
"https://www.sports-reference.com/cbb/schools/north-carolina/women/2018.html",
|
43
43
|
"https://www.sports-reference.com/cbb/schools/minnesota/women/2009.html",
|
44
|
+
"https://www.basketball-reference.com/teams/GSW/2016.html",
|
44
45
|
}
|
45
46
|
_BAD_TEAM_URLS = {
|
46
47
|
"https://www.sports-reference.com/cbb/schools/mid-atlantic-christian/2016.html",
|
@@ -173,10 +174,6 @@ def _create_sportsreference_team_model(
|
|
173
174
|
if entity_identifier == "coaches":
|
174
175
|
coach_url = a_url
|
175
176
|
break
|
176
|
-
if coach_url is None:
|
177
|
-
logging.error(response.text)
|
178
|
-
logging.error(response.url)
|
179
|
-
raise ValueError("coach_url is null")
|
180
177
|
|
181
178
|
o = urlparse(url)
|
182
179
|
sex_id = o.path.split("/")[-2]
|
@@ -226,7 +223,9 @@ def _create_sportsreference_team_model(
|
|
226
223
|
location=None,
|
227
224
|
news=create_google_news_models(name, session, dt, league),
|
228
225
|
social=create_x_social_model(name, session, dt),
|
229
|
-
coaches=[create_sportsreference_coach_model(session, coach_url, dt)]
|
226
|
+
coaches=[create_sportsreference_coach_model(session, coach_url, dt)]
|
227
|
+
if coach_url is not None
|
228
|
+
else [],
|
230
229
|
lbw=None,
|
231
230
|
end_dt=None,
|
232
231
|
)
|
@@ -204,6 +204,7 @@ tests/data/afl/afl/__init__.py
|
|
204
204
|
tests/data/afl/afl/afl_afl_game_model_test.py
|
205
205
|
tests/data/afl/afl/afl_afl_league_model_test.py
|
206
206
|
tests/data/afl/afltables/__init__.py
|
207
|
+
tests/data/afl/afltables/afl_afltables_coach_model_test.py
|
207
208
|
tests/data/afl/afltables/afl_afltables_game_model_test.py
|
208
209
|
tests/data/afl/afltables/afl_afltables_league_model_test.py
|
209
210
|
tests/data/afl/afltables/afl_afltables_player_model_test.py
|
@@ -222,6 +223,7 @@ tests/data/google/google_news_model_test.py
|
|
222
223
|
tests/data/hkjc/__init__.py
|
223
224
|
tests/data/hkjc/hkjc/__init__.py
|
224
225
|
tests/data/hkjc/hkjc/hkjc_hkjc_game_model_test.py
|
226
|
+
tests/data/hkjc/hkjc/hkjc_hkjc_player_model_test.py
|
225
227
|
tests/data/nba/__init__.py
|
226
228
|
tests/data/nba/nba/__init__.py
|
227
229
|
tests/data/nba/nba/nba_nba_game_model_test.py
|
@@ -0,0 +1,30 @@
|
|
1
|
+
"""Tests for the afltables coach model class."""
|
2
|
+
import os
|
3
|
+
import unittest
|
4
|
+
import datetime
|
5
|
+
|
6
|
+
import requests_mock
|
7
|
+
import requests_cache
|
8
|
+
from sportsball.data.afl.afltables.afl_afltables_coach_model import create_afl_afltables_coach_model
|
9
|
+
|
10
|
+
|
11
|
+
class TestAFLTablesCoachModel(unittest.TestCase):
|
12
|
+
|
13
|
+
def setUp(self):
|
14
|
+
self._session = requests_cache.CachedSession(backend="memory")
|
15
|
+
self.dir = os.path.dirname(__file__)
|
16
|
+
|
17
|
+
def test_dt(self):
|
18
|
+
with requests_mock.Mocker() as m:
|
19
|
+
url = "https://afltables.com/afl/stats/coaches/goldcoast.html"
|
20
|
+
with open(os.path.join(self.dir, "coaches_goldcoast.html"), "rb") as f:
|
21
|
+
m.get(url, content=f.read())
|
22
|
+
with open(os.path.join(self.dir, "Guy_McKenna.html"), "rb") as f:
|
23
|
+
m.get("https://afltables.com/afl/stats/coaches/Guy_McKenna.html", content=f.read())
|
24
|
+
coach_model = create_afl_afltables_coach_model(
|
25
|
+
url=url,
|
26
|
+
session=self._session,
|
27
|
+
year=2012,
|
28
|
+
dt=datetime.datetime(2012, 10, 10),
|
29
|
+
)
|
30
|
+
self.assertEqual(coach_model.name, "McKenna, Guy")
|
{sportsball-0.4.1 → sportsball-0.4.3}/tests/data/afl/afltables/afl_afltables_game_model_test.py
RENAMED
@@ -126,6 +126,10 @@ class TestAFLTablesGameModel(unittest.TestCase):
|
|
126
126
|
m.get("https://afltables.com/afl/stats/coaches/John_Worsfold.html", content=f.read())
|
127
127
|
with open(os.path.join(self.dir, "Ross_Lyon.html"), "rb") as f:
|
128
128
|
m.get("https://afltables.com/afl/stats/coaches/Ross_Lyon.html", content=f.read())
|
129
|
+
with open(os.path.join(self.dir, "Andrew_McQualter.html"), "rb") as f:
|
130
|
+
m.get("https://afltables.com/afl/stats/coaches/Andrew_McQualter.html", content=f.read())
|
131
|
+
with open(os.path.join(self.dir, "Justin_Longmuir.html"), "rb") as f:
|
132
|
+
m.get("https://afltables.com/afl/stats/coaches/Justin_Longmuir.html", content=f.read())
|
129
133
|
m.get("https://historical-forecast-api.open-meteo.com/v1/forecast?latitude=-31.9511597&longitude=115.884175&start_date=2025-03-29&end_date=2025-03-30&hourly=temperature_2m&hourly=relative_humidity_2m&hourly=dew_point_2m&hourly=apparent_temperature&hourly=precipitation&hourly=rain&hourly=snowfall&hourly=snow_depth&hourly=weather_code&hourly=pressure_msl&hourly=surface_pressure&hourly=cloud_cover&hourly=cloud_cover_low&hourly=cloud_cover_mid&hourly=cloud_cover_high&hourly=et0_fao_evapotranspiration&hourly=vapour_pressure_deficit&hourly=wind_speed_10m&hourly=wind_speed_100m&hourly=wind_direction_10m&hourly=wind_direction_100m&hourly=wind_gusts_10m&hourly=soil_temperature_0_to_7cm&hourly=soil_temperature_7_to_28cm&hourly=soil_temperature_28_to_100cm&hourly=soil_temperature_100_to_255cm&hourly=soil_moisture_0_to_7cm&hourly=soil_moisture_7_to_28cm&hourly=soil_moisture_28_to_100cm&hourly=soil_moisture_100_to_255cm&daily=weather_code&daily=temperature_2m_max&daily=temperature_2m_min&daily=temperature_2m_mean&daily=apparent_temperature_max&daily=apparent_temperature_min&daily=apparent_temperature_mean&daily=sunrise&daily=sunset&daily=daylight_duration&daily=sunshine_duration&daily=precipitation_sum&daily=rain_sum&daily=snowfall_sum&daily=precipitation_hours&daily=wind_speed_10m_max&daily=wind_gusts_10m_max&daily=wind_direction_10m_dominant&daily=shortwave_radiation_sum&daily=et0_fao_evapotranspiration&timezone=Australia%2FPerth&format=flatbuffers")
|
130
134
|
|
131
135
|
game_model = _create_afl_afltables_game_model(
|
@@ -118,3 +118,15 @@ class TestHKJCHKJCGameModel(unittest.TestCase):
|
|
118
118
|
url="https://racing.hkjc.com/racing/information/English/Racing/LocalResults.aspx?RaceDate=2025/05/26&Racecourse=HV&RaceNo=1",
|
119
119
|
)
|
120
120
|
self.assertIsNone(game_model)
|
121
|
+
|
122
|
+
def test_race_declared_abandoned(self):
|
123
|
+
with requests_mock.Mocker() as m:
|
124
|
+
html = ""
|
125
|
+
with open(os.path.join(self.dir, "game3.html"), "r") as f:
|
126
|
+
html = f.read()
|
127
|
+
game_model = create_hkjc_hkjc_game_model(
|
128
|
+
session=self._session,
|
129
|
+
html=html,
|
130
|
+
url="https://racing.hkjc.com/racing/information/English/Racing/LocalResults.aspx?RaceDate=2024%2F11%2F13&RaceNo=7&Racecourse=HV",
|
131
|
+
)
|
132
|
+
self.assertIsNone(game_model)
|
@@ -0,0 +1,29 @@
|
|
1
|
+
"""Tests for the HKJC HKJC player model class."""
|
2
|
+
import os
|
3
|
+
import unittest
|
4
|
+
|
5
|
+
import requests_mock
|
6
|
+
import requests_cache
|
7
|
+
from sportsball.data.hkjc.hkjc.hkjc_hkjc_player_model import create_hkjc_hkjc_player_model
|
8
|
+
|
9
|
+
|
10
|
+
class TestHKJCHKJCPlayerModel(unittest.TestCase):
|
11
|
+
|
12
|
+
def setUp(self):
|
13
|
+
self._session = requests_cache.CachedSession(backend="memory")
|
14
|
+
self.dir = os.path.dirname(__file__)
|
15
|
+
|
16
|
+
def test_no_table_for_sire(self):
|
17
|
+
with requests_mock.Mocker() as m:
|
18
|
+
url = "https://racing.hkjc.com/racing/information/english/Horse/SameSire.aspx?HorseSire=Nyquist"
|
19
|
+
with open(os.path.join(self.dir, "sire_nyquist_2.html"), "rb") as f:
|
20
|
+
m.get(url, content=f.read())
|
21
|
+
player_model = create_hkjc_hkjc_player_model(
|
22
|
+
session=self._session,
|
23
|
+
url=url,
|
24
|
+
jersey=None,
|
25
|
+
handicap_weight=None,
|
26
|
+
starting_position=None,
|
27
|
+
weight=None,
|
28
|
+
)
|
29
|
+
self.assertEqual(player_model.name, "Nyquist")
|
{sportsball-0.4.1 → sportsball-0.4.3}/tests/data/sportsreference/sportsreference_team_model_test.py
RENAMED
@@ -218,3 +218,27 @@ class TestSportsReferenceTeamModel(unittest.TestCase):
|
|
218
218
|
{},
|
219
219
|
)
|
220
220
|
self.assertEqual(team_model.name, "Boston Celtics")
|
221
|
+
|
222
|
+
def test_coach_url_null(self):
|
223
|
+
url = "https://www.basketball-reference.com/teams/GSW/2016.html"
|
224
|
+
with requests_mock.Mocker() as m:
|
225
|
+
with open(os.path.join(self.dir, "GSW_2016_2.html"), "rb") as f:
|
226
|
+
m.get(url, content=f.read())
|
227
|
+
with open(os.path.join(self.dir, "kerrst01c.html"), "rb") as f:
|
228
|
+
m.get("https://www.basketball-reference.com/coaches/kerrst01c.html", content=f.read())
|
229
|
+
team_model = create_sportsreference_team_model(
|
230
|
+
session=self.session,
|
231
|
+
url=url,
|
232
|
+
dt=datetime.datetime(2010, 10, 10, 10, 10, 00),
|
233
|
+
league=League.NBA,
|
234
|
+
player_urls=set(),
|
235
|
+
points=10.0,
|
236
|
+
fg={},
|
237
|
+
fga={},
|
238
|
+
offensive_rebounds={},
|
239
|
+
assists={},
|
240
|
+
turnovers={},
|
241
|
+
team_name="",
|
242
|
+
positions_validator={},
|
243
|
+
)
|
244
|
+
self.assertListEqual(team_model.coaches, [])
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
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.4.1 → sportsball-0.4.3}/sportsball/data/afl/afltables/afl_afltables_game_model.py
RENAMED
File without changes
|
{sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/afltables/afl_afltables_league_model.py
RENAMED
File without changes
|
{sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/afltables/afl_afltables_player_model.py
RENAMED
File without changes
|
{sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/afltables/afl_afltables_team_model.py
RENAMED
File without changes
|
{sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/afltables/afl_afltables_venue_model.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/combined/afl_combined_league_model.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{sportsball-0.4.1 → sportsball-0.4.3}/sportsball/data/afl/oddsportal/afl_oddsportal_league_model.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|