Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/faker/providers/profile/__init__.py: 31%
22 statements
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
1import itertools
3from datetime import date
4from decimal import Decimal
5from typing import Dict, List, Optional, Tuple, Union
7from ...typing import SexLiteral
8from .. import BaseProvider
11class Provider(BaseProvider):
12 """
13 This provider is a collection of functions to generate personal profiles and identities.
15 """
17 def simple_profile(self, sex: Optional[SexLiteral] = None) -> Dict[str, Union[str, date, SexLiteral]]:
18 """
19 Generates a basic profile with personal informations
20 """
21 sex_ = self.random_element(["F", "M"]) if sex is None else sex
22 if sex_ == "F":
23 name = self.generator.name_female()
24 elif sex_ == "M":
25 name = self.generator.name_male()
26 return {
27 "username": self.generator.user_name(),
28 "name": name,
29 "sex": sex_,
30 "address": self.generator.address(),
31 "mail": self.generator.free_email(),
32 "birthdate": self.generator.date_of_birth(),
33 }
35 def profile(
36 self, fields: Optional[List[str]] = None, sex: Optional[SexLiteral] = None
37 ) -> Dict[str, Union[str, Tuple[Decimal, Decimal], List[str], date]]:
38 """
39 Generates a complete profile.
40 If "fields" is not empty, only the fields in the list will be returned
41 """
42 if fields is None:
43 fields = []
45 d = {
46 "job": self.generator.job(),
47 "company": self.generator.company(),
48 "ssn": self.generator.ssn(),
49 "residence": self.generator.address(),
50 "current_location": (self.generator.latitude(), self.generator.longitude()),
51 "blood_group": "".join(self.random_element(list(itertools.product(["A", "B", "AB", "O"], ["+", "-"])))),
52 "website": [self.generator.url() for _ in range(1, self.random_int(2, 5))],
53 }
55 d = dict(d, **self.generator.simple_profile(sex))
56 # field selection
57 if len(fields) > 0:
58 d = {k: v for k, v in d.items() if k in fields}
60 return d