mcp-openstack-ops 3.5.2__tar.gz → 3.5.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/.github/workflows/pypi-publish.yml +1 -1
  2. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/PKG-INFO +2 -2
  3. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/pyproject.toml +1 -1
  4. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops.egg-info/PKG-INFO +2 -2
  5. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops.egg-info/requires.txt +1 -1
  6. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops.egg-info/scm_file_list.json +117 -117
  7. mcp_openstack_ops-3.5.3/src/mcp_openstack_ops.egg-info/scm_version.json +8 -0
  8. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/uv.lock +58 -55
  9. mcp_openstack_ops-3.5.2/src/mcp_openstack_ops.egg-info/scm_version.json +0 -8
  10. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/.env.example +0 -0
  11. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/.env.test +0 -0
  12. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/.github/FUNDING.yml +0 -0
  13. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/.github/copilot-instructions.md +0 -0
  14. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/.github/dependabot.yml +0 -0
  15. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/.gitignore +0 -0
  16. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/.gitleaks.toml +0 -0
  17. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/.pre-commit-config.yaml +0 -0
  18. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/.python-version +0 -0
  19. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/Dockerfile.MCP-Server +0 -0
  20. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/Dockerfile.MCPO-Proxy +0 -0
  21. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/LICENSE +0 -0
  22. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/MANIFEST.in +0 -0
  23. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/README.md +0 -0
  24. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/build-mcp-server-docker-image.sh +0 -0
  25. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/build-mcpo-server-docker-image.sh +0 -0
  26. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/diagnose_openstack.py +0 -0
  27. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/docker-compose.yml +0 -0
  28. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/img/MCP-Workflow-of-Quickstart-Tutorial.png +0 -0
  29. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/img/screenshot-claude-desktop.png +0 -0
  30. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/img/screenshot-claude-desktop.png:Zone.Identifier +0 -0
  31. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/img/screenshot-example-cluster-status.png +0 -0
  32. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/img/screenshot-openstack-dashboard.png +0 -0
  33. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/main.py +0 -0
  34. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/mcp-config.json.http +0 -0
  35. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/mcp-config.json.multi-project +0 -0
  36. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/mcp-config.json.stdio +0 -0
  37. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/scripts/mcp-server-docker-cmd.sh +0 -0
  38. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/scripts/run-mcp-inspector-local.sh +0 -0
  39. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/scripts/run-mcp-inspector-pypi.sh +0 -0
  40. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/setup.cfg +0 -0
  41. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/__init__.py +0 -0
  42. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/__main__.py +0 -0
  43. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/connection.py +0 -0
  44. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/functions.py +0 -0
  45. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/mcp_main.py +0 -0
  46. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/prompt_template.md +0 -0
  47. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/services/__init__.py +0 -0
  48. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/services/compute.py +0 -0
  49. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/services/core.py +0 -0
  50. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/services/identity.py +0 -0
  51. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/services/image.py +0 -0
  52. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/services/load_balancer/__init__.py +0 -0
  53. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/services/load_balancer/amphorae.py +0 -0
  54. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/services/load_balancer/core.py +0 -0
  55. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/services/load_balancer/health_monitors.py +0 -0
  56. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/services/load_balancer/l7_policies.py +0 -0
  57. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/services/load_balancer/listeners.py +0 -0
  58. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/services/load_balancer/management.py +0 -0
  59. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/services/load_balancer/pools.py +0 -0
  60. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/services/monitoring.py +0 -0
  61. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/services/network.py +0 -0
  62. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/services/orchestration.py +0 -0
  63. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/services/storage.py +0 -0
  64. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/__init__.py +0 -0
  65. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_availability_zones.py +0 -0
  66. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_floating_ip_pools.py +0 -0
  67. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_floating_ips.py +0 -0
  68. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_heat_stacks.py +0 -0
  69. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_hypervisor_details.py +0 -0
  70. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_image_detail_list.py +0 -0
  71. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_instance.py +0 -0
  72. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_instance_by_name.py +0 -0
  73. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_instance_details.py +0 -0
  74. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_instances_by_status.py +0 -0
  75. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_keypair_list.py +0 -0
  76. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_load_balancer_amphorae.py +0 -0
  77. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_load_balancer_availability_zones.py +0 -0
  78. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_load_balancer_details.py +0 -0
  79. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_load_balancer_flavors.py +0 -0
  80. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_load_balancer_health_monitors.py +0 -0
  81. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_load_balancer_l7_policies.py +0 -0
  82. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_load_balancer_l7_rules.py +0 -0
  83. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_load_balancer_list.py +0 -0
  84. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_load_balancer_listeners.py +0 -0
  85. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_load_balancer_pool_members.py +0 -0
  86. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_load_balancer_pools.py +0 -0
  87. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_load_balancer_providers.py +0 -0
  88. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_load_balancer_quotas.py +0 -0
  89. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_network_details.py +0 -0
  90. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_project_details.py +0 -0
  91. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_quota.py +0 -0
  92. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_resource_monitoring.py +0 -0
  93. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_role_assignments.py +0 -0
  94. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_routers.py +0 -0
  95. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_security_groups.py +0 -0
  96. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_server_events.py +0 -0
  97. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_server_groups.py +0 -0
  98. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_server_volumes.py +0 -0
  99. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_service_status.py +0 -0
  100. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_usage_statistics.py +0 -0
  101. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_user_list.py +0 -0
  102. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_volume_list.py +0 -0
  103. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_volume_snapshots.py +0 -0
  104. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/get_volume_types.py +0 -0
  105. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/search_instances.py +0 -0
  106. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_alarms.py +0 -0
  107. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_compute_agents.py +0 -0
  108. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_domains.py +0 -0
  109. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_flavor.py +0 -0
  110. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_floating_ip.py +0 -0
  111. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_floating_ip_port_forwarding.py +0 -0
  112. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_heat_stack.py +0 -0
  113. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_identity_groups.py +0 -0
  114. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_image.py +0 -0
  115. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_image_members.py +0 -0
  116. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_image_metadata.py +0 -0
  117. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_image_visibility.py +0 -0
  118. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_instance.py +0 -0
  119. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_keypair.py +0 -0
  120. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_load_balancer.py +0 -0
  121. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_load_balancer_amphora.py +0 -0
  122. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_load_balancer_availability_zone.py +0 -0
  123. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_load_balancer_flavor.py +0 -0
  124. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_load_balancer_health_monitor.py +0 -0
  125. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_load_balancer_l7_policy.py +0 -0
  126. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_load_balancer_l7_rule.py +0 -0
  127. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_load_balancer_listener.py +0 -0
  128. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_load_balancer_pool.py +0 -0
  129. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_load_balancer_pool_member.py +0 -0
  130. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_load_balancer_quota.py +0 -0
  131. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_metrics.py +0 -0
  132. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_network_agents.py +0 -0
  133. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_network_ports.py +0 -0
  134. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_network_qos_policies.py +0 -0
  135. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_networks.py +0 -0
  136. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_project.py +0 -0
  137. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_quota.py +0 -0
  138. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_roles.py +0 -0
  139. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_server_backup.py +0 -0
  140. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_server_dump.py +0 -0
  141. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_server_fixed_ip.py +0 -0
  142. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_server_floating_ip.py +0 -0
  143. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_server_group.py +0 -0
  144. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_server_migration.py +0 -0
  145. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_server_network.py +0 -0
  146. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_server_properties.py +0 -0
  147. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_server_security_group.py +0 -0
  148. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_server_volume.py +0 -0
  149. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_service_logs.py +0 -0
  150. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_services.py +0 -0
  151. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_snapshot.py +0 -0
  152. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_subnets.py +0 -0
  153. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_volume.py +0 -0
  154. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_volume_backups.py +0 -0
  155. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_volume_groups.py +0 -0
  156. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops/tools/set_volume_qos.py +0 -0
  157. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops.egg-info/SOURCES.txt +0 -0
  158. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops.egg-info/dependency_links.txt +0 -0
  159. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops.egg-info/entry_points.txt +0 -0
  160. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/src/mcp_openstack_ops.egg-info/top_level.txt +0 -0
  161. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/test_compatibility.sh +0 -0
  162. {mcp_openstack_ops-3.5.2 → mcp_openstack_ops-3.5.3}/test_project_isolation.py +0 -0
@@ -19,7 +19,7 @@ jobs:
19
19
  with:
20
20
  persist-credentials: false
21
21
  fetch-depth: 0
22
- - uses: actions/setup-python@v6
22
+ - uses: actions/setup-python@v7
23
23
  with:
24
24
  python-version: "3.12.x"
