Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import polars as pl | |
| from data import df, game_df, compute_pitch_stats | |
| from seasons import SEASONS, LATEST_SEASON | |
| from gradio_function import * | |
| from css import css | |
| # SEASONS = [int(season) for season in SEASONS] | |
| def filter_pitch_leaderboard(season, min_pitches): | |
| return ( | |
| compute_pitch_stats(df.filter(pl.col('game_year') == season)) | |
| .filter(pl.col('Count') >= min_pitches) | |
| .sort('CSW%', descending=True) | |
| .rename({'name': 'Player', 'pitch_name': 'Pitch'}) | |
| ) | |
| def create_pitch_leaderboard(): | |
| with gr.Blocks( | |
| css=css | |
| ) as demo: | |
| init_min_pitches = 100 | |
| init_season = LATEST_SEASON | |
| init_pitch_stats = filter_pitch_leaderboard(init_season, init_min_pitches) | |
| init_pitch_stats.write_csv('pitch_leaderboard.csv') | |
| pitch_leaderboard_df = gr.State(init_pitch_stats) | |
| with gr.Row(): | |
| season = gr.Dropdown(choices=SEASONS, value=init_season, label='Season') | |
| min_pitches = gr.Number(init_min_pitches, precision=0, label='Min. Pitches') | |
| pitch_leaderboard_download_file = gr.DownloadButton(value='pitch_leaderboard.csv', label='Download leaderboard') | |
| pitch_leaderboard = gr.Dataframe(value=pitch_leaderboard_df.value) | |
| for component in (season, min_pitches): | |
| component.change(filter_pitch_leaderboard, inputs=[season, min_pitches], outputs=pitch_leaderboard_df) | |
| ( | |
| pitch_leaderboard_df | |
| .change(create_set_download_file_fn('files/pitch_leaderboard.csv'), inputs=pitch_leaderboard_df, outputs=pitch_leaderboard_download_file) | |
| .then(lambda df: df, inputs=pitch_leaderboard_df, outputs=pitch_leaderboard) | |
| ) | |
| return demo | |
| demo = create_pitch_leaderboard() | |
| if __name__ == '__main__': | |
| create_pitch_leaderboard().launch( | |
| share=True, | |
| debug=True | |
| ) | |