Source code for pyswagger.primitives._time

from __future__ import absolute_import
from ..utils import from_iso8601
import datetime
import six


class Time(object):
    """ Base of Datetime & Date
    """

    def __str__(self):
        return str(self.to_json())

    def to_json(self):
        # according to
        #   https://github.com/wordnik/swagger-spec/issues/95
        return self.v.isoformat()


[docs]class Date(Time): """ for string type, date format """
[docs] def apply_with(self, _, v, ctx): """ constructor :param v: things used to constrcut date :type v: timestamp in float, datetime.date object, or ISO-8601 in str """ self.v = None if isinstance(v, float): self.v = datetime.date.fromtimestamp(v) elif isinstance(v, datetime.date): self.v = v elif isinstance(v, six.string_types): self.v = from_iso8601(v).date() else: raise ValueError('Unrecognized type for Date: ' + str(type(v)))
[docs]class Datetime(Time): """ for string type, datetime format """
[docs] def apply_with(self, _, v, ctx): """ constructor :param v: things used to constrcut date :type v: timestamp in float, datetime.datetime object, or ISO-8601 in str """ self.v = None if isinstance(v, float): self.v = datetime.datetime.utcfromtimestamp(v) elif isinstance(v, datetime.datetime): self.v = v elif isinstance(v, six.string_types): self.v = from_iso8601(v) else: raise ValueError('Unrecognized type for Datetime: ' + str(type(v)))