{"library":"odfpy","title":"ODFPY - OpenDocument Python API","description":"ODFPY is a Python library and collection of utility programs designed to manipulate OpenDocument Format (ODF) files (e.g., .odt, .ods, .odp). It provides a structured API that adheres rigorously to ODF specifications, focusing on preventing the creation of invalid documents by incorporating grammar checks. The current version is 1.4.1. While new releases are infrequent, it is officially considered actively maintained by its community.","language":"python","status":"active","last_verified":"Wed May 13","install":{"commands":["pip install odfpy"],"cli":null},"imports":["from odf.opendocument import OpenDocumentText","from odf.opendocument import load","from odf.text import P","from odf.style import Style","from odf import teletype"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"from odf.opendocument import OpenDocumentText\nfrom odf.text import P\nimport os\n\n# Create a new ODT document\ntextdoc = OpenDocumentText()\n\n# Create a paragraph and add some text\np = P(text=\"Hello, ODFPy World!\")\n\n# Add the paragraph to the document's text body\ntextdoc.text.addElement(p)\n\n# Save the document to 'helloworld.odt'\n# The 'prettyprint=True' argument formats the XML for readability.\ntry:\n    output_filename = os.path.join(os.getcwd(), \"helloworld.odt\")\n    textdoc.save(output_filename, prettyprint=True)\n    print(f\"Document '{output_filename}' created successfully.\")\nexcept Exception as e:\n    print(f\"Error saving document: {e}\")","lang":"python","description":"This quickstart demonstrates how to create a simple OpenDocument Text (.odt) file, add a paragraph with text, and save the document using ODFPy. This is a common starting point for generating new ODF files.","tag":null,"tag_description":null,"last_tested":"2026-04-25","results":[{"runtime":"python:3.10-alpine","exit_code":0},{"runtime":"python:3.10-slim","exit_code":0},{"runtime":"python:3.11-alpine","exit_code":0},{"runtime":"python:3.11-slim","exit_code":0},{"runtime":"python:3.12-alpine","exit_code":0},{"runtime":"python:3.12-slim","exit_code":0},{"runtime":"python:3.13-alpine","exit_code":0},{"runtime":"python:3.13-slim","exit_code":0},{"runtime":"python:3.9-alpine","exit_code":0},{"runtime":"python:3.9-slim","exit_code":0}]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-13","installed_version":"1.4.1","pypi_latest":"1.4.1","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2.8,"avg_import_s":1.12,"wheel_type":"sdist"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"odfpy","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.94,"mem_mb":6.2,"disk_size":"20.5M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"odfpy","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.89,"mem_mb":6.2,"disk_size":"20.5M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"odfpy","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.4,"import_time_s":0.95,"mem_mb":6.1,"disk_size":"21M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"odfpy","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.38,"mem_mb":6.1,"disk_size":"21M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"odfpy","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.57,"mem_mb":6.5,"disk_size":"23.0M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"odfpy","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.92,"mem_mb":6.5,"disk_size":"23.0M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"odfpy","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.4,"import_time_s":1.27,"mem_mb":6.5,"disk_size":"24M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"odfpy","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.65,"mem_mb":6.5,"disk_size":"24M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"odfpy","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.16,"mem_mb":6,"disk_size":"12.9M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"odfpy","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.44,"mem_mb":6,"disk_size":"12.9M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"odfpy","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":3.3,"import_time_s":1.27,"mem_mb":6,"disk_size":"13M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"odfpy","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.72,"mem_mb":6,"disk_size":"13M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"odfpy","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.08,"mem_mb":6.1,"disk_size":"12.7M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"odfpy","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.46,"mem_mb":6.1,"disk_size":"12.6M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"odfpy","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":3.1,"import_time_s":1.14,"mem_mb":6.1,"disk_size":"13M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"odfpy","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.64,"mem_mb":6.1,"disk_size":"13M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"odfpy","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.22,"mem_mb":6.3,"disk_size":"20.0M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"odfpy","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.24,"mem_mb":6.3,"disk_size":"20.0M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"odfpy","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.7,"import_time_s":0.19,"mem_mb":6.3,"disk_size":"20M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"odfpy","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.21,"mem_mb":6.3,"disk_size":"20M"}]}}