Source code for mimesis.providers.file
"""File data provider."""
import typing as t
from mimesis.data import EXTENSIONS, FILENAMES, MIME_TYPES
from mimesis.enums import FileType, MimeType
from mimesis.providers.base import BaseProvider
__all__ = ["File"]
[docs]class File(BaseProvider):
"""Class for generate data related to files."""
class Meta:
name = "file"
[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
"""
ext = self.extension(file_type)
name = self.random.choice(FILENAMES)
return f"{name}{ext}"