vlrdevapi 3.1.0__tar.gz → 3.1.2__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 (242) hide show
  1. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/.github/workflows/cleanup-caches.yml +1 -1
  2. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/.github/workflows/docs-check.yml +8 -1
  3. vlrdevapi-3.1.2/.github/workflows/mcp-publish.yml +27 -0
  4. vlrdevapi-3.1.2/.github/workflows/publish.yml +99 -0
  5. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/.github/workflows/test.yml +1 -1
  6. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/CHANGELOG.md +37 -0
  7. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/PKG-INFO +5 -2
  8. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/README.md +3 -1
  9. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/pyproject.toml +3 -2
  10. vlrdevapi-3.1.2/scripts/check_docs_schema.py +478 -0
  11. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/scripts/download_fixtures.py +14 -2
  12. vlrdevapi-3.1.2/server.json +32 -0
  13. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/__init__.py +1 -1
  14. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/uv.lock +573 -518
  15. vlrdevapi-3.1.0/.github/workflows/publish.yml +0 -77
  16. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/.gitattributes +0 -0
  17. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  18. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  19. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/.gitignore +0 -0
  20. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/.nvmrc +0 -0
  21. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/.python-version +0 -0
  22. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/.readthedocs.yaml +0 -0
  23. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/CODE_OF_CONDUCT.md +0 -0
  24. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/CONTRIBUTING.md +0 -0
  25. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/LICENCE +0 -0
  26. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/SECURITY.md +0 -0
  27. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/SUPPORT.md +0 -0
  28. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/scripts/check_mdx_examples.py +0 -0
  29. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/__init__.pyi +0 -0
  30. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_base.py +0 -0
  31. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_cache.py +0 -0
  32. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_client.py +0 -0
  33. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/__init__.py +0 -0
  34. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/_common.py +0 -0
  35. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/info/__init__.py +0 -0
  36. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/info/models.py +0 -0
  37. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/info/namespace.py +0 -0
  38. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/info/namespace.pyi +0 -0
  39. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/info/parser.py +0 -0
  40. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/list/__init__.py +0 -0
  41. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/list/models.py +0 -0
  42. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/list/namespace.py +0 -0
  43. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/list/namespace.pyi +0 -0
  44. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/list/parser.py +0 -0
  45. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/matches/__init__.py +0 -0
  46. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/matches/models.py +0 -0
  47. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/matches/namespace.py +0 -0
  48. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/matches/namespace.pyi +0 -0
  49. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/matches/parser.py +0 -0
  50. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/namespace.py +0 -0
  51. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/namespace.pyi +0 -0
  52. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/stages/__init__.py +0 -0
  53. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/stages/models.py +0 -0
  54. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/stages/namespace.py +0 -0
  55. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/stages/namespace.pyi +0 -0
  56. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/stages/parser.py +0 -0
  57. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/standings/__init__.py +0 -0
  58. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/standings/models.py +0 -0
  59. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/standings/namespace.py +0 -0
  60. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/standings/namespace.pyi +0 -0
  61. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/standings/parser.py +0 -0
  62. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/teams/__init__.py +0 -0
  63. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/teams/models.py +0 -0
  64. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/teams/namespace.py +0 -0
  65. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/teams/namespace.pyi +0 -0
  66. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_event/teams/parser.py +0 -0
  67. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_matches/__init__.py +0 -0
  68. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_matches/common.py +0 -0
  69. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_matches/completed/__init__.py +0 -0
  70. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_matches/completed/models.py +0 -0
  71. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_matches/completed/namespace.py +0 -0
  72. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_matches/completed/namespace.pyi +0 -0
  73. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_matches/completed/parser.py +0 -0
  74. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_matches/live/__init__.py +0 -0
  75. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_matches/live/models.py +0 -0
  76. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_matches/live/namespace.py +0 -0
  77. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_matches/live/namespace.pyi +0 -0
  78. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_matches/live/parser.py +0 -0
  79. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_matches/namespace.py +0 -0
  80. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_matches/namespace.pyi +0 -0
  81. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_matches/upcoming/__init__.py +0 -0
  82. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_matches/upcoming/models.py +0 -0
  83. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_matches/upcoming/namespace.py +0 -0
  84. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_matches/upcoming/namespace.pyi +0 -0
  85. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_matches/upcoming/parser.py +0 -0
  86. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_news/__init__.py +0 -0
  87. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_news/article/__init__.py +0 -0
  88. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_news/article/models.py +0 -0
  89. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_news/article/namespace.py +0 -0
  90. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_news/article/namespace.pyi +0 -0
  91. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_news/article/parser.py +0 -0
  92. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_news/common.py +0 -0
  93. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_news/list/__init__.py +0 -0
  94. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_news/list/models.py +0 -0
  95. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_news/list/namespace.py +0 -0
  96. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_news/list/namespace.pyi +0 -0
  97. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_news/list/parser.py +0 -0
  98. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_news/namespace.py +0 -0
  99. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_news/namespace.pyi +0 -0
  100. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/__init__.py +0 -0
  101. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/_common_parsing.py +0 -0
  102. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/agents/__init__.py +0 -0
  103. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/agents/models.py +0 -0
  104. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/agents/namespace.py +0 -0
  105. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/agents/namespace.pyi +0 -0
  106. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/agents/parser.py +0 -0
  107. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/info/__init__.py +0 -0
  108. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/info/models.py +0 -0
  109. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/info/namespace.py +0 -0
  110. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/info/namespace.pyi +0 -0
  111. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/info/parser.py +0 -0
  112. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/matches/__init__.py +0 -0
  113. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/matches/models.py +0 -0
  114. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/matches/namespace.py +0 -0
  115. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/matches/namespace.pyi +0 -0
  116. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/matches/parser.py +0 -0
  117. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/namespace.py +0 -0
  118. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/namespace.pyi +0 -0
  119. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/placements/__init__.py +0 -0
  120. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/placements/models.py +0 -0
  121. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/placements/namespace.py +0 -0
  122. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/placements/namespace.pyi +0 -0
  123. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/placements/parser.py +0 -0
  124. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/profile/__init__.py +0 -0
  125. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/profile/models.py +0 -0
  126. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/profile/namespace.py +0 -0
  127. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/profile/namespace.pyi +0 -0
  128. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/profile/parser.py +0 -0
  129. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/teams/__init__.py +0 -0
  130. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/teams/models.py +0 -0
  131. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/teams/namespace.py +0 -0
  132. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/teams/namespace.pyi +0 -0
  133. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_player/teams/parser.py +0 -0
  134. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/__init__.py +0 -0
  135. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/_utils.py +0 -0
  136. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/economy/__init__.py +0 -0
  137. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/economy/models.py +0 -0
  138. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/economy/namespace.py +0 -0
  139. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/economy/namespace.pyi +0 -0
  140. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/economy/parser.py +0 -0
  141. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/info/__init__.py +0 -0
  142. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/info/models.py +0 -0
  143. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/info/namespace.py +0 -0
  144. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/info/namespace.pyi +0 -0
  145. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/info/parser.py +0 -0
  146. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/match_namespace.py +0 -0
  147. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/match_namespace.pyi +0 -0
  148. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/namespace.py +0 -0
  149. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/namespace.pyi +0 -0
  150. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/performance/__init__.py +0 -0
  151. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/performance/models.py +0 -0
  152. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/performance/namespace.py +0 -0
  153. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/performance/namespace.pyi +0 -0
  154. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/performance/parser.py +0 -0
  155. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/players/__init__.py +0 -0
  156. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/players/models.py +0 -0
  157. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/players/namespace.py +0 -0
  158. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/players/namespace.pyi +0 -0
  159. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/players/parser.py +0 -0
  160. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/replay/__init__.py +0 -0
  161. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/replay/models.py +0 -0
  162. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/replay/namespace.py +0 -0
  163. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/replay/namespace.pyi +0 -0
  164. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/replay/parser.py +0 -0
  165. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/rounds/__init__.py +0 -0
  166. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/rounds/models.py +0 -0
  167. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/rounds/namespace.py +0 -0
  168. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/rounds/namespace.pyi +0 -0
  169. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/rounds/parser.py +0 -0
  170. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/vods/__init__.py +0 -0
  171. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/vods/models.py +0 -0
  172. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/vods/namespace.py +0 -0
  173. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/vods/namespace.pyi +0 -0
  174. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_series/vods/parser.py +0 -0
  175. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/__init__.py +0 -0
  176. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/completed_matches/__init__.py +0 -0
  177. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/completed_matches/models.py +0 -0
  178. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/completed_matches/namespace.py +0 -0
  179. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/completed_matches/namespace.pyi +0 -0
  180. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/completed_matches/parser.py +0 -0
  181. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/info/__init__.py +0 -0
  182. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/info/models.py +0 -0
  183. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/info/namespace.py +0 -0
  184. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/info/namespace.pyi +0 -0
  185. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/info/parser.py +0 -0
  186. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/namespace.py +0 -0
  187. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/namespace.pyi +0 -0
  188. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/placements/__init__.py +0 -0
  189. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/placements/models.py +0 -0
  190. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/placements/namespace.py +0 -0
  191. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/placements/namespace.pyi +0 -0
  192. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/placements/parser.py +0 -0
  193. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/roster/__init__.py +0 -0
  194. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/roster/models.py +0 -0
  195. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/roster/namespace.py +0 -0
  196. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/roster/namespace.pyi +0 -0
  197. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/roster/parser.py +0 -0
  198. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/stats/__init__.py +0 -0
  199. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/stats/models.py +0 -0
  200. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/stats/namespace.py +0 -0
  201. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/stats/namespace.pyi +0 -0
  202. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/stats/parser.py +0 -0
  203. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/transactions/__init__.py +0 -0
  204. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/transactions/models.py +0 -0
  205. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/transactions/namespace.py +0 -0
  206. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/transactions/namespace.pyi +0 -0
  207. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/transactions/parser.py +0 -0
  208. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/upcoming_matches/__init__.py +0 -0
  209. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/upcoming_matches/models.py +0 -0
  210. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/upcoming_matches/namespace.py +0 -0
  211. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/upcoming_matches/namespace.pyi +0 -0
  212. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_team/upcoming_matches/parser.py +0 -0
  213. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_utils/__init__.py +0 -0
  214. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_utils/pagination.py +0 -0
  215. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_utils/paths.py +0 -0
  216. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_utils/team_enrichment.py +0 -0
  217. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_utils/team_parsing.py +0 -0
  218. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/_utils/text.py +0 -0
  219. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/commons/__init__.py +0 -0
  220. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/commons/countries.py +0 -0
  221. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/commons/datetime.py +0 -0
  222. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/commons/export.py +0 -0
  223. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/commons/mappings.py +0 -0
  224. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/commons/prizes.py +0 -0
  225. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/commons/regions.py +0 -0
  226. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/commons/timezone.py +0 -0
  227. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/exceptions.py +0 -0
  228. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/fetcher.py +0 -0
  229. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/mcp/__init__.py +0 -0
  230. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/mcp/_common.py +0 -0
  231. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/mcp/server.py +0 -0
  232. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/mcp/tools/__init__.py +0 -0
  233. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/mcp/tools/composite.py +0 -0
  234. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/mcp/tools/events.py +0 -0
  235. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/mcp/tools/matches.py +0 -0
  236. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/mcp/tools/news.py +0 -0
  237. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/mcp/tools/players.py +0 -0
  238. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/mcp/tools/series.py +0 -0
  239. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/mcp/tools/teams.py +0 -0
  240. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/py.typed +0 -0
  241. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/src/vlrdevapi/validators.py +0 -0
  242. {vlrdevapi-3.1.0 → vlrdevapi-3.1.2}/wrangler.jsonc +0 -0
