vlrdevapi 1.6.1__tar.gz → 2.0.0__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 (248) hide show
  1. vlrdevapi-2.0.0/.gitattributes +7 -0
  2. vlrdevapi-2.0.0/.github/ISSUE_TEMPLATE/bug_report.md +33 -0
  3. vlrdevapi-2.0.0/.github/ISSUE_TEMPLATE/feature_request.md +19 -0
  4. vlrdevapi-2.0.0/.github/workflows/docs-check.yml +29 -0
  5. vlrdevapi-2.0.0/.github/workflows/publish.yml +77 -0
  6. vlrdevapi-2.0.0/.github/workflows/test.yml +39 -0
  7. vlrdevapi-2.0.0/.gitignore +31 -0
  8. vlrdevapi-2.0.0/.python-version +1 -0
  9. vlrdevapi-2.0.0/.readthedocs.yaml +15 -0
  10. vlrdevapi-2.0.0/CHANGELOG.md +69 -0
  11. vlrdevapi-2.0.0/CODE_OF_CONDUCT.md +19 -0
  12. vlrdevapi-2.0.0/CONTRIBUTING.md +41 -0
  13. vlrdevapi-1.6.1/LICENSE → vlrdevapi-2.0.0/LICENCE +2 -2
  14. vlrdevapi-2.0.0/PKG-INFO +215 -0
  15. vlrdevapi-2.0.0/README.md +167 -0
  16. vlrdevapi-2.0.0/SECURITY.md +9 -0
  17. vlrdevapi-2.0.0/SUPPORT.md +17 -0
  18. vlrdevapi-2.0.0/pyproject.toml +82 -0
  19. vlrdevapi-2.0.0/scripts/check_mdx_examples.py +410 -0
  20. vlrdevapi-2.0.0/scripts/download_fixtures.py +345 -0
  21. vlrdevapi-2.0.0/src/vlrdevapi/__init__.py +95 -0
  22. vlrdevapi-2.0.0/src/vlrdevapi/__init__.pyi +86 -0
  23. vlrdevapi-2.0.0/src/vlrdevapi/_base.py +151 -0
  24. vlrdevapi-2.0.0/src/vlrdevapi/_cache.py +46 -0
  25. vlrdevapi-2.0.0/src/vlrdevapi/_client.py +138 -0
  26. vlrdevapi-2.0.0/src/vlrdevapi/_event/__init__.py +17 -0
  27. vlrdevapi-2.0.0/src/vlrdevapi/_event/_common.py +15 -0
  28. vlrdevapi-2.0.0/src/vlrdevapi/_event/info/__init__.py +9 -0
  29. vlrdevapi-2.0.0/src/vlrdevapi/_event/info/models.py +139 -0
  30. vlrdevapi-2.0.0/src/vlrdevapi/_event/info/namespace.py +77 -0
  31. vlrdevapi-2.0.0/src/vlrdevapi/_event/info/namespace.pyi +16 -0
  32. vlrdevapi-2.0.0/src/vlrdevapi/_event/info/parser.py +379 -0
  33. vlrdevapi-2.0.0/src/vlrdevapi/_event/list/__init__.py +15 -0
  34. vlrdevapi-2.0.0/src/vlrdevapi/_event/list/models.py +91 -0
  35. vlrdevapi-2.0.0/src/vlrdevapi/_event/list/namespace.py +162 -0
  36. vlrdevapi-2.0.0/src/vlrdevapi/_event/list/namespace.pyi +27 -0
  37. vlrdevapi-2.0.0/src/vlrdevapi/_event/list/parser.py +324 -0
  38. vlrdevapi-2.0.0/src/vlrdevapi/_event/matches/__init__.py +9 -0
  39. vlrdevapi-2.0.0/src/vlrdevapi/_event/matches/models.py +83 -0
  40. vlrdevapi-2.0.0/src/vlrdevapi/_event/matches/namespace.py +126 -0
  41. vlrdevapi-2.0.0/src/vlrdevapi/_event/matches/namespace.pyi +23 -0
  42. vlrdevapi-2.0.0/src/vlrdevapi/_event/matches/parser.py +240 -0
  43. vlrdevapi-2.0.0/src/vlrdevapi/_event/namespace.py +326 -0
  44. vlrdevapi-2.0.0/src/vlrdevapi/_event/namespace.pyi +72 -0
  45. vlrdevapi-2.0.0/src/vlrdevapi/_event/stages/__init__.py +4 -0
  46. vlrdevapi-2.0.0/src/vlrdevapi/_event/stages/models.py +49 -0
  47. vlrdevapi-2.0.0/src/vlrdevapi/_event/stages/namespace.py +75 -0
  48. vlrdevapi-2.0.0/src/vlrdevapi/_event/stages/namespace.pyi +16 -0
  49. vlrdevapi-2.0.0/src/vlrdevapi/_event/stages/parser.py +345 -0
  50. vlrdevapi-2.0.0/src/vlrdevapi/_event/standings/__init__.py +9 -0
  51. vlrdevapi-2.0.0/src/vlrdevapi/_event/standings/models.py +100 -0
  52. vlrdevapi-2.0.0/src/vlrdevapi/_event/standings/namespace.py +96 -0
  53. vlrdevapi-2.0.0/src/vlrdevapi/_event/standings/namespace.pyi +16 -0
  54. vlrdevapi-2.0.0/src/vlrdevapi/_event/standings/parser.py +163 -0
  55. vlrdevapi-2.0.0/src/vlrdevapi/_event/teams/__init__.py +8 -0
  56. vlrdevapi-2.0.0/src/vlrdevapi/_event/teams/models.py +63 -0
  57. vlrdevapi-2.0.0/src/vlrdevapi/_event/teams/namespace.py +87 -0
  58. vlrdevapi-2.0.0/src/vlrdevapi/_event/teams/namespace.pyi +16 -0
  59. vlrdevapi-2.0.0/src/vlrdevapi/_event/teams/parser.py +73 -0
  60. vlrdevapi-2.0.0/src/vlrdevapi/_matches/__init__.py +13 -0
  61. vlrdevapi-2.0.0/src/vlrdevapi/_matches/common.py +230 -0
  62. vlrdevapi-2.0.0/src/vlrdevapi/_matches/completed/__init__.py +8 -0
  63. vlrdevapi-2.0.0/src/vlrdevapi/_matches/completed/models.py +54 -0
  64. vlrdevapi-2.0.0/src/vlrdevapi/_matches/completed/namespace.py +90 -0
  65. vlrdevapi-2.0.0/src/vlrdevapi/_matches/completed/namespace.pyi +21 -0
  66. vlrdevapi-2.0.0/src/vlrdevapi/_matches/completed/parser.py +151 -0
  67. vlrdevapi-2.0.0/src/vlrdevapi/_matches/live/__init__.py +4 -0
  68. vlrdevapi-2.0.0/src/vlrdevapi/_matches/live/models.py +47 -0
  69. vlrdevapi-2.0.0/src/vlrdevapi/_matches/live/namespace.py +67 -0
  70. vlrdevapi-2.0.0/src/vlrdevapi/_matches/live/namespace.pyi +16 -0
  71. vlrdevapi-2.0.0/src/vlrdevapi/_matches/live/parser.py +137 -0
  72. vlrdevapi-2.0.0/src/vlrdevapi/_matches/namespace.py +80 -0
  73. vlrdevapi-2.0.0/src/vlrdevapi/_matches/namespace.pyi +25 -0
  74. vlrdevapi-2.0.0/src/vlrdevapi/_matches/upcoming/__init__.py +8 -0
  75. vlrdevapi-2.0.0/src/vlrdevapi/_matches/upcoming/models.py +53 -0
  76. vlrdevapi-2.0.0/src/vlrdevapi/_matches/upcoming/namespace.py +85 -0
  77. vlrdevapi-2.0.0/src/vlrdevapi/_matches/upcoming/namespace.pyi +21 -0
  78. vlrdevapi-2.0.0/src/vlrdevapi/_matches/upcoming/parser.py +146 -0
  79. vlrdevapi-2.0.0/src/vlrdevapi/_player/__init__.py +5 -0
  80. vlrdevapi-2.0.0/src/vlrdevapi/_player/_common_parsing.py +171 -0
  81. vlrdevapi-2.0.0/src/vlrdevapi/_player/agents/__init__.py +4 -0
  82. vlrdevapi-2.0.0/src/vlrdevapi/_player/agents/models.py +42 -0
  83. vlrdevapi-2.0.0/src/vlrdevapi/_player/agents/namespace.py +84 -0
  84. vlrdevapi-2.0.0/src/vlrdevapi/_player/agents/namespace.pyi +22 -0
  85. vlrdevapi-2.0.0/src/vlrdevapi/_player/agents/parser.py +29 -0
  86. vlrdevapi-2.0.0/src/vlrdevapi/_player/info/__init__.py +4 -0
  87. vlrdevapi-2.0.0/src/vlrdevapi/_player/info/models.py +33 -0
  88. vlrdevapi-2.0.0/src/vlrdevapi/_player/info/namespace.py +66 -0
  89. vlrdevapi-2.0.0/src/vlrdevapi/_player/info/namespace.pyi +16 -0
  90. vlrdevapi-2.0.0/src/vlrdevapi/_player/info/parser.py +52 -0
  91. vlrdevapi-2.0.0/src/vlrdevapi/_player/matches/__init__.py +9 -0
  92. vlrdevapi-2.0.0/src/vlrdevapi/_player/matches/models.py +83 -0
  93. vlrdevapi-2.0.0/src/vlrdevapi/_player/matches/namespace.py +85 -0
  94. vlrdevapi-2.0.0/src/vlrdevapi/_player/matches/namespace.pyi +16 -0
  95. vlrdevapi-2.0.0/src/vlrdevapi/_player/matches/parser.py +118 -0
  96. vlrdevapi-2.0.0/src/vlrdevapi/_player/namespace.py +306 -0
  97. vlrdevapi-2.0.0/src/vlrdevapi/_player/namespace.pyi +64 -0
  98. vlrdevapi-2.0.0/src/vlrdevapi/_player/profile/__init__.py +4 -0
  99. vlrdevapi-2.0.0/src/vlrdevapi/_player/profile/models.py +44 -0
  100. vlrdevapi-2.0.0/src/vlrdevapi/_player/profile/namespace.py +78 -0
  101. vlrdevapi-2.0.0/src/vlrdevapi/_player/profile/namespace.pyi +16 -0
  102. vlrdevapi-2.0.0/src/vlrdevapi/_player/profile/parser.py +89 -0
  103. vlrdevapi-2.0.0/src/vlrdevapi/_player/teams/__init__.py +9 -0
  104. vlrdevapi-2.0.0/src/vlrdevapi/_player/teams/models.py +61 -0
  105. vlrdevapi-2.0.0/src/vlrdevapi/_player/teams/namespace.py +110 -0
  106. vlrdevapi-2.0.0/src/vlrdevapi/_player/teams/namespace.pyi +22 -0
  107. vlrdevapi-2.0.0/src/vlrdevapi/_player/teams/parser.py +24 -0
  108. vlrdevapi-2.0.0/src/vlrdevapi/_series/__init__.py +21 -0
  109. vlrdevapi-2.0.0/src/vlrdevapi/_series/economy/__init__.py +15 -0
  110. vlrdevapi-2.0.0/src/vlrdevapi/_series/economy/models.py +85 -0
  111. vlrdevapi-2.0.0/src/vlrdevapi/_series/economy/namespace.py +106 -0
  112. vlrdevapi-2.0.0/src/vlrdevapi/_series/economy/namespace.pyi +16 -0
  113. vlrdevapi-2.0.0/src/vlrdevapi/_series/economy/parser.py +132 -0
  114. vlrdevapi-2.0.0/src/vlrdevapi/_series/info/__init__.py +4 -0
  115. vlrdevapi-2.0.0/src/vlrdevapi/_series/info/models.py +113 -0
  116. vlrdevapi-2.0.0/src/vlrdevapi/_series/info/namespace.py +66 -0
  117. vlrdevapi-2.0.0/src/vlrdevapi/_series/info/namespace.pyi +16 -0
  118. vlrdevapi-2.0.0/src/vlrdevapi/_series/info/parser.py +361 -0
  119. vlrdevapi-2.0.0/src/vlrdevapi/_series/match_namespace.py +220 -0
  120. vlrdevapi-2.0.0/src/vlrdevapi/_series/match_namespace.pyi +42 -0
  121. vlrdevapi-2.0.0/src/vlrdevapi/_series/namespace.py +186 -0
  122. vlrdevapi-2.0.0/src/vlrdevapi/_series/namespace.pyi +39 -0
  123. vlrdevapi-2.0.0/src/vlrdevapi/_series/performance/__init__.py +19 -0
  124. vlrdevapi-2.0.0/src/vlrdevapi/_series/performance/models.py +205 -0
  125. vlrdevapi-2.0.0/src/vlrdevapi/_series/performance/namespace.py +94 -0
  126. vlrdevapi-2.0.0/src/vlrdevapi/_series/performance/namespace.pyi +16 -0
  127. vlrdevapi-2.0.0/src/vlrdevapi/_series/performance/parser.py +313 -0
  128. vlrdevapi-2.0.0/src/vlrdevapi/_series/players/__init__.py +17 -0
  129. vlrdevapi-2.0.0/src/vlrdevapi/_series/players/models.py +84 -0
  130. vlrdevapi-2.0.0/src/vlrdevapi/_series/players/namespace.py +70 -0
  131. vlrdevapi-2.0.0/src/vlrdevapi/_series/players/namespace.pyi +16 -0
  132. vlrdevapi-2.0.0/src/vlrdevapi/_series/players/parser.py +345 -0
  133. vlrdevapi-2.0.0/src/vlrdevapi/_series/rounds/__init__.py +4 -0
  134. vlrdevapi-2.0.0/src/vlrdevapi/_series/rounds/models.py +71 -0
  135. vlrdevapi-2.0.0/src/vlrdevapi/_series/rounds/namespace.py +100 -0
  136. vlrdevapi-2.0.0/src/vlrdevapi/_series/rounds/namespace.pyi +16 -0
  137. vlrdevapi-2.0.0/src/vlrdevapi/_series/rounds/parser.py +108 -0
  138. vlrdevapi-2.0.0/src/vlrdevapi/_series/vods/__init__.py +4 -0
  139. vlrdevapi-2.0.0/src/vlrdevapi/_series/vods/models.py +28 -0
  140. vlrdevapi-2.0.0/src/vlrdevapi/_series/vods/namespace.py +67 -0
  141. vlrdevapi-2.0.0/src/vlrdevapi/_series/vods/namespace.pyi +16 -0
  142. vlrdevapi-2.0.0/src/vlrdevapi/_series/vods/parser.py +30 -0
  143. vlrdevapi-2.0.0/src/vlrdevapi/_team/__init__.py +5 -0
  144. vlrdevapi-2.0.0/src/vlrdevapi/_team/completed_matches/__init__.py +8 -0
  145. vlrdevapi-2.0.0/src/vlrdevapi/_team/completed_matches/models.py +43 -0
  146. vlrdevapi-2.0.0/src/vlrdevapi/_team/completed_matches/namespace.py +100 -0
  147. vlrdevapi-2.0.0/src/vlrdevapi/_team/completed_matches/namespace.pyi +16 -0
  148. vlrdevapi-2.0.0/src/vlrdevapi/_team/completed_matches/parser.py +84 -0
  149. vlrdevapi-2.0.0/src/vlrdevapi/_team/info/__init__.py +4 -0
  150. vlrdevapi-2.0.0/src/vlrdevapi/_team/info/models.py +44 -0
  151. vlrdevapi-2.0.0/src/vlrdevapi/_team/info/namespace.py +97 -0
  152. vlrdevapi-2.0.0/src/vlrdevapi/_team/info/namespace.pyi +16 -0
  153. vlrdevapi-2.0.0/src/vlrdevapi/_team/info/parser.py +168 -0
  154. vlrdevapi-2.0.0/src/vlrdevapi/_team/namespace.py +415 -0
  155. vlrdevapi-2.0.0/src/vlrdevapi/_team/namespace.pyi +89 -0
  156. vlrdevapi-2.0.0/src/vlrdevapi/_team/placements/__init__.py +8 -0
  157. vlrdevapi-2.0.0/src/vlrdevapi/_team/placements/models.py +59 -0
  158. vlrdevapi-2.0.0/src/vlrdevapi/_team/placements/namespace.py +61 -0
  159. vlrdevapi-2.0.0/src/vlrdevapi/_team/placements/namespace.pyi +16 -0
  160. vlrdevapi-2.0.0/src/vlrdevapi/_team/placements/parser.py +177 -0
  161. vlrdevapi-2.0.0/src/vlrdevapi/_team/roster/__init__.py +4 -0
  162. vlrdevapi-2.0.0/src/vlrdevapi/_team/roster/models.py +40 -0
  163. vlrdevapi-2.0.0/src/vlrdevapi/_team/roster/namespace.py +61 -0
  164. vlrdevapi-2.0.0/src/vlrdevapi/_team/roster/namespace.pyi +16 -0
  165. vlrdevapi-2.0.0/src/vlrdevapi/_team/roster/parser.py +146 -0
  166. vlrdevapi-2.0.0/src/vlrdevapi/_team/stats/__init__.py +17 -0
  167. vlrdevapi-2.0.0/src/vlrdevapi/_team/stats/models.py +104 -0
  168. vlrdevapi-2.0.0/src/vlrdevapi/_team/stats/namespace.py +127 -0
  169. vlrdevapi-2.0.0/src/vlrdevapi/_team/stats/namespace.pyi +28 -0
  170. vlrdevapi-2.0.0/src/vlrdevapi/_team/stats/parser.py +504 -0
  171. vlrdevapi-2.0.0/src/vlrdevapi/_team/transactions/__init__.py +9 -0
  172. vlrdevapi-2.0.0/src/vlrdevapi/_team/transactions/models.py +52 -0
  173. vlrdevapi-2.0.0/src/vlrdevapi/_team/transactions/namespace.py +60 -0
  174. vlrdevapi-2.0.0/src/vlrdevapi/_team/transactions/namespace.pyi +16 -0
  175. vlrdevapi-2.0.0/src/vlrdevapi/_team/transactions/parser.py +97 -0
  176. vlrdevapi-2.0.0/src/vlrdevapi/_team/upcoming_matches/__init__.py +8 -0
  177. vlrdevapi-2.0.0/src/vlrdevapi/_team/upcoming_matches/models.py +40 -0
  178. vlrdevapi-2.0.0/src/vlrdevapi/_team/upcoming_matches/namespace.py +97 -0
  179. vlrdevapi-2.0.0/src/vlrdevapi/_team/upcoming_matches/namespace.pyi +16 -0
  180. vlrdevapi-2.0.0/src/vlrdevapi/_team/upcoming_matches/parser.py +84 -0
  181. vlrdevapi-2.0.0/src/vlrdevapi/_utils/__init__.py +9 -0
  182. vlrdevapi-2.0.0/src/vlrdevapi/_utils/pagination.py +37 -0
  183. vlrdevapi-2.0.0/src/vlrdevapi/_utils/paths.py +83 -0
  184. vlrdevapi-2.0.0/src/vlrdevapi/_utils/team_enrichment.py +80 -0
  185. vlrdevapi-2.0.0/src/vlrdevapi/_utils/team_parsing.py +26 -0
  186. vlrdevapi-2.0.0/src/vlrdevapi/commons/__init__.py +26 -0
  187. {vlrdevapi-1.6.1/src/vlrdevapi → vlrdevapi-2.0.0/src/vlrdevapi/commons}/countries.py +112 -105
  188. vlrdevapi-2.0.0/src/vlrdevapi/commons/datetime.py +218 -0
  189. vlrdevapi-2.0.0/src/vlrdevapi/commons/mappings.py +49 -0
  190. vlrdevapi-2.0.0/src/vlrdevapi/commons/prizes.py +32 -0
  191. vlrdevapi-2.0.0/src/vlrdevapi/commons/timezone.py +321 -0
  192. vlrdevapi-2.0.0/src/vlrdevapi/exceptions.py +89 -0
  193. vlrdevapi-2.0.0/src/vlrdevapi/fetcher.py +232 -0
  194. vlrdevapi-2.0.0/src/vlrdevapi/py.typed +0 -0
  195. vlrdevapi-2.0.0/src/vlrdevapi/validators.py +95 -0
  196. vlrdevapi-2.0.0/uv.lock +1037 -0
  197. vlrdevapi-2.0.0/wrangler.jsonc +6 -0
  198. vlrdevapi-1.6.1/PKG-INFO +0 -202
  199. vlrdevapi-1.6.1/README.md +0 -144
  200. vlrdevapi-1.6.1/pyproject.toml +0 -73
  201. vlrdevapi-1.6.1/setup.cfg +0 -4
  202. vlrdevapi-1.6.1/src/vlrdevapi/__init__.py +0 -132
  203. vlrdevapi-1.6.1/src/vlrdevapi/config.py +0 -134
  204. vlrdevapi-1.6.1/src/vlrdevapi/events/__init__.py +0 -62
  205. vlrdevapi-1.6.1/src/vlrdevapi/events/info.py +0 -211
  206. vlrdevapi-1.6.1/src/vlrdevapi/events/list_events.py +0 -273
  207. vlrdevapi-1.6.1/src/vlrdevapi/events/match_summary.py +0 -140
  208. vlrdevapi-1.6.1/src/vlrdevapi/events/matches.py +0 -258
  209. vlrdevapi-1.6.1/src/vlrdevapi/events/models.py +0 -165
  210. vlrdevapi-1.6.1/src/vlrdevapi/events/stages.py +0 -45
  211. vlrdevapi-1.6.1/src/vlrdevapi/events/standings.py +0 -191
  212. vlrdevapi-1.6.1/src/vlrdevapi/events/teams.py +0 -97
  213. vlrdevapi-1.6.1/src/vlrdevapi/exceptions.py +0 -67
  214. vlrdevapi-1.6.1/src/vlrdevapi/fetcher.py +0 -621
  215. vlrdevapi-1.6.1/src/vlrdevapi/matches/__init__.py +0 -16
  216. vlrdevapi-1.6.1/src/vlrdevapi/matches/_parser.py +0 -201
  217. vlrdevapi-1.6.1/src/vlrdevapi/matches/completed.py +0 -72
  218. vlrdevapi-1.6.1/src/vlrdevapi/matches/live.py +0 -43
  219. vlrdevapi-1.6.1/src/vlrdevapi/matches/models.py +0 -31
  220. vlrdevapi-1.6.1/src/vlrdevapi/matches/upcoming.py +0 -75
  221. vlrdevapi-1.6.1/src/vlrdevapi/players/__init__.py +0 -20
  222. vlrdevapi-1.6.1/src/vlrdevapi/players/_parser.py +0 -40
  223. vlrdevapi-1.6.1/src/vlrdevapi/players/agent_stats.py +0 -115
  224. vlrdevapi-1.6.1/src/vlrdevapi/players/matches.py +0 -231
  225. vlrdevapi-1.6.1/src/vlrdevapi/players/models.py +0 -93
  226. vlrdevapi-1.6.1/src/vlrdevapi/players/profile.py +0 -183
  227. vlrdevapi-1.6.1/src/vlrdevapi/search/__init__.py +0 -31
  228. vlrdevapi-1.6.1/src/vlrdevapi/search/models.py +0 -68
  229. vlrdevapi-1.6.1/src/vlrdevapi/search/search.py +0 -432
  230. vlrdevapi-1.6.1/src/vlrdevapi/series/__init__.py +0 -19
  231. vlrdevapi-1.6.1/src/vlrdevapi/series/_parser.py +0 -125
  232. vlrdevapi-1.6.1/src/vlrdevapi/series/info.py +0 -203
  233. vlrdevapi-1.6.1/src/vlrdevapi/series/matches.py +0 -579
  234. vlrdevapi-1.6.1/src/vlrdevapi/series/models.py +0 -108
  235. vlrdevapi-1.6.1/src/vlrdevapi/status.py +0 -32
  236. vlrdevapi-1.6.1/src/vlrdevapi/teams/__init__.py +0 -43
  237. vlrdevapi-1.6.1/src/vlrdevapi/teams/info.py +0 -127
  238. vlrdevapi-1.6.1/src/vlrdevapi/teams/matches.py +0 -540
  239. vlrdevapi-1.6.1/src/vlrdevapi/teams/models.py +0 -133
  240. vlrdevapi-1.6.1/src/vlrdevapi/teams/placements.py +0 -131
  241. vlrdevapi-1.6.1/src/vlrdevapi/teams/roster.py +0 -133
  242. vlrdevapi-1.6.1/src/vlrdevapi/teams/transactions.py +0 -362
  243. vlrdevapi-1.6.1/src/vlrdevapi/utils.py +0 -227
  244. vlrdevapi-1.6.1/src/vlrdevapi.egg-info/PKG-INFO +0 -202
  245. vlrdevapi-1.6.1/src/vlrdevapi.egg-info/SOURCES.txt +0 -51
  246. vlrdevapi-1.6.1/src/vlrdevapi.egg-info/dependency_links.txt +0 -1
  247. vlrdevapi-1.6.1/src/vlrdevapi.egg-info/requires.txt +0 -12
  248. vlrdevapi-1.6.1/src/vlrdevapi.egg-info/top_level.txt +0 -1
