{"library":"pymarkdownlnt","title":"PyMarkdown Linter","description":"PyMarkdown is a comprehensive Markdown linter that scans files against a robust set of rules to identify potential problems and style issues. It adheres to both GitHub Flavored Markdown and CommonMark specifications, offering both 'scan' mode to detect issues and 'fix' mode to automatically correct certain violations. The project maintains an active and consistent release schedule, typically delivering updates every 1-2 months, with a strong focus on enhancing documentation and continuous improvement.","language":"python","status":"active","last_verified":"Fri May 15","install":{"commands":["pip install pymarkdownlnt"],"cli":{"name":"pymarkdown","version":"usage: pymarkdown [-h] [-e ENABLE_RULES] [-d DISABLE_RULES]"}},"imports":["from pymarkdown.api import PyMarkdownApi"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom pymarkdown.api import PyMarkdownApi\n\n# Create a dummy Markdown file for scanning\nmarkdown_content = \"\"\"\n# Heading 1\n\nThis is some text.\n\n  * Item 1\n  * Item 2\n\nThis is some more text with  extra  spaces.\n\"\"\"\nfile_path = \"example.md\"\nwith open(file_path, \"w\") as f:\n    f.write(markdown_content)\n\n# Initialize the API\napi = PyMarkdownApi()\n\n# Scan the file\nscan_results = api.scan_path(file_path)\n\nprint(f\"Scanning: {file_path}\")\nif scan_results.pragma_errors or scan_results.scan_failures:\n    print(\"Found issues:\")\n    for failure in scan_results.scan_failures:\n        print(f\"  {failure.log_file}: Line {failure.line_number}, Col {failure.column_number}: {failure.rule_id} - {failure.rule_name} ({failure.rule_description})\")\nelse:\n    print(\"No issues found.\")\n\n# Optionally, fix the file (if fixable rules triggered)\n# fix_results = api.fix_path(file_path)\n# if fix_results.result_file_was_changed:\n#     print(f\"File '{file_path}' was fixed.\")\n#     with open(file_path, 'r') as f:\n#         print('Fixed content:\\n' + f.read())\n# else:\n#     print(f\"File '{file_path}' did not require fixing.\")\n\nos.remove(file_path)\n","lang":"python","description":"This quickstart demonstrates how to programmatically use PyMarkdown to scan a Markdown file for issues. It creates a temporary Markdown file, initializes the PyMarkdownApi, scans the file, and prints any detected failures. The fix functionality is commented out but shows how to apply automatic corrections if available.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-15","installed_version":"0.9.33","pypi_latest":"0.9.37","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2.8,"avg_import_s":0.66,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pymarkdownlnt","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.6,"mem_mb":11.6,"disk_size":"31.8M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pymarkdownlnt","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.7,"import_time_s":0.37,"mem_mb":11.6,"disk_size":"29M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pymarkdownlnt","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.99,"mem_mb":13.1,"disk_size":"35.8M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pymarkdownlnt","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3,"import_time_s":0.83,"mem_mb":13.1,"disk_size":"33M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pymarkdownlnt","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.71,"mem_mb":12.8,"disk_size":"27.4M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pymarkdownlnt","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.7,"import_time_s":0.76,"mem_mb":12.8,"disk_size":"25M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pymarkdownlnt","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.69,"mem_mb":13.9,"disk_size":"27.2M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pymarkdownlnt","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.6,"import_time_s":0.74,"mem_mb":13.9,"disk_size":"25M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pymarkdownlnt","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.53,"mem_mb":10.6,"disk_size":"30.6M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pymarkdownlnt","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.9,"import_time_s":0.41,"mem_mb":10.6,"disk_size":"28M"}]}}