@@ -10,7 +10,7 @@ permissions:
10
10
 
11
11
  jobs:
12
12
  cleanup:
13
- runs-on: ubuntu-latest
13
+ runs-on: ubuntu-24.04
14
14
  steps:
15
15
  - name: Delete PR caches
16
16
  env:
@@ -5,15 +5,19 @@ on:
5
5
  paths:
6
6
  - 'official-docs/**'
7
7
  - 'docs-py/**'
8
+ - 'src/**'
9
+ - 'scripts/**'
8
10
  push:
9
11
  branches: [main]
10
12
  paths:
11
13
  - 'official-docs/**'
12
14
  - 'docs-py/**'
15
+ - 'src/**'
16
+ - 'scripts/**'
13
17
 
14
18
  jobs:
15
19
  check:
16
- runs-on: ubuntu-latest
20
+ runs-on: ubuntu-24.04
17
21
  steps:
18
22
  - uses: actions/checkout@v7
19
23
 
@@ -24,6 +28,9 @@ jobs:
24
28
  - name: Install package
25
29
  run: uv sync --group dev --all-extras
26
30
 
31
+ - name: Validate documentation schemas against Python library
32
+ run: uv run scripts/check_docs_schema.py
33
+
27
34
  # Restore fixture cache scoped to the current ref (branch or main) and version prefix (v3).
