Skip to content

Commit dc9e612

Browse files
committed
move static config in parameters.py to a standalone file
1 parent fcfb490 commit dc9e612

File tree

12 files changed

+119
-156
lines changed

12 files changed

+119
-156
lines changed

Diff for: fooocusapi/configs/default.py

+92
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
"""
2+
Static variables for Fooocus API
3+
"""
4+
img_generate_responses = {
5+
"200": {
6+
"description": "PNG bytes if request's 'Accept' header is 'image/png', otherwise JSON",
7+
"content": {
8+
"application/json": {
9+
"example": [{
10+
"base64": "...very long string...",
11+
"seed": "1050625087",
12+
"finish_reason": "SUCCESS",
13+
}]
14+
},
15+
"application/json async": {
16+
"example": {
17+
"job_id": 1,
18+
"job_type": "Text to Image"
19+
}
20+
},
21+
"image/png": {
22+
"example": "PNG bytes, what did you expect?"
23+
},
24+
},
25+
}
26+
}
27+
28+
default_inpaint_engine_version = "v2.6"
29+
30+
default_styles = ["Fooocus V2", "Fooocus Enhance", "Fooocus Sharp"]
31+
default_base_model_name = "juggernautXL_v8Rundiffusion.safetensors"
32+
default_refiner_model_name = "None"
33+
default_refiner_switch = 0.5
34+
default_loras = [[True, "sd_xl_offset_example-lora_1.0.safetensors", 0.1]]
35+
default_cfg_scale = 7.0
36+
default_prompt_negative = ""
37+
default_aspect_ratio = "1152*896"
38+
default_sampler = "dpmpp_2m_sde_gpu"
39+
default_scheduler = "karras"
40+
41+
available_aspect_ratios = [
42+
"704*1408",
43+
"704*1344",
44+
"768*1344",
45+
"768*1280",
46+
"832*1216",
47+
"832*1152",
48+
"896*1152",
49+
"896*1088",
50+
"960*1088",
51+
"960*1024",
52+
"1024*1024",
53+
"1024*960",
54+
"1088*960",
55+
"1088*896",
56+
"1152*896",
57+
"1152*832",
58+
"1216*832",
59+
"1280*768",
60+
"1344*768",
61+
"1344*704",
62+
"1408*704",
63+
"1472*704",
64+
"1536*640",
65+
"1600*640",
66+
"1664*576",
67+
"1728*576",
68+
]
69+
70+
uov_methods = [
71+
"Disabled",
72+
"Vary (Subtle)",
73+
"Vary (Strong)",
74+
"Upscale (1.5x)",
75+
"Upscale (2x)",
76+
"Upscale (Fast 2x)",
77+
"Upscale (Custom)",
78+
]
79+
80+
outpaint_expansions = ["Left", "Right", "Top", "Bottom"]
81+
82+
83+
def get_aspect_ratio_value(label: str) -> str:
84+
"""
85+
Get aspect ratio
86+
Args:
87+
label: str, aspect ratio
88+
89+
Returns:
90+
91+
"""
92+
return label.split(" ")[0].replace("×", "*")

Diff for: fooocusapi/models/common/base.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
)
1313
from pydantic_core import InitErrorDetails
1414

15-
from fooocusapi.parameters import default_loras
15+
from fooocusapi.configs.default import default_loras
1616

1717

1818
class PerformanceSelection(str, Enum):

Diff for: fooocusapi/models/requests_v1.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
default_loras_json
2828
)
2929

