# Path: pyconll/conllable.py
# class Conllable(metaclass=abc.ABCMeta):
#     """
#     A Conllable mixin to indicate that the component can be converted into a
#     CoNLL representation.
#     """
#     @abc.abstractmethod
#     def conll(self) -> str:
#         """
#         Provides a conll representation of the component.
# 
#         Returns:
#             A string conll representation of the base component.
# 
#         Raises:
#             NotImplementedError: If the child class does not implement the
#                 method.
#         """
#         raise NotImplementedError("No implementation for conll")
# 
# Path: pyconll/exception.py
# class ParseError(ValueError):
#     """
#     Error that results from an improper value into a parsing routine.
#     """
# 
# class FormatError(ValueError):
#     """
#     Error that results from trying to format a CoNLL object to a string.
#     """


import functools
import math
from typing import Callable, ClassVar, Dict, Optional, Set, Tuple
from pyconll.conllable import Conllable
from pyconll.exception import ParseError, FormatError
        value: The value to map.
        empty: The empty representation for this unit.

    Returns:
        None if value is empty and value otherwise.
    """
    return None if value == empty else value


def _dict_empty_map_parser(v, v_delimiter):
    """
    Map a value into the appropriate form, for a standard dict based column.

    Args:
        v: The raw string value that was parsed from the column as a value.
        v_delimiter: The delimiter between components of the value.

    Returns:
        The parsed value, as a set of its components.

    Raises:
        ParseError: If there was an error parsing the value. This happens when
            the value is None.
    """
    if v is not None:
        vs = set(v.split(v_delimiter))
        return vs

    error_msg = 'Error parsing "{}" properly. Please check against CoNLL format spec.'.format(
        v)

# Path: pyconll/conllable.py
# class Conllable(metaclass=abc.ABCMeta):
#     """
#     A Conllable mixin to indicate that the component can be converted into a
#     CoNLL representation.
#     """
#     @abc.abstractmethod
#     def conll(self) -> str:
#         """
#         Provides a conll representation of the component.
# 
#         Returns:
#             A string conll representation of the base component.
# 
#         Raises:
#             NotImplementedError: If the child class does not implement the
#                 method.
#         """
#         raise NotImplementedError("No implementation for conll")
# 
# Path: pyconll/exception.py
# class ParseError(ValueError):
#     """
#     Error that results from an improper value into a parsing routine.
#     """
# 
# class FormatError(ValueError):
#     """
#     Error that results from trying to format a CoNLL object to a string.
#     """


# Path: pyconll/unit/token.py
import functools
import math
from typing import Callable, ClassVar, Dict, Optional, Set, Tuple
from pyconll.conllable import Conllable
from pyconll.exception import ParseError, FormatError

        value: The value to map.
        empty: The empty representation for this unit.

    Returns:
        None if value is empty and value otherwise.
    """
    return None if value == empty else value


def _dict_empty_map_parser(v, v_delimiter):
    """
    Map a value into the appropriate form, for a standard dict based column.

    Args:
        v: The raw string value that was parsed from the column as a value.
        v_delimiter: The delimiter between components of the value.

    Returns:
        The parsed value, as a set of its components.

    Raises:
        ParseError: If there was an error parsing the value. This happens when
            the value is None.
    """
    if v is not None:
        vs = set(v.split(v_delimiter))
        return vs

    error_msg = 'Error parsing "{}" properly. Please check against CoNLL format spec.'.format(
        v)

    raise ParseError(error_msg)