| 1814 | - *exclude_tags*: a set of tag names that should not be serialised |
| 1815 | """ |
| 1816 | def __init__(self, write, *, |
| 1817 | with_comments=False, strip_text=False, rewrite_prefixes=False, |
| 1818 | qname_aware_tags=None, qname_aware_attrs=None, |
| 1819 | exclude_attrs=None, exclude_tags=None): |
| 1820 | self._write = write |
| 1821 | self._data = [] |
| 1822 | self._with_comments = with_comments |
| 1823 | self._strip_text = strip_text |
| 1824 | self._exclude_attrs = set(exclude_attrs) if exclude_attrs else None |
| 1825 | self._exclude_tags = set(exclude_tags) if exclude_tags else None |
| 1826 | |
| 1827 | self._rewrite_prefixes = rewrite_prefixes |
| 1828 | if qname_aware_tags: |
| 1829 | self._qname_aware_tags = set(qname_aware_tags) |
| 1830 | else: |
| 1831 | self._qname_aware_tags = None |
| 1832 | if qname_aware_attrs: |
| 1833 | self._find_qname_aware_attrs = set(qname_aware_attrs).intersection |
| 1834 | else: |
| 1835 | self._find_qname_aware_attrs = None |
| 1836 | |
| 1837 | # Stack with globally and newly declared namespaces as (uri, prefix) pairs. |
| 1838 | self._declared_ns_stack = [[ |
| 1839 | ("http://www.w3.org/XML/1998/namespace", "xml"), |
| 1840 | ]] |
| 1841 | # Stack with user declared namespace prefixes as (uri, prefix) pairs. |
| 1842 | self._ns_stack = [] |
| 1843 | if not rewrite_prefixes: |
| 1844 | self._ns_stack.append(list(_namespace_map.items())) |
| 1845 | self._ns_stack.append([]) |
| 1846 | self._prefix_map = {} |
| 1847 | self._preserve_space = [False] |
| 1848 | self._pending_start = None |
| 1849 | self._root_seen = False |
| 1850 | self._root_done = False |
| 1851 | self._ignored_depth = 0 |
| 1852 | |
| 1853 | def _iter_namespaces(self, ns_stack, _reversed=reversed): |
| 1854 | for namespaces in _reversed(ns_stack): |