@abc.abstractmethod<EOL><INDENT>def get_calendar_formatting_session_for_type(self, calendar_type, calendar_format_type, time_type, time_format_type):<DEDENT>
return<EOL>
Gets an ``OsidSession`` associated with the calendar formatting service and the given calendar and time types.

        :param calendar_type: the type of the calendar
        :type calendar_type: ``osid.type.Type``
        :param calendar_format_type: the type of the calendar format
        :type calendar_format_type: ``osid.type.Type``
        :param time_type: the type of the time system
        :type time_type: ``osid.type.Type``
        :param time_format_type: the type of the time format
        :type time_format_type: ``osid.type.Type``
        :return: a ``CalendarFormattingSession``
        :rtype: ``osid.locale.CalendarFormattingSession``
        :raise: ``NullArgument`` -- ``calendar_type, calendar_format_type, time_type`` or ``time_format_type`` is ``null``
        :raise: ``OperationFailed`` -- unable to complete request
        :raise: ``Unimplemented`` -- ``supports_calendar_formatting()`` or ``supports_visible_federation()`` is ``false``
        :raise: ``Unsupported`` -- ``supports_calendar_types_for_formattinge(calendar_type, calendar_format_type, time_type, time_format_type)`` is ``false``

        *compliance: optional -- This method must be implemented if
        ``supports_calendar_formatting()`` and
        ``supports_visible_federation()`` are ``true``.*