{"library":"rich-text-renderer","title":"Contentful Rich Text Renderer","description":"The Contentful Rich Text Renderer is a Python library designed to serialize the RichText field type from Contentful into its corresponding HTML representation by default. It provides flexible rendering capabilities, allowing for full customization of node and mark rendering. It is commonly used alongside the Contentful Delivery SDK. The current version is 0.2.8, and releases are typically tied to updates in the Contentful ecosystem as needed.","language":"python","status":"active","last_verified":"Sun May 17","install":{"commands":["pip install rich-text-renderer"],"cli":null},"imports":["from rich_text_renderer import RichTextRenderer","from rich_text_renderer.base_renderer import BLOCKS","from rich_text_renderer.base_renderer import MARKS","from rich_text_renderer.base_node_renderer import BaseNodeRenderer"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"from rich_text_renderer import RichTextRenderer\n\n# Example Rich Text document (typically obtained from Contentful API)\ndocument = {\n    'nodeType': 'document',\n    'data': {},\n    'content': [\n        {\n            'nodeType': 'paragraph',\n            'data': {},\n            'content': [\n                {'nodeType': 'text', 'value': 'Hello, ', 'marks': []},\n                {'nodeType': 'text', 'value': 'Contentful Rich Text!', 'marks': [{'type': 'bold'}]}\n            ]\n        }\n    ]\n}\n\nrenderer = RichTextRenderer()\nhtml_output = renderer.render(document)\nprint(html_output)\n\n# Example with a custom renderer for a specific block type (e.g., 'embedded-entry-block')\nfrom rich_text_renderer.base_node_renderer import BaseNodeRenderer\nfrom rich_text_renderer.base_renderer import BLOCKS\n\nclass MyEntryBlockRenderer(BaseNodeRenderer):\n    def render(self, node):\n        entry_id = node['data']['target']['sys']['id']\n        # In a real application, you would fetch entry data using the Contentful SDK\n        # For this example, we'll just return a placeholder HTML string.\n        return f'<div class=\"embedded-entry\" data-entry-id=\"{entry_id}\">Custom Embedded Entry: {entry_id}</div>'\n\ncustom_renderer = RichTextRenderer({\n    BLOCKS.EMBEDDED_ENTRY: MyEntryBlockRenderer()\n})\n\ndocument_with_entry = {\n    'nodeType': 'document',\n    'data': {},\n    'content': [\n        {\n            'nodeType': 'paragraph',\n            'data': {},\n            'content': [\n                {'nodeType': 'text', 'value': 'Here is an ', 'marks': []},\n                {'nodeType': 'text', 'value': 'embedded entry:', 'marks': [{'type': 'italic'}]}\n            ]\n        },\n        {\n            'nodeType': 'embedded-entry-block',\n            'data': {\n                'target': {\n                    'sys': {'id': 'my-custom-entry', 'type': 'Link', 'linkType': 'Entry'}\n                }\n            },\n            'content': []\n        }\n    ]\n}\n\nhtml_output_custom = custom_renderer.render(document_with_entry)\nprint('\\n--- With Custom Renderer ---')\nprint(html_output_custom)","lang":"python","description":"Initializes `RichTextRenderer` and renders a sample Rich Text JSON document to HTML. It also demonstrates how to provide a custom renderer for specific block types like 'embedded-entry-block' to control how linked entries are displayed.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"0.2.8","pypi_latest":"0.2.8","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":1.5,"avg_import_s":0.01,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"rich-text-renderer","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.01,"mem_mb":0.2,"disk_size":"17.8M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"rich-text-renderer","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0,"mem_mb":0.2,"disk_size":"18M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"rich-text-renderer","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.01,"mem_mb":0.3,"disk_size":"19.7M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"rich-text-renderer","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.6,"import_time_s":0.01,"mem_mb":0.3,"disk_size":"20M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"rich-text-renderer","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.01,"mem_mb":0.3,"disk_size":"11.6M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"rich-text-renderer","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.4,"import_time_s":0.01,"mem_mb":0.3,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"rich-text-renderer","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.01,"mem_mb":0.5,"disk_size":"11.3M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"rich-text-renderer","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.4,"import_time_s":0.01,"mem_mb":0.3,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"rich-text-renderer","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.01,"mem_mb":0.2,"disk_size":"17.3M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"rich-text-renderer","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.7,"import_time_s":0,"mem_mb":0.2,"disk_size":"18M"}]}}