sportsball 0.3.43__tar.gz → 0.3.45__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.43/sportsball.egg-info → sportsball-0.3.45}/PKG-INFO +1 -1
- {sportsball-0.3.43 → sportsball-0.3.45}/setup.py +1 -1
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/__init__.py +1 -1
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/address_model.py +7 -2
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/afl/afl/afl_afl_game_model.py +1 -1
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/afl/afl/afl_afl_league_model.py +7 -3
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/afl/afl/afl_afl_player_model.py +2 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/afl/afl/afl_afl_team_model.py +5 -3
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/afl/afltables/afl_afltables_game_model.py +14 -4
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/afl/afltables/afl_afltables_player_model.py +13 -6
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/afl/afltables/afl_afltables_team_model.py +7 -5
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/afl/combined/afl_combined_league_model.py +13 -2
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/combined/combined_game_model.py +7 -3
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/combined/combined_league_model.py +2 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/combined/combined_player_model.py +7 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/combined/combined_team_model.py +14 -10
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/espn/espn_player_model.py +5 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/google/google_address_model.py +194 -27
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/nba/nba/nba_nba_team_model.py +1 -7
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/player_model.py +1 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/sportsreference/sportsreference_player_model.py +1 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/venue_model.py +2 -1
- {sportsball-0.3.43 → sportsball-0.3.45/sportsball.egg-info}/PKG-INFO +1 -1
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball.egg-info/SOURCES.txt +0 -2
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/afl/afltables/afl_afltables_player_model_test.py +1 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/combined/combined_game_model_test.py +2 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/combined/combined_player_model_test.py +1 -0
- sportsball-0.3.45/tests/data/espn/espn_player_model_test.py +52 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/player_model_test.py +1 -0
- sportsball-0.3.43/sportsball/data/nba/nba/nba_nba_player_model.py +0 -64
- sportsball-0.3.43/tests/data/espn/espn_player_model_test.py +0 -29
- sportsball-0.3.43/tests/data/nba/nba/nba_nba_player_model_test.py +0 -30
- {sportsball-0.3.43 → sportsball-0.3.45}/LICENSE +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/MANIFEST.in +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/README.md +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/requirements.txt +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/setup.cfg +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/__main__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/args.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/cache.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/afl/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/afl/afl/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/afl/afl/afl_afl_venue_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/afl/afltables/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/afl/afltables/afl_afltables_league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/afl/afltables/afl_afltables_venue_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/afl/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/afl/aussportsbetting/afl_aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/afl/combined/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/afl/espn/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/afl/espn/afl_espn_league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/afl/oddsportal/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/afl/oddsportal/afl_oddsportal_league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/aussportsbetting/aussportsbetting_bookie_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/aussportsbetting/aussportsbetting_game_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/aussportsbetting/aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/aussportsbetting/aussportsbetting_odds_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/aussportsbetting/aussportsbetting_team_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/aussportsbetting/aussportsbetting_venue_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/bookie_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/combined/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/combined/combined_address_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/combined/combined_venue_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/combined/combined_weather_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/espn/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/espn/espn_bookie_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/espn/espn_game_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/espn/espn_league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/espn/espn_odds_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/espn/espn_team_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/espn/espn_venue_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/field_type.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/game_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/google/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/google/google_news_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/league.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/nba/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/nba/combined/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/nba/combined/nba_combined_league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/nba/espn/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/nba/espn/nba_espn_league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/nba/nba/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/nba/nba/nba_nba_game_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/nba/nba/nba_nba_league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/nba/oddsportal/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/nba/oddsportal/nba_oddsportal_league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/nba/sportsdb/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/nba/sportsdb/nba_sportsdb_league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/nba/sportsreference/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/nba/sportsreference/nba_sportsreference_league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/ncaab/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/ncaab/combined/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/ncaab/combined/ncaab_combined_league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/ncaab/espn/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/ncaab/espn/ncaab_espn_league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/ncaab/oddsportal/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/ncaab/oddsportal/ncaab_oddsportal_league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/ncaab/sportsreference/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/ncaab/sportsreference/ncaab_sportsreference_league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/ncaaf/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/ncaaf/combined/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/ncaaf/combined/ncaaf_combined_league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/ncaaf/espn/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/ncaaf/espn/ncaaf_espn_league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/ncaaf/oddsportal/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/ncaaf/oddsportal/ncaaf_oddsportal_league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/news_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/nfl/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/nfl/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/nfl/aussportsbetting/nfl_aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/nfl/combined/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/nfl/combined/nfl_combined_league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/nfl/espn/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/nfl/espn/nfl_espn_league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/nfl/oddsportal/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/nfl/oddsportal/nfl_oddsportal_league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/nfl/sportsdb/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/nfl/sportsdb/nfl_sportsdb_league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/odds_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/oddsportal/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/oddsportal/decrypt.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/oddsportal/oddsportal_bookie_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/oddsportal/oddsportal_game_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/oddsportal/oddsportal_league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/oddsportal/oddsportal_odds_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/oddsportal/oddsportal_team_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/oddsportal/oddsportal_venue_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/season_type.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/social_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/sportsdb/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/sportsdb/sportsdb_game_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/sportsdb/sportsdb_league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/sportsdb/sportsdb_team_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/sportsdb/sportsdb_venue_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/sportsreference/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/sportsreference/sportsreference_game_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/sportsreference/sportsreference_league_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/sportsreference/sportsreference_team_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/sportsreference/sportsreference_venue_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/team_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/weather/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/weather/gribstream/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/weather/gribstream/gribstream_weather_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/weather/multi_weather_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/weather/openmeteo/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/weather/openmeteo/openmeteo_weather_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/weather_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/wikipedia/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/wikipedia/wikipedia_venue_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/x/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/data/x/x_social_model.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/logger.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/loglevel.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/playwright.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/proxy_session.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/session.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/sportsball.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/vendor/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball/vendor/pygooglenews/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball.egg-info/dependency_links.txt +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball.egg-info/entry_points.txt +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball.egg-info/not-zip-safe +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball.egg-info/requires.txt +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/sportsball.egg-info/top_level.txt +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/afl/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/afl/afltables/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/afl/afltables/afl_afltables_game_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/afl/afltables/afl_afltables_league_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/aussportsbetting/aussportsbetting_game_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/combined/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/espn/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/espn/espn_game_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/game_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/google/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/google/google_address_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/google/google_news_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/nba/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/nba/nba/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/nba/nba/nba_nba_game_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/nba/nba/nba_nba_league_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/nba/nba/nba_nba_team_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/nba/sportsdb/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/nba/sportsdb/nba_sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/nba/sportsreference/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/nba/sportsreference/nba_sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/ncaab/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/ncaab/sportsreference/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/ncaab/sportsreference/ncaab_sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/nfl/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/nfl/sportsdb/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/nfl/sportsdb/nfl_sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/oddsportal/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/oddsportal/decrypt_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/oddsportal/oddsportal_game_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/oddsportal/oddsportal_league_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/social_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/sportsdb/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/sportsdb/sportsdb_game_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/sportsdb/sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/sportsdb/sportsdb_team_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/sportsdb/sportsdb_venue_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/sportsreference/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/sportsreference/sportsreference_game_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/sportsreference/sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/sportsreference/sportsreference_player_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/sportsreference/sportsreference_team_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/sportsreference/sportsreference_venue_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/team_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/x/__init__.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/data/x/x_social_model_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/tests/proxy_session_test.py +0 -0
- {sportsball-0.3.43 → sportsball-0.3.45}/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.45',
|
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',
|
@@ -1,10 +1,15 @@
|
|
1
1
|
"""A class for holding address information."""
|
2
2
|
|
3
|
+
from typing import Literal
|
4
|
+
|
3
5
|
from pydantic import BaseModel, Field
|
4
6
|
|
5
7
|
from .field_type import TYPE_KEY, FieldType
|
6
8
|
from .weather_model import WeatherModel
|
7
9
|
|
10
|
+
ADDRESS_LATITUDE_COLUMN: Literal["latitude"] = "latitude"
|
11
|
+
ADDRESS_LONGITUDE_COLUMN: Literal["longitude"] = "longitude"
|
12
|
+
|
8
13
|
|
9
14
|
class AddressModel(BaseModel):
|
10
15
|
"""The class for representing an address."""
|
@@ -14,8 +19,8 @@ class AddressModel(BaseModel):
|
|
14
19
|
zipcode: str | None = Field(
|
15
20
|
..., json_schema_extra={TYPE_KEY: FieldType.CATEGORICAL}
|
16
21
|
)
|
17
|
-
latitude: float | None
|
18
|
-
longitude: float | None
|
22
|
+
latitude: float | None = Field(..., alias=ADDRESS_LATITUDE_COLUMN)
|
23
|
+
longitude: float | None = Field(..., alias=ADDRESS_LONGITUDE_COLUMN)
|
19
24
|
housenumber: str | None = Field(
|
20
25
|
..., json_schema_extra={TYPE_KEY: FieldType.CATEGORICAL}
|
21
26
|
)
|
@@ -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(
|
@@ -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.43 → sportsball-0.3.45}/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.43 → sportsball-0.3.45}/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.43 → sportsball-0.3.45}/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.43 → sportsball-0.3.45}/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
|
|