mcp-openstack-ops 3.5.7__tar.gz → 3.5.8__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 (166) hide show
  1. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/PKG-INFO +3 -1
  2. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/README.md +2 -0
  3. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops.egg-info/PKG-INFO +3 -1
  4. mcp_openstack_ops-3.5.8/src/mcp_openstack_ops.egg-info/scm_version.json +8 -0
  5. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/uv.lock +83 -52
  6. mcp_openstack_ops-3.5.7/src/mcp_openstack_ops.egg-info/scm_version.json +0 -8
  7. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/.env.example +0 -0
  8. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/.env.test +0 -0
  9. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/.github/FUNDING.yml +0 -0
  10. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/.github/copilot-instructions.md +0 -0
  11. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/.github/dependabot.yml +0 -0
  12. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/.github/workflows/pypi-publish.yml +0 -0
  13. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/.gitignore +0 -0
  14. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/.gitleaks.toml +0 -0
  15. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/.pre-commit-config.yaml +0 -0
  16. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/.python-version +0 -0
  17. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/Dockerfile.MCP-Server +0 -0
  18. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/Dockerfile.MCPO-Proxy +0 -0
  19. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/LICENSE +0 -0
  20. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/MANIFEST.in +0 -0
  21. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/build-mcp-server-docker-image.sh +0 -0
  22. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/build-mcpo-server-docker-image.sh +0 -0
  23. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/diagnose_openstack.py +0 -0
  24. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/docker-compose.yml +0 -0
  25. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/img/MCP-Workflow-of-Quickstart-Tutorial.png +0 -0
  26. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/img/screenshot-claude-desktop.png +0 -0
  27. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/img/screenshot-claude-desktop.png:Zone.Identifier +0 -0
  28. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/img/screenshot-example-cluster-status.png +0 -0
  29. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/img/screenshot-openstack-dashboard.png +0 -0
  30. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/main.py +0 -0
  31. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/mcp-config.json.http +0 -0
  32. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/mcp-config.json.multi-project +0 -0
  33. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/mcp-config.json.stdio +0 -0
  34. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/pyproject.toml +0 -0
  35. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/scripts/check_release.py +0 -0
  36. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/scripts/mcp-server-docker-cmd.sh +0 -0
  37. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/scripts/publish_release.py +0 -0
  38. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/scripts/run-mcp-inspector-local.sh +0 -0
  39. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/scripts/run-mcp-inspector-pypi.sh +0 -0
  40. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/setup.cfg +0 -0
  41. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/__init__.py +0 -0
  42. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/__main__.py +0 -0
  43. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/connection.py +0 -0
  44. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/functions.py +0 -0
  45. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/mcp_main.py +0 -0
  46. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/prompt_template.md +0 -0
  47. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/services/__init__.py +0 -0
  48. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/services/compute.py +0 -0
  49. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/services/core.py +0 -0
  50. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/services/identity.py +0 -0
  51. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/services/image.py +0 -0
  52. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/services/load_balancer/__init__.py +0 -0
  53. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/services/load_balancer/amphorae.py +0 -0
  54. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/services/load_balancer/core.py +0 -0
  55. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/services/load_balancer/health_monitors.py +0 -0
  56. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/services/load_balancer/l7_policies.py +0 -0
  57. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/services/load_balancer/listeners.py +0 -0
  58. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/services/load_balancer/management.py +0 -0
  59. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/services/load_balancer/pools.py +0 -0
  60. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/services/monitoring.py +0 -0
  61. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/services/network.py +0 -0
  62. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/services/orchestration.py +0 -0
  63. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/services/storage.py +0 -0
  64. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/__init__.py +0 -0
  65. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_availability_zones.py +0 -0
  66. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_floating_ip_pools.py +0 -0
  67. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_floating_ips.py +0 -0
  68. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_heat_stacks.py +0 -0
  69. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_hypervisor_details.py +0 -0
  70. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_image_detail_list.py +0 -0
  71. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_instance.py +0 -0
  72. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_instance_by_name.py +0 -0
  73. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_instance_details.py +0 -0
  74. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_instances_by_status.py +0 -0
  75. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_keypair_list.py +0 -0
  76. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_load_balancer_amphorae.py +0 -0
  77. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_load_balancer_availability_zones.py +0 -0
  78. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_load_balancer_details.py +0 -0
  79. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_load_balancer_flavors.py +0 -0
  80. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_load_balancer_health_monitors.py +0 -0
  81. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_load_balancer_l7_policies.py +0 -0
  82. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_load_balancer_l7_rules.py +0 -0
  83. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_load_balancer_list.py +0 -0
  84. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_load_balancer_listeners.py +0 -0
  85. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_load_balancer_pool_members.py +0 -0
  86. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_load_balancer_pools.py +0 -0
  87. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_load_balancer_providers.py +0 -0
  88. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_load_balancer_quotas.py +0 -0
  89. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_network_details.py +0 -0
  90. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_project_details.py +0 -0
  91. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_quota.py +0 -0
  92. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_resource_monitoring.py +0 -0
  93. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_role_assignments.py +0 -0
  94. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_routers.py +0 -0
  95. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_security_groups.py +0 -0
  96. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_server_events.py +0 -0
  97. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_server_groups.py +0 -0
  98. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_server_volumes.py +0 -0
  99. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_service_status.py +0 -0
  100. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_usage_statistics.py +0 -0
  101. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_user_list.py +0 -0
  102. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_volume_list.py +0 -0
  103. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_volume_snapshots.py +0 -0
  104. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/get_volume_types.py +0 -0
  105. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/search_instances.py +0 -0
  106. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_alarms.py +0 -0
  107. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_compute_agents.py +0 -0
  108. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_domains.py +0 -0
  109. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_flavor.py +0 -0
  110. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_floating_ip.py +0 -0
  111. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_floating_ip_port_forwarding.py +0 -0
  112. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_heat_stack.py +0 -0
  113. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_identity_groups.py +0 -0
  114. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_image.py +0 -0
  115. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_image_members.py +0 -0
  116. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_image_metadata.py +0 -0
  117. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_image_visibility.py +0 -0
  118. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_instance.py +0 -0
  119. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_keypair.py +0 -0
  120. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_load_balancer.py +0 -0
  121. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_load_balancer_amphora.py +0 -0
  122. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_load_balancer_availability_zone.py +0 -0
  123. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_load_balancer_flavor.py +0 -0
  124. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_load_balancer_health_monitor.py +0 -0
  125. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_load_balancer_l7_policy.py +0 -0
  126. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_load_balancer_l7_rule.py +0 -0
  127. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_load_balancer_listener.py +0 -0
  128. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_load_balancer_pool.py +0 -0
  129. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_load_balancer_pool_member.py +0 -0
  130. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_load_balancer_quota.py +0 -0
  131. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_metrics.py +0 -0
  132. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_network_agents.py +0 -0
  133. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_network_ports.py +0 -0
  134. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_network_qos_policies.py +0 -0
  135. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_networks.py +0 -0
  136. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_project.py +0 -0
  137. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_quota.py +0 -0
  138. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_roles.py +0 -0
  139. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_server_backup.py +0 -0
  140. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_server_dump.py +0 -0
  141. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_server_fixed_ip.py +0 -0
  142. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_server_floating_ip.py +0 -0
  143. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_server_group.py +0 -0
  144. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_server_migration.py +0 -0
  145. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_server_network.py +0 -0
  146. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_server_properties.py +0 -0
  147. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_server_security_group.py +0 -0
  148. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_server_volume.py +0 -0
  149. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_service_logs.py +0 -0
  150. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_services.py +0 -0
  151. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_snapshot.py +0 -0
  152. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_subnets.py +0 -0
  153. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_volume.py +0 -0
  154. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_volume_backups.py +0 -0
  155. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_volume_groups.py +0 -0
  156. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops/tools/set_volume_qos.py +0 -0
  157. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops.egg-info/SOURCES.txt +0 -0
  158. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops.egg-info/dependency_links.txt +0 -0
  159. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops.egg-info/entry_points.txt +0 -0
  160. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops.egg-info/requires.txt +0 -0
  161. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops.egg-info/scm_file_list.json +0 -0
  162. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/src/mcp_openstack_ops.egg-info/top_level.txt +0 -0
  163. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/test_compatibility.sh +0 -0
  164. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/test_project_isolation.py +0 -0
  165. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/tests/test_publish_release.py +0 -0
  166. {mcp_openstack_ops-3.5.7 → mcp_openstack_ops-3.5.8}/tests/test_release.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-openstack-ops
