Source code for mimesis.providers.file
"""File data provider."""
import re
import typing as t
from mimesis.data import EXTENSIONS, MIME_TYPES
from mimesis.enums import FileType, MimeType
from mimesis.locales import Locale
from mimesis.providers.base import BaseProvider
from mimesis.providers.text import Text
__all__ = ["File"]
[docs]class File(BaseProvider):
"""Class for generate data related to files."""
[docs] def __init__(self, *args: t.Any, **kwargs: t.Any) -> None:
"""Initialize attributes.
:param args: Arguments.
:param kwargs: Keyword arguments.
"""
super().__init__(*args, **kwargs)
self._text = Text(Locale.EN, seed=self.seed)
[docs] def extension(self, file_type: t.Optional[FileType] = None) -> str:
"""Get a random file extension from list.
:param file_type: Enum object FileType.
:return: Extension of the file.
:Example:
.py
"""
key = self.validate_enum(item=file_type, enum=FileType)
extensions = EXTENSIONS[key]
return self.random.choice(extensions)
[docs] def mime_type(self, type_: t.Optional[MimeType] = None) -> str:
"""Get a random mime type from list.
:param type_: Enum object MimeType.
:return: Mime type.
"""
key = self.validate_enum(item=type_, enum=MimeType)
types = MIME_TYPES[key]
return self.random.choice(types)
[docs] def size(self, minimum: int = 1, maximum: int = 100) -> str:
"""Get size of file.
:param minimum: Maximum value.
:param maximum: Minimum value.
:return: Size of file.
:Example:
56 kB
"""
num = self.random.randint(minimum, maximum)
unit = self.random.choice(["bytes", "kB", "MB", "GB", "TB"])
return f"{num} {unit}"
[docs] def file_name(self, file_type: t.Optional[FileType] = None) -> str:
"""Get a random file name with some extension.
:param file_type: Enum object FileType
:return: File name.
:Example:
legislative.txt
"""
word = self._text.word().strip()
replacer = self.random.choice(["_", "-"])
name = re.sub(r"\s+", replacer, word)
ext = self.extension(file_type)
return f"{name}{ext}"