<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sun, Dec 20, 2015 at 5:00 PM, Alexander Belopolsky <span dir="ltr"><<a href="mailto:alexander.belopolsky@gmail.com" target="_blank">alexander.belopolsky@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote"><span class="">On Sun, Dec 20, 2015 at 5:28 PM, Chris Angelico <span dir="ltr"><<a href="mailto:rosuav@gmail.com" target="_blank">rosuav@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="overflow:hidden">> A helpful trivia: a year is approximately π times 10 million seconds.<br>
<br>
Sadly doesn't help here, as the timedelta for a number of years looks like this:<br>
<br>
>>> datetime.timedelta(days=365*11)<br>
datetime.timedelta(4015)<br>
<br></div></blockquote><div><br></div></span><div>The original issue was how long is a million seconds.  The bit of trivia that I suggested helps to establish that it cannot be a multiple of years.</div></div></div></div></blockquote><div><br></div><div>But it's entirely arbitrary, which makes it not that easy to remember.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="overflow:hidden">
Would there be value in changing the repr to use keyword arguments?</div></blockquote><div><br></div></span><div>I don't think translating from seconds to years will be any simpler with any alternative  repr,</div></div></div></div></blockquote><div><br></div><div>Well it would have saved me an embarrassing moment -- I typed `datetime.timedelta(seconds=1e6)` at the command prompt and when the response came as `datetime.timedelta(11, 49600)` I mistook that as 11 years (I was in a hurry and trying hard not to have to think :-).<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>but I would really like to see a change in the repr of negative timedeltas:</div><div><br></div><div><div>>>> timedelta(minutes=-1)</div><div>datetime.timedelta(-1, 86340)<br><br></div></div></div></div></div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_extra">And str() is not much better:</div><div class="gmail_extra"><br></div><div class="gmail_extra">>>> print(timedelta(minutes=-1))</div><div class="gmail_extra">-1 day, 23:59:00</div><div class="gmail_extra"><br></div>The above does not qualify as a human readable representation IMO.</div></div>
</blockquote></div><br></div><div class="gmail_extra">I'm sure that one often catches people by surprise. However, I don't think we can fix that one without also fixing the values of the attributes -- in that example days is -1 and seconds is 86340 (which will *also* catch people by surprise). And changing that would be much, much harder for backwards compatibility reasons-- we'd have to set days to 0 and seconds to -60, and suddenly we have a much murkier invariant, instead of the crisp<br><br></div><div class="gmail_extra">    0 <= microseconds < 1000000<br></div><div class="gmail_extra">    0 <= seconds < 60<br><br>(There is no such invariant for days -- they hold the sign bit.)<br><br>In essence, you'd have to look at all three attributes to figure out on which side of 0 is was (or think of the right way to do it, which is to compare to timedelta(0)). I might still go for it, if it wasn't too late by over a decade (as Tim says).<br clear="all"></div><div class="gmail_extra"><br>-- <br><div class="gmail_signature">--Guido van Rossum (<a href="http://python.org/~guido" target="_blank">python.org/~guido</a>)</div>
</div></div>