30-
from fooocusapi.parameters import (
30+
from fooocusapi.configs.default import (
3131
default_prompt_negative,
3232
default_aspect_ratio,
3333
default_base_model_name,

Diff for: fooocusapi/models/requests_v2.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class ImagePromptJson(BaseModel):
2020

2121
class ImgInpaintOrOutpaintRequestJson(CommonRequest):
2222
"""image inpaint or outpaint request"""
23-
input_image: str = Field(description="Init image for inpaint or outpaint as base64")
23+
input_image: str = Field('', description="Init image for inpaint or outpaint as base64")
2424
input_mask: str | None = Field('', description="Inpaint or outpaint mask as base64")
2525
inpaint_additional_prompt: str | None = Field('', description="Describe what you want to inpaint")
2626
outpaint_selections: List[OutpaintExpansion] = []

Diff for: fooocusapi/parameters.py

+1-132
Original file line numberDiff line numberDiff line change
@@ -2,138 +2,7 @@
22
import numpy as np
33
import copy
44

5-
from pydantic import BaseModel, Field
6-
7-
8-
img_generate_responses = {
9-
"200": {
10-
"description": "PNG bytes if request's 'Accept' header is 'image/png', otherwise JSON",
11-
"content": {
12-
"application/json": {
13-
"example": [{
14-
"base64": "...very long string...",
15-
"seed": "1050625087",
16-
"finish_reason": "SUCCESS",
17-
}]
18-
},
19-
"application/json async": {
20-
"example": {
21-
"job_id": 1,
22-
"job_type": "Text to Image"
23-
}
24-
},
25-
"image/png": {
26-
"example": "PNG bytes, what did you expect?"
27-
},
28-
},
29-
}
30-
}
31-
32-
default_inpaint_engine_version = "v2.6"
33-
34-
default_styles = ["Fooocus V2", "Fooocus Enhance", "Fooocus Sharp"]
35-
default_base_model_name = "juggernautXL_v8Rundiffusion.safetensors"
36-
default_refiner_model_name = "None"
37-
default_refiner_switch = 0.5
38-
default_loras = [["sd_xl_offset_example-lora_1.0.safetensors", 0.1]]
39-
default_cfg_scale = 7.0
40-
default_prompt_negative = ""
41-
default_aspect_ratio = "1152*896"
42-
default_sampler = "dpmpp_2m_sde_gpu"
43-
default_scheduler = "karras"
44-
45-
available_aspect_ratios = [
46-
"704*1408",
47-
"704*1344",
48-
"768*1344",
49-
"768*1280",
50-
"832*1216",
51-
"832*1152",
52-
"896*1152",
53-
"896*1088",
54-
"960*1088",
55-
"960*1024",
56-
"1024*1024",
57-
"1024*960",
58-
"1088*960",
59-
"1088*896",
60-
"1152*896",
61-
"1152*832",
62-
"1216*832",
63-
"1280*768",
64-
"1344*768",
65-
"1344*704",
66-
"1408*704",
67-
"1472*704",
68-
"1536*640",
69-
"1600*640",
70-
"1664*576",
71-
"1728*576",
72-
]
73-
74-
uov_methods = [
75-
"Disabled",
76-
"Vary (Subtle)",
77-
"Vary (Strong)",
78-
"Upscale (1.5x)",
79-
"Upscale (2x)",
80-
"Upscale (Fast 2x)",
81-
"Upscale (Custom)",
82-
]
83-
84-
outpaint_expansions = ["Left", "Right", "Top", "Bottom"]
85-
86-
87-
def get_aspect_ratio_value(label: str) -> str:
88-
"""
89-
Get aspect ratio
90-
Args:
91-
label: str, aspect ratio
92-
93-
Returns:
94-
95-
"""
96-
return label.split(" ")[0].replace("×", "*")
97-
98-
99-
class AdvancedParams(BaseModel):
100-
"""Common params object AdvancedParams"""
101-
disable_preview: bool = Field(False, description="Disable preview during generation")
102-
disable_intermediate_results: bool = Field(False, description="Disable intermediate results")
103-
disable_seed_increment: bool = Field(False, description="Disable Seed Increment")
104-
adm_scaler_positive: float = Field(1.5, description="Positive ADM Guidance Scaler", ge=0.1, le=3.0)
105-
adm_scaler_negative: float = Field(0.8, description="Negative ADM Guidance Scaler", ge=0.1, le=3.0)
106-
adm_scaler_end: float = Field(0.3, description="ADM Guidance End At Step", ge=0.0, le=1.0)
107-
adaptive_cfg: float = Field(7.0, description="CFG Mimicking from TSNR", ge=1.0, le=30.0)
108-
sampler_name: str = Field(default_sampler, description="Sampler")
109-
scheduler_name: str = Field(default_scheduler, description="Scheduler")
110-
overwrite_step: int = Field(-1, description="Forced Overwrite of Sampling Step", ge=-1, le=200)
111-
overwrite_switch: float = Field(-1, description="Forced Overwrite of Refiner Switch Step", ge=-1, le=1)
112-
overwrite_width: int = Field(-1, description="Forced Overwrite of Generating Width", ge=-1, le=2048)
113-
overwrite_height: int = Field(-1, description="Forced Overwrite of Generating Height", ge=-1, le=2048)
114-
overwrite_vary_strength: float = Field(-1, description='Forced Overwrite of Denoising Strength of "Vary"', ge=-1, le=1.0)
115-
overwrite_upscale_strength: float = Field(-1, description='Forced Overwrite of Denoising Strength of "Upscale"', ge=-1, le=1.0)
116-
mixing_image_prompt_and_vary_upscale: bool = Field(False, description="Mixing Image Prompt and Vary/Upscale")
117-
mixing_image_prompt_and_inpaint: bool = Field(False, description="Mixing Image Prompt and Inpaint")
118-
debugging_cn_preprocessor: bool = Field(False, description="Debug Preprocessors")
119-
skipping_cn_preprocessor: bool = Field(False, description="Skip Preprocessors")
120-
canny_low_threshold: int = Field(64, description="Canny Low Threshold", ge=1, le=255)
121-
canny_high_threshold: int = Field(128, description="Canny High Threshold", ge=1, le=255)
122-
refiner_swap_method: str = Field('joint', description="Refiner swap method")
123-
controlnet_softness: float = Field(0.25, description="Softness of ControlNet", ge=0.0, le=1.0)
124-
freeu_enabled: bool = Field(False, description="FreeU enabled")
125-
freeu_b1: float = Field(1.01, description="FreeU B1")
126-
freeu_b2: float = Field(1.02, description="FreeU B2")
127-
freeu_s1: float = Field(0.99, description="FreeU B3")
128-
freeu_s2: float = Field(0.95, description="FreeU B4")
129-
debugging_inpaint_preprocessor: bool = Field(False, description="Debug Inpaint Preprocessing")
130-
inpaint_disable_initial_latent: bool = Field(False, description="Disable initial latent in inpaint")
131-
inpaint_engine: str = Field('v2.6', description="Inpaint Engine")
132-
inpaint_strength: float = Field(1.0, description="Inpaint Denoising Strength", ge=0.0, le=1.0)
133-
inpaint_respective_field: float = Field(1.0, description="Inpaint Respective Field", ge=0.0, le=1.0)
134-
inpaint_mask_upload_checkbox: bool = Field(False, description="Upload Mask")
135-
invert_mask_checkbox: bool = Field(False, description="Invert Mask")
136-
inpaint_erode_or_dilate: int = Field(0, description="Mask Erode or Dilate", ge=-64, le=64)
5+
from fooocusapi.models.common.requests import AdvancedParams
1376

1387

1398
class ImageGenerationParams:

Diff for: fooocusapi/routes/generate_v1.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
)
2525
from fooocusapi.utils.call_worker import call_worker
2626
from fooocusapi.utils.img_utils import read_input_image
27-
from fooocusapi.parameters import img_generate_responses
27+
from fooocusapi.configs.default import img_generate_responses
2828
from fooocusapi.worker import process_stop
2929

3030

Diff for: fooocusapi/routes/generate_v2.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
)
1919
from fooocusapi.utils.call_worker import call_worker
2020
from fooocusapi.utils.img_utils import base64_to_stream
21-
from fooocusapi.parameters import img_generate_responses
21+
from fooocusapi.configs.default import img_generate_responses
2222