28
35
  # This ensures caches are never shared across unrelated branches or older versions.
29
36
  - name: Restore fixture cache
@@ -0,0 +1,27 @@
1
+ name: Publish to MCP Registry
2
+
3
+ on:
4
+ workflow_dispatch:
5
+
6
+ permissions:
7
+ contents: read
8
+ id-token: write
9
+
10
+ jobs:
11
+ publish:
12
+ name: Publish to MCP Registry
13
+ runs-on: ubuntu-24.04
14
+
15
+ steps:
16
+ - name: Checkout repository
17
+ uses: actions/checkout@v7
18
+
19
+ - name: Install mcp-publisher
20
+ run: |
21
+ curl -L "https://github.com/modelcontextprotocol/registry/releases/latest/download/mcp-publisher_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher
22
+
23
+ - name: Authenticate to MCP Registry
24
+ run: ./mcp-publisher login github-oidc
25
+
26
+ - name: Publish to MCP Registry
27
+ run: ./mcp-publisher publish
@@ -0,0 +1,99 @@
1
+ name: Publish to PyPI and MCP Registry
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ workflow_dispatch:
7
+ inputs:
8
+ target:
9
+ description: 'What to publish'
10
+ required: true
11
+ type: choice
12
+ options:
13
+ - 'all'
14
+ - 'mcp-only'
15
+ - 'pypi-only'
16
+ default: 'all'
17
+
18
+ permissions:
19
+ contents: read
20
+
21
+ jobs:
22
+ test:
23
+ name: Test on Python ${{ matrix.python-version }}
24
+ if: github.event_name == 'release' || inputs.target != 'mcp-only'
25
+ runs-on: ubuntu-24.04
26
+ strategy:
27
+ matrix:
28
+ python-version: ['3.11', '3.12', '3.13', '3.14', '3.15']
29
+
30
+ steps:
31
+ - uses: actions/checkout@v7
32
+
33
+ - uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b
34
+ with:
35
+ python-version: ${{ matrix.python-version }}
36
+
37
+ - name: Install dependencies
38
+ run: uv sync --group dev --all-extras
39
+
40
+ - name: Download fixtures
41
+ run: uv run python scripts/download_fixtures.py
42
+
43
+ - name: Run tests
44
+ run: uv run pytest
45
+
46
+ pypi-publish:
47
+ name: Publish to PyPI
48
+ if: github.event_name == 'release' || inputs.target != 'mcp-only'
49
+ runs-on: ubuntu-24.04
50
+ needs:
51
+ - test
52
+
53
+ permissions:
54
+ id-token: write
55
+
56
+ environment:
57
+ name: pypi
58
+ url: https://pypi.org/project/vlrdevapi/
59
+
60
+ steps:
61
+ - uses: actions/checkout@v7
62
+
63
+ - uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b
64
+ with:
65
+ python-version: "3.12"
66
+
67
+ - name: Build package
68
+ run: uv build
69
+
70
+ - name: Publish to PyPI
71
+ uses: pypa/gh-action-pypi-publish@release/v1
72
+
73
+ mcp-publish:
74
+ name: Publish to MCP Registry
75
+ if: always() && (github.event_name == 'release' || inputs.target != 'pypi-only') && (inputs.target == 'mcp-only' || needs.pypi-publish.result == 'success')
76
+ runs-on: ubuntu-24.04
77
+ needs:
78
+ - pypi-publish
79
+
80
+ permissions:
81
+ id-token: write
82
+ contents: read
83
+
84
+ steps:
85
+ - uses: actions/checkout@v7
86
+
87
+ - name: Install mcp-publisher
88
+ run: |
89
+ curl -L "https://github.com/modelcontextprotocol/registry/releases/latest/download/mcp-publisher_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher
90
+
91
+ - name: Wait for PyPI propagation
92
+ if: github.event_name == 'release' || inputs.target != 'mcp-only'
93
+ run: sleep 15
94
+
95
+ - name: Authenticate to MCP Registry
96
+ run: ./mcp-publisher login github-oidc
97
+
98
+ - name: Publish to MCP Registry
99
+ run: ./mcp-publisher publish
@@ -21,7 +21,7 @@ on:
21
21
 
