riotskillissue 0.1.3__tar.gz → 0.1.4__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.
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/CHANGELOG.md +7 -0
- riotskillissue-0.1.4/LICENSE +21 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/PKG-INFO +6 -4
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/docs/cli.md +44 -0
- riotskillissue-0.1.4/docs/live-game-tui.md +238 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/mkdocs.yml +1 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/pyproject.toml +6 -4
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/cli.py +57 -1
- riotskillissue-0.1.4/src/riotskillissue/tui.py +733 -0
- riotskillissue-0.1.3/LICENSE +0 -676
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/.github/workflows/publish.yml +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/.github/workflows/test.yml +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/.github/workflows/update_sdk.yml +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/.gitignore +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/README.md +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/docs/CONTRIBUTING.md +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/docs/api-reference.md +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/docs/configuration.md +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/docs/examples/index.md +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/docs/examples/league-of-legends.md +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/docs/examples/teamfight-tactics.md +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/docs/examples/valorant.md +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/docs/getting-started.md +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/docs/index.md +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/docs/stylesheets/extra.css +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/examples/basic_usage.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/examples/champion_mastery.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/examples/match_history.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/404.html +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/CONTRIBUTING/index.html +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/api-reference/index.html +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/images/favicon.png +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/bundle.79ae519e.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/bundle.79ae519e.min.js.map +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.ar.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.da.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.de.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.du.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.el.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.es.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.fi.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.fr.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.he.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.hi.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.hu.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.hy.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.it.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.ja.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.jp.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.kn.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.ko.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.multi.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.nl.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.no.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.pt.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.ro.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.ru.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.sa.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.sv.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.ta.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.te.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.th.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.tr.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.vi.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/min/lunr.zh.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/tinyseg.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/lunr/wordcut.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/workers/search.2c215733.min.js +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/javascripts/workers/search.2c215733.min.js.map +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/stylesheets/main.484c7ddc.min.css +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/stylesheets/main.484c7ddc.min.css.map +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/stylesheets/palette.ab4e12ef.min.css +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/assets/stylesheets/palette.ab4e12ef.min.css.map +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/cli/index.html +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/configuration/index.html +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/examples/index.html +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/examples/league-of-legends/index.html +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/examples/teamfight-tactics/index.html +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/examples/valorant/index.html +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/getting-started/index.html +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/index.html +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/search/search_index.json +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/sitemap.xml +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/sitemap.xml.gz +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/site/stylesheets/extra.css +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/__init__.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/__init__.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/client_mixin.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/account.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/champion-mastery.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/champion.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/champion_mastery.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/clash.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/league-exp.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/league.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/league_exp.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/lol-challenges.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/lol-rso-match.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/lol-status.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/lol_challenges.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/lol_rso_match.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/lol_status.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/lor-deck.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/lor-inventory.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/lor-match.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/lor-ranked.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/lor-status.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/lor_deck.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/lor_inventory.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/lor_match.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/lor_ranked.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/lor_status.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/match.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/riftbound-content.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/riftbound_content.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/spectator-tft.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/spectator.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/spectator_tft.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/summoner.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/tft-league.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/tft-match.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/tft-status.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/tft-summoner.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/tft_league.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/tft_match.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/tft_status.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/tft_summoner.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/tournament-stub.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/tournament.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/tournament_stub.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/val-console-match.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/val-console-ranked.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/val-content.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/val-match.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/val-ranked.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/val-status.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/val_console_match.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/val_console_ranked.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/val_content.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/val_match.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/val_ranked.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/endpoints/val_status.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/api/models.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/auth.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/core/cache.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/core/client.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/core/config.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/core/http.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/core/pagination.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/core/ratelimit.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/core/types.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/core/utils.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/static.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/src/riotskillissue/testing.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/tests/conftest.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/tests/manual_test.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/tests/test_advanced.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/tests/test_bindings.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/tests/test_cache.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/tests/test_core.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/tests/test_resiliency.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/tools/bump_version.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/tools/diff_engine.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/tools/generator/core.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/tools/generator/parser.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/tools/manager.py +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/tools/templates/client_mixin.py.j2 +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/tools/templates/endpoints.py.j2 +0 -0
- {riotskillissue-0.1.3 → riotskillissue-0.1.4}/tools/templates/models.py.j2 +0 -0
|
@@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.1.4] - 2026-02-06
|
|
9
|
+
### Added
|
|
10
|
+
- **TUI**: Initial Terminal User Interface functionality for monitoring and interaction.
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- **License**: Switched project license to MIT License.
|
|
14
|
+
|
|
8
15
|
## [0.1.3] - 2026-02-03
|
|
9
16
|
### Added
|
|
10
17
|
- **Documentation**: Complete MkDocs Material documentation site with LoL-inspired theme.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Demoen
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: riotskillissue
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.4
|
|
4
4
|
Summary: Production-ready, auto-updating Riot API wrapper.
|
|
5
5
|
Author: Demoen
|
|
6
6
|
License-File: LICENSE
|
|
7
7
|
Classifier: Development Status :: 4 - Beta
|
|
8
8
|
Classifier: Intended Audience :: Developers
|
|
9
|
-
Classifier: License :: OSI Approved ::
|
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
10
10
|
Classifier: Programming Language :: Python :: 3.8
|
|
11
11
|
Classifier: Programming Language :: Python :: 3.9
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.10
|
|
@@ -20,7 +20,10 @@ Requires-Dist: jinja2>=3.1.0
|
|
|
20
20
|
Requires-Dist: msgspec>=0.18.0
|
|
21
21
|
Requires-Dist: pydantic>=2.7.0
|
|
22
22
|
Requires-Dist: redis>=5.0.0
|
|
23
|
+
Requires-Dist: rich>=13.7.0
|
|
23
24
|
Requires-Dist: tenacity>=8.2.0
|
|
25
|
+
Requires-Dist: textual>=0.85.0
|
|
26
|
+
Requires-Dist: typer>=0.12.0
|
|
24
27
|
Provides-Extra: dev
|
|
25
28
|
Requires-Dist: deepdiff>=6.0.0; extra == 'dev'
|
|
26
29
|
Requires-Dist: mypy>=1.10.0; extra == 'dev'
|
|
@@ -28,9 +31,8 @@ Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
|
|
|
28
31
|
Requires-Dist: pytest-cov>=5.0.0; extra == 'dev'
|
|
29
32
|
Requires-Dist: pytest>=8.0.0; extra == 'dev'
|
|
30
33
|
Requires-Dist: respx>=0.21.0; extra == 'dev'
|
|
31
|
-
Requires-Dist: rich>=13.7.0; extra == 'dev'
|
|
32
34
|
Requires-Dist: ruff>=0.4.0; extra == 'dev'
|
|
33
|
-
Requires-Dist:
|
|
35
|
+
Requires-Dist: textual-dev>=1.0.0; extra == 'dev'
|
|
34
36
|
Requires-Dist: types-redis; extra == 'dev'
|
|
35
37
|
Requires-Dist: types-requests; extra == 'dev'
|
|
36
38
|
Provides-Extra: docs
|
|
@@ -88,6 +88,49 @@ Game Mode: CLASSIC
|
|
|
88
88
|
Duration: 1847s
|
|
89
89
|
```
|
|
90
90
|
|
|
91
|
+
### live
|
|
92
|
+
|
|
93
|
+
🎮 Launch an interactive Live Game TUI (Terminal User Interface) that shows real-time information about an ongoing League of Legends match.
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
riotskillissue-cli live "GameName#TagLine" --region euw1
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
This is the fastest way to spectate a match from your terminal — **one command, instant dashboard**.
|
|
100
|
+
|
|
101
|
+
**Arguments:**
|
|
102
|
+
|
|
103
|
+
| Argument | Description |
|
|
104
|
+
|----------|-------------|
|
|
105
|
+
| `name` | Riot ID in format `GameName#TagLine` |
|
|
106
|
+
| `--region` | Regional server (default: `euw1`) |
|
|
107
|
+
| `--api-key` | API key (or use `RIOT_API_KEY` env var) |
|
|
108
|
+
| `--refresh` | Auto-refresh interval in seconds (default: `30`) |
|
|
109
|
+
|
|
110
|
+
**Example:**
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
$ riotskillissue-cli live "Agurin#EUW" --region euw1
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
This opens a full-screen terminal dashboard showing:
|
|
117
|
+
|
|
118
|
+
- **Game info** — queue type, game duration, platform
|
|
119
|
+
- **Blue Team** — champions, player names, ranks, win rates, summoner spells
|
|
120
|
+
- **Red Team** — champions, player names, ranks, win rates, summoner spells
|
|
121
|
+
- **Bans** — all banned champions
|
|
122
|
+
|
|
123
|
+
The TUI auto-refreshes every 30 seconds (configurable with `--refresh`). If the player isn't in a game yet, it will keep checking until one starts.
|
|
124
|
+
|
|
125
|
+
**Keyboard shortcuts:**
|
|
126
|
+
|
|
127
|
+
| Key | Action |
|
|
128
|
+
|-----|--------|
|
|
129
|
+
| `R` | Manual refresh |
|
|
130
|
+
| `Q` / `Esc` | Quit |
|
|
131
|
+
|
|
132
|
+
See the [Live Game TUI](live-game-tui.md) page for more details and screenshots.
|
|
133
|
+
|
|
91
134
|
## Error Handling
|
|
92
135
|
|
|
93
136
|
The CLI displays user-friendly error messages:
|
|
@@ -103,3 +146,4 @@ $ riotskillissue-cli summoner "NonExistent#USER" --region euw1
|
|
|
103
146
|
|
|
104
147
|
Error: 404 - Data not found
|
|
105
148
|
```
|
|
149
|
+
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
# Live Game TUI
|
|
2
|
+
|
|
3
|
+
RiotSkillIssue includes a built-in **Terminal User Interface** (TUI) for spectating live League of Legends matches directly from your terminal. One command gives you a full dashboard with teams, champions, ranks, and more.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
riotskillissue-cli live "Agurin#EUW" --region euw1
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
That's it. This single command opens an interactive, auto-refreshing dashboard.
|
|
12
|
+
|
|
13
|
+
## Features
|
|
14
|
+
|
|
15
|
+
- **Real-time game data** — see the current match as it happens
|
|
16
|
+
- **Both teams at a glance** — champions, summoner spells, ranks, win rates
|
|
17
|
+
- **Auto-refresh** — data updates every 30 seconds (configurable)
|
|
18
|
+
- **Rank colors** — each player's rank is color-coded (Iron → Challenger)
|
|
19
|
+
- **Win rate highlighting** — green for >55%, red for <45%
|
|
20
|
+
- **Ban display** — all banned champions listed
|
|
21
|
+
- **Waiting mode** — if the player isn't in a game, the TUI waits and checks periodically
|
|
22
|
+
- **Keyboard controls** — refresh manually or quit with a single keypress
|
|
23
|
+
|
|
24
|
+
## Installation
|
|
25
|
+
|
|
26
|
+
The TUI is included with the standard package installation:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
pip install riotskillissue
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
!!! note "Dependencies"
|
|
33
|
+
The TUI uses [Textual](https://textual.textualize.io/) and [Rich](https://rich.readthedocs.io/),
|
|
34
|
+
which are installed automatically as dependencies.
|
|
35
|
+
|
|
36
|
+
## Usage
|
|
37
|
+
|
|
38
|
+
### Basic
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
export RIOT_API_KEY="RGAPI-your-key-here"
|
|
42
|
+
riotskillissue-cli live "GameName#TagLine"
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### With Options
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
riotskillissue-cli live "Faker#KR1" --region kr --refresh 15
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### All Options
|
|
52
|
+
|
|
53
|
+
| Option | Default | Description |
|
|
54
|
+
|--------|---------|-------------|
|
|
55
|
+
| `name` | *(required)* | Riot ID in `GameName#TagLine` format |
|
|
56
|
+
| `--region` | `euw1` | Regional server (`euw1`, `na1`, `kr`, `eun1`, etc.) |
|
|
57
|
+
| `--api-key` | `$RIOT_API_KEY` | Riot API key |
|
|
58
|
+
| `--refresh` | `30` | Auto-refresh interval in seconds |
|
|
59
|
+
|
|
60
|
+
### Regions
|
|
61
|
+
|
|
62
|
+
All standard League of Legends regions are supported:
|
|
63
|
+
|
|
64
|
+
| Region | Code |
|
|
65
|
+
|--------|------|
|
|
66
|
+
| North America | `na1` |
|
|
67
|
+
| Europe West | `euw1` |
|
|
68
|
+
| Europe Nordic & East | `eun1` |
|
|
69
|
+
| Korea | `kr` |
|
|
70
|
+
| Japan | `jp1` |
|
|
71
|
+
| Brazil | `br1` |
|
|
72
|
+
| Latin America North | `la1` |
|
|
73
|
+
| Latin America South | `la2` |
|
|
74
|
+
| Oceania | `oc1` |
|
|
75
|
+
| Turkey | `tr1` |
|
|
76
|
+
| Russia | `ru` |
|
|
77
|
+
| Philippines | `ph2` |
|
|
78
|
+
| Singapore | `sg2` |
|
|
79
|
+
| Thailand | `th2` |
|
|
80
|
+
| Taiwan | `tw2` |
|
|
81
|
+
| Vietnam | `vn2` |
|
|
82
|
+
|
|
83
|
+
## Keyboard Shortcuts
|
|
84
|
+
|
|
85
|
+
| Key | Action |
|
|
86
|
+
|-----|--------|
|
|
87
|
+
| ++r++ | Refresh game data immediately |
|
|
88
|
+
| ++q++ | Quit the TUI |
|
|
89
|
+
| ++escape++ | Quit the TUI |
|
|
90
|
+
|
|
91
|
+
## What You See
|
|
92
|
+
|
|
93
|
+
### When a Game is Active
|
|
94
|
+
|
|
95
|
+
The TUI displays a full-screen dashboard with:
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
99
|
+
│ 🎮 LIVE GAME — Ranked Solo/Duo │
|
|
100
|
+
│ ⏱ 12:34 📍 EUW1 │
|
|
101
|
+
├─────────────────────────────────────────────────────────────┤
|
|
102
|
+
│ 🔵 BLUE TEAM │
|
|
103
|
+
│ Champion │ Player │ Rank │ Spells │
|
|
104
|
+
│──────────────┼──────────────┼────────────────┼──────────────│
|
|
105
|
+
│ Ahri │ Player1#EUW │ Diamond II │ Flash / Ign │
|
|
106
|
+
│ Lee Sin │ Player2#EUW │ Emerald I │ Flash / Smt │
|
|
107
|
+
│ Orianna │ Player3#EUW │ Master 234 LP │ Flash / TP │
|
|
108
|
+
│ Jinx │ Player4#EUW │ Diamond IV │ Flash / Heal │
|
|
109
|
+
│ Thresh │ Player5#EUW │ Platinum I │ Flash / Ign │
|
|
110
|
+
├─────────────────────────────────────────────────────────────┤
|
|
111
|
+
│ 🚫 Bans: Yasuo · Yone · Zed · Lux · Blitzcrank │
|
|
112
|
+
├─────────────────────────────────────────────────────────────┤
|
|
113
|
+
│ 🔴 RED TEAM │
|
|
114
|
+
│ Champion │ Player │ Rank │ Spells │
|
|
115
|
+
│──────────────┼──────────────┼────────────────┼──────────────│
|
|
116
|
+
│ Zed │ Player6#EUW │ Diamond I │ Flash / Ign │
|
|
117
|
+
│ Graves │ Player7#EUW │ Emerald III │ Flash / Smt │
|
|
118
|
+
│ Syndra │ Player8#EUW │ Diamond III │ Flash / TP │
|
|
119
|
+
│ Kai'Sa │ Player9#EUW │ Platinum II │ Flash / Heal │
|
|
120
|
+
│ Nautilus │ Player10#EUW │ Diamond IV │ Flash / Ign │
|
|
121
|
+
└─────────────────────────────────────────────────────────────┘
|
|
122
|
+
Q Quit │ R Refresh │ Auto-refresh: 24s
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### When Not in a Game
|
|
126
|
+
|
|
127
|
+
If the player isn't currently in a match, the TUI shows a waiting screen and keeps checking:
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
┌───────────────────────────────────────┐
|
|
131
|
+
│ │
|
|
132
|
+
│ 🎮 Agurin#EUW │
|
|
133
|
+
│ │
|
|
134
|
+
│ Not currently in a game. │
|
|
135
|
+
│ │
|
|
136
|
+
│ The TUI will auto-refresh and │
|
|
137
|
+
│ show the game once it starts. │
|
|
138
|
+
│ │
|
|
139
|
+
│ Next refresh in 24s │
|
|
140
|
+
│ Press [R] to refresh now │
|
|
141
|
+
│ │
|
|
142
|
+
└───────────────────────────────────────┘
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Rank Colors
|
|
146
|
+
|
|
147
|
+
Each player's rank is displayed with a color matching their tier:
|
|
148
|
+
|
|
149
|
+
| Tier | Color |
|
|
150
|
+
|------|-------|
|
|
151
|
+
| Iron | Gray |
|
|
152
|
+
| Bronze | Bronze |
|
|
153
|
+
| Silver | Silver |
|
|
154
|
+
| Gold | Gold |
|
|
155
|
+
| Platinum | Teal |
|
|
156
|
+
| Emerald | Green |
|
|
157
|
+
| Diamond | Light Blue |
|
|
158
|
+
| Master | Purple |
|
|
159
|
+
| Grandmaster | Red |
|
|
160
|
+
| Challenger | Orange |
|
|
161
|
+
|
|
162
|
+
## Programmatic Usage
|
|
163
|
+
|
|
164
|
+
You can also launch the TUI from Python code:
|
|
165
|
+
|
|
166
|
+
```python
|
|
167
|
+
from riotskillissue.tui import run_tui
|
|
168
|
+
|
|
169
|
+
run_tui(
|
|
170
|
+
api_key="RGAPI-your-key",
|
|
171
|
+
game_name="Agurin",
|
|
172
|
+
tag_line="EUW",
|
|
173
|
+
region="euw1",
|
|
174
|
+
auto_refresh=30,
|
|
175
|
+
)
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Or use the lower-level app class for more control:
|
|
179
|
+
|
|
180
|
+
```python
|
|
181
|
+
from riotskillissue.tui import LiveGameApp
|
|
182
|
+
|
|
183
|
+
app = LiveGameApp(
|
|
184
|
+
api_key="RGAPI-your-key",
|
|
185
|
+
game_name="Agurin",
|
|
186
|
+
tag_line="EUW",
|
|
187
|
+
region="euw1",
|
|
188
|
+
auto_refresh=15,
|
|
189
|
+
)
|
|
190
|
+
app.run()
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## API Key
|
|
194
|
+
|
|
195
|
+
The TUI requires a valid Riot API key. You can get one from the [Riot Developer Portal](https://developer.riotgames.com/).
|
|
196
|
+
|
|
197
|
+
Set it as an environment variable for convenience:
|
|
198
|
+
|
|
199
|
+
=== "Linux / macOS"
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
export RIOT_API_KEY="RGAPI-your-key-here"
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
=== "Windows (PowerShell)"
|
|
206
|
+
|
|
207
|
+
```powershell
|
|
208
|
+
$env:RIOT_API_KEY = "RGAPI-your-key-here"
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
=== "Windows (CMD)"
|
|
212
|
+
|
|
213
|
+
```cmd
|
|
214
|
+
set RIOT_API_KEY=RGAPI-your-key-here
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
!!! tip "Development Keys"
|
|
218
|
+
Riot development API keys expire every 24 hours. For persistent usage,
|
|
219
|
+
apply for a personal or production key through the Developer Portal.
|
|
220
|
+
|
|
221
|
+
## Troubleshooting
|
|
222
|
+
|
|
223
|
+
### "Not currently in a game"
|
|
224
|
+
|
|
225
|
+
The player must be in an **active** League of Legends match (loading screen or in-game).
|
|
226
|
+
Champion select does not count — the Spectator API only reports data once the game has started.
|
|
227
|
+
|
|
228
|
+
### "404 - Data not found"
|
|
229
|
+
|
|
230
|
+
- Double-check the Riot ID spelling and tag line
|
|
231
|
+
- Make sure you're using the correct `--region` for the player's server
|
|
232
|
+
- Verify your API key is valid and not expired
|
|
233
|
+
|
|
234
|
+
### Rate Limiting
|
|
235
|
+
|
|
236
|
+
The TUI makes multiple API calls per refresh (spectator + ranks for all 10 players).
|
|
237
|
+
With a development key (20 requests/second, 100 requests/2 minutes), the default
|
|
238
|
+
30-second refresh interval stays well within limits. Lower the interval with caution.
|
|
@@ -7,7 +7,7 @@ riotskillissue-cli = "riotskillissue.cli:main"
|
|
|
7
7
|
|
|
8
8
|
[project]
|
|
9
9
|
name = "riotskillissue"
|
|
10
|
-
version = "0.1.
|
|
10
|
+
version = "0.1.4"
|
|
11
11
|
description = "Production-ready, auto-updating Riot API wrapper."
|
|
12
12
|
readme = "README.md"
|
|
13
13
|
authors = [{ name = "Demoen" }]
|
|
@@ -20,11 +20,14 @@ dependencies = [
|
|
|
20
20
|
"jinja2>=3.1.0",
|
|
21
21
|
"frozendict>=2.4.0", # For immutable specs
|
|
22
22
|
"msgspec>=0.18.0", # Fast JSON parsing for large specs
|
|
23
|
+
"typer>=0.12.0", # CLI framework
|
|
24
|
+
"rich>=13.7.0", # Rich text formatting
|
|
25
|
+
"textual>=0.85.0", # Terminal User Interface
|
|
23
26
|
]
|
|
24
27
|
classifiers = [
|
|
25
28
|
"Development Status :: 4 - Beta",
|
|
26
29
|
"Intended Audience :: Developers",
|
|
27
|
-
"License :: OSI Approved ::
|
|
30
|
+
"License :: OSI Approved :: MIT License",
|
|
28
31
|
"Programming Language :: Python :: 3.8",
|
|
29
32
|
"Programming Language :: Python :: 3.9",
|
|
30
33
|
"Programming Language :: Python :: 3.10",
|
|
@@ -41,11 +44,10 @@ dev = [
|
|
|
41
44
|
"respx>=0.21.0",
|
|
42
45
|
"ruff>=0.4.0",
|
|
43
46
|
"mypy>=1.10.0",
|
|
44
|
-
"typer>=0.12.0", # For CLI tools
|
|
45
|
-
"rich>=13.7.0", # For pretty CLI output
|
|
46
47
|
"types-redis",
|
|
47
48
|
"types-requests",
|
|
48
49
|
"deepdiff>=6.0.0",
|
|
50
|
+
"textual-dev>=1.0.0", # TUI development tools
|
|
49
51
|
]
|
|
50
52
|
|
|
51
53
|
docs = [
|
|
@@ -6,7 +6,10 @@ from rich import print as rprint
|
|
|
6
6
|
from .core.client import RiotClient, RiotClientConfig
|
|
7
7
|
from .core.types import Region
|
|
8
8
|
|
|
9
|
-
app = typer.Typer(
|
|
9
|
+
app = typer.Typer(
|
|
10
|
+
help="RiotSkillIssue API Wrapper CLI",
|
|
11
|
+
rich_markup_mode="rich",
|
|
12
|
+
)
|
|
10
13
|
console = Console()
|
|
11
14
|
|
|
12
15
|
@app.command()
|
|
@@ -80,5 +83,58 @@ def match(match_id: str, region: str = "americas", api_key: str = typer.Option(N
|
|
|
80
83
|
|
|
81
84
|
asyncio.run(_run())
|
|
82
85
|
|
|
86
|
+
|
|
87
|
+
@app.command()
|
|
88
|
+
def live(
|
|
89
|
+
name: str = typer.Argument(
|
|
90
|
+
...,
|
|
91
|
+
help='Riot ID in format "GameName#TagLine" (e.g. "Agurin#EUW")',
|
|
92
|
+
),
|
|
93
|
+
region: str = typer.Option(
|
|
94
|
+
"euw1",
|
|
95
|
+
help="Regional server (e.g. euw1, na1, kr)",
|
|
96
|
+
),
|
|
97
|
+
api_key: str = typer.Option(
|
|
98
|
+
None,
|
|
99
|
+
envvar="RIOT_API_KEY",
|
|
100
|
+
help="Riot API key (or set RIOT_API_KEY env var)",
|
|
101
|
+
),
|
|
102
|
+
refresh: int = typer.Option(
|
|
103
|
+
30,
|
|
104
|
+
help="Auto-refresh interval in seconds",
|
|
105
|
+
),
|
|
106
|
+
):
|
|
107
|
+
"""🎮 Launch the Live Game TUI for a League of Legends match.
|
|
108
|
+
|
|
109
|
+
Shows a real-time terminal dashboard with both teams, champion picks,
|
|
110
|
+
summoner spells, ranks, and win rates. Auto-refreshes periodically.
|
|
111
|
+
|
|
112
|
+
\b
|
|
113
|
+
Examples:
|
|
114
|
+
riotskillissue-cli live "Agurin#EUW" --region euw1
|
|
115
|
+
riotskillissue-cli live "Faker#KR1" --region kr
|
|
116
|
+
riotskillissue-cli live "Player#NA1" --region na1 --refresh 15
|
|
117
|
+
"""
|
|
118
|
+
if not api_key:
|
|
119
|
+
rprint("[red]Error: API key required. Set RIOT_API_KEY env var or use --api-key.[/red]")
|
|
120
|
+
raise typer.Exit(code=1)
|
|
121
|
+
|
|
122
|
+
if "#" not in name:
|
|
123
|
+
rprint('[red]Error: Name must be in format "GameName#TagLine" (e.g. "Agurin#EUW").[/red]')
|
|
124
|
+
raise typer.Exit(code=1)
|
|
125
|
+
|
|
126
|
+
game_name, tag_line = name.split("#", 1)
|
|
127
|
+
|
|
128
|
+
from .tui import run_tui
|
|
129
|
+
|
|
130
|
+
run_tui(
|
|
131
|
+
api_key=api_key,
|
|
132
|
+
game_name=game_name,
|
|
133
|
+
tag_line=tag_line,
|
|
134
|
+
region=region,
|
|
135
|
+
auto_refresh=refresh,
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
|
|
83
139
|
def main():
|
|
84
140
|
app()
|