>>> parser.parse_args('-h'.split())
- usage: tmp_argparse_example.py [-h] -u USER
- {deploy,start,stop} HOSTNAME [HOSTNAME ...]
+ usage: manage_cloud.py [-h] -u USER
+ {deploy,start,stop} HOSTNAME [HOSTNAME ...]
Manage servers
PEP written by Barry Warsaw.
-Email 5.1
-=========
+Email
+=====
-The email package is extended to be able to parse and generate email messages
+The email package has been extended to parse and generate email messages
in bytes format.
* New functions :func:`~email.message_from_bytes` and
(Contributed by Rodolpho Eckhardt and Nick Coghlan, :issue:`10220`.)
+.. XXX: notes on new random.seed() version 2
.. XXX: Create a new section for all changes relating to context managers.
.. XXX: Various ConfigParser changes
.. XXX: Mention inspect.getattr_static (Michael Foord)
platbase = "C:\Python32"
prefix = "C:\Python32"
projectbase = "C:\Python32"
- py_version = "3.2b1"
+ py_version = "3.2"
py_version_nodot = "32"
py_version_short = "3.2"
srcdir = "C:\Python32"
* The :func:`sys.setfilesystemencoding` function was removed because
it had a flawed design.
+
+ * The :func:`random.seed` function and method now performing salting for
+ string seeds. To access the previous version of *seed* in order to
+ reproduce Python 3.1 sequences, set the *version* argument to *1*,
+ ``random.seed(s, version=1)``.
from math import sqrt as _sqrt, acos as _acos, cos as _cos, sin as _sin
from os import urandom as _urandom
import collections as _collections
+from hashlib import sha512 as _sha512
__all__ = ["Random","seed","random","uniform","randint","choice","sample",
"randrange","shuffle","normalvariate","lognormvariate",
import time
a = int(time.time() * 256) # use fractional seconds
- if version == 2 and isinstance(a, (str, bytes, bytearray)):
- if isinstance(a, str):
- a = a.encode("utf8")
- a = int.from_bytes(a, 'big')
+ if version == 2:
+ if isinstance(a, (str, bytes, bytearray)):
+ if isinstance(a, str):
+ a = a.encode("utf8")
+ a += _sha512(a).digest()
+ a = int.from_bytes(a, 'big')
super().seed(a)
self.gauss_next = None
'0x1.1ebb4352e4c4dp-1', '0x1.1a7422abf9c11p-1'])
self.gen.seed("the quick brown fox", version=2)
self.assertEqual([self.gen.random().hex() for i in range(4)],
- ['0x1.1294009b9eda4p-2', '0x1.2ff96171b0010p-1',
- '0x1.459e0989bd8e0p-5', '0x1.8b5f55892ddcbp-1'])
+ ['0x1.1239ddfb11b7cp-3', '0x1.b3cbb5c51b120p-4',
+ '0x1.8c4f55116b60fp-1', '0x1.63eb525174a27p-1'])
def test_setstate_first_arg(self):
self.assertRaises(ValueError, self.gen.setstate, (1, None, None))