Перейти к содержанию

Системные данные

В этом разделе описаны встроенные паттерны для генерации системных данных.

SystemPatterns

Системные параметры (Цвета, HEX).

hex_color = r"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$"

FilePatterns

Файлы (Расширения, Пути: Win, Unix).

extension = r"^\.(jpg|png|pdf|docx|txt|json|csv)$"
file_path_unix = r"^(/[a-z0-9_-]+){1,5}\.[a-z]{2,4}$"
file_path_win = r"^[A-Z]:\\([A-Za-z0-9_-]+\\){1,5}[A-Za-z0-9_-]+\.[a-z]{2,4}$"

Пример использования

from fucktar.generator import BasePattern
from fucktar.config import PatternConfig
from fucktar.default_patterns.system import SystemPatterns, FilePatterns

class SystemDataPatterns(BasePattern[SystemData]):
    hex_color = SystemPatterns.hex_color
    extension = FilePatterns.extension
    file_path_unix = FilePatterns.file_path_unix
    file_path_win = FilePatterns.file_path_win

    pattern_config = PatternConfig(
        scope="system",
        unique_fields=["hex_color", "file_path_unix"]
    )

Особенности паттернов

HEX цвет (hex_color)

Паттерн генерирует цвета в формате HEX: - 6-значный формат: #RRGGBB (например, #FF0000 для красного) - 3-значный формат: #RGB (например, #F00 для красного)

Примеры корректных значений: - #FF0000 - #00FF00 - #0000FF - #F00 - #0F0 - #00F

Расширение файла (extension)

Паттерн генерирует расширения файлов из предопределенного списка: - .jpg - .png - .pdf - .docx - .txt - .json - .csv

Путь к файлу в Unix (file_path_unix)

Паттерн генерирует пути к файлам в формате Unix: - Начинается с корневого каталога / - Содержит от 1 до 5 уровней вложенности - Имя файла состоит из букв, цифр, дефисов и подчеркиваний - Расширение файла длиной от 2 до 4 символов

Примеры корректных значений: - /home/user/document.pdf - /var/log/app/error.log - /tmp/file.txt

Путь к файлу в Windows (file_path_win)

Паттерн генерирует пути к файлам в формате Windows: - Начинается с буквы диска и двоеточия (например, C:) - Содержит от 1 до 5 уровней вложенности - Имя файла состоит из букв, цифр, дефисов и подчеркиваний - Расширение файла длиной от 2 до 4 символов

Примеры корректных значений: - C:\Users\John\Documents\file.docx - D:\Projects\App\data\config.json - E:\Temp\test.txt

Использование в моделях данных

При использовании этих паттернов в моделях данных можно создавать вспомогательные свойства для работы с данными:

from dataclasses import dataclass
from pathlib import Path
import os

@dataclass
class SystemData:
    hex_color: str
    extension: str
    file_path_unix: str
    file_path_win: str

    @property
    def rgb_color(self) -> tuple[int, int, int]:
        """Преобразует HEX цвет в RGB кортеж"""
        hex_val = self.hex_color.lstrip('#')
        if len(hex_val) == 3:
            hex_val = ''.join([c*2 for c in hex_val])
        return tuple(int(hex_val[i:i+2], 16) for i in (0, 2, 4))

    @property
    def unix_path_obj(self) -> Path:
        """Преобразует строку пути в объект Path"""
        return Path(self.file_path_unix)

    @property
    def win_path_obj(self) -> Path:
        """Преобразует строку пути в объект Path"""
        return Path(self.file_path_win.replace('\\', os.sep))

Это позволяет работать с системными данными как с объектами Python, сохраняя при этом возможность генерации через строковые паттерны.

Рекомендации

  1. Используйте эти паттерны для генерации системных данных
  2. При необходимости расширьте список поддерживаемых расширений файлов
  3. Для работы с путями используйте свойства для преобразования строк в объекты Path
  4. При необходимости добавьте дополнительные паттерны для других системных данных (например, MIME-типы, кодировки и т.д.)