sportsball 0.3.42__tar.gz → 0.3.44__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.42/sportsball.egg-info → sportsball-0.3.44}/PKG-INFO +1 -1
- {sportsball-0.3.42 → sportsball-0.3.44}/setup.py +1 -1
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/__init__.py +1 -1
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/afl/afl/afl_afl_game_model.py +1 -1
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/afl/afl/afl_afl_league_model.py +8 -4
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/afl/afl/afl_afl_player_model.py +2 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/afl/afl/afl_afl_team_model.py +5 -3
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/afl/afltables/afl_afltables_game_model.py +14 -4
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/afl/afltables/afl_afltables_player_model.py +13 -6
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/afl/afltables/afl_afltables_team_model.py +7 -5
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/afl/combined/afl_combined_league_model.py +13 -2
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/combined/combined_game_model.py +7 -3
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/combined/combined_league_model.py +2 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/combined/combined_player_model.py +7 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/combined/combined_team_model.py +14 -10
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/espn/espn_player_model.py +5 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/google/google_address_model.py +125 -18
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/nba/nba/nba_nba_team_model.py +1 -7
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/player_model.py +1 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/sportsreference/sportsreference_player_model.py +1 -0
- {sportsball-0.3.42 → sportsball-0.3.44/sportsball.egg-info}/PKG-INFO +1 -1
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball.egg-info/SOURCES.txt +0 -2
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/afl/afltables/afl_afltables_player_model_test.py +1 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/combined/combined_game_model_test.py +2 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/combined/combined_player_model_test.py +1 -0
- sportsball-0.3.44/tests/data/espn/espn_player_model_test.py +52 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/player_model_test.py +1 -0
- sportsball-0.3.42/sportsball/data/nba/nba/nba_nba_player_model.py +0 -64
- sportsball-0.3.42/tests/data/espn/espn_player_model_test.py +0 -29
- sportsball-0.3.42/tests/data/nba/nba/nba_nba_player_model_test.py +0 -30
- {sportsball-0.3.42 → sportsball-0.3.44}/LICENSE +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/MANIFEST.in +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/README.md +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/requirements.txt +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/setup.cfg +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/__main__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/args.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/cache.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/address_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/afl/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/afl/afl/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/afl/afl/afl_afl_venue_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/afl/afltables/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/afl/afltables/afl_afltables_league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/afl/afltables/afl_afltables_venue_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/afl/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/afl/aussportsbetting/afl_aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/afl/combined/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/afl/espn/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/afl/espn/afl_espn_league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/afl/oddsportal/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/afl/oddsportal/afl_oddsportal_league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/aussportsbetting/aussportsbetting_bookie_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/aussportsbetting/aussportsbetting_game_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/aussportsbetting/aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/aussportsbetting/aussportsbetting_odds_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/aussportsbetting/aussportsbetting_team_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/aussportsbetting/aussportsbetting_venue_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/bookie_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/combined/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/combined/combined_address_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/combined/combined_venue_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/combined/combined_weather_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/espn/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/espn/espn_bookie_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/espn/espn_game_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/espn/espn_league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/espn/espn_odds_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/espn/espn_team_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/espn/espn_venue_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/field_type.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/game_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/google/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/google/google_news_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/league.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/nba/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/nba/combined/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/nba/combined/nba_combined_league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/nba/espn/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/nba/espn/nba_espn_league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/nba/nba/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/nba/nba/nba_nba_game_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/nba/nba/nba_nba_league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/nba/oddsportal/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/nba/oddsportal/nba_oddsportal_league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/nba/sportsdb/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/nba/sportsdb/nba_sportsdb_league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/nba/sportsreference/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/nba/sportsreference/nba_sportsreference_league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/ncaab/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/ncaab/combined/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/ncaab/combined/ncaab_combined_league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/ncaab/espn/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/ncaab/espn/ncaab_espn_league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/ncaab/oddsportal/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/ncaab/oddsportal/ncaab_oddsportal_league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/ncaab/sportsreference/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/ncaab/sportsreference/ncaab_sportsreference_league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/ncaaf/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/ncaaf/combined/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/ncaaf/combined/ncaaf_combined_league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/ncaaf/espn/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/ncaaf/espn/ncaaf_espn_league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/ncaaf/oddsportal/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/ncaaf/oddsportal/ncaaf_oddsportal_league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/news_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/nfl/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/nfl/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/nfl/aussportsbetting/nfl_aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/nfl/combined/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/nfl/combined/nfl_combined_league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/nfl/espn/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/nfl/espn/nfl_espn_league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/nfl/oddsportal/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/nfl/oddsportal/nfl_oddsportal_league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/nfl/sportsdb/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/nfl/sportsdb/nfl_sportsdb_league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/odds_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/oddsportal/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/oddsportal/decrypt.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/oddsportal/oddsportal_bookie_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/oddsportal/oddsportal_game_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/oddsportal/oddsportal_league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/oddsportal/oddsportal_odds_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/oddsportal/oddsportal_team_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/oddsportal/oddsportal_venue_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/season_type.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/social_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/sportsdb/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/sportsdb/sportsdb_game_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/sportsdb/sportsdb_league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/sportsdb/sportsdb_team_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/sportsdb/sportsdb_venue_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/sportsreference/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/sportsreference/sportsreference_game_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/sportsreference/sportsreference_league_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/sportsreference/sportsreference_team_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/sportsreference/sportsreference_venue_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/team_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/venue_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/weather/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/weather/gribstream/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/weather/gribstream/gribstream_weather_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/weather/multi_weather_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/weather/openmeteo/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/weather/openmeteo/openmeteo_weather_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/weather_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/wikipedia/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/wikipedia/wikipedia_venue_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/x/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/x/x_social_model.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/logger.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/loglevel.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/playwright.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/proxy_session.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/session.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/sportsball.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/vendor/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball/vendor/pygooglenews/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball.egg-info/dependency_links.txt +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball.egg-info/entry_points.txt +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball.egg-info/not-zip-safe +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball.egg-info/requires.txt +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/sportsball.egg-info/top_level.txt +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/afl/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/afl/afltables/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/afl/afltables/afl_afltables_game_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/afl/afltables/afl_afltables_league_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/aussportsbetting/aussportsbetting_game_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/combined/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/espn/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/espn/espn_game_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/game_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/google/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/google/google_address_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/google/google_news_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/nba/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/nba/nba/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/nba/nba/nba_nba_game_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/nba/nba/nba_nba_league_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/nba/nba/nba_nba_team_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/nba/sportsdb/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/nba/sportsdb/nba_sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/nba/sportsreference/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/nba/sportsreference/nba_sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/ncaab/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/ncaab/sportsreference/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/ncaab/sportsreference/ncaab_sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/nfl/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/nfl/sportsdb/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/nfl/sportsdb/nfl_sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/oddsportal/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/oddsportal/decrypt_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/oddsportal/oddsportal_game_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/oddsportal/oddsportal_league_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/social_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/sportsdb/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/sportsdb/sportsdb_game_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/sportsdb/sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/sportsdb/sportsdb_team_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/sportsdb/sportsdb_venue_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/sportsreference/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/sportsreference/sportsreference_game_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/sportsreference/sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/sportsreference/sportsreference_player_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/sportsreference/sportsreference_team_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/sportsreference/sportsreference_venue_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/team_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/x/__init__.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/data/x/x_social_model_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/tests/proxy_session_test.py +0 -0
- {sportsball-0.3.42 → sportsball-0.3.44}/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.44',
|
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',
|
@@ -13,7 +13,7 @@ from .afl_afl_venue_model import create_afl_afl_venue_model
|
|
13
13
|
|
14
14
|
def create_afl_afl_game_model(
|
15
15
|
team_names: list[str],
|
16
|
-
players: list[list[tuple[str, str]]],
|
16
|
+
players: list[list[tuple[str, str, str, str]]],
|
17
17
|
dt: datetime.datetime,
|
18
18
|
venue_name: str,
|
19
19
|
session: requests_cache.CachedSession,
|
@@ -44,15 +44,17 @@ class AFLAFLLeagueModel(LeagueModel):
|
|
44
44
|
"span", {"class": re.compile(".*team-lineups__team-name.*")}
|
45
45
|
):
|
46
46
|
team_names.append(span.get_text().strip())
|
47
|
-
teams_players: list[list[tuple[str, str]]] = []
|
47
|
+
teams_players: list[list[tuple[str, str, str, str]]] = []
|
48
48
|
for div_team_players in div.find_all(
|
49
49
|
"div", {"class": re.compile(".*team-lineups__positions-players.*")}
|
50
50
|
):
|
51
|
-
team_players: list[tuple[str, str]] = []
|
51
|
+
team_players: list[tuple[str, str, str, str]] = []
|
52
52
|
for a in div_team_players.find_all(
|
53
53
|
"a", {"class": re.compile(".*js-player-profile-link.*")}
|
54
54
|
):
|
55
55
|
player_id = "afl:" + a.get("data-player-id")
|
56
|
+
first_name = a.get("data-first-name")
|
57
|
+
second_name = a.get("data-surname")
|
56
58
|
player_number = None
|
57
59
|
for span_player_number in a.find_all(
|
58
60
|
"span",
|
@@ -66,7 +68,9 @@ class AFLAFLLeagueModel(LeagueModel):
|
|
66
68
|
)
|
67
69
|
if player_number is None:
|
68
70
|
raise ValueError("player_number is null")
|
69
|
-
team_players.append(
|
71
|
+
team_players.append(
|
72
|
+
(player_id, player_number, first_name, second_name)
|
73
|
+
)
|
70
74
|
teams_players.append(team_players)
|
71
75
|
dt = None
|
72
76
|
for time in div.find_all(
|
@@ -79,7 +83,7 @@ class AFLAFLLeagueModel(LeagueModel):
|
|
79
83
|
for span in div.find_all(
|
80
84
|
"span", {"class": re.compile(".*match-list-alt__header-venue.*")}
|
81
85
|
):
|
82
|
-
venue_name = span.get_text().strip()
|
86
|
+
venue_name = span.get_text().strip().replace(",", "")
|
83
87
|
if venue_name is None:
|
84
88
|
raise ValueError("venue_name is null")
|
85
89
|
if dt is None:
|
@@ -6,6 +6,7 @@ from ...player_model import PlayerModel
|
|
6
6
|
def create_afl_afl_player_model(
|
7
7
|
identifier: str,
|
8
8
|
player_number: str,
|
9
|
+
name: str,
|
9
10
|
) -> PlayerModel:
|
10
11
|
"""Create a player model from AFL AFL."""
|
11
12
|
return PlayerModel(
|
@@ -19,4 +20,5 @@ def create_afl_afl_player_model(
|
|
19
20
|
offensive_rebounds=None,
|
20
21
|
assists=None,
|
21
22
|
turnovers=None,
|
23
|
+
name=name,
|
22
24
|
)
|
@@ -13,14 +13,16 @@ from .afl_afl_player_model import create_afl_afl_player_model
|
|
13
13
|
|
14
14
|
def create_afl_afl_team_model(
|
15
15
|
team_name: str,
|
16
|
-
players: list[tuple[str, str]],
|
16
|
+
players: list[tuple[str, str, str, str]],
|
17
17
|
session: requests_cache.CachedSession,
|
18
18
|
dt: datetime.datetime,
|
19
19
|
) -> TeamModel:
|
20
20
|
"""Create a team model from AFL AFL."""
|
21
21
|
player_models = [
|
22
|
-
create_afl_afl_player_model(
|
23
|
-
|
22
|
+
create_afl_afl_player_model(
|
23
|
+
identifier, player_number, " ".join([first_name, second_name])
|
24
|
+
)
|
25
|
+
for identifier, player_number, first_name, second_name in players
|
24
26
|
]
|
25
27
|
return TeamModel(
|
26
28
|
identifier=team_name,
|
{sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/afl/afltables/afl_afltables_game_model.py
RENAMED
@@ -152,7 +152,7 @@ def _create_afl_afltables_game_model(
|
|
152
152
|
|
153
153
|
def _find_teams_metadata(
|
154
154
|
soup: BeautifulSoup, team_infos: list[tuple[str, str, int]]
|
155
|
-
) -> list[tuple[str, list[tuple[str, str, int | None]], int]]:
|
155
|
+
) -> list[tuple[str, list[tuple[str, str, int | None, str]], int]]:
|
156
156
|
def _is_correct_table(table: Tag, name: str) -> bool:
|
157
157
|
for th in table.find_all("th"):
|
158
158
|
header_text = th.get_text().strip()
|
@@ -160,8 +160,8 @@ def _create_afl_afltables_game_model(
|
|
160
160
|
return True
|
161
161
|
return False
|
162
162
|
|
163
|
-
def _find_players(table: Tag) -> list[tuple[str, str, int | None]]:
|
164
|
-
players: list[tuple[str, str, int | None]] = []
|
163
|
+
def _find_players(table: Tag) -> list[tuple[str, str, int | None, str]]:
|
164
|
+
players: list[tuple[str, str, int | None, str]] = []
|
165
165
|
for tr in table.find_all("tr"):
|
166
166
|
player_row = False
|
167
167
|
player_url = None
|
@@ -172,10 +172,18 @@ def _create_afl_afltables_game_model(
|
|
172
172
|
player_row = True
|
173
173
|
if player_row and player_url is not None:
|
174
174
|
jersey = None
|
175
|
+
name = None
|
175
176
|
kicks = None
|
176
177
|
for count, td in enumerate(tr.find_all("td")):
|
177
178
|
if count == 0:
|
178
179
|
jersey = td.get_text().strip()
|
180
|
+
elif count == 1:
|
181
|
+
name = " ".join(
|
182
|
+
[
|
183
|
+
x.strip()
|
184
|
+
for x in reversed(td.get_text().strip().split(","))
|
185
|
+
]
|
186
|
+
)
|
179
187
|
elif count == 2:
|
180
188
|
kicks_text = td.get_text().strip()
|
181
189
|
if kicks_text:
|
@@ -183,8 +191,10 @@ def _create_afl_afltables_game_model(
|
|
183
191
|
|
184
192
|
if jersey is None:
|
185
193
|
raise ValueError("jersey is null.")
|
194
|
+
if name is None:
|
195
|
+
raise ValueError("name is null")
|
186
196
|
|
187
|
-
players.append((player_url, jersey, kicks))
|
197
|
+
players.append((player_url, jersey, kicks, name))
|
188
198
|
return players
|
189
199
|
|
190
200
|
team_metadata = []
|
{sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/afl/afltables/afl_afltables_player_model.py
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
"""AFL AFLTables player model."""
|
2
2
|
|
3
|
-
# pylint: disable=line-too-long,duplicate-code
|
3
|
+
# pylint: disable=line-too-long,duplicate-code,too-many-arguments
|
4
4
|
import datetime
|
5
5
|
import os
|
6
6
|
from urllib.parse import urlparse
|
@@ -13,7 +13,7 @@ from ...player_model import PlayerModel
|
|
13
13
|
|
14
14
|
|
15
15
|
def _create_afl_afltables_player_model(
|
16
|
-
player_url: str, jersey: str, kicks: int | None
|
16
|
+
player_url: str, jersey: str, kicks: int | None, name: str
|
17
17
|
) -> PlayerModel:
|
18
18
|
o = urlparse(player_url)
|
19
19
|
last_component = o.path.split("/")[-1]
|
@@ -30,14 +30,15 @@ def _create_afl_afltables_player_model(
|
|
30
30
|
offensive_rebounds=None,
|
31
31
|
assists=None,
|
32
32
|
turnovers=None,
|
33
|
+
name=name,
|
33
34
|
)
|
34
35
|
|
35
36
|
|
36
37
|
@MEMORY.cache
|
37
38
|
def _cached_create_afl_afltables_player_model(
|
38
|
-
player_url: str, jersey: str, kicks: int | None
|
39
|
+
player_url: str, jersey: str, kicks: int | None, name: str
|
39
40
|
) -> PlayerModel:
|
40
|
-
return _create_afl_afltables_player_model(player_url, jersey, kicks)
|
41
|
+
return _create_afl_afltables_player_model(player_url, jersey, kicks, name)
|
41
42
|
|
42
43
|
|
43
44
|
def create_afl_afltables_player_model(
|
@@ -46,12 +47,18 @@ def create_afl_afltables_player_model(
|
|
46
47
|
kicks: int | None,
|
47
48
|
dt: datetime.datetime,
|
48
49
|
session: requests_cache.CachedSession,
|
50
|
+
name: str,
|
49
51
|
) -> PlayerModel:
|
50
52
|
"""Create a player model from AFL Tables."""
|
51
53
|
if (
|
52
54
|
not pytest_is_running.is_running()
|
53
55
|
and dt < datetime.datetime.now() - datetime.timedelta(days=7)
|
54
56
|
):
|
55
|
-
return _cached_create_afl_afltables_player_model(
|
57
|
+
return _cached_create_afl_afltables_player_model(
|
58
|
+
player_url,
|
59
|
+
jersey,
|
60
|
+
kicks,
|
61
|
+
name, # pyright: ignore
|
62
|
+
)
|
56
63
|
with session.cache_disabled():
|
57
|
-
return _create_afl_afltables_player_model(player_url, jersey, kicks)
|
64
|
+
return _create_afl_afltables_player_model(player_url, jersey, kicks, name)
|
{sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/afl/afltables/afl_afltables_team_model.py
RENAMED
@@ -44,7 +44,7 @@ _TEAM_NAME_MAP = {
|
|
44
44
|
|
45
45
|
def _create_afl_afltables_team_model(
|
46
46
|
team_url: str,
|
47
|
-
players: list[tuple[str, str, int | None]],
|
47
|
+
players: list[tuple[str, str, int | None, str]],
|
48
48
|
points: float,
|
49
49
|
session: requests_cache.CachedSession,
|
50
50
|
last_ladder_ranks: dict[str, int] | None,
|
@@ -71,8 +71,10 @@ def _create_afl_afltables_team_model(
|
|
71
71
|
identifier=identifier,
|
72
72
|
name=name,
|
73
73
|
players=[ # pyright: ignore
|
74
|
-
create_afl_afltables_player_model(
|
75
|
-
|
74
|
+
create_afl_afltables_player_model(
|
75
|
+
player_url, jersey, kicks, dt, session, name
|
76
|
+
)
|
77
|
+
for player_url, jersey, kicks, name in players
|
76
78
|
],
|
77
79
|
odds=[],
|
78
80
|
points=points,
|
@@ -87,7 +89,7 @@ def _create_afl_afltables_team_model(
|
|
87
89
|
@MEMORY.cache(ignore=["session"])
|
88
90
|
def _cached_create_afl_afltables_team_model(
|
89
91
|
team_url: str,
|
90
|
-
players: list[tuple[str, str, int | None]],
|
92
|
+
players: list[tuple[str, str, int | None, str]],
|
91
93
|
points: float,
|
92
94
|
session: requests_cache.CachedSession,
|
93
95
|
last_ladder_ranks: dict[str, int] | None,
|
@@ -101,7 +103,7 @@ def _cached_create_afl_afltables_team_model(
|
|
101
103
|
|
102
104
|
def create_afl_afltables_team_model(
|
103
105
|
team_url: str,
|
104
|
-
players: list[tuple[str, str, int | None]],
|
106
|
+
players: list[tuple[str, str, int | None, str]],
|
105
107
|
points: float,
|
106
108
|
session: requests_cache.CachedSession,
|
107
109
|
last_ladder_ranks: dict[str, int] | None,
|
{sportsball-0.3.42 → sportsball-0.3.44}/sportsball/data/afl/combined/afl_combined_league_model.py
RENAMED
@@ -242,7 +242,18 @@ AFL_VENUE_IDENTITY_MAP = {
|
|
242
242
|
"Ondrej Nepela Arena": TIPOS_ARENA,
|
243
243
|
"Barossa Park": BAROSSA_PARK,
|
244
244
|
}
|
245
|
-
|
245
|
+
RYAN_LESTER = "afl:CD_I291548"
|
246
|
+
JACK_PAYNE = "afl:CD_I1002347"
|
247
|
+
DAYNE_ZORKO = "afl:CD_I261224"
|
248
|
+
JAMES_WORPEL = "James_Worpel"
|
249
|
+
JOSH_WEDDLE = "Josh_Weddle"
|
250
|
+
AFL_PLAYER_IDENTITY_MAP = {
|
251
|
+
"afl:CD_I291548": RYAN_LESTER,
|
252
|
+
"afl:CD_I1002347": JACK_PAYNE,
|
253
|
+
"afl:CD_I261224": DAYNE_ZORKO,
|
254
|
+
"James_Worpel": JAMES_WORPEL,
|
255
|
+
"Josh_Weddle": JOSH_WEDDLE,
|
256
|
+
}
|
246
257
|
|
247
258
|
|
248
259
|
class AFLCombinedLeagueModel(CombinedLeagueModel):
|
@@ -271,4 +282,4 @@ class AFLCombinedLeagueModel(CombinedLeagueModel):
|
|
271
282
|
|
272
283
|
@classmethod
|
273
284
|
def player_identity_map(cls) -> dict[str, str]:
|
274
|
-
return
|
285
|
+
return AFL_PLAYER_IDENTITY_MAP
|
@@ -1,6 +1,6 @@
|
|
1
1
|
"""Combined game model."""
|
2
2
|
|
3
|
-
# pylint: disable=too-many-locals,line-too-long
|
3
|
+
# pylint: disable=too-many-locals,line-too-long,too-many-arguments
|
4
4
|
import logging
|
5
5
|
|
6
6
|
import requests
|
@@ -35,6 +35,7 @@ def _team_models(
|
|
35
35
|
game_models: list[GameModel],
|
36
36
|
team_identity_map: dict[str, str],
|
37
37
|
player_identity_map: dict[str, str],
|
38
|
+
names: dict[str, str],
|
38
39
|
) -> list[TeamModel]:
|
39
40
|
team_models: dict[str, list[TeamModel]] = {}
|
40
41
|
for game_model in game_models:
|
@@ -51,7 +52,7 @@ def _team_models(
|
|
51
52
|
team_model
|
52
53
|
]
|
53
54
|
return [
|
54
|
-
create_combined_team_model(v, k, player_identity_map) # pyright: ignore
|
55
|
+
create_combined_team_model(v, k, player_identity_map, names) # pyright: ignore
|
55
56
|
for k, v in team_models.items()
|
56
57
|
]
|
57
58
|
|
@@ -62,10 +63,13 @@ def create_combined_game_model(
|
|
62
63
|
team_identity_map: dict[str, str],
|
63
64
|
player_identity_map: dict[str, str],
|
64
65
|
session: requests.Session,
|
66
|
+
names: dict[str, str],
|
65
67
|
) -> GameModel:
|
66
68
|
"""Create a game model by combining many game models."""
|
67
69
|
venue_models, full_venue_identity = _venue_models(game_models, venue_identity_map)
|
68
|
-
full_team_models = _team_models(
|
70
|
+
full_team_models = _team_models(
|
71
|
+
game_models, team_identity_map, player_identity_map, names
|
72
|
+
)
|
69
73
|
attendance = None
|
70
74
|
end_dt = None
|
71
75
|
year = None
|
@@ -87,6 +87,7 @@ class CombinedLeagueModel(LeagueModel):
|
|
87
87
|
game_components = sorted(game_components)
|
88
88
|
key = "-".join(game_components)
|
89
89
|
games[key] = games.get(key, []) + [game_model]
|
90
|
+
names: dict[str, str] = {}
|
90
91
|
for game_models in games.values():
|
91
92
|
yield create_combined_game_model( # type: ignore
|
92
93
|
game_models,
|
@@ -94,4 +95,5 @@ class CombinedLeagueModel(LeagueModel):
|
|
94
95
|
team_identity_map,
|
95
96
|
self.player_identity_map(),
|
96
97
|
self.session,
|
98
|
+
names,
|
97
99
|
)
|
@@ -17,6 +17,7 @@ def create_combined_player_model(
|
|
17
17
|
offensive_rebounds = None
|
18
18
|
assists = None
|
19
19
|
turnovers = None
|
20
|
+
name = None
|
20
21
|
for player_model in player_models:
|
21
22
|
player_model_jersey = player_model.jersey
|
22
23
|
if player_model_jersey is not None:
|
@@ -45,6 +46,11 @@ def create_combined_player_model(
|
|
45
46
|
player_model_turnovers = player_model.turnovers
|
46
47
|
if player_model_turnovers is not None:
|
47
48
|
turnovers = player_model_turnovers
|
49
|
+
player_model_name = player_model.name
|
50
|
+
if player_model_name is not None:
|
51
|
+
name = player_model_name
|
52
|
+
if name is None:
|
53
|
+
raise ValueError("name is null.")
|
48
54
|
return PlayerModel(
|
49
55
|
identifier=identifier,
|
50
56
|
jersey=jersey,
|
@@ -56,4 +62,5 @@ def create_combined_player_model(
|
|
56
62
|
offensive_rebounds=offensive_rebounds,
|
57
63
|
assists=assists,
|
58
64
|
turnovers=turnovers,
|
65
|
+
name=name,
|
59
66
|
)
|
@@ -1,7 +1,8 @@
|
|
1
1
|
"""Combined team model."""
|
2
2
|
|
3
3
|
# pylint: disable=too-many-locals
|
4
|
-
import
|
4
|
+
import re
|
5
|
+
import unicodedata
|
5
6
|
|
6
7
|
from ..news_model import NewsModel
|
7
8
|
from ..odds_model import OddsModel
|
@@ -10,11 +11,14 @@ from ..social_model import SocialModel
|
|
10
11
|
from ..team_model import TeamModel
|
11
12
|
from .combined_player_model import create_combined_player_model
|
12
13
|
|
14
|
+
REGEX = re.compile("[^a-zA-Z]")
|
15
|
+
|
13
16
|
|
14
17
|
def create_combined_team_model(
|
15
18
|
team_models: list[TeamModel],
|
16
19
|
identifier: str,
|
17
20
|
player_identity_map: dict[str, str],
|
21
|
+
names: dict[str, str],
|
18
22
|
) -> TeamModel:
|
19
23
|
"""Create a team model by combining many team models."""
|
20
24
|
location = None
|
@@ -31,16 +35,16 @@ def create_combined_team_model(
|
|
31
35
|
location = team_model_location
|
32
36
|
for player_model in team_model.players:
|
33
37
|
player_id = player_model.identifier
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
else:
|
38
|
+
player_name_key = REGEX.sub(
|
39
|
+
"", unicodedata.normalize("NFC", player_model.name).lower()
|
40
|
+
)
|
41
|
+
if player_model.identifier in player_identity_map:
|
39
42
|
player_id = player_identity_map[player_id]
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
43
|
+
elif player_name_key in names:
|
44
|
+
player_id = names[player_name_key]
|
45
|
+
else:
|
46
|
+
names[player_name_key] = player_id
|
47
|
+
players[player_id] = players.get(player_id, []) + [player_model]
|
44
48
|
for odds_model in team_model.odds:
|
45
49
|
key = f"{odds_model.bookie.identifier}-{odds_model.odds}"
|
46
50
|
odds[key] = odds.get(key, []) + [odds_model]
|
@@ -29,6 +29,10 @@ def _create_espn_player_model(
|
|
29
29
|
fumbles = stat["value"]
|
30
30
|
if stat["name"] == "fumblesLost":
|
31
31
|
fumbles_lost = stat["value"]
|
32
|
+
athlete_response = session.get(player["athlete"]["$ref"])
|
33
|
+
athlete_response.raise_for_status()
|
34
|
+
athlete_dict = athlete_response.json()
|
35
|
+
name = athlete_dict["fullName"]
|
32
36
|
return PlayerModel(
|
33
37
|
identifier=identifier,
|
34
38
|
jersey=jersey,
|
@@ -40,6 +44,7 @@ def _create_espn_player_model(
|
|
40
44
|
offensive_rebounds=None,
|
41
45
|
assists=None,
|
42
46
|
turnovers=None,
|
47
|
+
name=name,
|
43
48
|
)
|
44
49
|
|
45
50
|
|
@@ -2179,6 +2179,24 @@ BOK_CENTER = SportsballGeocodeTuple(
|
|
2179
2179
|
housenumber="200",
|
2180
2180
|
country="USA",
|
2181
2181
|
)
|
2182
|
+
LEGACY_CENTER = SportsballGeocodeTuple(
|
2183
|
+
city="Lake Charles",
|
2184
|
+
state="LA",
|
2185
|
+
postal="70607",
|
2186
|
+
lat=30.1755,
|
2187
|
+
lng=-93.2095,
|
2188
|
+
housenumber="",
|
2189
|
+
country="USA",
|
2190
|
+
)
|
2191
|
+
EXTRAMILE_ARENA = SportsballGeocodeTuple(
|
2192
|
+
city="Boise",
|
2193
|
+
state="ID",
|
2194
|
+
postal="",
|
2195
|
+
lat=43.6035,
|
2196
|
+
lng=-116.199,
|
2197
|
+
housenumber="1401",
|
2198
|
+
country="USA",
|
2199
|
+
)
|
2182
2200
|
_CACHED_GEOCODES: dict[str, Any] = {
|
2183
2201
|
"S.C.G. - Australia": SCG,
|
2184
2202
|
"Victoria Park - Australia": SportsballGeocodeTuple(
|
@@ -5164,15 +5182,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
5164
5182
|
housenumber="1333",
|
5165
5183
|
country="USA",
|
5166
5184
|
),
|
5167
|
-
"ExtraMile Arena, Boise, Idaho":
|
5168
|
-
city="Boise",
|
5169
|
-
state="ID",
|
5170
|
-
postal="",
|
5171
|
-
lat=43.6035,
|
5172
|
-
lng=-116.199,
|
5173
|
-
housenumber="1401",
|
5174
|
-
country="USA",
|
5175
|
-
),
|
5185
|
+
"ExtraMile Arena, Boise, Idaho": EXTRAMILE_ARENA,
|
5176
5186
|
"Marriott Center, Provo, Utah": SportsballGeocodeTuple(
|
5177
5187
|
city="Provo",
|
5178
5188
|
state="UT",
|
@@ -6050,15 +6060,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
6050
6060
|
housenumber="1",
|
6051
6061
|
country="USA",
|
6052
6062
|
),
|
6053
|
-
"The Legacy Center, Lake Charles, Louisiana":
|
6054
|
-
city="Lake Charles",
|
6055
|
-
state="LA",
|
6056
|
-
postal="70607",
|
6057
|
-
lat=30.1755,
|
6058
|
-
lng=-93.2095,
|
6059
|
-
housenumber="",
|
6060
|
-
country="USA",
|
6061
|
-
),
|
6063
|
+
"The Legacy Center, Lake Charles, Louisiana": LEGACY_CENTER,
|
6062
6064
|
"Watsco Center, Coral Gables, Florida": WATSO_CENTER,
|
6063
6065
|
"Peter W. Stott Center, Portland, Oregon": SportsballGeocodeTuple(
|
6064
6066
|
city="Portland",
|
@@ -12160,6 +12162,111 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
12160
12162
|
housenumber="9000",
|
12161
12163
|
country="USA",
|
12162
12164
|
),
|
12165
|
+
"Titan Field House, Melbourne, Florida": SportsballGeocodeTuple(
|
12166
|
+
city="Melbourne",
|
12167
|
+
state="FL",
|
12168
|
+
postal="3865",
|
12169
|
+
lat=28.16992,
|
12170
|
+
lng=-80.66588,
|
12171
|
+
housenumber="32935",
|
12172
|
+
country="USA",
|
12173
|
+
),
|
12174
|
+
"H&HP Complex, Lake Charles, Louisiana": LEGACY_CENTER,
|
12175
|
+
"Bill Harris Arena, Birmingham, Alabama": SportsballGeocodeTuple(
|
12176
|
+
city="Birmingham",
|
12177
|
+
state="AL",
|
12178
|
+
postal="35208",
|
12179
|
+
lat=33.495,
|
12180
|
+
lng=-86.874,
|
12181
|
+
housenumber="2331",
|
12182
|
+
country="USA",
|
12183
|
+
),
|
12184
|
+
"Rochester, New York": SportsballGeocodeTuple(
|
12185
|
+
city="Rochester",
|
12186
|
+
state="NY",
|
12187
|
+
postal="",
|
12188
|
+
lat=43.165556,
|
12189
|
+
lng=-77.616111,
|
12190
|
+
housenumber="",
|
12191
|
+
country="USA",
|
12192
|
+
),
|
12193
|
+
"North Little Rock, Arkansas": SportsballGeocodeTuple(
|
12194
|
+
city="North Little Rock",
|
12195
|
+
state="AR",
|
12196
|
+
postal="",
|
12197
|
+
lat=34.780833,
|
12198
|
+
lng=-92.256944,
|
12199
|
+
housenumber="",
|
12200
|
+
country="USA",
|
12201
|
+
),
|
12202
|
+
"Taco Bell Arena, Boise, Idaho": EXTRAMILE_ARENA,
|
12203
|
+
"Kent, Washington": SportsballGeocodeTuple(
|
12204
|
+
city="Kent",
|
12205
|
+
state="WA",
|
12206
|
+
postal="",
|
12207
|
+
lat=47.382778,
|
12208
|
+
lng=-122.226944,
|
12209
|
+
housenumber="",
|
12210
|
+
country="USA",
|
12211
|
+
),
|
12212
|
+
"Magness Arena, Denver, Colorado": SportsballGeocodeTuple(
|
12213
|
+
city="Denver",
|
12214
|
+
state="CO",
|
12215
|
+
postal="",
|
12216
|
+
lat=39.682106,
|
12217
|
+
lng=-104.961592,
|
12218
|
+
housenumber="2240",
|
12219
|
+
country="USA",
|
12220
|
+
),
|
12221
|
+
"ESPN Wide World of Sports, Orlando, Florida": ESPN_WIDE_WORLD_OF_SPORTS_COMPLEX,
|
12222
|
+
"Scotiabank Arena, Toronto": SCOTIABANK_ARENA,
|
12223
|
+
"Chaparral Center, Midland, Texas": SportsballGeocodeTuple(
|
12224
|
+
city="Midland",
|
12225
|
+
state="TX",
|
12226
|
+
postal="",
|
12227
|
+
lat=32.028,
|
12228
|
+
lng=-102.103,
|
12229
|
+
housenumber="2240",
|
12230
|
+
country="USA",
|
12231
|
+
),
|
12232
|
+
"U.S. Bank Stadium, Minneapolis, Minnesota": US_BANK_STADIUM,
|
12233
|
+
"Honda Center, Anaheim, California": SportsballGeocodeTuple(
|
12234
|
+
city="Anaheim",
|
12235
|
+
state="CA",
|
12236
|
+
postal="",
|
12237
|
+
lat=33.807778,
|
12238
|
+
lng=-117.876667,
|
12239
|
+
housenumber="2695",
|
12240
|
+
country="USA",
|
12241
|
+
),
|
12242
|
+
"NJIT Wellness and Events Center, Newark, New Jersey": WELLNESS_AND_EVENTS_CENTER,
|
12243
|
+
"McGrath-Phillips Arena, Chicago, Illinois": SportsballGeocodeTuple(
|
12244
|
+
city="Chicago",
|
12245
|
+
state="IL",
|
12246
|
+
postal="60604",
|
12247
|
+
lat=41.923901,
|
12248
|
+
lng=-87.653167,
|
12249
|
+
housenumber="2323",
|
12250
|
+
country="USA",
|
12251
|
+
),
|
12252
|
+
"Nationwide Arena, Columbus, Ohio": SportsballGeocodeTuple(
|
12253
|
+
city="Columbus",
|
12254
|
+
state="OH",
|
12255
|
+
postal="",
|
12256
|
+
lat=39.969283,
|
12257
|
+
lng=-83.006111,
|
12258
|
+
housenumber="200",
|
12259
|
+
country="USA",
|
12260
|
+
),
|
12261
|
+
"Jacksonville Veteran's Memorial Arena, Jacksonville, Florida": SportsballGeocodeTuple(
|
12262
|
+
city="Jacksonville",
|
12263
|
+
state="FL",
|
12264
|
+
postal="32202",
|
12265
|
+
lat=30.325769,
|
12266
|
+
lng=-81.645069,
|
12267
|
+
housenumber="300",
|
12268
|
+
country="USA",
|
12269
|
+
),
|
12163
12270
|
}
|
12164
12271
|
|
12165
12272
|
|
@@ -25,10 +25,6 @@ def _create_nba_nba_team_model(
|
|
25
25
|
) -> TeamModel | None:
|
26
26
|
"""Create a team model from NBA API."""
|
27
27
|
suffix = "_A" if home else "_B"
|
28
|
-
# game_rotation = gamerotation.GameRotation(game_id=row["GAME_ID"])
|
29
|
-
# player_dict = {}
|
30
|
-
# for _, gr_row in game_rotation.get_data_frames()[int(home)].iterrows():
|
31
|
-
# player_dict[gr_row["PERSON_ID"]] = gr_row
|
32
28
|
identifier = row["TEAM_ID" + suffix]
|
33
29
|
if identifier is None:
|
34
30
|
return None
|
@@ -41,9 +37,7 @@ def _create_nba_nba_team_model(
|
|
41
37
|
return TeamModel(
|
42
38
|
identifier=str(identifier),
|
43
39
|
name=name,
|
44
|
-
players=[
|
45
|
-
# create_nba_nba_player_model(v, player_index) for v in player_dict.values()
|
46
|
-
],
|
40
|
+
players=[],
|
47
41
|
odds=[],
|
48
42
|
points=float(row["PTS" + suffix]),
|
49
43
|
ladder_rank=None,
|
@@ -91,7 +91,6 @@ sportsball/data/nba/espn/nba_espn_league_model.py
|
|
91
91
|
sportsball/data/nba/nba/__init__.py
|
92
92
|
sportsball/data/nba/nba/nba_nba_game_model.py
|
93
93
|
sportsball/data/nba/nba/nba_nba_league_model.py
|
94
|
-
sportsball/data/nba/nba/nba_nba_player_model.py
|
95
94
|
sportsball/data/nba/nba/nba_nba_team_model.py
|
96
95
|
sportsball/data/nba/oddsportal/__init__.py
|
97
96
|
sportsball/data/nba/oddsportal/nba_oddsportal_league_model.py
|
@@ -185,7 +184,6 @@ tests/data/nba/__init__.py
|
|
185
184
|
tests/data/nba/nba/__init__.py
|
186
185
|
tests/data/nba/nba/nba_nba_game_model_test.py
|
187
186
|
tests/data/nba/nba/nba_nba_league_model_test.py
|
188
|
-
tests/data/nba/nba/nba_nba_player_model_test.py
|
189
187
|
tests/data/nba/nba/nba_nba_team_model_test.py
|
190
188
|
tests/data/nba/sportsdb/__init__.py
|
191
189
|
tests/data/nba/sportsdb/nba_sportsdb_league_model_test.py
|