25
25
  - name: Install build tool
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-openstack-ops
3
- Version: 3.5.2
3
+ Version: 3.5.3
4
4
  Summary: OpenStack operations automation MCP server
5
5
  Author-email: JungJungIn <call518@gmail.com>
6
6
  Requires-Python: >=3.12
7
7
  Description-Content-Type: text/markdown
8
8
  License-File: LICENSE
9
9
  Requires-Dist: fastmcp>=2.12.3
10
- Requires-Dist: openstacksdk<=4.17.0,>=4.1.0
10
+ Requires-Dist: openstacksdk<=4.20.0,>=4.1.0
11
11
  Requires-Dist: python-dotenv>=1.1.1
12
12
  Requires-Dist: setuptools-scm>=10.0.5
13
13
  Requires-Dist: pre-commit>=4.6.0
@@ -7,7 +7,7 @@ requires-python = ">=3.12"
7
7
  authors = [{ name = "JungJungIn", email = "call518@gmail.com" }]
8
8
  dependencies = [
9
9
  "fastmcp>=2.12.3",
10
- "openstacksdk>=4.1.0,<=4.17.0",
10
+ "openstacksdk>=4.1.0,<=4.20.0",
11
11
  "python-dotenv>=1.1.1",
12
12
  "setuptools-scm>=10.0.5",
13
13
  "pre-commit>=4.6.0",
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-openstack-ops
3
- Version: 3.5.2
3
+ Version: 3.5.3
4
4
  Summary: OpenStack operations automation MCP server
5
5
  Author-email: JungJungIn <call518@gmail.com>
6
6
  Requires-Python: >=3.12
7
7
  Description-Content-Type: text/markdown
8
8
  License-File: LICENSE
9
9
  Requires-Dist: fastmcp>=2.12.3
10
- Requires-Dist: openstacksdk<=4.17.0,>=4.1.0
10
+ Requires-Dist: openstacksdk<=4.20.0,>=4.1.0
11
11
  Requires-Dist: python-dotenv>=1.1.1
12
12
  Requires-Dist: setuptools-scm>=10.0.5
13
13
  Requires-Dist: pre-commit>=4.6.0
@@ -1,5 +1,5 @@
1
1
  fastmcp>=2.12.3
2
- openstacksdk<=4.17.0,>=4.1.0
2
+ openstacksdk<=4.20.0,>=4.1.0
3
3
  python-dotenv>=1.1.1
4
4
  setuptools-scm>=10.0.5
5
5
  pre-commit>=4.6.0
@@ -1,155 +1,155 @@
1
1
  {
2
2
  "files": [
3
- ".pre-commit-config.yaml",
3
+ ".env.example",
4
4
  ".env.test",
5
- "README.md",
6
- "uv.lock",
7
- "Dockerfile.MCPO-Proxy",
5
+ ".github/FUNDING.yml",
6
+ ".github/copilot-instructions.md",
7
+ ".github/dependabot.yml",
8
+ ".github/workflows/pypi-publish.yml",
9
+ ".gitignore",
10
+ ".gitleaks.toml",
11
+ ".pre-commit-config.yaml",
8
12
  ".python-version",
9
- "LICENSE",
10
13
  "Dockerfile.MCP-Server",
11
- "mcp-config.json.stdio",
12
- "pyproject.toml",
13
- "mcp-config.json.http",
14
- "test_project_isolation.py",
14
+ "Dockerfile.MCPO-Proxy",
15
+ "LICENSE",
16
+ "MANIFEST.in",
17
+ "README.md",
15
18
  "build-mcp-server-docker-image.sh",
16
- "test_compatibility.sh",
19
+ "build-mcpo-server-docker-image.sh",
17
20
  "diagnose_openstack.py",
18
- "mcp-config.json.multi-project",
19
- "MANIFEST.in",
20
- ".env.example",
21
- "main.py",
22
- ".gitleaks.toml",
23
- ".gitignore",
24
21
  "docker-compose.yml",
25
- "build-mcpo-server-docker-image.sh",
22
+ "img/MCP-Workflow-of-Quickstart-Tutorial.png",
23
+ "img/screenshot-claude-desktop.png",
24
+ "img/screenshot-claude-desktop.png:Zone.Identifier",
25
+ "img/screenshot-example-cluster-status.png",
26
+ "img/screenshot-openstack-dashboard.png",
27
+ "main.py",
28
+ "mcp-config.json.http",
29
+ "mcp-config.json.multi-project",
30
+ "mcp-config.json.stdio",
31
+ "pyproject.toml",
32
+ "scripts/mcp-server-docker-cmd.sh",
26
33
  "scripts/run-mcp-inspector-local.sh",
27
34
  "scripts/run-mcp-inspector-pypi.sh",
28
- "scripts/mcp-server-docker-cmd.sh",
29
35
  "src/mcp_openstack_ops/__init__.py",
30
- "src/mcp_openstack_ops/functions.py",
31
- "src/mcp_openstack_ops/prompt_template.md",
36
+ "src/mcp_openstack_ops/__main__.py",
32
37
  "src/mcp_openstack_ops/connection.py",
38
+ "src/mcp_openstack_ops/functions.py",
33
39
  "src/mcp_openstack_ops/mcp_main.py",
34
- "src/mcp_openstack_ops/__main__.py",
35
- "src/mcp_openstack_ops/services/monitoring.py",
36
- "src/mcp_openstack_ops/services/network.py",
37
- "src/mcp_openstack_ops/services/core.py",
40
+ "src/mcp_openstack_ops/prompt_template.md",
38
41
  "src/mcp_openstack_ops/services/__init__.py",
39
- "src/mcp_openstack_ops/services/image.py",
40
42
  "src/mcp_openstack_ops/services/compute.py",
41
- "src/mcp_openstack_ops/services/storage.py",
42
- "src/mcp_openstack_ops/services/orchestration.py",
43
+ "src/mcp_openstack_ops/services/core.py",
43
44
  "src/mcp_openstack_ops/services/identity.py",
44
- "src/mcp_openstack_ops/services/load_balancer/core.py",
45
+ "src/mcp_openstack_ops/services/image.py",
45
46
  "src/mcp_openstack_ops/services/load_balancer/__init__.py",
46
- "src/mcp_openstack_ops/services/load_balancer/management.py",
47
- "src/mcp_openstack_ops/services/load_balancer/l7_policies.py",
48
- "src/mcp_openstack_ops/services/load_balancer/listeners.py",
49
47
  "src/mcp_openstack_ops/services/load_balancer/amphorae.py",
48
+ "src/mcp_openstack_ops/services/load_balancer/core.py",
50
49
  "src/mcp_openstack_ops/services/load_balancer/health_monitors.py",
50
+ "src/mcp_openstack_ops/services/load_balancer/l7_policies.py",
51
+ "src/mcp_openstack_ops/services/load_balancer/listeners.py",
52
+ "src/mcp_openstack_ops/services/load_balancer/management.py",
51
53
  "src/mcp_openstack_ops/services/load_balancer/pools.py",
52
- "src/mcp_openstack_ops/tools/get_instance.py",
53
- "src/mcp_openstack_ops/tools/get_floating_ips.py",
54
- "src/mcp_openstack_ops/tools/get_load_balancer_l7_policies.py",
55
- "src/mcp_openstack_ops/tools/set_service_logs.py",
56
- "src/mcp_openstack_ops/tools/set_load_balancer_pool.py",
57
- "src/mcp_openstack_ops/tools/set_server_group.py",
58
- "src/mcp_openstack_ops/tools/set_network_qos_policies.py",
59
- "src/mcp_openstack_ops/tools/set_quota.py",
60
- "src/mcp_openstack_ops/tools/get_usage_statistics.py",
61
- "src/mcp_openstack_ops/tools/set_network_agents.py",
62
- "src/mcp_openstack_ops/tools/get_service_status.py",
63
- "src/mcp_openstack_ops/tools/set_metrics.py",
64
- "src/mcp_openstack_ops/tools/set_services.py",
65
- "src/mcp_openstack_ops/tools/set_networks.py",
54
+ "src/mcp_openstack_ops/services/monitoring.py",
55
+ "src/mcp_openstack_ops/services/network.py",
56
+ "src/mcp_openstack_ops/services/orchestration.py",
57
+ "src/mcp_openstack_ops/services/storage.py",
66
58
  "src/mcp_openstack_ops/tools/__init__.py",
67
- "src/mcp_openstack_ops/tools/search_instances.py",
68
- "src/mcp_openstack_ops/tools/set_image_visibility.py",
69
- "src/mcp_openstack_ops/tools/set_volume_qos.py",
70
59
  "src/mcp_openstack_ops/tools/get_availability_zones.py",
60
+ "src/mcp_openstack_ops/tools/get_floating_ip_pools.py",
61
+ "src/mcp_openstack_ops/tools/get_floating_ips.py",
62
+ "src/mcp_openstack_ops/tools/get_heat_stacks.py",
63
+ "src/mcp_openstack_ops/tools/get_hypervisor_details.py",
64
+ "src/mcp_openstack_ops/tools/get_image_detail_list.py",
65
+ "src/mcp_openstack_ops/tools/get_instance.py",
66
+ "src/mcp_openstack_ops/tools/get_instance_by_name.py",
67
+ "src/mcp_openstack_ops/tools/get_instance_details.py",
68
+ "src/mcp_openstack_ops/tools/get_instances_by_status.py",
71
69
  "src/mcp_openstack_ops/tools/get_keypair_list.py",
72
70
  "src/mcp_openstack_ops/tools/get_load_balancer_amphorae.py",
71
+ "src/mcp_openstack_ops/tools/get_load_balancer_availability_zones.py",
72
+ "src/mcp_openstack_ops/tools/get_load_balancer_details.py",
73
+ "src/mcp_openstack_ops/tools/get_load_balancer_flavors.py",
74
+ "src/mcp_openstack_ops/tools/get_load_balancer_health_monitors.py",
75
+ "src/mcp_openstack_ops/tools/get_load_balancer_l7_policies.py",
76
+ "src/mcp_openstack_ops/tools/get_load_balancer_l7_rules.py",
77
+ "src/mcp_openstack_ops/tools/get_load_balancer_list.py",
73
78
  "src/mcp_openstack_ops/tools/get_load_balancer_listeners.py",
74
- "src/mcp_openstack_ops/tools/set_server_security_group.py",
75
- "src/mcp_openstack_ops/tools/set_heat_stack.py",
76
- "src/mcp_openstack_ops/tools/set_roles.py",
77
- "src/mcp_openstack_ops/tools/set_load_balancer_l7_policy.py",
78
- "src/mcp_openstack_ops/tools/set_image_metadata.py",
79
- "src/mcp_openstack_ops/tools/get_routers.py",
80
- "src/mcp_openstack_ops/tools/set_load_balancer.py",
81
- "src/mcp_openstack_ops/tools/set_server_dump.py",
82
- "src/mcp_openstack_ops/tools/set_server_properties.py",
83
- "src/mcp_openstack_ops/tools/set_image_members.py",
84
- "src/mcp_openstack_ops/tools/set_load_balancer_listener.py",
85
- "src/mcp_openstack_ops/tools/set_snapshot.py",
86
- "src/mcp_openstack_ops/tools/set_compute_agents.py",
87
- "src/mcp_openstack_ops/tools/set_volume_groups.py",
88
- "src/mcp_openstack_ops/tools/get_image_detail_list.py",
89
- "src/mcp_openstack_ops/tools/get_role_assignments.py",
90
- "src/mcp_openstack_ops/tools/set_server_fixed_ip.py",
91
- "src/mcp_openstack_ops/tools/get_hypervisor_details.py",
92
- "src/mcp_openstack_ops/tools/get_volume_list.py",
93
- "src/mcp_openstack_ops/tools/get_heat_stacks.py",
94
- "src/mcp_openstack_ops/tools/set_server_migration.py",
95
- "src/mcp_openstack_ops/tools/get_instances_by_status.py",
96
79
  "src/mcp_openstack_ops/tools/get_load_balancer_pool_members.py",
97
- "src/mcp_openstack_ops/tools/set_volume.py",
98
- "src/mcp_openstack_ops/tools/set_floating_ip.py",
99
- "src/mcp_openstack_ops/tools/set_volume_backups.py",
80
+ "src/mcp_openstack_ops/tools/get_load_balancer_pools.py",
81
+ "src/mcp_openstack_ops/tools/get_load_balancer_providers.py",
82
+ "src/mcp_openstack_ops/tools/get_load_balancer_quotas.py",
83
+ "src/mcp_openstack_ops/tools/get_network_details.py",
84
+ "src/mcp_openstack_ops/tools/get_project_details.py",
100
85
  "src/mcp_openstack_ops/tools/get_quota.py",
101
- "src/mcp_openstack_ops/tools/set_alarms.py",
102
- "src/mcp_openstack_ops/tools/set_load_balancer_flavor.py",
103
- "src/mcp_openstack_ops/tools/set_load_balancer_health_monitor.py",
104
86
  "src/mcp_openstack_ops/tools/get_resource_monitoring.py",
87
+ "src/mcp_openstack_ops/tools/get_role_assignments.py",
88
+ "src/mcp_openstack_ops/tools/get_routers.py",
89
+ "src/mcp_openstack_ops/tools/get_security_groups.py",
90
+ "src/mcp_openstack_ops/tools/get_server_events.py",
91
+ "src/mcp_openstack_ops/tools/get_server_groups.py",
92
+ "src/mcp_openstack_ops/tools/get_server_volumes.py",
93
+ "src/mcp_openstack_ops/tools/get_service_status.py",
94
+ "src/mcp_openstack_ops/tools/get_usage_statistics.py",
105
95
  "src/mcp_openstack_ops/tools/get_user_list.py",
96
+ "src/mcp_openstack_ops/tools/get_volume_list.py",
97
+ "src/mcp_openstack_ops/tools/get_volume_snapshots.py",
98
+ "src/mcp_openstack_ops/tools/get_volume_types.py",
99
+ "src/mcp_openstack_ops/tools/search_instances.py",
100
+ "src/mcp_openstack_ops/tools/set_alarms.py",
101
+ "src/mcp_openstack_ops/tools/set_compute_agents.py",
102
+ "src/mcp_openstack_ops/tools/set_domains.py",
103
+ "src/mcp_openstack_ops/tools/set_flavor.py",
104
+ "src/mcp_openstack_ops/tools/set_floating_ip.py",
106
105
  "src/mcp_openstack_ops/tools/set_floating_ip_port_forwarding.py",
107
- "src/mcp_openstack_ops/tools/get_load_balancer_availability_zones.py",
106
+ "src/mcp_openstack_ops/tools/set_heat_stack.py",
107
+ "src/mcp_openstack_ops/tools/set_identity_groups.py",
108
108
  "src/mcp_openstack_ops/tools/set_image.py",
109
- "src/mcp_openstack_ops/tools/get_security_groups.py",
110
- "src/mcp_openstack_ops/tools/get_load_balancer_quotas.py",
111
- "src/mcp_openstack_ops/tools/set_server_network.py",
112
- "src/mcp_openstack_ops/tools/get_load_balancer_l7_rules.py",
113
- "src/mcp_openstack_ops/tools/set_load_balancer_pool_member.py",
114
- "src/mcp_openstack_ops/tools/set_load_balancer_availability_zone.py",
115
- "src/mcp_openstack_ops/tools/set_server_volume.py",
109
+ "src/mcp_openstack_ops/tools/set_image_members.py",
110
+ "src/mcp_openstack_ops/tools/set_image_metadata.py",
111
+ "src/mcp_openstack_ops/tools/set_image_visibility.py",
112
+ "src/mcp_openstack_ops/tools/set_instance.py",
116
113
  "src/mcp_openstack_ops/tools/set_keypair.py",
117
- "src/mcp_openstack_ops/tools/get_load_balancer_health_monitors.py",
118
- "src/mcp_openstack_ops/tools/get_load_balancer_providers.py",
119
- "src/mcp_openstack_ops/tools/get_server_volumes.py",
120
- "src/mcp_openstack_ops/tools/set_project.py",
121
- "src/mcp_openstack_ops/tools/get_server_events.py",
122
- "src/mcp_openstack_ops/tools/set_domains.py",
114
+ "src/mcp_openstack_ops/tools/set_load_balancer.py",
123
115
  "src/mcp_openstack_ops/tools/set_load_balancer_amphora.py",
124
- "src/mcp_openstack_ops/tools/get_volume_types.py",
125
- "src/mcp_openstack_ops/tools/set_instance.py",
126
- "src/mcp_openstack_ops/tools/get_instance_details.py",
127
- "src/mcp_openstack_ops/tools/get_load_balancer_pools.py",
128
- "src/mcp_openstack_ops/tools/get_load_balancer_flavors.py",
129
- "src/mcp_openstack_ops/tools/set_identity_groups.py",
130
- "src/mcp_openstack_ops/tools/set_flavor.py",
131
- "src/mcp_openstack_ops/tools/set_subnets.py",
132
- "src/mcp_openstack_ops/tools/set_server_floating_ip.py",
116
+ "src/mcp_openstack_ops/tools/set_load_balancer_availability_zone.py",
117
+ "src/mcp_openstack_ops/tools/set_load_balancer_flavor.py",
118
+ "src/mcp_openstack_ops/tools/set_load_balancer_health_monitor.py",
119
+ "src/mcp_openstack_ops/tools/set_load_balancer_l7_policy.py",
133
120
  "src/mcp_openstack_ops/tools/set_load_balancer_l7_rule.py",
121
+ "src/mcp_openstack_ops/tools/set_load_balancer_listener.py",
122
+ "src/mcp_openstack_ops/tools/set_load_balancer_pool.py",
123
+ "src/mcp_openstack_ops/tools/set_load_balancer_pool_member.py",
124
+ "src/mcp_openstack_ops/tools/set_load_balancer_quota.py",
125
+ "src/mcp_openstack_ops/tools/set_metrics.py",
126
+ "src/mcp_openstack_ops/tools/set_network_agents.py",
134
127
  "src/mcp_openstack_ops/tools/set_network_ports.py",
135
- "src/mcp_openstack_ops/tools/get_instance_by_name.py",
136
- "src/mcp_openstack_ops/tools/get_project_details.py",
128
+ "src/mcp_openstack_ops/tools/set_network_qos_policies.py",
129
+ "src/mcp_openstack_ops/tools/set_networks.py",
130
+ "src/mcp_openstack_ops/tools/set_project.py",
131
+ "src/mcp_openstack_ops/tools/set_quota.py",
132
+ "src/mcp_openstack_ops/tools/set_roles.py",
137
133
  "src/mcp_openstack_ops/tools/set_server_backup.py",
138
- "src/mcp_openstack_ops/tools/get_network_details.py",
139
- "src/mcp_openstack_ops/tools/get_load_balancer_list.py",
140
- "src/mcp_openstack_ops/tools/set_load_balancer_quota.py",
141
- "src/mcp_openstack_ops/tools/get_load_balancer_details.py",
142
- "src/mcp_openstack_ops/tools/get_floating_ip_pools.py",
143
- "src/mcp_openstack_ops/tools/get_volume_snapshots.py",
144
- "src/mcp_openstack_ops/tools/get_server_groups.py",
145
- "img/screenshot-example-cluster-status.png",
146
- "img/screenshot-openstack-dashboard.png",
147
- "img/MCP-Workflow-of-Quickstart-Tutorial.png",
148
- "img/screenshot-claude-desktop.png",
149
- "img/screenshot-claude-desktop.png:Zone.Identifier",
150
- ".github/copilot-instructions.md",
151
- ".github/dependabot.yml",
152
- ".github/FUNDING.yml",
153
- ".github/workflows/pypi-publish.yml"
134
+ "src/mcp_openstack_ops/tools/set_server_dump.py",
135
+ "src/mcp_openstack_ops/tools/set_server_fixed_ip.py",
136
+ "src/mcp_openstack_ops/tools/set_server_floating_ip.py",
137
+ "src/mcp_openstack_ops/tools/set_server_group.py",
138
+ "src/mcp_openstack_ops/tools/set_server_migration.py",
139
+ "src/mcp_openstack_ops/tools/set_server_network.py",
140
+ "src/mcp_openstack_ops/tools/set_server_properties.py",
141
+ "src/mcp_openstack_ops/tools/set_server_security_group.py",
142
+ "src/mcp_openstack_ops/tools/set_server_volume.py",
143
+ "src/mcp_openstack_ops/tools/set_service_logs.py",
144
+ "src/mcp_openstack_ops/tools/set_services.py",
145
+ "src/mcp_openstack_ops/tools/set_snapshot.py",
146
+ "src/mcp_openstack_ops/tools/set_subnets.py",
147
+ "src/mcp_openstack_ops/tools/set_volume.py",
148
+ "src/mcp_openstack_ops/tools/set_volume_backups.py",
149
+ "src/mcp_openstack_ops/tools/set_volume_groups.py",
150
+ "src/mcp_openstack_ops/tools/set_volume_qos.py",
151
+ "test_compatibility.sh",
152
+ "test_project_isolation.py",
153
+ "uv.lock"
154
154
  ]
155
155
  }
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "3.5.3",
3
+ "distance": 0,
4
+ "node": "g5891bedbc1dc95e0a7e2f897d329c6da15b8be94",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-09-14"
8
+ }
@@ -1,6 +1,12 @@
1
1
  version = 1
