[issue14908] datetime.datetime should have a timestamp() method

2012-06-08 Thread Alexander Belopolsky

Alexander Belopolsky alexander.belopol...@gmail.com added the comment:

Added ReST documentation.  Will commit soon.  Merging nosy list from issue 2736.

--
nosy: +Jay.Taylor, Neil Muller, amaury.forgeotdarc, andersjm, catlee, 
davidfraser, erik.stephens, guettli, hodgestar, jribbens, mark.dickinson, ping, 
pitrou, python-dev, steve.roberts, tim_one, tomster, vivanov, werneck
stage: patch review - commit review
Added file: http://bugs.python.org/file25865/issue14908.diff

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue14908
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue14908] datetime.datetime should have a timestamp() method

2012-06-08 Thread Alexander Belopolsky

Changes by Alexander Belopolsky alexander.belopol...@gmail.com:


Removed file: http://bugs.python.org/file25858/issue14908.diff

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue14908
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue14908] datetime.datetime should have a timestamp() method

2012-06-08 Thread Alexander Belopolsky

Alexander Belopolsky alexander.belopol...@gmail.com added the comment:

I associated my commit with issue 2736 by mistake, but it is probably a good 
thing because that issue contains a longer history.

Closing this as a duplicate.

--
resolution:  - duplicate
stage: commit review - committed/rejected
status: open - closed
superseder:  - datetime needs an epoch method

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue14908
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue14908] datetime.datetime should have a timestamp() method

2012-06-07 Thread Alexander Belopolsky

Alexander Belopolsky alexander.belopol...@gmail.com added the comment:

Updated patch adds a few more tests and improves error handling in C 
implementation.

--
nosy: +haypo
Added file: http://bugs.python.org/file25858/issue14908.diff

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue14908
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue14908] datetime.datetime should have a timestamp() method

2012-06-07 Thread Alexander Belopolsky

Changes by Alexander Belopolsky alexander.belopol...@gmail.com:


Removed file: http://bugs.python.org/file25854/issue14908.diff

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue14908
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue14908] datetime.datetime should have a timestamp() method

2012-06-06 Thread Alexander Belopolsky

Alexander Belopolsky alexander.belopol...@gmail.com added the comment:

I think the attached patch implements what was agreed to on python-dev.  We 
need more tests, particularly around DST change.  I tested the patch on OSX, 
but I am interested to hear feedback from users of other OSes.

--
keywords: +patch
stage: needs patch - patch review
Added file: http://bugs.python.org/file25854/issue14908.diff

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue14908
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue14908] datetime.datetime should have a timestamp() method

2012-06-05 Thread Alexander Belopolsky

Changes by Alexander Belopolsky alexander.belopol...@gmail.com:


--
assignee:  - belopolsky
nosy:  -Alexander.Belopolsky
stage:  - needs patch

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue14908
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue14908] datetime.datetime should have a timestamp() method

2012-06-04 Thread Barry A. Warsaw

Changes by Barry A. Warsaw ba...@python.org:


--
nosy: +barry

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue14908
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue14908] datetime.datetime should have a timestamp() method

2012-06-04 Thread Barry A. Warsaw

Barry A. Warsaw ba...@python.org added the comment:

I completely agree.  As easy (but obscure) as it is, it seems quite silly to 
have to go through time.mktime(dt.timetuple())

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue14908
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue14908] datetime.datetime should have a timestamp() method

2012-06-04 Thread Alexander Belopolsky

Alexander Belopolsky alexander.belopol...@gmail.com added the comment:

Barry,

Did you review the long discussion under issue 2736?  Specifically, please  
note the part about mxDateTime, ticks() and gmticks().  I am -0 on adding 
ticks() and gmticks() and as far as I can tell no one has implemented these 
methods for datetime without introducing some subtle bugs.

I also suspect that those who ask for a timestamp() method expect that it will 
do more than

EPOCH = datetime(1970, 1, 1)
def timestamp(t):
  return (t - EPOCH).total_seconds()

For example, account for leap seconds or magically guess the DST offset.  If we 
introduce a method that implements the code above, we have to prepare to 
explain why it does not do those things.

If instead we introduce a shortcut for time.mktime(t.timetuple()), we will have 
to deal with the fact that mktime() behaves differently on different systems.

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue14908
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue14908] datetime.datetime should have a timestamp() method

2012-06-04 Thread Barry A. Warsaw

