{"library":"stone","title":"Stone IDL Compiler","type":"library","description":"Stone is an interface description language (IDL) and a suite of tools for defining APIs and generating client/server code in various languages. It is primarily used by Dropbox for its API development. The current version is 3.3.9, and it maintains an active release cadence with frequent patch updates and occasional minor feature additions.","language":"python","status":"active","last_verified":"Thu May 21","install":{"commands":["pip install stone"],"cli":{"name":"stone","version":"usage: stone [-h] [-v] [--clean-build] [-f FILTER_BY_ROUTE_ATTR]"}},"imports":["from stone.frontend.stone_parser import parse_stone_grammar","from stone.ir import Api","from stone.backends.python_rsrc import PythonResourceBackend"],"auth":{"required":false,"env_vars":[]},"links":{"homepage":null,"github":"https://github.com/dropbox/stone","docs":null,"changelog":null,"pypi":"https://pypi.org/project/stone/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null},"quickstart":{"code":"import os\nfrom stone.frontend.stone_parser import parse_stone_grammar\nfrom stone.ir import Api\n\n# 1. Define a simple Stone spec content\nstone_spec_content = \"\"\"\nnamespace example\n\nstruct User {\n    id String\n    name String\n}\n\nroute greet(name: String): User\n    \"Greets a user.\"\n\"\"\"\n\n# Create a temporary .stone file for parsing\ntemp_stone_file = \"temp_spec.stone\"\nwith open(temp_stone_file, \"w\") as f:\n    f.write(stone_spec_content)\n\ntry:\n    # 2. Parse the Stone spec file(s)\n    # parse_stone_grammar expects a list of file paths\n    api = parse_stone_grammar([temp_stone_file])\n\n    # 3. Access the parsed Intermediate Representation (IR)\n    example_namespace = api.namespaces.get('example')\n    if example_namespace:\n        print(\"Parsed API Namespace:\", example_namespace.name)\n        print(\"Parsed API Structs:\", [s.name for s in example_namespace.data_types if s.is_struct])\n        print(\"Parsed API Routes:\", [r.name for r in example_namespace.routes])\n    else:\n        print(\"Namespace 'example' not found in parsed API.\")\n\n    # For full code generation, you would then instantiate a backend\n    # (e.g., PythonResourceBackend) with the 'api' object and call its 'generate' method.\n\nexcept Exception as e:\n    print(f\"Error during Stone processing: {e}\")\nfinally:\n    # Clean up temporary file\n    if os.path.exists(temp_stone_file):\n        os.remove(temp_stone_file)\n","lang":"python","description":"This quickstart demonstrates how to programmatically parse a simple Stone IDL specification using the `stone` library, accessing its Intermediate Representation (IR). It creates a temporary '.stone' file, parses it, and prints details about the defined namespace, structs, and routes. It does not perform actual code generation to keep the example concise and runnable without side effects.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-21","installed_version":"3.3.9","pypi_latest":"3.3.9","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":50,"avg_install_s":2,"avg_import_s":null,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"stone","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":"21.5M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"stone","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.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"stone","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":2,"import_time_s":null,"mem_mb":null,"disk_size":"22M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"stone","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.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"stone","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":"24.3M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"stone","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.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"stone","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":2,"import_time_s":null,"mem_mb":null,"disk_size":"25M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"stone","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-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"stone","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":"16.0M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"stone","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":"stone","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.9,"import_time_s":null,"mem_mb":null,"disk_size":"16M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"stone","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":"stone","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":"15.7M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"stone","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":"stone","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.9,"import_time_s":null,"mem_mb":null,"disk_size":"16M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"stone","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":"stone","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":"21.0M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"stone","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-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"stone","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":2.3,"import_time_s":null,"mem_mb":null,"disk_size":"21M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"stone","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}]}}