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}"