[Python-checkins] cpython (2.7): #14766: Add correct algorithm for when a 'time' object is naive.

r.david.murray python-checkins at python.org
Tue May 15 04:33:50 CEST 2012


http://hg.python.org/cpython/rev/5d1b32e33e67
changeset:   76940:5d1b32e33e67
branch:      2.7
parent:      76934:cbc9dc1c977e
user:        R David Murray <rdmurray at bitdance.com>
date:        Mon May 14 22:32:44 2012 -0400
summary:
  #14766: Add correct algorithm for when a 'time' object is naive.

This patch also clarifies the definition of Naive and Aware.

Original patch by Greg Weller, I modified the first hunk
somewhat to make the exposition even clearer (I hope).

files:
  Doc/library/datetime.rst |  35 ++++++++++++++++++++--------
  1 files changed, 25 insertions(+), 10 deletions(-)


diff --git a/Doc/library/datetime.rst b/Doc/library/datetime.rst
--- a/Doc/library/datetime.rst
+++ b/Doc/library/datetime.rst
@@ -17,16 +17,23 @@
 formatting and manipulation. For related
 functionality, see also the :mod:`time` and :mod:`calendar` modules.
 
-There are two kinds of date and time objects: "naive" and "aware". This
-distinction refers to whether the object has any notion of time zone, daylight
-saving time, or other kind of algorithmic or political time adjustment.  Whether
-a naive :class:`.datetime` object represents Coordinated Universal Time (UTC),
+There are two kinds of date and time objects: "naive" and "aware".
+
+An aware object has sufficient knowledge of applicable algorithmic and
+political time adjustments, such as time zone and daylight saving time
+information, to locate itself relative to other aware objects.  An aware object
+is used to represent a specific moment in time that is not open to
+interpretation [#]_.
+
++A naive object does not contain enough information to unambiguously locate
++itself relative to other date/time objects.  Whether
+a naive object represents Coordinated Universal Time (UTC),
 local time, or time in some other timezone is purely up to the program, just
 like it's up to the program whether a particular number represents metres,
-miles, or mass.  Naive :class:`.datetime` objects are easy to understand and to
+miles, or mass.  Naive objects are easy to understand and to
 work with, at the cost of ignoring some aspects of reality.
 
-For applications requiring more, :class:`.datetime` and :class:`.time` objects
+For applications requiring aware objects, :class:`.datetime` and :class:`.time` objects
 have an optional time zone information attribute, :attr:`tzinfo`, that can be
 set to an instance of a subclass of the abstract :class:`tzinfo` class.  These
 :class:`tzinfo` objects capture information about the offset from UTC time, the
@@ -105,10 +112,13 @@
 
 Objects of the :class:`date` type are always naive.
 
-An object *d* of type :class:`.time` or :class:`.datetime` may be naive or aware.
-*d* is aware if ``d.tzinfo`` is not ``None`` and ``d.tzinfo.utcoffset(d)`` does
-not return ``None``.  If ``d.tzinfo`` is ``None``, or if ``d.tzinfo`` is not
-``None`` but ``d.tzinfo.utcoffset(d)`` returns ``None``, *d* is naive.
+An object of type :class:`.time` or :class:`.datetime` may be naive or aware.
+A :class:`.datetime` object *d* is aware if ``d.tzinfo`` is not ``None`` and
+``d.tzinfo.utcoffset(d)`` does not return ``None``.  If ``d.tzinfo`` is
+``None``, or if ``d.tzinfo`` is not ``None`` but ``d.tzinfo.utcoffset(d)``
+returns ``None``, *d* is naive.  A :class:`.time` object *t* is aware
+if ``t.tzinfo`` is not ``None`` and ``t.tzinfo.utcoffset(None)`` does not return
+``None``.  Otherwise, *t* is naive.
 
 The distinction between naive and aware doesn't apply to :class:`timedelta`
 objects.
@@ -1707,3 +1717,8 @@
 (5)
    For example, if :meth:`utcoffset` returns ``timedelta(hours=-3, minutes=-30)``,
    ``%z`` is replaced with the string ``'-0330'``.
+
+
+.. rubric:: Footnotes
+
+.. [#] If, that is, we ignore the effects of Relativity

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list