def test_registration_with_default(expect):

    converters.register(datetime, DateTimeConverter)

    @datafile("../tmp/sample.yml")
    class Timestamp:
        dt: datetime = None

    ts = Timestamp(datetime(2019, 1, 29))
    expect(ts.datafile.text) == "dt: '2019-01-29T00:00:00'\n"

    ts = Timestamp()
    expect(ts.dt) == datetime(2019, 1, 29)

    ts.datafile.text = "dt: '2019-01-22T00:00:00'\n"
    expect(ts.dt.day) == 22
示例#2
0
        return self.account_age.total_seconds() / 3600

    @property
    def account_age_in_years(self) -> float:
        return self.account_age_in_hours / 24 / 365.25

    @property
    def tweets_per_hour(self) -> float:
        return self.tweets / self.account_age_in_hours


@datafile("../data/blocklist.json", defaults=True)
class Blocklist:
    bots: List[Account] = field(default_factory=list)


class DateTimeConverter(converters.Converter):
    # pylint: disable=arguments-differ,unused-argument
    @classmethod
    def to_preserialization_data(cls, python_value, **kwargs):
        if isinstance(python_value, datetime):
            return python_value.isoformat()
        return python_value

    @classmethod
    def to_python_value(cls, deserialized_data, **kwargs):
        return datetime.fromisoformat(deserialized_data)


converters.register(datetime, DateTimeConverter)
示例#3
0
 def with_new_type(expect):
     converters.register(MyCustomString, converters.String)
     converter = converters.map_type(MyCustomString)
     expect(converter) == converters.String