riotskillissue 0.1.2__tar.gz → 0.1.3__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.
Files changed (170) hide show
  1. riotskillissue-0.1.3/.gitignore +0 -0
  2. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/CHANGELOG.md +19 -0
  3. riotskillissue-0.1.3/PKG-INFO +150 -0
  4. riotskillissue-0.1.3/README.md +110 -0
  5. riotskillissue-0.1.3/docs/api-reference.md +292 -0
  6. riotskillissue-0.1.3/docs/cli.md +105 -0
  7. riotskillissue-0.1.3/docs/configuration.md +131 -0
  8. riotskillissue-0.1.3/docs/examples/index.md +52 -0
  9. riotskillissue-0.1.3/docs/examples/league-of-legends.md +274 -0
  10. riotskillissue-0.1.3/docs/examples/teamfight-tactics.md +167 -0
  11. riotskillissue-0.1.3/docs/examples/valorant.md +123 -0
  12. riotskillissue-0.1.3/docs/getting-started.md +121 -0
  13. riotskillissue-0.1.3/docs/index.md +94 -0
  14. riotskillissue-0.1.3/docs/stylesheets/extra.css +149 -0
  15. riotskillissue-0.1.3/examples/basic_usage.py +52 -0
  16. riotskillissue-0.1.3/examples/champion_mastery.py +63 -0
  17. riotskillissue-0.1.3/examples/match_history.py +63 -0
  18. riotskillissue-0.1.3/mkdocs.yml +84 -0
  19. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/pyproject.toml +6 -1
  20. riotskillissue-0.1.3/site/404.html +834 -0
  21. riotskillissue-0.1.3/site/CONTRIBUTING/index.html +1014 -0
  22. riotskillissue-0.1.3/site/api-reference/index.html +2176 -0
  23. riotskillissue-0.1.3/site/assets/images/favicon.png +0 -0
  24. riotskillissue-0.1.3/site/assets/javascripts/bundle.79ae519e.min.js +16 -0
  25. riotskillissue-0.1.3/site/assets/javascripts/bundle.79ae519e.min.js.map +7 -0
  26. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.ar.min.js +1 -0
  27. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.da.min.js +18 -0
  28. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.de.min.js +18 -0
  29. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.du.min.js +18 -0
  30. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.el.min.js +1 -0
  31. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.es.min.js +18 -0
  32. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.fi.min.js +18 -0
  33. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.fr.min.js +18 -0
  34. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.he.min.js +1 -0
  35. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.hi.min.js +1 -0
  36. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.hu.min.js +18 -0
  37. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.hy.min.js +1 -0
  38. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.it.min.js +18 -0
  39. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.ja.min.js +1 -0
  40. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.jp.min.js +1 -0
  41. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.kn.min.js +1 -0
  42. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.ko.min.js +1 -0
  43. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.multi.min.js +1 -0
  44. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.nl.min.js +18 -0
  45. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.no.min.js +18 -0
  46. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.pt.min.js +18 -0
  47. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.ro.min.js +18 -0
  48. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.ru.min.js +18 -0
  49. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.sa.min.js +1 -0
  50. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +1 -0
  51. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.sv.min.js +18 -0
  52. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.ta.min.js +1 -0
  53. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.te.min.js +1 -0
  54. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.th.min.js +1 -0
  55. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.tr.min.js +18 -0
  56. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.vi.min.js +1 -0
  57. riotskillissue-0.1.3/site/assets/javascripts/lunr/min/lunr.zh.min.js +1 -0
  58. riotskillissue-0.1.3/site/assets/javascripts/lunr/tinyseg.js +206 -0
  59. riotskillissue-0.1.3/site/assets/javascripts/lunr/wordcut.js +6708 -0
  60. riotskillissue-0.1.3/site/assets/javascripts/workers/search.2c215733.min.js +42 -0
  61. riotskillissue-0.1.3/site/assets/javascripts/workers/search.2c215733.min.js.map +7 -0
  62. riotskillissue-0.1.3/site/assets/stylesheets/main.484c7ddc.min.css +1 -0
  63. riotskillissue-0.1.3/site/assets/stylesheets/main.484c7ddc.min.css.map +1 -0
  64. riotskillissue-0.1.3/site/assets/stylesheets/palette.ab4e12ef.min.css +1 -0
  65. riotskillissue-0.1.3/site/assets/stylesheets/palette.ab4e12ef.min.css.map +1 -0
  66. riotskillissue-0.1.3/site/cli/index.html +1165 -0
  67. riotskillissue-0.1.3/site/configuration/index.html +1275 -0
  68. riotskillissue-0.1.3/site/examples/index.html +1049 -0
  69. riotskillissue-0.1.3/site/examples/league-of-legends/index.html +1360 -0
  70. riotskillissue-0.1.3/site/examples/teamfight-tactics/index.html +1181 -0
  71. riotskillissue-0.1.3/site/examples/valorant/index.html +1120 -0
  72. riotskillissue-0.1.3/site/getting-started/index.html +1222 -0
  73. riotskillissue-0.1.3/site/index.html +1064 -0
  74. riotskillissue-0.1.3/site/search/search_index.json +1 -0
  75. riotskillissue-0.1.3/site/sitemap.xml +43 -0
  76. riotskillissue-0.1.3/site/sitemap.xml.gz +0 -0
  77. riotskillissue-0.1.3/site/stylesheets/extra.css +149 -0
  78. riotskillissue-0.1.2/.gitignore +0 -12
  79. riotskillissue-0.1.2/PKG-INFO +0 -168
  80. riotskillissue-0.1.2/README.md +0 -131
  81. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/.github/workflows/publish.yml +0 -0
  82. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/.github/workflows/test.yml +0 -0
  83. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/.github/workflows/update_sdk.yml +0 -0
  84. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/LICENSE +0 -0
  85. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/docs/CONTRIBUTING.md +0 -0
  86. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/__init__.py +0 -0
  87. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/__init__.py +0 -0
  88. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/client_mixin.py +0 -0
  89. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/account.py +0 -0
  90. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/champion-mastery.py +0 -0
  91. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/champion.py +0 -0
  92. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/champion_mastery.py +0 -0
  93. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/clash.py +0 -0
  94. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/league-exp.py +0 -0
  95. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/league.py +0 -0
  96. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/league_exp.py +0 -0
  97. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/lol-challenges.py +0 -0
  98. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/lol-rso-match.py +0 -0
  99. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/lol-status.py +0 -0
  100. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/lol_challenges.py +0 -0
  101. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/lol_rso_match.py +0 -0
  102. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/lol_status.py +0 -0
  103. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/lor-deck.py +0 -0
  104. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/lor-inventory.py +0 -0
  105. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/lor-match.py +0 -0
  106. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/lor-ranked.py +0 -0
  107. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/lor-status.py +0 -0
  108. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/lor_deck.py +0 -0
  109. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/lor_inventory.py +0 -0
  110. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/lor_match.py +0 -0
  111. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/lor_ranked.py +0 -0
  112. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/lor_status.py +0 -0
  113. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/match.py +0 -0
  114. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/riftbound-content.py +0 -0
  115. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/riftbound_content.py +0 -0
  116. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/spectator-tft.py +0 -0
  117. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/spectator.py +0 -0
  118. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/spectator_tft.py +0 -0
  119. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/summoner.py +0 -0
  120. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/tft-league.py +0 -0
  121. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/tft-match.py +0 -0
  122. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/tft-status.py +0 -0
  123. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/tft-summoner.py +0 -0
  124. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/tft_league.py +0 -0
  125. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/tft_match.py +0 -0
  126. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/tft_status.py +0 -0
  127. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/tft_summoner.py +0 -0
  128. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/tournament-stub.py +0 -0
  129. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/tournament.py +0 -0
  130. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/tournament_stub.py +0 -0
  131. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/val-console-match.py +0 -0
  132. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/val-console-ranked.py +0 -0
  133. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/val-content.py +0 -0
  134. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/val-match.py +0 -0
  135. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/val-ranked.py +0 -0
  136. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/val-status.py +0 -0
  137. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/val_console_match.py +0 -0
  138. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/val_console_ranked.py +0 -0
  139. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/val_content.py +0 -0
  140. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/val_match.py +0 -0
  141. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/val_ranked.py +0 -0
  142. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/endpoints/val_status.py +0 -0
  143. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/api/models.py +0 -0
  144. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/auth.py +0 -0
  145. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/cli.py +0 -0
  146. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/core/cache.py +0 -0
  147. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/core/client.py +0 -0
  148. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/core/config.py +0 -0
  149. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/core/http.py +0 -0
  150. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/core/pagination.py +0 -0
  151. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/core/ratelimit.py +0 -0
  152. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/core/types.py +0 -0
  153. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/core/utils.py +0 -0
  154. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/static.py +0 -0
  155. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/src/riotskillissue/testing.py +0 -0
  156. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/tests/conftest.py +0 -0
  157. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/tests/manual_test.py +0 -0
  158. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/tests/test_advanced.py +0 -0
  159. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/tests/test_bindings.py +0 -0
  160. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/tests/test_cache.py +0 -0
  161. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/tests/test_core.py +0 -0
  162. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/tests/test_resiliency.py +0 -0
  163. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/tools/bump_version.py +0 -0
  164. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/tools/diff_engine.py +0 -0
  165. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/tools/generator/core.py +0 -0
  166. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/tools/generator/parser.py +0 -0
  167. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/tools/manager.py +0 -0
  168. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/tools/templates/client_mixin.py.j2 +0 -0
  169. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/tools/templates/endpoints.py.j2 +0 -0
  170. {riotskillissue-0.1.2 → riotskillissue-0.1.3}/tools/templates/models.py.j2 +0 -0
