view roundup/anypy/random_.py @ 7441:e7df82ae137d

Cleanup docker before 2.3.0b1 release scripts/Docker/Dockerfile Document/implement pip_sdist source mode for testing the source distribution. Change from multiple if's to case statement. Disable verbose tracing of shells script. Use --build-arg="VERBOSE=1" to enable set -xv. scripts/Docker/roundup_start Report error if demo mode is used with 2.2.0. This catches the easiest case where build is done using pypi before 2.3.0 final is released. Indent demo mode PORT_8080 doc block so it's not lost in a wall of text. doc/installation.txt Document all source --build-args including how to build from pypi using a version specifier. Break out other uses of --build-arg into code blocks. Reference docker compose section rather than referencing docker-compose.yml. Clarify docker hub tagging for devel releases. Minor formatting fixes.
author John Rouillard <rouilj@ieee.org>
date Wed, 31 May 2023 19:14:56 -0400
parents 07ce4e4110f5
children f002747b6773
line wrap: on
line source

try:
    from secrets import choice, randbelow, token_bytes

    def seed(v=None):
        pass

    is_weak = False
except ImportError:
    import os as _os
    import random as _random

    # prefer to use SystemRandom if it is available
    if hasattr(_random, 'SystemRandom'):
        def seed(v=None):
            pass

        _r = _random.SystemRandom()
        is_weak = False
    else:
        # don't completely throw away the existing state, but add some
        # more random state to the existing state
        def seed(v=None):
            import os
            import time
            _r.seed((_r.getstate(),
                     v,
                     hasattr(os, 'getpid') and os.getpid(),
                     time.time()))

        # create our own instance so we don't mess with the global
        # random number generator
        _r = _random.Random()
        seed()
        is_weak = True

    choice = _r.choice

    def randbelow(i):
        return _r.randint(0, i - 1)

    if hasattr(_os, 'urandom'):
        def token_bytes(l):
            return _os.urandom(l)
    else:
        def token_bytes(l):
            _bchr = chr if str == bytes else lambda x: bytes((x,))
            return b''.join([_bchr(_r.getrandbits(8)) for i in range(l)])

Roundup Issue Tracker: http://roundup-tracker.org/