{"id":264,"library":"fsspec","title":"fsspec — Filesystem Interfaces for Python","description":"Filesystem Spec (fsspec) provides a unified, Pythonic interface to local, remote, and embedded file systems and bytes storage — including S3, GCS, Azure, HTTP, SFTP, memory, and more. It is the file-system abstraction layer used internally by Dask, pandas, PyArrow, Zarr, and many others. The current version is 2026.3.0, following a monthly calendar-versioning (CalVer) release cadence tied to the YYYY.MM.PATCH scheme.","status":"active","version":"2026.3.0","language":"python","source_language":"en","source_url":"https://github.com/fsspec/filesystem_spec","tags":["filesystem","storage","s3","gcs","azure","cloud","io","dask","zarr","pyarrow","async","abstraction"],"install":[{"cmd":"pip install fsspec","lang":"bash","label":"Base install (local, memory, HTTP, ZIP, TAR built-in)"},{"cmd":"pip install fsspec[s3]","lang":"bash","label":"With AWS S3 support (installs s3fs)"},{"cmd":"pip install fsspec[gcs]","lang":"bash","label":"With Google Cloud Storage support (installs gcsfs)"},{"cmd":"pip install fsspec[ssh]","lang":"bash","label":"With SSH/SFTP support"},{"cmd":"pip install fsspec[full]","lang":"bash","label":"All known optional backends"}],"dependencies":[{"reason":"Required for s3:// protocol (AWS S3). Install via fsspec[s3] or pip install s3fs.","package":"s3fs","optional":true},{"reason":"Required for gs:// or gcs:// protocol (Google Cloud Storage). Install via fsspec[gcs].","package":"gcsfs","optional":true},{"reason":"Required for abfs:// or az:// protocol (Azure Blob / ADLS Gen2).","package":"adlfs","optional":true},{"reason":"Required for HTTP/HTTPS async filesystem (HTTPFileSystem). Included in base install.","package":"aiohttp","optional":true},{"reason":"Required for sftp:// or ssh:// protocol. Install via fsspec[ssh].","package":"paramiko","optional":true}],"imports":[{"note":"Top-level convenience function; returns an OpenFile that only opens the resource when entering a `with` context.","symbol":"fsspec.open","correct":"import fsspec\nwith fsspec.open('s3://bucket/file.txt', 'rt') as f: ..."},{"note":"Prefer fsspec.filesystem('protocol') for protocol-agnostic code; direct class imports tie code to a specific backend.","wrong":"from s3fs import S3FileSystem\nfs = S3FileSystem()","symbol":"fsspec.filesystem","correct":"import fsspec\nfs = fsspec.filesystem('s3', key='...', secret='...')"},{"note":"Base class for implementing a custom filesystem backend.","symbol":"AbstractFileSystem","correct":"from fsspec.spec import AbstractFileSystem"},{"note":"Base class for async-capable filesystem backends. Sync wrappers are auto-generated.","symbol":"AsyncFileSystem","correct":"from fsspec.asyn import AsyncFileSystem"},{"note":"Or use fsspec.filesystem('file'). Direct instantiation shown in official docs.","symbol":"LocalFileSystem","correct":"from fsspec.implementations.local import LocalFileSystem"},{"note":"Inspect or extend the registry of protocol → class mappings.","symbol":"known_implementations","correct":"from fsspec.registry import known_implementations"},{"note":"Register a custom backend at runtime. Preferred over patching known_implementations directly.","symbol":"register_implementation","correct":"from fsspec.registry import register_implementation\nregister_implementation('myproto', MyFS)"},{"note":"Returns a MutableMapping view of a filesystem path, used by Zarr and other key-value consumers.","symbol":"get_mapper","correct":"import fsspec\nmapper = fsspec.get_mapper('s3://bucket/path/')"},{"note":"Serialisable file descriptor; resources are only engaged when used in a `with` context.","symbol":"OpenFile","correct":"from fsspec.core import OpenFile"}],"quickstart":{"code":"import os\nimport fsspec\n\n# 1. Open any URL transparently (protocol auto-detected from URL)\nwith fsspec.open(\n    \"https://raw.githubusercontent.com/fsspec/filesystem_spec/master/README.md\",\n    \"rt\",\n) as f:\n    first_line = f.readline()\n    print(\"README first line:\", first_line.strip())\n\n# 2. Use fsspec.filesystem() for repeated operations on one backend\nfs = fsspec.filesystem(\"memory\")  # in-process, no I/O\nfs.mkdir(\"/mydir\")\nwith fs.open(\"/mydir/hello.txt\", \"wt\") as f:\n    f.write(\"Hello from fsspec!\")\nwith fs.open(\"/mydir/hello.txt\", \"rt\") as f:\n    print(f.read())\nprint(\"Files:\", fs.ls(\"/mydir\"))\n\n# 3. S3 example (needs pip install fsspec[s3])\n# Uses env-var credentials — safe pattern for agents\n# aws_key = os.environ.get('AWS_ACCESS_KEY_ID', '')\n# aws_secret = os.environ.get('AWS_SECRET_ACCESS_KEY', '')\n# fs_s3 = fsspec.filesystem('s3', key=aws_key, secret=aws_secret)\n# print(fs_s3.ls('my-bucket/'))\n\n# 4. Zarr-style key-value mapping over any backend\nmapper = fsspec.get_mapper(\"memory://zarr-root/\")\nmapper[\"chunk-0\"] = b\"\\x00\" * 128\nprint(\"Mapper keys:\", list(mapper))\n","lang":"python","description":"Open a remote HTTP file, read/list a local filesystem, and demonstrate the memory filesystem — all with the same API."},"warnings":[{"fix":"Call fs_class.clear_instance_cache() when you need a fresh instance, or pass skip_instance_cache=True to fsspec.filesystem().","message":"Filesystem instances are cached singletons. fsspec.filesystem('s3', key=K1) and fsspec.filesystem('s3', key=K2) with different credentials may return the same cached instance if arguments hash identically. This can cause silent credential cross-contamination.","severity":"gotcha","affected_versions":"all"},{"fix":"Inside an async context, instantiate with asynchronous=True and await the private _method coroutines (e.g. await fs._ls()), or use fsspec.asyn.fsspec_loop context manager.","message":"Calling sync fsspec methods (e.g. fs.ls()) from inside a running asyncio event loop raises NotImplementedError: 'Calling sync() from within a running loop'. This affects Jupyter notebooks, FastAPI handlers, and async frameworks.","severity":"breaking","affected_versions":"all async implementations (s3fs, gcsfs, adlfs, HTTPFileSystem)"},{"fix":"Always use `with fsspec.open(...) as f: f.read(...)` or call of.open() explicitly and close when done.","message":"fsspec.open() returns an OpenFile placeholder — the remote file is NOT opened until you enter a `with` block. Calling .read() on the raw OpenFile object without a context manager will fail.","severity":"gotcha","affected_versions":"all"},{"fix":"Install the required extra: pip install fsspec[s3], fsspec[gcs], or the specific package. Use fsspec.available_protocols() to check what is installed.","message":"Cloud backend packages (s3fs, gcsfs, adlfs) are NOT included in the base fsspec install. Attempting to use fsspec.filesystem('s3') without s3fs raises an ImportError with a hint, but the hint may be missed in automated pipelines.","severity":"gotcha","affected_versions":"all"},{"fix":"Use multiprocessing with spawn context, or call fs_class.clear_instance_cache() inside the worker initializer after forking.","message":"Async filesystem instances (s3fs, gcsfs) are incompatible with os.fork() (used by PyTorch DataLoader, multiprocessing). After fork, cached instances hold references to dead event loops, causing hangs or cryptic errors.","severity":"gotcha","affected_versions":"all async implementations"},{"fix":"Remove the trim argument from any AbstractBufferedFile instantiation.","message":"Passing `trim` to fsspec.spec.AbstractBufferedFile is deprecated.","severity":"deprecated","affected_versions":">=0.9.0"},{"fix":"Upgrade s3fs, gcsfs, and adlfs to current releases that are compatible with the same fsspec CalVer month.","message":"fsspec.asyn.maybe_sync was removed. Older pinned versions of s3fs (<=0.5.2) and other ecosystem libraries that imported maybe_sync will break on recent fsspec.","severity":"breaking","affected_versions":"fsspec>=2021.x removes maybe_sync; s3fs<=0.5.2 affected"}],"env_vars":null,"last_verified":"2026-05-12T12:37:13.609Z","next_check":"2026-06-26T00:00:00.000Z","problems":[{"fix":"Install 'fsspec' and any necessary backend libraries using 'pip'. Example: `pip install fsspec` or `pip install fsspec gcsfs s3fs`.","cause":"The 'fsspec' library, or a required backend implementation for a specific filesystem (e.g., 'gcsfs' for Google Cloud Storage or 's3fs' for AWS S3), is not installed in the Python environment.","error":"ModuleNotFoundError: No module named 'fsspec'"},{"fix":"Avoid directly importing 'fsspec.asyn'. Asynchronous functionalities are typically handled internally by fsspec's high-level functions (like `fsspec.open`) or exposed through utility functions like `fsspec.asyn.sync` if explicitly wrapping async code.","cause":"This error occurs when attempting to directly import 'fsspec.asyn', which is an internal module not intended for direct public import.","error":"ModuleNotFoundError: No module named 'fsspec.asyn'"},{"fix":"Ensure AWS credentials (e.g., environment variables like `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_SESSION_TOKEN`, or a `~/.aws/credentials` file) or Google Cloud credentials (e.g., `GOOGLE_APPLICATION_CREDENTIALS` environment variable pointing to a service account key file, or default credentials from a logged-in gcloud user) are properly configured and accessible. For public S3 buckets, pass `anon=True` to the filesystem constructor.","cause":"When accessing cloud storage like AWS S3 or Google Cloud Storage, 'fsspec' (via 's3fs' or 'gcsfs') cannot find valid authentication credentials in the environment or configured files.","error":"S3 error : Unable to locate credentials"},{"fix":"Increase the timeout parameter for the specific `fsspec` operation or the underlying filesystem instance. Additionally, check network connectivity and the availability of the remote service. Example for S3: `fs = fsspec.filesystem('s3', client_kwargs={'connect_timeout': 30, 'read_timeout': 60})`.","cause":"An operation involving network communication with a remote filesystem exceeded the allocated time limit, often due to slow network connections, large file transfers, or an unresponsive remote service.","error":"FSTimeoutError"},{"fix":"Review the IAM policy associated with your AWS credentials or the roles/permissions for your Google Cloud service account. Ensure the policy grants explicit 'Allow' actions (e.g., `s3:GetObject`, `s3:PutObject`, `s3:ListBucket`) on the specific cloud storage bucket and object paths involved in the operation.","cause":"The credentials provided to 'fsspec' (via backends like 's3fs' or 'gcsfs') lack the necessary IAM permissions to perform the requested file or directory operation (e.g., read, write, list) on the specified resource in cloud storage.","error":"PermissionError: Access Denied"}],"ecosystem":"pypi","meta_description":null,"install_score":100,"install_tag":"verified","quickstart_score":0,"quickstart_tag":"stale","pypi_latest":null,"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":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.2,"mem_mb":7.6,"disk_size":"19.3M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"full","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.2,"mem_mb":7.5,"disk_size":"1.1G"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"gcs","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.18,"mem_mb":7.4,"disk_size":"85.0M"},{"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.2,"mem_mb":7.6,"disk_size":"61.0M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"ssh","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.2,"mem_mb":7.6,"disk_size":"42.5M"},{"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.13,"mem_mb":7.6,"disk_size":"20M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"full","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.14,"mem_mb":7.5,"disk_size":"1.1G"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"gcs","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.15,"mem_mb":7.6,"disk_size":"85M"},{"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.14,"mem_mb":7.6,"disk_size":"63M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"ssh","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.14,"mem_mb":7.6,"disk_size":"43M"},{"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.3,"mem_mb":8.6,"disk_size":"21.6M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"full","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.33,"mem_mb":8.7,"disk_size":"1.2G"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"gcs","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.28,"mem_mb":8.6,"disk_size":"91.5M"},{"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":0.29,"mem_mb":8.6,"disk_size":"65.3M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"ssh","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.28,"mem_mb":8.6,"disk_size":"45.6M"},{"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.23,"mem_mb":8.6,"disk_size":"22M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"full","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.26,"mem_mb":8.7,"disk_size":"1.2G"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"gcs","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.26,"mem_mb":8.6,"disk_size":"91M"},{"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.24,"mem_mb":8.6,"disk_size":"68M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"ssh","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.24,"mem_mb":8.6,"disk_size":"46M"},{"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.47,"mem_mb":11.7,"disk_size":"13.3M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"full","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.53,"mem_mb":11.7,"disk_size":"1.1G"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"gcs","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.48,"mem_mb":11.7,"disk_size":"82.7M"},{"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.47,"mem_mb":11.7,"disk_size":"56.7M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"ssh","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.49,"mem_mb":11.7,"disk_size":"37.2M"},{"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.43,"mem_mb":11.7,"disk_size":"14M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"full","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.53,"mem_mb":11.7,"disk_size":"1.2G"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"gcs","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.45,"mem_mb":11.7,"disk_size":"82M"},{"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.47,"mem_mb":11.7,"disk_size":"59M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"ssh","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.45,"mem_mb":11.7,"disk_size":"37M"},{"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.46,"mem_mb":11.4,"disk_size":"13.0M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"full","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.63,"mem_mb":11.4,"disk_size":"1.1G"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"gcs","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.47,"mem_mb":11.4,"disk_size":"82.1M"},{"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.48,"mem_mb":11.4,"disk_size":"56.1M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"ssh","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.49,"mem_mb":11.4,"disk_size":"36.8M"},{"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.43,"mem_mb":11.4,"disk_size":"13M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"full","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.47,"mem_mb":11.4,"disk_size":"1.1G"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"gcs","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.41,"mem_mb":11.4,"disk_size":"82M"},{"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.42,"mem_mb":11.4,"disk_size":"58M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"ssh","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.42,"mem_mb":11.4,"disk_size":"37M"},{"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.14,"mem_mb":6.1,"disk_size":"18.8M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"full","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.19,"mem_mb":6.2,"disk_size":"1.0G"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"gcs","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.15,"mem_mb":6.2,"disk_size":"63.6M"},{"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.15,"mem_mb":6.2,"disk_size":"60.0M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"ssh","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.15,"mem_mb":6.1,"disk_size":"42.7M"},{"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.1,"disk_size":"19M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"full","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.15,"mem_mb":6.2,"disk_size":"1.1G"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"gcs","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.14,"mem_mb":6.2,"disk_size":"66M"},{"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.14,"mem_mb":6.2,"disk_size":"63M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"ssh","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.14,"mem_mb":6.1,"disk_size":"43M"}]},"quickstart_checks":{"last_tested":"2026-04-23","tag":"stale","tag_description":"widespread failures or data too old to trust","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}]}}