gpustack-runtime 0.2.5.post4__tar.gz → 0.2.6__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 (159) hide show
  1. gpustack_runtime-0.2.6/.agents/skills/runtime-release/SKILL.md +100 -0
  2. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/.gitignore +4 -1
  3. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/AGENTS.md +2 -0
  4. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/PKG-INFO +2 -2
  5. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/_version.py +2 -2
  6. gpustack_runtime-0.2.6/gpustack_runtime/_version_appendix.py +1 -0
  7. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/pyproject.toml +1 -1
  8. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/uv.lock +52 -30
  9. gpustack_runtime-0.2.5.post4/gpustack_runtime/_version_appendix.py +0 -1
  10. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/.codespelldict +0 -0
  11. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/.codespellrc +0 -0
  12. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/.dockerignore +0 -0
  13. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/.gitattributes +0 -0
  14. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/.pre-commit-config.yaml +0 -0
  15. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/.python-version +0 -0
  16. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/ADOPTERS.md +0 -0
  17. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/DCO +0 -0
  18. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/LICENSE +0 -0
  19. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/Makefile +0 -0
  20. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/README.md +0 -0
  21. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/deploy/manifests/docker-compose.yaml +0 -0
  22. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/deploy/manifests/kubernetes.yaml +0 -0
  23. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/docs/index.md +0 -0
  24. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/docs/modules/gpustack_runtime.deployer.md +0 -0
  25. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/docs/modules/gpustack_runtime.detector.md +0 -0
  26. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/docs/modules/gpustack_runtime.md +0 -0
  27. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/__init__.py +0 -0
  28. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/__main__.py +0 -0
  29. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/_version.pyi +0 -0
  30. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/cmds/__init__.py +0 -0
  31. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/cmds/__types__.py +0 -0
  32. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/cmds/deployer.py +0 -0
  33. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/cmds/detector.py +0 -0
  34. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/cmds/images.py +0 -0
  35. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/deployer/__init__.py +0 -0
  36. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/deployer/__patches__.py +0 -0
  37. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/deployer/__types__.py +0 -0
  38. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/deployer/__utils__.py +0 -0
  39. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/deployer/cdi/__init__.py +0 -0
  40. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/deployer/cdi/__types__.py +0 -0
  41. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/deployer/cdi/__utils__.py +0 -0
  42. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/deployer/cdi/amd.py +0 -0
  43. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/deployer/cdi/ascend.py +0 -0
  44. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/deployer/cdi/hygon.py +0 -0
  45. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/deployer/cdi/iluvatar.py +0 -0
  46. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/deployer/cdi/metax.py +0 -0
  47. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/deployer/cdi/thead.py +0 -0
  48. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/deployer/docker.py +0 -0
  49. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/deployer/k8s/devicemanager/__init__.py +0 -0
  50. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/deployer/kubernetes.py +0 -0
  51. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/deployer/podman.py +0 -0
  52. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/detector/__init__.py +0 -0
  53. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/detector/__types__.py +0 -0
  54. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/detector/__utils__.py +0 -0
  55. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/detector/amd.py +0 -0
  56. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/detector/ascend.py +0 -0
  57. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/detector/cambricon.py +0 -0
  58. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/detector/hygon.py +0 -0
  59. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/detector/iluvatar.py +0 -0
  60. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/detector/metax.py +0 -0
  61. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/detector/mthreads.py +0 -0
  62. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/detector/nvidia.py +0 -0
  63. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/detector/pyamdgpu/__init__.py +0 -0
  64. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/detector/pyamdsmi/__init__.py +0 -0
  65. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/detector/pycndev/__init__.py +0 -0
  66. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/detector/pydcmi/__init__.py +0 -0
  67. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/detector/pydmi/__init__.py +0 -0
  68. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/detector/pyhgml/__init__.py +0 -0
  69. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/detector/pyhgml/libhgml.so +0 -0
  70. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/detector/pyhgml/libuki.so +0 -0
  71. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/detector/pyhsa/__init__.py +0 -0
  72. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/detector/pyixml/__init__.py +0 -0
  73. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/detector/pymtml/__init__.py +0 -0
  74. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/detector/pymxsml/__init__.py +0 -0
  75. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/detector/pynvml/__init__.py +0 -0
  76. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/detector/pyrocmsmi/__init__.py +0 -0
  77. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/detector/thead.py +0 -0
  78. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/envs.py +0 -0
  79. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/gpustack_runtime/logging.py +0 -0
  80. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/hatch.toml +0 -0
  81. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/mkdocs.yml +0 -0
  82. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/pack/Dockerfile +0 -0
  83. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/pack/Dockerfile.dummy +0 -0
  84. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/pytest.ini +0 -0
  85. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/ruff.toml +0 -0
  86. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/specs/2026-08-14-detector-alignment-and-workload-exit-status.md +0 -0
  87. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/deployer/fixtures/__init__.py +0 -0
  88. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/deployer/fixtures/test_compare_versions.json +0 -0
  89. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/deployer/fixtures/test_correct_runner_image.json +0 -0
  90. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/deployer/fixtures/test_load_yaml_or_json.json +0 -0
  91. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/deployer/fixtures/test_load_yaml_or_json_multiple_jsons.json +0 -0
  92. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/deployer/fixtures/test_load_yaml_or_json_multiple_yamls.yaml +0 -0
  93. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/deployer/fixtures/test_load_yaml_or_json_single_json.json +0 -0
  94. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/deployer/fixtures/test_load_yaml_or_json_single_yaml.yaml +0 -0
  95. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/deployer/fixtures/test_nginx_entrypoint.sh +0 -0
  96. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/deployer/test_ascend_ranktable.py +0 -0
  97. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/deployer/test_docker_status.py +0 -0
  98. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/deployer/test_kubernetes_status.py +0 -0
  99. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/deployer/test_logs_options.py +0 -0
  100. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/deployer/test_podman_status.py +0 -0
  101. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/deployer/test_privileged.py +0 -0
  102. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/deployer/test_resource_injection_policy.py +0 -0
  103. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/deployer/test_runtime_class.py +0 -0
  104. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/deployer/test_termination_grace_period.py +0 -0
  105. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/deployer/test_utils.py +0 -0
  106. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/deployer/test_visible_devices_ordering.py +0 -0
  107. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/deployer/test_workload_resource_injection_policy.py +0 -0
  108. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/deployer/test_workload_status.py +0 -0
  109. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/fixtures/__init__.py +0 -0
  110. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/README.md +0 -0
  111. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/detect_output_amd_mi300x.json +0 -0
  112. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/detect_output_amd_mi308x.json +0 -0
  113. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/detect_output_amd_rx7800xt.json +0 -0
  114. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/detect_output_ascend_310p3.json +0 -0
  115. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/detect_output_ascend_910b2.json +0 -0
  116. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/detect_output_hygon_k100ai.json +0 -0
  117. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/detect_output_metax_c500.json +0 -0
  118. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/detect_output_nvidia_gb10.json +0 -0
  119. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/detect_output_nvidia_h100.json +0 -0
  120. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/detect_output_nvidia_h100_mig.json +0 -0
  121. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/detect_output_nvidia_h200.json +0 -0
  122. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/detect_output_nvidia_rtx4080super.json +0 -0
  123. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/detect_output_nvidia_rtx4090_48g.json +0 -0
  124. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/detect_output_nvidia_rtx4090d.json +0 -0
  125. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/detect_output_nvidia_rtx5090d.json +0 -0
  126. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/detect_output_thead_ppu.json +0 -0
  127. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/topology_output_amd_mi300x.json +0 -0
  128. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/topology_output_amd_mi308x.json +0 -0
  129. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/topology_output_amd_rx7800xt.json +0 -0
  130. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/topology_output_ascend_310p3.json +0 -0
  131. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/topology_output_ascend_910b2.json +0 -0
  132. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/topology_output_hygon_k100ai.json +0 -0
  133. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/topology_output_metax_c500.json +0 -0
  134. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/topology_output_mthreads_s5000.json +0 -0
  135. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/topology_output_nvidia_h100.json +0 -0
  136. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/topology_output_nvidia_h100_mig.json +0 -0
  137. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/topology_output_nvidia_h200.json +0 -0
  138. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/topology_output_nvidia_rtx4080super.json +0 -0
  139. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/topology_output_nvidia_rtx4090_48g.json +0 -0
  140. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/topology_output_nvidia_rtx4090d.json +0 -0
  141. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/topology_output_nvidia_rtx5090d.json +0 -0
  142. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/samples/topology_output_thead_ppu.json +0 -0
  143. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/test_amd.py +0 -0
  144. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/test_ascend.py +0 -0
  145. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/test_cambricon.py +0 -0
  146. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/test_detector_cli.py +0 -0
  147. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/test_detector_types.py +0 -0
  148. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/test_detector_utils.py +0 -0
  149. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/test_hygon.py +0 -0
  150. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/test_iluvatar.py +0 -0
  151. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/test_metax.py +0 -0
  152. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/test_mig_devices.py +0 -0
  153. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/test_mthreads.py +0 -0
  154. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/test_nvidia.py +0 -0
  155. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/test_pycndev.py +0 -0
  156. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/test_pydmi.py +0 -0
  157. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/test_samples.py +0 -0
  158. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/tests/gpustack_runtime/detector/test_thead.py +0 -0
  159. {gpustack_runtime-0.2.5.post4 → gpustack_runtime-0.2.6}/uv.toml +0 -0
