61 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""Generators which yield an id to include in a JSON-RPC request."""
 | 
						|
import itertools
 | 
						|
from random import choice
 | 
						|
from string import ascii_lowercase, digits
 | 
						|
from typing import Iterator
 | 
						|
from uuid import uuid4
 | 
						|
 | 
						|
 | 
						|
def decimal(start: int = 1) -> Iterator[int]:
 | 
						|
    """
 | 
						|
    Increments from `start`.
 | 
						|
 | 
						|
    e.g. 1, 2, 3, .. 9, 10, 11, etc.
 | 
						|
 | 
						|
    Args:
 | 
						|
        start: The first value to start with.
 | 
						|
    """
 | 
						|
    return itertools.count(start)
 | 
						|
 | 
						|
 | 
						|
def hexadecimal(start: int = 1) -> Iterator[str]:
 | 
						|
    """
 | 
						|
    Incremental hexadecimal numbers.
 | 
						|
 | 
						|
    e.g. 1, 2, 3, .. 9, a, b, etc.
 | 
						|
 | 
						|
    Args:
 | 
						|
        start: The first value to start with.
 | 
						|
    """
 | 
						|
    while True:
 | 
						|
        yield "%x" % start
 | 
						|
        start += 1
 | 
						|
 | 
						|
 | 
						|
def random(length: int = 8, chars: str = digits + ascii_lowercase) -> Iterator[str]:
 | 
						|
    """
 | 
						|
    A random string.
 | 
						|
 | 
						|
    Not unique, but has around 1 in a million chance of collision (with the default 8
 | 
						|
    character length).
 | 
						|
 | 
						|
    Example:
 | 
						|
        'fubui5e6'
 | 
						|
 | 
						|
    Args:
 | 
						|
        length: Length of the random string.
 | 
						|
        chars: The characters to randomly choose from.
 | 
						|
    """
 | 
						|
    while True:
 | 
						|
        yield "".join([choice(chars) for _ in range(length)])
 | 
						|
 | 
						|
 | 
						|
def uuid() -> Iterator[str]:
 | 
						|
    """
 | 
						|
    Unique uuid ids.
 | 
						|
 | 
						|
    Example:
 | 
						|
        '9bfe2c93-717e-4a45-b91b-55422c5af4ff'
 | 
						|
    """
 | 
						|
    while True:
 | 
						|
        yield str(uuid4())
 |