We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Arguments shadow builtin names
After we have updated `flake8-builtins` we got new several new errors.

```
=================================== FAILURES ===================================
_________________________________ FLAKE8-check _________________________________
/home/travis/build/lk-geimfari/mimesis/mimesis/providers/business.py:47:5: A002 "copyright" is used as an argument and thus shadows a python builtin, consider renaming the argument
_________________________________ FLAKE8-check _________________________________
/home/travis/build/lk-geimfari/mimesis/mimesis/providers/cryptographic.py:37:5: A002 "hash" is used as an argument and thus shadows a python builtin, consider renaming the argument
/home/travis/build/lk-geimfari/mimesis/mimesis/providers/cryptographic.py:50:5: A002 "bytes" is used as an argument and thus shadows a python builtin, consider renaming the argument
```
Arguments shadow builtin names
After we have updated `flake8-builtins` we got new several new errors.

```
=================================== FAILURES ===================================
_________________________________ FLAKE8-check _________________________________
/home/travis/build/lk-geimfari/mimesis/mimesis/providers/business.py:47:5: A002 "copyright" is used as an argument and thus shadows a python builtin, consider renaming the argument
_________________________________ FLAKE8-check _________________________________
/home/travis/build/lk-geimfari/mimesis/mimesis/providers/cryptographic.py:37:5: A002 "hash" is used as an argument and thus shadows a python builtin, consider renaming the argument
/home/travis/build/lk-geimfari/mimesis/mimesis/providers/cryptographic.py:50:5: A002 "bytes" is used as an argument and thus shadows a python builtin, consider renaming the argument
```

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `mimesis/providers/business.py`
Content:
```
1 """Business data provider."""
2 
3 from mimesis.data import (CRYPTOCURRENCY_ISO_CODES, CRYPTOCURRENCY_SYMBOLS,
4                           CURRENCY_ISO_CODES, CURRENCY_SYMBOLS)
5 from mimesis.providers.base import BaseDataProvider
6 from mimesis.utils import pull
7 
8 __all__ = ['Business']
9 
10 
11 class Business(BaseDataProvider):
12     """Class for generating data for business."""
13 
14     def __init__(self, *args, **kwargs):
15         """Initialize attributes.
16 
17         :param locale: Current locale.
18         """
19         super().__init__(*args, **kwargs)
20         self._data = pull('business.json', self.locale)
21 
22     def company(self) -> str:
23         """Get a random company name.
24 
25         :return: Company name.
26 
27         :Example:
28             Gamma Systems.
29         """
30         return self.random.choice(
31             self._data['company']['name'])
32 
33     def company_type(self, abbr: bool = False) -> str:
34         """Get a random type of business entity.
35 
36         :param abbr: Abbreviated company type.
37         :return: Types of business entity.
38 
39         :Example:
40             Incorporated.
41         """
42         return self.random.choice(
43             self._data['company']['type'].get(
44                 'abbr' if abbr else 'title'),
45         )
46 
47     def copyright(self) -> str:
48         """Generate a random copyright.
49 
50         :return: Copyright of company.
51 
52         :Example:
53             © Komercia, Inc.
54         """
55         return '© {}, {}'.format(
56             self.company(),
57             self.company_type(abbr=True),
58         )
59 
60     def currency_iso_code(self) -> str:
61         """Get code of the currency.
62 
63         :return: Currency code.
64 
65         :Example:
66             RUR.
67         """
68         return self.random.choice(CURRENCY_ISO_CODES)
69 
70     def cryptocurrency_iso_code(self) -> str:
71         """Get symbol of random cryptocurrency.
72 
73         :return: Symbol of cryptocurrency.
74         """
75         return self.random.choice(CRYPTOCURRENCY_ISO_CODES)
76 
77     def currency_symbol(self):
78         """Get a currency symbol for current locale.
79 
80         :return: Currency symbol.
81         """
82         return CURRENCY_SYMBOLS[self.locale]
83 
84     def cryptocurrency_symbol(self) -> str:
85         """Get a cryptocurrency symbol.
86 
87         :return: Symbol of cryptocurrency.
88 
89         :Example:
90             Ƀ
91         """
92         return self.random.choice(CRYPTOCURRENCY_SYMBOLS)
93 
94     def price(self, minimum: float = 10.00,
95               maximum: float = 1000.00) -> str:
96         """Generate a random price.
97 
98         :param minimum: Max value of price.
99         :param maximum: Min value of price.
100         :return: Price.
101 
102         :Example:
103             599.99 $.
104         """
105         price = self.random.uniform(minimum, maximum, precision=2)
106         return '{0} {1}'.format(price, self.currency_symbol())
107 
108     def price_in_btc(self, minimum: float = 0, maximum: float = 2) -> str:
109         """Generate random price in BTC.
110 
111         :param minimum: Minimum value of price
112         :param maximum: Maximum value of price.
113         :return: Price in BTC.
114 
115         :Example:
116             0.5885238 BTC
117         """
118         return '{} BTC'.format(
119             self.random.uniform(
120                 minimum,
121                 maximum,
122                 precision=7,
123             ),
124         )
125
```

