{"library":"docker-pycreds","title":"docker-pycreds: Python bindings for the Docker credentials store API","description":"docker-pycreds provides Python bindings for the Docker credentials store API. It enables programmatic interaction with platform-specific credential helpers (e.g., `docker-credential-secretservice`) to securely store and retrieve Docker authentication tokens. The current version is 0.4.0, released on November 28, 2018. Due to its last update date, it has an infrequent release cadence and appears to be in maintenance mode.","language":"python","status":"maintenance","last_verified":"Wed May 20","install":{"commands":["pip install docker-pycreds"],"cli":null},"imports":["from dockerpycreds import Store"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import dockerpycreds\nimport os\n\n# Configure the credential store backend. Common options include:\n# 'secretservice' (Linux), 'osxkeychain' (macOS), 'wincred' (Windows)\n# If you have a custom credential helper, use its name (e.g., 'ecr-login')\n# Ensure the corresponding 'docker-credential-<backend>' executable is in your PATH.\nstore_backend = os.environ.get('DOCKER_CREDS_STORE_BACKEND', 'secretservice')\nstore = dockerpycreds.Store(store_backend)\n\n# Define credentials from environment variables for security in examples\nserver_url = os.environ.get('DOCKER_SERVER_URL', 'https://index.docker.io/v1/')\nusername = os.environ.get('DOCKER_USERNAME', 'testuser')\nsecret = os.environ.get('DOCKER_SECRET', 'testpassword')\n\nprint(f\"Attempting to store credentials for {username} on {server_url} using '{store_backend}'...\")\ntry:\n    store.store(\n        server=server_url,\n        username=username,\n        secret=secret\n    )\n    print(\"Credentials stored successfully. Note: This might have prompted for system keyring access.\")\nexcept Exception as e:\n    print(f\"Failed to store credentials: {e}. Ensure the credential helper is correctly configured and accessible.\")\n\nprint(\"\\nListing all known Docker credential servers:\")\ntry:\n    creds_list = store.list()\n    if creds_list:\n        for server, user in creds_list.items():\n            print(f\"  Server: {server}, Username: {user}\")\n    else:\n        print(\"  No credentials found.\")\nexcept Exception as e:\n    print(f\"Failed to list credentials: {e}. Listing may require user interaction or specific backend support.\")\n\n# Example of getting credentials (often requires explicit interaction with the helper)\n# This is commented out as it frequently requires external CLI calls or user prompts\n# which are hard to automate in a simple quickstart.\n# try:\n#     retrieved_username, retrieved_secret = store.get(server_url)\n#     print(f\"\\nRetrieved credentials for {server_url}: Username: {retrieved_username}, Secret: {'*' * len(retrieved_secret)}\")\n# except Exception as e:\n#     print(f\"Failed to retrieve credentials: {e}. This often requires direct Docker CLI interaction or specific credential helper setup.\")","lang":"python","description":"This quickstart demonstrates how to instantiate a credential store and use it to store and list Docker credentials. It assumes a `docker-credential` helper for your platform is installed and configured. Storing credentials might trigger a system-level prompt for keyring access depending on the backend.","tag":null,"tag_description":null,"last_tested":"2026-04-24","results":[{"runtime":"python:3.10-alpine","exit_code":1},{"runtime":"python:3.10-slim","exit_code":1},{"runtime":"python:3.11-alpine","exit_code":1},{"runtime":"python:3.11-slim","exit_code":1},{"runtime":"python:3.12-alpine","exit_code":1},{"runtime":"python:3.12-slim","exit_code":1},{"runtime":"python:3.13-alpine","exit_code":1},{"runtime":"python:3.13-slim","exit_code":1},{"runtime":"python:3.9-alpine","exit_code":1},{"runtime":"python:3.9-slim","exit_code":1}]},"compatibility":{"tag":"draft","tag_description":"notable install failures or slow imports","last_tested":"2026-05-20","installed_version":"0.4.0","pypi_latest":"0.4.0","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":80,"avg_install_s":1.6,"avg_import_s":0.97,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"docker-pycreds","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.02,"mem_mb":15.9,"disk_size":"18.9M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"docker-pycreds","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.99,"mem_mb":15.9,"disk_size":"18.9M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"docker-pycreds","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.71,"mem_mb":15.9,"disk_size":"19M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"docker-pycreds","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.72,"mem_mb":15.9,"disk_size":"19M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"docker-pycreds","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.11,"mem_mb":17.4,"disk_size":"21.1M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"docker-pycreds","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.22,"mem_mb":17.4,"disk_size":"21.1M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"docker-pycreds","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.6,"import_time_s":1.02,"mem_mb":17.4,"disk_size":"22M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"docker-pycreds","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.97,"mem_mb":17.4,"disk_size":"22M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"docker-pycreds","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"11.7M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"docker-pycreds","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"docker-pycreds","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.5,"import_time_s":null,"mem_mb":null,"disk_size":"12M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"docker-pycreds","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"docker-pycreds","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"11.4M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"docker-pycreds","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"docker-pycreds","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.6,"import_time_s":null,"mem_mb":null,"disk_size":"12M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"docker-pycreds","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"docker-pycreds","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1,"mem_mb":15.5,"disk_size":"18.5M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"docker-pycreds","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.03,"mem_mb":15.5,"disk_size":"18.5M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"docker-pycreds","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.8,"import_time_s":0.89,"mem_mb":15.5,"disk_size":"19M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"docker-pycreds","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.9,"mem_mb":15.5,"disk_size":"19M"}]}}