22
22
  jobs:
23
23
  test:
24
- runs-on: ubuntu-latest
24
+ runs-on: ubuntu-24.04
25
25
  strategy:
26
26
  matrix:
27
27
  python-version: ['3.11', '3.12', '3.13', '3.14', '3.15']
@@ -5,6 +5,41 @@ 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/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/).
7
7
 
8
+ ## [3.1.2] - 2026-11-14
9
+
10
+ ### Fixed
11
+
12
+ - **MCP Registry OIDC Namespace Alignment** — Updated server namespace to `io.github.Vanshbordia/vlrdevapi` in `server.json` to match GitHub identity claim casing strictly, resolving `403 Forbidden` errors during automated registry publishing.
13
+ - **Multilingual Documentation Schemas** — Aligned model attribute tables and executable code examples across Spanish, Portuguese, and Simplified Chinese documentation to match the Python SDK models.
14
+ - **Documentation Verification Pipeline** — Added `check_docs_schema.py` to continuously validate MDX documentation tables against live Python runtime models before doc builds and deployments.
15
+
16
+ ### Added
17
+
18
+ - **Standalone MCP Publishing Workflow** — Added dedicated `.github/workflows/mcp-publish.yml` allowing standalone MCP registry publication on demand via `workflow_dispatch`.
19
+ - **Targeted Release Dispatch** — Added dispatch targets (`all`, `mcp-only`, `pypi-only`) to `publish.yml` to support selective re-releases when PyPI or MCP registry publication runs independently.
20
+
21
+ ### Changed
22
+
23
+ - **CI/CD Runner Upgrades** — Pinned `runs-on: ubuntu-24.04` across all GitHub Actions workflows to eliminate runner deprecation warnings.
24
+ - **Direct PyPI Build Integration** — Streamlined release pipeline by building packages directly with `uv build` in the publish step, eliminating Node.js 20 deprecated artifact upload/download actions.
25
+
26
+ ## [3.1.1] - 2026-11-13
27
+
28
+ ### Added
29
+
30
+ - **Official MCP Registry Manifest** — Added `server.json` compliant with the Model Context Protocol registry schema (`registry.modelcontextprotocol.io`), registering `io.github.Vanshbordia/vlrdevapi` with stdio transport and `uvx` runtime arguments.
31
+ - **Automated MCP Registry Publishing Workflow** — Extended GitHub Actions release pipeline (`publish.yml`) with automated OIDC authentication (`id-token: write`) via `mcp-publisher`.
32
+ - **PyPI MCP Ownership Verification** — Added package ownership verification marker to `README.md`.
33
+
34
+ ### Fixed
35
+
36
+ - **MCP Registry CLI Entrypoint** — Expose `vlrdevapi` console script alias to `vlrdevapi.mcp.server:main` alongside `vlrdevapi-mcp` so MCP registry clients launch the server using the package identifier.
37
+ - **Windows Timezone Support** — Added `tzdata>=2025.1; sys_platform == 'win32'` as a core dependency to resolve `ZoneInfoNotFoundError` when running `vlrdevapi` or `uvx` on Windows.
38
+
39
+ ### Changed
40
+
41
+ - **Dependency Upgrades** — Bumped core Python dependencies (Pydantic, Pandas, Polars, PyArrow, Pytest, Ruff) and documentation website dependencies (Next.js 16.4.6, Fumadocs 16.19, Tailwind CSS 4.3.5).
42
+
8
43
  ## [3.1.0] - 2026-10-25
9
44
 
10
45
  ### Added
@@ -485,6 +520,8 @@ The API surface, module structure, and type system are all new.
485
520
  - `aiohttp` and `asyncio` dependencies.
486
521
  - v1.x match/event/team parsing modules.
487
522
 
523
+ [3.1.2]: https://github.com/Vanshbordia/vlrdevapi/compare/v3.1.1...v3.1.2
524
+ [3.1.1]: https://github.com/Vanshbordia/vlrdevapi/compare/v3.1.0...v3.1.1
488
525
  [3.1.0]: https://github.com/Vanshbordia/vlrdevapi/compare/v3.0.0...v3.1.0
489
526
  [3.0.0]: https://github.com/Vanshbordia/vlrdevapi/compare/v2.4.1...v3.0.0
490
527
  [2.4.1]: https://github.com/Vanshbordia/vlrdevapi/compare/v2.4.0...v2.4.1
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: vlrdevapi
3
- Version: 3.1.0
3
+ Version: 3.1.2
4
4
  Summary: A Python library to scrape data from vlr.gg
5
5
  Project-URL: Homepage, https://vlrdevapi.pages.dev/
6
6
  Project-URL: Repository, https://github.com/Vanshbordia/vlrdevapi
@@ -42,6 +42,7 @@ Requires-Python: >=3.11
42
42
  Requires-Dist: httpx>=0.28.1
