sportsball 0.3.37__tar.gz → 0.3.39__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.37/sportsball.egg-info → sportsball-0.3.39}/PKG-INFO +7 -1
- {sportsball-0.3.37 → sportsball-0.3.39}/README.md +5 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/requirements.txt +1 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/setup.py +1 -1
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/__init__.py +1 -1
- sportsball-0.3.39/sportsball/data/afl/afl/afl_afl_game_model.py +40 -0
- sportsball-0.3.39/sportsball/data/afl/afl/afl_afl_league_model.py +87 -0
- sportsball-0.3.39/sportsball/data/afl/afl/afl_afl_player_model.py +22 -0
- sportsball-0.3.39/sportsball/data/afl/afl/afl_afl_team_model.py +41 -0
- sportsball-0.3.39/sportsball/data/afl/afl/afl_afl_venue_model.py +25 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/afl/afltables/afl_afltables_player_model.py +1 -1
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/afl/combined/afl_combined_league_model.py +8 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/aussportsbetting/aussportsbetting_game_model.py +1 -1
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/combined/combined_game_model.py +4 -2
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/combined/combined_league_model.py +8 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/combined/combined_team_model.py +11 -1
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/google/google_address_model.py +99 -27
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/nba/combined/nba_combined_league_model.py +5 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/ncaab/combined/ncaab_combined_league_model.py +5 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/ncaaf/combined/ncaaf_combined_league_model.py +5 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/nfl/combined/nfl_combined_league_model.py +5 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/sportsreference/sportsreference_venue_model.py +1 -0
- sportsball-0.3.39/sportsball/playwright.py +20 -0
- {sportsball-0.3.37 → sportsball-0.3.39/sportsball.egg-info}/PKG-INFO +7 -1
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball.egg-info/SOURCES.txt +7 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball.egg-info/requires.txt +1 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/combined/combined_game_model_test.py +1 -0
- sportsball-0.3.39/tests/data/x/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/LICENSE +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/MANIFEST.in +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/setup.cfg +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/__main__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/args.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/cache.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/address_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/afl/__init__.py +0 -0
- {sportsball-0.3.37/sportsball/data/afl/aussportsbetting → sportsball-0.3.39/sportsball/data/afl/afl}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/afl/afltables/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/afl/afltables/afl_afltables_game_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/afl/afltables/afl_afltables_league_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/afl/afltables/afl_afltables_team_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/afl/afltables/afl_afltables_venue_model.py +0 -0
- {sportsball-0.3.37/sportsball/data/afl/combined → sportsball-0.3.39/sportsball/data/afl/aussportsbetting}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/afl/aussportsbetting/afl_aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.37/sportsball/data/afl/espn → sportsball-0.3.39/sportsball/data/afl/combined}/__init__.py +0 -0
- {sportsball-0.3.37/sportsball/data/afl/oddsportal → sportsball-0.3.39/sportsball/data/afl/espn}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/afl/espn/afl_espn_league_model.py +0 -0
- {sportsball-0.3.37/sportsball/data/aussportsbetting → sportsball-0.3.39/sportsball/data/afl/oddsportal}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/afl/oddsportal/afl_oddsportal_league_model.py +0 -0
- {sportsball-0.3.37/sportsball/data/combined → sportsball-0.3.39/sportsball/data/aussportsbetting}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/aussportsbetting/aussportsbetting_bookie_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/aussportsbetting/aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/aussportsbetting/aussportsbetting_odds_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/aussportsbetting/aussportsbetting_team_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/aussportsbetting/aussportsbetting_venue_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/bookie_model.py +0 -0
- {sportsball-0.3.37/sportsball/data/espn → sportsball-0.3.39/sportsball/data/combined}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/combined/combined_address_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/combined/combined_player_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/combined/combined_venue_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/combined/combined_weather_model.py +0 -0
- {sportsball-0.3.37/sportsball/data/google → sportsball-0.3.39/sportsball/data/espn}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/espn/espn_bookie_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/espn/espn_game_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/espn/espn_league_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/espn/espn_odds_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/espn/espn_player_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/espn/espn_team_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/espn/espn_venue_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/field_type.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/game_model.py +0 -0
- {sportsball-0.3.37/sportsball/data/nba/combined → sportsball-0.3.39/sportsball/data/google}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/google/google_news_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/league.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/league_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/nba/__init__.py +0 -0
- {sportsball-0.3.37/sportsball/data/nba/espn → sportsball-0.3.39/sportsball/data/nba/combined}/__init__.py +0 -0
- {sportsball-0.3.37/sportsball/data/nba/nba → sportsball-0.3.39/sportsball/data/nba/espn}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/nba/espn/nba_espn_league_model.py +0 -0
- {sportsball-0.3.37/sportsball/data/nba/oddsportal → sportsball-0.3.39/sportsball/data/nba/nba}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/nba/nba/nba_nba_game_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/nba/nba/nba_nba_league_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/nba/nba/nba_nba_player_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/nba/nba/nba_nba_team_model.py +0 -0
- {sportsball-0.3.37/sportsball/data/nba/sportsdb → sportsball-0.3.39/sportsball/data/nba/oddsportal}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/nba/oddsportal/nba_oddsportal_league_model.py +0 -0
- {sportsball-0.3.37/sportsball/data/nba/sportsreference → sportsball-0.3.39/sportsball/data/nba/sportsdb}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/nba/sportsdb/nba_sportsdb_league_model.py +0 -0
- {sportsball-0.3.37/sportsball/data/ncaab/combined → sportsball-0.3.39/sportsball/data/nba/sportsreference}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/nba/sportsreference/nba_sportsreference_league_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/ncaab/__init__.py +0 -0
- {sportsball-0.3.37/sportsball/data/ncaab/espn → sportsball-0.3.39/sportsball/data/ncaab/combined}/__init__.py +0 -0
- {sportsball-0.3.37/sportsball/data/ncaab/oddsportal → sportsball-0.3.39/sportsball/data/ncaab/espn}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/ncaab/espn/ncaab_espn_league_model.py +0 -0
- {sportsball-0.3.37/sportsball/data/ncaab/sportsreference → sportsball-0.3.39/sportsball/data/ncaab/oddsportal}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/ncaab/oddsportal/ncaab_oddsportal_league_model.py +0 -0
- {sportsball-0.3.37/sportsball/data/ncaaf/combined → sportsball-0.3.39/sportsball/data/ncaab/sportsreference}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/ncaab/sportsreference/ncaab_sportsreference_league_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/ncaaf/__init__.py +0 -0
- {sportsball-0.3.37/sportsball/data/ncaaf/espn → sportsball-0.3.39/sportsball/data/ncaaf/combined}/__init__.py +0 -0
- {sportsball-0.3.37/sportsball/data/ncaaf/oddsportal → sportsball-0.3.39/sportsball/data/ncaaf/espn}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/ncaaf/espn/ncaaf_espn_league_model.py +0 -0
- {sportsball-0.3.37/sportsball/data/nfl/aussportsbetting → sportsball-0.3.39/sportsball/data/ncaaf/oddsportal}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/ncaaf/oddsportal/ncaaf_oddsportal_league_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/news_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/nfl/__init__.py +0 -0
- {sportsball-0.3.37/sportsball/data/nfl/combined → sportsball-0.3.39/sportsball/data/nfl/aussportsbetting}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/nfl/aussportsbetting/nfl_aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.37/sportsball/data/nfl/oddsportal → sportsball-0.3.39/sportsball/data/nfl/combined}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/nfl/espn/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/nfl/espn/nfl_espn_league_model.py +0 -0
- {sportsball-0.3.37/sportsball/data/nfl/sportsdb → sportsball-0.3.39/sportsball/data/nfl/oddsportal}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/nfl/oddsportal/nfl_oddsportal_league_model.py +0 -0
- {sportsball-0.3.37/sportsball/data/oddsportal → sportsball-0.3.39/sportsball/data/nfl/sportsdb}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/nfl/sportsdb/nfl_sportsdb_league_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/odds_model.py +0 -0
- {sportsball-0.3.37/sportsball/data/sportsdb → sportsball-0.3.39/sportsball/data/oddsportal}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/oddsportal/decrypt.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/oddsportal/oddsportal_bookie_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/oddsportal/oddsportal_game_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/oddsportal/oddsportal_league_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/oddsportal/oddsportal_odds_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/oddsportal/oddsportal_team_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/oddsportal/oddsportal_venue_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/player_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/season_type.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/social_model.py +0 -0
- {sportsball-0.3.37/sportsball/data/sportsreference → sportsball-0.3.39/sportsball/data/sportsdb}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/sportsdb/sportsdb_game_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/sportsdb/sportsdb_league_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/sportsdb/sportsdb_team_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/sportsdb/sportsdb_venue_model.py +0 -0
- {sportsball-0.3.37/sportsball/data/weather → sportsball-0.3.39/sportsball/data/sportsreference}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/sportsreference/sportsreference_game_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/sportsreference/sportsreference_league_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/sportsreference/sportsreference_player_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/sportsreference/sportsreference_team_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/team_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/venue_model.py +0 -0
- {sportsball-0.3.37/sportsball/data/weather/gribstream → sportsball-0.3.39/sportsball/data/weather}/__init__.py +0 -0
- {sportsball-0.3.37/sportsball/data/weather/openmeteo → sportsball-0.3.39/sportsball/data/weather/gribstream}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/weather/gribstream/gribstream_weather_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/weather/multi_weather_model.py +0 -0
- {sportsball-0.3.37/sportsball/data/wikipedia → sportsball-0.3.39/sportsball/data/weather/openmeteo}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/weather/openmeteo/openmeteo_weather_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/weather_model.py +0 -0
- {sportsball-0.3.37/sportsball/data/x → sportsball-0.3.39/sportsball/data/wikipedia}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/wikipedia/wikipedia_venue_model.py +0 -0
- {sportsball-0.3.37/sportsball/vendor → sportsball-0.3.39/sportsball/data/x}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/x/x_social_model.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/logger.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/loglevel.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/proxy_session.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/session.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/sportsball.py +0 -0
- {sportsball-0.3.37/tests → sportsball-0.3.39/sportsball/vendor}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball/vendor/pygooglenews/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball.egg-info/dependency_links.txt +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball.egg-info/entry_points.txt +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball.egg-info/not-zip-safe +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/sportsball.egg-info/top_level.txt +0 -0
- {sportsball-0.3.37/tests/data → sportsball-0.3.39/tests}/__init__.py +0 -0
- {sportsball-0.3.37/tests/data/afl → sportsball-0.3.39/tests/data}/__init__.py +0 -0
- {sportsball-0.3.37/tests/data/afl/afltables → sportsball-0.3.39/tests/data/afl}/__init__.py +0 -0
- {sportsball-0.3.37/tests/data/aussportsbetting → sportsball-0.3.39/tests/data/afl/afltables}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/afl/afltables/afl_afltables_game_model_test.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/afl/afltables/afl_afltables_league_model_test.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/afl/afltables/afl_afltables_player_model_test.py +0 -0
- {sportsball-0.3.37/tests/data/combined → sportsball-0.3.39/tests/data/aussportsbetting}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/aussportsbetting/aussportsbetting_game_model_test.py +0 -0
- {sportsball-0.3.37/tests/data/espn → sportsball-0.3.39/tests/data/combined}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/combined/combined_player_model_test.py +0 -0
- {sportsball-0.3.37/tests/data/google → sportsball-0.3.39/tests/data/espn}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/espn/espn_game_model_test.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/espn/espn_player_model_test.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/game_model_test.py +0 -0
- {sportsball-0.3.37/tests/data/nba → sportsball-0.3.39/tests/data/google}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/google/google_address_model_test.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/google/google_news_model_test.py +0 -0
- {sportsball-0.3.37/tests/data/nba → sportsball-0.3.39/tests/data}/nba/__init__.py +0 -0
- {sportsball-0.3.37/tests/data/nba/sportsdb → sportsball-0.3.39/tests/data/nba/nba}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/nba/nba/nba_nba_game_model_test.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/nba/nba/nba_nba_league_model_test.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/nba/nba/nba_nba_player_model_test.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/nba/nba/nba_nba_team_model_test.py +0 -0
- {sportsball-0.3.37/tests/data/nba/sportsreference → sportsball-0.3.39/tests/data/nba/sportsdb}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/nba/sportsdb/nba_sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.37/tests/data/ncaab → sportsball-0.3.39/tests/data/nba/sportsreference}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/nba/sportsreference/nba_sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.37/tests/data/ncaab/sportsreference → sportsball-0.3.39/tests/data/ncaab}/__init__.py +0 -0
- {sportsball-0.3.37/tests/data/nfl → sportsball-0.3.39/tests/data/ncaab/sportsreference}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/ncaab/sportsreference/ncaab_sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.37/tests/data/nfl/sportsdb → sportsball-0.3.39/tests/data/nfl}/__init__.py +0 -0
- {sportsball-0.3.37/tests/data/oddsportal → sportsball-0.3.39/tests/data/nfl/sportsdb}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/nfl/sportsdb/nfl_sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.37/tests/data/sportsdb → sportsball-0.3.39/tests/data/oddsportal}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/oddsportal/decrypt_test.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/oddsportal/oddsportal_game_model_test.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/oddsportal/oddsportal_league_model_test.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/player_model_test.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/social_model_test.py +0 -0
- {sportsball-0.3.37/tests/data/sportsreference → sportsball-0.3.39/tests/data/sportsdb}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/sportsdb/sportsdb_game_model_test.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/sportsdb/sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/sportsdb/sportsdb_team_model_test.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/sportsdb/sportsdb_venue_model_test.py +0 -0
- {sportsball-0.3.37/tests/data/x → sportsball-0.3.39/tests/data/sportsreference}/__init__.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/sportsreference/sportsreference_game_model_test.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/sportsreference/sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/sportsreference/sportsreference_player_model_test.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/sportsreference/sportsreference_team_model_test.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/sportsreference/sportsreference_venue_model_test.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/team_model_test.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/data/x/x_social_model_test.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/proxy_session_test.py +0 -0
- {sportsball-0.3.37 → sportsball-0.3.39}/tests/sportsball_test.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: sportsball
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.39
|
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
|
@@ -43,6 +43,7 @@ Requires-Dist: wayback>=0.4.5
|
|
43
43
|
Requires-Dist: cryptography>=44.0.0
|
44
44
|
Requires-Dist: feedparser>=6.0.11
|
45
45
|
Requires-Dist: dateparser>=1.2.0
|
46
|
+
Requires-Dist: playwright>=1.51.0
|
46
47
|
Dynamic: author
|
47
48
|
Dynamic: author-email
|
48
49
|
Dynamic: classifier
|
@@ -101,6 +102,7 @@ Python 3.11.6:
|
|
101
102
|
- [cryptography](https://cryptography.io/en/latest/)
|
102
103
|
- [feedparser](https://github.com/kurtmckee/feedparser)
|
103
104
|
- [dateparser](https://dateparser.readthedocs.io/en/latest/)
|
105
|
+
- [playwright](https://playwright.dev/)
|
104
106
|
|
105
107
|
## Raison D'être :thought_balloon:
|
106
108
|
|
@@ -264,6 +266,10 @@ This is a python package hosted on pypi, so to install simply run the following
|
|
264
266
|
|
265
267
|
`pip install sportsball`
|
266
268
|
|
269
|
+
or install using this local repository:
|
270
|
+
|
271
|
+
`python setup.py install --old-and-unmanageable`
|
272
|
+
|
267
273
|
## Usage example :eyes:
|
268
274
|
|
269
275
|
There are many different ways of using sportsball, but we generally recommend the CLI.
|
@@ -45,6 +45,7 @@ Python 3.11.6:
|
|
45
45
|
- [cryptography](https://cryptography.io/en/latest/)
|
46
46
|
- [feedparser](https://github.com/kurtmckee/feedparser)
|
47
47
|
- [dateparser](https://dateparser.readthedocs.io/en/latest/)
|
48
|
+
- [playwright](https://playwright.dev/)
|
48
49
|
|
49
50
|
## Raison D'être :thought_balloon:
|
50
51
|
|
@@ -208,6 +209,10 @@ This is a python package hosted on pypi, so to install simply run the following
|
|
208
209
|
|
209
210
|
`pip install sportsball`
|
210
211
|
|
212
|
+
or install using this local repository:
|
213
|
+
|
214
|
+
`python setup.py install --old-and-unmanageable`
|
215
|
+
|
211
216
|
## Usage example :eyes:
|
212
217
|
|
213
218
|
There are many different ways of using sportsball, but we generally recommend the CLI.
|
@@ -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.39',
|
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,40 @@
|
|
1
|
+
"""AFL AFL game model."""
|
2
|
+
|
3
|
+
# pylint: disable=too-many-statements,protected-access
|
4
|
+
import datetime
|
5
|
+
|
6
|
+
import requests_cache
|
7
|
+
|
8
|
+
from ...game_model import GameModel
|
9
|
+
from ...league import League
|
10
|
+
from .afl_afl_team_model import create_afl_afl_team_model
|
11
|
+
from .afl_afl_venue_model import create_afl_afl_venue_model
|
12
|
+
|
13
|
+
|
14
|
+
def create_afl_afl_game_model(
|
15
|
+
team_names: list[str],
|
16
|
+
players: list[list[tuple[str, str]]],
|
17
|
+
dt: datetime.datetime,
|
18
|
+
venue_name: str,
|
19
|
+
session: requests_cache.CachedSession,
|
20
|
+
) -> GameModel:
|
21
|
+
"""Create a game model from AFL Tables."""
|
22
|
+
venue_model = create_afl_afl_venue_model(venue_name, session, dt)
|
23
|
+
teams = [
|
24
|
+
create_afl_afl_team_model(x, players[count], session, dt)
|
25
|
+
for count, x in enumerate(team_names)
|
26
|
+
]
|
27
|
+
return GameModel(
|
28
|
+
dt=dt,
|
29
|
+
week=None,
|
30
|
+
game_number=None,
|
31
|
+
venue=venue_model,
|
32
|
+
teams=teams,
|
33
|
+
end_dt=None,
|
34
|
+
attendance=None,
|
35
|
+
league=League.AFL,
|
36
|
+
year=datetime.datetime.today().year,
|
37
|
+
season_type=None,
|
38
|
+
postponed=None,
|
39
|
+
play_off=None,
|
40
|
+
)
|
@@ -0,0 +1,87 @@
|
|
1
|
+
"""AFL AFL league model."""
|
2
|
+
|
3
|
+
# pylint: disable=too-many-statements,protected-access,too-many-locals
|
4
|
+
import datetime
|
5
|
+
import re
|
6
|
+
from typing import Iterator
|
7
|
+
|
8
|
+
import requests_cache
|
9
|
+
from bs4 import BeautifulSoup
|
10
|
+
from playwright.sync_api import sync_playwright
|
11
|
+
|
12
|
+
from ....playwright import ensure_install
|
13
|
+
from ...game_model import GameModel
|
14
|
+
from ...league import League
|
15
|
+
from ...league_model import LeagueModel
|
16
|
+
from .afl_afl_game_model import create_afl_afl_game_model
|
17
|
+
|
18
|
+
|
19
|
+
class AFLAFLLeagueModel(LeagueModel):
|
20
|
+
"""AFL AFL implementation of the league model."""
|
21
|
+
|
22
|
+
def __init__(
|
23
|
+
self, session: requests_cache.CachedSession, position: int | None = None
|
24
|
+
) -> None:
|
25
|
+
super().__init__(League.AFL, session)
|
26
|
+
|
27
|
+
@property
|
28
|
+
def games(self) -> Iterator[GameModel]:
|
29
|
+
# https://www.afl.com.au/matches/team-lineups
|
30
|
+
ensure_install()
|
31
|
+
with sync_playwright() as p:
|
32
|
+
browser = p.chromium.launch()
|
33
|
+
context = browser.new_context()
|
34
|
+
page = context.new_page()
|
35
|
+
page.goto(
|
36
|
+
"https://www.afl.com.au/matches/team-lineups", wait_until="networkidle"
|
37
|
+
)
|
38
|
+
soup = BeautifulSoup(page.content(), "html.parser")
|
39
|
+
for div in soup.find_all(
|
40
|
+
"div", {"class": re.compile(".*js-match-list-item.*")}
|
41
|
+
):
|
42
|
+
team_names = []
|
43
|
+
for span in div.find_all(
|
44
|
+
"span", {"class": re.compile(".*team-lineups__team-name.*")}
|
45
|
+
):
|
46
|
+
team_names.append(span.get_text().strip())
|
47
|
+
teams_players: list[list[tuple[str, str]]] = []
|
48
|
+
for div_team_players in div.find_all(
|
49
|
+
"div", {"class": re.compile(".*team-lineups__positions-players.*")}
|
50
|
+
):
|
51
|
+
team_players: list[tuple[str, str]] = []
|
52
|
+
for a in div_team_players.find_all(
|
53
|
+
"a", {"class": re.compile(".*js-player-profile-link.*")}
|
54
|
+
):
|
55
|
+
player_id = "afl:" + a.get("data-player-id")
|
56
|
+
player_number = None
|
57
|
+
for span_player_number in a.find_all(
|
58
|
+
"span",
|
59
|
+
{"class": re.compile(".*team-lineups__player-number.*")},
|
60
|
+
):
|
61
|
+
player_number = (
|
62
|
+
span_player_number.get_text()
|
63
|
+
.strip()
|
64
|
+
.replace("[", "")
|
65
|
+
.replace("]", "")
|
66
|
+
)
|
67
|
+
if player_number is None:
|
68
|
+
raise ValueError("player_number is null")
|
69
|
+
team_players.append((player_id, player_number))
|
70
|
+
teams_players.append(team_players)
|
71
|
+
dt = None
|
72
|
+
for time in div.find_all(
|
73
|
+
"time", {"class": re.compile(".*match-list-alt__header-time.*")}
|
74
|
+
):
|
75
|
+
dt = datetime.datetime.fromtimestamp(float(time.get("data-date")))
|
76
|
+
venue_name: str | None = None
|
77
|
+
for span in div.find_all(
|
78
|
+
"span", {"class": re.compile(".*match-list-alt__header-venue.*")}
|
79
|
+
):
|
80
|
+
venue_name = span.get_text().strip()
|
81
|
+
if venue_name is None:
|
82
|
+
raise ValueError("venue_name is null")
|
83
|
+
if dt is None:
|
84
|
+
raise ValueError("dt is null")
|
85
|
+
yield create_afl_afl_game_model(
|
86
|
+
team_names, teams_players, dt, venue_name, self.session
|
87
|
+
)
|
@@ -0,0 +1,22 @@
|
|
1
|
+
"""AFL AFL player model."""
|
2
|
+
|
3
|
+
from ...player_model import PlayerModel
|
4
|
+
|
5
|
+
|
6
|
+
def create_afl_afl_player_model(
|
7
|
+
identifier: str,
|
8
|
+
player_number: str,
|
9
|
+
) -> PlayerModel:
|
10
|
+
"""Create a player model from AFL AFL."""
|
11
|
+
return PlayerModel(
|
12
|
+
identifier=identifier,
|
13
|
+
jersey=player_number,
|
14
|
+
kicks=None,
|
15
|
+
fumbles=None,
|
16
|
+
fumbles_lost=None,
|
17
|
+
field_goals=None,
|
18
|
+
field_goals_attempted=None,
|
19
|
+
offensive_rebounds=None,
|
20
|
+
assists=None,
|
21
|
+
turnovers=None,
|
22
|
+
)
|
@@ -0,0 +1,41 @@
|
|
1
|
+
"""AFL AFL team model."""
|
2
|
+
|
3
|
+
# pylint: disable=duplicate-code
|
4
|
+
import datetime
|
5
|
+
|
6
|
+
import requests_cache
|
7
|
+
|
8
|
+
from ...google.google_news_model import create_google_news_models
|
9
|
+
from ...league import League
|
10
|
+
from ...team_model import TeamModel
|
11
|
+
from .afl_afl_player_model import create_afl_afl_player_model
|
12
|
+
|
13
|
+
|
14
|
+
def create_afl_afl_team_model(
|
15
|
+
team_name: str,
|
16
|
+
players: list[tuple[str, str]],
|
17
|
+
session: requests_cache.CachedSession,
|
18
|
+
dt: datetime.datetime,
|
19
|
+
) -> TeamModel:
|
20
|
+
"""Create a team model from AFL AFL."""
|
21
|
+
player_models = [
|
22
|
+
create_afl_afl_player_model(identifier, player_number)
|
23
|
+
for identifier, player_number in players
|
24
|
+
]
|
25
|
+
return TeamModel(
|
26
|
+
identifier=team_name,
|
27
|
+
name=team_name,
|
28
|
+
location=None,
|
29
|
+
players=player_models,
|
30
|
+
odds=[],
|
31
|
+
points=None,
|
32
|
+
ladder_rank=None,
|
33
|
+
kicks=None,
|
34
|
+
news=create_google_news_models(team_name, session, dt, League.AFL),
|
35
|
+
social=[],
|
36
|
+
field_goals=None,
|
37
|
+
field_goals_attempted=None,
|
38
|
+
offensive_rebounds=None,
|
39
|
+
assists=None,
|
40
|
+
turnovers=None,
|
41
|
+
)
|
@@ -0,0 +1,25 @@
|
|
1
|
+
"""AFL AFL venue model."""
|
2
|
+
|
3
|
+
# pylint: disable=too-many-statements,protected-access
|
4
|
+
import datetime
|
5
|
+
|
6
|
+
import requests_cache
|
7
|
+
|
8
|
+
from ...google.google_address_model import create_google_address_model
|
9
|
+
from ...venue_model import VenueModel
|
10
|
+
|
11
|
+
|
12
|
+
def create_afl_afl_venue_model(
|
13
|
+
venue_name: str,
|
14
|
+
session: requests_cache.CachedSession,
|
15
|
+
dt: datetime.datetime,
|
16
|
+
) -> VenueModel:
|
17
|
+
"""Create a game model from AFL Tables."""
|
18
|
+
address_model = create_google_address_model(venue_name, session, dt)
|
19
|
+
return VenueModel(
|
20
|
+
identifier=venue_name,
|
21
|
+
name=venue_name,
|
22
|
+
address=address_model,
|
23
|
+
is_grass=None,
|
24
|
+
is_indoor=None,
|
25
|
+
)
|
{sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/afl/combined/afl_combined_league_model.py
RENAMED
@@ -4,6 +4,7 @@ import requests_cache
|
|
4
4
|
|
5
5
|
from ...combined.combined_league_model import CombinedLeagueModel
|
6
6
|
from ...league import League
|
7
|
+
from ..afl.afl_afl_league_model import AFLAFLLeagueModel
|
7
8
|
from ..afltables.afl_afltables_league_model import AFLAFLTablesLeagueModel
|
8
9
|
from ..aussportsbetting.afl_aussportsbetting_league_model import \
|
9
10
|
AFLAusSportsBettingLeagueModel
|
@@ -195,6 +196,7 @@ AFL_VENUE_IDENTITY_MAP = {
|
|
195
196
|
"riverway": RIVERWAY,
|
196
197
|
"norwood": NORWOOD,
|
197
198
|
"summit": SUMMIT,
|
199
|
+
"barossa": BAROSSA_PARK,
|
198
200
|
# Aus Sports Betting
|
199
201
|
"MCG": MCG,
|
200
202
|
"SCG": SCG,
|
@@ -240,6 +242,7 @@ AFL_VENUE_IDENTITY_MAP = {
|
|
240
242
|
"Ondrej Nepela Arena": TIPOS_ARENA,
|
241
243
|
"Barossa Park": BAROSSA_PARK,
|
242
244
|
}
|
245
|
+
AFL_TEAM_IDENTITY_MAP = {}
|
243
246
|
|
244
247
|
|
245
248
|
class AFLCombinedLeagueModel(CombinedLeagueModel):
|
@@ -254,6 +257,7 @@ class AFLCombinedLeagueModel(CombinedLeagueModel):
|
|
254
257
|
AFLESPNLeagueModel(session, position=1),
|
255
258
|
AFLAusSportsBettingLeagueModel(session, position=2),
|
256
259
|
AFLOddsPortalLeagueModel(session, position=3),
|
260
|
+
AFLAFLLeagueModel(session, position=4),
|
257
261
|
],
|
258
262
|
)
|
259
263
|
|
@@ -264,3 +268,7 @@ class AFLCombinedLeagueModel(CombinedLeagueModel):
|
|
264
268
|
@classmethod
|
265
269
|
def venue_identity_map(cls) -> dict[str, str]:
|
266
270
|
return AFL_VENUE_IDENTITY_MAP
|
271
|
+
|
272
|
+
@classmethod
|
273
|
+
def player_identity_map(cls) -> dict[str, str]:
|
274
|
+
return AFL_TEAM_IDENTITY_MAP
|
@@ -34,6 +34,7 @@ def _venue_models(
|
|
34
34
|
def _team_models(
|
35
35
|
game_models: list[GameModel],
|
36
36
|
team_identity_map: dict[str, str],
|
37
|
+
player_identity_map: dict[str, str],
|
37
38
|
) -> list[TeamModel]:
|
38
39
|
team_models: dict[str, list[TeamModel]] = {}
|
39
40
|
for game_model in game_models:
|
@@ -50,7 +51,7 @@ def _team_models(
|
|
50
51
|
team_model
|
51
52
|
]
|
52
53
|
return [
|
53
|
-
create_combined_team_model(v, k) # pyright: ignore
|
54
|
+
create_combined_team_model(v, k, player_identity_map) # pyright: ignore
|
54
55
|
for k, v in team_models.items()
|
55
56
|
]
|
56
57
|
|
@@ -59,11 +60,12 @@ def create_combined_game_model(
|
|
59
60
|
game_models: list[GameModel],
|
60
61
|
venue_identity_map: dict[str, str],
|
61
62
|
team_identity_map: dict[str, str],
|
63
|
+
player_identity_map: dict[str, str],
|
62
64
|
session: requests.Session,
|
63
65
|
) -> GameModel:
|
64
66
|
"""Create a game model by combining many game models."""
|
65
67
|
venue_models, full_venue_identity = _venue_models(game_models, venue_identity_map)
|
66
|
-
full_team_models = _team_models(game_models, team_identity_map)
|
68
|
+
full_team_models = _team_models(game_models, team_identity_map, player_identity_map)
|
67
69
|
attendance = None
|
68
70
|
end_dt = None
|
69
71
|
year = None
|
@@ -44,6 +44,13 @@ class CombinedLeagueModel(LeagueModel):
|
|
44
44
|
"venue_identity_map not implemented on CombinedLeagueModel parent class."
|
45
45
|
)
|
46
46
|
|
47
|
+
@classmethod
|
48
|
+
def player_identity_map(cls) -> dict[str, str]:
|
49
|
+
"""A map to resolve the different player identities to a consistent identity."""
|
50
|
+
raise NotImplementedError(
|
51
|
+
"player_identity_map not implemented on CombinedLeagueModel parent class."
|
52
|
+
)
|
53
|
+
|
47
54
|
@property
|
48
55
|
def games(self) -> Iterator[GameModel]:
|
49
56
|
games: dict[str, list[GameModel]] = {}
|
@@ -85,5 +92,6 @@ class CombinedLeagueModel(LeagueModel):
|
|
85
92
|
game_models,
|
86
93
|
self.venue_identity_map(),
|
87
94
|
team_identity_map,
|
95
|
+
self.player_identity_map(),
|
88
96
|
self.session,
|
89
97
|
)
|
@@ -1,6 +1,8 @@
|
|
1
1
|
"""Combined team model."""
|
2
2
|
|
3
3
|
# pylint: disable=too-many-locals
|
4
|
+
import logging
|
5
|
+
|
4
6
|
from ..news_model import NewsModel
|
5
7
|
from ..odds_model import OddsModel
|
6
8
|
from ..player_model import PlayerModel
|
@@ -12,6 +14,7 @@ from .combined_player_model import create_combined_player_model
|
|
12
14
|
def create_combined_team_model(
|
13
15
|
team_models: list[TeamModel],
|
14
16
|
identifier: str,
|
17
|
+
player_identity_map: dict[str, str],
|
15
18
|
) -> TeamModel:
|
16
19
|
"""Create a team model by combining many team models."""
|
17
20
|
location = None
|
@@ -27,9 +30,16 @@ def create_combined_team_model(
|
|
27
30
|
if team_model_location is not None:
|
28
31
|
location = team_model_location
|
29
32
|
for player_model in team_model.players:
|
33
|
+
player_id = player_model.identifier
|
34
|
+
if player_model.identifier not in player_identity_map:
|
35
|
+
logging.warning(
|
36
|
+
"Failed to find %s player identifier.", player_model.identifier
|
37
|
+
)
|
38
|
+
else:
|
39
|
+
player_id = player_identity_map[player_id]
|
30
40
|
key = player_model.jersey
|
31
41
|
if key is None:
|
32
|
-
key =
|
42
|
+
key = player_id
|
33
43
|
players[key] = players.get(key, []) + [player_model]
|
34
44
|
for odds_model in team_model.odds:
|
35
45
|
key = f"{odds_model.bookie.identifier}-{odds_model.odds}"
|
@@ -2152,6 +2152,33 @@ WELLNESS_AND_EVENTS_CENTER = SportsballGeocodeTuple(
|
|
2152
2152
|
housenumber="100",
|
2153
2153
|
country="USA",
|
2154
2154
|
)
|
2155
|
+
CIVIC_ARENA = SportsballGeocodeTuple(
|
2156
|
+
city="Pittsburgh",
|
2157
|
+
state="PA",
|
2158
|
+
postal="15219",
|
2159
|
+
lat=40.441667,
|
2160
|
+
lng=-79.99,
|
2161
|
+
housenumber="66",
|
2162
|
+
country="USA",
|
2163
|
+
)
|
2164
|
+
SIMMONS_BANK_ARENA = SportsballGeocodeTuple(
|
2165
|
+
city="North Little Rock",
|
2166
|
+
state="AR",
|
2167
|
+
postal="72114",
|
2168
|
+
lat=34.755111,
|
2169
|
+
lng=-92.264439,
|
2170
|
+
housenumber="1",
|
2171
|
+
country="USA",
|
2172
|
+
)
|
2173
|
+
BOK_CENTER = SportsballGeocodeTuple(
|
2174
|
+
city="Tulsa",
|
2175
|
+
state="OK",
|
2176
|
+
postal="",
|
2177
|
+
lat=36.152722,
|
2178
|
+
lng=-95.996333,
|
2179
|
+
housenumber="200",
|
2180
|
+
country="USA",
|
2181
|
+
)
|
2155
2182
|
_CACHED_GEOCODES: dict[str, Any] = {
|
2156
2183
|
"S.C.G. - Australia": SCG,
|
2157
2184
|
"Victoria Park - Australia": SportsballGeocodeTuple(
|
@@ -6856,15 +6883,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
6856
6883
|
country="USA",
|
6857
6884
|
),
|
6858
6885
|
"Footprint Center, Phoenix, Arizona": AMERICA_WEST_ARENA,
|
6859
|
-
"Simmons Bank Arena, North Little Rock, Arkansas":
|
6860
|
-
city="North Little Rock",
|
6861
|
-
state="AR",
|
6862
|
-
postal="72114",
|
6863
|
-
lat=34.755111,
|
6864
|
-
lng=-92.264439,
|
6865
|
-
housenumber="1",
|
6866
|
-
country="USA",
|
6867
|
-
),
|
6886
|
+
"Simmons Bank Arena, North Little Rock, Arkansas": SIMMONS_BANK_ARENA,
|
6868
6887
|
"FLA Live Arena, Sunrise, Florida": SportsballGeocodeTuple(
|
6869
6888
|
city="Sunrise",
|
6870
6889
|
state="FL",
|
@@ -8221,15 +8240,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
8221
8240
|
"Kaseya Center - Miami, Florida - United States": KASEYA_CENTER,
|
8222
8241
|
"Frost Bank Center - San Antonio, Texas - United States": FROST_BANK_CENTER,
|
8223
8242
|
"Moda Center - Portland, Oregon - United States": MODA_CENTER,
|
8224
|
-
"BOK Center - Tulsa, Oklahoma - United States":
|
8225
|
-
city="Tulsa",
|
8226
|
-
state="OK",
|
8227
|
-
postal="",
|
8228
|
-
lat=36.152722,
|
8229
|
-
lng=-95.996333,
|
8230
|
-
housenumber="200",
|
8231
|
-
country="USA",
|
8232
|
-
),
|
8243
|
+
"BOK Center - Tulsa, Oklahoma - United States": BOK_CENTER,
|
8233
8244
|
"Capital One Arena - Washington DC, USA - United States": CAPITAL_ONE_ARENA,
|
8234
8245
|
"The Palace of Auburn Hills, Auburn Hills, MI, USA": THE_PALACE_OF_AUBURN_HILLS,
|
8235
8246
|
"BMO Harris Bradley Center, Milwaukee, WI, USA": BRADLEY_CENTER,
|
@@ -10578,15 +10589,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
10578
10589
|
housenumber="260",
|
10579
10590
|
country="USA",
|
10580
10591
|
),
|
10581
|
-
"Pittsburgh Civic Arena, Pittsburgh, Pennsylvania":
|
10582
|
-
city="Pittsburgh",
|
10583
|
-
state="PA",
|
10584
|
-
postal="15219",
|
10585
|
-
lat=40.441667,
|
10586
|
-
lng=-79.99,
|
10587
|
-
housenumber="66",
|
10588
|
-
country="USA",
|
10589
|
-
),
|
10592
|
+
"Pittsburgh Civic Arena, Pittsburgh, Pennsylvania": CIVIC_ARENA,
|
10590
10593
|
"Curtis Hixon Hall, Tampa, Florida": SportsballGeocodeTuple(
|
10591
10594
|
city="Tampa",
|
10592
10595
|
state="FL",
|
@@ -12079,6 +12082,75 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
12079
12082
|
housenumber="",
|
12080
12083
|
country="USA",
|
12081
12084
|
),
|
12085
|
+
"Barossa Oval - Australia": BAROSSA_PARK,
|
12086
|
+
"Civic Arena, Pittsburgh, Pennsylvania": CIVIC_ARENA,
|
12087
|
+
"Verizon Arena, North Little Rock, Arkansas": SIMMONS_BANK_ARENA,
|
12088
|
+
"BB&T Center, Sunrise, Florida": SportsballGeocodeTuple(
|
12089
|
+
city="Sunrise",
|
12090
|
+
state="FL",
|
12091
|
+
postal="",
|
12092
|
+
lat=26.158333,
|
12093
|
+
lng=-80.325556,
|
12094
|
+
housenumber="1",
|
12095
|
+
country="USA",
|
12096
|
+
),
|
12097
|
+
"BOK Center, Tulsa, Oklahoma": BOK_CENTER,
|
12098
|
+
"Alamodome, San Antonio, TX, USA": ALAMODOME,
|
12099
|
+
"KeyArena, Seattle, Washington": CLIMATE_PLEDGE_ARENA,
|
12100
|
+
"Naples, Florida": SportsballGeocodeTuple(
|
12101
|
+
city="Naples",
|
12102
|
+
state="FL",
|
12103
|
+
postal="",
|
12104
|
+
lat=26.136111,
|
12105
|
+
lng=-81.794444,
|
12106
|
+
housenumber="",
|
12107
|
+
country="USA",
|
12108
|
+
),
|
12109
|
+
"Henrico Sports & Events Center, Henrico, Virginia": SportsballGeocodeTuple(
|
12110
|
+
city="Henrico",
|
12111
|
+
state="VA",
|
12112
|
+
postal="23059",
|
12113
|
+
lat=37.6771948,
|
12114
|
+
lng=-77.4528141,
|
12115
|
+
housenumber="1",
|
12116
|
+
country="USA",
|
12117
|
+
),
|
12118
|
+
"College Park, Georgia": SportsballGeocodeTuple(
|
12119
|
+
city="College Park",
|
12120
|
+
state="GA",
|
12121
|
+
postal="",
|
12122
|
+
lat=33.6175,
|
12123
|
+
lng=-84.4675,
|
12124
|
+
housenumber="",
|
12125
|
+
country="USA",
|
12126
|
+
),
|
12127
|
+
"Ralston, Nebraska": SportsballGeocodeTuple(
|
12128
|
+
city="Ralston",
|
12129
|
+
state="NB",
|
12130
|
+
postal="",
|
12131
|
+
lat=41.200556,
|
12132
|
+
lng=-96.035556,
|
12133
|
+
housenumber="",
|
12134
|
+
country="USA",
|
12135
|
+
),
|
12136
|
+
"Bill Greehey Arena, San Antonio, Texas": SportsballGeocodeTuple(
|
12137
|
+
city="San Antonio",
|
12138
|
+
state="TX",
|
12139
|
+
postal="78228",
|
12140
|
+
lat=29.451858,
|
12141
|
+
lng=-98.5643022,
|
12142
|
+
housenumber="1",
|
12143
|
+
country="USA",
|
12144
|
+
),
|
12145
|
+
"Hartsell Arena, Pensacola, Florida": SportsballGeocodeTuple(
|
12146
|
+
city="Pensacola",
|
12147
|
+
state="FL",
|
12148
|
+
postal="32504",
|
12149
|
+
lat=30.4793276,
|
12150
|
+
lng=-87.1995723,
|
12151
|
+
housenumber="",
|
12152
|
+
country="USA",
|
12153
|
+
),
|
12082
12154
|
}
|
12083
12155
|
|
12084
12156
|
|
{sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/nba/combined/nba_combined_league_model.py
RENAMED
@@ -884,6 +884,7 @@ NBA_VENUE_IDENTITY_MAP: dict[str, str] = {
|
|
884
884
|
"24838": SPECTRUM_CENTER,
|
885
885
|
"28619": KASEYA_CENTER,
|
886
886
|
}
|
887
|
+
NBA_PLAYER_IDENTITY_MAP: dict[str, str] = {}
|
887
888
|
|
888
889
|
|
889
890
|
class NBACombinedLeagueModel(CombinedLeagueModel):
|
@@ -909,3 +910,7 @@ class NBACombinedLeagueModel(CombinedLeagueModel):
|
|
909
910
|
@classmethod
|
910
911
|
def venue_identity_map(cls) -> dict[str, str]:
|
911
912
|
return NBA_VENUE_IDENTITY_MAP
|
913
|
+
|
914
|
+
@classmethod
|
915
|
+
def player_identity_map(cls) -> dict[str, str]:
|
916
|
+
return NBA_PLAYER_IDENTITY_MAP
|
@@ -741,6 +741,7 @@ NCAAB_TEAM_IDENTITY_MAP: dict[str, str] = {
|
|
741
741
|
"Wagner Seahawks Men's": WAGNER_SEAHAWKS,
|
742
742
|
}
|
743
743
|
NCAAB_VENUE_IDENTITY_MAP: dict[str, str] = {}
|
744
|
+
NCAAB_PLAYER_IDENTITY_MAP: dict[str, str] = {}
|
744
745
|
|
745
746
|
|
746
747
|
class NCAABCombinedLeagueModel(CombinedLeagueModel):
|
@@ -764,3 +765,7 @@ class NCAABCombinedLeagueModel(CombinedLeagueModel):
|
|
764
765
|
@classmethod
|
765
766
|
def venue_identity_map(cls) -> dict[str, str]:
|
766
767
|
return NCAAB_VENUE_IDENTITY_MAP
|
768
|
+
|
769
|
+
@classmethod
|
770
|
+
def player_identity_map(cls) -> dict[str, str]:
|
771
|
+
return NCAAB_PLAYER_IDENTITY_MAP
|
@@ -10,6 +10,7 @@ from ..oddsportal.ncaaf_oddsportal_league_model import \
|
|
10
10
|
|
11
11
|
NCAAF_TEAM_IDENTITY_MAP: dict[str, str] = {}
|
12
12
|
NCAAF_VENUE_IDENTITY_MAP: dict[str, str] = {}
|
13
|
+
NCAAF_PLAYER_IDENTITY_MAP: dict[str, str] = {}
|
13
14
|
|
14
15
|
|
15
16
|
class NCAAFCombinedLeagueModel(CombinedLeagueModel):
|
@@ -32,3 +33,7 @@ class NCAAFCombinedLeagueModel(CombinedLeagueModel):
|
|
32
33
|
@classmethod
|
33
34
|
def venue_identity_map(cls) -> dict[str, str]:
|
34
35
|
return NCAAF_VENUE_IDENTITY_MAP
|
36
|
+
|
37
|
+
@classmethod
|
38
|
+
def player_identity_map(cls) -> dict[str, str]:
|
39
|
+
return NCAAF_PLAYER_IDENTITY_MAP
|
{sportsball-0.3.37 → sportsball-0.3.39}/sportsball/data/nfl/combined/nfl_combined_league_model.py
RENAMED
@@ -370,6 +370,7 @@ NFL_VENUE_IDENTITY_MAP = {
|
|
370
370
|
"17145": EMPOWER_FIELD,
|
371
371
|
"30856": ATT_STADIUM,
|
372
372
|
}
|
373
|
+
NFL_PLAYER_IDENTITY_MAP: dict[str, str] = {}
|
373
374
|
|
374
375
|
|
375
376
|
class NFLCombinedLeagueModel(CombinedLeagueModel):
|
@@ -394,3 +395,7 @@ class NFLCombinedLeagueModel(CombinedLeagueModel):
|
|
394
395
|
@classmethod
|
395
396
|
def venue_identity_map(cls) -> dict[str, str]:
|
396
397
|
return NFL_VENUE_IDENTITY_MAP
|
398
|
+
|
399
|
+
@classmethod
|
400
|
+
def player_identity_map(cls) -> dict[str, str]:
|
401
|
+
return NFL_PLAYER_IDENTITY_MAP
|