2
- revision = 3
2
+ revision = 2
3
3
  requires-python = ">=3.12"
4
+ resolution-markers = [
5
+ "python_full_version >= '3.14' and sys_platform == 'win32'",
6
+ "python_full_version >= '3.14' and sys_platform != 'win32'",
7
+ "python_full_version < '3.14' and sys_platform == 'win32'",
8
+ "python_full_version < '3.14' and sys_platform != 'win32'",
9
+ ]
4
10
 
5
11
  [[package]]
6
12
  name = "aiofile"
@@ -251,55 +257,52 @@ wheels = [
251
257
 
252
258
  [[package]]
253
259
  name = "cryptography"
254
- version = "48.0.1"
260
+ version = "50.0.0"
255
261
  source = { registry = "https://pypi.org/simple" }
256
262
  dependencies = [
257
263
  { name = "cffi", marker = "platform_python_implementation != 'PyPy'" },
258
264
  ]
259
- sdist = { url = "https://files.pythonhosted.org/packages/12/45/870e7f4bef50e5f53b9f51d4428aee5290eedf58ba443f16b1ebb7ab8e66/cryptography-48.0.1.tar.gz", hash = "sha256:266f4ee051abb2f725b74ef8072b521ce1feacf685a3364fa6a6b45548db791a", size = 832989, upload-time = "2026-06-09T22:32:31.8Z" }
260
- wheels = [
261
- { url = "https://files.pythonhosted.org/packages/1b/bc/ee4137cbbe105652c0ee4252792b78fc8e7afa4b8e61d9d5dc05a7f45731/cryptography-48.0.1-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:3e4a1a3232eef2e6c732827d5722db29a0cc8b27af2a4d865b094cf954be9ca1", size = 8008324, upload-time = "2026-06-09T22:31:00.702Z" },
262
- { url = "https://files.pythonhosted.org/packages/d5/85/6379d42181bfc713094f081360fc5784d6c816b599d45e7f082502d173ce/cryptography-48.0.1-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:32143b24adb918f078134e1e230f1eb8cc04886b92c28b5f0041aaf3e5699225", size = 4696243, upload-time = "2026-06-09T22:32:33.446Z" },
263
- { url = "https://files.pythonhosted.org/packages/9c/87/c85d147b53323c7eb4d850920c8901377323c2a0ff8d79c262d4fee89aa2/cryptography-48.0.1-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f0d27a5696721ef7a672b8c810f6aded391058e0b9486e63e6d93baf765da691", size = 4713235, upload-time = "2026-06-09T22:31:40.141Z" },
264
- { url = "https://files.pythonhosted.org/packages/79/58/67cbf8cf1ee7c54b439ca07bbecf8362c07afc11a3724fea70f745784add/cryptography-48.0.1-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:eb86ce1af36fe65041b6db9a8bb064ee621a7e5fded0f80d475ec243477cd242", size = 4702323, upload-time = "2026-06-09T22:31:42.191Z" },
265
- { url = "https://files.pythonhosted.org/packages/89/c6/24266ac10c47f6cd2a865f4446062b466da1d1f10b27189eac00e61bf0c9/cryptography-48.0.1-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:b024e784ad6c077ee0147b35ea9cbfc1e34e1fd4c1dcca214c2794d73a12df08", size = 5300085, upload-time = "2026-06-09T22:31:58.703Z" },
266
- { url = "https://files.pythonhosted.org/packages/d2/bb/cc4b78784f97efc8c5874c2a9743708d172be6663024b34a0467885ae0c8/cryptography-48.0.1-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3752f2dbc8f07a30aad2932c986cea495b03bb554887828225da104f732852b6", size = 4746137, upload-time = "2026-06-09T22:31:31.01Z" },
267
- { url = "https://files.pythonhosted.org/packages/1f/52/0c44de3f5267f8fbe8e835138017522a333436166e406f0db9b9e6e3033f/cryptography-48.0.1-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:bd81490cd5801d755cf97bb68ac191f14b708470b1c7cf4580f669b9c9264cd8", size = 4333867, upload-time = "2026-06-09T22:32:28.096Z" },
268
- { url = "https://files.pythonhosted.org/packages/9a/2e/772d7adbfa931537bc401640b7cac9976bff689bda187833e5d63b428e49/cryptography-48.0.1-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:66fd0771e7b9c6dcd44cf1120690d2338d16d72795cf40cae2786a39eba65429", size = 4701805, upload-time = "2026-06-09T22:31:38.284Z" },
269
- { url = "https://files.pythonhosted.org/packages/f8/a3/b06844f303873493c963caf581c04df31c7035e0c1b0f02c4814d319ec80/cryptography-48.0.1-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:3fd2ca57062b241c856670b073487d2e86c4637937ca5601e48f97bf8e11fc8f", size = 5258461, upload-time = "2026-06-09T22:31:04.187Z" },
270
- { url = "https://files.pythonhosted.org/packages/9f/13/8b765e2e12b07c74941caadb9d1c8fdc006c4dfbf2b8f2d610519758954d/cryptography-48.0.1-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:0ee6ea481db1ab889cba043ec1eda17bb9c1ea79db6722f779c3667f9f70322f", size = 4745488, upload-time = "2026-06-09T22:32:30.07Z" },
271
- { url = "https://files.pythonhosted.org/packages/2e/aa/48972bce55049b32a94f4907eda4d75fa385aad8a39506cc2fc72196ecf0/cryptography-48.0.1-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f2ceef93cb096aa3c4cc4b5c94ca6131f9196d28c64d6111533402a9b2054d41", size = 4830256, upload-time = "2026-06-09T22:31:43.868Z" },
272
- { url = "https://files.pythonhosted.org/packages/47/a2/e5079a032fb85cf6005046ca92bbd78b0c82dad2b5751ab8c311659da06f/cryptography-48.0.1-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9bd3f92d76217892b15df84ca256c2c113d386fdda7a7d8691aeeced976507c6", size = 4979117, upload-time = "2026-06-09T22:31:05.845Z" },
273
- { url = "https://files.pythonhosted.org/packages/b7/a0/8f50cae9c74e718ed769d63ed5c74bd0ea830c9550a74629cebd1b9c7bc7/cryptography-48.0.1-cp311-abi3-win32.whl", hash = "sha256:b9a32b876490d66c8bcc9963ef220199569748434ab01a9d6aaeabf88e7f5158", size = 3304154, upload-time = "2026-06-09T22:32:16.845Z" },
274
- { url = "https://files.pythonhosted.org/packages/c5/69/0572c77dbace6fef72f33755bd52ea399c71367250d366237f8691826b9e/cryptography-48.0.1-cp311-abi3-win_amd64.whl", hash = "sha256:39489bfca54c7a1f6b297efcd8bc608ab92d16c4ca631b0cad4da46724588b24", size = 3817138, upload-time = "2026-06-09T22:32:00.388Z" },
275
- { url = "https://files.pythonhosted.org/packages/42/06/3e768b4c3bc78201583fa35a0e18f640dd782ff41afba88f8545481a8874/cryptography-48.0.1-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:f817adc181390bd54f2f700107a7419040fb7c1bdf2fc26f36551a06a68c3345", size = 7989830, upload-time = "2026-06-09T22:31:07.8Z" },
276
- { url = "https://files.pythonhosted.org/packages/8a/13/6476736484b94041110c8340a3eb63962fea4975baea8cb4a512adb44d4d/cryptography-48.0.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d5d30989c6917b478b5817902e85fddaea2261efa8648383d965381ccb9e1ac4", size = 4689201, upload-time = "2026-06-09T22:31:09.745Z" },
277
- { url = "https://files.pythonhosted.org/packages/79/62/65a87f34d2a431546e2509b85d55e8c90df86d668f6731da64d538512ac2/cryptography-48.0.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:df637c05205ea7c1d7fbcbe54bbfea648a52951155f997af13d895d0ecc96991", size = 4702822, upload-time = "2026-06-09T22:32:24.409Z" },
278
- { url = "https://files.pythonhosted.org/packages/7f/59/810b5204b0a9b10f4b6bc06bd551a8b609803cd931806bc3b71884b225e5/cryptography-48.0.1-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:869c3b8a53bfe27147832df48b32adadf558249d50e76cb3769d40e986b13265", size = 4694875, upload-time = "2026-06-09T22:32:08.737Z" },
279
- { url = "https://files.pythonhosted.org/packages/24/dc/d8ca05ffea724eec6d232ea6f18e74c269eb6bdfdcc9bfba689790d1325f/cryptography-48.0.1-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:e361afba8918070d376df76f408a4f67fec0ee9cff81a99e48fe9a233ef59e17", size = 5290385, upload-time = "2026-06-09T22:31:15.212Z" },
280
- { url = "https://files.pythonhosted.org/packages/03/8c/3be6cb4da181f5bb6c19cf560c2359d60644a6b5fc5b57854e528f47b296/cryptography-48.0.1-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:d069066deead00ac7f090be101be875a06855908f7ec004c27b8fefb4acfb411", size = 4737082, upload-time = "2026-06-09T22:32:22.66Z" },
281
- { url = "https://files.pythonhosted.org/packages/aa/f6/d5f60a5a1434dbfd949e227fd0065d194c7e6b6ac526b17f5c06152b8231/cryptography-48.0.1-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:09f73a725d582cef64b91281a322cd798d14a33b2b6f2b7ad9531dc336d84c02", size = 4325328, upload-time = "2026-06-09T22:32:10.777Z" },
282
- { url = "https://files.pythonhosted.org/packages/17/b7/ba75dd947a14b6ad907b01ae8f6b5b348cdd1b48142f0063dee9e20c1d9d/cryptography-48.0.1-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:15254441469dd6bf027039453288e2072124f8b6603563f5d759e1c9b69273fa", size = 4694530, upload-time = "2026-06-09T22:31:53.105Z" },
283
- { url = "https://files.pythonhosted.org/packages/62/29/50d6b9e8aff12d8b67afaeb3569335e32dc83a5723e3bbded24fdac9f809/cryptography-48.0.1-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:8ace4507d1e6533c125f4fac754f8bb8b6a74c08e92179dabd7e16571a3efbf3", size = 5245046, upload-time = "2026-06-09T22:31:25.774Z" },
284
- { url = "https://files.pythonhosted.org/packages/9f/04/618f4115cfc0add0838c82507aa18a346089428da8653ad38b3ff36f5cb3/cryptography-48.0.1-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:b4e391975f038e66432328639620a4aff2d307513b004f1ca06d6225bced815c", size = 4736660, upload-time = "2026-06-09T22:32:12.676Z" },
285
- { url = "https://files.pythonhosted.org/packages/24/9c/06e062462a0de28a3b3911322eded4c16deb9f441b1b7575d3dc59488ab5/cryptography-48.0.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:42fcd8e26fe555d9b3577a135f5091fefa0aa4e99129c23fb56787a1bd4ada72", size = 4822229, upload-time = "2026-06-09T22:31:17.062Z" },
286
- { url = "https://files.pythonhosted.org/packages/f4/be/0561971eaaee4b8a0e7d5113c536921063ab91aaf23278ac374eaf881e11/cryptography-48.0.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1400da5e32a43253392277eac7490a60e497d810a63dd5608d71bbd7af507c9", size = 4966364, upload-time = "2026-06-09T22:31:32.842Z" },
287
- { url = "https://files.pythonhosted.org/packages/a4/27/728c77876f12b000820b69ae490f3c4083775e79e07827e9e60be07ad209/cryptography-48.0.1-cp314-cp314t-win32.whl", hash = "sha256:0df56b056bc17c1b7d6821dfa65216e62bd232d8ab05eb3db44e71d235651471", size = 3278498, upload-time = "2026-06-09T22:31:29.154Z" },
288
- { url = "https://files.pythonhosted.org/packages/06/e3/79a612c6d7b1e6ee0edd43633d53035bec2cfb78c82b76f7864f39e36f34/cryptography-48.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:9de21387aa95e2a895823d0745b430bed4f33503ba9ab5e0b5311f33e37d66d2", size = 3798790, upload-time = "2026-06-09T22:31:56.697Z" },
289
- { url = "https://files.pythonhosted.org/packages/ca/6c/00fa2a95997164c8b2072ce327c23d4ab20809ccc323ea5fab91e53a4bba/cryptography-48.0.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:4fdc69f8e4316bcf0c8c8ec1f26f285d12e8142d88d96c876a59a03be3f6ae67", size = 7987408, upload-time = "2026-06-09T22:32:20.777Z" },
290
- { url = "https://files.pythonhosted.org/packages/b0/d9/45f309a7e4e5f3f8f121d6d3be9e94024a7726ec598d6e08ae04edb2f04d/cryptography-48.0.1-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:48fe40804d4caa2288f24e70ca8c64c42dd826da0ad7e4f1b41b2128d679e6c8", size = 4690196, upload-time = "2026-06-09T22:31:54.74Z" },
291
- { url = "https://files.pythonhosted.org/packages/5f/9f/a1bc8bcc798811b8527eb374bbccf30a3f3e806829d967118222bf1125eb/cryptography-48.0.1-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:86be3b1b0b6bf09482fb50a979c508d2950ed95f5621ec77f4e385962006b83a", size = 4696782, upload-time = "2026-06-09T22:31:45.615Z" },
292
- { url = "https://files.pythonhosted.org/packages/66/c2/81a4fb4e4373c500bb526bc337ac5719dd31dd15b970b84a238168c6aa08/cryptography-48.0.1-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:4ab0a343c807bbcd90c971cd1ecf072937cd01847a9e002bef88fb47ac6be577", size = 4696618, upload-time = "2026-06-09T22:31:11.564Z" },
293
- { url = "https://files.pythonhosted.org/packages/e5/0b/aa68b221dde92d09cb29a024ede17550ee21e77a404e59fc093c82bb51e1/cryptography-48.0.1-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:9621de99d2da096006b629979efd8ae7eb2d8b822488d0c89ee4000c306c59b1", size = 5289970, upload-time = "2026-06-09T22:31:20.368Z" },
294
- { url = "https://files.pythonhosted.org/packages/78/13/fba657f958d2af66ea959a4ba01212632089249d34af1ae48054136344d7/cryptography-48.0.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:88c852a0ae366e262e5a1744b685e6a433dc8788dd2a277e418bf4904203609d", size = 4731873, upload-time = "2026-06-09T22:31:22.253Z" },
295
- { url = "https://files.pythonhosted.org/packages/4c/4c/9a964756d24a26b3e34dfcb16f961b89838786e6700b635b0d1e3adff4b6/cryptography-48.0.1-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:43c5835e2cb98c8733d86f57d6fc879b613f5c3478607281c3e36daffc6dd8a6", size = 4330804, upload-time = "2026-06-09T22:31:36.56Z" },
296
- { url = "https://files.pythonhosted.org/packages/4b/0f/a10f3a6eb12950a10e3a874070283aa2dd5875b2bfd15fad8a3e17b3f13e/cryptography-48.0.1-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:fe0180af5bf9236518a087e35bf2d9a347d5f5f51e63c579d683ddff424e3d46", size = 4696217, upload-time = "2026-06-09T22:31:13.351Z" },
297
- { url = "https://files.pythonhosted.org/packages/f3/6f/5cd12f951165ea73ef85266775d97e4c763b2474ccfd816dd69d3a18d6f8/cryptography-48.0.1-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:b7a2d1a937a738a881737cec135a38bb61470589b17515b9f73f571d0ae10401", size = 5245252, upload-time = "2026-06-09T22:32:02.193Z" },
298
- { url = "https://files.pythonhosted.org/packages/68/ab/8aaa12e4516ec4464033ab79b6f3b592bd5a92102467c4ace8a0d970203f/cryptography-48.0.1-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:b74ca3b8e5ecdd833bf6a002ca41b4793bb27fb8f1c06ffaf2643c9e9140e31b", size = 4731388, upload-time = "2026-06-09T22:32:04.019Z" },
299
- { url = "https://files.pythonhosted.org/packages/1b/24/50027ea4dca85ec1f40688f3c24fb32ccacd520583c9592c3cc95628e6fb/cryptography-48.0.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2c37f2461406063b417837f5f3daab668652acd82423efcd7f0a9f04be972de1", size = 4824186, upload-time = "2026-06-09T22:32:18.707Z" },
300
- { url = "https://files.pythonhosted.org/packages/52/41/04cb5eb17085ade6f50cc611fb657df6a0f5885350de8764ece89c050197/cryptography-48.0.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:86fe77abb1bd87afb251d4d02ada7ecf53a32cee9b67d976abb2e45a13297475", size = 4964539, upload-time = "2026-06-09T22:31:18.793Z" },
301
- { url = "https://files.pythonhosted.org/packages/36/bf/ed70785c496e89d7e73b7cda2d21f2447fd6d4e821714b8d04ff217fed92/cryptography-48.0.1-cp39-abi3-win32.whl", hash = "sha256:6b2c0c3e6ccf3ade7750f836ef3ee36eea250cc467d45c256895573ac08cc6f1", size = 3282307, upload-time = "2026-06-09T22:30:53.162Z" },
302
- { url = "https://files.pythonhosted.org/packages/b3/ff/371ea7d252656ee1eb6d83eeeef3d1d0c6baf1d6497687d081ea03814670/cryptography-48.0.1-cp39-abi3-win_amd64.whl", hash = "sha256:9a49ca6c81417f6a5edb50375a60cccdd70fa0a91a5211829dbea74eba94d2ac", size = 3793408, upload-time = "2026-06-09T22:32:15.191Z" },
265
+ sdist = { url = "https://files.pythonhosted.org/packages/de/41/6cbdcf9142d00fe82836fbb51e503e58088575cf7a0fe1dbff6695bf0840/cryptography-50.0.0.tar.gz", hash = "sha256:eeac2acb5a20ed25e0ad6d1df9891a520b78b404266b6d11778f25d5d691a6c9", size = 880201, upload-time = "2026-07-31T14:25:10.11Z" }
266
+ wheels = [
267
+ { url = "https://files.pythonhosted.org/packages/c5/5c/59086b4aac5e879d38ddbcf74e4be7ade89cebc3eb199a55da998c3bb46a/cryptography-50.0.0-cp311-abi3-macosx_11_0_arm64.whl", hash = "sha256:031e2d5dd4bb9caa3ca9c82e5a197fd8ae680232cee62603d1a813f3f07e3d03", size = 4001252, upload-time = "2026-07-31T14:23:33.331Z" },
268
+ { url = "https://files.pythonhosted.org/packages/57/ef/8f2df13c7216bcad3e1c74e07f6e193d93e998e114f524a53877c9af27ad/cryptography-50.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fd9192b7b70c573d7f214eb1ae35e00d359f6f5e4b27c7e21e30de1fc6204645", size = 4719554, upload-time = "2026-07-31T14:23:35.611Z" },
269
+ { url = "https://files.pythonhosted.org/packages/d9/41/029086c34d91052fc3b88bcc8056f709a7c915c7a23b235a54eb800b1c97/cryptography-50.0.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:06a32a980526a6ab9a4b9bf8f7385800791e2bb960903cb6b530e4817509a3b7", size = 4702130, upload-time = "2026-07-31T14:23:37.635Z" },
270
+ { url = "https://files.pythonhosted.org/packages/7d/ff/b6ce0954962e7f7b969f850a883744197bb3910bdfd7b6da162eab7d9f68/cryptography-50.0.0-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:a1b30560f2acc95aa8b2e06e716a13dbfc97314747b80d9707e307f77b40d6b3", size = 4725244, upload-time = "2026-07-31T14:23:39.471Z" },
271
+ { url = "https://files.pythonhosted.org/packages/06/1e/63a1027cb7fec360a182208e1b7767d5aa1fe57be3d6aa856e69a321edc0/cryptography-50.0.0-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:8d89f3976b10b4ce31118de72329025f70d2c6ead14a8217c5514dd2c6d5a78f", size = 5342265, upload-time = "2026-07-31T14:23:41.286Z" },
272
+ { url = "https://files.pythonhosted.org/packages/6b/72/a1116d683a6d7ece94590013882515de087edf9ef0e6292aae615a44df73/cryptography-50.0.0-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:b42a28c1844fd9de8f3f7d540e36b66f3a9c83fceac7170ebc7a6a19edd9dcae", size = 4734609, upload-time = "2026-07-31T14:23:43.139Z" },
273
+ { url = "https://files.pythonhosted.org/packages/15/37/36a9c479bbe49acea2636c7fd3360d20f7b7e079c300352011c44850b181/cryptography-50.0.0-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:900131fafd8aead39ac7dd3a7e833be754c17a95cfd91221636949fe4eb0aa8a", size = 4356517, upload-time = "2026-07-31T14:23:44.939Z" },
274
+ { url = "https://files.pythonhosted.org/packages/32/98/8a151d64367204cbc63ec65d37502f1d9c53cf4bfc6ec3c532614dbec60d/cryptography-50.0.0-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:07949c449a1abcf60d1ee6e88956d89404c7df3c8258f46589e912988e551987", size = 4724529, upload-time = "2026-07-31T14:23:46.93Z" },
275
+ { url = "https://files.pythonhosted.org/packages/22/f6/ec13b470172126464a86bf54d2294a46d29837fc51ba3e45d4047946fb5e/cryptography-50.0.0-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:f89831ef99dd7dd169ab06d63a831adb9e20a87aac6d380266bbda5823349169", size = 5299852, upload-time = "2026-07-31T14:23:48.851Z" },
276
+ { url = "https://files.pythonhosted.org/packages/da/3a/f05e32c99d440c9bb891ea0e36c9091891e36be5a9a87ab2ee6ea20729f6/cryptography-50.0.0-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:82148ec5bddac30b51a5b3c1945075f896fa022cb93f8e4a01e9f6ee95292c5f", size = 4734462, upload-time = "2026-07-31T14:23:50.861Z" },
277
+ { url = "https://files.pythonhosted.org/packages/ca/dc/bd72b26be8953f80625f63151efd38eee71c76ca6cf591c08ff34615a79e/cryptography-50.0.0-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1489e263a8048bb8b6a8bac662eb2d402ea5d2b7b4699b72f385f1e2772db105", size = 4852708, upload-time = "2026-07-31T14:23:52.715Z" },
278
+ { url = "https://files.pythonhosted.org/packages/27/20/c930314a2ab476d15dec966ec87e2e9637bb02b06106b12c0396c57bb603/cryptography-50.0.0-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7cec5b856506da6defb290f30c9ee687d5f5e8cb0bd3f6459dde43b0b4fa40ef", size = 5004179, upload-time = "2026-07-31T14:23:54.887Z" },
279
+ { url = "https://files.pythonhosted.org/packages/32/2e/c9db68a0c4bfa28e310707527c0ee3a2bd254104d2e02e68f368e197aa4c/cryptography-50.0.0-cp311-abi3-win_amd64.whl", hash = "sha256:bd1c592e4d5974f0d08d4888e432157adba757c66da0246918e43677fafa2d30", size = 3840395, upload-time = "2026-07-31T14:23:56.677Z" },
280
+ { url = "https://files.pythonhosted.org/packages/c3/fb/951032a3bf22a5697c83183fb6294a4843772947a70e616c57b3ff5f522e/cryptography-50.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:49e7d93abdbd2990caced757e5fade25302f719c3c8fb6e6fff2dde98999fc41", size = 3989258, upload-time = "2026-07-31T14:23:58.881Z" },
281
+ { url = "https://files.pythonhosted.org/packages/d4/67/91eb047e69c5e845f2f14b8a2e4a1aab0f283cb885531e9e22c8adb176bc/cryptography-50.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:19736989797678c6af1e55cd49055cdbcb55d8f6b5583ac5335f933aba9101dc", size = 4700648, upload-time = "2026-07-31T14:24:00.702Z" },
282
+ { url = "https://files.pythonhosted.org/packages/30/82/85f0f7425c856b9f96459411eb12e74ef72df9caf6f8f15bf23a33ff131f/cryptography-50.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:80b63928fa35083b33966ce1efb70e5b9607181e49dcd1c22c8c005e319f667f", size = 4682442, upload-time = "2026-07-31T14:24:02.538Z" },
283
+ { url = "https://files.pythonhosted.org/packages/1a/28/b555a365adff1cca2fbe7b9e487d68a40de6bc67ff2cb587473eb43de0e7/cryptography-50.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:d58c3db7cd6eed54e6c06744db55456b65ebd7492ddeae9c1e93cfca7aa857d3", size = 4707596, upload-time = "2026-07-31T14:24:04.394Z" },
284
+ { url = "https://files.pythonhosted.org/packages/72/d8/f52538140cc719df62a01cf87d1c7142318d235817109d6f4054d7c352d6/cryptography-50.0.0-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:df2a58a472f332225671c35b0a830208b86d004f82baa8530fa3782c85646533", size = 5314552, upload-time = "2026-07-31T14:24:06.31Z" },
285
+ { url = "https://files.pythonhosted.org/packages/38/14/6120e5bd7c5aa022ad15424ba4d5c5269d0d9448ed4d55e492ea91e3c1c4/cryptography-50.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:11b74db56cdbe3cdee6e3f6982ecb70334fa10dce99ed58bf7894aaaa3b2a037", size = 4717113, upload-time = "2026-07-31T14:24:08.349Z" },
286
+ { url = "https://files.pythonhosted.org/packages/fa/71/190bf38c3ee2e0f8efc9860ae100c9df4169742eef274b91e7aa1cb133b9/cryptography-50.0.0-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:f59e38625469987d7ef6d495323c55e7db6c212eaf6112267e0d3b565a2e9c9f", size = 4338580, upload-time = "2026-07-31T14:24:10.227Z" },
287
+ { url = "https://files.pythonhosted.org/packages/3a/63/504ccfbbe61fd8aa983f7f146399cdf034c72c2fc55f5b2dfdcdcdb20c99/cryptography-50.0.0-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:ecfed7367f965a0328cfbdd70da860f15441f002f613185668c6e6ebf5a0ac11", size = 4707038, upload-time = "2026-07-31T14:24:12.169Z" },
288
+ { url = "https://files.pythonhosted.org/packages/01/77/2cf79bbfc4d12ca106437a6e170d6aaa01a373e93093118aaaef0e801bd4/cryptography-50.0.0-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:9aa87839c383bdbab6ef865787a1fb877af8dd03464c4400322726feaaadfc6d", size = 5273110, upload-time = "2026-07-31T14:24:14.38Z" },
289
+ { url = "https://files.pythonhosted.org/packages/e5/45/8aae2972c520145377ea3559a605a899bebe227bf070b33cdb445929a9b9/cryptography-50.0.0-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:6ba6a53445bd3cfa809ef3ef5f1589aa6ba08784a1d962bf47d0940e871dab1c", size = 4716439, upload-time = "2026-07-31T14:24:16.415Z" },
290
+ { url = "https://files.pythonhosted.org/packages/7b/20/4fe50b619a48c2525cc46e2dbc1ac490708d704be5d467bdaac6dc955682/cryptography-50.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:3f5735ffe4996d28b809371756219f5354864902a3b9e7c0b9ee87041209fc9c", size = 4837383, upload-time = "2026-07-31T14:24:18.553Z" },
291
+ { url = "https://files.pythonhosted.org/packages/92/91/3a31366e183343d3703f8995c095f5734676bd6938118047e50fcf279eb4/cryptography-50.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:1b4a266766514614f8aa60416e71f2fc6e575d36e7bdc90f644fadb2f4b75b95", size = 4985772, upload-time = "2026-07-31T14:24:20.385Z" },
292
+ { url = "https://files.pythonhosted.org/packages/74/9a/02ffe35b2853d121689871eb5dce862092562b3a1ed5cc98f1aaed441506/cryptography-50.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:12b9c6996425c76ea6c457ace4f3073e715b8c545add07cd1a8f3a4f90691269", size = 3816291, upload-time = "2026-07-31T14:24:22.125Z" },
293
+ { url = "https://files.pythonhosted.org/packages/03/37/73d005be173aff344af30e9fd2a576575cb2391a7101d9cd3842e1fa8cce/cryptography-50.0.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:ccdc4a71a4dabae05de219404f9f4abc38e3b58422177ff93d0da05967dafa07", size = 4036009, upload-time = "2026-07-31T14:24:24.122Z" },
294
+ { url = "https://files.pythonhosted.org/packages/ff/c6/7a6202a534e32103a285b7834a120869557fe198d51d7cfe59754c8bda9c/cryptography-50.0.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:910e1d2668e7de9648f2bcee30e180db2a6b15c30f887d7c4c93ddf96e3992e3", size = 4745252, upload-time = "2026-07-31T14:24:26.118Z" },
295
+ { url = "https://files.pythonhosted.org/packages/85/4f/0fa8c2f4428198f15d9ff8d63400e27afbf94ce833f6108da1eb3753f945/cryptography-50.0.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a91296cb61e8df6f86d0c19cc4068228da256bf59bf86049fbd821084565327f", size = 4728939, upload-time = "2026-07-31T14:24:27.994Z" },
296
+ { url = "https://files.pythonhosted.org/packages/d1/63/54dd723490ba2dc09b299682c10b38db38f159728bcaae8c591b8af2f22d/cryptography-50.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:e722f16708d854fe924790e051061f6704a472c3bac347b6fd88033ea8dd0dc5", size = 4748483, upload-time = "2026-07-31T14:24:30.254Z" },
297
+ { url = "https://files.pythonhosted.org/packages/1d/dd/7c77d26285cc7f6991efce64a0f5b4f9383bfa5dd8c5033003eaf7db4cdb/cryptography-50.0.0-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:d764dcf130c428ef66786f866dd750f53182bc608813489915e9fc106bb0c82f", size = 5367599, upload-time = "2026-07-31T14:24:32.457Z" },
298
+ { url = "https://files.pythonhosted.org/packages/46/c9/f60aed34c013f317f92817b6c171c2d22a78270fa41109bd4b08af26b194/cryptography-50.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:105110f43a471dbd0060b9c9516cb8a6a79233631a04cc2ba16f28323ac6e025", size = 4762647, upload-time = "2026-07-31T14:24:34.599Z" },
299
+ { url = "https://files.pythonhosted.org/packages/be/f3/f9a0173b139372c3a48ed98154b45cc6b9de17c789d5ab552e621c293609/cryptography-50.0.0-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:828743d939e9629bc267b8e2d08d8bb67cd4319c771a33d4b18b22dd8fb7440a", size = 4385197, upload-time = "2026-07-31T14:24:36.647Z" },
300
+ { url = "https://files.pythonhosted.org/packages/d8/36/83bb81f6e569bc38e1e4a7bc80f29b46bb9601920bc455fc8e888f5d5742/cryptography-50.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:2a8183b489dc1f7f80f135780fadc1108f14b31b8a40411c7a5b17425f65f28b", size = 4748095, upload-time = "2026-07-31T14:24:39.493Z" },
301
+ { url = "https://files.pythonhosted.org/packages/6b/16/d3008eff98c764979865834c3d386d4fd041b5f52e7f34fc29ac1a5eb515/cryptography-50.0.0-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:6e7d61120573a7f2cd94cc095f9e81f6967c61ccdf194285aa143ecec8e0b708", size = 5325948, upload-time = "2026-07-31T14:24:41.556Z" },
302
+ { url = "https://files.pythonhosted.org/packages/9c/f8/d97f9603efda3888187bfdb893f26c41be4735c10631d05d284ee6b047c4/cryptography-50.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:37fdb0d0111f1e2ff07139dfb79f1b49531f8e213c46f1163dd7642979b58c47", size = 4762400, upload-time = "2026-07-31T14:24:43.636Z" },
303
+ { url = "https://files.pythonhosted.org/packages/64/a2/4615c8f7d81a00b1d6e6afe19f694e1543582349fb5f4076f6cb5dc36485/cryptography-50.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c87f62a3d3b9888ed0fdde100ec06aa61ca9cd44bad9057d1dff9a516b5f5bb9", size = 4878208, upload-time = "2026-07-31T14:24:45.522Z" },
304
+ { url = "https://files.pythonhosted.org/packages/d2/1a/efcfb02f91407149a0dacffffab791f7e19bf6385f63b3666dc8b5e5c9c8/cryptography-50.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:65c2c3add92b45fd0709db8594536aea39c2a67af0e27ffcf049c498501140b7", size = 5037050, upload-time = "2026-07-31T14:24:47.697Z" },
305
+ { url = "https://files.pythonhosted.org/packages/57/30/4a22984d4f1bdfb8c054f07a92bc176b97a3134cc1d6c4b3bffb1f3688b4/cryptography-50.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:d24fead1d4d076e1bfb006dcec392074a3cd8d7b4fc8a595aa64073b2b7a96ba", size = 3874135, upload-time = "2026-07-31T14:24:50.085Z" },
303
306
  ]
304
307
 
305
308
  [[package]]
@@ -706,7 +709,7 @@ wheels = [
706
709
 
707
710
  [[package]]
708
711
  name = "mcp"
709
- version = "1.26.0"
712
+ version = "1.28.1"
710
713
  source = { registry = "https://pypi.org/simple" }
711
714
  dependencies = [
712
715
  { name = "anyio" },
@@ -724,9 +727,9 @@ dependencies = [
724
727
  { name = "typing-inspection" },
725
728
  { name = "uvicorn", marker = "sys_platform != 'emscripten'" },
726
729
  ]
727
- sdist = { url = "https://files.pythonhosted.org/packages/fc/6d/62e76bbb8144d6ed86e202b5edd8a4cb631e7c8130f3f4893c3f90262b10/mcp-1.26.0.tar.gz", hash = "sha256:db6e2ef491eecc1a0d93711a76f28dec2e05999f93afd48795da1c1137142c66", size = 608005, upload-time = "2026-01-24T19:40:32.468Z" }
730
+ sdist = { url = "https://files.pythonhosted.org/packages/6e/77/9450b8f251a13affb6281997d0523c4615f8a8b35d0b21ff30db3a5aac9d/mcp-1.28.1.tar.gz", hash = "sha256:d51e36a5f5644faea4f85ea649bfffa6bc6c26770d42798ad6a3de3d2ba69683", size = 638501, upload-time = "2026-06-26T12:57:29.093Z" }
728
731
  wheels = [
729
- { url = "https://files.pythonhosted.org/packages/fd/d9/eaa1f80170d2b7c5ba23f3b59f766f3a0bb41155fbc32a69adfa1adaaef9/mcp-1.26.0-py3-none-any.whl", hash = "sha256:904a21c33c25aa98ddbeb47273033c435e595bbacfdb177f4bd87f6dceebe1ca", size = 233615, upload-time = "2026-01-24T19:40:30.652Z" },
732
+ { url = "https://files.pythonhosted.org/packages/e2/5e/d118fce19f87a2e7d8101c35c8ae0ec289098a4df0ff244cec23e415aca0/mcp-1.28.1-py3-none-any.whl", hash = "sha256:2726bca5e7193f61c5dde8b12500a6de2d9acf6d1a1c0be9e8c2e706437991df", size = 222620, upload-time = "2026-06-26T12:57:27.218Z" },
730
733
  ]
731
734
 
732
735
  [[package]]
@@ -749,7 +752,7 @@ dev = [
749
752
  [package.metadata]
750
753
  requires-dist = [
751
754
  { name = "fastmcp", specifier = ">=2.12.3" },
752
- { name = "openstacksdk", specifier = ">=4.1.0,<=4.11.0" },
755
+ { name = "openstacksdk", specifier = ">=4.1.0,<=4.20.0" },
753
756
  { name = "pre-commit", specifier = ">=4.6.0" },
754
757
  { name = "pytest", marker = "extra == 'dev'", specifier = ">=7.0.0" },
755
758
  { name = "pytest-asyncio", marker = "extra == 'dev'", specifier = ">=0.21.0" },
@@ -1392,8 +1395,8 @@ name = "secretstorage"
1392
1395
  version = "3.5.0"
1393
1396
  source = { registry = "https://pypi.org/simple" }
1394
1397
  dependencies = [
1395
- { name = "cryptography" },
1396
- { name = "jeepney" },
1398
+ { name = "cryptography", marker = "sys_platform != 'win32'" },
1399
+ { name = "jeepney", marker = "sys_platform != 'win32'" },
1397
1400
  ]
1398
1401
  sdist = { url = "https://files.pythonhosted.org/packages/1c/03/e834bcd866f2f8a49a85eaff47340affa3bfa391ee9912a952a1faa68c7b/secretstorage-3.5.0.tar.gz", hash = "sha256:f04b8e4689cbce351744d5537bf6b1329c6fc68f91fa666f60a380edddcd11be", size = 19884, upload-time = "2025-11-23T19:02:53.191Z" }
1399
1402
  wheels = [
@@ -1402,11 +1405,11 @@ wheels = [
1402
1405
 
1403
1406
  [[package]]
1404
1407
  name = "setuptools"
1405
- version = "80.10.2"
1408
+ version = "84.0.0"
1406
1409
  source = { registry = "https://pypi.org/simple" }
1407
- sdist = { url = "https://files.pythonhosted.org/packages/76/95/faf61eb8363f26aa7e1d762267a8d602a1b26d4f3a1e758e92cb3cb8b054/setuptools-80.10.2.tar.gz", hash = "sha256:8b0e9d10c784bf7d262c4e5ec5d4ec94127ce206e8738f29a437945fbc219b70", size = 1200343, upload-time = "2026-01-25T22:38:17.252Z" }
1410
+ 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" }
1408
1411
  wheels = [
1409
- { url = "https://files.pythonhosted.org/packages/94/b8/f1f62a5e3c0ad2ff1d189590bfa4c46b4f3b6e49cef6f26c6ee4e575394d/setuptools-80.10.2-py3-none-any.whl", hash = "sha256:95b30ddfb717250edb492926c92b5221f7ef3fbcc2b07579bcd4a27da21d0173", size = 1064234, upload-time = "2026-01-25T22:38:15.216Z" },
1412
+ { 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" },
1410
1413
  ]
1411
1414
 
1412
1415
  [[package]]
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "3.5.2",
3
- "distance": 0,
4
- "node": "g3f82bedc589a5c86a28e178e8b85f02234924a4e",
5
- "dirty": false,
6
- "branch": "HEAD",
7
- "node_date": "2026-07-04"
8
- }