Path: `mimesis/providers/cryptographic.py`
Content:
```
1 """Cryptographic data provider."""
2 
3 import hashlib
4 import string
5 import uuid
6 from typing import Optional
7 
8 from mimesis.enums import Algorithm
9 from mimesis.providers.base import BaseDataProvider
10 from mimesis.providers.text import Text
11 from mimesis.typing import Bytes
12 
13 __all__ = ['Cryptographic']
14 
15 
16 class Cryptographic(BaseDataProvider):
17     """Class that provides cryptographic data."""
18 
19     def __init__(self, *args, **kwargs) -> None:
20         """Initialize attributes.
21 
22         :param seed: Seed.
23         """
24         super().__init__(*args, **kwargs)
25         self.__words = Text('en')._data['words']
26         self.__chars = string.ascii_letters + string.digits + string.punctuation
27 
28     def uuid(self, version: Optional[int] = None) -> str:
29         """Generate random UUID.
30 
31         :param version: UUID version.
32         :return: UUID
33         """
34         bits = self.random.getrandbits(128)
35         return str(uuid.UUID(int=bits, version=version))
36 
37     def hash(self, algorithm: Optional[Algorithm] = None) -> str:
38         """Generate random hash.
39 
40         :param algorithm: Enum object ``Algorithm``.
41         :return: Hash.
42         :raises NonEnumerableError: if algorithm is not supported.
43         """
44         key = self._validate_enum(algorithm, Algorithm)
45 
46         if hasattr(hashlib, key):
47             fn = getattr(hashlib, key)
48             return fn(self.uuid().encode()).hexdigest()
49 
50     def bytes(self, entropy: int = 32) -> Bytes:
51         """Generate byte string containing *entropy* bytes.
52 
53         The string has *entropy* random bytes, each byte
54         converted to two hex digits.
55 
56         :param entropy: Number of bytes.
57         :return: Bytes.
58         :rtype: bytes
59         """
60         return bytes(self.random.getrandbits(8)
61                      for _ in range(entropy))
62 
63     def token(self, entropy: int = 32) -> str:
64         """Generate hexadecimal string.
65 
66         :param entropy: Number of bytes.
67         :return: Token.
68         """
69         return self.bytes(entropy).hex()
70 
71     def salt(self, size: int = 16) -> str:
72         """Generate salt chars (not cryptographically safe).
73 
74         :param size: Salt size.
75         :return: Salt.
76         """
77         char_sequence = [
78             self.random.choice(self.__chars)
79             for _ in range(size)
80         ]
81         return ''.join(char_sequence)
82 
83     def mnemonic_phrase(self, length: int = 12) -> str:
84         """Generate pseudo mnemonic phrase.
85 
86         :param length: Number of words.
87         :return: Mnemonic code.
88         """
89         words = self.__words['normal']
90         return ' '.join(self.random.choice(words) for _ in range(length))
91
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/mimesis/providers/business.py b/mimesis/providers/business.py
--- a/mimesis/providers/business.py
+++ b/mimesis/providers/business.py
@@ -27,8 +27,7 @@
         :Example:
             Gamma Systems.
         """
-        return self.random.choice(
-            self._data['company']['name'])
+        return self.random.choice(self._data['company']['name'])
 
     def company_type(self, abbr: bool = False) -> str:
         """Get a random type of business entity.
@@ -40,11 +39,10 @@
             Incorporated.
         """
         return self.random.choice(
-            self._data['company']['type'].get(
-                'abbr' if abbr else 'title'),
+            self._data['company']['type'].get('abbr' if abbr else 'title'),
         )
 
-    def copyright(self) -> str:
+    def copyright(self) -> str:  # noqa: A002
         """Generate a random copyright.
 
         :return: Copyright of company.
diff --git a/mimesis/providers/cryptographic.py b/mimesis/providers/cryptographic.py
--- a/mimesis/providers/cryptographic.py
+++ b/mimesis/providers/cryptographic.py
@@ -34,7 +34,7 @@
         bits = self.random.getrandbits(128)
         return str(uuid.UUID(int=bits, version=version))
 
-    def hash(self, algorithm: Optional[Algorithm] = None) -> str:
+    def hash(self, algorithm: Optional[Algorithm] = None) -> str:  # noqa: A002
         """Generate random hash.
 
         :param algorithm: Enum object ``Algorithm``.
@@ -47,7 +47,7 @@
             fn = getattr(hashlib, key)
             return fn(self.uuid().encode()).hexdigest()
 
-    def bytes(self, entropy: int = 32) -> Bytes:
+    def bytes(self, entropy: int = 32) -> Bytes:  # noqa: A002
         """Generate byte string containing *entropy* bytes.
 
         The string has *entropy* random bytes, each byte

{"golden_diff": "diff --git a/mimesis/providers/business.py b/mimesis/providers/business.py\n--- a/mimesis/providers/business.py\n+++ b/mimesis/providers/business.py\n@@ -27,8 +27,7 @@\n         :Example:\n             Gamma Systems.\n         \"\"\"\n-        return self.random.choice(\n-            self._data['company']['name'])\n+        return self.random.choice(self._data['company']['name'])\n \n     def company_type(self, abbr: bool = False) -> str:\n         \"\"\"Get a random type of business entity.\n@@ -40,11 +39,10 @@\n             Incorporated.\n         \"\"\"\n         return self.random.choice(\n-            self._data['company']['type'].get(\n-                'abbr' if abbr else 'title'),\n+            self._data['company']['type'].get('abbr' if abbr else 'title'),\n         )\n \n-    def copyright(self) -> str:\n+    def copyright(self) -> str:  # noqa: A002\n         \"\"\"Generate a random copyright.\n \n         :return: Copyright of company.\ndiff --git a/mimesis/providers/cryptographic.py b/mimesis/providers/cryptographic.py\n--- a/mimesis/providers/cryptographic.py\n+++ b/mimesis/providers/cryptographic.py\n@@ -34,7 +34,7 @@\n         bits = self.random.getrandbits(128)\n         return str(uuid.UUID(int=bits, version=version))\n \n-    def hash(self, algorithm: Optional[Algorithm] = None) -> str:\n+    def hash(self, algorithm: Optional[Algorithm] = None) -> str:  # noqa: A002\n         \"\"\"Generate random hash.\n \n         :param algorithm: Enum object ``Algorithm``.\n@@ -47,7 +47,7 @@\n             fn = getattr(hashlib, key)\n             return fn(self.uuid().encode()).hexdigest()\n \n-    def bytes(self, entropy: int = 32) -> Bytes:\n+    def bytes(self, entropy: int = 32) -> Bytes:  # noqa: A002\n         \"\"\"Generate byte string containing *entropy* bytes.\n \n         The string has *entropy* random bytes, each byte\n", "issue": "Arguments shadow builtin names\nAfter we have updated `flake8-builtins` we got new several new errors.\r\n\r\n```\r\n=================================== FAILURES ===================================\r\n_________________________________ FLAKE8-check _________________________________\r\n/home/travis/build/lk-geimfari/mimesis/mimesis/providers/business.py:47:5: A002 \"copyright\" is used as an argument and thus shadows a python builtin, consider renaming the argument\r\n_________________________________ FLAKE8-check _________________________________\r\n/home/travis/build/lk-geimfari/mimesis/mimesis/providers/cryptographic.py:37:5: A002 \"hash\" is used as an argument and thus shadows a python builtin, consider renaming the argument\r\n/home/travis/build/lk-geimfari/mimesis/mimesis/providers/cryptographic.py:50:5: A002 \"bytes\" is used as an argument and thus shadows a python builtin, consider renaming the argument\r\n```\nArguments shadow builtin names\nAfter we have updated `flake8-builtins` we got new several new errors.\r\n\r\n```\r\n=================================== FAILURES ===================================\r\n_________________________________ FLAKE8-check _________________________________\r\n/home/travis/build/lk-geimfari/mimesis/mimesis/providers/business.py:47:5: A002 \"copyright\" is used as an argument and thus shadows a python builtin, consider renaming the argument\r\n_________________________________ FLAKE8-check _________________________________\r\n/home/travis/build/lk-geimfari/mimesis/mimesis/providers/cryptographic.py:37:5: A002 \"hash\" is used as an argument and thus shadows a python builtin, consider renaming the argument\r\n/home/travis/build/lk-geimfari/mimesis/mimesis/providers/cryptographic.py:50:5: A002 \"bytes\" is used as an argument and thus shadows a python builtin, consider renaming the argument\r\n```\n", "before_files": [{"content": "\"\"\"Business data provider.\"\"\"\n\nfrom mimesis.data import (CRYPTOCURRENCY_ISO_CODES, CRYPTOCURRENCY_SYMBOLS,\n                          CURRENCY_ISO_CODES, CURRENCY_SYMBOLS)\nfrom mimesis.providers.base import BaseDataProvider\nfrom mimesis.utils import pull\n\n__all__ = ['Business']\n\n\nclass Business(BaseDataProvider):\n    \"\"\"Class for generating data for business.\"\"\"\n\n    def __init__(self, *args, **kwargs):\n        \"\"\"Initialize attributes.\n\n        :param locale: Current locale.\n        \"\"\"\n        super().__init__(*args, **kwargs)\n        self._data = pull('business.json', self.locale)\n\n    def company(self) -> str:\n        \"\"\"Get a random company name.\n\n        :return: Company name.\n\n        :Example:\n            Gamma Systems.\n        \"\"\"\n        return self.random.choice(\n            self._data['company']['name'])\n\n    def company_type(self, abbr: bool = False) -> str:\n        \"\"\"Get a random type of business entity.\n\n        :param abbr: Abbreviated company type.\n        :return: Types of business entity.\n\n        :Example:\n            Incorporated.\n        \"\"\"\n        return self.random.choice(\n            self._data['company']['type'].get(\n                'abbr' if abbr else 'title'),\n        )\n\n    def copyright(self) -> str:\n        \"\"\"Generate a random copyright.\n\n        :return: Copyright of company.\n\n        :Example:\n            \u00a9 Komercia, Inc.\n        \"\"\"\n        return '\u00a9 {}, {}'.format(\n            self.company(),\n            self.company_type(abbr=True),\n        )\n\n    def currency_iso_code(self) -> str:\n        \"\"\"Get code of the currency.\n\n        :return: Currency code.\n\n        :Example:\n            RUR.\n        \"\"\"\n        return self.random.choice(CURRENCY_ISO_CODES)\n\n    def cryptocurrency_iso_code(self) -> str:\n        \"\"\"Get symbol of random cryptocurrency.\n\n        :return: Symbol of cryptocurrency.\n        \"\"\"\n        return self.random.choice(CRYPTOCURRENCY_ISO_CODES)\n\n    def currency_symbol(self):\n        \"\"\"Get a currency symbol for current locale.\n\n        :return: Currency symbol.\n        \"\"\"\n        return CURRENCY_SYMBOLS[self.locale]\n\n    def cryptocurrency_symbol(self) -> str:\n        \"\"\"Get a cryptocurrency symbol.\n\n        :return: Symbol of cryptocurrency.\n\n        :Example:\n            \u0243\n        \"\"\"\n        return self.random.choice(CRYPTOCURRENCY_SYMBOLS)\n\n    def price(self, minimum: float = 10.00,\n              maximum: float = 1000.00) -> str:\n        \"\"\"Generate a random price.\n\n        :param minimum: Max value of price.\n        :param maximum: Min value of price.\n        :return: Price.\n\n        :Example:\n            599.99 $.\n        \"\"\"\n        price = self.random.uniform(minimum, maximum, precision=2)\n        return '{0} {1}'.format(price, self.currency_symbol())\n\n    def price_in_btc(self, minimum: float = 0, maximum: float = 2) -> str:\n        \"\"\"Generate random price in BTC.\n\n        :param minimum: Minimum value of price\n        :param maximum: Maximum value of price.\n        :return: Price in BTC.\n\n        :Example:\n            0.5885238 BTC\n        \"\"\"\n        return '{} BTC'.format(\n            self.random.uniform(\n                minimum,\n                maximum,\n                precision=7,\n            ),\n        )\n", "path": "mimesis/providers/business.py"}, {"content": "\"\"\"Cryptographic data provider.\"\"\"\n\nimport hashlib\nimport string\nimport uuid\nfrom typing import Optional\n\nfrom mimesis.enums import Algorithm\nfrom mimesis.providers.base import BaseDataProvider\nfrom mimesis.providers.text import Text\nfrom mimesis.typing import Bytes\n\n__all__ = ['Cryptographic']\n\n\nclass Cryptographic(BaseDataProvider):\n    \"\"\"Class that provides cryptographic data.\"\"\"\n\n    def __init__(self, *args, **kwargs) -> None:\n        \"\"\"Initialize attributes.\n\n        :param seed: Seed.\n        \"\"\"\n        super().__init__(*args, **kwargs)\n        self.__words = Text('en')._data['words']\n        self.__chars = string.ascii_letters + string.digits + string.punctuation\n\n    def uuid(self, version: Optional[int] = None) -> str:\n        \"\"\"Generate random UUID.\n\n        :param version: UUID version.\n        :return: UUID\n        \"\"\"\n        bits = self.random.getrandbits(128)\n        return str(uuid.UUID(int=bits, version=version))\n\n    def hash(self, algorithm: Optional[Algorithm] = None) -> str:\n        \"\"\"Generate random hash.\n\n        :param algorithm: Enum object ``Algorithm``.\n        :return: Hash.\n        :raises NonEnumerableError: if algorithm is not supported.\n        \"\"\"\n        key = self._validate_enum(algorithm, Algorithm)\n\n        if hasattr(hashlib, key):\n            fn = getattr(hashlib, key)\n            return fn(self.uuid().encode()).hexdigest()\n\n    def bytes(self, entropy: int = 32) -> Bytes:\n        \"\"\"Generate byte string containing *entropy* bytes.\n\n        The string has *entropy* random bytes, each byte\n        converted to two hex digits.\n\n        :param entropy: Number of bytes.\n        :return: Bytes.\n        :rtype: bytes\n        \"\"\"\n        return bytes(self.random.getrandbits(8)\n                     for _ in range(entropy))\n\n    def token(self, entropy: int = 32) -> str:\n        \"\"\"Generate hexadecimal string.\n\n        :param entropy: Number of bytes.\n        :return: Token.\n        \"\"\"\n        return self.bytes(entropy).hex()\n\n    def salt(self, size: int = 16) -> str:\n        \"\"\"Generate salt chars (not cryptographically safe).\n\n        :param size: Salt size.\n        :return: Salt.\n        \"\"\"\n        char_sequence = [\n            self.random.choice(self.__chars)\n            for _ in range(size)\n        ]\n        return ''.join(char_sequence)\n\n    def mnemonic_phrase(self, length: int = 12) -> str:\n        \"\"\"Generate pseudo mnemonic phrase.\n\n        :param length: Number of words.\n        :return: Mnemonic code.\n        \"\"\"\n        words = self.__words['normal']\n        return ' '.join(self.random.choice(words) for _ in range(length))\n", "path": "mimesis/providers/cryptographic.py"}], "after_files": [{"content": "\"\"\"Business data provider.\"\"\"\n\nfrom mimesis.data import (CRYPTOCURRENCY_ISO_CODES, CRYPTOCURRENCY_SYMBOLS,\n                          CURRENCY_ISO_CODES, CURRENCY_SYMBOLS)\nfrom mimesis.providers.base import BaseDataProvider\nfrom mimesis.utils import pull\n\n__all__ = ['Business']\n\n\nclass Business(BaseDataProvider):\n    \"\"\"Class for generating data for business.\"\"\"\n\n    def __init__(self, *args, **kwargs):\n        \"\"\"Initialize attributes.\n\n        :param locale: Current locale.\n        \"\"\"\n        super().__init__(*args, **kwargs)\n        self._data = pull('business.json', self.locale)\n\n    def company(self) -> str:\n        \"\"\"Get a random company name.\n\n        :return: Company name.\n\n        :Example:\n            Gamma Systems.\n        \"\"\"\n        return self.random.choice(self._data['company']['name'])\n\n    def company_type(self, abbr: bool = False) -> str:\n        \"\"\"Get a random type of business entity.\n\n        :param abbr: Abbreviated company type.\n        :return: Types of business entity.\n\n        :Example:\n            Incorporated.\n        \"\"\"\n        return self.random.choice(\n            self._data['company']['type'].get('abbr' if abbr else 'title'),\n        )\n\n    def copyright(self) -> str:  # noqa: A002\n        \"\"\"Generate a random copyright.\n\n        :return: Copyright of company.\n\n        :Example:\n            \u00a9 Komercia, Inc.\n        \"\"\"\n        return '\u00a9 {}, {}'.format(\n            self.company(),\n            self.company_type(abbr=True),\n        )\n\n    def currency_iso_code(self) -> str:\n        \"\"\"Get code of the currency.\n\n        :return: Currency code.\n\n        :Example:\n            RUR.\n        \"\"\"\n        return self.random.choice(CURRENCY_ISO_CODES)\n\n    def cryptocurrency_iso_code(self) -> str:\n        \"\"\"Get symbol of random cryptocurrency.\n\n        :return: Symbol of cryptocurrency.\n        \"\"\"\n        return self.random.choice(CRYPTOCURRENCY_ISO_CODES)\n\n    def currency_symbol(self):\n        \"\"\"Get a currency symbol for current locale.\n\n        :return: Currency symbol.\n        \"\"\"\n        return CURRENCY_SYMBOLS[self.locale]\n\n    def cryptocurrency_symbol(self) -> str:\n        \"\"\"Get a cryptocurrency symbol.\n\n        :return: Symbol of cryptocurrency.\n\n        :Example:\n            \u0243\n        \"\"\"\n        return self.random.choice(CRYPTOCURRENCY_SYMBOLS)\n\n    def price(self, minimum: float = 10.00,\n              maximum: float = 1000.00) -> str:\n        \"\"\"Generate a random price.\n\n        :param minimum: Max value of price.\n        :param maximum: Min value of price.\n        :return: Price.\n\n        :Example:\n            599.99 $.\n        \"\"\"\n        price = self.random.uniform(minimum, maximum, precision=2)\n        return '{0} {1}'.format(price, self.currency_symbol())\n\n    def price_in_btc(self, minimum: float = 0, maximum: float = 2) -> str:\n        \"\"\"Generate random price in BTC.\n\n        :param minimum: Minimum value of price\n        :param maximum: Maximum value of price.\n        :return: Price in BTC.\n\n        :Example:\n            0.5885238 BTC\n        \"\"\"\n        return '{} BTC'.format(\n            self.random.uniform(\n                minimum,\n                maximum,\n                precision=7,\n            ),\n        )\n", "path": "mimesis/providers/business.py"}, {"content": "\"\"\"Cryptographic data provider.\"\"\"\n\nimport hashlib\nimport string\nimport uuid\nfrom typing import Optional\n\nfrom mimesis.enums import Algorithm\nfrom mimesis.providers.base import BaseDataProvider\nfrom mimesis.providers.text import Text\nfrom mimesis.typing import Bytes\n\n__all__ = ['Cryptographic']\n\n\nclass Cryptographic(BaseDataProvider):\n    \"\"\"Class that provides cryptographic data.\"\"\"\n\n    def __init__(self, *args, **kwargs) -> None:\n        \"\"\"Initialize attributes.\n\n        :param seed: Seed.\n        \"\"\"\n        super().__init__(*args, **kwargs)\n        self.__words = Text('en')._data['words']\n        self.__chars = string.ascii_letters + string.digits + string.punctuation\n\n    def uuid(self, version: Optional[int] = None) -> str:\n        \"\"\"Generate random UUID.\n\n        :param version: UUID version.\n        :return: UUID\n        \"\"\"\n        bits = self.random.getrandbits(128)\n        return str(uuid.UUID(int=bits, version=version))\n\n    def hash(self, algorithm: Optional[Algorithm] = None) -> str:  # noqa: A002\n        \"\"\"Generate random hash.\n\n        :param algorithm: Enum object ``Algorithm``.\n        :return: Hash.\n        :raises NonEnumerableError: if algorithm is not supported.\n        \"\"\"\n        key = self._validate_enum(algorithm, Algorithm)\n\n        if hasattr(hashlib, key):\n            fn = getattr(hashlib, key)\n            return fn(self.uuid().encode()).hexdigest()\n\n    def bytes(self, entropy: int = 32) -> Bytes:  # noqa: A002\n        \"\"\"Generate byte string containing *entropy* bytes.\n\n        The string has *entropy* random bytes, each byte\n        converted to two hex digits.\n\n        :param entropy: Number of bytes.\n        :return: Bytes.\n        :rtype: bytes\n        \"\"\"\n        return bytes(self.random.getrandbits(8)\n                     for _ in range(entropy))\n\n    def token(self, entropy: int = 32) -> str:\n        \"\"\"Generate hexadecimal string.\n\n        :param entropy: Number of bytes.\n        :return: Token.\n        \"\"\"\n        return self.bytes(entropy).hex()\n\n    def salt(self, size: int = 16) -> str:\n        \"\"\"Generate salt chars (not cryptographically safe).\n\n        :param size: Salt size.\n        :return: Salt.\n        \"\"\"\n        char_sequence = [\n            self.random.choice(self.__chars)\n            for _ in range(size)\n        ]\n        return ''.join(char_sequence)\n\n    def mnemonic_phrase(self, length: int = 12) -> str:\n        \"\"\"Generate pseudo mnemonic phrase.\n\n        :param length: Number of words.\n        :return: Mnemonic code.\n        \"\"\"\n        words = self.__words['normal']\n        return ' '.join(self.random.choice(words) for _ in range(length))\n", "path": "mimesis/providers/cryptographic.py"}]}