Barry A. Warsaw ba...@python.org added the comment:

On Jun 04, 2012, at 03:45 PM, Alexander Belopolsky wrote:

Did you review the long discussion under issue 2736?  Specifically, please
note the part about mxDateTime, ticks() and gmticks().  I am -0 on adding
ticks() and gmticks() and as far as I can tell no one has implemented these
methods for datetime without introducing some subtle bugs.

I skimmed it, but I don't have time to read the whole bug.  I'll note that
I've recently had to convert a bunch of code from using mxDateTime to
datetime+time, for the only reason that we had to support Python 3 and mxDT
isn't yet ported.

I also suspect that those who ask for a timestamp() method expect that it
will do more than

EPOCH = datetime(1970, 1, 1)
def timestamp(t):
  return (t - EPOCH).total_seconds()

Not really.

For example, account for leap seconds or magically guess the DST offset.  If
we introduce a method that implements the code above, we have to prepare to
explain why it does not do those things.

That's fine, explain away!

If instead we introduce a shortcut for time.mktime(t.timetuple()), we will
have to deal with the fact that mktime() behaves differently on different
systems.

Not really.  If developers even care, they will know that the epoch is
different for different systems.  We don't have to deal with it, we just have
to mention it.  Let them use more verbose correct code if they care.

Seriously, we should not over-engineer this.  It's purely a more discoverable
convenience and I think implementing the moral equivalent to
time.mktime(t.timetuple()) is exactly the right thing to do.

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue14908
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue14908] datetime.datetime should have a timestamp() method

2012-06-04 Thread Alexander Belopolsky

Alexander Belopolsky alexander.belopol...@gmail.com added the comment:

On Mon, Jun 4, 2012 at 11:57 AM, Barry A. Warsaw rep...@bugs.python.org wrote:
 I've recently had to convert a bunch of code from using mxDateTime to
 datetime+time,

That's a valuable experience.  How big of a deal was the lack of
.ticks() and .gmticks()?  How did you work around it?

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue14908
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue14908] datetime.datetime should have a timestamp() method

2012-06-04 Thread Barry A. Warsaw

Barry A. Warsaw ba...@python.org added the comment:

On Jun 04, 2012, at 04:03 PM, Alexander Belopolsky wrote:

That's a valuable experience.  How big of a deal was the lack of
.ticks() and .gmticks()?  How did you work around it?

It was *much* less of an issue than all the magic date format parsing that
mxDT supports.  That's actually something that I think is a more serious
deficiency, since .strptime() is pretty limited (e.g. how would you parse ISO
8601 dates both with and without the 'T'?).  A Python 3 compatible time format
parser would make for a very nice separate library (PyPI) and/or addition to
the stdlib (eventually).

FWIW, here's the changeset.

http://bazaar.launchpad.net/~gwibber-committers/gwibber/trunk/revision/1354

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue14908
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue14908] datetime.datetime should have a timestamp() method

2012-06-04 Thread R. David Murray

Changes by R. David Murray rdmur...@bitdance.com:


--
nosy: +r.david.murray

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue14908
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue14908] datetime.datetime should have a timestamp() method

2012-06-04 Thread Alexandre Zani

Alexandre Zani alexandre.z...@gmail.com added the comment:

I think the easiest and most intuitive approach is to simply define timestamp() 
as being the reverse of fromtimestamp(). Don't worry about leap seconds and all 
that stuff.

If non-1970 epochs are a concern, this could be renamed to posix_timestamp or 
some such with perhaps a generic timestamp function that takes both a time and 
epoch.

But let's not let such a useful function not happen just because it won't solve 
everyone's problem.

--
nosy: +Alexandre.Zani

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue14908
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue14908] datetime.datetime should have a timestamp() method

2012-06-04 Thread Alexander Belopolsky

Alexander Belopolsky alexander.belopol...@gmail.com added the comment:

On Mon, Jun 4, 2012 at 1:33 PM, Alexandre Zani rep...@bugs.python.org wrote:
 I think the easiest and most intuitive approach is to simply define 
 timestamp()
 as being the reverse of fromtimestamp().

I would like to invite everyone to review the discussion leading to
closing of issue 2736.   We cannot implement the reverse of
fromtimestamp() because fromtimestamp() is not reversible in presence
of DST and because float cannot represent all values that datetime
supports.  Both issues can be resolved, but I did not see any solution
that I would call intuitive.

