# html_to_markdown/conversion_options.py from typing import Callable, Optional, Union, Dict, Any, List from dataclasses import dataclass, field from s_types import SemanticMarkdownAST, CustomNode @dataclass class ConversionOptions: website_domain: Optional[str] = None extract_main_content: bool = False refify_urls: bool = False url_map: Dict[str, str] = field(default_factory=dict) debug: bool = False override_dom_parser: Optional[Callable[[str], Any]] = None # Placeholder for DOMParser override enable_table_column_tracking: bool = False override_element_processing: Optional[Callable[[Any, 'ConversionOptions', int], Optional[List[SemanticMarkdownAST]]]] = None process_unhandled_element: Optional[Callable[[Any, 'ConversionOptions', int], Optional[List[SemanticMarkdownAST]]]] = None override_node_renderer: Optional[Callable[[SemanticMarkdownAST, 'ConversionOptions', int], Optional[str]]] = None render_custom_node: Optional[Callable[[CustomNode, 'ConversionOptions', int], Optional[str]]] = None include_meta_data: Union[str, bool] = False # 'basic', 'extended', or False