Skip to content

Commit

Permalink
fix person prefixes
Browse files Browse the repository at this point in the history
  • Loading branch information
fcurella committed Oct 28, 2022
1 parent 70c965b commit 79403fc
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 2 deletions.
6 changes: 4 additions & 2 deletions faker/providers/person/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from faker.utils.datasets import add_ordereddicts

from .. import BaseProvider, ElementsType

localized = True
Expand Down Expand Up @@ -267,7 +269,7 @@ def prefix(self) -> str:
if hasattr(self, "prefixes"):
return self.random_element(self.prefixes) # type: ignore[attr-defined]
if hasattr(self, "prefixes_male") and hasattr(self, "prefixes_female") and hasattr(self, "prefixes_nonbinary"):
prefixes = self.prefixes_male + self.prefixes_female + self.prefixes_nonbinary # type: ignore[attr-defined]
prefixes = add_ordereddicts(self.prefixes_male, self.prefixes_female, self.prefixes_nonbinary) # type: ignore[attr-defined]
return self.random_element(prefixes)
if hasattr(self, "prefixes_male") and hasattr(self, "prefixes_female"):
prefixes = self.random_element((self.prefixes_male, self.prefixes_female)) # type: ignore[attr-defined]
Expand All @@ -293,7 +295,7 @@ def suffix(self) -> str:
if hasattr(self, "suffixes"):
return self.random_element(self.suffixes) # type: ignore[attr-defined]
if hasattr(self, "suffixes_male") and hasattr(self, "suffixes_female") and hasattr(self, "suffixes_nonbinary"):
suffixes = self.suffixes_male + self.suffixes_female + self.suffixes_nonbinary # type: ignore[attr-defined]
suffixes = add_ordereddicts(self.suffixes_male, self.suffixes_female, self.suffixes_nonbinary) # type: ignore[attr-defined]
return self.random_element(suffixes)
if hasattr(self, "suffixes_male") and hasattr(self, "suffixes_female"):
suffixes = self.random_element((self.suffixes_male, self.suffixes_female)) # type: ignore[attr-defined]
Expand Down
8 changes: 8 additions & 0 deletions faker/utils/datasets.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from itertools import chain

from faker.typing import OrderedDictType


def add_ordereddicts(*odicts: OrderedDictType) -> OrderedDictType:
items = [odict.items() for odict in odicts]
return OrderedDictType(chain(*items))
8 changes: 8 additions & 0 deletions tests/utils/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@

from faker.config import META_PROVIDERS_MODULES, PROVIDERS
from faker.generator import random
from faker.typing import OrderedDictType
from faker.utils.checksums import calculate_luhn, luhn_checksum
from faker.utils.datasets import add_ordereddicts
from faker.utils.distribution import choices_distribution, choices_distribution_unique
from faker.utils.loading import find_available_locales, find_available_providers, get_path

Expand Down Expand Up @@ -116,3 +118,9 @@ def test_invalid_luhn(self):
Example from wiki https://en.wikipedia.org/wiki/Luhn_algorithm
"""
assert luhn_checksum("79927398714") != 0

def test_add_ordereddicts(self):
d1 = OrderedDictType([("a", 1), ("b", 2)])
d2 = OrderedDictType([("c", 3), ("d", 4)])
result = add_ordereddicts(d1, d2)
assert result == OrderedDictType([("a", 1), ("b", 2), ("c", 3), ("d", 4)])

0 comments on commit 79403fc

Please sign in to comment.