Системные данные¶
В этом разделе описаны встроенные паттерны для генерации системных данных.
SystemPatterns¶
Системные параметры (Цвета, HEX).
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, сохраняя при этом возможность генерации через строковые паттерны.
Рекомендации¶
- Используйте эти паттерны для генерации системных данных
- При необходимости расширьте список поддерживаемых расширений файлов
- Для работы с путями используйте свойства для преобразования строк в объекты Path
- При необходимости добавьте дополнительные паттерны для других системных данных (например, MIME-типы, кодировки и т.д.)