def _default_value_formatter( human_readable, field_limit, utc_timestamps=True, encoding='utf-8', ): """ Create a value formatter based on several user-specified options. """ fields = {} if human_readable: fields = { eliot_ns(u'timestamp'): format.timestamp(include_microsecond=False, utc_timestamps=utc_timestamps), eliot_ns(u'duration'): format.duration(), } return compose( # We want tree-format to handle newlines. partial(format.escape_control_characters, overrides={0x0a: u'\n'}), partial(format.truncate_value, field_limit) if field_limit else identity, format.some(format.fields(fields), format.text(), format.binary(encoding), format.anything(encoding)))
def test_text(self): """ Text values are returned as is. """ self.assertThat(format.text()(u'\N{SNOWMAN}'), ExactlyEquals(u'\N{SNOWMAN}'))
def test_not_text(self): """ Not text values are ignored. """ self.assertThat(format.text()(b'hello'), Is(None))