- 07 Kas, 2005 1 kayıt (commit)
-
-
Armin Rigo yazdı
accepts strings only for unpickling reasons. This check prevents the honest mistake of passing a string like '2:59.0' to time() and getting an insane object.
-
- 16 Ock, 2005 1 kayıt (commit)
-
-
Guido van Rossum yazdı
-
- 13 Ock, 2005 1 kayıt (commit)
-
-
Skip Montanaro yazdı
the changes.
-
- 16 Eyl, 2004 1 kayıt (commit)
-
-
Tim Peters yazdı
Treat comparing a date to a datetime like a mixed-type comparison.
-
- 20 Haz, 2004 1 kayıt (commit)
-
-
Tim Peters yazdı
New include file timefuncs.h exports private API function _PyTime_DoubleToTimet() from timemodule.c. timemodule should export some other functions too (look for painful bits in datetimemodule.c). Added insane-argument checking to datetime's assorted fromtimestamp() and utcfromtimestamp() methods. Added insane-argument tests of these to test_datetime, and insane-argument tests for ctime(), localtime() and gmtime() to test_time.
-
- 07 Haz, 2004 1 kayıt (commit)
-
-
Tim Peters yazdı
datetime.datetime and datetime.time could yield insane objects. Thanks to Jiwon Seo for the fix. Bugfix candidate. I'll backport it to 2.3.
-
- 21 Mar, 2004 1 kayıt (commit)
-
-
Tim Peters yazdı
It's possible to create insane datetime objects by using the constructor "backdoor" inserted for fast unpickling. Doing extensive range checking would eliminate the backdoor's purpose (speed), but at least a little checking can stop honest mistakes. Bugfix candidate.
-
- 27 Haz, 2003 1 kayıt (commit)
-
-
Raymond Hettinger yazdı
The interning of short strings violates the refcnt==1 assumption for _PyString_Resize(). A simple fix is to boost the initial value of "totalnew" by 1. Combined with an NULL argument to PyString_FromStringAndSize(), this assures that resulting format string is not interned. This will remain true even if the implementation of PyString_FromStringAndSize() changes because only the uninitialized strings that can be interned are those of zero length. Added a test case.
-
- 17 May, 2003 3 kayıt (commit)
-
-
Tim Peters yazdı
one good use: a subclass adding a method to express the duration as a number of hours (or minutes, or whatever else you want to add). The native breakdown into days+seconds+us is often clumsy. Incidentally moved a large chunk of object-initialization code closer to the top of the file, to avoid worse forward-reference trickery.
-
Tim Peters yazdı
-
Tim Peters yazdı
attributes and methods work, that new arguments can be passed to the constructor, and that inherited methods and attrs still work. Added XXX comments about what to do when datetime becomes usably subclassable too (it's not yet).
-
- 14 Nis, 2003 1 kayıt (commit)
-
-
Guido van Rossum yazdı
(This is only the tip of the iceberg; the time and datetime classes need the same treatment.)
-
- 19 Şub, 2003 1 kayıt (commit)
-
-
Tim Peters yazdı
-
- 08 Şub, 2003 1 kayıt (commit)
-
-
Tim Peters yazdı
tickle the 2.2.2 __cmp__ bug test_datetime used to tickle, so the workarounds for that bug no longer make sense in the test suite (which I'm still trying to keep as closely in synch as possible with Zope3's version).
-
- 07 Şub, 2003 2 kayıt (commit)
-
-
Tim Peters yazdı
__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().
-
Guido van Rossum yazdı
the tests will remain in sync: """ Tres discovered a weird bug when a datetime is pickled, caused by the shadowing of __year, __month, __day and the use of proxies. Here's a quick fix and a quick unit test. I don't quite understand why this wasn't caught by the pickling unit tests. """
-
- 06 Şub, 2003 1 kayıt (commit)
-
-
Tim Peters yazdı
Apparently MAC OS 9 doesn't have POSIX-conforming timestamps. A test fails as a result, but at least for this specific test it's easy enough to get the POSIX epoch out of it.
-
- 05 Şub, 2003 1 kayıt (commit)
-
-
Tim Peters yazdı
-
- 03 Şub, 2003 1 kayıt (commit)
-
-
Guido van Rossum yazdı
cross-pickling tests.
-
- 01 Şub, 2003 1 kayıt (commit)
-
-
Tim Peters yazdı
anymore either, so don't. This also allows to get rid of obscure code making __getnewargs__ identical to __getstate__ (hmm ... hope there wasn't more to this than I realize!).
-
- 31 Ock, 2003 1 kayıt (commit)
-
-
Tim Peters yazdı
longer needs to be public, and shoudn't be public because all datetime objects are immutable. The Python implementation has changed accordingly, but still need to change the C implementation.
-
- 30 Ock, 2003 1 kayıt (commit)
-
-
Guido van Rossum yazdı
classes have a __reduce__ that returns (self.__class__, self.__getstate__()). tzinfo.__reduce__() is a bit smarter, calling __getinitargs__ and __getstate__ if they exist, and falling back to __dict__ if it exists and isn't empty.
-
- 24 Ock, 2003 1 kayıt (commit)
-
-
Tim Peters yazdı
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.
-
- 23 Ock, 2003 3 kayıt (commit)
-
-
Tim Peters yazdı
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.
-
Tim Peters yazdı
-
Tim Peters yazdı
checked in two days agao: Refactoring of, and new rules for, dt.astimezone(tz). dt must be aware now, and tz.utcoffset() and tz.dst() must not return None. The old dt.astimezone(None) no longer works to change an aware datetime into a naive datetime; use dt.replace(tzinfo=None) instead. The tzinfo base class now supplies a new fromutc(self, dt) method, and datetime.astimezone(tz) invokes tz.fromutc(). The default implementation of fromutc() reproduces the same results as the old astimezone() implementation, but tzinfo subclasses can override fromutc() if the default implementation isn't strong enough to get the correct results in all cases (for example, this may be necessary if a tzinfo subclass models a time zone whose "standard offset" (wrt UTC) changed in some year(s), or in some variations of double-daylight time -- the creativity of time zone politics can't be captured in a single default implementation).
-
- 20 Ock, 2003 1 kayıt (commit)
-
-
Tim Peters yazdı
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.
-
- 11 Ock, 2003 1 kayıt (commit)
-
-
Tim Peters yazdı
-
- 10 Ock, 2003 1 kayıt (commit)
-
-
Tim Peters yazdı
hoped it would be, but not too bad. A test had to change: time.__setstate__() can no longer add a non-None tzinfo member to a time object that didn't already have one, since storage for a tzinfo member doesn't exist in that case.
-
- 08 Ock, 2003 1 kayıt (commit)
-
-
Tim Peters yazdı
into time. This is little more than *exporting* the datetimetz object under the name "datetime", and similarly for timetz. A good implementation of this change requires more work, but this is fully functional if you don't stare too hard at the internals (e.g., right now a type named "datetime" shows up as a base class of the type named "datetime"). The docs also need extensive revision, not part of this checkin.
-
- 04 Ock, 2003 1 kayıt (commit)
-
-
Tim Peters yazdı
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>).
-
- 02 Ock, 2003 2 kayıt (commit)
-
-
Tim Peters yazdı
(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.
-
Tim Peters yazdı
dst() returns None (instead of treating that as 0).
-
- 01 Ock, 2003 2 kayıt (commit)
-
-
Tim Peters yazdı
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.
-
Tim Peters yazdı
understood now: it can't work. Added comments explaining why (it's "the usual"-- unrepresentable hours in local time --but in a slightly different guise).
-
- 31 Ara, 2002 1 kayıt (commit)
-
-
Tim Peters yazdı
an idea from Guido. This restores that the datetime implementation never passes a datetime d to a tzinfo method unless d.tzinfo is the tzinfo instance whose method is being called. That in turn allows enormous simplifications in user-written tzinfo classes (see the Python sandbox US.py and EU.py for fully fleshed-out examples). d.astimezone(tz) also raises ValueError now if d lands in the one hour of the year that can't be expressed in tz (this can happen iff tz models both standard and daylight time). That it used to return a nonsense result always ate at me, and it turned out that it seemed impossible to force a consistent nonsense result under the new implementation (which doesn't know anything about how tzinfo classes implement their methods -- it can only infer properties indirectly). Guido doesn't like this -- expect it to change. New tests of conversion between adjacent DST-aware timezones don't pass yet, and are commented out. Running the datetime tests in a loop under a debug build leaks 9 references per test run, but I don't believe the datetime code is the cause (it didn't leak the last time I changed the C code, and the leak is the same if I disable all the tests that invoke the only function that changed here). I'll pursue that next.
-
- 30 Ara, 2002 3 kayıt (commit)
-
-
Tim Peters yazdı
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.
-
Tim Peters yazdı
and that conversion to "timezone" None is the same as stripping the tzinfo member.
-
Tim Peters yazdı
west of the US zones getting converted, and also by using Eastern "as if" it were UTC (wrt Pacific), and vice versa.
-
- 29 Ara, 2002 1 kayıt (commit)
-
-
Tim Peters yazdı
Guido has in mind an easier way for users to code this stuff, but the only tests we have now are for fixed-offset tzinfo classes, and this stuff is extremely delicate in the endcases (read the new test code for why: there are holes in time <wink>).
-