Is anyone motivated enough to port mxDT's ticks() method to datetime?
I don't think we need to reinvent the wheel.

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue14908
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue14908] datetime.datetime should have a timestamp() method

2012-06-04 Thread Alexandre Zani

Alexandre Zani alexandre.z...@gmail.com added the comment:

I'm still reading through the issue you mentioned. (It's a painful read I have 
to admit) One major obstacle seems to be that during the DST switch over, an 
hour gets repeated and so the datetime object is ambiguous. (are you on the 
first or second hour?) I would argue that it isn't a problem that this function 
needs to solve. The ambiguity isn't tied to the conversion. It's tied to the 
datetime object itself.

Let's add an optional parameter to specify the DST status, doc the pitfall and 
not worry overmuch about it.

Side note: Let me know if I misunderstood Alexander, but if I didn't this 
should be documented with the datetime object. Based upon my understanding, the 
datetime object is a bad choice if you care about that ambiguity. That's not 
really clear.

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue14908
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue14908] datetime.datetime should have a timestamp() method

2012-06-04 Thread Alexander Belopolsky

Alexander Belopolsky alexander.belopol...@gmail.com added the comment:

On Mon, Jun 4, 2012 at 3:21 PM, Alexandre Zani rep...@bugs.python.org wrote:
 Let me know if I misunderstood Alexander, but if I didn't this should be 
 documented with
 the datetime object. Based upon my understanding, the datetime object is a 
 bad choice
 if you care about that ambiguity. That's not really clear.

The datetime object is neither good nor bad if you want to deal with
the DST ambiguity.  If you want to store times as local time, the best
practice is to include the UTC offset.  The datetime module now
provides the facilities to do so.  If you neglect the timezone and
deal with naive datetime objects instead, you should probably avoid
mixing it with POSIX timestamps in the same application.

Here is an example where naive datetime is quite appropriate: a
timekeeping application for a small business with a single location.
If you need to generate opening hours for a given week,
[datetime(y,m,d, 9, 0) + datetime(i) for i in range(5)] is an adequate
solution, but if you compare it to [datetime.fromtimestamp(x +
24*3600*i) for i in range(5)], you may be off by one hour if your week
spans the DST change.

In most applications, however, keeping local time without UTC offset
is a bad choice.  POSIX's timestamp only advantage is that it does no
allow keeping local time at all.

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue14908
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue14908] datetime.datetime should have a timestamp() method

2012-06-04 Thread Alexander Belopolsky

Alexander Belopolsky alexander.belopol...@gmail.com added the comment:

Barry,

I looked at your changeset at 
http://bazaar.launchpad.net/~gwibber-committers/gwibber/trunk/revision/1354 and 
at the specification at 
http://developers.facebook.com/docs/reference/api/event/.

Am I correct that you are parsing string containing an ISO-8601 formatted 
date/time or a UNIX timestamp; if it contains a time zone (not recommended), it 
will be converted to Pacific time before being stored and displayed?

If so, it looks like converting input to POSIX timestamps is the wrong thing to 
do because users who specify naive time expect it to be displayed without 
conversion.

The way I read the specs, a better implementation would store input in naive 
datetime objects, converting UNIX timestamps or TZ-aware strings to Pacific 
timezone.

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue14908
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue14908] datetime.datetime should have a timestamp() method

2012-05-25 Thread Dirkjan Ochtman

New submission from Dirkjan Ochtman dirk...@ochtman.nl:

There's datetime.fromtimestamp() and datetime.timetuple(), but no 
datetime.timestamp(). It should be possible to round-trip a UNIX timestamp 
through a datetime.datetime.

--
messages: 161558
nosy: djc
priority: normal
severity: normal
status: open
title: datetime.datetime should have a timestamp() method
versions: Python 2.7, Python 3.2

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue14908
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue14908] datetime.datetime should have a timestamp() method

2012-05-25 Thread Antoine Pitrou

Changes by Antoine Pitrou pit...@free.fr:


--
components: +Library (Lib)
nosy: +belopolsky, lemburg
type:  - enhancement
versions: +Python 3.3 -Python 2.7, Python 3.2

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue14908
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue14908] datetime.datetime should have a timestamp() method

2012-05-25 Thread Alexander Belopolsky

Alexander Belopolsky alexander.belopol...@gmail.com added the comment:

See issue2736.

--
nosy: +Alexander.Belopolsky

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue14908
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com