{"id":975,"library":"cloudpathlib","title":"cloudpathlib","description":"cloudpathlib provides pathlib-style classes for interacting with files and directories in various cloud storage services such as AWS S3, Google Cloud Storage, and Azure Blob Storage. It aims to offer a familiar filesystem interface, abstracting away cloud-specific details. The library is actively maintained, with a typical release cadence that includes bug fixes and new features. The current version is 0.23.0.","status":"active","version":"0.23.0","language":"python","source_language":"en","source_url":"https://github.com/drivendataorg/cloudpathlib","tags":["cloud storage","pathlib","aws s3","google cloud storage","azure blob storage","file system abstraction"],"install":[{"cmd":"pip install cloudpathlib","lang":"bash","label":"Base installation"},{"cmd":"pip install \"cloudpathlib[s3]\"","lang":"bash","label":"For AWS S3"},{"cmd":"pip install \"cloudpathlib[gs]\"","lang":"bash","label":"For Google Cloud Storage"},{"cmd":"pip install \"cloudpathlib[azure]\"","lang":"bash","label":"For Azure Blob Storage"},{"cmd":"pip install \"cloudpathlib[all]\"","lang":"bash","label":"For all supported cloud services"}],"dependencies":[{"reason":"Required for type hints and compatibility.","package":"typing-extensions"},{"reason":"Optional, required for AWS S3 integration.","package":"boto3","optional":true},{"reason":"Optional, required for Google Cloud Storage integration.","package":"google-cloud-storage","optional":true},{"reason":"Optional, required for Azure Blob Storage integration.","package":"azure-storage-blob","optional":true},{"reason":"Optional, required for Azure Data Lake Storage Gen2 integration.","package":"azure-storage-file-datalake","optional":true}],"imports":[{"symbol":"CloudPath","correct":"from cloudpathlib import CloudPath"},{"symbol":"AnyPath","correct":"from cloudpathlib import AnyPath"},{"symbol":"S3Path","correct":"from cloudpathlib.s3 import S3Path"},{"symbol":"GSPath","correct":"from cloudpathlib.gs import GSPath"},{"note":"The specific class for Azure Blob Storage is AzureBlobPath, not a generic AzurePath.","wrong":"from cloudpathlib.azure import AzurePath","symbol":"AzureBlobPath","correct":"from cloudpathlib.azure import AzureBlobPath"},{"symbol":"HttpsPath","correct":"from cloudpathlib.https import HttpsPath"}],"quickstart":{"code":"import os\nfrom cloudpathlib import CloudPath\n\n# Ensure environment variables are set for the chosen cloud provider\n# e.g., for S3: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY\n# for GS: GOOGLE_APPLICATION_CREDENTIALS (path to JSON key file)\n# for Azure: AZURE_STORAGE_CONNECTION_STRING\n\n# Example for S3\n# Replace with your actual bucket and file name\ns3_file_path = CloudPath(\"s3://your-test-bucket/hello.txt\")\n\ntry:\n    # Write to the cloud file\n    s3_file_path.write_text(\"Hello from cloudpathlib!\")\n    print(f\"Successfully wrote to {s3_file_path}\")\n\n    # Read from the cloud file\n    content = s3_file_path.read_text()\n    print(f\"Content read: '{content}'\")\n\n    # Check if the file exists\n    if s3_file_path.exists():\n        print(f\"File {s3_file_path} exists.\")\n\n    # Clean up (optional)\n    s3_file_path.unlink()\n    print(f\"File {s3_file_path} deleted.\")\n\nexcept Exception as e:\n    print(f\"An error occurred: {e}\")","lang":"python","description":"This quickstart demonstrates how to initialize a CloudPath object for S3, write text to it, read text from it, check its existence, and then delete it. Users should ensure their cloud provider authentication environment variables are correctly set for automatic authentication. Similar patterns apply to GSPath and AzureBlobPath."},"warnings":[{"fix":"Update calls to `CloudPath.copy` to use `target` as the parameter name instead of `destination`.","message":"The `CloudPath.copy` method's first parameter was renamed from `destination` to `target`. Code relying on keyword arguments or positional argument names will break.","severity":"breaking","affected_versions":">=0.23.0"},{"fix":"Upgrade your Python environment to 3.8 or newer.","message":"Support for Python 3.7 has been removed. The last version compatible with Python 3.7 was v0.18.1.","severity":"breaking","affected_versions":">=0.19.0"},{"fix":"If you were passing a client object as the second positional argument to `CloudPath` or `AnyPath`, ensure you pass it using the `client=` keyword argument.","message":"The `CloudPath` constructor changed how it handles a client object as the second argument. Previously, it could implicitly accept a client. Now, it needs to be passed explicitly as a keyword argument (e.g., `CloudPath('s3://...', client=my_client)`).","severity":"breaking","affected_versions":">=0.22.0"},{"fix":"Update your environment configurations to use `CLOUDPATHLIB_FILE_CACHE_MODE` instead of `CLOUPATHLIB_FILE_CACHE_MODE`.","message":"The environment variable `CLOUPATHLIB_FILE_CACHE_MODE` (with a typo) was deprecated and support for it has been removed. The correct environment variable is `CLOUDPATHLIB_FILE_CACHE_MODE`.","severity":"deprecated","affected_versions":">=0.21.0 (removed), >=0.19.0 (deprecated)"},{"fix":"If you require an error to be raised when attempting to unlink a non-existent file, explicitly pass `missing_ok=False` to `unlink()`.","message":"The default for `missing_ok` in `CloudPath.unlink()` is `True`, unlike `pathlib.Path.unlink()` where it defaults to `False`. This means `unlink()` will not raise an error if the file does not exist by default.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Use `path.rmtree()` for recursive directory deletion, or ensure directories are empty before calling `path.rmdir()`.","message":"`CloudPath.rmdir()` will raise a `DirectoryNotEmptyError` if the directory is not empty. To recursively remove a non-empty directory, you must use `CloudPath.rmtree()`.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Upgrade to `cloudpathlib` v0.18.1 or newer, and ensure your `google-cloud-storage` dependency is compatible or also updated.","message":"An `ImportError` due to an incompatible `google-cloud-storage` version was fixed in v0.18.1 by not using `transfer_manager` if unavailable. Users on older `google-cloud-storage` versions might encounter this.","severity":"gotcha","affected_versions":"<0.18.1"},{"fix":"Ensure your environment or system is configured with valid credentials for the respective cloud provider. For AWS S3, set `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, and `AWS_SESSION_TOKEN` (if applicable). For Google Cloud Storage, set `GOOGLE_APPLICATION_CREDENTIALS` to the path of your service account key file. For Azure Blob Storage, configure environment variables like `AZURE_STORAGE_ACCOUNT_NAME` and `AZURE_STORAGE_ACCOUNT_KEY` or `AZURE_STORAGE_CONNECTION_STRING`.","message":"When performing operations on cloud paths, `cloudpathlib` requires appropriate authentication credentials for the target cloud provider (e.g., S3, GCS, Azure). Without these, operations will fail with 'Unable to locate credentials' or similar authentication errors.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Ensure your environment is configured with appropriate credentials for your cloud provider (e.g., AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION for S3; GOOGLE_APPLICATION_CREDENTIALS for GCS; AZURE_STORAGE_ACCOUNT_NAME, AZURE_STORAGE_ACCOUNT_KEY for Azure).","message":"Operations with cloud providers (S3, GCS, Azure) will fail with 'Unable to locate credentials' if environment variables, configuration files, or other authentication methods are not correctly set up for the respective cloud client library.","severity":"gotcha","affected_versions":"All versions"}],"env_vars":null,"last_verified":"2026-05-12T22:03:22.981Z","next_check":"2026-06-27T00:00:00.000Z","problems":[{"fix":"Install `cloudpathlib` with the appropriate extras for your cloud provider. For S3, use `pip install \"cloudpathlib[s3]\"`. For Google Cloud Storage, use `pip install \"cloudpathlib[gs]\"`. For Azure Blob Storage, use `pip install \"cloudpathlib[azure]\"`. To install all, use `pip install \"cloudpathlib[all]\"`.","cause":"You are trying to use a cloud-specific Path class (e.g., `S3Path`, `GSPath`, `AzureBlobPath`) or `CloudPath` with a cloud URI scheme, but the necessary cloud provider SDK dependencies (like `boto3` for S3, `google-cloud-storage` for GCS, or `azure-storage-blob` for Azure) were not installed along with `cloudpathlib` as optional 'extras'.","error":"cloudpathlib.exceptions.MissingDependenciesError: To use S3Path, you must install cloudpathlib with the 's3' extra: pip install \"cloudpathlib[s3]\""},{"fix":"Configure your cloud credentials. For AWS S3, set `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` environment variables or use an `AWS_PROFILE`. For public S3 buckets, instantiate `S3Client` with `no_sign_request=True` and use that client. For Google Cloud Storage, set the `GOOGLE_APPLICATION_CREDENTIALS` environment variable. For Azure, set `AZURE_STORAGE_CONNECTION_STRING`. Alternatively, explicitly instantiate and configure a client object (e.g., `S3Client`, `GSClient`, `AzureBlobClient`) with your credentials.","cause":"You are attempting to access a cloud storage resource (e.g., S3, GCS, Azure Blob Storage) using `cloudpathlib` without configuring the necessary authentication credentials for the respective cloud service.","error":"botocore.exceptions.NoCredentialsError: Unable to locate credentials."},{"fix":"Instead of directly passing a `CloudPath` object to external libraries for writing, explicitly open the `CloudPath` object for writing and pass the resulting file-like object, or write to a temporary local file first and then upload it using `cloudpathlib`'s `upload_from` method. For example, for Pandas: `with my_cloud_path.open('w') as f: df.to_csv(f)` (or `to_parquet`, etc.) or `df.to_csv('local_temp_file.csv'); my_cloud_path.upload_from('local_temp_file.csv')`.","cause":"When using `cloudpathlib` objects with external libraries (like Pandas' `to_csv` or `to_parquet`) that rely on `os.fspath()` or expect a local file path for write operations, `cloudpathlib`'s `__fspath__` method returns the path to its local cache. If the parent directories for this local cache path do not exist, the external library will raise an `OSError`. Additionally, writing to this local cache directly will not upload the file to the cloud.","error":"OSError: Cannot save file into a non-existent directory: '/var/folders/hf/cnzhkc851mqcmg0f8nc41z6h0000gn/T/tmp67yk4w9b/human-datalake/projects/raw/folder'"},{"fix":"Upgrade `cloudpathlib` to a version that officially supports Python 3.13+ (e.g., v0.20.0 or later, as mentioned in a GitHub issue for 3.13 support). If a newer version of `cloudpathlib` is not yet released that supports your specific Python version, you may need to either downgrade your Python version or wait for an updated `cloudpathlib` release. Check the `cloudpathlib` GitHub repository or PyPI page for the latest compatibility information.","cause":"This error occurs when `cloudpathlib` is used with Python 3.13 or 3.14 (or potentially newer versions) due to internal changes in Python's `pathlib` module, where private APIs that `cloudpathlib` previously relied on have been moved or removed.","error":"ModuleNotFoundError: No module named 'pathlib._local'"}],"ecosystem":"pypi","meta_description":null,"install_score":100,"install_tag":"verified","quickstart_score":null,"quickstart_tag":null,"pypi_latest":"0.24.0","cli_name":"","install_checks":{"last_tested":"2026-05-12","tag":"verified","tag_description":"installs cleanly on critical runtimes, fast import, recently tested","results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"all","exit_code":0,"wheel_type":"sdist","failure_reason":null,"install_time_s":null,"import_time_s":2.31,"mem_mb":34.3,"disk_size":"94.0M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"all","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.05,"mem_mb":33.9,"disk_size":"92.7M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"azure","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":1.33,"mem_mb":20.3,"disk_size":"48.1M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"azure","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.25,"mem_mb":20,"disk_size":"47.0M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"gs","exit_code":0,"wheel_type":"sdist","failure_reason":null,"install_time_s":null,"import_time_s":1.41,"mem_mb":23.1,"disk_size":"52.3M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"gs","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.29,"mem_mb":22.8,"disk_size":"51.2M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"s3","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.78,"mem_mb":16.1,"disk_size":"51.4M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"s3","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.75,"mem_mb":16.2,"disk_size":"51.2M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.17,"mem_mb":7.4,"disk_size":"18.6M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.18,"mem_mb":7.3,"disk_size":"18.6M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"all","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":7.9,"import_time_s":1.8,"mem_mb":33,"disk_size":"95M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"all","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.6,"mem_mb":32.6,"disk_size":"93M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"azure","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":3.9,"import_time_s":0.95,"mem_mb":20.3,"disk_size":"48M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"azure","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.92,"mem_mb":20,"disk_size":"47M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"gs","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":4.8,"import_time_s":1.04,"mem_mb":21.9,"disk_size":"53M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"gs","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.96,"mem_mb":21.5,"disk_size":"52M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"s3","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":4,"import_time_s":0.6,"mem_mb":16.1,"disk_size":"52M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"s3","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.57,"mem_mb":16.1,"disk_size":"52M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.5,"import_time_s":0.12,"mem_mb":7.3,"disk_size":"19M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.12,"mem_mb":7.3,"disk_size":"19M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"all","exit_code":0,"wheel_type":"sdist","failure_reason":null,"install_time_s":null,"import_time_s":2.87,"mem_mb":38.7,"disk_size":"101.2M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"all","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":3.2,"mem_mb":38.4,"disk_size":"99.9M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"azure","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":1.5,"mem_mb":23.2,"disk_size":"52.4M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"azure","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.64,"mem_mb":23,"disk_size":"51.3M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"gs","exit_code":0,"wheel_type":"sdist","failure_reason":null,"install_time_s":null,"import_time_s":1.96,"mem_mb":25.4,"disk_size":"56.6M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"gs","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.25,"mem_mb":25.2,"disk_size":"55.5M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"s3","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.92,"mem_mb":17.7,"disk_size":"54.2M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"s3","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.01,"mem_mb":17.7,"disk_size":"54.0M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.21,"mem_mb":6.3,"disk_size":"20.3M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.21,"mem_mb":6.3,"disk_size":"20.3M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"all","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":7.5,"import_time_s":2.31,"mem_mb":37.6,"disk_size":"102M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"all","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.24,"mem_mb":37.3,"disk_size":"101M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"azure","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":3.6,"import_time_s":1.34,"mem_mb":23.2,"disk_size":"53M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"azure","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.24,"mem_mb":23,"disk_size":"52M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"gs","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":4.6,"import_time_s":1.52,"mem_mb":23.8,"disk_size":"57M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"gs","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.43,"mem_mb":24.1,"disk_size":"56M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"s3","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":3.6,"import_time_s":0.81,"mem_mb":17.7,"disk_size":"55M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"s3","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.78,"mem_mb":17.7,"disk_size":"54M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.6,"import_time_s":0.17,"mem_mb":6.4,"disk_size":"21M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.16,"mem_mb":6.3,"disk_size":"21M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"all","exit_code":0,"wheel_type":"sdist","failure_reason":null,"install_time_s":null,"import_time_s":2.95,"mem_mb":38.1,"disk_size":"92.2M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"all","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":3.18,"mem_mb":37.8,"disk_size":"90.9M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"azure","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":1.77,"mem_mb":23,"disk_size":"43.8M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"azure","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.78,"mem_mb":22.8,"disk_size":"42.7M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"gs","exit_code":0,"wheel_type":"sdist","failure_reason":null,"install_time_s":null,"import_time_s":2.05,"mem_mb":24.9,"disk_size":"48.1M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"gs","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.25,"mem_mb":24.6,"disk_size":"47.0M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"s3","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.83,"mem_mb":16.8,"disk_size":"45.8M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"s3","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.87,"mem_mb":16.8,"disk_size":"45.6M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.19,"mem_mb":6.7,"disk_size":"12.1M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.19,"mem_mb":6.7,"disk_size":"12.1M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"all","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":6.5,"import_time_s":2.64,"mem_mb":37,"disk_size":"93M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"all","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.81,"mem_mb":36.7,"disk_size":"92M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"azure","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":3.2,"import_time_s":1.81,"mem_mb":23,"disk_size":"44M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"azure","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.81,"mem_mb":22.8,"disk_size":"43M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"gs","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":3.9,"import_time_s":1.82,"mem_mb":23.8,"disk_size":"49M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"gs","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.09,"mem_mb":23.5,"disk_size":"48M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"s3","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":3.3,"import_time_s":0.88,"mem_mb":16.8,"disk_size":"46M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"s3","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.84,"mem_mb":16.8,"disk_size":"46M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.4,"import_time_s":0.19,"mem_mb":6.7,"disk_size":"13M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.2,"mem_mb":6.7,"disk_size":"13M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"all","exit_code":0,"wheel_type":"sdist","failure_reason":null,"install_time_s":null,"import_time_s":2.83,"mem_mb":39.6,"disk_size":"91.7M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"all","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":3.11,"mem_mb":39.3,"disk_size":"90.3M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"azure","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":1.86,"mem_mb":23.9,"disk_size":"43.5M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"azure","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.76,"mem_mb":23.7,"disk_size":"42.3M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"gs","exit_code":0,"wheel_type":"sdist","failure_reason":null,"install_time_s":null,"import_time_s":1.97,"mem_mb":25.9,"disk_size":"47.8M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"gs","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.22,"mem_mb":25.8,"disk_size":"46.5M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"s3","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.84,"mem_mb":17.9,"disk_size":"45.5M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"s3","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.87,"mem_mb":17.8,"disk_size":"45.2M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.18,"mem_mb":7,"disk_size":"11.9M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.18,"mem_mb":7,"disk_size":"11.8M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"all","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":6.2,"import_time_s":2.62,"mem_mb":38.4,"disk_size":"93M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"all","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.9,"mem_mb":38.2,"disk_size":"91M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"azure","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":3.3,"import_time_s":1.66,"mem_mb":23.9,"disk_size":"44M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"azure","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.71,"mem_mb":23.7,"disk_size":"43M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"gs","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":3.9,"import_time_s":1.75,"mem_mb":24.8,"disk_size":"49M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"gs","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.07,"mem_mb":24.7,"disk_size":"47M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"s3","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":2.9,"import_time_s":0.8,"mem_mb":17.9,"disk_size":"46M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"s3","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.84,"mem_mb":17.8,"disk_size":"46M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.5,"import_time_s":0.2,"mem_mb":7,"disk_size":"12M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.18,"mem_mb":7,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"all","exit_code":0,"wheel_type":"sdist","failure_reason":null,"install_time_s":null,"import_time_s":2.12,"mem_mb":33.9,"disk_size":"93.9M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"all","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.88,"mem_mb":33.7,"disk_size":"92.7M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"azure","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":1.29,"mem_mb":20,"disk_size":"48.1M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"azure","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.19,"mem_mb":19.9,"disk_size":"47.1M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"gs","exit_code":0,"wheel_type":"sdist","failure_reason":null,"install_time_s":null,"import_time_s":1.3,"mem_mb":22.8,"disk_size":"52.3M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"gs","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.21,"mem_mb":22.6,"disk_size":"51.2M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"s3","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.66,"mem_mb":15.3,"disk_size":"50.8M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"s3","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.65,"mem_mb":15.3,"disk_size":"50.7M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.15,"mem_mb":6.8,"disk_size":"18.1M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.15,"mem_mb":6.8,"disk_size":"18.1M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"all","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":9.3,"import_time_s":1.94,"mem_mb":32.6,"disk_size":"95M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"all","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.67,"mem_mb":32.5,"disk_size":"94M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"azure","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":4.5,"import_time_s":1.19,"mem_mb":20,"disk_size":"48M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"azure","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.05,"mem_mb":19.9,"disk_size":"47M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"gs","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":5.7,"import_time_s":1.27,"mem_mb":21.6,"disk_size":"53M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"gs","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.08,"mem_mb":21.4,"disk_size":"52M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"s3","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":4.9,"import_time_s":0.7,"mem_mb":15.3,"disk_size":"51M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"s3","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.55,"mem_mb":15.3,"disk_size":"51M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.8,"import_time_s":0.13,"mem_mb":6.8,"disk_size":"19M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.13,"mem_mb":6.8,"disk_size":"19M"}]},"quickstart_checks":{"last_tested":"2026-04-24","tag":null,"tag_description":null,"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}]}}