Source code for faker_file.providers.svg_file

from typing import Any, Callable, Dict, Optional, Type, Union, overload

from faker import Faker
from faker.generator import Generator
from faker.providers import BaseProvider
from faker.providers.python import Provider

from ..base import DEFAULT_FORMAT_FUNC, BytesValue, StringValue
from ..constants import DEFAULT_IMAGE_MAX_NB_CHARS
from ..storages.base import BaseStorage
from .base.image_generator import BaseImageGenerator
from .mixins.image_mixin import DEFAULT_IMAGE_GENERATOR, ImageMixin

__author__ = "Artur Barseghyan <artur.barseghyan@gmail.com>"
__copyright__ = "2022-2023 Artur Barseghyan"
__license__ = "MIT"
__all__ = ("SvgFileProvider",)


[docs]class SvgFileProvider(BaseProvider, ImageMixin): """SVG file provider. Usage example: .. code-block:: python from faker import Faker from faker_file.providers.svg_file import SvgFileProvider FAKER = Faker() FAKER.add_provider(SvgFileProvider) file = FAKER.svg_file() Usage example with options: .. code-block:: python file = FAKER.svg_file( prefix="zzz", max_nb_chars=100_000, wrap_chars_after=80, ) Usage example with `FileSystemStorage` storage (for `Django`): .. code-block:: python from django.conf import settings from faker_file.storages.filesystem import FileSystemStorage file = FAKER.svg_file( storage=FileSystemStorage( root_path=settings.MEDIA_ROOT, rel_path="tmp", ), prefix="zzz", max_nb_chars=100_000, wrap_chars_after=80, ) """ extension: str = "svg" image_format: str = "svg" @overload def svg_file( self: "SvgFileProvider", storage: Optional[BaseStorage] = None, basename: Optional[str] = None, prefix: Optional[str] = None, max_nb_chars: int = DEFAULT_IMAGE_MAX_NB_CHARS, wrap_chars_after: Optional[int] = None, content: Optional[str] = None, image_generator_cls: Optional[Union[str, Type[BaseImageGenerator]]] = ( DEFAULT_IMAGE_GENERATOR ), image_generator_kwargs: Optional[Dict[str, Any]] = None, format_func: Callable[ [Union[Faker, Generator, Provider], str], str ] = DEFAULT_FORMAT_FUNC, raw: bool = True, **kwargs, ) -> BytesValue: ... @overload def svg_file( self: "SvgFileProvider", storage: Optional[BaseStorage] = None, basename: Optional[str] = None, prefix: Optional[str] = None, max_nb_chars: int = DEFAULT_IMAGE_MAX_NB_CHARS, wrap_chars_after: Optional[int] = None, content: Optional[str] = None, image_generator_cls: Optional[Union[str, Type[BaseImageGenerator]]] = ( DEFAULT_IMAGE_GENERATOR ), image_generator_kwargs: Optional[Dict[str, Any]] = None, format_func: Callable[ [Union[Faker, Generator, Provider], str], str ] = DEFAULT_FORMAT_FUNC, **kwargs, ) -> StringValue: ...
[docs] def svg_file( self: "SvgFileProvider", storage: Optional[BaseStorage] = None, basename: Optional[str] = None, prefix: Optional[str] = None, max_nb_chars: int = DEFAULT_IMAGE_MAX_NB_CHARS, wrap_chars_after: Optional[int] = None, content: Optional[str] = None, image_generator_cls: Optional[Union[str, Type[BaseImageGenerator]]] = ( DEFAULT_IMAGE_GENERATOR ), image_generator_kwargs: Optional[Dict[str, Any]] = None, format_func: Callable[ [Union[Faker, Generator, Provider], str], str ] = DEFAULT_FORMAT_FUNC, raw: bool = False, **kwargs, ) -> Union[BytesValue, StringValue]: """Generate an SVG file with random text. :param storage: Storage. Defaults to `FileSystemStorage`. :param basename: File basename (without extension). :param prefix: File name prefix. :param max_nb_chars: Max number of chars for the content. :param wrap_chars_after: If given, the output string would be separated by line breaks after the given position. :param content: File content. Might contain dynamic elements, which are then replaced by correspondent fixtures. :param image_generator_cls: Image generator class. :param image_generator_kwargs: Image generator kwargs. :param format_func: Callable responsible for formatting template strings. :param raw: If set to True, return `BytesValue` (binary content of the file). Otherwise, return `StringValue` (path to the saved file). :return: Relative path (from root directory) of the generated file or raw content of the file. """ return self._image_file( storage=storage, basename=basename, prefix=prefix, max_nb_chars=max_nb_chars, wrap_chars_after=wrap_chars_after, content=content, image_generator_cls=image_generator_cls, image_generator_kwargs=image_generator_kwargs, format_func=format_func, raw=raw, **kwargs, )
# class GraphicSvgFileProvider(BaseProvider, GraphicImageMixin): # """Graphic SVG file provider. # # Usage example: # # from faker import Faker # from faker_file.providers.svg_file import GraphicSvgFileProvider # # FAKER = Faker() # FAKER.add_provider(GraphicSvgFileProvider) # # file = FAKER.graphic_svg_file() # # Usage example with options: # # file = FAKER.graphic_svg_file( # prefix="zzz", # size=(800, 800), # ) # # Usage example with `FileSystemStorage` storage (for `Django`): # # from django.conf import settings # from faker_file.storages.filesystem import FileSystemStorage # # file = FAKER.graphic_svg_file( # storage=FileSystemStorage( # root_path=settings.MEDIA_ROOT, # rel_path="tmp", # ), # basename="yyy", # size=(1024, 1024), # ) # """ # # extension: str = "svg" # image_format: str = "svg" # # @overload # def graphic_svg_file( # self: "GraphicSvgFileProvider", # storage: Optional[BaseStorage] = None, # basename: Optional[str] = None, # prefix: Optional[str] = None, # size: Tuple[int, int] = (256, 256), # hue: Union[int, Sequence[int], str, None] = None, # luminosity: Optional[str] = None, # raw: bool = True, # **kwargs, # ) -> BytesValue: # ... # # @overload # def graphic_svg_file( # self: "GraphicSvgFileProvider", # storage: Optional[BaseStorage] = None, # basename: Optional[str] = None, # prefix: Optional[str] = None, # size: Tuple[int, int] = (256, 256), # hue: Union[int, Sequence[int], str, None] = None, # luminosity: Optional[str] = None, # **kwargs, # ) -> StringValue: # ... # # def graphic_svg_file( # self: "GraphicSvgFileProvider", # storage: Optional[BaseStorage] = None, # basename: Optional[str] = None, # prefix: Optional[str] = None, # size: Tuple[int, int] = (256, 256), # hue: Union[int, Sequence[int], str, None] = None, # luminosity: Optional[str] = None, # raw: bool = False, # **kwargs, # ) -> Union[BytesValue, StringValue]: # """Generate a graphic ICO file with random lines. # # :param storage: Storage. Defaults to `FileSystemStorage`. # :param basename: File basename (without extension). # :param prefix: File name prefix. # :param size: Image size in pixels. # :param hue: Read more about # ://faker.readthedocs.io/en/dev/providers/faker.providers.color.html # :param luminosity: If given, the output string would be separated # by line breaks after the given position. # :param raw: If set to True, return `BytesValue` (binary content of # the file). Otherwise, return `StringValue` (path to the saved # file). # :return: Relative path (from root directory) of the generated file # or raw content of the file. # """ # return self._image_file( # image_format=self.image_format, # storage=storage, # basename=basename, # prefix=prefix, # size=size, # hue=hue, # luminosity=luminosity, # raw=raw, # **kwargs, # )