)]}'
{"oslo_utils/tests/test_timeutils.py":[{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"801cd96ad38a030e6518e6a302c650d3198780c4","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        backagain \u003d timeutils.unmarshall_time(binary)"},{"line_number":200,"context_line":"        self.assertEqual(now, backagain)"},{"line_number":201,"context_line":"        self.assertIsNotNone(backagain.tzinfo)"},{"line_number":202,"context_line":"        self.assertEqual(now.utcoffset(), backagain.utcoffset())"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    def test_unmarshall_time_leap_second(self):"},{"line_number":205,"context_line":"        leap_dict \u003d dict(day\u003d30, month\u003d6, year\u003d2015,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a0c5dc1_8eab561d","line":202,"updated":"2015-05-13 13:46:56.000000000","message":"Cool, it\u0027s enough and much better than your previous test ;)","commit_id":"a9593406616734a02532d36316cbe241cac2bbc8"}],"oslo_utils/timeutils.py":[{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"d29a50757b47e17045777a308fb62494434bfdc0","unresolved":false,"context_lines":[{"line_number":207,"context_line":"    return dict(day\u003dnow.day, month\u003dnow.month, year\u003dnow.year, hour\u003dnow.hour,"},{"line_number":208,"context_line":"                minute\u003dnow.minute, second\u003dnow.second,"},{"line_number":209,"context_line":"                microsecond\u003dnow.microsecond,"},{"line_number":210,"context_line":"                tz\u003dnow.tzinfo.tzname(None) if now.tzinfo else None)"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"def unmarshall_time(tyme):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a0c5dc1_c9fa6dbd","line":210,"updated":"2015-05-13 12:10:08.000000000","message":"\"tz\" name is usually used to pass a \"timezone info\" object. I suggest the rename the key to \"tzname\".","commit_id":"8e66fd3ebcb76508eb3cea69abf2625512f1cda0"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"801cd96ad38a030e6518e6a302c650d3198780c4","unresolved":false,"context_lines":[{"line_number":207,"context_line":"    return dict(day\u003dnow.day, month\u003dnow.month, year\u003dnow.year, hour\u003dnow.hour,"},{"line_number":208,"context_line":"                minute\u003dnow.minute, second\u003dnow.second,"},{"line_number":209,"context_line":"                microsecond\u003dnow.microsecond,"},{"line_number":210,"context_line":"                tzname\u003dnow.tzinfo.tzname(None) if now.tzinfo else None)"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"def unmarshall_time(tyme):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a0c5dc1_0ed2c6d2","line":210,"updated":"2015-05-13 13:46:56.000000000","message":"Instead of storing None in the dict, it may be better to simply omit the key:\n\nbinary \u003d dict(...)\nif now.tzinfo:\n  binary[\u0027tzname\u0027] \u003d now.tzinfo.tzname(None)\n\nSorry, I didn\u0027t notice this before.","commit_id":"a9593406616734a02532d36316cbe241cac2bbc8"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"03fac1e9a8327ac553fa009821c90dacdf58d7a4","unresolved":false,"context_lines":[{"line_number":207,"context_line":"    return dict(day\u003dnow.day, month\u003dnow.month, year\u003dnow.year, hour\u003dnow.hour,"},{"line_number":208,"context_line":"                minute\u003dnow.minute, second\u003dnow.second,"},{"line_number":209,"context_line":"                microsecond\u003dnow.microsecond,"},{"line_number":210,"context_line":"                tzname\u003dnow.tzinfo.tzname(None) if now.tzinfo else None)"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"def unmarshall_time(tyme):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a0c5dc1_e22663cd","line":210,"in_reply_to":"9a0c5dc1_0ed2c6d2","updated":"2015-05-13 15:05:08.000000000","message":"Done","commit_id":"a9593406616734a02532d36316cbe241cac2bbc8"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"801cd96ad38a030e6518e6a302c650d3198780c4","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                           second\u003dsecond,"},{"line_number":226,"context_line":"                           microsecond\u003dtyme[\u0027microsecond\u0027])"},{"line_number":227,"context_line":"    tzname \u003d tyme.get(\u0027tzname\u0027)"},{"line_number":228,"context_line":"    if tzname is not None:"},{"line_number":229,"context_line":"        tzinfo \u003d timezone(tzname)"},{"line_number":230,"context_line":"        dt \u003d tzinfo.localize(dt)"},{"line_number":231,"context_line":"    return dt"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a0c5dc1_8ee6b6b2","line":228,"updated":"2015-05-13 13:46:56.000000000","message":"You might replace it with \"if tzname:\" to skip empty timezone name (even if it\u0027s unlikely).","commit_id":"a9593406616734a02532d36316cbe241cac2bbc8"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"03fac1e9a8327ac553fa009821c90dacdf58d7a4","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                           second\u003dsecond,"},{"line_number":226,"context_line":"                           microsecond\u003dtyme[\u0027microsecond\u0027])"},{"line_number":227,"context_line":"    tzname \u003d tyme.get(\u0027tzname\u0027)"},{"line_number":228,"context_line":"    if tzname is not None:"},{"line_number":229,"context_line":"        tzinfo \u003d timezone(tzname)"},{"line_number":230,"context_line":"        dt \u003d tzinfo.localize(dt)"},{"line_number":231,"context_line":"    return dt"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a0c5dc1_a2074b1b","line":228,"in_reply_to":"9a0c5dc1_8ee6b6b2","updated":"2015-05-13 15:05:08.000000000","message":"Done","commit_id":"a9593406616734a02532d36316cbe241cac2bbc8"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"130cd3546c43beeee091d48dfb5eb59f09ddb311","unresolved":false,"context_lines":[{"line_number":208,"context_line":"             minute\u003dnow.minute, second\u003dnow.second,"},{"line_number":209,"context_line":"             microsecond\u003dnow.microsecond)"},{"line_number":210,"context_line":"    if now.tzinfo:"},{"line_number":211,"context_line":"        d[\u0027tzname\u0027] \u003d now.tzinfo.tzname(None)"},{"line_number":212,"context_line":"    return d"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a0c5dc1_21b59830","line":211,"updated":"2015-05-13 15:24:28.000000000","message":"The timezone name changes depending on the datetime, but the tzname() method accepts None.\n\n \u003e\u003e\u003e import pytz, datetime \n \u003e\u003e\u003e t\u003dpytz.timezone(\u0027Europe/Paris\u0027)\n \u003e\u003e\u003e t.tzname(datetime.datetime.now())\n \u0027CEST\u0027\n \u003e\u003e\u003e t.tzname(datetime.datetime(2015, 1, 1))\n \u0027CET\u0027\n \u003e\u003e\u003e t.tzname(None)\n \u0027Europe/Paris\u0027\n\nIMO \"Europe/Paris\" timezone name is better than \"CEST\" or \"CET\" because it contains more information, so calling tzname() with None is correct.","commit_id":"d0993d7cc08ff3838ba484aa3588ea70ca600ec4"}],"tests/test_timeutils.py":[{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"d29a50757b47e17045777a308fb62494434bfdc0","unresolved":false,"context_lines":[{"line_number":204,"context_line":"    def test_marshall_time_with_tz(self):"},{"line_number":205,"context_line":"        now \u003d timeutils.utcnow()"},{"line_number":206,"context_line":"        now.replace(tzinfo\u003diso8601.iso8601.UTC)"},{"line_number":207,"context_line":"        binary \u003d timeutils.marshall_now(now)"},{"line_number":208,"context_line":"        backagain \u003d timeutils.unmarshall_time(binary)"},{"line_number":209,"context_line":"        self.assertEqual(now, backagain)"},{"line_number":210,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a0c5dc1_6916e1f2","line":207,"updated":"2015-05-13 12:10:08.000000000","message":"You may check the value of the tz (tzname) key here.","commit_id":"8e66fd3ebcb76508eb3cea69abf2625512f1cda0"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"b50e0fd880edd6f19de82589a30f0631f6855cae","unresolved":false,"context_lines":[{"line_number":204,"context_line":"    def test_marshall_time_with_tz(self):"},{"line_number":205,"context_line":"        now \u003d timeutils.utcnow()"},{"line_number":206,"context_line":"        now.replace(tzinfo\u003diso8601.iso8601.UTC)"},{"line_number":207,"context_line":"        binary \u003d timeutils.marshall_now(now)"},{"line_number":208,"context_line":"        backagain \u003d timeutils.unmarshall_time(binary)"},{"line_number":209,"context_line":"        self.assertEqual(now, backagain)"},{"line_number":210,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a0c5dc1_648f28cd","line":207,"in_reply_to":"9a0c5dc1_6916e1f2","updated":"2015-05-13 12:49:55.000000000","message":"Done","commit_id":"8e66fd3ebcb76508eb3cea69abf2625512f1cda0"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"d29a50757b47e17045777a308fb62494434bfdc0","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        now.replace(tzinfo\u003diso8601.iso8601.UTC)"},{"line_number":207,"context_line":"        binary \u003d timeutils.marshall_now(now)"},{"line_number":208,"context_line":"        backagain \u003d timeutils.unmarshall_time(binary)"},{"line_number":209,"context_line":"        self.assertEqual(now, backagain)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    def test_delta_seconds(self):"},{"line_number":212,"context_line":"        before \u003d timeutils.utcnow()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a0c5dc1_89f235d1","line":209,"updated":"2015-05-13 12:10:08.000000000","message":"Hum, I\u0027m not sure that Equal checks the timezone. Could you please try to explicitly check that the timezone is the same? At least check the offset.","commit_id":"8e66fd3ebcb76508eb3cea69abf2625512f1cda0"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"b50e0fd880edd6f19de82589a30f0631f6855cae","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        now.replace(tzinfo\u003diso8601.iso8601.UTC)"},{"line_number":207,"context_line":"        binary \u003d timeutils.marshall_now(now)"},{"line_number":208,"context_line":"        backagain \u003d timeutils.unmarshall_time(binary)"},{"line_number":209,"context_line":"        self.assertEqual(now, backagain)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    def test_delta_seconds(self):"},{"line_number":212,"context_line":"        before \u003d timeutils.utcnow()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a0c5dc1_44bd4467","line":209,"in_reply_to":"9a0c5dc1_89f235d1","updated":"2015-05-13 12:49:55.000000000","message":"Done","commit_id":"8e66fd3ebcb76508eb3cea69abf2625512f1cda0"}]}