@@ -0,0 +1,100 @@
1
+ ---
2
+ name: runtime-release
3
+ description: Cut a gpustack-runtime package release end to end (select and push the tag, monitor the release workflow, curate the GitHub Release notes).
4
+ ---
5
+
6
+ # Runtime release
7
+
8
+ One maintainer duty: cut a package release. Push a version tag; `release.yml` builds and publishes
9
+ it. Then write the GitHub Release notes.
10
+
11
+ ## Cut a package release
12
+
13
+ The git tag is the single source of truth: hatch-vcs derives the package version from it at build
14
+ time, and there is no version file to bump. Pushing a `v*.*.*` tag runs
15
+ `.github/workflows/release.yml`: build the distributions, create the GitHub Release with the
16
+ wheel/sdist assets, publish to PyPI, then verify an isolated install. Branch pushes to `main` or
17
+ `v*-dev` run the same job against TestPyPI and create no release.
18
+
19
+ Two workflow facts shape the procedure:
20
+
21
+ - The GitHub Release is a pre-release only when the tag contains `rc`. A final tag goes public and
22
+ becomes `latest` immediately. There is no promotion gate.
23
+ - The workflow generates no baseline notes. The release body starts empty, so curating the notes is
24
+ not polish; it is the entire text the reader gets.
25
+
26
+ PyPI is the irreversible step: a version once published there cannot be re-uploaded or edited.
27
+
28
+ ### Hard rules
29
+
30
+ - Tag shapes: `vX.Y.Z` final, `vX.Y.ZrcN` pre-release, `vX.Y.Z.postN` post-release. PEP 440
31
+ canonical spellings only; history contains the non-dotted `v0.2.5postN` — do not repeat it.
32
+ - A tag whose PyPI publish succeeded is burned. NEVER delete or move it; fix forward with a new
33
+ version. Delete-and-recreate is limited to a tag that never reached PyPI and is interactive-only.
34
+ - An `rc` tag stays a pre-release; never mark it latest.
35
+ - Release from `origin/main` HEAD by default. A maintenance line (`v*-dev` branch) targets that
36
+ branch's HEAD; flag the choice in the summary.
37
+ - Interactive mode confirms every mutating step (tag push, note replacement). Auto mode runs
38
+ unattended through note curation and reports the release URL.
39
+
40
+ ### 1. Preflight (read-only)
41
+
42
+ ```sh
43
+ gh auth status
44
+ git fetch origin --tags --prune
45
+ git status --porcelain # must be empty
46
+ git tag -l 'v*' --sort=-v:refname | head -5
47
+ ```
48
+
49
+ ### 2. Version and commit (confirm)
50
+
51
+ - Pick the target ref: `origin/main` by default, or the `v*-dev` branch for a maintenance line. The
52
+ steps below call it `$TARGET`; `$SHA` is its HEAD (`git rev-parse "$TARGET"`).
53
+ - Read the range since the previous tag: `git log --no-merges --oneline <last>..$TARGET`.
54
+ - Propose the bump from the Conventional Commits in range: any `feat` → minor; fixes, docs, and
55
+ chores → patch. Use `.postN` only to re-issue the same version line (packaging metadata or a
56
+ docs-only rebuild of unchanged content).
57
+ - Confirm the (version, commit) pair before tagging. A final tag publishes immediately, so this
58
+ confirmation is the only gate.
59
+
60
+ ### 3. Draft notes
61
+
62
+ Group the range by type: Features / Fixes / Docs / Other; omit empty sections. Keep highlights and
63
+ fold noisy `chore`/`ci`/`test` entries. Link PRs from `(#NNN)` subjects. Do not open the body with
64
+ a heading that repeats the tag. End with the Full Changelog compare URL
65
+ (`https://github.com/gpustack/runtime/compare/<last>...<VER>`). Write the draft to `notes.md`;
66
+ step 5 publishes that file.
67
+
68
+ ### 4. Tag and monitor (confirm, then read-only)
69
+
70
+ ```sh
71
+ git tag -a "$VER" "$SHA" -m "Release $VER"
72
+ git push origin "$VER"
73
+ gh run list --branch "$VER" --limit 5 # the release.yml run for the tag
74
+ gh run watch <run-id> --exit-status # background it; wait for the completion notification
75
+ ```
76
+
77
+ The job's own verify step installs the package from PyPI in an isolated env, but it is unpinned and
78
+ only prints the installed version. A green run proves the upload succeeded, not that PyPI already
79
+ serves the new version; read the verify log's `version =` line and confirm it equals `$VER`. On
80
+ failure read `gh run view <run-id> --log-failed`; retry the same run on transient errors. If the
81
+ failure is real and PyPI already holds the version, cut the next version instead — never re-tag.
82
+
83
+ ### 5. Curate notes (confirm)
84
+
85
+ ```sh
86
+ gh release view "$VER" --json body,isPrerelease # the body starts empty
87
+ gh release edit "$VER" --notes-file notes.md
88
+ ```
89
+
90
+ A maintenance-line final keeps `--latest=false` when a newer stable tag exists. Verify the badge
91
+ with `gh api repos/gpustack/runtime/releases/latest --jq .tag_name`. An `rc` release stays a
92
+ pre-release and needs no further action.
93
+
94
+ ## Scope
95
+
96
+ Package releases and their notes run here. No other repository document changes with a release:
97
+ the version comes from the tag, and no README or docs table tracks it. Container image builds are
98
+ `make package` (`pack/`) and deployment manifests live in `deploy/`; both are outside this skill.
99
+ Docs-only changes never trigger a release: the release workflow ignores docs paths on branch
100
+ pushes, so docs updates need no tag.
@@ -3,7 +3,10 @@
3
3
  .vscode/