43
43
  Requires-Dist: pydantic>=2.14.1
44
44
  Requires-Dist: selectolax>=1.0.0
45
+ Requires-Dist: tzdata>=2025.1; sys_platform == 'win32'
45
46
  Provides-Extra: all
46
47
  Requires-Dist: mcp>=1.2.0; extra == 'all'
47
48
  Requires-Dist: openpyxl>=3.1.0; extra == 'all'
@@ -88,6 +89,8 @@ Description-Content-Type: text/markdown
88
89
 
89
90
  </div>
90
91
 
92
+ <!-- mcp-name: io.github.Vanshbordia/vlrdevapi -->
93
+
91
94
  ---
92
95
 
93
96
  **vlrdevapi** is a high-performance, type-safe Python client for extracting and analyzing Valorant esports data from [VLR.gg](https://www.vlr.gg/). Built for competitive analysts, data scientists, Discord bot creators, and esports engineers, it delivers structured [Pydantic](https://docs.pydantic.dev/) models with full type hinting, built-in rate limiting, automatic retries, and comprehensive coverage across all VLR.gg entities.
@@ -373,7 +376,7 @@ print(players.to_markdown())
373
376
 
374
377
  ## Model Context Protocol (MCP) Server
375
378
 
376
- VLRdevAPI includes a native MCP server for AI assistants and autonomous coding agents:
379
+ VLRdevAPI includes a native MCP server for AI assistants and autonomous coding agents (`io.github.Vanshbordia/vlrdevapi` on the official MCP Registry):
377
380
 
378
381
  ```bash
379
382
  # Run server over stdio
@@ -17,6 +17,8 @@
17
17
 
18
18
  </div>
19
19
 
20
+ <!-- mcp-name: io.github.Vanshbordia/vlrdevapi -->
21
+
20
22
  ---
21
23
 
22
24
  **vlrdevapi** is a high-performance, type-safe Python client for extracting and analyzing Valorant esports data from [VLR.gg](https://www.vlr.gg/). Built for competitive analysts, data scientists, Discord bot creators, and esports engineers, it delivers structured [Pydantic](https://docs.pydantic.dev/) models with full type hinting, built-in rate limiting, automatic retries, and comprehensive coverage across all VLR.gg entities.
@@ -302,7 +304,7 @@ print(players.to_markdown())
302
304
 
303
305
  ## Model Context Protocol (MCP) Server
304
306
 
305
- VLRdevAPI includes a native MCP server for AI assistants and autonomous coding agents:
307
+ VLRdevAPI includes a native MCP server for AI assistants and autonomous coding agents (`io.github.Vanshbordia/vlrdevapi` on the official MCP Registry):
306
308
 
307
309
  ```bash
308
310
  # Run server over stdio
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "vlrdevapi"
7
- version = "3.1.0"
7
+ version = "3.1.2"
8
8
  description = "A Python library to scrape data from vlr.gg"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -37,6 +37,7 @@ dependencies = [
37
37
  "httpx>=0.28.1",
38
38
  "pydantic>=2.14.1",
39
39
  "selectolax>=1.0.0",
40
+ "tzdata>=2025.1; sys_platform == 'win32'",
40
41
  ]
41
42
 
42
43
  [project.urls]
@@ -80,6 +81,7 @@ all = [
80
81
  ]
81
82
 
82
83
  [project.scripts]
84
+ vlrdevapi = "vlrdevapi.mcp.server:main"
83
85
  vlrdevapi-mcp = "vlrdevapi.mcp.server:main"
84
86
 
85
87
  [dependency-groups]
@@ -123,4 +125,3 @@ exclude = [
123
125
  "/.pytest_cache",
124
126
  "/.ruff_cache",
125
127
  ]
126
-