mirror of https://github.com/python/cpython
Update whatsnew. Salt the random number seed.
This commit is contained in:
parent
10e05e17a3
commit
3fcf002994
|
@ -125,7 +125,7 @@ Example of the parser's automatically generated help::
|
||||||
|
|
||||||
>>> parser.parse_args('-h'.split())
|
>>> parser.parse_args('-h'.split())
|
||||||
|
|
||||||
usage: tmp_argparse_example.py [-h] -u USER
|
usage: manage_cloud.py [-h] -u USER
|
||||||
{deploy,start,stop} HOSTNAME [HOSTNAME ...]
|
{deploy,start,stop} HOSTNAME [HOSTNAME ...]
|
||||||
|
|
||||||
Manage servers
|
Manage servers
|
||||||
|
@ -321,10 +321,10 @@ module::
|
||||||
PEP written by Barry Warsaw.
|
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.
|
in bytes format.
|
||||||
|
|
||||||
* New functions :func:`~email.message_from_bytes` and
|
* New functions :func:`~email.message_from_bytes` and
|
||||||
|
@ -832,6 +832,7 @@ New, Improved, and Deprecated Modules
|
||||||
|
|
||||||
(Contributed by Rodolpho Eckhardt and Nick Coghlan, :issue:`10220`.)
|
(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: Create a new section for all changes relating to context managers.
|
||||||
.. XXX: Various ConfigParser changes
|
.. XXX: Various ConfigParser changes
|
||||||
.. XXX: Mention inspect.getattr_static (Michael Foord)
|
.. XXX: Mention inspect.getattr_static (Michael Foord)
|
||||||
|
@ -902,7 +903,7 @@ New, Improved, and Deprecated Modules
|
||||||
platbase = "C:\Python32"
|
platbase = "C:\Python32"
|
||||||
prefix = "C:\Python32"
|
prefix = "C:\Python32"
|
||||||
projectbase = "C:\Python32"
|
projectbase = "C:\Python32"
|
||||||
py_version = "3.2b1"
|
py_version = "3.2"
|
||||||
py_version_nodot = "32"
|
py_version_nodot = "32"
|
||||||
py_version_short = "3.2"
|
py_version_short = "3.2"
|
||||||
srcdir = "C:\Python32"
|
srcdir = "C:\Python32"
|
||||||
|
@ -1151,3 +1152,8 @@ require changes to your code:
|
||||||
|
|
||||||
* The :func:`sys.setfilesystemencoding` function was removed because
|
* The :func:`sys.setfilesystemencoding` function was removed because
|
||||||
it had a flawed design.
|
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)``.
|
||||||
|
|
|
@ -43,6 +43,7 @@ from math import log as _log, exp as _exp, pi as _pi, e as _e, ceil as _ceil
|
||||||
from math import sqrt as _sqrt, acos as _acos, cos as _cos, sin as _sin
|
from math import sqrt as _sqrt, acos as _acos, cos as _cos, sin as _sin
|
||||||
from os import urandom as _urandom
|
from os import urandom as _urandom
|
||||||
import collections as _collections
|
import collections as _collections
|
||||||
|
from hashlib import sha512 as _sha512
|
||||||
|
|
||||||
__all__ = ["Random","seed","random","uniform","randint","choice","sample",
|
__all__ = ["Random","seed","random","uniform","randint","choice","sample",
|
||||||
"randrange","shuffle","normalvariate","lognormvariate",
|
"randrange","shuffle","normalvariate","lognormvariate",
|
||||||
|
@ -110,9 +111,11 @@ class Random(_random.Random):
|
||||||
import time
|
import time
|
||||||
a = int(time.time() * 256) # use fractional seconds
|
a = int(time.time() * 256) # use fractional seconds
|
||||||
|
|
||||||
if version == 2 and isinstance(a, (str, bytes, bytearray)):
|
if version == 2:
|
||||||
|
if isinstance(a, (str, bytes, bytearray)):
|
||||||
if isinstance(a, str):
|
if isinstance(a, str):
|
||||||
a = a.encode("utf8")
|
a = a.encode("utf8")
|
||||||
|
a += _sha512(a).digest()
|
||||||
a = int.from_bytes(a, 'big')
|
a = int.from_bytes(a, 'big')
|
||||||
|
|
||||||
super().seed(a)
|
super().seed(a)
|
||||||
|
|
|
@ -246,8 +246,8 @@ class MersenneTwister_TestBasicOps(TestBasicOps):
|
||||||
'0x1.1ebb4352e4c4dp-1', '0x1.1a7422abf9c11p-1'])
|
'0x1.1ebb4352e4c4dp-1', '0x1.1a7422abf9c11p-1'])
|
||||||
self.gen.seed("the quick brown fox", version=2)
|
self.gen.seed("the quick brown fox", version=2)
|
||||||
self.assertEqual([self.gen.random().hex() for i in range(4)],
|
self.assertEqual([self.gen.random().hex() for i in range(4)],
|
||||||
['0x1.1294009b9eda4p-2', '0x1.2ff96171b0010p-1',
|
['0x1.1239ddfb11b7cp-3', '0x1.b3cbb5c51b120p-4',
|
||||||
'0x1.459e0989bd8e0p-5', '0x1.8b5f55892ddcbp-1'])
|
'0x1.8c4f55116b60fp-1', '0x1.63eb525174a27p-1'])
|
||||||
|
|
||||||
def test_setstate_first_arg(self):
|
def test_setstate_first_arg(self):
|
||||||
self.assertRaises(ValueError, self.gen.setstate, (1, None, None))
|
self.assertRaises(ValueError, self.gen.setstate, (1, None, None))
|
||||||
|
|
Loading…
Reference in New Issue