4
4
  .DS_Store
5
5
  *.swp
6
- .claude/
6
+ **/.claude/*
7
+ !/.claude/skills
8
+ /.claude/skills/*
9
+ !/.claude/skills/runtime-release
7
10
 
8
11
  # Python-generated files
9
12
  _version.py
@@ -59,6 +59,8 @@ Setup is `make install` (uv sync plus pre-commit hooks). Day-to-day targets:
59
59
  `gpustack_runtime/_version.py` is generated by hatch-vcs and `_version_appendix.py` by
60
60
  `make prepare`; never hand-edit either.
61
61
 
62
+ Cut package releases with the [runtime-release](.agents/skills/runtime-release/SKILL.md) skill.
63
+
62
64
  ### Python conventions
63
65
 
64
66
  - Prefer clarity over cleverness to simplify long-term maintenance.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: gpustack-runtime
3
- Version: 0.2.5.post4
3
+ Version: 0.2.6
4
4
  Summary: GPUStack Runtime is library for detecting GPU resources and launching GPU workloads.
5
5
  Project-URL: Homepage, https://github.com/gpustack/runtime
6
6
  Project-URL: Bug Tracker, https://github.com/gpustack/gpustack/issues
@@ -16,7 +16,7 @@ Requires-Python: >=3.10
16
16
  Requires-Dist: argcomplete>=3.6.3
17
17
  Requires-Dist: cachetools>=5.5.2
18
18
  Requires-Dist: docker>=7.1.0
19
- Requires-Dist: gpustack-runner>=0.1.29
19
+ Requires-Dist: gpustack-runner>=0.1.31
20
20
  Requires-Dist: kubernetes>=33.1.0
21
21
  Requires-Dist: mthreads-ml-py>=2.2.10
22
22
  Requires-Dist: nvidia-ml-py>=13.580.65
@@ -27,8 +27,8 @@ version_tuple: VERSION_TUPLE
27
27
  __commit_id__: COMMIT_ID
28
28
  commit_id: COMMIT_ID
29
29
 
30
- __version__ = version = '0.2.5.post4'
31
- __version_tuple__ = version_tuple = (0, 2, 5, 'post4')
30
+ __version__ = version = '0.2.6'
31
+ __version_tuple__ = version_tuple = (0, 2, 6)
32
32
  try:
33
33
  from ._version_appendix import git_commit
34
34
  __commit_id__ = commit_id = git_commit
@@ -0,0 +1 @@
1
+ git_commit = "66c3e8f"
@@ -23,7 +23,7 @@ dependencies = [
23
23
  # NB(thxCode): Pin to this Podman version for a custom patch. See gpustack_runtime/deployer/__patches__.py.
24
24
  "podman==5.6.0",
25
25
  "pyyaml",
26
- "gpustack-runner>=0.1.29",
26
+ "gpustack-runner>=0.1.31",
27
27
  "nvidia-ml-py>=13.580.65",
28
28
  "mthreads-ml-py>=2.2.10",
29
29
  "argcomplete>=3.6.3",
@@ -1,6 +1,10 @@
1
1
  version = 1
2
2
  revision = 3
3
3
  requires-python = ">=3.10"
4
+ resolution-markers = [
5
+ "python_full_version >= '3.11'",
6
+ "python_full_version < '3.11'",
7
+ ]
4
8
 
5
9
  [[package]]
6
10
  name = "amdsmi"
@@ -170,11 +174,11 @@ wheels = [
170
174
 
171
175
  [[package]]
172
176
  name = "distlib"
173
- version = "0.4.0"
177
+ version = "0.4.3"
174
178
  source = { registry = "https://pypi.org/simple" }
175
- sdist = { url = "https://files.pythonhosted.org/packages/96/8e/709914eb2b5749865801041647dc7f4e6d00b549cfe88b65ca192995f07c/distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d", size = 614605, upload-time = "2025-07-17T16:52:00.465Z" }
179
+ sdist = { url = "https://files.pythonhosted.org/packages/c9/02/bd72be9134d25ed783ecbbc38a539ffaefbf90c78418c7fb7229600dbac7/distlib-0.4.3.tar.gz", hash = "sha256:f152097224a0ae24be5a0f6bae1b9359af82133bce63f98a95f86cae1aede9ed", size = 615141, upload-time = "2026-06-12T08:04:52.847Z" }
176
180
  wheels = [
177
- { url = "https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16", size = 469047, upload-time = "2025-07-17T16:51:58.613Z" },
181
+ { url = "https://files.pythonhosted.org/packages/02/08/9c41fb51ab5b43eb21674aff13df270e8ba6c4b29c8624e328dc7a9482af/distlib-0.4.3-py2.py3-none-any.whl", hash = "sha256:4b0ce306c966eb73bc3a7b6abad017c556dadd92c44701562cd528ac7fde4d5b", size = 470628, upload-time = "2026-06-12T08:04:50.506Z" },
178
182
  ]
179
183
 
180
184
  [[package]]
@@ -258,7 +262,7 @@ wheels = [
258
262
 
259
263
  [[package]]
260
264
  name = "gpustack-runner"
261
- version = "0.1.29"
265
+ version = "0.1.31"
262
266
  source = { registry = "https://pypi.org/simple" }
263
267
  dependencies = [
264
268
  { name = "argcomplete" },
@@ -266,9 +270,9 @@ dependencies = [
266
270
  { name = "packaging" },
267
271
  { name = "requests" },
268
272
  ]
269
- sdist = { url = "https://files.pythonhosted.org/packages/7b/5b/fcd80ec9f3b74d36c3e5e1462af5d29604585a3050d9bb6d36d50f6d4397/gpustack_runner-0.1.29.tar.gz", hash = "sha256:22c4ec21c3aee2c9d48f3535397821c85172370654ad71549d09289ca00ec393", size = 13464730, upload-time = "2026-09-01T09:23:07.718Z" }
273
+ sdist = { url = "https://files.pythonhosted.org/packages/19/cc/58ba6b213bec7c703dfa1b02c4f423056d86d61465950b7aab563176acb2/gpustack_runner-0.1.31.tar.gz", hash = "sha256:87e68cb889410db503657231667f1748055869e10d1a9bffeabc27e13a06001d", size = 13746189, upload-time = "2026-10-12T09:12:28.784Z" }
270
274
  wheels = [
271
- { url = "https://files.pythonhosted.org/packages/dd/41/baf89298ead365239a326583b7310500cb05eda6b0113aade845181995d3/gpustack_runner-0.1.29-py3-none-any.whl", hash = "sha256:a0330f9512a4ebd0261acba41819e19e89188b47c466ca31db8499fbf9843686", size = 30850, upload-time = "2026-09-01T09:23:05.162Z" },
275
+ { url = "https://files.pythonhosted.org/packages/21/a4/c66496c6c0a413cc10fb94d2b5efcaa5dc4d2a62aa4378b6a96f29e01ae4/gpustack_runner-0.1.31-py3-none-any.whl", hash = "sha256:f7dc1ec7b42f605ee27d6f4b8a36308c5d6f392f42a5bc27fed604f4a68f314f", size = 32461, upload-time = "2026-10-12T09:12:27.031Z" },
272
276
  ]
273
277
 
274
278
  [[package]]
@@ -307,7 +311,7 @@ requires-dist = [
307
311
  { name = "argcomplete", specifier = ">=3.6.3" },
308
312
  { name = "cachetools", specifier = ">=5.5.2" },
309
313
  { name = "docker", specifier = ">=7.1.0" },
310
- { name = "gpustack-runner", specifier = ">=0.1.29" },
314
+ { name = "gpustack-runner", specifier = ">=0.1.31" },
311
315
  { name = "kubernetes", specifier = ">=33.1.0" },
312
316
  { name = "mthreads-ml-py", specifier = ">=2.2.10" },
313
317
  { name = "nvidia-ml-py", specifier = ">=13.580.65" },
@@ -565,7 +569,8 @@ version = "0.2.0"
565
569
  source = { registry = "https://pypi.org/simple" }
566
570
  dependencies = [
567
571
  { name = "mergedeep" },
568
- { name = "platformdirs" },
572
+ { name = "platformdirs", version = "4.12.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
573
+ { name = "platformdirs", version = "4.13.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
569
574
  { name = "pyyaml" },
570
575
  ]
571
576
  sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239, upload-time = "2023-11-20T17:51:09.981Z" }
@@ -673,20 +678,20 @@ wheels = [
673
678
 
674
679
  [[package]]
675
680
  name = "oauthlib"
676
- version = "3.3.1"
681
+ version = "4.0.0"
677
682
  source = { registry = "https://pypi.org/simple" }
678
- sdist = { url = "https://files.pythonhosted.org/packages/0b/5f/19930f824ffeb0ad4372da4812c50edbd1434f678c90c2733e1188edfc63/oauthlib-3.3.1.tar.gz", hash = "sha256:0f0f8aa759826a193cf66c12ea1af1637f87b9b4622d46e866952bb022e538c9", size = 185918, upload-time = "2025-06-19T22:48:08.269Z" }
683
+ sdist = { url = "https://files.pythonhosted.org/packages/7a/d8/a1bcc8ba112a627f8ffbdc212a78ce18d3ac07e91a5ca65d27918eee25a1/oauthlib-4.0.0.tar.gz", hash = "sha256:efb274799819440f95b4ab3b818869f1ce9ae26c5beacba0201d1a1b76b54f86", size = 187232, upload-time = "2026-09-28T06:01:18.77Z" }
679
684
  wheels = [
680
- { url = "https://files.pythonhosted.org/packages/be/9c/92789c596b8df838baa98fa71844d84283302f7604ed565dafe5a6b5041a/oauthlib-3.3.1-py3-none-any.whl", hash = "sha256:88119c938d2b8fb88561af5f6ee0eec8cc8d552b7bb1f712743136eb7523b7a1", size = 160065, upload-time = "2025-06-19T22:48:06.508Z" },
685
+ { url = "https://files.pythonhosted.org/packages/d9/f4/78229a1066068ca14fc60fb26cf7381cabe4382261392b90e5f9552722d4/oauthlib-4.0.0-py3-none-any.whl", hash = "sha256:624c28c13a0a59cabf9747dfa52af63be3e512a7f2714df16e91b5b3a145e6cd", size = 159715, upload-time = "2026-09-28T06:01:17.008Z" },
681
686
  ]
682
687
 
683
688
  [[package]]
684
689
  name = "packaging"
685
- version = "25.0"
690
+ version = "26.3"
686
691
  source = { registry = "https://pypi.org/simple" }
687
- sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" }
692
+ sdist = { url = "https://files.pythonhosted.org/packages/7d/fa/3944b40b07da9ce895c0e6303a5ab7d53da063554f534556b134a54d6093/packaging-26.3.tar.gz", hash = "sha256:94edc256424af38762eb31306eed28beb9f0efc50a8837492c9d6fd6004aed79", size = 313412, upload-time = "2026-08-04T18:15:28.737Z" }
688
693
  wheels = [
689
- { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" },
694
+ { url = "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl", hash = "sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c", size = 129956, upload-time = "2026-08-04T18:15:27.159Z" },
690
695
  ]
691
696
 
692
697
  [[package]]
@@ -709,11 +714,26 @@ wheels = [
709
714
 
710
715
  [[package]]
711
716
  name = "platformdirs"
712
- version = "4.3.8"
717
+ version = "4.12.4"
713
718
  source = { registry = "https://pypi.org/simple" }
714
- sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362, upload-time = "2025-05-07T22:47:42.121Z" }
719
+ resolution-markers = [
720
+ "python_full_version < '3.11'",
721
+ ]
722
+ sdist = { url = "https://files.pythonhosted.org/packages/90/a1/d5f9002a70298c64a789779077d8dd90c10aa1f47fe40c86802df874f2a6/platformdirs-4.12.4.tar.gz", hash = "sha256:63743c02414e755de4e31b8f68125c1407495b86c5a006e203c01ff8b9924250", size = 60010, upload-time = "2026-10-07T23:30:32.426Z" }
715
723
  wheels = [
716
- { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567, upload-time = "2025-05-07T22:47:40.376Z" },
724
+ { url = "https://files.pythonhosted.org/packages/f4/ba/223e00b885e960edd5d4b4d178c88acce019bd5b83786093681b8c393492/platformdirs-4.12.4-py3-none-any.whl", hash = "sha256:78bfb9db2a8471ed7eebe3c3c932da413911042994e699b384fbb4493fa872d7", size = 32596, upload-time = "2026-10-07T23:30:30.825Z" },
725
+ ]
726
+
727
+ [[package]]
728
+ name = "platformdirs"
729
+ version = "4.13.0"
730
+ source = { registry = "https://pypi.org/simple" }
731
+ resolution-markers = [
732
+ "python_full_version >= '3.11'",
733
+ ]
734
+ sdist = { url = "https://files.pythonhosted.org/packages/80/a8/66d45abadff219e36e2a824181b8f6a67e7ed4572934d6252c71c29d5731/platformdirs-4.13.0.tar.gz", hash = "sha256:1aa0b0d3f224c1f07c295121e312a5a24a180d6ae5a8425ea1784b3e3863e9c0", size = 61094, upload-time = "2026-10-11T02:05:24.109Z" }
735
+ wheels = [
736
+ { url = "https://files.pythonhosted.org/packages/8d/15/1633010b26e88e872c93b67c0b6c5e174fb74cb6fb5c1472b4d51d4a8f22/platformdirs-4.13.0-py3-none-any.whl", hash = "sha256:3dbcf4cd708f21cf876c4eaa90e58412bc4f033d87143f41b1493ff77c25b7e1", size = 32724, upload-time = "2026-10-11T02:05:22.776Z" },
717
737
  ]
718
738
 
719
739
  [[package]]
@@ -839,14 +859,14 @@ wheels = [
839
859
 
840
860
  [[package]]
841
861
  name = "python-discovery"
842
- version = "1.6.0"
862
+ version = "1.6.2"
843
863
  source = { registry = "https://pypi.org/simple" }
844
864
  dependencies = [
845
865
  { name = "filelock" },
846
866
  ]
847
- sdist = { url = "https://files.pythonhosted.org/packages/91/96/0f93e27c9f60a650838f2118159aa115fd5732c0716247917b7ba7ede665/python_discovery-1.6.0.tar.gz", hash = "sha256:6393b4eae1be8b2182670635e7baff89ac21cb9f8e86fd1ff40c7b1144febb4c", size = 82849, upload-time = "2026-08-28T17:30:02.366Z" }
867
+ sdist = { url = "https://files.pythonhosted.org/packages/b0/73/54993df8fc57e906dc9b7e01d1d9b0b2d3eb0ce3190639e33dccb12853f7/python_discovery-1.6.2.tar.gz", hash = "sha256:cd1738ca1d37c86ef9d0b654dd46fcee1e41c97c6add12575e8501ced39afdb4", size = 86921, upload-time = "2026-10-10T01:24:27.912Z" }
848
868
  wheels = [
849
- { url = "https://files.pythonhosted.org/packages/43/5e/21abf578182fb15006a57faf3711a1e659e29d600d19b6e557eae908c81d/python_discovery-1.6.0-py3-none-any.whl", hash = "sha256:d4e244cf17b8b29819ed78003d55fbacf86eda23425b075454fff9271b79377a", size = 38451, upload-time = "2026-08-28T17:30:01.236Z" },
869
+ { url = "https://files.pythonhosted.org/packages/61/3b/50ed32583bfffa737df67d33b9c15d7b25df232c55ab606d059f610ef6ca/python_discovery-1.6.2-py3-none-any.whl", hash = "sha256:f0c697f95a3aaec4174a6e5e58f5885e25768684bafc76f1afde384709ebdcf2", size = 38912, upload-time = "2026-10-10T01:24:26.721Z" },
850
870
  ]
851
871
 
852
872
  [[package]]
@@ -1061,11 +1081,11 @@ wheels = [
1061
1081
 
1062
1082
  [[package]]
1063
1083
  name = "typing-extensions"
1064
- version = "4.14.1"
1084
+ version = "4.16.0"
1065
1085
  source = { registry = "https://pypi.org/simple" }
1066
- sdist = { url = "https://files.pythonhosted.org/packages/98/5a/da40306b885cc8c09109dc2e1abd358d5684b1425678151cdaed4731c822/typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36", size = 107673, upload-time = "2025-07-04T13:28:34.16Z" }
1086
+ sdist = { url = "https://files.pythonhosted.org/packages/f6/cc/6253133b5bb138fc3306cebfbda2c520f545d36b5be2c7255cc528bb45d6/typing_extensions-4.16.0.tar.gz", hash = "sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5", size = 113555, upload-time = "2026-07-02T08:40:05.92Z" }
1067
1087
  wheels = [
1068
- { url = "https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76", size = 43906, upload-time = "2025-07-04T13:28:32.743Z" },
1088
+ { url = "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl", hash = "sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8", size = 45571, upload-time = "2026-07-02T08:40:04.659Z" },
1069
1089
  ]
1070
1090
 
1071
1091
  [[package]]
@@ -1083,27 +1103,29 @@ wheels = [
1083
1103
 
1084
1104
  [[package]]
1085
1105
  name = "urllib3"
1086
- version = "2.7.0"
1106
+ version = "2.8.0"
1087
1107
  source = { registry = "https://pypi.org/simple" }
1088
- sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" }
1108
+ sdist = { url = "https://files.pythonhosted.org/packages/e3/05/b17359e1cefb4f909b5e40b1b90a496d987258916dbbf88e842c729f510e/urllib3-2.8.0.tar.gz", hash = "sha256:63bf2ead4c879426ebf22ef2a781eeb4aa3b4ae798a0435506f8687fd5bb9b63", size = 458972, upload-time = "2026-09-15T19:29:36.253Z" }
1089
1109
  wheels = [
1090
- { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" },
1110
+ { url = "https://files.pythonhosted.org/packages/92/9d/c4e665119135114480843e7ab388fa94d8480650450e6f8e26b70d323a4c/urllib3-2.8.0-py3-none-any.whl", hash = "sha256:0cf3cae568d36aa9576b28dfb35f11328f1cb974ca7647d9475ebb86c75ac6e3", size = 135717, upload-time = "2026-09-15T19:29:34.577Z" },
1091
1111
  ]
1092
1112
 
1093
1113
  [[package]]
1094
1114
  name = "virtualenv"
1095
- version = "21.7.7"
1115
+ version = "21.14.7"
1096
1116
  source = { registry = "https://pypi.org/simple" }
1097
1117
  dependencies = [
1098
1118
  { name = "distlib" },
1099
1119
  { name = "filelock" },
1100
- { name = "platformdirs" },
1120
+ { name = "packaging" },
1121
+ { name = "platformdirs", version = "4.12.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
1122
+ { name = "platformdirs", version = "4.13.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
1101
1123
  { name = "python-discovery" },
1102
1124
  { name = "typing-extensions", marker = "python_full_version < '3.11'" },
1103
1125
  ]
1104
- sdist = { url = "https://files.pythonhosted.org/packages/79/41/c3f34799487924f2a6f43b8a8b7acd345a6c61aac2211d4bced8621ca4f1/virtualenv-21.7.7.tar.gz", hash = "sha256:6874376f99ba6b8d4e3ee8bde67f9285412400c7d5b29ba41ee6daa5e0221bdc", size = 5347022, upload-time = "2026-08-28T18:59:50.093Z" }
1126
+ sdist = { url = "https://files.pythonhosted.org/packages/dc/3f/935cf1757643381fb7f7cc98197b4bc119223d9c2cf37dc3b03ad2a4455f/virtualenv-21.14.7.tar.gz", hash = "sha256:5f427d56f39eb7e7447d641dd4b7ab1e9c92793f498f35f26da2e4972c5546ae", size = 5471741, upload-time = "2026-10-12T01:27:31.842Z" }
1105
1127
  wheels = [
1106
- { url = "https://files.pythonhosted.org/packages/95/f8/dcec8dc767b812193316c7debed1e2b53e586e59c267bfe517688ff90275/virtualenv-21.7.7-py3-none-any.whl", hash = "sha256:67a6a68fef3ad8ca16b8b89f33fd8f97996cc0bf0db31629d07ecf8dec539a2c", size = 5324620, upload-time = "2026-08-28T18:59:48.056Z" },
1128
+ { url = "https://files.pythonhosted.org/packages/52/5b/799c3e5b8e04d5fa1c9b61a4c1f5079603e747205c7311b92abd30283df5/virtualenv-21.14.7-py3-none-any.whl", hash = "sha256:3769219a308c5d2f093e7729621ad12a6346b5767a7ec4338414e2a0fb0c526b", size = 5487587, upload-time = "2026-10-12T01:27:29.37Z" },
1107
1129
  ]
1108
1130
 
1109
1131
  [[package]]
@@ -1 +0,0 @@
1
- git_commit = "089358e"