sportsball 0.3.60__tar.gz → 0.3.62__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sportsball-0.3.60/sportsball.egg-info → sportsball-0.3.62}/PKG-INFO +1 -1
- {sportsball-0.3.60 → sportsball-0.3.62}/setup.py +1 -1
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/__init__.py +1 -1
- sportsball-0.3.62/sportsball/data/afl/afl/afl_afl_league_model.py +137 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/afl/combined/afl_combined_league_model.py +3 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/google/google_address_model.py +20 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/sportsreference/sportsreference_game_model.py +26 -18
- {sportsball-0.3.60 → sportsball-0.3.62/sportsball.egg-info}/PKG-INFO +1 -1
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball.egg-info/SOURCES.txt +2 -0
- sportsball-0.3.62/tests/data/afl/afl/afl_afl_league_model_test.py +37 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/sportsreference/sportsreference_game_model_test.py +14 -0
- sportsball-0.3.62/tests/data/x/__init__.py +0 -0
- sportsball-0.3.60/sportsball/data/afl/afl/afl_afl_league_model.py +0 -132
- {sportsball-0.3.60 → sportsball-0.3.62}/LICENSE +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/MANIFEST.in +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/README.md +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/requirements.txt +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/setup.cfg +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/__main__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/args.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/cache.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/address_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/afl/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/afl/afl/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/afl/afl/afl_afl_game_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/afl/afl/afl_afl_player_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/afl/afl/afl_afl_team_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/afl/afl/afl_afl_venue_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/afl/afltables/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/afl/afltables/afl_afltables_game_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/afl/afltables/afl_afltables_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/afl/afltables/afl_afltables_player_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/afl/afltables/afl_afltables_team_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/afl/afltables/afl_afltables_venue_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/afl/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/afl/aussportsbetting/afl_aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/afl/combined/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/afl/espn/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/afl/espn/afl_espn_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/afl/oddsportal/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/afl/oddsportal/afl_oddsportal_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/aussportsbetting/aussportsbetting_bookie_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/aussportsbetting/aussportsbetting_game_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/aussportsbetting/aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/aussportsbetting/aussportsbetting_odds_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/aussportsbetting/aussportsbetting_team_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/aussportsbetting/aussportsbetting_venue_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/bookie_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/combined/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/combined/combined_address_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/combined/combined_game_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/combined/combined_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/combined/combined_player_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/combined/combined_team_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/combined/combined_venue_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/combined/combined_weather_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/espn/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/espn/espn_bookie_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/espn/espn_game_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/espn/espn_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/espn/espn_odds_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/espn/espn_player_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/espn/espn_team_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/espn/espn_venue_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/field_type.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/game_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/google/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/google/google_news_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/league.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/nba/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/nba/combined/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/nba/combined/nba_combined_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/nba/espn/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/nba/espn/nba_espn_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/nba/nba/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/nba/nba/nba_nba_game_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/nba/nba/nba_nba_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/nba/nba/nba_nba_team_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/nba/oddsportal/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/nba/oddsportal/nba_oddsportal_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/nba/sportsdb/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/nba/sportsdb/nba_sportsdb_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/nba/sportsreference/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/nba/sportsreference/nba_sportsreference_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/ncaab/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/ncaab/combined/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/ncaab/combined/ncaab_combined_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/ncaab/espn/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/ncaab/espn/ncaab_espn_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/ncaab/oddsportal/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/ncaab/oddsportal/ncaab_oddsportal_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/ncaab/sportsreference/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/ncaab/sportsreference/ncaab_sportsreference_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/ncaaf/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/ncaaf/combined/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/ncaaf/combined/ncaaf_combined_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/ncaaf/espn/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/ncaaf/espn/ncaaf_espn_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/ncaaf/oddsportal/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/ncaaf/oddsportal/ncaaf_oddsportal_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/news_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/nfl/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/nfl/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/nfl/aussportsbetting/nfl_aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/nfl/combined/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/nfl/combined/nfl_combined_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/nfl/espn/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/nfl/espn/nfl_espn_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/nfl/oddsportal/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/nfl/oddsportal/nfl_oddsportal_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/nfl/sportsdb/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/nfl/sportsdb/nfl_sportsdb_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/odds_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/oddsportal/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/oddsportal/decrypt.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/oddsportal/oddsportal_bookie_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/oddsportal/oddsportal_game_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/oddsportal/oddsportal_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/oddsportal/oddsportal_odds_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/oddsportal/oddsportal_team_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/oddsportal/oddsportal_venue_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/player_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/season_type.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/social_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/sportsdb/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/sportsdb/sportsdb_game_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/sportsdb/sportsdb_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/sportsdb/sportsdb_team_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/sportsdb/sportsdb_venue_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/sportsreference/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/sportsreference/sportsreference_league_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/sportsreference/sportsreference_player_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/sportsreference/sportsreference_team_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/sportsreference/sportsreference_venue_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/team_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/venue_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/weather/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/weather/gribstream/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/weather/gribstream/gribstream_weather_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/weather/multi_weather_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/weather/openmeteo/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/weather/openmeteo/openmeteo_weather_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/weather_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/wikipedia/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/wikipedia/wikipedia_venue_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/x/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/x/x_social_model.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/logger.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/loglevel.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/playwright.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/proxy_session.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/session.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/sportsball.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/vendor/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball/vendor/pygooglenews/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball.egg-info/dependency_links.txt +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball.egg-info/entry_points.txt +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball.egg-info/not-zip-safe +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball.egg-info/requires.txt +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/sportsball.egg-info/top_level.txt +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/afl/__init__.py +0 -0
- {sportsball-0.3.60/tests/data/afl/afltables → sportsball-0.3.62/tests/data/afl/afl}/__init__.py +0 -0
- {sportsball-0.3.60/tests/data/aussportsbetting → sportsball-0.3.62/tests/data/afl/afltables}/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/afl/afltables/afl_afltables_game_model_test.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/afl/afltables/afl_afltables_league_model_test.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/afl/afltables/afl_afltables_player_model_test.py +0 -0
- {sportsball-0.3.60/tests/data/combined → sportsball-0.3.62/tests/data/aussportsbetting}/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/aussportsbetting/aussportsbetting_game_model_test.py +0 -0
- {sportsball-0.3.60/tests/data/espn → sportsball-0.3.62/tests/data/combined}/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/combined/combined_game_model_test.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/combined/combined_player_model_test.py +0 -0
- {sportsball-0.3.60/tests/data/google → sportsball-0.3.62/tests/data/espn}/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/espn/espn_game_model_test.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/espn/espn_player_model_test.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/game_model_test.py +0 -0
- {sportsball-0.3.60/tests/data/nba → sportsball-0.3.62/tests/data/google}/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/google/google_address_model_test.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/google/google_news_model_test.py +0 -0
- {sportsball-0.3.60/tests/data/nba → sportsball-0.3.62/tests/data}/nba/__init__.py +0 -0
- {sportsball-0.3.60/tests/data/nba/sportsdb → sportsball-0.3.62/tests/data/nba/nba}/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/nba/nba/nba_nba_game_model_test.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/nba/nba/nba_nba_league_model_test.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/nba/nba/nba_nba_team_model_test.py +0 -0
- {sportsball-0.3.60/tests/data/nba/sportsreference → sportsball-0.3.62/tests/data/nba/sportsdb}/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/nba/sportsdb/nba_sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.60/tests/data/ncaab → sportsball-0.3.62/tests/data/nba/sportsreference}/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/nba/sportsreference/nba_sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.60/tests/data/ncaab/sportsreference → sportsball-0.3.62/tests/data/ncaab}/__init__.py +0 -0
- {sportsball-0.3.60/tests/data/nfl → sportsball-0.3.62/tests/data/ncaab/sportsreference}/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/ncaab/sportsreference/ncaab_sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.60/tests/data/nfl/sportsdb → sportsball-0.3.62/tests/data/nfl}/__init__.py +0 -0
- {sportsball-0.3.60/tests/data/oddsportal → sportsball-0.3.62/tests/data/nfl/sportsdb}/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/nfl/sportsdb/nfl_sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.60/tests/data/sportsdb → sportsball-0.3.62/tests/data/oddsportal}/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/oddsportal/decrypt_test.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/oddsportal/oddsportal_game_model_test.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/oddsportal/oddsportal_league_model_test.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/player_model_test.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/social_model_test.py +0 -0
- {sportsball-0.3.60/tests/data/sportsreference → sportsball-0.3.62/tests/data/sportsdb}/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/sportsdb/sportsdb_game_model_test.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/sportsdb/sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/sportsdb/sportsdb_team_model_test.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/sportsdb/sportsdb_venue_model_test.py +0 -0
- {sportsball-0.3.60/tests/data/x → sportsball-0.3.62/tests/data/sportsreference}/__init__.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/sportsreference/sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/sportsreference/sportsreference_player_model_test.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/sportsreference/sportsreference_team_model_test.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/sportsreference/sportsreference_venue_model_test.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/team_model_test.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/data/x/x_social_model_test.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/proxy_session_test.py +0 -0
- {sportsball-0.3.60 → sportsball-0.3.62}/tests/sportsball_test.py +0 -0
@@ -26,7 +26,7 @@ def install_requires() -> typing.List[str]:
|
|
26
26
|
|
27
27
|
setup(
|
28
28
|
name='sportsball',
|
29
|
-
version='0.3.
|
29
|
+
version='0.3.62',
|
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',
|
@@ -0,0 +1,137 @@
|
|
1
|
+
"""AFL AFL league model."""
|
2
|
+
|
3
|
+
# pylint: disable=too-many-statements,protected-access,too-many-locals,bare-except,too-many-branches
|
4
|
+
import datetime
|
5
|
+
import logging
|
6
|
+
import re
|
7
|
+
from typing import Iterator
|
8
|
+
|
9
|
+
import requests_cache
|
10
|
+
from bs4 import BeautifulSoup
|
11
|
+
from playwright.sync_api import sync_playwright
|
12
|
+
|
13
|
+
from ....playwright import ensure_install
|
14
|
+
from ...game_model import GameModel
|
15
|
+
from ...league import League
|
16
|
+
from ...league_model import LeagueModel
|
17
|
+
from .afl_afl_game_model import create_afl_afl_game_model
|
18
|
+
|
19
|
+
|
20
|
+
def _parse_game_info(
|
21
|
+
html: str, session: requests_cache.CachedSession, ladder: list[str]
|
22
|
+
) -> Iterator[GameModel]:
|
23
|
+
soup = BeautifulSoup(html, "lxml")
|
24
|
+
for div in soup.find_all("div", {"class": re.compile(".*js-match-list-item.*")}):
|
25
|
+
team_names = []
|
26
|
+
for span in div.find_all(
|
27
|
+
"span", {"class": re.compile(".*team-lineups__team-name.*")}
|
28
|
+
):
|
29
|
+
team_names.append(span.get_text().strip())
|
30
|
+
teams_players: list[list[tuple[str, str, str, str]]] = [[], []]
|
31
|
+
for div_positions_row in div.find_all(
|
32
|
+
"div", {"class": re.compile(".*team-lineups__positions-row.*")}
|
33
|
+
):
|
34
|
+
row_players: list[list[tuple[str, str, str, str]]] = []
|
35
|
+
for div_team_players in div_positions_row.find_all(
|
36
|
+
"div",
|
37
|
+
{"class": re.compile(".*team-lineups__positions-players.*")},
|
38
|
+
):
|
39
|
+
team_players: list[tuple[str, str, str, str]] = []
|
40
|
+
for a in div_team_players.find_all(
|
41
|
+
"a", {"class": re.compile(".*js-player-profile-link.*")}
|
42
|
+
):
|
43
|
+
player_id = "afl:" + a.get("data-player-id")
|
44
|
+
first_name = a.get("data-first-name")
|
45
|
+
second_name = a.get("data-surname")
|
46
|
+
player_number = None
|
47
|
+
for span_player_number in a.find_all(
|
48
|
+
"span",
|
49
|
+
{"class": re.compile(".*team-lineups__player-number.*")},
|
50
|
+
):
|
51
|
+
player_number = (
|
52
|
+
span_player_number.get_text()
|
53
|
+
.strip()
|
54
|
+
.replace("[", "")
|
55
|
+
.replace("]", "")
|
56
|
+
)
|
57
|
+
if player_number is None:
|
58
|
+
raise ValueError("player_number is null")
|
59
|
+
team_players.append(
|
60
|
+
(player_id, player_number, first_name, second_name)
|
61
|
+
)
|
62
|
+
row_players.append(team_players)
|
63
|
+
if len(row_players) >= 2:
|
64
|
+
break
|
65
|
+
for count, row_players_list in enumerate(row_players):
|
66
|
+
try:
|
67
|
+
teams_players[count].extend(row_players_list)
|
68
|
+
except IndexError as exc:
|
69
|
+
# logging.error(html)
|
70
|
+
logging.error(len(team_players))
|
71
|
+
logging.error(count)
|
72
|
+
raise exc
|
73
|
+
dt = None
|
74
|
+
for time in div.find_all(
|
75
|
+
"time", {"class": re.compile(".*match-list-alt__header-time.*")}
|
76
|
+
):
|
77
|
+
dt = datetime.datetime.fromtimestamp(float(time.get("data-date")) / 1000.0)
|
78
|
+
venue_name: str | None = None
|
79
|
+
for span in div.find_all(
|
80
|
+
"span", {"class": re.compile(".*match-list-alt__header-venue.*")}
|
81
|
+
):
|
82
|
+
venue_name = span.get_text().strip().replace(",", "")
|
83
|
+
if venue_name is None:
|
84
|
+
raise ValueError("venue_name is null")
|
85
|
+
if dt is None:
|
86
|
+
raise ValueError("dt is null")
|
87
|
+
yield create_afl_afl_game_model(
|
88
|
+
team_names, teams_players, dt, venue_name, session, ladder
|
89
|
+
)
|
90
|
+
|
91
|
+
|
92
|
+
class AFLAFLLeagueModel(LeagueModel):
|
93
|
+
"""AFL AFL implementation of the league model."""
|
94
|
+
|
95
|
+
def __init__(
|
96
|
+
self, session: requests_cache.CachedSession, position: int | None = None
|
97
|
+
) -> None:
|
98
|
+
super().__init__(League.AFL, session)
|
99
|
+
|
100
|
+
@property
|
101
|
+
def _ladder(self) -> list[str]:
|
102
|
+
ladder = []
|
103
|
+
ensure_install()
|
104
|
+
with sync_playwright() as p:
|
105
|
+
browser = p.chromium.launch()
|
106
|
+
context = browser.new_context()
|
107
|
+
page = context.new_page()
|
108
|
+
try:
|
109
|
+
page.goto(
|
110
|
+
"https://www.afl.com.au/ladder",
|
111
|
+
wait_until="networkidle",
|
112
|
+
timeout=60000.0,
|
113
|
+
)
|
114
|
+
except: # noqa: E722
|
115
|
+
logging.warning("Ladder URL timed out.")
|
116
|
+
soup = BeautifulSoup(page.content(), "lxml")
|
117
|
+
for span in soup.find_all(
|
118
|
+
"span", {"class": re.compile(".*stats-table__club-name.*")}
|
119
|
+
):
|
120
|
+
team_name = span.get_text().strip()
|
121
|
+
if team_name in ladder:
|
122
|
+
continue
|
123
|
+
ladder.append(team_name)
|
124
|
+
return ladder
|
125
|
+
|
126
|
+
@property
|
127
|
+
def games(self) -> Iterator[GameModel]:
|
128
|
+
ladder = self._ladder
|
129
|
+
ensure_install()
|
130
|
+
with sync_playwright() as p:
|
131
|
+
browser = p.chromium.launch()
|
132
|
+
context = browser.new_context()
|
133
|
+
page = context.new_page()
|
134
|
+
page.goto(
|
135
|
+
"https://www.afl.com.au/matches/team-lineups", wait_until="networkidle"
|
136
|
+
)
|
137
|
+
yield from _parse_game_info(page.content(), self.session, ladder)
|
{sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/afl/combined/afl_combined_league_model.py
RENAMED
@@ -88,6 +88,9 @@ AFL_TEAM_IDENTITY_MAP = {
|
|
88
88
|
"Fremantle Dockers": FREMANTLE,
|
89
89
|
"West Coast Eagles": WESTCOAST,
|
90
90
|
"Gold Coast Suns": GOLDCOAST,
|
91
|
+
# AFL
|
92
|
+
"GWS GIANTS": GWS,
|
93
|
+
"Gold Coast SUNS": GOLDCOAST,
|
91
94
|
}
|
92
95
|
BRUNSWICK_ST = "brunswick_st"
|
93
96
|
VICTORIA_PARK = "victoria_park"
|
@@ -12738,6 +12738,26 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
12738
12738
|
housenumber="300",
|
12739
12739
|
country="USA",
|
12740
12740
|
),
|
12741
|
+
"Boone, North Carolina": SportsballGeocodeTuple(
|
12742
|
+
city="Boone",
|
12743
|
+
state="NC",
|
12744
|
+
postal="",
|
12745
|
+
lat=36.211111,
|
12746
|
+
lng=-81.666944,
|
12747
|
+
housenumber="",
|
12748
|
+
country="USA",
|
12749
|
+
),
|
12750
|
+
"FedExForum - Memphis, Tennessee - United States": FEDEX_FORUM,
|
12751
|
+
"Kia Center, Orlando, FL, EUA": KIA_CENTER,
|
12752
|
+
"Davis Field House, Greenville, South Carolina": SportsballGeocodeTuple(
|
12753
|
+
city="Greenville",
|
12754
|
+
state="SC",
|
12755
|
+
postal="",
|
12756
|
+
lat=34.8725,
|
12757
|
+
lng=-82.361944,
|
12758
|
+
housenumber="",
|
12759
|
+
country="USA",
|
12760
|
+
),
|
12741
12761
|
}
|
12742
12762
|
|
12743
12763
|
|
@@ -178,28 +178,36 @@ def _find_old_dt(
|
|
178
178
|
if len(df) == 2:
|
179
179
|
test_row = df.iat[0, 0]
|
180
180
|
test_row_2 = df.iat[1, 0]
|
181
|
+
if isinstance(test_row, float):
|
182
|
+
continue
|
181
183
|
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
dt = parse(" ".join(date_venue_split[:current_idx]))
|
192
|
-
except dateutil.parser._parser.ParserError: # type: ignore
|
184
|
+
try:
|
185
|
+
if (
|
186
|
+
"Prev Game" in test_row
|
187
|
+
or "Next Game" in test_row
|
188
|
+
or "Lost" in test_row
|
189
|
+
or "PM," in test_row_2
|
190
|
+
):
|
191
|
+
date_venue_split = df.iat[1, 0].split()
|
192
|
+
current_idx = 5
|
193
193
|
try:
|
194
|
-
current_idx = 3
|
195
194
|
dt = parse(" ".join(date_venue_split[:current_idx]))
|
196
195
|
except dateutil.parser._parser.ParserError: # type: ignore
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
196
|
+
try:
|
197
|
+
current_idx = 3
|
198
|
+
dt = parse(" ".join(date_venue_split[:current_idx]))
|
199
|
+
except dateutil.parser._parser.ParserError: # type: ignore
|
200
|
+
dt = parse(
|
201
|
+
" ".join(",".join(test_row.split(",")[1:]).split()[:3])
|
202
|
+
)
|
203
|
+
venue_name = " ".join(date_venue_split[current_idx:])
|
204
|
+
_process_team_row(df)
|
205
|
+
break
|
206
|
+
except TypeError as exc:
|
207
|
+
logging.error(test_row)
|
208
|
+
logging.error(response.url)
|
209
|
+
logging.error(response.text)
|
210
|
+
raise exc
|
203
211
|
|
204
212
|
if dt is None:
|
205
213
|
title_tag = soup.find("title")
|
@@ -165,6 +165,8 @@ tests/data/player_model_test.py
|
|
165
165
|
tests/data/social_model_test.py
|
166
166
|
tests/data/team_model_test.py
|
167
167
|
tests/data/afl/__init__.py
|
168
|
+
tests/data/afl/afl/__init__.py
|
169
|
+
tests/data/afl/afl/afl_afl_league_model_test.py
|
168
170
|
tests/data/afl/afltables/__init__.py
|
169
171
|
tests/data/afl/afltables/afl_afltables_game_model_test.py
|
170
172
|
tests/data/afl/afltables/afl_afltables_league_model_test.py
|
@@ -0,0 +1,37 @@
|
|
1
|
+
"""Tests for the afl AFL league model class."""
|
2
|
+
import unittest
|
3
|
+
import os
|
4
|
+
import datetime
|
5
|
+
|
6
|
+
import requests_cache
|
7
|
+
from sportsball.data.afl.afl.afl_afl_league_model import _parse_game_info
|
8
|
+
|
9
|
+
|
10
|
+
class TestAFLAFLLeagueModel(unittest.TestCase):
|
11
|
+
|
12
|
+
def setUp(self):
|
13
|
+
self.dir = os.path.dirname(__file__)
|
14
|
+
self._session = requests_cache.CachedSession(backend="memory")
|
15
|
+
|
16
|
+
def test_parse_game_info(self):
|
17
|
+
with open(os.path.join(self.dir, "team-lineups.html")) as handle:
|
18
|
+
list(_parse_game_info(handle.read(), self._session, [
|
19
|
+
"Melbourne",
|
20
|
+
"Richmond",
|
21
|
+
"Collingwood",
|
22
|
+
"Essendon",
|
23
|
+
"Fremantle",
|
24
|
+
"Adelaide Crows",
|
25
|
+
"St Kilda",
|
26
|
+
"Brisbane Lions",
|
27
|
+
"Port Adelaide",
|
28
|
+
"North Melbourne",
|
29
|
+
"GWS GIANTS",
|
30
|
+
"Western Bulldogs",
|
31
|
+
"Gold Coast SUNS",
|
32
|
+
"Sydney Swans",
|
33
|
+
"Carlton",
|
34
|
+
"Geelong Cats",
|
35
|
+
"Hawthorn",
|
36
|
+
"West Coast Eagles",
|
37
|
+
]))
|
@@ -1019,3 +1019,17 @@ class TestSportsReferenceGameModel(unittest.TestCase):
|
|
1019
1019
|
datetime.datetime(2010, 10, 10, 10, 10, 0),
|
1020
1020
|
)
|
1021
1021
|
self.assertEqual(game_model.dt, datetime.datetime(2016, 2, 23, 0, 0))
|
1022
|
+
|
1023
|
+
def test_dt_old_style_21(self):
|
1024
|
+
url = "https://www.sports-reference.com/cbb/boxscores/2015-11-23-detroit-mercy.html"
|
1025
|
+
with requests_mock.Mocker() as m:
|
1026
|
+
with open(os.path.join(self.dir, "2015-11-23-detroit-mercy.html"), "rb") as f:
|
1027
|
+
m.get(url, content=f.read())
|
1028
|
+
|
1029
|
+
game_model = create_sportsreference_game_model(
|
1030
|
+
self.session,
|
1031
|
+
url,
|
1032
|
+
League.NBA,
|
1033
|
+
datetime.datetime(2010, 10, 10, 10, 10, 0),
|
1034
|
+
)
|
1035
|
+
self.assertEqual(game_model.dt, datetime.datetime(2015, 11, 23, 0, 0))
|
File without changes
|
@@ -1,132 +0,0 @@
|
|
1
|
-
"""AFL AFL league model."""
|
2
|
-
|
3
|
-
# pylint: disable=too-many-statements,protected-access,too-many-locals,bare-except
|
4
|
-
import datetime
|
5
|
-
import logging
|
6
|
-
import re
|
7
|
-
from typing import Iterator
|
8
|
-
|
9
|
-
import requests_cache
|
10
|
-
from bs4 import BeautifulSoup
|
11
|
-
from playwright.sync_api import sync_playwright
|
12
|
-
|
13
|
-
from ....playwright import ensure_install
|
14
|
-
from ...game_model import GameModel
|
15
|
-
from ...league import League
|
16
|
-
from ...league_model import LeagueModel
|
17
|
-
from .afl_afl_game_model import create_afl_afl_game_model
|
18
|
-
|
19
|
-
|
20
|
-
class AFLAFLLeagueModel(LeagueModel):
|
21
|
-
"""AFL AFL implementation of the league model."""
|
22
|
-
|
23
|
-
def __init__(
|
24
|
-
self, session: requests_cache.CachedSession, position: int | None = None
|
25
|
-
) -> None:
|
26
|
-
super().__init__(League.AFL, session)
|
27
|
-
|
28
|
-
@property
|
29
|
-
def _ladder(self) -> list[str]:
|
30
|
-
ladder = []
|
31
|
-
ensure_install()
|
32
|
-
with sync_playwright() as p:
|
33
|
-
browser = p.chromium.launch()
|
34
|
-
context = browser.new_context()
|
35
|
-
page = context.new_page()
|
36
|
-
try:
|
37
|
-
page.goto(
|
38
|
-
"https://www.afl.com.au/ladder",
|
39
|
-
wait_until="networkidle",
|
40
|
-
timeout=60000.0,
|
41
|
-
)
|
42
|
-
except: # noqa: E722
|
43
|
-
logging.warning("Ladder URL timed out.")
|
44
|
-
soup = BeautifulSoup(page.content(), "lxml")
|
45
|
-
for span in soup.find_all(
|
46
|
-
"span", {"class": re.compile(".*stats-table__club-name.*")}
|
47
|
-
):
|
48
|
-
team_name = span.get_text().strip()
|
49
|
-
if team_name in ladder:
|
50
|
-
continue
|
51
|
-
ladder.append(team_name)
|
52
|
-
return ladder
|
53
|
-
|
54
|
-
@property
|
55
|
-
def games(self) -> Iterator[GameModel]:
|
56
|
-
# https://www.afl.com.au/matches/team-lineups
|
57
|
-
ladder = self._ladder
|
58
|
-
ensure_install()
|
59
|
-
with sync_playwright() as p:
|
60
|
-
browser = p.chromium.launch()
|
61
|
-
context = browser.new_context()
|
62
|
-
page = context.new_page()
|
63
|
-
page.goto(
|
64
|
-
"https://www.afl.com.au/matches/team-lineups", wait_until="networkidle"
|
65
|
-
)
|
66
|
-
soup = BeautifulSoup(page.content(), "lxml")
|
67
|
-
for div in soup.find_all(
|
68
|
-
"div", {"class": re.compile(".*js-match-list-item.*")}
|
69
|
-
):
|
70
|
-
team_names = []
|
71
|
-
for span in div.find_all(
|
72
|
-
"span", {"class": re.compile(".*team-lineups__team-name.*")}
|
73
|
-
):
|
74
|
-
team_names.append(span.get_text().strip())
|
75
|
-
teams_players: list[list[tuple[str, str, str, str]]] = [[], []]
|
76
|
-
for div_positions_row in div.find_all(
|
77
|
-
"div", {"class": re.compile(".*team-lineups__positions-row.*")}
|
78
|
-
):
|
79
|
-
row_players: list[list[tuple[str, str, str, str]]] = []
|
80
|
-
for div_team_players in div_positions_row.find_all(
|
81
|
-
"div",
|
82
|
-
{"class": re.compile(".*team-lineups__positions-players.*")},
|
83
|
-
):
|
84
|
-
team_players: list[tuple[str, str, str, str]] = []
|
85
|
-
for a in div_team_players.find_all(
|
86
|
-
"a", {"class": re.compile(".*js-player-profile-link.*")}
|
87
|
-
):
|
88
|
-
player_id = "afl:" + a.get("data-player-id")
|
89
|
-
first_name = a.get("data-first-name")
|
90
|
-
second_name = a.get("data-surname")
|
91
|
-
player_number = None
|
92
|
-
for span_player_number in a.find_all(
|
93
|
-
"span",
|
94
|
-
{
|
95
|
-
"class": re.compile(
|
96
|
-
".*team-lineups__player-number.*"
|
97
|
-
)
|
98
|
-
},
|
99
|
-
):
|
100
|
-
player_number = (
|
101
|
-
span_player_number.get_text()
|
102
|
-
.strip()
|
103
|
-
.replace("[", "")
|
104
|
-
.replace("]", "")
|
105
|
-
)
|
106
|
-
if player_number is None:
|
107
|
-
raise ValueError("player_number is null")
|
108
|
-
team_players.append(
|
109
|
-
(player_id, player_number, first_name, second_name)
|
110
|
-
)
|
111
|
-
row_players.append(team_players)
|
112
|
-
for count, row_players_list in enumerate(row_players):
|
113
|
-
teams_players[count].extend(row_players_list)
|
114
|
-
dt = None
|
115
|
-
for time in div.find_all(
|
116
|
-
"time", {"class": re.compile(".*match-list-alt__header-time.*")}
|
117
|
-
):
|
118
|
-
dt = datetime.datetime.fromtimestamp(
|
119
|
-
float(time.get("data-date")) / 1000.0
|
120
|
-
)
|
121
|
-
venue_name: str | None = None
|
122
|
-
for span in div.find_all(
|
123
|
-
"span", {"class": re.compile(".*match-list-alt__header-venue.*")}
|
124
|
-
):
|
125
|
-
venue_name = span.get_text().strip().replace(",", "")
|
126
|
-
if venue_name is None:
|
127
|
-
raise ValueError("venue_name is null")
|
128
|
-
if dt is None:
|
129
|
-
raise ValueError("dt is null")
|
130
|
-
yield create_afl_afl_game_model(
|
131
|
-
team_names, teams_players, dt, venue_name, self.session, ladder
|
132
|
-
)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/afl/afltables/afl_afltables_game_model.py
RENAMED
File without changes
|
{sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/afl/afltables/afl_afltables_league_model.py
RENAMED
File without changes
|
{sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/afl/afltables/afl_afltables_player_model.py
RENAMED
File without changes
|
{sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/afl/afltables/afl_afltables_team_model.py
RENAMED
File without changes
|
{sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/afl/afltables/afl_afltables_venue_model.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{sportsball-0.3.60 → sportsball-0.3.62}/sportsball/data/nba/combined/nba_combined_league_model.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|