Commit Graph

44 Commits

Author SHA1 Message Date
Tim Peters 07534a607b Comparison for timedelta, time, date and datetime objects: __eq__ and
__ne__ no longer complain if they don't know how to compare to the other
thing.  If no meaningful way to compare is known, saying "not equal" is
sensible.  This allows things like

    if adatetime in some_sequence:
and
    somedict[adatetime] = whatever

to work as expected even if some_sequence contains non-datetime objects,
or somedict non-datetime keys, because they only call __eq__.

It still complains (raises TypeError) for mixed-type comparisons in
contexts that require a total ordering, such as list.sort(), use as a
key in a BTree-based data structure, and cmp().
2003-02-07 22:50:28 +00:00
Andrew M. Kuchling 570e35870a Markup fixes; in particular, the tables are now reasonable width 2003-02-05 21:15:38 +00:00
Raymond Hettinger 301eb71fb9 Author markup: Andrew got to it first 2003-01-30 01:03:38 +00:00
Neal Norwitz daae32721a Fix markup 2003-01-25 21:08:30 +00:00
Tim Peters 8d81a012ef date and datetime comparison: when we don't know how to
compare against "the other" argument, we raise TypeError,
in order to prevent comparison from falling back to the
default (and worse than useless, in this case) comparison
by object address.

That's fine so far as it goes, but leaves no way for
another date/datetime object to make itself comparable
to our objects.  For example, it leaves Marc-Andre no way
to teach mxDateTime dates how to compare against Python
dates.

Discussion on Python-Dev raised a number of impractical
ideas, and the simple one implemented here:  when we don't
know how to compare against "the other" argument, we raise
TypeError *unless* the other object has a timetuple attr.
In that case, we return NotImplemented instead, and Python
will give the other object a shot at handling the
comparison then.

Note that comparisons of time and timedelta objects still
suffer the original problem, though.
2003-01-24 22:36:34 +00:00
Tim Peters 2a44a8d332 SF bug 660872: datetimetz constructors behave counterintuitively (2.3a1).
This gives much the same treatment to datetime.fromtimestamp(stamp, tz) as
the last batch of checkins gave to datetime.now(tz):  do "the obvious"
thing with the tz argument instead of a senseless thing.
2003-01-23 20:53:10 +00:00
Tim Peters 10cadce41e Reimplemented datetime.now() to be useful. 2003-01-23 19:58:02 +00:00
Tim Peters f196a0a4dd "Premature" doc changes, for new astimezone() rules, and the new
tzinfo.fromutc() method.  The C code doesn't implement any of this
yet (well, not the C code on the machine I'm using now), nor does
the test suite reflect it.  The Python datetime.py implementation and
test suite in the sandbox do match these doc changes.  The C
implementation probably won't catch up before Thursday (Wednesday is
a scheduled "black hole" day this week <0.4 wink>).
2003-01-22 04:45:50 +00:00
Tim Peters b01c39bb94 SF bug 671779: Error in tzinfo.dst() docs
tzinfo dst() should return timedelta(0) if DST is not effect, not 0.
2003-01-21 16:44:27 +00:00
Tim Peters 327098a613 New rule for tzinfo subclasses handling both standard and daylight time:
When daylight time ends, an hour repeats on the local clock (for example,
in US Eastern, the clock jumps from 1:59 back to 1:00 again).  Times in
the repeated hour are ambiguous.  A tzinfo subclass that wants to play
with astimezone() needs to treat times in the repeated hour as being
standard time.  astimezone() previously required that such times be
treated as daylight time.  There seems no killer argument either way,
but Guido wants the standard-time version, and it does seem easier the
new way to code both American (local-time based) and European (UTC-based)
switch rules, and the astimezone() implementation is simpler.
2003-01-20 22:54:38 +00:00
Andrew M. Kuchling 9b44571caa Various minor edits 2003-01-09 13:46:30 +00:00
Andrew M. Kuchling 0f0e6b9d48 Markup fix 2003-01-09 12:51:50 +00:00
Tim Peters 003720235b Massive fiddling to reflect that datetimetz and timetz no longer exist.
WARNING:  It would be a minor miracle if the LaTeX stuff still worked.

s/field/member/ generally everywhere, to conform with most other usage in
the docs.

s/daylight savings time/daylight saving time/ generally everywhere,
because the latter spelling is anally correct.
2003-01-09 04:10:05 +00:00
Fred Drake 2b0a3d33f8 Fix markup so this will format again. 2003-01-06 15:03:11 +00:00
Tim Peters 75a6e3bd1a datetime_from_timet_and_us(): ignore leap seconds if the platform
localtime()/gmtime() insists on delivering them, + associated doc
changes.

Redid the docs for datetimtez.astimezone().
2003-01-04 18:17:36 +00:00
Tim Peters adf642038e A new implementation of astimezone() that does what we agreed on in all
cases, plus even tougher tests of that.  This implementation follows
the correctness proof very closely, and should also be quicker (yes,
I wrote the proof before the code, and the code proves the proof <wink>).
2003-01-04 06:03:15 +00:00
Tim Peters 397301eccb The tzinfo methods utcoffset() and dst() must return a timedelta object
(or None) now.  In 2.3a1 they could also return an int or long, but that
was an unhelpfully redundant leftover from an earlier version wherein
they couldn't return a timedelta.  TOOWTDI.
2003-01-02 21:28:08 +00:00
Tim Peters 710fb1548a astimezone() internals: if utcoffset() returns a duration, complain if
dst() returns None (instead of treating that as 0).
2003-01-02 19:35:54 +00:00
Tim Peters f36151556f A quicker astimezone() implementation, rehabilitating an earlier
suggestion from Guido, along with a formal correctness proof of the
trickiest bit.  The intricacy of the proof reveals how delicate this
is, but also how robust the conclusion:  correctness doesn't rely on
dst() returning +- one hour (not all real time zones do!), it only
relies on:

1. That dst() returns a (any) non-zero value if and only if daylight
   time is in effect.

and

2. That the tzinfo subclass implements a consistent notion of time zone.

The meaning of "consistent" was a hidden assumption, which is now an
explicit requirement in the docs.  Alas, it's an unverifiable (by the
datetime implementation) requirement, but so it goes.
2003-01-01 21:51:37 +00:00
Fred Drake 0f8e543159 - use classdesc where we can (for better indexing)
- more style consistency crud
2002-12-31 18:31:48 +00:00
Fred Drake 436eadd455 General style conformance. Markup some unmarked constructs. 2002-12-31 18:13:11 +00:00
Raymond Hettinger f621232c0d Use funcdesc instead of classdesc to be consistent with out sections. 2002-12-31 17:24:50 +00:00
Raymond Hettinger 6222958500 Spelling fix 2002-12-31 16:37:03 +00:00
Raymond Hettinger cbd6cd2312 Add markup for time object.
Cleanup whitespace.
Fix unbalanced parenthesis.
2002-12-31 16:30:49 +00:00
Tim Peters 9532298c82 Removed the now-untrue (or soon-to-be untrue) part of the astimezone()
docs.  Replaced it with an XXX block, because the hoped-for treatment
of DST endcases remains unclear (Guido doesn't really like raising an
exception when it's impossible to deliver a correct result, but so
far I have no way in hand to consistently deliver a defined incorrect
result either).
2002-12-31 16:01:47 +00:00
Raymond Hettinger c5f5f87f74 Complete the markup for timedelta objects.
Fix a curly brace that should have been a paren.
2002-12-31 14:26:54 +00:00
Guido van Rossum 8e7ec7cec8 Minor markup and spelling repair. 2002-12-31 04:39:05 +00:00
Fred Drake a37e5cce4b We're using strictly American spellings, so there's no diaresis over
the i in naive.

More markup fixups.
2002-12-30 21:26:42 +00:00
Tim Peters bad8ff089a A step on the way to making tzinfo classes writable by mortals: get rid
of the timetz case.  A tzinfo method will always see a datetimetz arg,
or None, now.  In the former case, it's still possible that it will get
a datetimetz argument belonging to a different timezone.  That will get
fixed next.
2002-12-30 20:52:32 +00:00
Fred Drake 9bdeee492a Clean up a table so it passes formatting. 2002-12-30 20:35:32 +00:00
Raymond Hettinger 0de926fd12 Added the \var{} markup so the tables will look good. 2002-12-30 20:21:21 +00:00
Raymond Hettinger 6005a344ce Added markup upto line 233. 2002-12-30 20:01:24 +00:00
Andrew M. Kuchling fa91858c6c More markup additions 2002-12-30 14:20:16 +00:00
Andrew M. Kuchling c97868ee2f Mark up more text 2002-12-30 03:06:45 +00:00
Tim Peters 276a8f3b80 astimezone(): document that None is an OK argument. 2002-12-27 21:41:32 +00:00
Tim Peters 60c76e4016 Make comparison and subtraction of aware objects ignore tzinfo if the
operands have identical tzinfo members (meaning object identity -- "is").
I misunderstood the intent here, reading wrong conclusion into
conflicting clues.
2002-12-27 00:41:11 +00:00
Tim Peters 80475bb4d2 Implemented datetime.astimezone() and datetimetz.astimezone(). 2002-12-25 07:40:55 +00:00
Tim Peters 52d134874f Removed blurb admonishing users to raise an exception if the datetime
argument to a tzinfo method doesn't have a matching tzinfo member.
2002-12-24 16:34:13 +00:00
Tim Peters 2483b61e03 Added note about technical pickle limitation on tzinfo instances. 2002-12-24 16:30:58 +00:00
Tim Peters 1cff9fc97c tzinfo.{utcoffset,dst} can return timedelta (or integer or None).
{timetz,datetimetz}.{uctcoffset,dst} do return timedelta (or None).
2002-12-24 16:25:29 +00:00
Tim Peters 12bf339aea Implemented .replace() methods for date, datetime, datetimetz, time and
timetz.
2002-12-24 05:41:27 +00:00
Tim Peters 29fb9c7e07 Brought the strftime explanation into synch with the plain-text sandbox
docs, and moved its section to the end (before the "C API" section,
which latter doesn't really belong in the Library manual).
2002-12-23 22:21:52 +00:00
Fred Drake bbdb250862 Lots of markup changes. This is still pretty sad, but passes LaTeX
and is mostly readable.
2002-12-23 18:58:06 +00:00
Andrew M. Kuchling ca2623a2f9 Check in current, unfinished, draft of datetime docs
(Fred, don't bother to add to lib.tex or to proofread this yet.)
2002-12-18 14:59:11 +00:00