2323

2424
secure_router = APIRouter(

Diff for: fooocusapi/utils/api_utils.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,15 @@
4040
ImageGenerationResult,
4141
GenerationFinishReason
4242
)
43-
from fooocusapi.parameters import (
44-
ImageGenerationParams,
43+
from fooocusapi.configs.default import (
4544
default_inpaint_engine_version,
4645
default_sampler,
4746
default_scheduler,
4847
default_base_model_name,
4948
default_refiner_model_name
5049
)
5150

51+
from fooocusapi.parameters import ImageGenerationParams
5252
from fooocusapi.task_queue import QueueTask
5353

5454

Diff for: fooocusapi/utils/file_utils.py

-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import datetime
1313
from io import BytesIO
1414
import os
15-
import uuid
1615
import json
1716
from pathlib import Path
1817
import numpy as np

Diff for: main.py

+12-12
Original file line numberDiff line numberDiff line change
@@ -98,22 +98,22 @@ def prepare_environments(args) -> bool:
9898
shutil.copytree(origin_preset_folder, preset_folder)
9999

100100
from modules import config
101-
from fooocusapi import parameters
101+
from fooocusapi.configs import default
102102
from fooocusapi.utils.model_loader import download_models
103103

104-
parameters.default_inpaint_engine_version = config.default_inpaint_engine_version
105-
parameters.default_styles = config.default_styles
106-
parameters.default_base_model_name = config.default_base_model_name
107-
parameters.default_refiner_model_name = config.default_refiner_model_name
108-
parameters.default_refiner_switch = config.default_refiner_switch
109-
parameters.default_loras = config.default_loras
110-
parameters.default_cfg_scale = config.default_cfg_scale
111-
parameters.default_prompt_negative = config.default_prompt_negative
112-
parameters.default_aspect_ratio = parameters.get_aspect_ratio_value(
104+
default.default_inpaint_engine_version = config.default_inpaint_engine_version
105+
default.default_styles = config.default_styles
106+
default.default_base_model_name = config.default_base_model_name
107+
default.default_refiner_model_name = config.default_refiner_model_name
108+
default.default_refiner_switch = config.default_refiner_switch
109+
default.default_loras = config.default_loras
110+
default.default_cfg_scale = config.default_cfg_scale
111+
default.default_prompt_negative = config.default_prompt_negative
112+
default.default_aspect_ratio = default.get_aspect_ratio_value(
113113
config.default_aspect_ratio
114114
)
115-
parameters.available_aspect_ratios = [
116-
parameters.get_aspect_ratio_value(a) for a in config.available_aspect_ratios
115+
default.available_aspect_ratios = [
116+
default.get_aspect_ratio_value(a) for a in config.available_aspect_ratios
117117
]
118118

119119
download_models()

Diff for: predict.py

+6-3
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@
1313
from fooocusapi.utils.lora_manager import LoraManager
1414
from fooocusapi.utils.file_utils import output_dir
1515
from fooocusapi.models.common.task import GenerationFinishReason
16-
from fooocusapi.parameters import (
17-
ImageGenerationParams,
16+
from fooocusapi.configs.default import (
1817
available_aspect_ratios,
1918
uov_methods,
2019
outpaint_expansions,
@@ -27,6 +26,7 @@
2726
default_prompt_negative
2827
)
2928

29+
from fooocusapi.parameters import ImageGenerationParams
3030
from fooocusapi.task_queue import TaskType
3131

3232

@@ -78,7 +78,7 @@ def predict(
7878
description="Use default LoRAs"),
7979
loras_custom_urls: str = Input(
8080
default="",
81-
description="Custom LoRAs URLs in the format 'url,weight' provide multiple seperated by ; (example 'url1,0.3;url2,0.1')"),
81+
description="Custom LoRAs URLs in the format 'url,weight' provide multiple separated by ; (example 'url1,0.3;url2,0.1')"),
8282
sharpness: float = Input(
8383
default=2.0,
8484
ge=0.0, le=30.0),
@@ -282,7 +282,10 @@ def predict(
282282
outpaint_distance_top=outpaint_distance_top,
283283
outpaint_distance_right=outpaint_distance_right,
284284
outpaint_distance_bottom=outpaint_distance_bottom,
285+
save_meta=True,
286+
meta_scheme='fooocus',
285287
save_extension='png',
288+
save_name='',
286289
require_base64=False,
287290
)
288291

Diff for: requirements.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ pygit2==1.12.2
1414
opencv-contrib-python==4.8.0.74
1515
onnxruntime==1.16.3
1616
timm==0.9.2
17-
fastapi==0.103.1
17+
fastapi>=0.103.1
1818
pydantic==2.4.2
1919
pydantic_core==2.10.1
2020
python-multipart==0.0.6

0 commit comments

Comments
 (0)