{"library":"python-swiftclient","title":"OpenStack Object Storage (Swift) Client","description":"python-swiftclient is the official Python client library for interacting with the OpenStack Object Storage (Swift) API. It provides both a low-level Connection API for fine-grained control and a higher-level SwiftService API for common operations, including a command-line interface. Currently at version 4.10.0, the library is actively maintained with frequent updates, typically aligning with OpenStack release cycles.","language":"python","status":"active","last_verified":"Sat May 16","install":{"commands":["pip install python-swiftclient"],"cli":{"name":"swift","version":"python-swiftclient 4.10.0"}},"imports":["from swiftclient.client import Connection","from swiftclient.service import SwiftService"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom swiftclient.client import Connection\n\n# --- Environment Variables for Authentication ---\n# Set these environment variables before running, e.g., using an OpenStack RC file\n# or directly:\n# export OS_AUTH_URL=\"http://your-auth-url:5000/v3\"\n# export OS_USERNAME=\"your-username\"\n# export OS_PASSWORD=\"your-password\"\n# export OS_PROJECT_NAME=\"your-project-name\"\n# export OS_USER_DOMAIN_NAME=\"Default\" # Or your specific user domain\n# export OS_PROJECT_DOMAIN_NAME=\"Default\" # Or your specific project domain\n# export OS_REGION_NAME=\"RegionOne\" # Or your specific region\n\nauth_url = os.environ.get('OS_AUTH_URL', 'http://localhost:5000/v3')\nusername = os.environ.get('OS_USERNAME', 'test_user')\npassword = os.environ.get('OS_PASSWORD', 'test_password')\nproject_name = os.environ.get('OS_PROJECT_NAME', 'test_project')\nuser_domain_name = os.environ.get('OS_USER_DOMAIN_NAME', 'Default')\nproject_domain_name = os.environ.get('OS_PROJECT_DOMAIN_NAME', 'Default')\nregion_name = os.environ.get('OS_REGION_NAME', 'RegionOne')\n\n# Ensure auth_version is specified, especially for Keystone v3\n# os_options are crucial for domain-scoped authentication\nos_options = {\n    'user_domain_name': user_domain_name,\n    'project_domain_name': project_domain_name,\n    'project_name': project_name,\n    'region_name': region_name\n}\n\ntry:\n    # Establish connection\n    conn = Connection(\n        authurl=auth_url,\n        user=username,\n        key=password,\n        os_options=os_options,\n        auth_version='3' # Crucial: always specify auth_version for v3 or v2 auth\n    )\n\n    # Example: List containers\n    _resp_headers, containers = conn.get_account()\n    print(f\"Successfully connected. Found {len(containers)} containers:\")\n    for container in containers:\n        print(f\"  - {container['name']} (Bytes: {container['bytes']}, Count: {container['count']})\")\n\n    # Example: Create a new container\n    container_name = \"my-new-test-container\"\n    try:\n        conn.put_container(container_name)\n        print(f\"Container '{container_name}' created (or already exists).\")\n    except Exception as e:\n        print(f\"Error creating container {container_name}: {e}\")\n    \n    # Example: Upload an object (simple string content)\n    object_name = \"hello_world.txt\"\n    object_content = b\"Hello, Swift Object Storage!\"\n    try:\n        conn.put_object(container_name, object_name, object_content)\n        print(f\"Object '{object_name}' uploaded to '{container_name}'.\")\n    except Exception as e:\n        print(f\"Error uploading object {object_name}: {e}\")\n\nfinally:\n    # Always close the connection\n    if 'conn' in locals():\n        conn.close()\n        print(\"Connection closed.\")\n","lang":"python","description":"This quickstart demonstrates how to establish a connection to OpenStack Swift using the low-level `Connection` API, authenticate, list existing containers, create a new container, and upload an object. It relies on standard OpenStack environment variables for authentication details to avoid hardcoding credentials.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-16","installed_version":"4.10.0","pypi_latest":"4.10.0","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2.2,"avg_import_s":0.6,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"python-swiftclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.56,"mem_mb":10,"disk_size":"21.8M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"python-swiftclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.2,"import_time_s":0.4,"mem_mb":10,"disk_size":"22M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"python-swiftclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.73,"mem_mb":11.1,"disk_size":"24.0M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"python-swiftclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.2,"import_time_s":0.63,"mem_mb":11.1,"disk_size":"24M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"python-swiftclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.65,"mem_mb":11.6,"disk_size":"15.7M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"python-swiftclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2,"import_time_s":0.69,"mem_mb":11.6,"disk_size":"16M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"python-swiftclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.64,"mem_mb":11.9,"disk_size":"15.5M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"python-swiftclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2,"import_time_s":0.65,"mem_mb":11.9,"disk_size":"16M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"python-swiftclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.52,"mem_mb":9.6,"disk_size":"21.0M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"python-swiftclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.5,"import_time_s":0.49,"mem_mb":9.7,"disk_size":"22M"}]}}