Binary file
@@ -5,6 +5,25 @@ 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.3] - 2026-02-03
9
+ ### Added
10
+ - **Documentation**: Complete MkDocs Material documentation site with LoL-inspired theme.
11
+ - **Documentation**: Getting Started, Configuration, API Reference, and CLI guides.
12
+ - **Documentation**: Comprehensive examples for LoL, TFT, and VALORANT APIs.
13
+ - **Examples**: Runnable example scripts (`basic_usage.py`, `match_history.py`, `champion_mastery.py`).
14
+
15
+ ### Changed
16
+ - **README**: Rewritten for professional presentation.
17
+ - **Dependencies**: Added `docs` optional dependency group for MkDocs.
18
+
19
+ ## [0.1.2] - 2026-01-27
20
+ ### Changed
21
+ - **API**: Update Riot API Spec (automated update via GitHub Actions).
22
+
23
+ ## [0.1.1] - 2025-12-29
24
+ ### Changed
25
+ - **API**: Update Riot API Spec (automated update via GitHub Actions).
26
+
8
27
  ## [0.1.0] - 2025-12-29
9
28
  ### Added
10
29
  - Initial release of `riotskillissue`.
@@ -0,0 +1,150 @@
1
+ Metadata-Version: 2.4
2
+ Name: riotskillissue
3
+ Version: 0.1.3
4
+ Summary: Production-ready, auto-updating Riot API wrapper.
5
+ Author: Demoen
6
+ License-File: LICENSE
7
+ Classifier: Development Status :: 4 - Beta
8
+ Classifier: Intended Audience :: Developers
9
+ Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
10
+ Classifier: Programming Language :: Python :: 3.8
11
+ Classifier: Programming Language :: Python :: 3.9
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Requires-Python: >=3.8
17
+ Requires-Dist: frozendict>=2.4.0
18
+ Requires-Dist: httpx>=0.27.0
19
+ Requires-Dist: jinja2>=3.1.0
20
+ Requires-Dist: msgspec>=0.18.0
21
+ Requires-Dist: pydantic>=2.7.0
22
+ Requires-Dist: redis>=5.0.0
23
+ Requires-Dist: tenacity>=8.2.0
24
+ Provides-Extra: dev
25
+ Requires-Dist: deepdiff>=6.0.0; extra == 'dev'
26
+ Requires-Dist: mypy>=1.10.0; extra == 'dev'
27
+ Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
28
+ Requires-Dist: pytest-cov>=5.0.0; extra == 'dev'
29
+ Requires-Dist: pytest>=8.0.0; extra == 'dev'
30
+ Requires-Dist: respx>=0.21.0; extra == 'dev'
31
+ Requires-Dist: rich>=13.7.0; extra == 'dev'
32
+ Requires-Dist: ruff>=0.4.0; extra == 'dev'
33
+ Requires-Dist: typer>=0.12.0; extra == 'dev'
34
+ Requires-Dist: types-redis; extra == 'dev'
35
+ Requires-Dist: types-requests; extra == 'dev'
36
+ Provides-Extra: docs
37
+ Requires-Dist: mkdocs-material>=9.5.0; extra == 'docs'
38
+ Requires-Dist: mkdocs>=1.5.0; extra == 'docs'
39
+ Description-Content-Type: text/markdown
40
+
41
+ # RiotSkillIssue
42
+
43
+ <div align="center">
44
+
45
+ [![PyPI version](https://badge.fury.io/py/riotskillissue.svg)](https://badge.fury.io/py/riotskillissue)
46
+ [![Python Versions](https://img.shields.io/pypi/pyversions/riotskillissue.svg)](https://pypi.org/project/riotskillissue/)
47
+ [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](LICENSE)
48
+ [![Tests](https://github.com/Demoen/riotskillissue/actions/workflows/test.yml/badge.svg)](https://github.com/Demoen/riotskillissue/actions/workflows/test.yml)
49
+
50
+ **Production-ready, auto-updating, and fully typed Python wrapper for the Riot Games API.**
51
+
52
+ [Documentation](https://demoen.github.io/riotskillissue/) · [Examples](https://demoen.github.io/riotskillissue/examples/) · [API Reference](https://demoen.github.io/riotskillissue/api-reference/)
53
+
54
+ </div>
55
+
56
+ ---
57
+
58
+ ## Features
59
+
60
+ | Feature | Description |
61
+ |---------|-------------|
62
+ | **Type-Safe** | 100% Pydantic models for all requests and responses |
63
+ | **Auto-Updated** | Generated daily from the Official OpenAPI Spec |
64
+ | **Resilient** | Built-in exponential backoff, circuit breakers, and `Retry-After` handling |
65
+ | **Distributed** | Pluggable Redis support for shared rate limiting and caching |
66
+ | **Multi-Game** | Full support for LoL, TFT, LoR, and VALORANT APIs |
67
+
68
+ ## Installation
69
+
70
+ Requires Python 3.8+.
71
+
72
+ ```bash
73
+ pip install riotskillissue
74
+ ```
75
+
76
+ ## Quick Start
77
+
78
+ ```python
79
+ import asyncio
80
+ from riotskillissue import RiotClient, Platform, Region
81
+
82
+ async def main():
83
+ async with RiotClient() as client:
84
+ # Look up account by Riot ID
85
+ account = await client.account.get_by_riot_id(
86
+ region=Platform.EUROPE,
87
+ gameName="Agurin",
88
+ tagLine="EUW"
89
+ )
90
+ print(f"Found: {account.gameName}#{account.tagLine}")
91
+
92
+ # Get summoner data
93
+ summoner = await client.summoner.get_by_puuid(
94
+ region=Region.EUW1,
95
+ encryptedPUUID=account.puuid
96
+ )
97
+ print(f"Level: {summoner.summonerLevel}")
98
+
99
+ if __name__ == "__main__":
100
+ asyncio.run(main())
101
+ ```
102
+
103
+ Set your API key via environment variable:
104
+
105
+ ```bash
106
+ export RIOT_API_KEY="RGAPI-your-key-here"
107
+ ```
108
+
109
+ Or pass it directly:
110
+
111
+ ```python
112
+ async with RiotClient(api_key="RGAPI-...") as client:
113
+ ...
114
+ ```
115
+
116
+ ## Configuration
117
+
118
+ ```python
119
+ from riotskillissue import RiotClient, RiotClientConfig
120
+ from riotskillissue.core.cache import RedisCache
121
+
122
+ config = RiotClientConfig(
123
+ api_key="RGAPI-...",
124
+ max_retries=5,
125
+ redis_url="redis://localhost:6379/0" # Distributed rate limiting
126
+ )
127
+
128
+ cache = RedisCache("redis://localhost:6379/1")
129
+
130
+ async with RiotClient(config=config, cache=cache) as client:
131
+ ...
132
+ ```
133
+
134
+ ## Documentation
135
+
136
+ Full documentation is available at [demoen.github.io/riotskillissue](https://demoen.github.io/riotskillissue/).
137
+
138
+ - [Getting Started](https://demoen.github.io/riotskillissue/getting-started/)
139
+ - [Configuration](https://demoen.github.io/riotskillissue/configuration/)
140
+ - [Examples](https://demoen.github.io/riotskillissue/examples/)
141
+ - [API Reference](https://demoen.github.io/riotskillissue/api-reference/)
142
+ - [CLI](https://demoen.github.io/riotskillissue/cli/)
143
+
144
+ ## Legal
145
+
146
+ RiotSkillIssue is not endorsed by Riot Games and does not reflect the views or opinions of Riot Games or anyone officially involved in producing or managing Riot Games properties. Riot Games and all associated properties are trademarks or registered trademarks of Riot Games, Inc.
147
+
148
+ ## License
149
+
150
+ This project is licensed under the GNU General Public License v3.0. See the [LICENSE](LICENSE) file for details.
@@ -0,0 +1,110 @@
1
+ # RiotSkillIssue
2
+
3
+ <div align="center">
4
+
5
+ [![PyPI version](https://badge.fury.io/py/riotskillissue.svg)](https://badge.fury.io/py/riotskillissue)
6
+ [![Python Versions](https://img.shields.io/pypi/pyversions/riotskillissue.svg)](https://pypi.org/project/riotskillissue/)
7
+ [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](LICENSE)
8
+ [![Tests](https://github.com/Demoen/riotskillissue/actions/workflows/test.yml/badge.svg)](https://github.com/Demoen/riotskillissue/actions/workflows/test.yml)
9
+
10
+ **Production-ready, auto-updating, and fully typed Python wrapper for the Riot Games API.**
11
+
12
+ [Documentation](https://demoen.github.io/riotskillissue/) · [Examples](https://demoen.github.io/riotskillissue/examples/) · [API Reference](https://demoen.github.io/riotskillissue/api-reference/)
13
+
14
+ </div>
15
+
16
+ ---
17
+
18
+ ## Features
19
+
20
+ | Feature | Description |
21
+ |---------|-------------|
22
+ | **Type-Safe** | 100% Pydantic models for all requests and responses |
23
+ | **Auto-Updated** | Generated daily from the Official OpenAPI Spec |
24
+ | **Resilient** | Built-in exponential backoff, circuit breakers, and `Retry-After` handling |
25
+ | **Distributed** | Pluggable Redis support for shared rate limiting and caching |
26
+ | **Multi-Game** | Full support for LoL, TFT, LoR, and VALORANT APIs |
27
+
28
+ ## Installation
29
+
30
+ Requires Python 3.8+.
31
+
32
+ ```bash
33
+ pip install riotskillissue
34
+ ```
35
+
36
+ ## Quick Start
37
+
38
+ ```python
39
+ import asyncio
40
+ from riotskillissue import RiotClient, Platform, Region
41
+
42
+ async def main():
43
+ async with RiotClient() as client:
44
+ # Look up account by Riot ID
45
+ account = await client.account.get_by_riot_id(
46
+ region=Platform.EUROPE,
47
+ gameName="Agurin",
48
+ tagLine="EUW"
49
+ )
50
+ print(f"Found: {account.gameName}#{account.tagLine}")
51
+
52
+ # Get summoner data
53
+ summoner = await client.summoner.get_by_puuid(
54
+ region=Region.EUW1,
55
+ encryptedPUUID=account.puuid
56
+ )
57
+ print(f"Level: {summoner.summonerLevel}")
58
+
59
+ if __name__ == "__main__":
60
+ asyncio.run(main())
61
+ ```
62
+
63
+ Set your API key via environment variable:
64
+
65
+ ```bash
66
+ export RIOT_API_KEY="RGAPI-your-key-here"
67
+ ```
68
+
69
+ Or pass it directly:
70
+
71
+ ```python
72
+ async with RiotClient(api_key="RGAPI-...") as client:
73
+ ...
74
+ ```
75
+
76
+ ## Configuration
77
+
78
+ ```python
79
+ from riotskillissue import RiotClient, RiotClientConfig
80
+ from riotskillissue.core.cache import RedisCache
81
+
82
+ config = RiotClientConfig(
83
+ api_key="RGAPI-...",
84
+ max_retries=5,
85
+ redis_url="redis://localhost:6379/0" # Distributed rate limiting
86
+ )
87
+
88
+ cache = RedisCache("redis://localhost:6379/1")
89
+
90
+ async with RiotClient(config=config, cache=cache) as client:
91
+ ...
92
+ ```
93
+
94
+ ## Documentation
95
+
96
+ Full documentation is available at [demoen.github.io/riotskillissue](https://demoen.github.io/riotskillissue/).
97
+
98
+ - [Getting Started](https://demoen.github.io/riotskillissue/getting-started/)
99
+ - [Configuration](https://demoen.github.io/riotskillissue/configuration/)
100
+ - [Examples](https://demoen.github.io/riotskillissue/examples/)
101
+ - [API Reference](https://demoen.github.io/riotskillissue/api-reference/)
102
+ - [CLI](https://demoen.github.io/riotskillissue/cli/)
103
+
104
+ ## Legal
105
+
106
+ RiotSkillIssue is not endorsed by Riot Games and does not reflect the views or opinions of Riot Games or anyone officially involved in producing or managing Riot Games properties. Riot Games and all associated properties are trademarks or registered trademarks of Riot Games, Inc.
107
+
108
+ ## License
109
+
110
+ This project is licensed under the GNU General Public License v3.0. See the [LICENSE](LICENSE) file for details.
@@ -0,0 +1,292 @@
1
+ # API Reference
2
+
3
+ Complete reference for all available API endpoints.
4
+
5
+ ## Client Initialization
6
+
7
+ ```python
8
+ from riotskillissue import RiotClient, RiotClientConfig
9
+
10
+ # Simple initialization (uses RIOT_API_KEY env var)
11
+ async with RiotClient() as client:
12
+ pass
13
+
14
+ # With explicit API key
15
+ async with RiotClient(api_key="RGAPI-...") as client:
16
+ pass
17
+
18
+ # With full configuration
19
+ config = RiotClientConfig(
20
+ api_key="RGAPI-...",
21
+ max_retries=5,
22
+ redis_url="redis://localhost:6379/0"
23
+ )
24
+ async with RiotClient(config=config) as client:
25
+ pass
26
+ ```
27
+
28
+ ---
29
+
30
+ ## Region and Platform Types
31
+
32
+ ```python
33
+ from riotskillissue import Region, Platform
34
+ ```
35
+
36
+ ### Platform (Routing)
37
+
38
+ Used for account lookups and match history APIs.
39
+
40
+ | Value | Description |
41
+ |-------|-------------|
42
+ | `Platform.AMERICAS` | North/South America |
43
+ | `Platform.EUROPE` | Europe |
44
+ | `Platform.ASIA` | Korea, Japan |
45
+ | `Platform.SEA` | Southeast Asia, Oceania |
46
+
47
+ ### Region (Server)
48
+
49
+ Used for summoner, ranked, and spectator APIs.
50
+
51
+ | Value | Server |
52
+ |-------|--------|
53
+ | `Region.NA1` | North America |
54
+ | `Region.EUW1` | Europe West |
55
+ | `Region.EUN1` | Europe Nordic & East |
56
+ | `Region.KR` | Korea |
57
+ | `Region.BR1` | Brazil |
58
+ | `Region.LA1` | Latin America North |
59
+ | `Region.LA2` | Latin America South |
60
+ | `Region.OC1` | Oceania |
61
+ | `Region.JP1` | Japan |
62
+ | `Region.TR1` | Turkey |
63
+ | `Region.RU` | Russia |
64
+ | `Region.PH2` | Philippines |
65
+ | `Region.SG2` | Singapore |
66
+ | `Region.TH2` | Thailand |
67
+ | `Region.TW2` | Taiwan |
68
+ | `Region.VN2` | Vietnam |
69
+
70
+ ---
71
+
72
+ ## League of Legends APIs
73
+
74
+ ### Account API
75
+
76
+ `client.account`
77
+
78
+ | Method | Description |
79
+ |--------|-------------|
80
+ | `get_by_puuid(region, puuid)` | Get account by PUUID |
81
+ | `get_by_riot_id(region, gameName, tagLine)` | Get account by Riot ID |
82
+ | `get_by_access_token(region)` | Get account using RSO token |
83
+ | `get_active_shard(region, game, puuid)` | Get active shard for player |
84
+
85
+ ### Summoner API
86
+
87
+ `client.summoner`
88
+
89
+ | Method | Description |
90
+ |--------|-------------|
91
+ | `get_by_puuid(region, encryptedPUUID)` | Get summoner by PUUID |
92
+ | `get_by_access_token(region)` | Get summoner using RSO token |
93
+
94
+ ### Match API
95
+
96
+ `client.match`
97
+
98
+ | Method | Description |
99
+ |--------|-------------|
100
+ | `get_match_ids_by_puuid(region, puuid, ...)` | Get list of match IDs |
101
+ | `get_match(region, matchId)` | Get match details |
102
+ | `get_timeline(region, matchId)` | Get match timeline |
103
+ | `get_replay(region, puuid)` | Get player replays |
104
+
105
+ Optional parameters for `get_match_ids_by_puuid`:
106
+
107
+ - `count` - Number of matches (default: 20, max: 100)
108
+ - `start` - Offset for pagination
109
+ - `startTime` / `endTime` - Time filters (epoch seconds)
110
+ - `queue` - Queue ID filter
111
+ - `type` - Game type filter
112
+
113
+ ### Champion Mastery API
114
+
115
+ `client.champion_mastery`
116
+
117
+ | Method | Description |
118
+ |--------|-------------|
119
+ | `get_all_masteries(region, encryptedPUUID)` | Get all champion masteries |
120
+ | `get_by_champion(region, encryptedPUUID, championId)` | Get mastery for champion |
121
+ | `get_top_masteries(region, encryptedPUUID, count)` | Get top N masteries |
122
+ | `get_mastery_score(region, encryptedPUUID)` | Get total mastery score |
123
+
124
+ ### League API
125
+
126
+ `client.league`
127
+
128
+ | Method | Description |
129
+ |--------|-------------|
130
+ | `get_entries_by_summoner(region, encryptedSummonerId)` | Get ranked entries |
131
+ | `get_challenger_league(region, queue)` | Get challenger league |
132
+ | `get_grandmaster_league(region, queue)` | Get grandmaster league |
133
+ | `get_master_league(region, queue)` | Get master league |
134
+
135
+ ### Spectator API
136
+
137
+ `client.spectator`
138
+
139
+ | Method | Description |
140
+ |--------|-------------|
141
+ | `get_current_game_info(region, encryptedPUUID)` | Get live game data |
142
+ | `get_featured_games(region)` | Get featured games |
143
+
144
+ ### Champion API
145
+
146
+ `client.champion`
147
+
148
+ | Method | Description |
149
+ |--------|-------------|
150
+ | `get_champion_rotations(region)` | Get free champion rotation |
151
+
152
+ ### Status API
153
+
154
+ `client.lol_status`
155
+
156
+ | Method | Description |
157
+ |--------|-------------|
158
+ | `get_platform_data(region)` | Get platform status |
159
+
160
+ ---
161
+
162
+ ## TFT APIs
163
+
164
+ ### TFT Summoner API
165
+
166
+ `client.tft_summoner`
167
+
168
+ | Method | Description |
169
+ |--------|-------------|
170
+ | `get_by_puuid(region, encryptedPUUID)` | Get TFT summoner by PUUID |
171
+
172
+ ### TFT Match API
173
+
174
+ `client.tft_match`
175
+
176
+ | Method | Description |
177
+ |--------|-------------|
178
+ | `get_match_ids_by_puuid(region, puuid, count)` | Get TFT match IDs |
179
+ | `get_match(region, matchId)` | Get TFT match details |
180
+
181
+ ### TFT League API
182
+
183
+ `client.tft_league`
184
+
185
+ | Method | Description |
186
+ |--------|-------------|
187
+ | `get_challenger_league(region)` | Get TFT challenger league |
188
+ | `get_grandmaster_league(region)` | Get TFT grandmaster league |
189
+ | `get_master_league(region)` | Get TFT master league |
190
+ | `get_entries_by_summoner(region, summonerId)` | Get ranked entries |
191
+
192
+ ### TFT Status API
193
+
194
+ `client.tft_status`
195
+
196
+ | Method | Description |
197
+ |--------|-------------|
198
+ | `get_platform_data(region)` | Get TFT platform status |
199
+
200
+ ---
201
+
202
+ ## VALORANT APIs
203
+
204
+ ### VALORANT Content API
205
+
206
+ `client.val_content`
207
+
208
+ | Method | Description |
209
+ |--------|-------------|
210
+ | `get_content(region, locale)` | Get game content (agents, maps, etc.) |
211
+
212
+ ### VALORANT Ranked API
213
+
214
+ `client.val_ranked`
215
+
216
+ | Method | Description |
217
+ |--------|-------------|
218
+ | `get_leaderboard(region, actId, ...)` | Get ranked leaderboard |
219
+
220
+ ### VALORANT Status API
221
+
222
+ `client.val_status`
223
+
224
+ | Method | Description |
225
+ |--------|-------------|
226
+ | `get_platform_data(region)` | Get VALORANT platform status |
227
+
228
+ ---
229
+
230
+ ## Legends of Runeterra APIs
231
+
232
+ ### LoR Match API
233
+
234
+ `client.lor_match`
235
+
236
+ | Method | Description |
237
+ |--------|-------------|
238
+ | `get_match_ids_by_puuid(region, puuid)` | Get LoR match IDs |
239
+ | `get_match(region, matchId)` | Get LoR match details |
240
+
241
+ ### LoR Ranked API
242
+
243
+ `client.lor_ranked`
244
+
245
+ | Method | Description |
246
+ |--------|-------------|
247
+ | `get_leaderboards(region)` | Get LoR leaderboards |
248
+
249
+ ### LoR Status API
250
+
251
+ `client.lor_status`
252
+
253
+ | Method | Description |
254
+ |--------|-------------|
255
+ | `get_platform_data(region)` | Get LoR platform status |
256
+
257
+ ---
258
+
259
+ ## Static Data (Data Dragon)
260
+
261
+ `client.static`
262
+
263
+ | Method | Description |
264
+ |--------|-------------|
265
+ | `get_latest_version()` | Get latest Data Dragon version |
266
+ | `get_champion(champion_key)` | Get champion data by ID |
267
+ | `get_item(item_id)` | Get item data by ID |
268
+
269
+ ---
270
+
271
+ ## Pagination Helper
272
+
273
+ ```python
274
+ from riotskillissue import paginate
275
+
276
+ async for match_id in paginate(
277
+ client.match.get_match_ids_by_puuid,
278
+ region=Platform.EUROPE,
279
+ puuid="...",
280
+ count=100, # Items per page
281
+ max_results=500 # Total items to fetch
282
+ ):
283
+ print(match_id)
284
+ ```
285
+
286
+ | Parameter | Description |
287
+ |-----------|-------------|
288
+ | `method` | The API method to paginate |
289
+ | `start` | Initial offset (default: 0) |
290
+ | `count` | Items per page (default: 100) |
291
+ | `max_results` | Maximum items to yield (default: infinity) |
292
+ | `**kwargs` | Arguments passed to the method |
@@ -0,0 +1,105 @@
1
+ # Command Line Interface
2
+
3
+ RiotSkillIssue includes a CLI tool for quick lookups and debugging.
4
+
5
+ ## Installation
6
+
7
+ The CLI is included with the package:
8
+
9
+ ```bash
10
+ pip install riotskillissue
11
+ ```
12
+
13
+ For enhanced output formatting, install with dev dependencies:
14
+
15
+ ```bash
16
+ pip install "riotskillissue[dev]"
17
+ ```
18
+
19
+ ## Configuration
20
+
21
+ Set your API key via environment variable:
22
+
23
+ ```bash
24
+ export RIOT_API_KEY="RGAPI-your-key-here"
25
+ ```
26
+
27
+ Or pass it directly with `--api-key`:
28
+
29
+ ```bash
30
+ riotskillissue-cli summoner "Player#EUW" --api-key "RGAPI-..."
31
+ ```
32
+
33
+ ## Commands
34
+
35
+ ### summoner
36
+
37
+ Look up a summoner by Riot ID.
38
+
39
+ ```bash
40
+ riotskillissue-cli summoner "GameName#TagLine" --region euw1
41
+ ```
42
+
43
+ **Arguments:**
44
+
45
+ | Argument | Description |
46
+ |----------|-------------|
47
+ | `name` | Riot ID in format `GameName#TagLine` |
48
+ | `--region` | Regional server (default: `na1`) |
49
+ | `--api-key` | API key (or use `RIOT_API_KEY` env var) |
50
+
51
+ **Example:**
52
+
53
+ ```bash
54
+ $ riotskillissue-cli summoner "Agurin#EUW" --region euw1
55
+
56
+ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
57
+ ┃ Summoner: Agurin#EUW ┃
58
+ ┣━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┫
59
+ ┃ Level │ PUUID ┃
60
+ ┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━┩
61
+ │ 523 │ abc123... │
62
+ └───────────┴───────────────────────┘
63
+ ```
64
+
65
+ ### match
66
+
67
+ Get match details by match ID.
68
+
69
+ ```bash
70
+ riotskillissue-cli match "EUW1_7654321098" --region europe
71
+ ```
72
+
73
+ **Arguments:**
74
+
75
+ | Argument | Description |
76
+ |----------|-------------|
77
+ | `match_id` | Match ID (e.g., `EUW1_7654321098`) |
78
+ | `--region` | Platform routing (default: `americas`) |
79
+ | `--api-key` | API key (or use `RIOT_API_KEY` env var) |
80
+
81
+ **Example:**
82
+
83
+ ```bash
84
+ $ riotskillissue-cli match "EUW1_7654321098" --region europe
85
+
86
+ Match EUW1_7654321098 loaded!
87
+ Game Mode: CLASSIC
88
+ Duration: 1847s
89
+ ```
90
+
91
+ ## Error Handling
92
+
93
+ The CLI displays user-friendly error messages:
94
+
95
+ ```bash
96
+ $ riotskillissue-cli summoner "InvalidName"
97
+
98
+ Error: Name must be format GameName#TagLine for Account V1 lookup
99
+ ```
100
+
101
+ ```bash
102
+ $ riotskillissue-cli summoner "NonExistent#USER" --region euw1
103
+
104
+ Error: 404 - Data not found
105
+ ```