2
2
import json
3
3
import math
4
4
import numbers
5
+
5
6
import args_manager
6
7
import tempfile
7
8
import modules .flags
8
9
import modules .sdxl_styles
9
10
10
11
from modules .model_loader import load_file_from_url
11
- from modules .extra_utils import makedirs_with_log , get_files_from_folder
12
+ from modules .extra_utils import makedirs_with_log , get_files_from_folder , try_eval_env_var
12
13
from modules .flags import OutputFormat , Performance , MetadataScheme
13
14
14
15
@@ -200,14 +201,15 @@ def get_dir_or_set_default(key, default_value, as_array=False, make_directory=Fa
200
201
path_outputs = get_path_output ()
201
202
202
203
203
- def get_config_item_or_set_default (key , default_value , validator , disable_empty_as_none = False ):
204
+ def get_config_item_or_set_default (key , default_value , validator , disable_empty_as_none = False , expected_type = None ):
204
205
global config_dict , visited_keys
205
206
206
207
if key not in visited_keys :
207
208
visited_keys .append (key )
208
209
209
210
v = os .getenv (key )
210
211
if v is not None :
212
+ v = try_eval_env_var (v , expected_type )
211
213
print (f"Environment: { key } = { v } " )
212
214
config_dict [key ] = v
213
215
@@ -252,41 +254,49 @@ def init_temp_path(path: str | None, default_path: str) -> str:
252
254
key = 'temp_path' ,
253
255
default_value = default_temp_path ,
254
256
validator = lambda x : isinstance (x , str ),
257
+ expected_type = str
255
258
), default_temp_path )
256
259
temp_path_cleanup_on_launch = get_config_item_or_set_default (
257
260
key = 'temp_path_cleanup_on_launch' ,
258
261
default_value = True ,
259
- validator = lambda x : isinstance (x , bool )
262
+ validator = lambda x : isinstance (x , bool ),
263
+ expected_type = bool
260
264
)
261
265
default_base_model_name = default_model = get_config_item_or_set_default (
262
266
key = 'default_model' ,
263
267
default_value = 'model.safetensors' ,
264
- validator = lambda x : isinstance (x , str )
268
+ validator = lambda x : isinstance (x , str ),
269
+ expected_type = str
265
270
)
266
271
previous_default_models = get_config_item_or_set_default (
267
272
key = 'previous_default_models' ,
268
273
default_value = [],
269
- validator = lambda x : isinstance (x , list ) and all (isinstance (k , str ) for k in x )
274
+ validator = lambda x : isinstance (x , list ) and all (isinstance (k , str ) for k in x ),
275
+ expected_type = list
270
276
)
271
277
default_refiner_model_name = default_refiner = get_config_item_or_set_default (
272
278
key = 'default_refiner' ,
273
279
default_value = 'None' ,
274
- validator = lambda x : isinstance (x , str )
280
+ validator = lambda x : isinstance (x , str ),
281
+ expected_type = str
275
282
)
276
283
default_refiner_switch = get_config_item_or_set_default (
277
284
key = 'default_refiner_switch' ,
278
285
default_value = 0.8 ,
279
- validator = lambda x : isinstance (x , numbers .Number ) and 0 <= x <= 1
286
+ validator = lambda x : isinstance (x , numbers .Number ) and 0 <= x <= 1 ,
287
+ expected_type = numbers .Number
280
288
)
281
289
default_loras_min_weight = get_config_item_or_set_default (
282
290
key = 'default_loras_min_weight' ,
283
291
default_value = - 2 ,
284
- validator = lambda x : isinstance (x , numbers .Number ) and - 10 <= x <= 10
292
+ validator = lambda x : isinstance (x , numbers .Number ) and - 10 <= x <= 10 ,
293
+ expected_type = numbers .Number
285
294
)
286
295
default_loras_max_weight = get_config_item_or_set_default (
287
296
key = 'default_loras_max_weight' ,
288
297
default_value = 2 ,
289
- validator = lambda x : isinstance (x , numbers .Number ) and - 10 <= x <= 10
298
+ validator = lambda x : isinstance (x , numbers .Number ) and - 10 <= x <= 10 ,
299
+ expected_type = numbers .Number
290
300
)
291
301
default_loras = get_config_item_or_set_default (
292
302
key = 'default_loras' ,
@@ -320,38 +330,45 @@ def init_temp_path(path: str | None, default_path: str) -> str:
320
330
validator = lambda x : isinstance (x , list ) and all (
321
331
len (y ) == 3 and isinstance (y [0 ], bool ) and isinstance (y [1 ], str ) and isinstance (y [2 ], numbers .Number )
322
332
or len (y ) == 2 and isinstance (y [0 ], str ) and isinstance (y [1 ], numbers .Number )
323
- for y in x )
333
+ for y in x ),
334
+ expected_type = list
324
335
)
325
336
default_loras = [(y [0 ], y [1 ], y [2 ]) if len (y ) == 3 else (True , y [0 ], y [1 ]) for y in default_loras ]
326
337
default_max_lora_number = get_config_item_or_set_default (
327
338
key = 'default_max_lora_number' ,
328
339
default_value = len (default_loras ) if isinstance (default_loras , list ) and len (default_loras ) > 0 else 5 ,
329
- validator = lambda x : isinstance (x , int ) and x >= 1
340
+ validator = lambda x : isinstance (x , int ) and x >= 1 ,
341
+ expected_type = int
330
342
)
331
343
default_cfg_scale = get_config_item_or_set_default (
332
344
key = 'default_cfg_scale' ,
333
345
default_value = 7.0 ,
334
- validator = lambda x : isinstance (x , numbers .Number )
346
+ validator = lambda x : isinstance (x , numbers .Number ),
347
+ expected_type = numbers .Number
335
348
)
336
349
default_sample_sharpness = get_config_item_or_set_default (
337
350
key = 'default_sample_sharpness' ,
338
351
default_value = 2.0 ,
339
- validator = lambda x : isinstance (x , numbers .Number )
352
+ validator = lambda x : isinstance (x , numbers .Number ),
353
+ expected_type = numbers .Number
340
354
)
341
355
default_sampler = get_config_item_or_set_default (
342
356
key = 'default_sampler' ,
343
357
default_value = 'dpmpp_2m_sde_gpu' ,
344
- validator = lambda x : x in modules .flags .sampler_list
358
+ validator = lambda x : x in modules .flags .sampler_list ,
359
+ expected_type = str
345
360
)
346
361
default_scheduler = get_config_item_or_set_default (
347
362
key = 'default_scheduler' ,
348
363
default_value = 'karras' ,
349
- validator = lambda x : x in modules .flags .scheduler_list
364
+ validator = lambda x : x in modules .flags .scheduler_list ,
365
+ expected_type = str
350
366
)
351
367
default_vae = get_config_item_or_set_default (
352
368
key = 'default_vae' ,
353
369
default_value = modules .flags .default_vae ,
354
- validator = lambda x : isinstance (x , str )
370
+ validator = lambda x : isinstance (x , str ),
371
+ expected_type = str
355
372
)
356
373
default_styles = get_config_item_or_set_default (
357
374
key = 'default_styles' ,
@@ -360,121 +377,144 @@ def init_temp_path(path: str | None, default_path: str) -> str:
360
377
"Fooocus Enhance" ,
361
378
"Fooocus Sharp"
362
379
],
363
- validator = lambda x : isinstance (x , list ) and all (y in modules .sdxl_styles .legal_style_names for y in x )
380
+ validator = lambda x : isinstance (x , list ) and all (y in modules .sdxl_styles .legal_style_names for y in x ),
381
+ expected_type = list
364
382
)
365
383
default_prompt_negative = get_config_item_or_set_default (
366
384
key = 'default_prompt_negative' ,
367
385
default_value = '' ,
368
386
validator = lambda x : isinstance (x , str ),
369
- disable_empty_as_none = True
387
+ disable_empty_as_none = True ,
388
+ expected_type = str
370
389
)
371
390
default_prompt = get_config_item_or_set_default (
372
391
key = 'default_prompt' ,
373
392
default_value = '' ,
374
393
validator = lambda x : isinstance (x , str ),
375
- disable_empty_as_none = True
394
+ disable_empty_as_none = True ,
395
+ expected_type = str
376
396
)
377
397
default_performance = get_config_item_or_set_default (
378
398
key = 'default_performance' ,
379
399
default_value = Performance .SPEED .value ,
380
- validator = lambda x : x in Performance .list ()
400
+ validator = lambda x : x in Performance .list (),
401
+ expected_type = str
381
402
)
382
403
default_advanced_checkbox = get_config_item_or_set_default (
383
404
key = 'default_advanced_checkbox' ,
384
405
default_value = False ,
385
- validator = lambda x : isinstance (x , bool )
406
+ validator = lambda x : isinstance (x , bool ),
407
+ expected_type = bool
386
408
)
387
409
default_max_image_number = get_config_item_or_set_default (
388
410
key = 'default_max_image_number' ,
389
411
default_value = 32 ,
390
- validator = lambda x : isinstance (x , int ) and x >= 1
412
+ validator = lambda x : isinstance (x , int ) and x >= 1 ,
413
+ expected_type = int
391
414
)
392
415
default_output_format = get_config_item_or_set_default (
393
416
key = 'default_output_format' ,
394
417
default_value = 'png' ,
395
- validator = lambda x : x in OutputFormat .list ()
418
+ validator = lambda x : x in OutputFormat .list (),
419
+ expected_type = str
396
420
)
397
421
default_image_number = get_config_item_or_set_default (
398
422
key = 'default_image_number' ,
399
423
default_value = 2 ,
400
- validator = lambda x : isinstance (x , int ) and 1 <= x <= default_max_image_number
424
+ validator = lambda x : isinstance (x , int ) and 1 <= x <= default_max_image_number ,
425
+ expected_type = int
401
426
)
402
427
checkpoint_downloads = get_config_item_or_set_default (
403
428
key = 'checkpoint_downloads' ,
404
429
default_value = {},
405
- validator = lambda x : isinstance (x , dict ) and all (isinstance (k , str ) and isinstance (v , str ) for k , v in x .items ())
430
+ validator = lambda x : isinstance (x , dict ) and all (isinstance (k , str ) and isinstance (v , str ) for k , v in x .items ()),
431
+ expected_type = dict
406
432
)
407
433
lora_downloads = get_config_item_or_set_default (
408
434
key = 'lora_downloads' ,
409
435
default_value = {},
410
- validator = lambda x : isinstance (x , dict ) and all (isinstance (k , str ) and isinstance (v , str ) for k , v in x .items ())
436
+ validator = lambda x : isinstance (x , dict ) and all (isinstance (k , str ) and isinstance (v , str ) for k , v in x .items ()),
437
+ expected_type = dict
411
438
)
412
439
embeddings_downloads = get_config_item_or_set_default (
413
440
key = 'embeddings_downloads' ,
414
441
default_value = {},
415
- validator = lambda x : isinstance (x , dict ) and all (isinstance (k , str ) and isinstance (v , str ) for k , v in x .items ())
442
+ validator = lambda x : isinstance (x , dict ) and all (isinstance (k , str ) and isinstance (v , str ) for k , v in x .items ()),
443
+ expected_type = dict
416
444
)
417
445
available_aspect_ratios = get_config_item_or_set_default (
418
446
key = 'available_aspect_ratios' ,
419
447
default_value = modules .flags .sdxl_aspect_ratios ,
420
- validator = lambda x : isinstance (x , list ) and all ('*' in v for v in x ) and len (x ) > 1
448
+ validator = lambda x : isinstance (x , list ) and all ('*' in v for v in x ) and len (x ) > 1 ,
449
+ expected_type = list
421
450
)
422
451
default_aspect_ratio = get_config_item_or_set_default (
423
452
key = 'default_aspect_ratio' ,
424
453
default_value = '1152*896' if '1152*896' in available_aspect_ratios else available_aspect_ratios [0 ],
425
- validator = lambda x : x in available_aspect_ratios
454
+ validator = lambda x : x in available_aspect_ratios ,
455
+ expected_type = str
426
456
)
427
457
default_inpaint_engine_version = get_config_item_or_set_default (
428
458
key = 'default_inpaint_engine_version' ,
429
459
default_value = 'v2.6' ,
430
- validator = lambda x : x in modules .flags .inpaint_engine_versions
460
+ validator = lambda x : x in modules .flags .inpaint_engine_versions ,
461
+ expected_type = str
431
462
)
432
463
default_cfg_tsnr = get_config_item_or_set_default (
433
464
key = 'default_cfg_tsnr' ,
434
465
default_value = 7.0 ,
435
- validator = lambda x : isinstance (x , numbers .Number )
466
+ validator = lambda x : isinstance (x , numbers .Number ),
467
+ expected_type = numbers .Number
436
468
)
437
469
default_clip_skip = get_config_item_or_set_default (
438
470
key = 'default_clip_skip' ,
439
471
default_value = 2 ,
440
- validator = lambda x : isinstance (x , int ) and 1 <= x <= modules .flags .clip_skip_max
472
+ validator = lambda x : isinstance (x , int ) and 1 <= x <= modules .flags .clip_skip_max ,
473
+ expected_type = int
441
474
)
442
475
default_overwrite_step = get_config_item_or_set_default (
443
476
key = 'default_overwrite_step' ,
444
477
default_value = - 1 ,
445
- validator = lambda x : isinstance (x , int )
478
+ validator = lambda x : isinstance (x , int ),
479
+ expected_type = int
446
480
)
447
481
default_overwrite_switch = get_config_item_or_set_default (
448
482
key = 'default_overwrite_switch' ,
449
483
default_value = - 1 ,
450
- validator = lambda x : isinstance (x , int )
484
+ validator = lambda x : isinstance (x , int ),
485
+ expected_type = int
451
486
)
452
487
example_inpaint_prompts = get_config_item_or_set_default (
453
488
key = 'example_inpaint_prompts' ,
454
489
default_value = [
455
490
'highly detailed face' , 'detailed girl face' , 'detailed man face' , 'detailed hand' , 'beautiful eyes'
456
491
],
457
- validator = lambda x : isinstance (x , list ) and all (isinstance (v , str ) for v in x )
492
+ validator = lambda x : isinstance (x , list ) and all (isinstance (v , str ) for v in x ),
493
+ expected_type = list
458
494
)
459
495
default_black_out_nsfw = get_config_item_or_set_default (
460
496
key = 'default_black_out_nsfw' ,
461
497
default_value = False ,
462
- validator = lambda x : isinstance (x , bool )
498
+ validator = lambda x : isinstance (x , bool ),
499
+ expected_type = bool
463
500
)
464
501
default_save_metadata_to_images = get_config_item_or_set_default (
465
502
key = 'default_save_metadata_to_images' ,
466
503
default_value = False ,
467
- validator = lambda x : isinstance (x , bool )
504
+ validator = lambda x : isinstance (x , bool ),
505
+ expected_type = bool
468
506
)
469
507
default_metadata_scheme = get_config_item_or_set_default (
470
508
key = 'default_metadata_scheme' ,
471
509
default_value = MetadataScheme .FOOOCUS .value ,
472
- validator = lambda x : x in [y [1 ] for y in modules .flags .metadata_scheme if y [1 ] == x ]
510
+ validator = lambda x : x in [y [1 ] for y in modules .flags .metadata_scheme if y [1 ] == x ],
511
+ expected_type = str
473
512
)
474
513
metadata_created_by = get_config_item_or_set_default (
475
514
key = 'metadata_created_by' ,
476
515
default_value = '' ,
477
- validator = lambda x : isinstance (x , str )
516
+ validator = lambda x : isinstance (x , str ),
517
+ expected_type = str
478
518
)
479
519
480
520
example_inpaint_prompts = [[x ] for x in example_inpaint_prompts ]
0 commit comments