{"library":"pynastran","title":"pyNastran: Nastran File Reader/Editor","description":"pyNastran is an open-source Python library for reading, editing, and writing Nastran BDF, OP2, OP4, and F06 files, commonly used in finite element analysis (FEA). It supports various Nastran versions and provides tools for visualizing and manipulating FEA data. The library is actively maintained, with version 1.4.1 being the latest stable release and a consistent release cadence.","language":"python","status":"active","last_verified":"Sun May 17","install":{"commands":["pip install pynastran","pip install pynastran[plotting]"],"cli":null},"imports":["from pyNastran.bdf.bdf import BDF","from pyNastran.op2.op2 import OP2","from pyNastran.f06.f06 import F06"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom pyNastran.bdf.bdf import BDF\n\n# Create a dummy BDF file for demonstration\nbdf_content = \"\"\"\nSOL 101\nCEND\nBEGIN BULK\nGRID,1,,0.0,0.0,0.0\nGRID,2,,1.0,0.0,0.0\nCQUAD4,1,1,1,2,3,4\nENDDATA\n\"\"\"\ndummy_bdf_path = \"dummy.bdf\"\nwith open(dummy_bdf_path, \"w\") as f:\n    f.write(bdf_content)\n\n# Read the BDF file\nmodel = BDF()\ntry:\n    # xref=True is crucial for resolving cross-references and building a complete model\n    model.read_bdf(dummy_bdf_path, xref=True)\n    print(f\"Successfully read {dummy_bdf_path}\")\n    print(f\"Number of GRIDs: {len(model.nodes)}\")\n    print(f\"Number of CQUAD4 elements: {len(model.elements)}\")\n\n    # Accessing specific data (example)\n    if 1 in model.nodes:\n        print(f\"Node 1 coordinates: {model.nodes[1].xyz}\")\nexcept Exception as e:\n    print(f\"Error reading BDF file: {e}\")\nfinally:\n    # Clean up the dummy file\n    if os.path.exists(dummy_bdf_path):\n        os.remove(dummy_bdf_path)\n","lang":"python","description":"This quickstart demonstrates how to create a dummy BDF file, read it using the `BDF` class, and access basic model information like nodes and elements. The `xref=True` argument in `read_bdf` is highlighted as essential for properly populating the model with cross-referenced data.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"1.4.1","pypi_latest":"1.4.1","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":80,"avg_install_s":14,"avg_import_s":1.28,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pynastran","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.93,"mem_mb":33.1,"disk_size":"358.3M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"plotting","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.95,"mem_mb":33.1,"disk_size":"358.3M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pynastran","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":13,"import_time_s":0.77,"mem_mb":33.1,"disk_size":"350M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"plotting","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":13.4,"import_time_s":0.83,"mem_mb":33,"disk_size":"350M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pynastran","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.8,"mem_mb":41.2,"disk_size":"389.5M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"plotting","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.86,"mem_mb":41.2,"disk_size":"389.5M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pynastran","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":13.3,"import_time_s":1.69,"mem_mb":41.2,"disk_size":"379M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"plotting","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":13.4,"import_time_s":1.65,"mem_mb":41.2,"disk_size":"379M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pynastran","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.73,"mem_mb":40.1,"disk_size":"372.4M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"plotting","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.7,"mem_mb":40.1,"disk_size":"372.4M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pynastran","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":14.7,"import_time_s":1.72,"mem_mb":40.1,"disk_size":"362M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"plotting","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":13.6,"import_time_s":1.78,"mem_mb":40.1,"disk_size":"362M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pynastran","exit_code":1,"wheel_type":null,"failure_reason":"build_error","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":"plotting","exit_code":1,"wheel_type":null,"failure_reason":"build_error","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":"pynastran","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":6.7,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"plotting","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":6.8,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pynastran","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.8,"mem_mb":31.3,"disk_size":"348.4M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"plotting","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.82,"mem_mb":31.3,"disk_size":"348.4M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pynastran","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":15.3,"import_time_s":0.71,"mem_mb":31.3,"disk_size":"343M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"plotting","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":15.2,"import_time_s":0.75,"mem_mb":31.3,"disk_size":"343M"}]}}