3
- Version: 3.5.7
3
+ Version: 3.5.8
4
4
  Summary: OpenStack operations automation MCP server
5
5
  Author-email: JungJungIn <call518@gmail.com>
6
6
  Requires-Python: >=3.12
@@ -20,6 +20,8 @@ Dynamic: license-file
20
20
 
21
21
  > **MCP OpenStack Operations Server**: A comprehensive MCP (Model Context Protocol) server providing OpenStack project management and monitoring capabilities with built-in safety controls and single-project scope.
22
22
 
23
+ [![MCPVault: claimed](https://mcpvault.io/badge/mcp-openstack-ops.svg?theme=dark)](https://mcpvault.io/servers/mcp-openstack-ops/health?utm_source=external_badge&utm_medium=referral&utm_campaign=mcp_health_report)
24
+
23
25
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
24
26
  ![Python](https://img.shields.io/badge/Python-3776AB?style=flat&logo=python&logoColor=white)
25
27
  ![Docker Pulls](https://img.shields.io/docker/pulls/call518/mcp-server-openstack-ops)
@@ -2,6 +2,8 @@
2
2
 
3
3
  > **MCP OpenStack Operations Server**: A comprehensive MCP (Model Context Protocol) server providing OpenStack project management and monitoring capabilities with built-in safety controls and single-project scope.
4
4
 
5
+ [![MCPVault: claimed](https://mcpvault.io/badge/mcp-openstack-ops.svg?theme=dark)](https://mcpvault.io/servers/mcp-openstack-ops/health?utm_source=external_badge&utm_medium=referral&utm_campaign=mcp_health_report)
6
+
5
7
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
6
8
  ![Python](https://img.shields.io/badge/Python-3776AB?style=flat&logo=python&logoColor=white)
7
9
  ![Docker Pulls](https://img.shields.io/docker/pulls/call518/mcp-server-openstack-ops)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-openstack-ops
3
- Version: 3.5.7
3
+ Version: 3.5.8
4
4
  Summary: OpenStack operations automation MCP server
5
5
  Author-email: JungJungIn <call518@gmail.com>
6
6
  Requires-Python: >=3.12
@@ -20,6 +20,8 @@ Dynamic: license-file
20
20
 
21
21
  > **MCP OpenStack Operations Server**: A comprehensive MCP (Model Context Protocol) server providing OpenStack project management and monitoring capabilities with built-in safety controls and single-project scope.
22
22
 
23
+ [![MCPVault: claimed](https://mcpvault.io/badge/mcp-openstack-ops.svg?theme=dark)](https://mcpvault.io/servers/mcp-openstack-ops/health?utm_source=external_badge&utm_medium=referral&utm_campaign=mcp_health_report)
24
+
23
25
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
24
26
  ![Python](https://img.shields.io/badge/Python-3776AB?style=flat&logo=python&logoColor=white)
25
27
  ![Docker Pulls](https://img.shields.io/docker/pulls/call518/mcp-server-openstack-ops)
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "3.5.8",
3
+ "distance": 0,
4
+ "node": "g1feb02a4467891bb7c258f8109f3adddf9f679c4",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-10-25"
8
+ }
@@ -1,5 +1,5 @@
1
1
  version = 1
2
- revision = 3
2
+ revision = 5
3
3
  requires-python = ">=3.12"
4
4
  resolution-markers = [
5
5
  "python_full_version >= '3.14' and sys_platform == 'win32'",
@@ -104,11 +104,11 @@ wheels = [
104
104
 
105
105
  [[package]]
106
106
  name = "certifi"
107
- version = "2026.1.4"
107
+ version = "2026.10.19"
108
108
  source = { registry = "https://pypi.org/simple" }
109
- sdist = { url = "https://files.pythonhosted.org/packages/e0/2d/a891ca51311197f6ad14a7ef42e2399f36cf2f9bd44752b3dc4eab60fdc5/certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120", size = 154268, upload-time = "2026-01-04T02:42:41.825Z" }
109
+ sdist = { url = "https://files.pythonhosted.org/packages/a6/bd/1436c50cc46699de0230fbaacc1d1de7bfec413176099949e9d5112e88f2/certifi-2026.10.19.tar.gz", hash = "sha256:035c1e85572b141bf1c3a3eff0e33a8eb74917522f2559075ff8d2fea780a1ae", size = 137598, upload-time = "2026-10-20T02:24:16.604Z" }
110
110
  wheels = [
111
- { url = "https://files.pythonhosted.org/packages/e6/ad/3cc14f097111b4de0040c83a525973216457bbeeb63739ef1ed275c1c021/certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c", size = 152900, upload-time = "2026-01-04T02:42:40.15Z" },
111
+ { url = "https://files.pythonhosted.org/packages/c4/51/29046e48f693c54e5b7412216d447a1d8362c9653148d98c02cdf65fa733/certifi-2026.10.19-py3-none-any.whl", hash = "sha256:42d35340cc5b9ba78e818ddbff0c5b1c2b779de448a340fd1b989f5fa8670e1b", size = 136464, upload-time = "2026-10-20T02:24:15.072Z" },
112
112
  ]
113
113
 
114
114
  [[package]]
@@ -331,11 +331,11 @@ wheels = [
331
331
 
332
332
  [[package]]
333
333
  name = "distlib"
334
- version = "0.4.0"
334
+ version = "0.4.4"
335
335
  source = { registry = "https://pypi.org/simple" }
336
- 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" }
336
+ sdist = { url = "https://files.pythonhosted.org/packages/68/bc/d36966de7304047a1001a7559fbf266c464bb5d8cc85464536ef8c9bcc32/distlib-0.4.4.tar.gz", hash = "sha256:ca4175b4ac7f71223cc30ed7248c45d2b38c2439d8ee6e498ab67ed63cf3508d", size = 621304, upload-time = "2026-10-16T13:56:34.203Z" }
337
337
  wheels = [
338
- { 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" },
338
+ { url = "https://files.pythonhosted.org/packages/c1/2b/238f02a4927fa2e27aa995371d240a468b52e42eae44a678434aff736b38/distlib-0.4.4-py2.py3-none-any.whl", hash = "sha256:cf09d55b1e85a89576b036aeb71550bfd68320f3f21761ca329eadadad918638", size = 472099, upload-time = "2026-10-16T13:56:32.053Z" },
339
339
  ]
340
340
 
341
341
  [[package]]
@@ -405,43 +405,83 @@ wheels = [
405
405
 
406
406
  [[package]]
407
407
  name = "fastmcp"
408
- version = "3.2.0"
408
+ version = "3.4.10"
409
409
  source = { registry = "https://pypi.org/simple" }
410
410
  dependencies = [
411
+ { name = "fastmcp-slim", extra = ["client", "server"] },
412
+ ]
413
+ sdist = { url = "https://files.pythonhosted.org/packages/7e/ce/b2057fd2d3e453048ffae962c746ef7bcb9cf6700086fb1dfcff8a8ba65d/fastmcp-3.4.10.tar.gz", hash = "sha256:c6474855d6230cce4feb7084d654ba518578b25856c6ef26a2ff2d806ef68969", size = 28866789, upload-time = "2026-10-20T14:49:39.101Z" }
414
+ wheels = [
415
+ { url = "https://files.pythonhosted.org/packages/40/c4/72da20dfbfce1c99e3c70bc973e736744daf6d461de138f52f9aaa558959/fastmcp-3.4.10-py3-none-any.whl", hash = "sha256:68f422db0a7c6228142663f17d9f79a5a12a509e1408a8ac207b3e442e166e38", size = 8026, upload-time = "2026-10-20T14:49:37.137Z" },
416
+ ]
417
+
418
+ [[package]]
419
+ name = "fastmcp-slim"
420
+ version = "3.4.10"
421
+ source = { registry = "https://pypi.org/simple" }
422
+ dependencies = [
423
+ { name = "platformdirs" },
424
+ { name = "pydantic", extra = ["email"] },
425
+ { name = "pydantic-settings" },
426
+ { name = "python-dotenv" },
427
+ { name = "rich" },
428
+ { name = "typing-extensions" },
429
+ ]
430
+ sdist = { url = "https://files.pythonhosted.org/packages/98/3b/28be7f0963fee1c848e78898d801e1232dd2e05b6e37026c400a788caa9a/fastmcp_slim-3.4.10.tar.gz", hash = "sha256:d80ae606ead8dfefa1f21b009929824210ea87eb4b422653a1be8dca61797ccd", size = 610326, upload-time = "2026-10-20T14:49:15.096Z" }
431
+ wheels = [
432
+ { url = "https://files.pythonhosted.org/packages/7c/28/1e0681b524191ee170f40e8e800fd3785084e12806fc46675c70d7f8fa43/fastmcp_slim-3.4.10-py3-none-any.whl", hash = "sha256:f388941db8bdf38999e6c9d2536c4cd59a6571908d851cee2d10ee59f4e53532", size = 785895, upload-time = "2026-10-20T14:49:13.466Z" },
433
+ ]
434
+
435
+ [package.optional-dependencies]
436
+ client = [
437
+ { name = "authlib" },
438
+ { name = "exceptiongroup" },
439
+ { name = "httpx" },
440
+ { name = "mcp" },
441
+ { name = "opentelemetry-api" },
442
+ { name = "py-key-value-aio", extra = ["filetree", "keyring", "memory"] },
443
+ { name = "starlette" },
444
+ ]
445
+ server = [
411
446
  { name = "authlib" },
412
447
  { name = "cyclopts" },
413
448
  { name = "exceptiongroup" },
449
+ { name = "griffelib" },
414
450
  { name = "httpx" },
451
+ { name = "joserfc" },
415
452
  { name = "jsonref" },
416
453
  { name = "jsonschema-path" },
417
454
  { name = "mcp" },
418
455
  { name = "openapi-pydantic" },
419
456
  { name = "opentelemetry-api" },
420
457
  { name = "packaging" },
421
- { name = "platformdirs" },
422
458
  { name = "py-key-value-aio", extra = ["filetree", "keyring", "memory"] },
423
- { name = "pydantic", extra = ["email"] },
424
459
  { name = "pyperclip" },
425
- { name = "python-dotenv" },
460
+ { name = "python-multipart" },
426
461
  { name = "pyyaml" },
427
- { name = "rich" },
462
+ { name = "starlette" },
428
463
  { name = "uncalled-for" },
429
464
  { name = "uvicorn" },
430
465
  { name = "watchfiles" },
431
466
  { name = "websockets" },
432
467
  ]
433
- sdist = { url = "https://files.pythonhosted.org/packages/d0/32/4f1b2cfd7b50db89114949f90158b1dcc2c92a1917b9f57c0ff24e47a2f4/fastmcp-3.2.0.tar.gz", hash = "sha256:d4830b8ffc3592d3d9c76dc0f398904cf41f04910e41a0de38cc1004e0903bef", size = 26318581, upload-time = "2026-03-30T20:25:37.692Z" }
468
+
469
+ [[package]]
470
+ name = "filelock"
471
+ version = "4.2.1"
472
+ source = { registry = "https://pypi.org/simple" }
473
+ sdist = { url = "https://files.pythonhosted.org/packages/d5/98/771d8ca889f220d7d7e352addf500666368f0fd081c6080a83767580c6e4/filelock-4.2.1.tar.gz", hash = "sha256:c4c937ccac2a813cee448e662a56366cfb374c0f8702e75f295c412cc1c5d5a3", size = 650997, upload-time = "2026-10-17T16:48:14.435Z" }
434
474
  wheels = [
435
- { url = "https://files.pythonhosted.org/packages/4f/67/684fa2d2de1e7504549d4ca457b4f854ccec3cd3be03bd86b33b599fbf58/fastmcp-3.2.0-py3-none-any.whl", hash = "sha256:e71aba3df16f86f546a4a9e513261d3233bcc92bef0dfa647bac3fa33623f681", size = 705550, upload-time = "2026-03-30T20:25:35.499Z" },
475
+ { url = "https://files.pythonhosted.org/packages/28/00/db89d339bc4ecdc8087fa7b8607ba22ffc27bf96286f340c9620bea428b3/filelock-4.2.1-py3-none-any.whl", hash = "sha256:7be2662e9e826b9bba28afc0f843a123280d799a2ea44bb5d35ccec67905ae44", size = 162455, upload-time = "2026-10-17T16:48:12.937Z" },
436
476
  ]
437
477
 
438
478
  [[package]]
439
- name = "filelock"
440
- version = "3.29.0"
479
+ name = "griffelib"
480
+ version = "2.4.1"
441
481
  source = { registry = "https://pypi.org/simple" }
442
- sdist = { url = "https://files.pythonhosted.org/packages/b5/fe/997687a931ab51049acce6fa1f23e8f01216374ea81374ddee763c493db5/filelock-3.29.0.tar.gz", hash = "sha256:69974355e960702e789734cb4871f884ea6fe50bd8404051a3530bc07809cf90", size = 57571, upload-time = "2026-04-19T15:39:10.068Z" }
482
+ sdist = { url = "https://files.pythonhosted.org/packages/36/e2/0f5d8ed08766bc6dcd3eebf5a6623d83cbca33a6e4c90aef57156ce745ad/griffelib-2.4.1.tar.gz", hash = "sha256:40c028dd2e623f464423f0e11e3c553158f1cf4f1368239a370534d73e1407ff", size = 245153, upload-time = "2026-10-22T11:20:03.705Z" }
443
483
  wheels = [
444
- { url = "https://files.pythonhosted.org/packages/81/47/dd9a212ef6e343a6857485ffe25bba537304f1913bdbed446a23f7f592e1/filelock-3.29.0-py3-none-any.whl", hash = "sha256:96f5f6344709aa1572bbf631c640e4ebeeb519e08da902c39a001882f30ac258", size = 39812, upload-time = "2026-04-19T15:39:08.752Z" },
484
+ { url = "https://files.pythonhosted.org/packages/de/02/1156d5f5307f573b901b14373848b84e69ca6cab09169b8cc97d16a181f9/griffelib-2.4.1-py3-none-any.whl", hash = "sha256:76bc562f936ad1ce198d2cf6d0731bd5c92a7d934b69ef828ef22ee0ffdb62ce", size = 172983, upload-time = "2026-10-22T11:19:59.843Z" },
445
485
  ]
446
486
 
447
487
  [[package]]
@@ -508,18 +548,6 @@ wheels = [
508
548
  { url = "https://files.pythonhosted.org/packages/d2/23/408243171aa9aaba178d3e2559159c24c1171a641aa83b67bdd3394ead8e/idna-3.15-py3-none-any.whl", hash = "sha256:048adeaf8c2d788c40fee287673ccaa74c24ffd8dcf09ffa555a2fbb59f10ac8", size = 72340, upload-time = "2026-05-12T22:45:55.733Z" },
509
549
  ]
510
550
 
511
- [[package]]
512
- name = "importlib-metadata"
513
- version = "8.7.1"
514
- source = { registry = "https://pypi.org/simple" }
515
- dependencies = [
516
- { name = "zipp" },
517
- ]
518
- sdist = { url = "https://files.pythonhosted.org/packages/f3/49/3b30cad09e7771a4982d9975a8cbf64f00d4a1ececb53297f1d9a7be1b10/importlib_metadata-8.7.1.tar.gz", hash = "sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb", size = 57107, upload-time = "2025-12-21T10:00:19.278Z" }
519
- wheels = [
520
- { url = "https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl", hash = "sha256:5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151", size = 27865, upload-time = "2025-12-21T10:00:18.329Z" },
521
- ]
522
-
523
551
  [[package]]
524
552
  name = "iniconfig"
525
553
  version = "2.3.0"
@@ -589,6 +617,18 @@ wheels = [
589
617
  { url = "https://files.pythonhosted.org/packages/14/2f/967ba146e6d58cf6a652da73885f52fc68001525b4197effc174321d70b4/jmespath-1.1.0-py3-none-any.whl", hash = "sha256:a5663118de4908c91729bea0acadca56526eb2698e83de10cd116ae0f4e97c64", size = 20419, upload-time = "2026-01-22T16:35:24.919Z" },
590
618
  ]
591
619
 
620
+ [[package]]
621
+ name = "joserfc"
622
+ version = "1.7.7"
623
+ source = { registry = "https://pypi.org/simple" }
624
+ dependencies = [
625
+ { name = "cryptography" },
626
+ ]
627
+ sdist = { url = "https://files.pythonhosted.org/packages/bd/15/48ff246732232d35ee234228def22b52455fcc55577f06146602399a29b0/joserfc-1.7.7.tar.gz", hash = "sha256:471d0fd12a5a0d1c0942de280f39efe6f597878315033270b504d4d006d25510", size = 237446, upload-time = "2026-10-19T00:30:29.974Z" }
628
+ wheels = [
629
+ { url = "https://files.pythonhosted.org/packages/df/9f/934db284aa22f37af59708e382903860d4b81329c137b1b0ed2745daeb65/joserfc-1.7.7-py3-none-any.whl", hash = "sha256:06979cfbab78bc802f14c0358f32969826cc26720e13cb38926ffdc86bc0cb2c", size = 71758, upload-time = "2026-10-19T00:30:28.498Z" },
630
+ ]
631
+
592
632
  [[package]]
593
633
  name = "jsonpatch"
594
634
  version = "1.33"
@@ -827,15 +867,14 @@ wheels = [
827
867
 
828
868
  [[package]]
829
869
  name = "opentelemetry-api"
830
- version = "1.39.1"
870
+ version = "1.45.1"
831
871
  source = { registry = "https://pypi.org/simple" }
832
872
  dependencies = [
833
- { name = "importlib-metadata" },
834
873
  { name = "typing-extensions" },
835
874
  ]
836
- sdist = { url = "https://files.pythonhosted.org/packages/97/b9/3161be15bb8e3ad01be8be5a968a9237c3027c5be504362ff800fca3e442/opentelemetry_api-1.39.1.tar.gz", hash = "sha256:fbde8c80e1b937a2c61f20347e91c0c18a1940cecf012d62e65a7caf08967c9c", size = 65767, upload-time = "2025-12-11T13:32:39.182Z" }
875
+ sdist = { url = "https://files.pythonhosted.org/packages/2e/02/6e0ae9cc61bd3169d401077b507b3ebc344745171e1051ab430be012dcd9/opentelemetry_api-1.45.1.tar.gz", hash = "sha256:aa38ed19bcc084ba42782a73255b3582283eced7ad6dddbd6695189e69adfb75", size = 72804, upload-time = "2026-10-06T17:32:58.133Z" }
837
876
  wheels = [
838
- { url = "https://files.pythonhosted.org/packages/cf/df/d3f1ddf4bb4cb50ed9b1139cc7b1c54c34a1e7ce8fd1b9a37c0d1551a6bd/opentelemetry_api-1.39.1-py3-none-any.whl", hash = "sha256:2edd8463432a7f8443edce90972169b195e7d6a05500cd29e6d13898187c9950", size = 66356, upload-time = "2025-12-11T13:32:17.304Z" },
877
+ { url = "https://files.pythonhosted.org/packages/1e/41/f7dcf80b81ee8e71c1a2b59f14208bc723edbd89ed027a73b175abf6348e/opentelemetry_api-1.45.1-py3-none-any.whl", hash = "sha256:b31553efa588ae44bc306f863c785c5333a9ecc091248c6ee68b4b6c87fdedfb", size = 60256, upload-time = "2026-10-06T17:32:33.506Z" },
839
878
  ]
840
879
 
841
880
  [[package]]
@@ -853,11 +892,11 @@ wheels = [
853
892
 
854
893
  [[package]]
855
894
  name = "packaging"
856
- version = "26.0"
895
+ version = "26.3"
857
896
  source = { registry = "https://pypi.org/simple" }
858
- sdist = { url = "https://files.pythonhosted.org/packages/65/ee/299d360cdc32edc7d2cf530f3accf79c4fca01e96ffc950d8a52213bd8e4/packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4", size = 143416, upload-time = "2026-01-21T20:50:39.064Z" }
897
+ 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" }
859
898
  wheels = [
860
- { url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366, upload-time = "2026-01-21T20:50:37.788Z" },
899
+ { 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" },
861
900
  ]
862
901
 
863
902
  [[package]]
@@ -1404,11 +1443,11 @@ wheels = [
1404
1443
 
1405
1444
  [[package]]
1406
1445
  name = "setuptools"
1407
- version = "84.0.0"
1446
+ version = "84.2.1"
1408
1447
  source = { registry = "https://pypi.org/simple" }
1409
- sdist = { url = "https://files.pythonhosted.org/packages/6d/44/f5da03a8ef95d369145c5bb53050e7877c9f3d312e128605fd9504829143/setuptools-84.0.0.tar.gz", hash = "sha256:f4695c21257f0d9b537ec2692c941d02ee143b7cc1276941349a546573b2ef73", size = 1168449, upload-time = "2026-08-08T18:27:58.365Z" }
1448
+ sdist = { url = "https://files.pythonhosted.org/packages/70/b3/c19426f783614d625699a4b247faf628ea9ab1db228674491767b417f9e1/setuptools-84.2.1.tar.gz", hash = "sha256:3ff8b3b5492a0aa66960f4419365a86b84e013070d4313e4d4a6894f5d64d6bc", size = 1230289, upload-time = "2026-10-20T19:01:37.742Z" }
1410
1449
  wheels = [
1411
- { url = "https://files.pythonhosted.org/packages/95/9c/c510029fc6ef33a6275cd2c5d3cecd6613dfd6aa401d57c54f1c18852ccf/setuptools-84.0.0-py3-none-any.whl", hash = "sha256:51a52592b3b99e102b609654876bd65f19f999935166d1352678931132b0c670", size = 818216, upload-time = "2026-08-08T18:27:56.719Z" },
1450
+ { url = "https://files.pythonhosted.org/packages/ef/55/6dc6d6bb953bdfc52519a0059592c52b6e3b8ad51cf8256dffceb55b0610/setuptools-84.2.1-py3-none-any.whl", hash = "sha256:ca140b45d5325a9478f880e351484f62fef15f336462e449ca0c03c873d589c2", size = 876263, upload-time = "2026-10-20T19:01:35.678Z" },
1412
1451
  ]
1413
1452
 
1414
1453
  [[package]]
@@ -1526,17 +1565,18 @@ wheels = [
1526
1565
 
1527
1566
  [[package]]
1528
1567
  name = "virtualenv"
1529
- version = "21.7.13"
1568
+ version = "21.14.13"
1530
1569
  source = { registry = "https://pypi.org/simple" }
1531
1570
  dependencies = [
1532
1571
  { name = "distlib" },
1533
1572
  { name = "filelock" },
1573
+ { name = "packaging" },
1534
1574
  { name = "platformdirs" },
1535
1575
  { name = "python-discovery" },
1536
1576
  ]
1537
- sdist = { url = "https://files.pythonhosted.org/packages/13/50/c9b84eb106d0db420b9878dac0a386c5791726f127ce20b06897f6e3a1e9/virtualenv-21.7.13.tar.gz", hash = "sha256:0355558b6f33619aab31347e43643b0ebc97f61ea3acf617b2b69e1f8a843d11", size = 5360306, upload-time = "2026-09-18T04:35:49.354Z" }
1577
+ sdist = { url = "https://files.pythonhosted.org/packages/70/aa/bff50daee0488e16d611258a9b6c5a1d0c9e128f8ca424e9f4e1c0444ef2/virtualenv-21.14.13.tar.gz", hash = "sha256:de5307ba4b9a0001d9c8ea02832d38f63ca432880f416c1bface61c4323fd905", size = 5570301, upload-time = "2026-10-22T20:10:16.952Z" }
1538
1578
  wheels = [
1539
- { url = "https://files.pythonhosted.org/packages/9a/ce/e74453531b0c49a58d0e8a4f9bab4495705859fee4a4f7de27d58f4a791a/virtualenv-21.7.13-py3-none-any.whl", hash = "sha256:1bea5af7463f59c4719db48fe739579a2a4f569c96f26c086edda85c96da9f59", size = 5328680, upload-time = "2026-09-18T04:35:47.194Z" },
1579
+ { url = "https://files.pythonhosted.org/packages/bb/a9/c10d8a44a29fb94a18b43fdf11f38caca53ae7c9406f11a72b1cb8f624f1/virtualenv-21.14.13-py3-none-any.whl", hash = "sha256:5fbb04138a4861580b78ba9110d529a26bc48fcc93c8ec36bc0202eeed96a788", size = 5557094, upload-time = "2026-10-22T20:10:15.096Z" },
1540
1580
  ]
1541
1581
 
1542
1582
  [[package]]
@@ -1653,12 +1693,3 @@ wheels = [
1653
1693
  { url = "https://files.pythonhosted.org/packages/9f/3e/28135a24e384493fa804216b79a6a6759a38cc4ff59118787b9fb693df93/websockets-16.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b14dc141ed6d2dde437cddb216004bcac6a1df0935d79656387bd41632ba0bbd", size = 178531, upload-time = "2026-01-10T09:23:35.016Z" },
1654
1694
  { url = "https://files.pythonhosted.org/packages/6f/28/258ebab549c2bf3e64d2b0217b973467394a9cea8c42f70418ca2c5d0d2e/websockets-16.0-py3-none-any.whl", hash = "sha256:1637db62fad1dc833276dded54215f2c7fa46912301a24bd94d45d46a011ceec", size = 171598, upload-time = "2026-01-10T09:23:45.395Z" },
1655
1695
  ]
1656
-
1657
- [[package]]
1658
- name = "zipp"
1659
- version = "3.23.0"
1660
- source = { registry = "https://pypi.org/simple" }
1661
- sdist = { url = "https://files.pythonhosted.org/packages/e3/02/0f2892c661036d50ede074e376733dca2ae7c6eb617489437771209d4180/zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166", size = 25547, upload-time = "2025-06-08T17:06:39.4Z" }
1662
- wheels = [
1663
- { url = "https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", size = 10276, upload-time = "2025-06-08T17:06:38.034Z" },
1664
- ]
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "3.5.7",
3
- "distance": 0,
4
- "node": "gcf2349f49bdda7322083fcebde270dbb7f441672",
5
- "dirty": false,
6
- "branch": "HEAD",
7
- "node_date": "2026-10-24"
8
- }