@@ -0,0 +1,7 @@
1
+ # Exclude documentation from language stats
2
+ official-docs/** linguist-vendored
3
+ docs-py/** linguist-vendored
4
+
5
+ # Exclude test fixtures
6
+ tests/test_html/** linguist-vendored
7
+ tests/test_html/** linguist-detectable=false
@@ -0,0 +1,33 @@
1
+ ---
2
+ name: Bug Report
3
+ about: Report a problem with vlrdevapi
4
+ title: ""
5
+ labels: bug
6
+ assignees: ""
7
+ ---
8
+
9
+ ## Description
10
+
11
+ A clear description of the bug.
12
+
13
+ ## Reproduction
14
+
15
+ ```python
16
+ import vlrdevapi
17
+
18
+ # Minimal code to reproduce
19
+ ```
20
+
21
+ ## Expected
22
+
23
+ What you expected to happen.
24
+
25
+ ## Actual
26
+
27
+ What actually happened (include full traceback).
28
+
29
+ ## Environment
30
+
31
+ - Python version:
32
+ - vlrdevapi version:
33
+ - OS:
@@ -0,0 +1,19 @@
1
+ ---
2
+ name: Feature Request
3
+ about: Suggest an idea for vlrdevapi
4
+ title: ""
5
+ labels: enhancement
6
+ assignees: ""
7
+ ---
8
+
9
+ ## Problem
10
+
11
+ What problem would this feature solve?
12
+
13
+ ## Proposed Solution
14
+
15
+ How would you like this to work?
16
+
17
+ ## Alternatives
18
+
19
+ What alternatives have you considered?
@@ -0,0 +1,29 @@
1
+ name: Docs Check
2
+
3
+ on:
4
+ pull_request:
5
+ paths:
6
+ - 'official-docs/**'
7
+ - 'docs-py/**'
8
+ push:
9
+ branches: [main]
10
+ paths:
11
+ - 'official-docs/**'
12
+ - 'docs-py/**'
13
+
14
+ jobs:
15
+ check:
16
+ runs-on: ubuntu-latest
17
+ steps:
18
+ - uses: actions/checkout@v7
19
+
20
+ - uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b
21
+
22
+ with:
23
+ python-version: '3.12'
24
+
25
+ - name: Install package
26
+ run: uv sync --group dev
27
+
28
+ - name: Run MDX examples check
29
+ run: uv run scripts/check_mdx_examples.py
@@ -0,0 +1,77 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ jobs:
11
+ test:
12
+ name: Test on Python ${{ matrix.python-version }}
13
+ runs-on: ubuntu-latest
14
+ strategy:
15
+ matrix:
16
+ python-version: ['3.11', '3.12', '3.13', '3.14']
17
+
18
+ steps:
19
+ - uses: actions/checkout@v7
20
+
21
+ - uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b
22
+ with:
23
+ python-version: ${{ matrix.python-version }}
24
+
25
+ - name: Install dependencies
26
+ run: uv sync --group dev
27
+
28
+ - name: Download fixtures
29
+ run: uv run python scripts/download_fixtures.py
30
+
31
+ - name: Run tests
32
+ run: uv run pytest
33
+
34
+ release-build:
35
+ name: Build release distributions
36
+ runs-on: ubuntu-latest
37
+ needs:
38
+ - test
39
+
40
+ steps:
41
+ - uses: actions/checkout@v7
42
+
43
+ - uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b
44
+ with:
45
+ python-version: "3.12"
46
+
47
+ - name: Build package
48
+ run: uv build
49
+
50
+ - name: Upload distributions
51
+ uses: actions/upload-artifact@v4
52
+ with:
53
+ name: release-dists
54
+ path: dist/
55
+
56
+ pypi-publish:
57
+ name: Publish to PyPI
58
+ runs-on: ubuntu-latest
59
+ needs:
60
+ - release-build
61
+
62
+ permissions:
63
+ id-token: write
64
+
65
+ environment:
66
+ name: pypi
67
+ url: https://pypi.org/project/vlrdevapi/
68
+
69
+ steps:
70
+ - name: Retrieve release distributions
71
+ uses: actions/download-artifact@v4
72
+ with:
73
+ name: release-dists
74
+ path: dist/
75
+
76
+ - name: Publish to PyPI
77
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,39 @@
1
+ name: Test
2
+
3
+ on:
4
+ pull_request:
5
+ paths:
6
+ - 'src/**'
7
+ - 'tests/**'
8
+ - 'scripts/download_fixtures.py'
9
+ - '.github/workflows/test.yml'
10
+ push:
11
+ branches: [main]
12
+ paths:
13
+ - 'src/**'
14
+ - 'tests/**'
15
+ - 'scripts/download_fixtures.py'
16
+ - '.github/workflows/test.yml'
17
+
18
+ jobs:
19
+ test:
20
+ runs-on: ubuntu-latest
21
+ strategy:
22
+ matrix:
23
+ python-version: ['3.11', '3.12', '3.13', '3.14']
24
+
25
+ steps:
26
+ - uses: actions/checkout@v7
27
+
28
+ - uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b
29
+ with:
30
+ python-version: ${{ matrix.python-version }}
31
+
32
+ - name: Install dependencies
33
+ run: uv sync --group dev
34
+
35
+ - name: Download fixtures
36
+ run: uv run python scripts/download_fixtures.py
37
+
38
+ - name: Run tests
39
+ run: uv run pytest
@@ -0,0 +1,31 @@
1
+ # Python-generated files
2
+ __pycache__/
3
+ *.py[oc]
4
+ build/
5
+ dist/
6
+ wheels/
7
+ *.egg-info
8
+
9
+ # Virtual environments
10
+ .venv
11
+ tests/test_html/
12
+
13
+ nul
14
+ .pytest_cache/
15
+ .ruff_cache
16
+ .kilo
17
+
18
+ # Sphinx build output
19
+ docs-py/_build/
20
+
21
+ # Zensical build output
22
+ docs-py/site/
23
+
24
+ # Debug script
25
+ main.py
26
+
27
+ # Official docs dependencies
28
+ official-docs/node_modules/
29
+
30
+ # Zensical cache
31
+ docs-py/.cache/
@@ -0,0 +1 @@
1
+ 3.12
@@ -0,0 +1,15 @@
1
+ version: 2
2
+
3
+ build:
4
+ os: ubuntu-24.04
5
+ tools:
6
+ python: latest
7
+ jobs:
8
+ install:
9
+ - pip install zensical mkdocstrings mkdocstrings-python
10
+ build:
11
+ html:
12
+ - cd docs-py && zensical build
13
+ post_build:
14
+ - mkdir -p $READTHEDOCS_OUTPUT/html/
15
+ - cp --recursive docs-py/site/* $READTHEDOCS_OUTPUT/html/
@@ -0,0 +1,69 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/).
7
+
8
+ ## [2.0.0] - 2026-07-07
9
+
10
+ ### Major Rewrite
11
+
12
+ Complete rewrite of the library. v2.0.0 replaces the asynchronous
13
+ aiohttp-based v1.x with a synchronous httpx-based architecture.
14
+ The API surface, module structure, and type system are all new.
15
+
16
+ ### Added
17
+
18
+ - **Sync-first client** - `VLRClient` with context manager support and
19
+ thread-safe parallel enrichment for bulk operations.
20
+ - **Curried access pattern** - bind a player/team/series/event ID once,
21
+ then chain sub-methods without re-passing the ID.
22
+ - **Event namespace** - list with pagination and filtering (tier, region,
23
+ status), plus info, matches, stages, standings, and teams.
24
+ - **Match listing namespace** - live, upcoming (paginated), and completed
25
+ (paginated) match feeds with team enrichment.
26
+ - **Player namespace** - info, teams (current/past), agent stats
27
+ (30d/60d/90d/all), match history (paginated), and consolidated profile.
28
+ - **Series namespace** - info (veto, games, scores), player stats per game,
29
+ round-by-round data, performance (kill matrices, advanced stats),
30
+ economy (buy types, spend analysis), and VOD links.
31
+ - **Team namespace** - info, roster, stats (per-map with optional agent
32
+ composition), placements, transactions, completed and upcoming matches.
33
+ - **Pydantic v2 models** - fully typed with Google-style docstrings and
34
+ field descriptions.
35
+ - **Built-in resilience** - configurable retry with exponential/linear/
36
+ constant backoff, jitter, and token-bucket rate limiting.
37
+ - **Thread-safe LRU cache** - bounded `LRUCache` for team data to avoid
38
+ redundant HTTP requests during enrichment.
39
+ - **Input validation** - `@sanitize_and_validate` decorator with positive-ID
40
+ checks and Pydantic type coercion.
41
+ - **Custom exceptions** - typed hierarchy (`NotFoundError`, `RateLimitError`,
42
+ `ParsingError`, `ValidationError`, etc.) for clean error handling.
43
+ - **Documentation** - Zensical/MkDocs site via `docs-py/` (ReadTheDocs)
44
+ with auto-generated API reference from docstrings.
45
+ - **Official website** - Next.js + Fumadocs site via `official-docs/`
46
+ (Cloudflare Pages) with interactive code examples.
47
+ - **Doc validation** - `scripts/check_mdx_examples.py` validates syntax,
48
+ imports, and live execution of all code examples in docs.
49
+
50
+ ### Changed
51
+
52
+ - **Architecture** - migrated from async aiohttp to synchronous httpx.
53
+ No more `await` or `async with` required.
54
+ - **No explicit session management** - `VLRClient` handles connection
55
+ pooling, retries, and rate limiting internally.
56
+ - **Type system** - replaced raw dict returns with Pydantic v2 models
57
+ for all endpoints.
58
+ - **Build system** - moved from setuptools to hatchling with `uv` for
59
+ dependency management.
60
+ - **Python requirement** - raised minimum to 3.11.
61
+
62
+ ### Removed
63
+
64
+ - All v1.x async endpoints (`get_event`, `get_team`, `get_player`, etc.)
65
+ are removed. See the new module-level or client-based API.
66
+ - `aiohttp` and `asyncio` dependencies.
67
+ - v1.x match/event/team parsing modules.
68
+
69
+ [2.0.0]: https://github.com/Vanshbordia/vlrdevapi/compare/v1.6.2...v2.0.0
@@ -0,0 +1,19 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We as members, contributors, and leaders pledge to make participation in our
6
+ community a harassment-free experience for everyone, regardless of age, body
7
+ size, visible or invisible disability, ethnicity, sex characteristics, gender
8
+ identity and expression, level of experience, education, socio-economic status,
9
+ nationality, personal appearance, race, religion, or sexual identity and
10
+ orientation.
11
+
12
+ We pledge to act and interact in ways that contribute to an open, welcoming,
13
+ diverse, inclusive, and healthy community.
14
+
15
+ ## Enforcement
16
+
17
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
18
+ reported to the project maintainers at vanshb@riftwatch.org. All complaints
19
+ will be reviewed and investigated.
@@ -0,0 +1,41 @@
1
+ # Contributing to vlrdevapi
2
+
3
+ Thank you for your interest in contributing!
4
+
5
+ ## Development Setup
6
+
7
+ 1. Clone the repo: `git clone https://github.com/Vanshbordia/vlrdevapi`
8
+ 2. Install dependencies: `uv sync --group dev`
9
+ 3. Run pre-checks: `ruff check src/` and `ty check src/vlrdevapi/`
10
+
11
+ ## Pull Request Guidelines
12
+
13
+ - Keep PRs focused on a single concern.
14
+ - Add or update tests for any changed behavior.
15
+ - Run `ruff check src/ tests/` and `ty check src/vlrdevapi/` before pushing.
16
+ - Update the CHANGELOG.md under the next version header.
17
+ - If changing documentation (.mdx files), run `uv run scripts/check_mdx_examples.py` and ensure all checks pass.
18
+
19
+ ## Code Style
20
+
21
+ - Follow PEP 8 with `ruff` defaults (120-char lines, double quotes).
22
+ - Use Google-style docstrings on all public methods.
23
+ - Annotate all function signatures with type hints.
24
+ - Use `Literal` over `Union[Literal, str]` — validation is handled at runtime.
25
+
26
+ ## Project Structure
27
+
28
+ ```
29
+ src/vlrdevapi/
30
+ _base.py # SyncNamespace base class
31
+ _cache.py # LRUCache
32
+ client.py # VLRClient
33
+ commons/ # Shared utilities (mappings, datetime, countries)
34
+ event/ # Event/tournament endpoints
35
+ matches/ # Match listing endpoints (live / upcoming / completed)
36
+ player/ # Player endpoints (info / teams / agents / matches / profile)
37
+ series/ # Series (match detail) endpoints
38
+ team/ # Team endpoints (info / roster / placements / etc.)
39
+ validators.py # Input sanitization / validation
40
+ fetcher.py # HTTP fetching with retries and rate limiting
41
+ ```
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2025 Vansh Bordia
3
+ Copyright (c) 2026 Vansh Bordia
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
18
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
21
+ SOFTWARE.
@@ -0,0 +1,215 @@
1
+ Metadata-Version: 2.4
2
+ Name: vlrdevapi
3
+ Version: 2.0.0
4
+ Summary: A Python library to scrape data from vlr.gg
5
+ Project-URL: Homepage, https://vlrdevapi.pages.dev/
6
+ Project-URL: Repository, https://github.com/Vanshbordia/vlrdevapi
7
+ Project-URL: Documentation, https://vlrdevapi.pages.dev/docs
8
+ License: MIT License
9
+
10
+ Copyright (c) 2026 Vansh Bordia
11
+
12
+ Permission is hereby granted, free of charge, to any person obtaining a copy
13
+ of this software and associated documentation files (the "Software"), to deal
14
+ in the Software without restriction, including without limitation the rights
15
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16
+ copies of the Software, and to permit persons to whom the Software is
17
+ furnished to do so, subject to the following conditions:
18
+
19
+ The above copyright notice and this permission notice shall be included in all
20
+ copies or substantial portions of the Software.
21
+
22
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28
+ SOFTWARE.
29
+ License-File: LICENCE
30
+ Classifier: Development Status :: 3 - Alpha
31
+ Classifier: Intended Audience :: Developers
32
+ Classifier: License :: OSI Approved :: MIT License
33
+ Classifier: Programming Language :: Python :: 3.11
34
+ Classifier: Programming Language :: Python :: 3.12
35
+ Classifier: Programming Language :: Python :: 3.13
36
+ Classifier: Programming Language :: Python :: 3.14
37
+ Classifier: Topic :: Games/Entertainment
38
+ Classifier: Topic :: Internet :: WWW/HTTP
39
+ Requires-Python: >=3.11
40
+ Requires-Dist: httpx>=0.28.1
41
+ Requires-Dist: pydantic>=2.12.5
42
+ Requires-Dist: selectolax>=0.4.7
43
+ Provides-Extra: test
44
+ Requires-Dist: pytest-cov>=7.1.0; extra == 'test'
45
+ Requires-Dist: pytest>=8.0; extra == 'test'
46
+ Requires-Dist: respx>=0.23.1; extra == 'test'
47
+ Description-Content-Type: text/markdown
48
+
49
+ <div align="center">
50
+
51
+ <img src="official-docs/public/logo.svg" width="120" alt="vlrdevapi logo">
52
+
53
+ # vlrdevapi
54
+
55
+ **Python library for VLR.gg Valorant esports data**
56
+
57
+ [![Python Version](https://img.shields.io/pypi/pyversions/vlrdevapi.svg)](https://pypi.org/project/vlrdevapi/)
58
+ [![PyPI](https://img.shields.io/pypi/v/vlrdevapi.svg)](https://pypi.org/project/vlrdevapi/)
59
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
60
+
61
+ [Documentation](https://vlrdevapi.pages.dev/docs) · [ReadTheDocs](https://vlrdevapi.readthedocs.io/) · [PyPI](https://pypi.org/project/vlrdevapi/) · [GitHub](https://github.com/Vanshbordia/vlrdevapi)
62
+
63
+ </div>
64
+
65
+ ---
66
+
67
+ Access Valorant esports data from VLR.gg with a clean, type-safe Python API. Get tournament info, match schedules, player stats, team data, and series/match-level details.
68
+
69
+ ## Features
70
+
71
+ - **Complete Data Access** - Events, matches, players, teams, and series
72
+ - **Type-Safe** - Pydantic models with rich type hints and field descriptions
73
+ - **Production-Ready** - Retry logic, rate limiting, and LRU-cached enrichment
74
+ - **Curried Access** - Bind a player/team/series ID once, then call sub-methods without re-passing
75
+ - **Managed with [uv](https://docs.astral.sh/uv/)** - Fast dependency resolution and virtual environment management
76
+
77
+ ## Installation
78
+
79
+ ```bash
80
+ # Using uv (recommended)
81
+ uv add vlrdevapi
82
+
83
+ # Using pip
84
+ pip install vlrdevapi
85
+ ```
86
+
87
+ Requires Python 3.11+
88
+
89
+ ## Quick Start
90
+
91
+ ### Module-level (no client needed)
92
+
93
+ ```python
94
+ import vlrdevapi
95
+
96
+ # Single-shot fetches via module-level access
97
+ info = vlrdevapi.player.info(player_id=11225)
98
+ print(f"{info.name} - {info.country}")
99
+
100
+ series = vlrdevapi.series.info(series_id=542272)
101
+ print(f"{series.team1.name} vs {series.team2.name}")
102
+
103
+ event = vlrdevapi.event.info(event_id=2863)
104
+ print(f"{event.name} - {event.subtitle}")
105
+ ```
106
+
107
+ ### Sync client
108
+
109
+ ```python
110
+ from vlrdevapi import VLRClient
111
+
112
+ with VLRClient() as client:
113
+ # Curried access - bind a player once
114
+ player = client.player(11225)
115
+ print(player.info().name)
116
+ print(player.teams().current_teams)
117
+ print(player.agents(timespan="all").agents[:3])
118
+
119
+ # Team data
120
+ team = client.team(1034)
121
+ roster = team.roster()
122
+ placements = team.placements()
123
+
124
+ # Event data
125
+ event = client.event(2863)
126
+ stages = event.stages()
127
+ matches = event.matches()
128
+ ```
129
+
130
+ ## API Modules
131
+
132
+ ### Matches
133
+
134
+ ```python
135
+ matches = client.matches.upcoming(page=1)
136
+ live = client.matches.live()
137
+ completed = client.matches.completed(page=1)
138
+ ```
139
+
140
+ ### Players
141
+
142
+ ```python
143
+ p = client.player(11225)
144
+ info = p.info() # Basic info
145
+ teams = p.teams() # Current / past teams
146
+ agents = p.agents(timespan="60d") # Agent stats
147
+ matches = p.matches(limit=20) # Match history
148
+ profile = p.profile() # Consolidated profile
149
+ ```
150
+
151
+ ### Teams
152
+
153
+ ```python
154
+ t = client.team(1034)
155
+ info = t.info() # Name, tag, socials
156
+ roster = t.roster() # Players + staff
157
+ placements = t.placements() # Event placements + winnings
158
+ transactions = t.transactions() # Join / leave history
159
+ completed = t.completed_matches() # Completed match results
160
+ upcoming = t.upcoming_matches() # Upcoming match schedule
161
+ ```
162
+
163
+ ### Events
164
+
165
+ ```python
166
+ e = client.event(2863)
167
+ info = e.info() # Event details
168
+ matches = e.matches() # Match list
169
+ standings = e.standings() # Standings / prize distribution
170
+ ```
171
+
172
+ ### Series
173
+
174
+ ```python
175
+ s = client.series(542272)
176
+ info = s.info() # Series overview
177
+ vods = s.vods() # VOD links
178
+ players = s.players(game_id=1) # Per-game player stats
179
+ rounds = s.rounds(game_id=1) # Round-by-round data
180
+ performance = s.performance() # Advanced performance stats
181
+ economy = s.economy(game_id=1) # Economy data
182
+ ```
183
+
184
+ ## Documentation
185
+
186
+ - **Official Docs** - [vlrdevapi.pages.dev/docs](https://vlrdevapi.pages.dev/docs)
187
+ - **ReadTheDocs** - [vlrdevapi.readthedocs.io](https://vlrdevapi.readthedocs.io/)
188
+
189
+ ## Development
190
+
191
+ This project uses [uv](https://docs.astral.sh/uv/) for dependency management.
192
+
193
+ ```bash
194
+ # Clone and set up
195
+ git clone https://github.com/Vanshbordia/vlrdevapi
196
+ cd vlrdevapi
197
+ uv sync --group dev
198
+
199
+ # Lint & type check
200
+ ruff check src/ tests/
201
+ ty check src/vlrdevapi/
202
+
203
+ # Run tests
204
+ uv run pytest tests/ -v
205
+ ```
206
+
207
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for the full contribution guide.
208
+
209
+ ## License
210
+
211
+ MIT License - see the [LICENCE](LICENCE) file.
212
+
213
+ ---
214
+
215
+ **Disclaimer:** Not affiliated with VLR.gg or Riot Games. Use responsibly.