    Import requirements::

        >>> import yafowil.loader
        >>> from yafowil.base import factory

    Render map widget with defaults::

        >>> widget = factory('location', 'default')
        >>> pxml(widget())
    Render map widget with defaults value::

        >>> value = {
        ...     'lat': 47.2500,
        ...     'lon': 11.3333,
        ...     'zoom': 14,
        ... }
        >>> widget = factory('location', 'default', value=value)
        >>> pxml(widget())
    Display renderer is not implemented::

        >>> widget = factory('location', 'default', mode='display')
        >>> widget()

    Widget extraction with invalid request::

        >>> widget = factory('location', 'default', props={'required': True})
        >>> request = {
        ...     'default.lat': '',
        ... }
        >>> data = widget.extract(request)
        Traceback (most recent call last):
          ...
        ValueError: Malformed request. Cannot extract Coordinates

    Widget extraction without preset value::

        >>> widget = factory('location', 'default', props={'required': True})
        >>> request = {}
        >>> data = widget.extract(request)
        >>> data.extracted
        >>> request = {
        ...     'default.lat': '',
        ...     'default.lon': '',
        ...     'default.zoom': '',
        ... }
        >>> data = widget.extract(request)

        >>> data.errors
        [ExtractionError('Mandatory field was empty',)]

        >>> data.extracted
        {}

        >>> request = {
        ...     'default.lat': '47.2667',
        ...     'default.lon': '11.3833',
        ...     'default.zoom': '6',
        ... }
        >>> data = widget.extract(request)

        >>> data.errors
        []

        >>> data.extracted
        {'lat': 47.2667, 'lon': 11.3833, 'zoom': 6}

    Widget extraction with preset value::

        >>> value = {
        ...     'lat': '47.0',
        ...     'lon': '11.0',
        ... }
        >>> widget = factory('location', 'default', value=value,
        ...     props={
        ...         'required': True,
        ...     })
        >>> request = {}
        >>> data = widget.extract(request)
        >>> data.extracted
>>> pxml(widget(data=data))
        >>> request = {
        ...     'default.lat': '',
        ...     'default.lon': '',
        ...     'default.zoom': '',
        ... }
        >>> data = widget.extract(request)

        >>> data.errors
        [ExtractionError('Mandatory field was empty',)]

        >>> data.extracted
        {}

        >>> pxml(widget(data=data))
        >>> request = {
        ...     'default.lat': '47.2667',
        ...     'default.lon': '11.3833',
        ...     'default.zoom': '8',
        ... }
        >>> data = widget.extract(request)

        >>> data.errors
        []

        >>> data.extracted
        {'lat': 47.2667, 'lon': 11.3833, 'zoom': 8}

        >>> pxml(widget(data=data))