mirror of https://github.com/python/cpython
Merge heads
This commit is contained in:
commit
ebd1b1dcb7
|
@ -545,7 +545,7 @@ The module defines the following functions and data items:
|
|||
+-------+-------------------+---------------------------------+
|
||||
| N/A | :attr:`tm_zone` | abbreviation of timezone name |
|
||||
+-------+-------------------+---------------------------------+
|
||||
| N/A | :attr:`tm_gmtoff` | offset from UTC in seconds |
|
||||
| N/A | :attr:`tm_gmtoff` | offset east of UTC in seconds |
|
||||
+-------+-------------------+---------------------------------+
|
||||
|
||||
Note that unlike the C structure, the month value is a range of [1, 12], not
|
||||
|
|
|
@ -1510,13 +1510,13 @@ class datetime(date):
|
|||
# implied by tm_isdst.
|
||||
delta = local - datetime(*_time.gmtime(ts)[:6])
|
||||
dst = _time.daylight and localtm.tm_isdst > 0
|
||||
gmtoff = _time.altzone if dst else _time.timezone
|
||||
if delta == timedelta(seconds=-gmtoff):
|
||||
gmtoff = -(_time.altzone if dst else _time.timezone)
|
||||
if delta == timedelta(seconds=gmtoff):
|
||||
tz = timezone(delta, _time.tzname[dst])
|
||||
else:
|
||||
tz = timezone(delta)
|
||||
else:
|
||||
tz = timezone(timedelta(seconds=-gmtoff), zone)
|
||||
tz = timezone(timedelta(seconds=gmtoff), zone)
|
||||
|
||||
elif not isinstance(tz, tzinfo):
|
||||
raise TypeError("tz argument must be an instance of tzinfo")
|
||||
|
|
|
@ -3278,16 +3278,18 @@ class TestDateTimeTZ(TestDateTime, TZInfoBase, unittest.TestCase):
|
|||
self.assertEqual(dt.astimezone(None), dt)
|
||||
self.assertEqual(dt.astimezone(), dt)
|
||||
|
||||
# Note that offset in TZ variable has the opposite sign to that
|
||||
# produced by %z directive.
|
||||
@support.run_with_tz('EST+05EDT,M3.2.0,M11.1.0')
|
||||
def test_astimezone_default_eastern(self):
|
||||
dt = self.theclass(2012, 11, 4, 6, 30, tzinfo=timezone.utc)
|
||||
local = dt.astimezone()
|
||||
self.assertEqual(dt, local)
|
||||
self.assertEqual(local.strftime("%z %Z"), "+0500 EST")
|
||||
self.assertEqual(local.strftime("%z %Z"), "-0500 EST")
|
||||
dt = self.theclass(2012, 11, 4, 5, 30, tzinfo=timezone.utc)
|
||||
local = dt.astimezone()
|
||||
self.assertEqual(dt, local)
|
||||
self.assertEqual(local.strftime("%z %Z"), "+0400 EDT")
|
||||
self.assertEqual(local.strftime("%z %Z"), "-0400 EDT")
|
||||
|
||||
def test_aware_subtract(self):
|
||||
cls = self.theclass
|
||||
|
|
|
@ -222,36 +222,38 @@ class SkipitemTest(unittest.TestCase):
|
|||
in Python/getargs.c, but neglected to update our poor friend
|
||||
skipitem() in the same file. (If so, shame on you!)
|
||||
|
||||
This function brute-force tests all** ASCII characters (1 to 127
|
||||
inclusive) as format units, checking to see that
|
||||
PyArg_ParseTupleAndKeywords() return consistent errors both when
|
||||
the unit is attempted to be used and when it is skipped. If the
|
||||
format unit doesn't exist, we'll get one of two specific error
|
||||
messages (one for used, one for skipped); if it does exist we
|
||||
*won't* get that error--we'll get either no error or some other
|
||||
error. If we get the "does not exist" error for one test and
|
||||
not for the other, there's a mismatch, and the test fails.
|
||||
With a few exceptions**, this function brute-force tests all
|
||||
printable ASCII*** characters (32 to 126 inclusive) as format units,
|
||||
checking to see that PyArg_ParseTupleAndKeywords() return consistent
|
||||
errors both when the unit is attempted to be used and when it is
|
||||
skipped. If the format unit doesn't exist, we'll get one of two
|
||||
specific error messages (one for used, one for skipped); if it does
|
||||
exist we *won't* get that error--we'll get either no error or some
|
||||
other error. If we get the specific "does not exist" error for one
|
||||
test and not for the other, there's a mismatch, and the test fails.
|
||||
|
||||
** Some format units have special funny semantics and it would
|
||||
be difficult to accomodate them here. Since these are all
|
||||
well-established and properly skipped in skipitem() we can
|
||||
get away with not testing them--this test is really intended
|
||||
to catch *new* format units.
|
||||
|
||||
*** Python C source files must be ASCII. Therefore it's impossible
|
||||
to have non-ASCII format units.
|
||||
|
||||
** Okay, it actually skips some ASCII characters. Some characters
|
||||
have special funny semantics, and it would be difficult to
|
||||
accomodate them here.
|
||||
"""
|
||||
empty_tuple = ()
|
||||
tuple_1 = (0,)
|
||||
dict_b = {'b':1}
|
||||
keywords = ["a", "b"]
|
||||
|
||||
# Python C source files must be ASCII,
|
||||
# therefore we'll never have a format unit > 127
|
||||
for i in range(1, 128):
|
||||
for i in range(32, 127):
|
||||
c = chr(i)
|
||||
|
||||
# skip non-printable characters, no one is insane enough to define
|
||||
# one as a format unit
|
||||
# skip parentheses, the error reporting is inconsistent about them
|
||||
# skip 'e', it's always a two-character code
|
||||
# skip '|' and '$', they don't represent arguments anyway
|
||||
if (not c.isprintable()) or (c in '()e|$'):
|
||||
if c in '()e|$':
|
||||
continue
|
||||
|
||||
# test the format unit when not skipped
|
||||
|
|
|
@ -4717,12 +4717,8 @@ local_timezone(PyDateTime_DateTime *utc_time)
|
|||
return NULL;
|
||||
timep = localtime(×tamp);
|
||||
#ifdef HAVE_STRUCT_TM_TM_ZONE
|
||||
{
|
||||
long offset;
|
||||
offset = timep->tm_gmtoff;
|
||||
zone = timep->tm_zone;
|
||||
delta = new_delta(0, -offset, 0, 0);
|
||||
}
|
||||
zone = timep->tm_zone;
|
||||
delta = new_delta(0, timep->tm_gmtoff, 0, 1);
|
||||
#else /* HAVE_STRUCT_TM_TM_ZONE */
|
||||
{
|
||||
PyObject *local_time;
|
||||
|
@ -4732,7 +4728,7 @@ local_timezone(PyDateTime_DateTime *utc_time)
|
|||
utc_time->tzinfo);
|
||||
if (local_time == NULL)
|
||||
goto error;
|
||||
delta = datetime_subtract((PyObject*)utc_time, local_time);
|
||||
delta = datetime_subtract(local_time, (PyObject*)utc_time);
|
||||
/* XXX: before relying on tzname, we should compare delta
|
||||
to the offset implied by timezone/altzone */
|
||||
if (daylight && timep->tm_isdst >= 0)
|
||||
|
|
|
@ -1,5 +1,16 @@
|
|||
#! /usr/bin/env python3
|
||||
|
||||
"""
|
||||
This script should be called *manually* when we want to upgrade SSLError
|
||||
`library` and `reason` mnemnonics to a more recent OpenSSL version.
|
||||
|
||||
It takes two arguments:
|
||||
- the path to the OpenSSL include files' directory
|
||||
(e.g. openssl-1.0.1-beta3/include/openssl/)
|
||||
- the path to the C file to be generated
|
||||
(probably Modules/_ssl_data.h)
|
||||
"""
|
||||
|
||||
import datetime
|
||||
import os
|
||||
import re
|
||||
|
|
Loading…
Reference in New Issue