Source code for randword.rand_name

from random import choice, sample
from typing import Optional, List, Union

from .utilities import get_data


[docs]def name(count: Optional[int] = None, gender: Optional[str] = None) -> Union[str, List[str]]: ''' Returns a random first name or a list of them Args: count (int, optional): The number of names to be generated. Defaults to `None` gender (str, optional): Specifies the name of which gender will be generated. Defaults to `None` Returns: Union[str, List[str]]: A random first name if `count` is `None` or a list of random first names if `count` is not `None` ''' if gender == 'm': names = get_data('names', 'male_names') elif gender == 'f': names = get_data('names', 'female_names') else: male_names = get_data('names', 'male_names') female_names = get_data('names', 'female_names') names = male_names + female_names if count: return sample(names, count) else: return choice(names)
[docs]def surname(count: Optional[int] = None) -> Union[str, List[str]]: ''' Returns a random surname or a list of them Args: count (int, optional): The number of surnames to be generated. Defaults to `None` Returns: Union[str, List[str]]: A random surname if `count` is `None` or a list of surnames if `count` is not `None` ''' surnames = get_data('names', 'surnames') if count: return sample(surnames, count) else: return choice(surnames)
[docs]def fullname(count: Optional[int] = None, gender: Optional[str] = None) -> Union[str, List[str]]: ''' Returns a random fullname or a list of them Args: count (int, optional): The number of fullnames to be generated. Defaults to `None` gender (str): Specifies the fullname of which gender will be generated. Defaults to `None` Returns: Union[str, List[str]]: A random fullname if `count` is `None` or a list of random fullnames if `count` is not `None` ''' if gender == 'm': names = get_data('names', 'male_names') elif gender == 'f': names = get_data('names', 'female_names') else: male_names = get_data('names', 'male_names') female_names = get_data('names', 'female_names') names = male_names + female_names surnames = get_data('names', 'surnames') if count: fullnames = [] random_names = sample(names, count) random_surnames = sample(surnames, count) for name, surname in zip(random_names, random_surnames): fullnames.append(f'{name} {surname}') return fullnames else: return f'{choice(names)} {choice(surnames)}'
if __name__ == '__main__': print(name()) print(surname()) print(fullname())