# Path: soupsieve/pretty.py
# def pretty(obj: Any) -> str:  # pragma: no cover
#     """Make the object output string pretty."""
# 
#     sel = str(obj)
#     index = 0
#     end = len(sel) - 1
#     indent = 0
#     output = []
# 
#     while index <= end:
#         m = None
#         for k, v in TOKENS.items():
#             m = v.match(sel, index)
# 
#             if m:
#                 name = k
#                 index = m.end(0)
#                 if name in ('class', 'lstrt', 'dstrt', 'tstrt'):
#                     indent += 4
#                     output.append('{}\n{}'.format(m.group(0), " " * indent))
#                 elif name in ('param', 'int', 'kword', 'sqstr', 'dqstr', 'empty'):
#                     output.append(m.group(0))
#                 elif name in ('lend', 'dend', 'tend'):
#                     indent -= 4
#                     output.append(m.group(0))
#                 elif name in ('sep',):
#                     output.append('{}\n{}'.format(m.group(1), " " * indent))
#                 elif name in ('dsep',):
#                     output.append('{} '.format(m.group(1)))
#                 break
# 
#     return ''.join(output)


import copyreg
from .pretty import pretty
from typing import Any, Type, Tuple, Union, Dict, Iterator, Hashable, Optional, Pattern, Iterable, Mapping
    def __ne__(self, other: Any) -> bool:
        """Equal."""

        return (
            not isinstance(other, self.__base__()) or
            any([getattr(other, key) != getattr(self, key) for key in self.__slots__ if key != '_hash'])
        )

    def __hash__(self) -> int:
        """Hash."""

        return self._hash

    def __setattr__(self, name: str, value: Any) -> None:
        """Prevent mutability."""

        raise AttributeError("'{}' is immutable".format(self.__class__.__name__))

    def __repr__(self) -> str:  # pragma: no cover
        """Representation."""

        return "{}({})".format(
            self.__class__.__name__, ', '.join(["{}={!r}".format(k, getattr(self, k)) for k in self.__slots__[:-1]])
        )

    __str__ = __repr__

    def pretty(self) -> None:  # pragma: no cover
        """Pretty print."""


# Path: soupsieve/pretty.py
# def pretty(obj: Any) -> str:  # pragma: no cover
#     """Make the object output string pretty."""
# 
#     sel = str(obj)
#     index = 0
#     end = len(sel) - 1
#     indent = 0
#     output = []
# 
#     while index <= end:
#         m = None
#         for k, v in TOKENS.items():
#             m = v.match(sel, index)
# 
#             if m:
#                 name = k
#                 index = m.end(0)
#                 if name in ('class', 'lstrt', 'dstrt', 'tstrt'):
#                     indent += 4
#                     output.append('{}\n{}'.format(m.group(0), " " * indent))
#                 elif name in ('param', 'int', 'kword', 'sqstr', 'dqstr', 'empty'):
#                     output.append(m.group(0))
#                 elif name in ('lend', 'dend', 'tend'):
#                     indent -= 4
#                     output.append(m.group(0))
#                 elif name in ('sep',):
#                     output.append('{}\n{}'.format(m.group(1), " " * indent))
#                 elif name in ('dsep',):
#                     output.append('{} '.format(m.group(1)))
#                 break
# 
#     return ''.join(output)


# Path: soupsieve/css_types.py
import copyreg
from .pretty import pretty
from typing import Any, Type, Tuple, Union, Dict, Iterator, Hashable, Optional, Pattern, Iterable, Mapping

    def __ne__(self, other: Any) -> bool:
        """Equal."""

        return (
            not isinstance(other, self.__base__()) or
            any([getattr(other, key) != getattr(self, key) for key in self.__slots__ if key != '_hash'])
        )

    def __hash__(self) -> int:
        """Hash."""

        return self._hash

    def __setattr__(self, name: str, value: Any) -> None:
        """Prevent mutability."""

        raise AttributeError("'{}' is immutable".format(self.__class__.__name__))

    def __repr__(self) -> str:  # pragma: no cover
        """Representation."""

        return "{}({})".format(
            self.__class__.__name__, ', '.join(["{}={!r}".format(k, getattr(self, k)) for k in self.__slots__[:-1]])
        )

    __str__ = __repr__

    def pretty(self) -> None:  # pragma: no cover
        """Pretty print."""


        print(pretty(self))