| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent cfa05d3 commit e464cb4
3 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -285,6 +285,8 @@ cdef class Packer(object): | |||
| 285 | 285 | o = self._default(o) | |
| 286 | 286 | default_used = 1 | |
| 287 | 287 | continue | |
| 288 | + elif self.datetime and PyDateTime_CheckExact(o): | ||
| 289 | + PyErr_Format(ValueError, b"can not serialize '%.200s' object where tzinfo=None", Py_TYPE(o).tp_name) | ||
| 288 | 290 | else: | |
| 289 | 291 | PyErr_Format(TypeError, b"can not serialize '%.200s' object", Py_TYPE(o).tp_name) | |
| 290 | 292 | return ret | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -874,6 +874,10 @@ def _pack( | |||
| 874 | 874 | obj = self._default(obj) | |
| 875 | 875 | default_used = 1 | |
| 876 | 876 | continue | |
| 877 | + | ||
| 878 | + if self._datetime and check(obj, _DateTime): | ||
| 879 | + raise ValueError("Cannot serialize %r where tzinfo=None" % (obj,)) | ||
| 880 | + | ||
| 877 | 881 | raise TypeError("Cannot serialize %r" % (obj,)) | |
| 878 | 882 | ||
| 879 | 883 | def pack(self, obj): | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -140,3 +140,19 @@ def test_issue451(): | |||
| 140 | 140 | ||
| 141 | 141 | unpacked = msgpack.unpackb(packed, timestamp=3) | |
| 142 | 142 | assert dt == unpacked | |
| 143 | + | ||
| 144 | + | ||
| 145 | + @pytest.mark.skipif(sys.version_info[0] == 2, reason="datetime support is PY3+ only") | ||
| 146 | + def test_pack_datetime_without_tzinfo(): | ||
| 147 | + dt = datetime.datetime(1970, 1, 1, 0, 0, 42, 14) | ||
| 148 | + with pytest.raises(ValueError, match="where tzinfo=None"): | ||
| 149 | + packed = msgpack.packb(dt, datetime=True) | ||
| 150 | + | ||
| 151 | + dt = datetime.datetime(1970, 1, 1, 0, 0, 42, 14) | ||
| 152 | + packed = msgpack.packb(dt, datetime=True, default=lambda x: None) | ||
| 153 | + assert packed == msgpack.packb(None) | ||
| 154 | + | ||
| 155 | + dt = datetime.datetime(1970, 1, 1, 0, 0, 42, 14, tzinfo=_utc) | ||
| 156 | + packed = msgpack.packb(dt, datetime=True) | ||
| 157 | + unpacked = msgpack.unpackb(packed, timestamp=3) | ||
| 158 | + assert unpacked == dt | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments