Extension for ComfyUI that loads styles from a CSV file.
This extension allows users to load styles from a CSV file (styles.csv), primarily for migration purposes from the automatic1111 Stable Diffusion web UI.
- Clone this repository into the
custom_nodesfolder of ComfyUI. Restart ComfyUI and the extension should be loaded. - OR: Use the ComfyUI-Manager to install this extension.
Important: The styles.csv file must be located in the root of ComfyUI where main.py resides.
Each style is represented as a dictionary with the keys being style_name and the values being a list containing positive_prompt and negative_prompt. The prompts are outputs of this Node.
The extension now supports loading styles from custom CSV files in addition to the default styles.csv. You can specify a custom CSV file path using the optional csv_file_path parameter:
- Relative paths: Relative to the ComfyUI root directory (e.g.,
"my_styles/portrait_styles.csv") - Absolute paths: Full file system paths (e.g.,
"/path/to/my/custom_styles.csv") - Default behavior: When no custom path is specified, it uses
styles.csvfrom the ComfyUI root directory
If a selected style is not found in the custom CSV file, the node will fall back to the default styles loaded from styles.csv.
The CSV file should have the following format:
name,prompt,negative_prompt
"Style Name","positive prompt text","negative prompt text"
"Another Style","more positive text","more negative text"
You can organize your styles in multiple CSV files for different purposes:
portraits.csv:
name,prompt,negative_prompt
"Professional Portrait","portrait photography, professional lighting, sharp focus","ugly, deformed, extra limbs"
"Vintage Portrait","vintage portrait, sepia tone, classical","modern, digital, colorful"
landscapes.csv:
name,prompt,negative_prompt
"Golden Hour","landscape photography, golden hour, wide angle","people, buildings, urban"
"Mountain Vista","mountain landscape, dramatic clouds, epic view","flat, boring, low quality"
- Clone the repository
- Install test dependencies:
pip install pytest pytest-cov
Run all tests:
pytest tests/ -vRun tests with coverage:
pytest tests/ -v --cov=. --cov-report=term-missingtests/test_styles_csv_loader.py- Main test file for the StylesCSVLoader classtests/fixtures/- Example CSV files for testing:valid_styles.csv- Properly formatted CSV with valid stylesinvalid_styles.csv- CSV with missing columns to test error handlingcomplex_styles.csv- CSV with complex content (quotes, special characters)
The project uses GitHub Actions for CI/CD. Tests are automatically run on:
- Python 3.8, 3.9, 3.10, 3.11, and 3.12
- Every push to main branch
- Every pull request
The project maintains 100% test coverage. Coverage reports are generated during CI runs.
- David Fischer
- GitHub: theUpsider
- Support me on BuyMeACoffee