Source code for mimesis.providers.file

"""File data provider."""

from mimesis.datasets 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: FileType | None = None) -> str: """Generates a random file extension. :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_: MimeType | None = None) -> str: """Generates a random mime type. :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: """Generates a random file size as string. :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: FileType | None = None) -> str: """Generates a random file name with an 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}"